Repository: Nozbe/WatermelonDB Branch: master Commit: 5c463222ecd7 Files: 1087 Total size: 5.6 MB Directory structure: gitextract_rzrk799j/ ├── .eslintignore ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .github/ │ ├── stale.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .imgbotconfig ├── CHANGELOG-Unreleased.md ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Gemfile ├── LICENSE ├── README.md ├── SECURITY.md ├── WatermelonDB.podspec ├── babel.config.js ├── docs-website/ │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── blog/ │ │ ├── 2021-08-01-mdx-blog-post.mdx │ │ └── authors.yml │ ├── docs/ │ │ └── docs/ │ │ ├── Advanced/ │ │ │ ├── AdvancedFields.md │ │ │ ├── CreateUpdateTracking.md │ │ │ ├── Flow.md │ │ │ ├── LocalStorage.md │ │ │ ├── Logging.md │ │ │ ├── Migrations.md │ │ │ ├── Performance.md │ │ │ ├── ProTips.md │ │ │ └── SharingDatabaseAcrossTargets.md │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── CRUD.md │ │ ├── Components.md │ │ ├── Implementation/ │ │ │ ├── Architecture.md │ │ │ ├── DatabaseAdapters.md │ │ │ ├── Publishing.md │ │ │ └── SyncImpl.md │ │ ├── Installation.mdx │ │ ├── Model.md │ │ ├── Query.md │ │ ├── README.md │ │ ├── Relation.md │ │ ├── Roadmap.md │ │ ├── Schema.md │ │ ├── Setup.md │ │ ├── Sync/ │ │ │ ├── Backend.md │ │ │ ├── Contribute.md │ │ │ ├── FAQ.md │ │ │ ├── Frontend.md │ │ │ ├── Intro.md │ │ │ ├── Limitations.md │ │ │ └── Troubleshoot.md │ │ └── Writers.md │ ├── docusaurus.config.js │ ├── package.json │ ├── sidebars.js │ ├── src/ │ │ ├── components/ │ │ │ └── HomepageFeatures/ │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ ├── css/ │ │ │ └── custom.css │ │ └── pages/ │ │ ├── index.js │ │ └── index.module.css │ └── static/ │ ├── .nojekyll │ └── CNAME ├── examples/ │ └── typescript/ │ ├── AppSchema.ts │ ├── __typetests__/ │ │ ├── README.md │ │ ├── index.ts │ │ ├── query.ts │ │ └── withObservables.tsx │ ├── package.json │ ├── ts-example.ts │ └── tsconfig.json ├── flow-typed/ │ ├── custom/ │ │ ├── lokijs.js │ │ └── react-native.js │ └── npm/ │ └── rxjs_v6.x.js ├── jest.config.js ├── metro.config.js ├── native/ │ ├── .clang-format │ ├── .gitignore │ ├── android/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── nozbe/ │ │ └── watermelondb/ │ │ ├── Connection.java │ │ ├── DatabaseUtils.java │ │ ├── MigrationNeededError.java │ │ ├── Queries.java │ │ ├── SchemaNeededError.java │ │ ├── WMDatabase.java │ │ ├── WMDatabaseBridge.java │ │ ├── WMDatabaseDriver.java │ │ ├── WatermelonDBPackage.java │ │ └── utils/ │ │ ├── MigrationSet.java │ │ ├── Pair.java │ │ └── Schema.java │ ├── android-jsi/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── cpp/ │ │ │ ├── CMakeLists.txt │ │ │ ├── DatabasePlatformAndroid.cpp │ │ │ ├── DatabasePlatformAndroid.h │ │ │ └── JSIInstaller.cpp │ │ └── java/ │ │ └── com/ │ │ └── nozbe/ │ │ └── watermelondb/ │ │ ├── WatermelonDBJSIModule.java │ │ └── jsi/ │ │ ├── JSIInstaller.java │ │ ├── WatermelonDBJSIPackage.java │ │ └── WatermelonJSI.java │ ├── androidTest/ │ │ ├── .gitignore │ │ ├── app/ │ │ │ ├── BUCK │ │ │ ├── DemoKeystore.keystore │ │ │ ├── build.gradle │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ ├── androidTest/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── nozbe/ │ │ │ │ └── watermelonTest/ │ │ │ │ └── BridgeTest.kt │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── nozbe/ │ │ │ │ └── watermelonTest/ │ │ │ │ ├── BridgeTestReporter.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── MainApplication.kt │ │ │ │ └── NativeModulesPackage.kt │ │ │ └── res/ │ │ │ └── values/ │ │ │ └── strings.xml │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── keystores/ │ │ │ ├── BUCK │ │ │ └── debug.keystore.properties │ │ └── settings.gradle │ ├── ios/ │ │ └── WatermelonDB/ │ │ ├── DatabasePlatformIOS.mm │ │ ├── FMDB/ │ │ │ ├── LICENSE.txt │ │ │ ├── README.markdown │ │ │ └── src/ │ │ │ └── fmdb/ │ │ │ ├── FMDB.h │ │ │ ├── FMDatabase.h │ │ │ ├── FMDatabase.m │ │ │ ├── FMDatabaseAdditions.h │ │ │ ├── FMDatabaseAdditions.m │ │ │ ├── FMDatabasePool.h │ │ │ ├── FMDatabasePool.m │ │ │ ├── FMDatabaseQueue.h │ │ │ ├── FMDatabaseQueue.m │ │ │ ├── FMResultSet.h │ │ │ └── FMResultSet.m │ │ ├── JSIInstaller.h │ │ ├── JSIInstaller.mm │ │ ├── WatermelonDB.h │ │ └── objc/ │ │ ├── WMDatabase.h │ │ ├── WMDatabase.m │ │ ├── WMDatabaseBridge.h │ │ ├── WMDatabaseBridge.m │ │ ├── WMDatabaseDriver.h │ │ └── WMDatabaseDriver.m │ ├── iosTest/ │ │ ├── .xcode.env │ │ ├── Podfile │ │ ├── Pods/ │ │ │ ├── DoubleConversion/ │ │ │ │ ├── LICENSE │ │ │ │ ├── README │ │ │ │ └── double-conversion/ │ │ │ │ ├── bignum-dtoa.cc │ │ │ │ ├── bignum-dtoa.h │ │ │ │ ├── bignum.cc │ │ │ │ ├── bignum.h │ │ │ │ ├── cached-powers.cc │ │ │ │ ├── cached-powers.h │ │ │ │ ├── diy-fp.cc │ │ │ │ ├── diy-fp.h │ │ │ │ ├── double-conversion.cc │ │ │ │ ├── double-conversion.h │ │ │ │ ├── fast-dtoa.cc │ │ │ │ ├── fast-dtoa.h │ │ │ │ ├── fixed-dtoa.cc │ │ │ │ ├── fixed-dtoa.h │ │ │ │ ├── ieee.h │ │ │ │ ├── strtod.cc │ │ │ │ ├── strtod.h │ │ │ │ └── utils.h │ │ │ ├── Local Podspecs/ │ │ │ │ ├── DoubleConversion.podspec.json │ │ │ │ ├── FBLazyVector.podspec.json │ │ │ │ ├── RCT-Folly.podspec.json │ │ │ │ ├── RCTDeprecation.podspec.json │ │ │ │ ├── RCTRequired.podspec.json │ │ │ │ ├── RCTTypeSafety.podspec.json │ │ │ │ ├── React-Codegen.podspec.json │ │ │ │ ├── React-Core.podspec.json │ │ │ │ ├── React-CoreModules.podspec.json │ │ │ │ ├── React-Fabric.podspec.json │ │ │ │ ├── React-FabricImage.podspec.json │ │ │ │ ├── React-ImageManager.podspec.json │ │ │ │ ├── React-Mapbuffer.podspec.json │ │ │ │ ├── React-NativeModulesApple.podspec.json │ │ │ │ ├── React-RCTActionSheet.podspec.json │ │ │ │ ├── React-RCTAnimation.podspec.json │ │ │ │ ├── React-RCTAppDelegate.podspec.json │ │ │ │ ├── React-RCTBlob.podspec.json │ │ │ │ ├── React-RCTFabric.podspec.json │ │ │ │ ├── React-RCTImage.podspec.json │ │ │ │ ├── React-RCTLinking.podspec.json │ │ │ │ ├── React-RCTNetwork.podspec.json │ │ │ │ ├── React-RCTSettings.podspec.json │ │ │ │ ├── React-RCTText.podspec.json │ │ │ │ ├── React-RCTVibration.podspec.json │ │ │ │ ├── React-RuntimeApple.podspec.json │ │ │ │ ├── React-RuntimeCore.podspec.json │ │ │ │ ├── React-RuntimeHermes.podspec.json │ │ │ │ ├── React-callinvoker.podspec.json │ │ │ │ ├── React-cxxreact.podspec.json │ │ │ │ ├── React-debug.podspec.json │ │ │ │ ├── React-featureflags.podspec.json │ │ │ │ ├── React-graphics.podspec.json │ │ │ │ ├── React-hermes.podspec.json │ │ │ │ ├── React-jserrorhandler.podspec.json │ │ │ │ ├── React-jsi.podspec.json │ │ │ │ ├── React-jsiexecutor.podspec.json │ │ │ │ ├── React-jsinspector.podspec.json │ │ │ │ ├── React-jsitracing.podspec.json │ │ │ │ ├── React-logger.podspec.json │ │ │ │ ├── React-nativeconfig.podspec.json │ │ │ │ ├── React-perflogger.podspec.json │ │ │ │ ├── React-rendererdebug.podspec.json │ │ │ │ ├── React-rncore.podspec.json │ │ │ │ ├── React-runtimeexecutor.podspec.json │ │ │ │ ├── React-runtimescheduler.podspec.json │ │ │ │ ├── React-utils.podspec.json │ │ │ │ ├── React.podspec.json │ │ │ │ ├── ReactCommon.podspec.json │ │ │ │ ├── WatermelonDB.podspec.json │ │ │ │ ├── Yoga.podspec.json │ │ │ │ ├── boost.podspec.json │ │ │ │ ├── fmt.podspec.json │ │ │ │ ├── glog.podspec.json │ │ │ │ ├── hermes-engine.podspec.json │ │ │ │ └── simdjson.podspec.json │ │ │ ├── Pods.xcodeproj/ │ │ │ │ └── project.pbxproj │ │ │ ├── SocketRocket/ │ │ │ │ ├── LICENSE │ │ │ │ ├── LICENSE-examples │ │ │ │ ├── README.md │ │ │ │ └── SocketRocket/ │ │ │ │ ├── Internal/ │ │ │ │ │ ├── Delegate/ │ │ │ │ │ │ ├── SRDelegateController.h │ │ │ │ │ │ └── SRDelegateController.m │ │ │ │ │ ├── IOConsumer/ │ │ │ │ │ │ ├── SRIOConsumer.h │ │ │ │ │ │ ├── SRIOConsumer.m │ │ │ │ │ │ ├── SRIOConsumerPool.h │ │ │ │ │ │ └── SRIOConsumerPool.m │ │ │ │ │ ├── NSRunLoop+SRWebSocketPrivate.h │ │ │ │ │ ├── NSURLRequest+SRWebSocketPrivate.h │ │ │ │ │ ├── Proxy/ │ │ │ │ │ │ ├── SRProxyConnect.h │ │ │ │ │ │ └── SRProxyConnect.m │ │ │ │ │ ├── RunLoop/ │ │ │ │ │ │ ├── SRRunLoopThread.h │ │ │ │ │ │ └── SRRunLoopThread.m │ │ │ │ │ ├── SRConstants.h │ │ │ │ │ ├── SRConstants.m │ │ │ │ │ ├── Security/ │ │ │ │ │ │ ├── SRPinningSecurityPolicy.h │ │ │ │ │ │ └── SRPinningSecurityPolicy.m │ │ │ │ │ └── Utilities/ │ │ │ │ │ ├── SRError.h │ │ │ │ │ ├── SRError.m │ │ │ │ │ ├── SRHTTPConnectMessage.h │ │ │ │ │ ├── SRHTTPConnectMessage.m │ │ │ │ │ ├── SRHash.h │ │ │ │ │ ├── SRHash.m │ │ │ │ │ ├── SRLog.h │ │ │ │ │ ├── SRLog.m │ │ │ │ │ ├── SRMutex.h │ │ │ │ │ ├── SRMutex.m │ │ │ │ │ ├── SRRandom.h │ │ │ │ │ ├── SRRandom.m │ │ │ │ │ ├── SRSIMDHelpers.h │ │ │ │ │ ├── SRSIMDHelpers.m │ │ │ │ │ ├── SRURLUtilities.h │ │ │ │ │ └── SRURLUtilities.m │ │ │ │ ├── NSRunLoop+SRWebSocket.h │ │ │ │ ├── NSRunLoop+SRWebSocket.m │ │ │ │ ├── NSURLRequest+SRWebSocket.h │ │ │ │ ├── NSURLRequest+SRWebSocket.m │ │ │ │ ├── SRSecurityPolicy.h │ │ │ │ ├── SRSecurityPolicy.m │ │ │ │ ├── SRWebSocket.h │ │ │ │ ├── SRWebSocket.m │ │ │ │ └── SocketRocket.h │ │ │ ├── Target Support Files/ │ │ │ │ ├── DoubleConversion/ │ │ │ │ │ ├── DoubleConversion-dummy.m │ │ │ │ │ ├── DoubleConversion-prefix.pch │ │ │ │ │ ├── DoubleConversion-umbrella.h │ │ │ │ │ ├── DoubleConversion.debug.xcconfig │ │ │ │ │ ├── DoubleConversion.modulemap │ │ │ │ │ └── DoubleConversion.release.xcconfig │ │ │ │ ├── FBLazyVector/ │ │ │ │ │ ├── FBLazyVector.debug.xcconfig │ │ │ │ │ └── FBLazyVector.release.xcconfig │ │ │ │ ├── Pods-WatermelonTester/ │ │ │ │ │ ├── Pods-WatermelonTester-acknowledgements.markdown │ │ │ │ │ ├── Pods-WatermelonTester-acknowledgements.plist │ │ │ │ │ ├── Pods-WatermelonTester-dummy.m │ │ │ │ │ ├── Pods-WatermelonTester-frameworks-Debug-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-frameworks-Debug-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-frameworks-Release-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-frameworks-Release-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-frameworks.sh │ │ │ │ │ ├── Pods-WatermelonTester-resources-Debug-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-resources-Debug-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-resources-Release-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-resources-Release-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-resources.sh │ │ │ │ │ ├── Pods-WatermelonTester.debug.xcconfig │ │ │ │ │ └── Pods-WatermelonTester.release.xcconfig │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests/ │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.markdown │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.plist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-dummy.m │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-frameworks-Debug-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-frameworks-Debug-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-frameworks-Release-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-frameworks-Release-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-resources-Debug-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-resources-Debug-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-resources-Release-input-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-resources-Release-output-files.xcfilelist │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests-resources.sh │ │ │ │ │ ├── Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig │ │ │ │ │ └── Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig │ │ │ │ ├── RCT-Folly/ │ │ │ │ │ ├── RCT-Folly-dummy.m │ │ │ │ │ ├── RCT-Folly-prefix.pch │ │ │ │ │ ├── RCT-Folly-umbrella.h │ │ │ │ │ ├── RCT-Folly.debug.xcconfig │ │ │ │ │ ├── RCT-Folly.modulemap │ │ │ │ │ └── RCT-Folly.release.xcconfig │ │ │ │ ├── RCTDeprecation/ │ │ │ │ │ ├── RCTDeprecation-dummy.m │ │ │ │ │ ├── RCTDeprecation-prefix.pch │ │ │ │ │ ├── RCTDeprecation-umbrella.h │ │ │ │ │ ├── RCTDeprecation.debug.xcconfig │ │ │ │ │ ├── RCTDeprecation.modulemap │ │ │ │ │ └── RCTDeprecation.release.xcconfig │ │ │ │ ├── RCTRequired/ │ │ │ │ │ ├── RCTRequired.debug.xcconfig │ │ │ │ │ └── RCTRequired.release.xcconfig │ │ │ │ ├── RCTTypeSafety/ │ │ │ │ │ ├── RCTTypeSafety-dummy.m │ │ │ │ │ ├── RCTTypeSafety-prefix.pch │ │ │ │ │ ├── RCTTypeSafety-umbrella.h │ │ │ │ │ ├── RCTTypeSafety.debug.xcconfig │ │ │ │ │ ├── RCTTypeSafety.modulemap │ │ │ │ │ └── RCTTypeSafety.release.xcconfig │ │ │ │ ├── React/ │ │ │ │ │ ├── React.debug.xcconfig │ │ │ │ │ └── React.release.xcconfig │ │ │ │ ├── React-Codegen/ │ │ │ │ │ ├── React-Codegen-dummy.m │ │ │ │ │ ├── React-Codegen-prefix.pch │ │ │ │ │ ├── React-Codegen-umbrella.h │ │ │ │ │ ├── React-Codegen.debug.xcconfig │ │ │ │ │ ├── React-Codegen.modulemap │ │ │ │ │ └── React-Codegen.release.xcconfig │ │ │ │ ├── React-Core/ │ │ │ │ │ ├── React-Core-dummy.m │ │ │ │ │ ├── React-Core-prefix.pch │ │ │ │ │ ├── React-Core-umbrella.h │ │ │ │ │ ├── React-Core.debug.xcconfig │ │ │ │ │ ├── React-Core.modulemap │ │ │ │ │ ├── React-Core.release.xcconfig │ │ │ │ │ └── ResourceBundle-RCTI18nStrings-React-Core-Info.plist │ │ │ │ ├── React-CoreModules/ │ │ │ │ │ ├── React-CoreModules-dummy.m │ │ │ │ │ ├── React-CoreModules-prefix.pch │ │ │ │ │ ├── React-CoreModules.debug.xcconfig │ │ │ │ │ └── React-CoreModules.release.xcconfig │ │ │ │ ├── React-Fabric/ │ │ │ │ │ ├── React-Fabric-dummy.m │ │ │ │ │ ├── React-Fabric-prefix.pch │ │ │ │ │ ├── React-Fabric-umbrella.h │ │ │ │ │ ├── React-Fabric.debug.xcconfig │ │ │ │ │ ├── React-Fabric.modulemap │ │ │ │ │ └── React-Fabric.release.xcconfig │ │ │ │ ├── React-FabricImage/ │ │ │ │ │ ├── React-FabricImage-dummy.m │ │ │ │ │ ├── React-FabricImage-prefix.pch │ │ │ │ │ ├── React-FabricImage.debug.xcconfig │ │ │ │ │ └── React-FabricImage.release.xcconfig │ │ │ │ ├── React-ImageManager/ │ │ │ │ │ ├── React-ImageManager-dummy.m │ │ │ │ │ ├── React-ImageManager-prefix.pch │ │ │ │ │ ├── React-ImageManager-umbrella.h │ │ │ │ │ ├── React-ImageManager.debug.xcconfig │ │ │ │ │ ├── React-ImageManager.modulemap │ │ │ │ │ └── React-ImageManager.release.xcconfig │ │ │ │ ├── React-Mapbuffer/ │ │ │ │ │ ├── React-Mapbuffer-dummy.m │ │ │ │ │ ├── React-Mapbuffer-prefix.pch │ │ │ │ │ ├── React-Mapbuffer.debug.xcconfig │ │ │ │ │ └── React-Mapbuffer.release.xcconfig │ │ │ │ ├── React-NativeModulesApple/ │ │ │ │ │ ├── React-NativeModulesApple-dummy.m │ │ │ │ │ ├── React-NativeModulesApple-prefix.pch │ │ │ │ │ ├── React-NativeModulesApple-umbrella.h │ │ │ │ │ ├── React-NativeModulesApple.debug.xcconfig │ │ │ │ │ ├── React-NativeModulesApple.modulemap │ │ │ │ │ └── React-NativeModulesApple.release.xcconfig │ │ │ │ ├── React-RCTActionSheet/ │ │ │ │ │ ├── React-RCTActionSheet.debug.xcconfig │ │ │ │ │ └── React-RCTActionSheet.release.xcconfig │ │ │ │ ├── React-RCTAnimation/ │ │ │ │ │ ├── React-RCTAnimation-dummy.m │ │ │ │ │ ├── React-RCTAnimation-prefix.pch │ │ │ │ │ ├── React-RCTAnimation.debug.xcconfig │ │ │ │ │ └── React-RCTAnimation.release.xcconfig │ │ │ │ ├── React-RCTAppDelegate/ │ │ │ │ │ ├── React-RCTAppDelegate-dummy.m │ │ │ │ │ ├── React-RCTAppDelegate-prefix.pch │ │ │ │ │ ├── React-RCTAppDelegate-umbrella.h │ │ │ │ │ ├── React-RCTAppDelegate.debug.xcconfig │ │ │ │ │ ├── React-RCTAppDelegate.modulemap │ │ │ │ │ └── React-RCTAppDelegate.release.xcconfig │ │ │ │ ├── React-RCTBlob/ │ │ │ │ │ ├── React-RCTBlob-dummy.m │ │ │ │ │ ├── React-RCTBlob-prefix.pch │ │ │ │ │ ├── React-RCTBlob.debug.xcconfig │ │ │ │ │ └── React-RCTBlob.release.xcconfig │ │ │ │ ├── React-RCTFabric/ │ │ │ │ │ ├── React-RCTFabric-dummy.m │ │ │ │ │ ├── React-RCTFabric-prefix.pch │ │ │ │ │ ├── React-RCTFabric-umbrella.h │ │ │ │ │ ├── React-RCTFabric.debug.xcconfig │ │ │ │ │ ├── React-RCTFabric.modulemap │ │ │ │ │ └── React-RCTFabric.release.xcconfig │ │ │ │ ├── React-RCTImage/ │ │ │ │ │ ├── React-RCTImage-dummy.m │ │ │ │ │ ├── React-RCTImage-prefix.pch │ │ │ │ │ ├── React-RCTImage.debug.xcconfig │ │ │ │ │ └── React-RCTImage.release.xcconfig │ │ │ │ ├── React-RCTLinking/ │ │ │ │ │ ├── React-RCTLinking-dummy.m │ │ │ │ │ ├── React-RCTLinking-prefix.pch │ │ │ │ │ ├── React-RCTLinking.debug.xcconfig │ │ │ │ │ └── React-RCTLinking.release.xcconfig │ │ │ │ ├── React-RCTNetwork/ │ │ │ │ │ ├── React-RCTNetwork-dummy.m │ │ │ │ │ ├── React-RCTNetwork-prefix.pch │ │ │ │ │ ├── React-RCTNetwork.debug.xcconfig │ │ │ │ │ └── React-RCTNetwork.release.xcconfig │ │ │ │ ├── React-RCTSettings/ │ │ │ │ │ ├── React-RCTSettings-dummy.m │ │ │ │ │ ├── React-RCTSettings-prefix.pch │ │ │ │ │ ├── React-RCTSettings.debug.xcconfig │ │ │ │ │ └── React-RCTSettings.release.xcconfig │ │ │ │ ├── React-RCTText/ │ │ │ │ │ ├── React-RCTText-dummy.m │ │ │ │ │ ├── React-RCTText-prefix.pch │ │ │ │ │ ├── React-RCTText.debug.xcconfig │ │ │ │ │ └── React-RCTText.release.xcconfig │ │ │ │ ├── React-RCTVibration/ │ │ │ │ │ ├── React-RCTVibration-dummy.m │ │ │ │ │ ├── React-RCTVibration-prefix.pch │ │ │ │ │ ├── React-RCTVibration.debug.xcconfig │ │ │ │ │ └── React-RCTVibration.release.xcconfig │ │ │ │ ├── React-RuntimeApple/ │ │ │ │ │ ├── React-RuntimeApple-dummy.m │ │ │ │ │ ├── React-RuntimeApple-prefix.pch │ │ │ │ │ ├── React-RuntimeApple.debug.xcconfig │ │ │ │ │ └── React-RuntimeApple.release.xcconfig │ │ │ │ ├── React-RuntimeCore/ │ │ │ │ │ ├── React-RuntimeCore-dummy.m │ │ │ │ │ ├── React-RuntimeCore-prefix.pch │ │ │ │ │ ├── React-RuntimeCore.debug.xcconfig │ │ │ │ │ └── React-RuntimeCore.release.xcconfig │ │ │ │ ├── React-RuntimeHermes/ │ │ │ │ │ ├── React-RuntimeHermes-dummy.m │ │ │ │ │ ├── React-RuntimeHermes-prefix.pch │ │ │ │ │ ├── React-RuntimeHermes.debug.xcconfig │ │ │ │ │ └── React-RuntimeHermes.release.xcconfig │ │ │ │ ├── React-callinvoker/ │ │ │ │ │ ├── React-callinvoker.debug.xcconfig │ │ │ │ │ └── React-callinvoker.release.xcconfig │ │ │ │ ├── React-cxxreact/ │ │ │ │ │ ├── React-cxxreact-dummy.m │ │ │ │ │ ├── React-cxxreact-prefix.pch │ │ │ │ │ ├── React-cxxreact.debug.xcconfig │ │ │ │ │ └── React-cxxreact.release.xcconfig │ │ │ │ ├── React-debug/ │ │ │ │ │ ├── React-debug-dummy.m │ │ │ │ │ ├── React-debug-prefix.pch │ │ │ │ │ ├── React-debug-umbrella.h │ │ │ │ │ ├── React-debug.debug.xcconfig │ │ │ │ │ ├── React-debug.modulemap │ │ │ │ │ └── React-debug.release.xcconfig │ │ │ │ ├── React-featureflags/ │ │ │ │ │ ├── React-featureflags-dummy.m │ │ │ │ │ ├── React-featureflags-prefix.pch │ │ │ │ │ ├── React-featureflags-umbrella.h │ │ │ │ │ ├── React-featureflags.debug.xcconfig │ │ │ │ │ ├── React-featureflags.modulemap │ │ │ │ │ └── React-featureflags.release.xcconfig │ │ │ │ ├── React-graphics/ │ │ │ │ │ ├── React-graphics-dummy.m │ │ │ │ │ ├── React-graphics-prefix.pch │ │ │ │ │ ├── React-graphics-umbrella.h │ │ │ │ │ ├── React-graphics.debug.xcconfig │ │ │ │ │ ├── React-graphics.modulemap │ │ │ │ │ └── React-graphics.release.xcconfig │ │ │ │ ├── React-hermes/ │ │ │ │ │ ├── React-hermes-dummy.m │ │ │ │ │ ├── React-hermes-prefix.pch │ │ │ │ │ ├── React-hermes.debug.xcconfig │ │ │ │ │ └── React-hermes.release.xcconfig │ │ │ │ ├── React-jserrorhandler/ │ │ │ │ │ ├── React-jserrorhandler-dummy.m │ │ │ │ │ ├── React-jserrorhandler-prefix.pch │ │ │ │ │ ├── React-jserrorhandler.debug.xcconfig │ │ │ │ │ └── React-jserrorhandler.release.xcconfig │ │ │ │ ├── React-jsi/ │ │ │ │ │ ├── React-jsi-dummy.m │ │ │ │ │ ├── React-jsi-prefix.pch │ │ │ │ │ ├── React-jsi-umbrella.h │ │ │ │ │ ├── React-jsi.debug.xcconfig │ │ │ │ │ ├── React-jsi.modulemap │ │ │ │ │ └── React-jsi.release.xcconfig │ │ │ │ ├── React-jsiexecutor/ │ │ │ │ │ ├── React-jsiexecutor-dummy.m │ │ │ │ │ ├── React-jsiexecutor-prefix.pch │ │ │ │ │ ├── React-jsiexecutor.debug.xcconfig │ │ │ │ │ └── React-jsiexecutor.release.xcconfig │ │ │ │ ├── React-jsinspector/ │ │ │ │ │ ├── React-jsinspector-dummy.m │ │ │ │ │ ├── React-jsinspector-prefix.pch │ │ │ │ │ ├── React-jsinspector-umbrella.h │ │ │ │ │ ├── React-jsinspector.debug.xcconfig │ │ │ │ │ ├── React-jsinspector.modulemap │ │ │ │ │ └── React-jsinspector.release.xcconfig │ │ │ │ ├── React-jsitracing/ │ │ │ │ │ ├── React-jsitracing.debug.xcconfig │ │ │ │ │ └── React-jsitracing.release.xcconfig │ │ │ │ ├── React-logger/ │ │ │ │ │ ├── React-logger-dummy.m │ │ │ │ │ ├── React-logger-prefix.pch │ │ │ │ │ ├── React-logger.debug.xcconfig │ │ │ │ │ └── React-logger.release.xcconfig │ │ │ │ ├── React-nativeconfig/ │ │ │ │ │ ├── React-nativeconfig-dummy.m │ │ │ │ │ ├── React-nativeconfig-prefix.pch │ │ │ │ │ ├── React-nativeconfig.debug.xcconfig │ │ │ │ │ └── React-nativeconfig.release.xcconfig │ │ │ │ ├── React-perflogger/ │ │ │ │ │ ├── React-perflogger-dummy.m │ │ │ │ │ ├── React-perflogger-prefix.pch │ │ │ │ │ ├── React-perflogger.debug.xcconfig │ │ │ │ │ └── React-perflogger.release.xcconfig │ │ │ │ ├── React-rendererdebug/ │ │ │ │ │ ├── React-rendererdebug-dummy.m │ │ │ │ │ ├── React-rendererdebug-prefix.pch │ │ │ │ │ ├── React-rendererdebug-umbrella.h │ │ │ │ │ ├── React-rendererdebug.debug.xcconfig │ │ │ │ │ ├── React-rendererdebug.modulemap │ │ │ │ │ └── React-rendererdebug.release.xcconfig │ │ │ │ ├── React-rncore/ │ │ │ │ │ ├── React-rncore.debug.xcconfig │ │ │ │ │ └── React-rncore.release.xcconfig │ │ │ │ ├── React-runtimeexecutor/ │ │ │ │ │ ├── React-runtimeexecutor.debug.xcconfig │ │ │ │ │ └── React-runtimeexecutor.release.xcconfig │ │ │ │ ├── React-runtimescheduler/ │ │ │ │ │ ├── React-runtimescheduler-dummy.m │ │ │ │ │ ├── React-runtimescheduler-prefix.pch │ │ │ │ │ ├── React-runtimescheduler.debug.xcconfig │ │ │ │ │ └── React-runtimescheduler.release.xcconfig │ │ │ │ ├── React-utils/ │ │ │ │ │ ├── React-utils-dummy.m │ │ │ │ │ ├── React-utils-prefix.pch │ │ │ │ │ ├── React-utils-umbrella.h │ │ │ │ │ ├── React-utils.debug.xcconfig │ │ │ │ │ ├── React-utils.modulemap │ │ │ │ │ └── React-utils.release.xcconfig │ │ │ │ ├── ReactCommon/ │ │ │ │ │ ├── ReactCommon-dummy.m │ │ │ │ │ ├── ReactCommon-prefix.pch │ │ │ │ │ ├── ReactCommon-umbrella.h │ │ │ │ │ ├── ReactCommon.debug.xcconfig │ │ │ │ │ ├── ReactCommon.modulemap │ │ │ │ │ └── ReactCommon.release.xcconfig │ │ │ │ ├── SocketRocket/ │ │ │ │ │ ├── SocketRocket-dummy.m │ │ │ │ │ ├── SocketRocket-prefix.pch │ │ │ │ │ ├── SocketRocket.debug.xcconfig │ │ │ │ │ └── SocketRocket.release.xcconfig │ │ │ │ ├── WatermelonDB/ │ │ │ │ │ ├── WatermelonDB-dummy.m │ │ │ │ │ ├── WatermelonDB-prefix.pch │ │ │ │ │ ├── WatermelonDB.debug.xcconfig │ │ │ │ │ └── WatermelonDB.release.xcconfig │ │ │ │ ├── Yoga/ │ │ │ │ │ ├── Yoga-dummy.m │ │ │ │ │ ├── Yoga-prefix.pch │ │ │ │ │ ├── Yoga-umbrella.h │ │ │ │ │ ├── Yoga.debug.xcconfig │ │ │ │ │ ├── Yoga.modulemap │ │ │ │ │ └── Yoga.release.xcconfig │ │ │ │ ├── boost/ │ │ │ │ │ ├── boost.debug.xcconfig │ │ │ │ │ └── boost.release.xcconfig │ │ │ │ ├── fmt/ │ │ │ │ │ ├── fmt-dummy.m │ │ │ │ │ ├── fmt-prefix.pch │ │ │ │ │ ├── fmt.debug.xcconfig │ │ │ │ │ └── fmt.release.xcconfig │ │ │ │ ├── glog/ │ │ │ │ │ ├── glog-dummy.m │ │ │ │ │ ├── glog-prefix.pch │ │ │ │ │ ├── glog-umbrella.h │ │ │ │ │ ├── glog.debug.xcconfig │ │ │ │ │ ├── glog.modulemap │ │ │ │ │ └── glog.release.xcconfig │ │ │ │ ├── hermes-engine/ │ │ │ │ │ ├── hermes-engine-xcframeworks-input-files.xcfilelist │ │ │ │ │ ├── hermes-engine-xcframeworks-output-files.xcfilelist │ │ │ │ │ ├── hermes-engine-xcframeworks.sh │ │ │ │ │ ├── hermes-engine.debug.xcconfig │ │ │ │ │ └── hermes-engine.release.xcconfig │ │ │ │ └── simdjson/ │ │ │ │ ├── simdjson-dummy.m │ │ │ │ ├── simdjson-prefix.pch │ │ │ │ ├── simdjson-umbrella.h │ │ │ │ ├── simdjson.debug.xcconfig │ │ │ │ ├── simdjson.modulemap │ │ │ │ └── simdjson.release.xcconfig │ │ │ ├── fmt/ │ │ │ │ ├── LICENSE.rst │ │ │ │ ├── README.rst │ │ │ │ ├── include/ │ │ │ │ │ └── fmt/ │ │ │ │ │ ├── args.h │ │ │ │ │ ├── chrono.h │ │ │ │ │ ├── color.h │ │ │ │ │ ├── compile.h │ │ │ │ │ ├── core.h │ │ │ │ │ ├── format-inl.h │ │ │ │ │ ├── format.h │ │ │ │ │ ├── os.h │ │ │ │ │ ├── ostream.h │ │ │ │ │ ├── printf.h │ │ │ │ │ ├── ranges.h │ │ │ │ │ ├── std.h │ │ │ │ │ └── xchar.h │ │ │ │ └── src/ │ │ │ │ └── format.cc │ │ │ └── glog/ │ │ │ ├── COPYING │ │ │ ├── README │ │ │ ├── README.windows │ │ │ └── src/ │ │ │ ├── base/ │ │ │ │ ├── commandlineflags.h │ │ │ │ ├── googleinit.h │ │ │ │ └── mutex.h │ │ │ ├── config.h │ │ │ ├── config.h.cmake.in │ │ │ ├── config.h.in │ │ │ ├── config_for_unittests.h │ │ │ ├── demangle.cc │ │ │ ├── demangle.h │ │ │ ├── glog/ │ │ │ │ ├── log_severity.h │ │ │ │ ├── logging.h │ │ │ │ ├── logging.h.in │ │ │ │ ├── raw_logging.h │ │ │ │ ├── raw_logging.h.in │ │ │ │ ├── stl_logging.h │ │ │ │ ├── stl_logging.h.in │ │ │ │ ├── vlog_is_on.h │ │ │ │ └── vlog_is_on.h.in │ │ │ ├── googletest.h │ │ │ ├── logging.cc │ │ │ ├── mock-log.h │ │ │ ├── raw_logging.cc │ │ │ ├── signalhandler.cc │ │ │ ├── stacktrace.h │ │ │ ├── stacktrace_generic-inl.h │ │ │ ├── stacktrace_libunwind-inl.h │ │ │ ├── stacktrace_powerpc-inl.h │ │ │ ├── stacktrace_x86-inl.h │ │ │ ├── stacktrace_x86_64-inl.h │ │ │ ├── symbolize.cc │ │ │ ├── symbolize.h │ │ │ ├── utilities.cc │ │ │ ├── utilities.h │ │ │ └── vlog_is_on.cc │ │ ├── PrivacyInfo.xcprivacy │ │ ├── WatermelonTester/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Base.lproj/ │ │ │ │ └── LaunchScreen.xib │ │ │ ├── BridgeTestReporter.m │ │ │ ├── BridgeTestReporter.swift │ │ │ ├── Images.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Info.plist │ │ │ └── WatermelonTester-Bridging-Header.h │ │ ├── WatermelonTester.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── WatermelonTester.xcscheme │ │ ├── WatermelonTester.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── WatermelonTesterTests/ │ │ ├── BridgeTests.swift │ │ ├── Info.plist │ │ ├── Tests.swift │ │ └── WatermelonTesterTests-Bridging-Header.h │ ├── metro-transformer.js │ ├── shared/ │ │ ├── Database-batch.cpp │ │ ├── Database-jsi.cpp │ │ ├── Database-query.cpp │ │ ├── Database-sqlite.cpp │ │ ├── Database-turboSync.cpp │ │ ├── Database.cpp │ │ ├── Database.h │ │ ├── DatabaseBridge.cpp │ │ ├── DatabasePlatform.h │ │ ├── JSIHelpers.h │ │ ├── Sqlite.cpp │ │ └── Sqlite.h │ ├── windows/ │ │ ├── .gitignore │ │ ├── ExperimentalFeatures.props │ │ ├── NuGet.Config │ │ ├── WatermelonDB/ │ │ │ ├── DatabasePlatformWindows.cpp │ │ │ ├── PropertySheet.props │ │ │ ├── ReactPackageProvider.cpp │ │ │ ├── ReactPackageProvider.h │ │ │ ├── ReactPackageProvider.idl │ │ │ ├── WMDatabaseBridge.cpp │ │ │ ├── WMDatabaseBridge.h │ │ │ ├── WatermelonDB.def │ │ │ ├── WatermelonDB.vcxproj │ │ │ ├── WatermelonDB.vcxproj.filters │ │ │ ├── pch.cpp │ │ │ └── pch.h │ │ └── WatermelonDB.sln │ ├── windowsE2E/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── custom-transformer.js │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── test/ │ │ │ └── watermelon.test.ts │ │ └── tsconfig.json │ └── windowsTest/ │ ├── .gitignore │ ├── ExperimentalFeatures.props │ ├── NuGet.Config │ ├── WatermelonTester/ │ │ ├── .gitignore │ │ ├── App.cpp │ │ ├── App.h │ │ ├── App.idl │ │ ├── App.xaml │ │ ├── AutolinkedNativeModules.g.cpp │ │ ├── AutolinkedNativeModules.g.h │ │ ├── AutolinkedNativeModules.g.props │ │ ├── AutolinkedNativeModules.g.targets │ │ ├── MainPage.cpp │ │ ├── MainPage.h │ │ ├── MainPage.idl │ │ ├── MainPage.xaml │ │ ├── Package.appxmanifest │ │ ├── PropertySheet.props │ │ ├── ReactPackageProvider.cpp │ │ ├── ReactPackageProvider.h │ │ ├── WatermelonTester.filters │ │ ├── WatermelonTester.vcxproj │ │ ├── pch.cpp │ │ └── pch.h │ └── WatermelonTester.sln ├── package.json ├── prettier.config.js ├── react-native.config.js ├── scripts/ │ ├── any-android-device │ ├── ccache-clang │ ├── emulator.mjs │ ├── emulatorWithJavaCheck │ ├── make.mjs │ ├── pkg.cjs │ ├── release.mjs │ ├── replace-docs-path.mjs │ ├── retryEmuAndTest │ ├── test-ios │ └── update-docusaurus ├── src/ │ ├── Collection/ │ │ ├── RecordCache.d.ts │ │ ├── RecordCache.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── Database/ │ │ ├── CollectionMap/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── LocalStorage/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── WorkQueue.d.ts │ │ ├── WorkQueue.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── DatabaseProvider/ │ │ ├── index.d.ts │ │ └── index.js │ ├── Model/ │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── Query/ │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── QueryDescription/ │ │ ├── __tests__/ │ │ │ ├── queryWithoutDeleted.test.js │ │ │ └── test.js │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── operators.d.ts │ │ ├── operators.js │ │ ├── type.d.ts │ │ └── type.js │ ├── RawRecord/ │ │ ├── __tests__/ │ │ │ ├── helpers.js │ │ │ └── test.js │ │ ├── index.d.ts │ │ └── index.js │ ├── Relation/ │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── Schema/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── migrations/ │ │ │ ├── getSyncChanges/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── stepsForMigration.d.ts │ │ │ ├── stepsForMigration.js │ │ │ └── test.js │ │ └── test.js │ ├── __playground__/ │ │ └── index.js │ ├── __tests__/ │ │ ├── databaseTests.js │ │ ├── emptyMock/ │ │ │ └── index.js │ │ ├── integrationTests.js │ │ ├── setUpIntegrationTestEnv.js │ │ ├── setup.js │ │ ├── testModels.js │ │ └── utils/ │ │ ├── expectToRejectWithMessage/ │ │ │ └── index.js │ │ ├── index.js │ │ ├── makeScheduler.js │ │ └── naughtyStrings.js │ ├── __typetests__/ │ │ ├── README.md │ │ └── query.js │ ├── adapters/ │ │ ├── __tests__/ │ │ │ ├── commonTests.js │ │ │ └── helpers.js │ │ ├── common.js │ │ ├── compat.d.ts │ │ ├── compat.js │ │ ├── error.js │ │ ├── lokijs/ │ │ │ ├── common.d.ts │ │ │ ├── common.js │ │ │ ├── dispatcher.d.ts │ │ │ ├── dispatcher.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── test.js │ │ │ ├── type.d.ts │ │ │ ├── type.js │ │ │ └── worker/ │ │ │ ├── DatabaseBridge.js │ │ │ ├── DatabaseDriver.js │ │ │ ├── cloneMessage/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── encodeQuery/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── executeQuery.js │ │ │ ├── loki.worker.js │ │ │ ├── lokiExtensions.js │ │ │ ├── performJoins/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ └── synchronousWorker.js │ │ ├── sqlite/ │ │ │ ├── devtools.js │ │ │ ├── encodeBatch/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── encodeQuery/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── encodeSchema/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── encodeValue/ │ │ │ │ ├── index.js │ │ │ │ └── test.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── integrationTest.js │ │ │ ├── makeDispatcher/ │ │ │ │ ├── decodeQueryResult/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── test.js │ │ │ │ ├── index.js │ │ │ │ └── index.native.js │ │ │ ├── sqlite-node/ │ │ │ │ ├── Database.js │ │ │ │ ├── DatabaseBridge.js │ │ │ │ ├── DatabaseDriver.js │ │ │ │ └── __tests__/ │ │ │ │ └── DatabaseDriver.test.js │ │ │ ├── test.js │ │ │ ├── type.d.ts │ │ │ └── type.js │ │ ├── type.d.ts │ │ └── type.js │ ├── decorators/ │ │ ├── action/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── children/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── common.d.ts │ │ ├── common.js │ │ ├── date/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── experimentalFailsafe/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── field/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── immutableRelation/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── json/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── lazy/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── nochange/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── readonly/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── relation/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ └── text/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── diagnostics/ │ │ ├── censorRaw.js │ │ ├── diagnoseDatabaseStructure/ │ │ │ ├── impl.js │ │ │ └── index.js │ │ ├── diagnoseSyncConsistency/ │ │ │ ├── impl.js │ │ │ └── index.js │ │ └── index.js │ ├── hooks/ │ │ ├── index.d.ts │ │ └── index.js │ ├── index.d.ts │ ├── index.integrationTests.native.js │ ├── index.js │ ├── observation/ │ │ ├── encodeMatcher/ │ │ │ ├── canEncode.js │ │ │ ├── index.js │ │ │ ├── operators.js │ │ │ └── test.js │ │ ├── subscribeToCount/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── subscribeToQuery.d.ts │ │ ├── subscribeToQuery.js │ │ ├── subscribeToQueryReloading/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── subscribeToQueryWithColumns/ │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── subscribeToSimpleQuery/ │ │ │ ├── index.js │ │ │ ├── processChangeSet.js │ │ │ └── test.js │ │ └── test.js │ ├── react/ │ │ ├── DatabaseContext.d.ts │ │ ├── DatabaseContext.js │ │ ├── DatabaseProvider.d.ts │ │ ├── DatabaseProvider.js │ │ ├── DatabaseProvider.test.js │ │ ├── WithObservablesComponent.js │ │ ├── compose.d.ts │ │ ├── compose.js │ │ ├── helpers.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── useDatabase.d.ts │ │ ├── useDatabase.js │ │ ├── useDatabase.test.js │ │ ├── withDatabase.d.ts │ │ ├── withDatabase.js │ │ ├── withHooks.js │ │ └── withObservables/ │ │ ├── garbageCollector.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── withObservables.test.js │ ├── sync/ │ │ ├── SyncLogger/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── debugPrintChanges/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── helpers.test.js │ │ ├── impl/ │ │ │ ├── __tests__/ │ │ │ │ ├── applyRemote.test.js │ │ │ │ ├── fetchLocal.test.js │ │ │ │ ├── helpers.js │ │ │ │ ├── helpers.test.js │ │ │ │ ├── markAsSynced.test.js │ │ │ │ ├── synchronize-abort.test.js │ │ │ │ ├── synchronize-benchmark.test.js │ │ │ │ ├── synchronize-migration.test.js │ │ │ │ ├── synchronize-partialRejections.test.js │ │ │ │ ├── synchronize-replacement.test.js │ │ │ │ ├── synchronize-turbo.test.js │ │ │ │ └── synchronize.test.js │ │ │ ├── applyRemote.d.ts │ │ │ ├── applyRemote.js │ │ │ ├── fetchLocal.d.ts │ │ │ ├── fetchLocal.js │ │ │ ├── helpers.d.ts │ │ │ ├── helpers.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── markAsSynced.d.ts │ │ │ ├── markAsSynced.js │ │ │ ├── synchronize.d.ts │ │ │ └── synchronize.js │ │ ├── index.d.ts │ │ └── index.js │ ├── types.d.ts │ ├── types.js │ └── utils/ │ ├── common/ │ │ ├── connectionTag/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── deepFreeze/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── deprecated/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── devMeasureTime/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── diagnosticError/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── ensureSync/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── invariant/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── isRN/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── index.native.js │ │ ├── logError/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── logger/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── makeDecorator/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── memory/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ └── randomId/ │ │ ├── fallback.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── randomId.js │ │ ├── randomId.native.js │ │ ├── randomId_v2.native.js │ │ └── test.js │ ├── fp/ │ │ ├── Result/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── allPass/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── allPromises/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── allPromisesObj/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── anyPass/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── areRecordsEqual/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── arrayDifference/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── arrayOrSpread/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── checkName/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── filterObj/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── forEachAsync/ │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── fromPairs/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── groupBy/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── identicalArrays/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── identity/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── isObj/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── keys/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── likeToRegexp/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── mapObj/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── noop/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── pipe/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── sortBy/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── splitEvery/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── toPairs/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── unique/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── test.js │ │ ├── unnest/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ └── values/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── rx/ │ │ ├── __wmelonRxShim/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── __wmelonRxShimESM2015/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── cacheWhileConnected/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── doOnDispose/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── doOnSubscribe/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── publishReplayLatestWhileConnected/ │ │ ├── index.d.ts │ │ └── index.js │ └── subscriptions/ │ ├── SharedSubscribable/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test.js │ ├── index.d.ts │ ├── index.js │ ├── type.d.ts │ └── type.js ├── tsconfig.json └── tslint.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintignore ================================================ node_modules/ dist/ flow-typed/ dev/ ; FIXME: Temporary, should be deleted after #1477 is merged **/*.ts ================================================ FILE: .eslintrc.js ================================================ const config = { env: { es6: true, // configure globals jest: true, browser: true, commonjs: true, node: true, }, plugins: ['import', '@typescript-eslint'], extends: [ 'eslint:recommended', 'plugin:react/recommended', 'plugin:react-hooks/recommended', 'plugin:flowtype/recommended', 'prettier', 'plugin:jest/recommended', ], parser: '@babel/eslint-parser', ignorePatterns: 'examples/typescript/**/*.ts', settings: { flowtype: { onlyFilesWithFlowAnnotation: true, }, }, rules: { 'no-console': ['error'], 'no-unused-vars': [ 'error', { argsIgnorePattern: '^_', }, ], 'import/no-cycle': 'error', 'jest/no-large-snapshots': 'warn', 'jest/no-disabled-tests': 'off', 'jest/expect-expect': 'off', }, overrides: [ { files: ['src/**/*.js'], excludedFiles: ['*integrationTest.js', '*test.js', '**/__tests__/**', '*test.*.js'], rules: { 'flowtype/require-valid-file-annotation': ['error', 'always'], }, }, { files: ['src/**/*.ts', 'examples/typescript/*.ts'], parser: '@typescript-eslint/parser', rules: { 'flowtype/no-types-missing-file-annotation': 'off', }, }, ], } module.exports = config ================================================ FILE: .flowconfig ================================================ [ignore] /.cache /dist /dev /examples /react-native-copy /src/**/*.ts .*/node_modules/react\-native/.* .*/node_modules/@react\-native/.* .*/node_modules/fbjs/** .*/node_modules/resolve/test/resolver/** .*/node_modules/metro\-config/.* .*/node_modules/metro\-config/.* .*/node_modules/hermes\-estree/.* .*/node_modules/metro/.* [libs] flow-typed/ [options] server.max_workers=8 emoji=true module.ignore_non_literal_requires=true module.file_ext=.js exact_by_default=false # fixes Flow on ARM sharedmemory.heap_size=4000000000 [version] >=0.140.0 ================================================ FILE: .gitattributes ================================================ native/iosTests/Pods/* linguist-generated=true *.pbxproj -text ================================================ FILE: .github/stale.yml ================================================ daysUntilStale: 270 daysUntilClose: 60 ================================================ FILE: .github/workflows/ci.yml ================================================ name: CI on: pull_request: push: branches: master jobs: ci-check: runs-on: ubuntu-22.04 name: JavaScript tests strategy: matrix: node-version: ['18.x', '20.x', '22.x', '23.x'] steps: - uses: actions/checkout@v3 - name: Set Node.js version uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - uses: actions/cache@v3 with: path: 'node_modules' key: ${{ runner.os }}-node-${{ matrix.node-version }}-modules-${{ hashFiles('**/yarn.lock') }} - run: yarn - run: yarn ci:check - name: Gradle Wrapper Validation uses: gradle/wrapper-validation-action@v1.0.6 - name: Check docs build run: cd docs-website && yarn install && cd .. && yarn docs:build ios: runs-on: macos-15 name: iOS tests steps: - uses: actions/checkout@v3 - name: Set Node.js version uses: actions/setup-node@v3 with: node-version: 22.x - name: Set Xcode version uses: maxim-lobanov/setup-xcode@v1.2.1 with: xcode-version: 16.2 - name: ccache uses: hendrikmuhs/ccache-action@v1 - name: cache node_modules uses: actions/cache@v3 with: path: 'node_modules' key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - run: yarn - name: cache Pods uses: actions/cache@v3 id: pods-cache with: path: native/iosTest/Pods key: ${{ runner.os }}-pods-cache-${{ hashFiles('**/Podfile.lock') }} - run: bundle install - name: 'pod install' if: true # steps.pods-cache.outputs.cache-hit != 'true' run: yarn cocoapods - run: yarn test:ios android: runs-on: ubuntu-24.04 name: Android tests steps: - uses: actions/checkout@v4 - name: Enable KVM run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - uses: actions/setup-java@v4 with: distribution: 'adopt' java-version: '17' - name: Set Node.js version uses: actions/setup-node@v4 with: node-version: 22.x - uses: actions/cache@v4 with: path: 'node_modules' key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - run: yarn - run: yarn dev:native & - uses: gradle/actions/setup-gradle@v3 # See: https://github.com/android/compose-samples/actions/runs/27015993/workflow for ideas for caching - name: run tests uses: reactivecircus/android-emulator-runner@v2.33.0 with: api-level: 29 working-directory: ./native/androidTest script: ./gradlew connectedAndroidTest - run: yarn ktlint windows: # FIXME: Windows port is unmaintained. If you're interested in sponsoring continued maintenance, # please email me! if: false runs-on: windows-2022 name: Windows tests steps: - uses: actions/checkout@v3 - name: Set Node.js version uses: actions/setup-node@v3 with: node-version: 22.x - uses: actions/cache@v3 with: path: 'node_modules' key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - run: yarn --network-timeout 100000 # FIXME: concurrently seems broken on windows # - run: yarn ci - run: yarn test - run: yarn eslint - run: yarn flow # FIXME: TS broken on Windows? # - run: yarn test:typescript # Build WatermelonTester and run in background - run: yarn test:windows # Give it some time to bundle - run: sleep 90 # Start E2E runner to capture integration test results - run: cd native/windowsE2E && yarn - run: yarn test:windows:ci ================================================ FILE: .gitignore ================================================ .DS_Store .cache/ node_modules/ .tmp/ npm-debug.log yarn-error.log dist/ dev/ *.tgz coverage/ .vscode .idea docs-build/ **/.metro-health-check* # windows msbuild.binlog # Yarn .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/sdks !.yarn/versions ================================================ FILE: .imgbotconfig ================================================ { "ignoredFiles": [ "docs/*" ] } ================================================ FILE: CHANGELOG-Unreleased.md ================================================ ### Highlights ### BREAKING CHANGES ### Deprecations ### New features ### Fixes - [LokiJS] Multitab sync issue fix - [Android] Added linker flag for building with 16kB page alignment - [TS] make catchError visible to typescript ### Performance ### Changes - Updated better-sqlite3 to 11.9.1 ### Internal - Updated internal dependencies - Updated documentation scripts ================================================ FILE: CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. Contributors: Please add your changes to CHANGELOG-Unreleased.md ## 0.28 - 2025-04-07 ### BREAKING CHANGES - [iOS] Podspec deployment target was bumped from iOS 11 to iOS 12 - [Android] Installation of Android JSI adapter has changed. To migrate, remove `getJSIModulePackage()` override in your `MainApplication.{java,kt}`, and add `new WatermelonDBJSIPackage()` to `getPackages()` override instead. See Installation docs for details. ### New features - Added `Database#experimentalIsVerbose` option - Support for React Native 0.74+ ### Fixes - [ts] Improved LocalStorage type definition - [ts] Add missing .d.ts for experimentalFailsafe decorator - [migrations] `unsafeExecuteSql` migration is now validate to ensure it ends with a semicolon (#1811) ### Changes - Minimum supported Node.js version is now 18.x - Improved Model diagnostic errors now always contain `table#id` of offending record - Update `better-sqlite3` to 11.x - Update sqlite (used by Android in JSI mode) to 3.46.0 - [docs] Improved Android installation docs - [docs] Removed examples from the codebase as they were unmaintained ### Internal - Update internal dependencies ## 0.27.1 - 2023-10-15 Fix missing Changelog for 0.27 release ## 0.27 - 2023-08-29 ### Highlights **Removed legacy Swift and Kotlin React Native Modules** Following the addition of new Native Modules in 0.26, we're removing the old implementations. We expect this to simplify installation process and remove a ton of compatibility and configuration issues due to Kotlin version mismatchs and the CocoaPods-Swift issues when using `use_frameworks!` or Expo. **Experimental React Native Windows support** WatermelonDB now has _experimental_ support for React Native Windows. See Installation docs for details. **Introducing Watermelon React** All React/React Native helpers for Watermelon are now available from a new `@nozbe/watermelodb/react` folder: - `DatabaseProvider`, `useDatabase`, `withDatabase` - NEW: `withObservables` - `@nozbe/with-observables` as a separate package is deprecated, and is now bundled with WatermelonDB - NEW: HOC helpers: `compose`, `withHooks` - NEW: `` component, a component version of `withObservables` HOC. Useful when a value being observed is localized to a small part of a larger component, because you can effortlessly narrow down which parts of the component are re-rendered when the value changes without having to extract a new component. Imports from previous `@nozbe/watermelondb/DatabaseProvider` and `@nozbe/watermelondb/hooks` folders are deprecated and will be removed in a future version. **Introducing Watermelon Diagnostics** All debug/dev/diagnostics tools for Watermelon are now available from a new `@nozbe/watermelondb/diagnostics` folder: - NEW: `censorRaw` - takes a `RawRecord/DirtyRaw` and censors its string values, while preserving IDs, _status, _changed, and numeric/boolean values. Helpful when viewing database contents in context that could expose private user information - NEW: `diagnoseDatabaseStructure` - analyzes database to find inconsistencies, such as orphaned records (`belongs_to` relations on model that point to records that don't exist) or broken LokiJS database. Use this to find bugs in your data model. - NEW: `diagnoseSyncConsistency` - compares local database with the server version (contents of first/full sync) to find inconsistencies, missing and excess records. Use this to find bugs in your backend sync implementation. ### BREAKING CHANGES - `@nozbe/with-observables` is no longer a WatermelonDB dependency. Change your imports to `import { withObservables } from '@nozbe/watermelondb/react'` Changes unlikely to cause issues: - [iOS] If `import WatermelonDB` is used in your Swift app (for Turbo sync), remove it and replace with `#import ` in the bridging header - [iOS] If you use `_watermelonDBLoggingHook`, remove it. No replacement is provided at this time, feel free to contribute if you need this - [iOS] If you use `-DENABLE_JSLOCK_PERFORMANCE_HACK`, remove it. JSLockPerfHack has been non-functional for some time already, and has now been removed. Please file an issue if you relied on it. ### Deprecations - Imports from `@nozbe/watermelondb/DatabaseProvider` and `@nozbe/watermelondb/hooks`. Change to `@nozbe/watermelondb/react` ### New features - New `@experimentalFailsafe` decorator you can apply before `@relation/@immutableRelation` so that if relation points to a record that does not exist, `.fetch()/.observe()` yield `undefined` instead of throwing an error ### Fixes - [Flow/TS] Improved typing of DatabaseContext - Fixed `Cannot read property 'getRandomIds' of null`. This error occured if native modules were not correctly installed, however the location of the error caused a lot of confusion. ## 0.26 - 2023-04-28 ### Highlights **New Native Modules** We're transitioning SQLite adapters for React Native **from Kotlin and Swift to Java and Objective-C**. This is only a small part of WatermelonDB, yet is responsible for a disproportionate amount of issues raised, such as Kotlin version conflicts, Expo build failures, CocoaPods use_frameworks! issues. It makes library installation and updates more complicated for users. It complicates maintenance. Swift doesn't play nicely with either React Native's legacy Native Module system, nor can it interact cleanly with C++ (JSI/New Architecture) without going through Objective-C++. In other words, in the context of a React Native library, the benefit of these modern, nicer to use languages is far outweighed by the downsides. That's why we (@radex & @rozpierog) decided to rewrite the iOS and Android implementations to Objective-C and Java respectively. 0.26 is a transition release, and it contains both implementations. If you find a regression caused by the new bridge, pass `{disableNewBridge: true}` to `new SQLiteAdapter()` **and file an issue**. We plan to remove the old implementation in 0.27 or 0.28 release. **New documentation** We have a brand new documentation page, built with Docusaurus (contributed by @ErickLuizA). We plan to expand guides, add typing to examples, and add a proper API reference, but we need your help to do this! See: https://github.com/Nozbe/WatermelonDB/issues/1481 ### BREAKING CHANGES - [iOS] You should remove import of WatermelonDB's `SupportingFiles/Bridging.h` from your app project's `Bridging.h`. If this removal causes build issues, please file an issue. - [iOS] In your Podfile, replace previous WatermelonDB's pod imports with this: ```rb # Uncomment this line if you're not using auto-linking # pod 'WatermelonDB', path: '../node_modules/@nozbe/watermelondb' # WatermelonDB dependency pod 'simdjson', path: '../node_modules/@nozbe/simdjson', modular_headers: true ``` - Removed functions deprecated for 2+ years: - `Collection.unsafeFetchRecordsWithSQL()`. Use `.query(Q.unsafeSqlQuery('select * from...')).fetch()` instead. - `Database.action()`. Use `Database.write()` instead. - `.subAction()`. Use `.callWriter()` instead. - `@action` decorator. Use `@writer` instead. ### Deprecations ### New features - [Android] Added `experimentalUnsafeNativeReuse` option to SQLiteAdapter. See `src/adapters/sqlite/type.js` for more details - You can now pass an array to `Q.and(conditions)`, `Q.or(conditions)`, `collection.query(conditions)`, `query.extend(conditions)` in addition to spreading multiple arguments - Added JSDoc comments to many APIs ### Fixes - Improved resiliency to "Maximum call stack size exceeded" errors - [JSI] Improved reliability when reloading RCTBridge - [iOS] Fix "range of supported deployment targets" Xcode warning - `randomId` uses better randum number generator - Fixed "no such index" when using non-standard schemas and >1k bulk updates - Fixes and changes included in `@nozbe/with-observables@1.5.0` - [Flow] `query.batch([model, falsy])` no longer raises an error ### Performance - Warning is now given if a large number of arguments is passed to `Q.and, Q.or, Collection.query, Database.batch` instead of a single array - `randomId()` is now 2x faster on Chrome, 10x faster on Safari, 2x faster on iOS (Hermes) ### Changes - `randomId`: now also generates upper-case letters - Simplified CocoaPods/iOS integration - Docs improvements: SQLite versions, Flow declarations, Installation - Improved diagnostic warnings and errors: JSI, Writer/Reader - Remove old diagnostic warnings no longer relevant: `multiple Q.on()s`, `Database`, `LokiJSAdapter`, `SQLiteAdapter` - Updated `flow-bin` to 0.200. This shouldn't have an impact on you, but could fix or break Flow if you don't have WatermelonDB set to `[declarations]` mode - Updated `@babel/runtime` to 7.20.13 - Updated `rxjs` to 7.8.0 - Updated `sqlite` (SQLite used on Android in JSI mode) to 3.40.1 - Updated `simdjson` to 3.1.0 ### Internal - Cleaned up QueryDescription, ios folder structure, JSI implementation by splitting them into smaller parts. - [Android] [jsi] Simplify CMakeLists - Improve release script ## 0.25.5 - 2023-02-01 - Fix Android auto-linking ## 0.25.4 - 2023-01-31 - [Sync] Improve memory consumption (less likely to get "Maximum callstack exceeded" error) - [TypeScript] Fix type of `DirtyRaw` to `{ [key: string]: any }` (from `Object`) ## 0.25.3 - 2023-01-30 - Fixed TypeError regression ## 0.25.2 - 2023-01-30 ### Fixes - Fix TypeScript issues (@paulrostorp feat. @enahum) - Fix compilation on Kotlin 1.7 - Fix regression in Sync that could cause `Record ID xxx#yyy was sent over the bridge, but it's not cached` error ### Internal - Update internal dependencies - Fix Android CI - Improve TypeScript CI ## 0.25.1 - 2023-01-23 - Fix React Native 0.71+ Android broken build ## 0.25 - 2023-01-20 ### Highlights - Fix broken build on React Native 0.71+ - [Expo] Fixes Expo SDK 44+ build errors (@Kudo) - [JSI] Fix an issue that sometimes led to crashing app upon database close ### BREAKING CHANGES - [Query] `Q.where(xxx, undefined)` will now throw an error. This is a bug fix, since comparing to undefined was never allowed and would either error out or produce a wrong result in some cases. However, it could technically break an app that relied on existing buggy behavior - [JSI+Swift] If you use `watermelondbProvideSyncJson()` native iOS API, you might need to add `import WatermelonDB` ### New features - [adapters] Adapter objects can now be distinguished by checking their `static adapterType` - [Query] New `Q.includes('foo')` query for case-sensitive exact string includes comparison - [adapters] Adapter objects now returns `dbName` - [Sync] Replacement Sync - a new advanced sync feature. Server can now send a full dataset (same as during initial sync) and indicate with `{ experimentalStrategy: 'replacement' }` that instead of applying a diff, local database should be replaced with the dataset sent. Local records not present in the changeset will be deleted. However, unlike clearing database and logging in again, unpushed local changes (to records that are kept after replacement) are preserved. This is useful for recovering from a corrupted local database, or as a hack to deal with very large state changes such that server doesn't know how to efficiently send incremental changes and wants to send a full dataset instead. See docs for more details. - [Sync] Added `onWillApplyRemoteChanges` callback ### Performance - [LokiJS] Updated Loki with some performance improvements - [iOS] JSLockPerfHack now works on iOS 15 - [Sync] Improved performance of processing large pulls - Improved `@json` decorator, now with optional `{ memo: true }` parameter ### Changes - [Docs] Added additional Android JSI installation step ### Fixes - [TypeScript] Improve typings: add unsafeExecute method, localStorage property to Database - [android] Fixed compilation on some setups due to a missing `` import - [sync] Fixed marking changes as synced for users that don't keep globally unique (only per-table unique) IDs - Fix `Model.experimentalMarkAsDeleted/experimentalDestroyPermanently()` throwing an error in some cases - Fixes included in updated `withObservables` ## 0.24 - 2021-10-28 ### BREAKING CHANGES - `Q.experimentalSortBy`, `Q.experimentalSkip`, `Q.experimentalTake` have been renamed to `Q.sortBy`, `Q.skip`, `Q.take` respectively - **RxJS has been updated to 7.3.0**. If you're not importing from `rxjs` in your app, this doesn't apply to you. If you are, read RxJS 7 breaking changes: https://rxjs.dev/deprecations/breaking-changes ### New features - **LocalStorage**. `database.localStorage` is now available - **sortBy, skip, take** are now available in LokiJSAdapter as well - **Disposable records**. Read-only records that cannot be saved in the database, updated, or deleted and only exist for as long as you keep a reference to them in memory can now be created using `collection.disposableFromDirtyRaw()`. This is useful when you're adding online-only features to an otherwise offline-first app. - [Sync] `experimentalRejectedIds` parameter now available in push response to allow partial rejection of an otherwise successful sync ### Fixes - Fixes an issue when using Headless JS on Android with JSI mode enabled - pass `usesExclusiveLocking: true` to SQLiteAdapter to enable - Fixes Typescript annotations for Collection and adapters/sqlite ## 0.23 - 2021-07-22 This is a big release to WatermelonDB with new advanced features, great performance improvements, and important fixes to JSI on Android. Please don't get scared off the long list of breaking changes - they are all either simple Find&Replace renames or changes to internals you probably don't use. It shouldn't take you more than 15 minutes to upgrade to 0.23. ### BREAKING CHANGES - **iOS Installation change**. You need to add this line to your Podfile: `pod 'simdjson', path: '../node_modules/@nozbe/simdjson'` - Deprecated `new Database({ actionsEnabled: false })` options is now removed. Actions are always enabled. - Deprecated `new SQLiteAdapter({ synchronous: true })` option is now removed. Use `{ jsi: true }` instead. - Deprecated `Q.unsafeLokiFilter` is now removed. Use `Q.unsafeLokiTransform((raws, loki) => raws.filter(raw => ...))` instead. - Deprecated `Query.hasJoins` is now removed - Changes to `LokiJSAdapter` constructor options: - `indexedDBSerializer` -> `extraIncrementalIDBOptions: { serializeChunk, deserializeChunk }` - `onIndexedDBFetchStart` -> `extraIncrementalIDBOptions: { onFetchStart }` - `onIndexedDBVersionChange` -> `extraIncrementalIDBOptions: { onversionchange }` - `autosave: false` -> `extraLokiOptions: { autosave: false }` - Changes to Internal APIs. These were never meant to be public, and so are unlikely to affect you: - `Model._isCommited`, `._hasPendingUpdate`, `._hasPendingDelete` have been removed and changed to `Model._pendingState` - `Collection.unsafeClearCache()` is no longer exposed - Values passed to `adapter.setLocal()` are now validated to be strings. This is technically a bug fix, since local storage was always documented to only accept strings, however applications may have relied on this lack of validation. Adding this validation was necessary to achieve consistent behavior between SQLiteAdapter and LokiJSAdapter - `unsafeSql` passed to `appSchema` will now also be called when dropping and later recreating all database indices on large batches. A second argument was added so you can distinguish between these cases. See Schema docs for more details. - **Changes to sync change tracking**. The behavior of `record._raw._changed` and `record._raw._status` (a.k.a. `record.syncStatus`) has changed. This is unlikely to be a breaking change to you, unless you're writing your own sync engine or rely on these low-level details. - Previously, \_changed was always empty when \_status=created. Now, \_changed is not populated during initial creation of a record, but a later update will add changed fields to \_changed. This change was necessary to fix a long-standing Sync bug. ### Deprecations - `database.action(() => {})` is now deprecated. Use `db.write(() => {})` instead (or `db.read(() => {})` if you only need consistency but are not writing any changes to DB) - `@action` is now deprecated. Use `@writer` or `@reader` instead - `.subAction()` is now deprecated. Use `.callReader()` or `.callWriter()` instead - `Collection.unsafeFetchRecordsWithSQL()` is now deprecated. Use `collection.query(Q.unsafeSqlQuery("select * from...")).fetch()` instead. ### New features - `db.write(writer => { ... writer.batch() })` - you can now call batch on the interface passed to a writer block - **Fetching record IDs and unsafe raws.** You can now optimize fetching of queries that only require IDs, not full cached records: - `await query.fetchIds()` will return an array of record ids - `await query.unsafeFetchRaw()` will return an array of unsanitized, unsafe raw objects (use alongside `Q.unsafeSqlQuery` to exclude unnecessary or include extra columns) - advanced `adapter.queryIds()`, `adapter.unsafeQueryRaw` are also available - **Raw SQL queries**. New syntax for running unsafe raw SQL queries: - `collection.query(Q.unsafeSqlQuery("select * from tasks where foo = ?", ['bar'])).fetch()` - You can now also run `.fetchCount()`, `.fetchIds()` on SQL queries - You can now safely pass values for SQL placeholders by passing an array - You can also observe an unsafe raw SQL query -- with some caveats! refer to documentation for more details - **Unsafe raw execute**. You can now execute arbitrary SQL queries (SQLiteAdapter) or access Loki object directly (LokiJSAdapter) using `adapter.unsafeExecute` -- see docs for more details - **Turbo Login**. You can now speed up the initial (login) sync by up to 5.3x with Turbo Login. See Sync docs for more details. - New diagnostic tool - **debugPrintChanges**. See Sync documentation for more details ### Performance - The order of Q. clauses in a query is now preserved - previously, the clauses could get rearranged and produce a suboptimal query - [SQLite] `adapter.batch()` with large numbers of created/updated/deleted records is now between 16-48% faster - [LokiJS] Querying and finding is now faster - unnecessary data copy is skipped - [jsi] 15-30% faster querying on JSC (iOS) when the number of returned records is large - [jsi] up to 52% faster batch creation (yes, that's on top of the improvement listed above!) - Fixed a performance bug that caused observed items on a list observer with `.observeWithColumns()` to be unnecessarily re-rendered just before they were removed from the list ### Changes - All Watermelon console logs are prepended with a 🍉 tag - Extra protections against improper use of writers/readers (formerly actions) have been added - Queries with multiple top-level `Q.on('table', ...)` now produce a warning. Use `Q.on('table', [condition1, condition2, ...])` syntax instead. - [jsi] WAL mode is now used ### Fixes - [jsi] Fix a race condition where commands sent to the database right after instantiating SQLiteAdapter would fail - [jsi] Fix incorrect error reporting on some sqlite errors - [jsi] Fix issue where app would crash on Android/Hermes on reload - [jsi] Fix IO errors on Android - [sync] Fixed a long-standing bug that would cause records that are created before a sync and updated during sync's push to lose their most recent changes on a subsequent sync ### Internal - Internal changes to SQLiteAdapter: - .batch is no longer available on iOS implementation - .batch/.batchJSON internal format has changed - .getDeletedRecords, destroyDeletedRecords, setLocal, removeLocal is no longer available - encoded SQLiteAdapter schema has changed - LokiJSAdapter has had many internal changes ## 0.22 - 2021-05-07 ### BREAKING CHANGES - [SQLite] `experimentalUseJSI: true` option has been renamed to `jsi: true` ### Deprecations - [LokiJS] `Q.unsafeLokiFilter` is now deprecated and will be removed in a future version. Use `Q.unsafeLokiTransform((raws, loki) => raws.filter(raw => ...))` instead. ### New features - [SQLite] [JSI] `jsi: true` now works on Android - see docs for installation info ### Performance - Removed dependency on rambdax and made the util library smaller - Faster withObservables ### Changes - Synchronization: `pushChanges` is optional, will not calculate local changes if not specified. - withObservables is now a dependency of WatermelonDB for simpler installation and consistent updates. You can (and generally should) delete `@nozbe/with-observables` from your app's package.json - [Docs] Add advanced tutorial to share database across iOS targets - @thiagobrez - [SQLite] Allowed callbacks (within the migrationEvents object) to be passed so as to track the migration events status ( onStart, onSuccess, onError ) - @avinashlng1080 - [SQLite] Added a dev-only `Query._sql()` method for quickly extracting SQL from Queries for debugging purposes ### Fixes - Non-react statics hoisting in `withDatabase()` - Fixed incorrect reference to `process`, which can break apps in some environments (e.g. webpack5) - [SQLite] [JSI] Fixed JSI mode when running on Hermes - Fixed a race condition when using standard fetch methods alongside `Collection.unsafeFetchRecordsWithSQL` - @jspizziri - withObservables shouldn't cause any RxJS issues anymore as it no longer imports RxJS - [Typescript] Added `onSetUpError` and `onIndexedDBFetchStart` fields to `LokiAdapterOptions`; fixes TS error - @3DDario - [Typescript] Removed duplicated identifiers `useWebWorker` and `useIncrementalIndexedDB` in `LokiAdapterOptions` - @3DDario - [Typescript] Fix default export in logger util ## 0.21 - 2021-03-24 ### BREAKING CHANGES - [LokiJS] `useWebWorker` and `useIncrementalIndexedDB` options are now required (previously, skipping them would only trigger a warning) ### New features - [Model] `Model.update` method now returns updated record - [adapters] `onSetUpError: Error => void` option is added to both `SQLiteAdapter` and `LokiJSAdapter`. Supply this option to catch initialization errors and offer the user to reload or log out - [LokiJS] new `extraLokiOptions` and `extraIncrementalIDBOptions` options - [Android] Autolinking is now supported. - If You upgrade to `<= v0.21.0` **AND** are on a version of React Native which supports Autolinking, you will need to remove the config manually linking WatermelonDB. - You can resolve this issue by **REMOVING** the lines of config from your project which are _added_ in the `Manual Install ONLY` section of the [Android Install docs](https://nozbe.github.io/WatermelonDB/Installation.html#android-react-native). ### Performance - [LokiJS] Improved performance of launching the app ### Changes - [LokiJS] `useWebWorker: true` and `useIncrementalIndexedDB: false` options are now deprecated. If you rely on these features, please file an issue! - [Sync] Optional `log` passed to sync now has more helpful diagnostic information - [Sync] Open-sourced a simple SyncLogger you can optionally use. See docs for more info. - [SQLiteAdapter] `synchronous:true` option is now deprecated and will be replaced with `experimentalUseJSI: true` in the future. Please test if your app compiles and works well with `experimentalUseJSI: true`, and if not - file an issue! - [LokiJS] Changed default autosave interval from 250 to 500ms - [Typescript] Add `experimentalNestedJoin` definition and `unsafeSqlExpr` clause ### Fixes - [LokiJS] Fixed a case where IndexedDB could get corrupted over time - [Resilience] Added extra diagnostics for when you encounter the `Record ID aa#bb was sent over the bridge, but it's not cached` error and a recovery path (LokiJSAdapter-only). Please file an issue if you encounter this issue! - [Typescript] Fixed type on OnFunction to accept `and` in join - [Typescript] Fixed type `database#batch(records)`'s argument `records` to accept mixed types ### Internal - Added an experimental mode where a broken database state is detected, further mutations prevented, and the user notified ## 0.20 - 2020-10-05 ### BREAKING CHANGES This release has unintentionally broken RxJS for some apps using `with-observables`. If you have this issue, please update `@nozbe/with-observables` to the latest version. ### New features - [Sync] Conflict resolution can now be customized. See docs for more details - [Android] Autolinking is now supported - [LokiJS] Adapter autosave option is now configurable ### Changes - Interal RxJS imports have been refactor such that rxjs-compat should never be used now - [Performance] Tweak Babel config to produce smaller code - [Performance] LokiJS-based apps will now take up to 30% less time to load the database (id and unique indicies are generated lazily) ### Fixes - [iOS] Fixed crash on database reset in apps linked against iOS 14 SDK - [LokiJS] Fix `Q.like` being broken for multi-line strings on web - Fixed warn "import cycle" from DialogProvider (#786) by @gmonte. - Fixed cache date as instance of Date (#828) by @djorkaeffalexandre. ## 0.19 - 2020-08-17 ### New features - [iOS] Added CocoaPods support - @leninlin - [NodeJS] Introducing a new SQLite Adapter based integration to NodeJS. This requires a peer dependency on [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) and should work with the same configuration as iOS/Android - @sidferreira - [Android] `exerimentalUseJSI` option has been enabled on Android. However, it requires some app-specific setup which is not yet documented - stay tuned for upcoming releases - [Schema] [Migrations] You can now pass `unsafeSql` parameters to schema builder and migration steps to modify SQL generated to set up the database or perform migrations. There's also new `unsafeExecuteSql` migration step. Please use this only if you know what you're doing — you shouldn't need this in 99% of cases. See Schema and Migrations docs for more details - [LokiJS] [Performance] Added experimental `onIndexedDBFetchStart` and `indexedDBSerializer` options to `LokiJSAdapter`. These can be used to improve app launch time. See `src/adapters/lokijs/index.js` for more details. ### Changes - [Performance] findAndObserve is now able to emit a value synchronously. By extension, this makes Relations put into withObservables able to render the child component in one shot. Avoiding the extra unnecessary render cycles avoids a lot of DOM and React commit-phase work, which can speed up loading some views by 30% - [Performance] LokiJS is now faster (refactored encodeQuery, skipped unnecessary clone operations) ## 0.18 - 2020-06-30 Another WatermelonDB release after just a week? Yup! And it's jam-packed full of features! ### New features - [Query] `Q.on` queries are now far more flexible. Previously, they could only be placed at the top level of a query. See Docs for more details. Now, you can: - Pass multiple conditions on the related query, like so: ```js collection.query(Q.on('projects', [Q.where('foo', 'bar'), Q.where('bar', 'baz')])) ``` - You can place `Q.on` deeper inside the query (nested inside `Q.and()`, `Q.or()`). However, you must explicitly list all tables you're joining on at the beginning of a query, using: `Q.experimentalJoinTables(['join_table1', 'join_table2'])`. - You can nest `Q.on` conditions inside `Q.on`, e.g. to make a condition on a grandchild. To do so, it's required to pass `Q.experimentalNestedJoin('parent_table', 'grandparent_table')` at the beginning of a query - [Query] `Q.unsafeSqlExpr()` and `Q.unsafeLokiExpr()` are introduced to allow adding bits of queries that are not supported by the WatermelonDB query language without having to use `unsafeFetchRecordsWithSQL()`. See docs for more details - [Query] `Q.unsafeLokiFilter((rawRecord, loki) => boolean)` can now be used as an escape hatch to make queries with LokiJSAdapter that are not otherwise possible (e.g. multi-table column comparisons). See docs for more details ### Changes - [Performance] [LokiJS] Improved performance of queries containing query comparisons on LokiJSAdapter - [Docs] Added Contributing guide for Query language improvements - [Deprecation] `Query.hasJoins` is deprecated - [DX] Queries with bad associations now show more helpful error message - [Query] Counting queries that contain `Q.experimentalTake` / `Q.experimentalSkip` is currently broken - previously it would return incorrect results, but now it will throw an error to avoid confusion. Please contribute to fix the root cause! ### Fixes - [Typescript] Fixed types of Relation ### Internal - `QueryDescription` structure has been changed. ## 0.17.1 - 2020-06-24 - Fixed broken iOS build - @mlecoq ## 0.17 - 2020-06-22 ### New features - [Sync] Introducing Migration Syncs - this allows fully consistent synchronization when migrating between schema versions. Previously, there was no mechanism to incrementally fetch all remote changes in new tables and columns after a migration - so local copy was likely inconsistent, requiring a re-login. After adopting migration syncs, Watermelon Sync will request from backend all missing information. See Sync docs for more details. - [iOS] Introducing a new native SQLite database integration, rewritten from scratch in C++, based on React Native's JSI (JavaScript Interface). It is to be considered experimental, however we intend to make it the default (and eventually, the only) implementation. In a later release, Android version will be introduced. The new adapter is up to 3x faster than the previously fastest `synchronous: true` option, however this speedup is only achieved with some unpublished React Native patches. To try out JSI, add `experimentalUseJSI: true` to `SQLiteAdapter` constructor. - [Query] Added `Q.experimentalSortBy(sortColumn, sortOrder)`, `Q.experimentalTake(count)`, `Q.experimentalSkip(count)` methods (only availble with SQLiteAdapter) - @Kenneth-KT - `Database.batch()` can now be called with a single array of models - [DX] `Database.get(tableName)` is now a shortcut for `Database.collections.get(tableName)` - [DX] Query is now thenable - you can now use `await query` and `await query.count` instead of `await query.fetch()` and `await query.fetchCount()` - [DX] Relation is now thenable - you can now use `await relation` instead of `await relation.fetch()` - [DX] Exposed `collection.db` and `model.db` as shortcuts to get to their Database object ### Changes - [Hardening] Column and table names starting with `__`, Object property names (e.g. `constructor`), and some reserved keywords are now forbidden - [DX] [Hardening] QueryDescription builder methods do tighter type checks, catching more bugs, and preventing users from unwisely passing unsanitized user data into Query builder methods - [DX] [Hardening] Adapters check early if table names are valid - [DX] Collection.find reports an error more quickly if an obviously invalid ID is passed - [DX] Intializing Database with invalid model classes will now show a helpful error - [DX] DatabaseProvider shows a more helpful error if used improperly - [Sync] Sync no longer fails if pullChanges returns collections that don't exist on the frontend - shows a warning instead. This is to make building backwards-compatible backends less error-prone - [Sync] [Docs] Sync documentation has been rewritten, and is now closer in detail to a formal specification - [Hardening] database.collections.get() better validates passed value - [Hardening] Prevents unsafe strings from being passed as column name/table name arguments in QueryDescription ### Fixes - [Sync] Fixed `RangeError: Maximum call stack size exceeded` when syncing large amounts of data - @leninlin - [iOS] Fixed a bug that could cause a database operation to fail with an (6) SQLITE_LOCKED error - [iOS] Fixed 'jsi/jsi.h' file not found when building at the consumer level. Added path `$(SRCROOT)/../../../../../ios/Pods/Headers/Public/React-jsi` to Header Search Paths (issue #691) - @victorbutler - [Native] SQLite keywords used as table or column names no longer crash - Fixed potential issues when subscribing to database, collection, model, queries passing a subscriber function with the same identity more than once ### Internal - Fixed broken adapter tests ## 0.15.1, 0.16.1-fix, 0.16.2 - 2020-06-03 This is a security patch for a vulnerability that could cause maliciously crafted record IDs to cause all or some of user's data to be deleted. More information available via GitHub security advisory ## 0.16.1 - 2020-05-18 ### Changes - `Database.unsafeResetDatabase()` is now less unsafe — more application bugs are being caught ### Fixes - [iOS] Fix build in apps using Flipper - [Typescript] Added type definition for `setGenerator`. - [Typescript] Fixed types of decorators. - [Typescript] Add Tests to test Types. - Fixed typo in learn-to-use docs. - [Typescript] Fixed types of changes. ### Internal - [SQLite] Infrastruture for a future JSI adapter has been added ## 0.16 - 2020-03-06 ### ⚠️ Breaking - `experimentalUseIncrementalIndexedDB` has been renamed to `useIncrementalIndexedDB` #### Low breakage risk - [adapters] Adapter API has changed from returning Promise to taking callbacks as the last argument. This won't affect you unless you call on adapter methods directly. `database.adapter` returns a new `DatabaseAdapterCompat` which has the same shape as old adapter API. You can use `database.adapter.underlyingAdapter` to get back `SQLiteAdapter` / `LokiJSAdapter` - [Collection] `Collection.fetchQuery` and `Collection.fetchCount` are removed. Please use `Query.fetch()` and `Query.fetchCount()`. ### New features - [SQLiteAdapter] [iOS] Add new `synchronous` option to adapter: `new SQLiteAdapter({ ..., synchronous: true })`. When enabled, database operations will block JavaScript thread. Adapter actions will resolve in the next microtask, which simplifies building flicker-free interfaces. Adapter will fall back to async operation when synchronous adapter is not available (e.g. when doing remote debugging) - [LokiJS] Added new `onQuotaExceededError?: (error: Error) => void` option to `LokiJSAdapter` constructor. This is called when underlying IndexedDB encountered a quota exceeded error (ran out of allotted disk space for app) This means that app can't save more data or that it will fall back to using in-memory database only Note that this only works when `useWebWorker: false` ### Changes - [Performance] Watermelon internals have been rewritten not to rely on Promises and allow some fetch/observe calls to resolve synchronously. Do not rely on this -- external API is still based on Rx and Promises and may resolve either asynchronously or synchronously depending on capabilities. This is meant as a internal performance optimization only for the time being. - [LokiJS] [Performance] Improved worker queue implementation for performance - [observation] Refactored observer implementations for performance ### Fixes - Fixed a possible cause for "Record ID xxx#yyy was sent over the bridge, but it's not cached" error - [LokiJS] Fixed an issue preventing database from saving when using `experimentalUseIncrementalIndexedDB` - Fixed a potential issue when using `database.unsafeResetDatabase()` - [iOS] Fixed issue with clearing database under experimental synchronous mode ### New features (Experimental) - [Model] Added experimental `model.experimentalSubscribe((isDeleted) => { ... })` method as a vanilla JS alternative to Rx based `model.observe()`. Unlike the latter, it does not notify the subscriber immediately upon subscription. - [Collection] Added internal `collection.experimentalSubscribe((changeSet) => { ... })` method as a vanilla JS alternative to Rx based `collection.changes` (you probably shouldn't be using this API anyway) - [Database] Added experimental `database.experimentalSubscribe(['table1', 'table2'], () => { ... })` method as a vanilla JS alternative to Rx-based `database.withChangesForTables()`. Unlike the latter, `experimentalSubscribe` notifies the subscriber only once after a batch that makes a change in multiple collections subscribed to. It also doesn't notify the subscriber immediately upon subscription, and doesn't send details about the changes, only a signal. - Added `experimentalDisableObserveCountThrottling()` to `@nozbe/watermelondb/observation/observeCount` that globally disables count observation throttling. We think that throttling on WatermelonDB level is not a good feature and will be removed in a future release - and will be better implemented on app level if necessary - [Query] Added experimental `query.experimentalSubscribe(records => { ... })`, `query.experimentalSubscribeWithColumns(['col1', 'col2'], records => { ... })`, and `query.experimentalSubscribeToCount(count => { ... })` methods ## 0.15 - 2019-11-08 ### Highlights This is a **massive** new update to WatermelonDB! 🍉 - **Up to 23x faster sync**. You heard that right. We've made big improvements to performance. In our tests, with a massive sync (first login, 45MB of data / 65K records) we got a speed up of: - 5.7s -> 1.2s on web (5x) - 142s -> 6s on iOS (23x) Expect more improvements in the coming releases! - **Improved LokiJS adapter**. Option to disable web workers, important Safari 13 fix, better performance, and now works in Private Modes. We recommend adding `useWebWorker: false, experimentalUseIncrementalIndexedDB: true` options to the `LokiJSAdapter` constructor to take advantage of the improvements, but please read further changelog to understand the implications of this. - **Raw SQL queries** now available on iOS and Android thanks to the community - **Improved TypeScript support** — thanks to the community ### ⚠️ Breaking - Deprecated `bool` schema column type is removed -- please change to `boolean` - Experimental `experimentalSetOnlyMarkAsChangedIfDiffers(false)` API is now removed ### New featuers - [Collection] Add `Collection.unsafeFetchRecordsWithSQL()` method. You can use it to fetch record using raw SQL queries on iOS and Android. Please be careful to avoid SQL injection and other pitfalls of raw queries - [LokiJS] Introduces new `new LokiJSAdapter({ ..., experimentalUseIncrementalIndexedDB: true })` option. When enabled, database will be saved to browser's IndexedDB using a new adapter that only saves the changed records, instead of the entire database. **This works around a serious bug in Safari 13** (https://bugs.webkit.org/show_bug.cgi?id=202137) that causes large databases to quickly balloon to gigabytes of temporary trash This also improves performance of incremental saves, although initial page load or very, very large saves might be slightly slower. This is intended to become the new default option, but it's not backwards compatible (if enabled, old database will be lost). **You're welcome to contribute an automatic migration code.** Note that this option is still experimental, and might change in breaking ways at any time. - [LokiJS] Introduces new `new LokiJSAdapter({ ..., useWebWorker: false })` option. Before, web workers were always used with `LokiJSAdapter`. Although web workers may have some performance benefits, disabling them may lead to lower memory consumption, lower latency, and easier debugging. YMMV. - [LokiJS] Added `onIndexedDBVersionChange` option to `LokiJSAdapter`. This is a callback that's called when internal IDB version changed (most likely the database was deleted in another browser tab). Pass a callback to force log out in this copy of the app as well. Note that this only works when using incrementalIDB and not using web workers - [Model] Add `Model._dangerouslySetRawWithoutMarkingColumnChange()` method. You probably shouldn't use it, but if you know what you're doing and want to live-update records from server without marking record as updated, this is useful - [Collection] Add `Collection.prepareCreateFromDirtyRaw()` - @json decorator sanitizer functions take an optional second argument, with a reference to the model ### Fixes - Pinned required `rambdax` version to 2.15.0 to avoid console logging bug. In a future release we will switch to our own fork of `rambdax` to avoid future breakages like this. ### Improvements - [Performance] Make large batches a lot faster (1.3s shaved off on a 65K insert sample) - [Performance] [iOS] Make large batch inserts an order of magnitude faster - [Performance] [iOS] Make encoding very large queries (with thousands of parameters) 20x faster - [Performance] [LokiJS] Make batch inserts faster (1.5s shaved off on a 65K insert sample) - [Performance] [LokiJS] Various performance improvements - [Performance] [Sync] Make Sync faster - [Performance] Make observation faster - [Performance] [Android] Make batches faster - Fix app glitches and performance issues caused by race conditions in `Query.observeWithColumns()` - [LokiJS] Persistence adapter will now be automatically selected based on availability. By default, IndexedDB is used. But now, if unavailable (e.g. in private mode), ephemeral memory adapter will be used. - Disabled console logs regarding new observations (it never actually counted all observations) and time to query/count/batch (the measures were wildly inaccurate because of asynchronicity - actual times are much lower) - [withObservables] Improved performance and debuggability (update withObservables package separately) - Improved debuggability of Watermelon -- shortened Rx stacks and added function names to aid in understanding call stacks and profiles - [adapters] The adapters interface has changed. `query()` and `count()` methods now receive a `SerializedQuery`, and `batch()` now takes `TableName` and `RawRecord` or `RecordId` instead of `Model`. - [Typescript] Typing improvements - Added 3 missing properties `collections`, `database` and `asModel` in Model type definition. - Removed optional flag on `actionsEnabled` in the Database constructor options since its mandatory since 0.13.0. - fixed several further typing issues in Model, Relation and lazy decorator - Changed how async functions are transpiled in the library. This could break on really old Android phones but shouldn't matter if you use latest version of React Native. Please report an issue if you see a problem. - Avoid `database` prop drilling in the web demo ## 0.14.1 - 2019-08-31 Hotfix for rambdax crash - [Schema] Handle invalid table schema argument in appSchema - [withObservables] Added TypeScript support ([changelog](https://github.com/Nozbe/withObservables/blob/master/CHANGELOG.md)) - [Electron] avoid `Uncaught ReferenceError: global is not defined` in electron runtime ([#453](https://github.com/Nozbe/WatermelonDB/issues/453)) - [rambdax] Replaces `contains` with `includes` due to `contains` deprecation https://github.com/selfrefactor/rambda/commit/1dc1368f81e9f398664c9d95c2efbc48b5cdff9b#diff-04c6e90faac2675aa89e2176d2eec7d8R2209 ## 0.14.0 - 2019-08-02 ### New features - [Query] Added support for `notLike` queries 🎉 - [Actions] You can now batch delete record with all descendants using experimental functions `experimentalMarkAsDeleted` or `experimentalDestroyPermanently` ## 0.13.0 - 2019-07-18 ### ⚠️ Breaking - [Database] It is now mandatory to pass `actionsEnabled:` option to Database constructor. It is recommended that you enable this option: ```js const database = new Database({ adapter: ..., modelClasses: [...], actionsEnabled: true }) ``` See `docs/Actions.md` for more details about Actions. You can also pass `false` to maintain backward compatibility, but this option **will be removed** in a later version - [Adapters] `migrationsExperimental` prop of `SQLiteAdapter` and `LokiJSAdapter` has been renamed to `migrations`. ### New features - [Actions] You can now batch deletes by using `prepareMarkAsDeleted` or `prepareDestroyPermanently` - [Sync] Performance: `synchronize()` no longer calls your `pushChanges()` function if there are no local changes to push. This is meant to save unnecessary network bandwidth. ⚠️ Note that this could be a breaking change if you rely on it always being called - [Sync] When setting new values to fields on a record, the field (and record) will no longer be marked as changed if the field's value is the same. This is meant to improve performance and avoid unnecessary code in the app. ⚠️ Note that this could be a breaking change if you rely on the old behavior. For now you can import `experimentalSetOnlyMarkAsChangedIfDiffers` from `@nozbe/watermelondb/Model/index` and call if with `(false)` to bring the old behavior back, but this will be removed in the later version -- create a new issue explaining why you need this - [Sync] Small perf improvements ### Improvements - [Typescript] Improved types for SQLite and LokiJS adapters, migrations, models, the database and the logger. ## 0.12.3 - 2019-05-06 ### Changes - [Database] You can now update the random id schema by importing `import { setGenerator } from '@nozbe/watermelondb/utils/common/randomId'` and then calling `setGenerator(newGenenerator)`. This allows WatermelonDB to create specific IDs for example if your backend uses UUIDs. - [Typescript] Type improvements to SQLiteAdapter and Database - [Tests] remove cleanup for react-hooks-testing-library@0.5.0 compatibility ## 0.12.2 - 2019-04-19 ### Fixes - [TypeScript] 'Cannot use 'in' operator to search for 'initializer'; decorator fix ### Changes - [Database] You can now pass falsy values to `Database.batch(...)` (false, null, undefined). This is useful in keeping code clean when doing operations conditionally. (Also works with `model.batch(...)`) - [Decorators]. You can now use `@action` on methods of any object that has a `database: Database` property, and `@field @children @date @relation @immutableRelation @json @text @nochange` decorators on any object with a `asModel: Model` property. - [Sync] Adds a temporary/experimental `_unsafeBatchPerCollection: true` flag to `synchronize()`. This causes server changes to be committed to database in multiple batches, and not one. This is NOT preferred for reliability and performance reasons, but it works around a memory issue that might cause your app to crash on very large syncs (>20,000 records). Use this only if necessary. Note that this option might be removed at any time if a better solution is found. ## 0.12.1 - 2019-04-01 ### ⚠️ Hotfix - [iOS] Fix runtime crash when built with Xcode 10.2 (Swift 5 runtime). **⚠️ Note**: You need to upgrade to React Native 0.59.3 for this to work. If you can't upgrade React Native yet, either stick to Xcode 10.1 or manually apply this patch: https://github.com/Nozbe/WatermelonDB/pull/302/commits/aa4e08ad0fa55f434da2a94407c51fc5ff18e506 ### Changes - [Sync] Adds basic sync logging capability to Sync. Pass an empty object to `synchronize()` to populate it with diagnostic information: ```js const log = {} await synchronize({ database, log, ...}) console.log(log.startedAt) ``` See Sync documentation for more details. ## 0.12.0 - 2019-03-18 ### Added - [Hooks] new `useDatabase` hook for consuming the Database Context: ```js import { useDatabase } from '@nozbe/watermelondb/hooks' const Component = () => { const database = useDatabase() } ``` - [TypeScript] added `.d.ts` files. Please note: TypeScript definitions are currently incomplete and should be used as a guide only. **PRs for improvements would be greatly appreciated!** ### Performance - Improved UI performance by consolidating multiple observation emissions into a single per-collection batch emission when doing batch changes ## 0.11.0 - 2019-03-12 ### Breaking - ⚠️ Potentially BREAKING fix: a `@date` field now returns a Jan 1, 1970 date instead of `null` if the field's raw value is `0`. This is considered a bug fix, since it's unexpected to receive a `null` from a getter of a field whose column schema doesn't say `isOptional: true`. However, if you relied on this behavior, this might be a breaking change. - ⚠️ BREAKING: `Database.unsafeResetDatabase()` now requires that you run it inside an Action ### Bug fixes - [Sync] Fixed an issue where synchronization would continue running despite `unsafeResetDatabase` being called - [Android] fix compile error for kotlin 1.3+ ### Other changes - Actions are now aborted when `unsafeResetDatabase()` is called, making reseting database a little bit safer - Updated demo dependencies - LokiJS is now a dependency of WatermelonDB (although it's only required for use on the web) - [Android] removed unused test class - [Android] updated ktlint to `0.30.0` ## 0.10.1 - 2019-02-12 ### Changes - [Android] Changed `compile` to `implementation` in Library Gradle file - ⚠️ might break build if you are using Android Gradle Plugin <3.X - Updated `peerDependency` `react-native` to `0.57.0` - [Sync] Added `hasUnsyncedChanges()` helper method - [Sync] Improved documentation for backends that can't distinguish between `created` and `updated` records - [Sync] Improved diagnostics / protection against edge cases - [iOS] Add missing `header search path` to support **ejected** expo project. - [Android] Fix crash on android < 5.0 - [iOS] `SQLiteAdapter`'s `dbName` path now allows you to pass an absolute path to a file, instead of a name - [Web] Add adaptive layout for demo example with smooth scrolling for iOS ## 0.10.0 - 2019-01-18 ### Breaking - **BREAKING:** Table column `last_modified` is no longer automatically added to all database tables. If you don't use this column (e.g. in your custom sync code), you don't have to do anything. If you do, manually add this column to all table definitions in your Schema: ``` { name: 'last_modified', type: 'number', isOptional: true } ``` **Don't** bump schema version or write a migration for this. ### New - **Actions API**. This was actually released in 0.8.0 but is now documented. With Actions enabled, all create/update/delete/batch calls must be wrapped in an Action. To use Actions, call `await database.action(async () => { /* perform writes here */ }`, and in Model instance methods, you can just decorate the whole method with `@action`. This is necessary for Watermelon Sync, and also to enable greater safety and consistency. To enable actions, add `actionsEnabled: true` to `new Database({ ... })`. In a future release this will be enabled by default, and later, made mandatory. See documentation for more details. - **Watermelon Sync Adapter** (Experimental) Added `synchronize()` function that allows you to easily add full synchronization capabilities to your Watermelon app. You only need to provide two fetch calls to your remote server that conforms to Watermelon synchronization protocol, and all the client-side processing (applying remote changes, resolving conflicts, finding local changes, and marking them as synced) is done by Watermelon. See documentation for more details. - **Support caching for non-global IDs at Native level** ## 0.9.0 - 2018-11-23 ### New - Added `Q.like` - you can now make queries similar to SQL `LIKE` ## 0.8.0 - 2018-11-16 ### New - Added `DatabaseProvider` and `withDatabase` Higher-Order Component to reduce prop drilling - Added experimental Actions API. This will be documented in a future release. ### Fixes - Fixes crash on older Android React Native targets without `jsc-android` installed ## 0.7.0 - 2018-10-31 ### Deprecations - [Schema] Column type 'bool' is deprecated — change to 'boolean' ### New - Added support for Schema Migrations. See documentation for more details. - Added fundaments for integration of Danger with Jest ### Changes - Fixed "dependency cycle" warning - [SQLite] Fixed rare cases where database could be left in an unusable state (added missing transaction) - [Flow] Fixes `oneOf()` typing and some other variance errors - [React Native] App should launch a little faster, because schema is only compiled on demand now - Fixed typos in README.md - Updated Flow to 0.85 ## 0.6.2 - 2018-10-04 ### Deprecations - The `@nozbe/watermelondb/babel/cjs` / `@nozbe/watermelondb/babel/esm` Babel plugin that ships with Watermelon is deprecated and no longer necessary. Delete it from your Babel config as it will be removed in a future update ### Refactoring - Removed dependency on `async` (Web Worker should be ~30KB smaller) - Refactored `Collection` and `simpleObserver` for getting changes in an array and also adds CollectionChangeTypes for differentiation between different changes - Updated dependencies - Simplified build system by using relative imports - Simplified build package by outputting CJS-only files ## 0.6.1 - 2018-09-20 ### Added - Added iOS and Android integration tests and lint checks to TravisCI ### Changed - Changed Flow setup for apps using Watermelon - see docs/Advanced/Flow.md - Improved documentation, and demo code - Updated dependencies ### Fixed - Add quotes to all names in sql queries to allow keywords as table or column names - Fixed running model tests in apps with Watermelon in the loop - Fixed Flow when using Watermelon in apps ## 0.6.0 - 2018-09-05 Initial release of WatermelonDB ================================================ FILE: CONTRIBUTING.md ================================================ We need you **WatermelonDB is an open-source project and it needs your help to thrive!** If there's a missing feature, a bug, or other improvement you'd like, we encourage you to contribute! Feel free to open an issue to get some guidance and see [Contributing guide](./CONTRIBUTING.md) for details about project setup, testing, etc. If you're just getting started, see [good first issues](https://github.com/Nozbe/WatermelonDB/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) that are easy to contribute to. If you make a non-trivial contribution, email me, and I'll send you a nice 🍉 sticker! If you make or are considering making an app using WatermelonDB, please let us know!
## Before you send a pull request 1. Did you add or changed some functionality? Add (or modify) tests! 2. Check if the automated tests pass ```bash yarn ci:check ``` 3. Format the files you changed ```bash yarn prettier ``` 4. Mark your changes in CHANGELOG Put a one-line description of your change under Added/Changed section. See [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Running Watermelon in development ### Download source and dependencies ```bash git clone https://github.com/Nozbe/WatermelonDB.git cd WatermelonDB yarn ``` ### Developing Watermelon alongside your app To work on Watermelon code in the sandbox of your app: ```bash yarn dev ``` This will create a `dev/` folder in Watermelon and observe changes to source files (only JavaScript files) and recompile them as needed. Then in your app: ```bash cd node_modules/@nozbe rm -fr watermelondb ln -s path-to-watermelondb/dev watermelondb ``` **This will work in Webpack but not in Metro** (React Native). Metro doesn't follow symlinks. Instead, you can compile WatermelonDB directly to your project: ```bash DEV_PATH="/path/to/your/app/node_modules/@nozbe/watermelondb" yarn dev ``` ### Running tests This runs Jest, ESLint and Flow: ```bash yarn ci:check ``` You can also run them separately: ```bash yarn test yarn eslint yarn flow ``` ### Editing files We recommend VS Code with ESLint, Flow, and Prettier (with prettier-eslint enabled) plugins for best development experience. (To see lint/type issues inline + have automatic reformatting of code) ## Editing native code In `native/ios` and `native/android` you'll find the native bridge code for React Native. It's recommended to use the latest stable version of Xcode / Android Studio to work on that code. ### Integration tests If you change native bridge code or `adapter/sqlite` code, it's recommended to run integration tests that run the entire Watermelon code with SQLite and React Native in the loop: ```bash yarn test:ios yarn test:android ``` ### Running tests manualy - For iOS open the `native/iosTest/WatermelonTester.xcworkspace` project and hit Cmd+U. - For Android open `native/androidTest` in AndroidStudio navigate to `app/src/androidTest/java/com.nozbe.watermelonTest/BridgeTest` and click green arrow near `class BridgeTest` ### Native linting Make sure the native code you're editing conforms to Watermelon standards: ```bash yarn ktlint ``` ### Native code troubleshooting 1. If `test:ios` fails in terminal: - Run tests in Xcode first before running from terminal - Make sure you have the right version of Xcode CLI tools set in Preferences -> Locations 1. Make sure you're on the most recent stable version of Xcode / Android Studio 1. Remove native caches: - Xcode: `~/Library/Developer/Xcode/DerivedData`: - Android: `.gradle` and `build` folders in `native/android` and `native/androidTest` - `node_modules` (because of React Native precompiled third party libraries) ================================================ FILE: Gemfile ================================================ source 'https://rubygems.org' ruby ">= 2.6.10" gem 'pry' # Cocoapods 1.15 introduced a bug which break the build. (RN 0.72) We will remove the upper # bound in the template on Cocoapods with next React Native release. gem 'cocoapods', '>= 1.13', '< 1.15' gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' # temporary? gem 'xcodeproj', '< 1.26.0' # NOTE: TEMPORARY, for darwin-arm64 compatibility gem 'ffi', '>1.14.2' gem 'ethon', git: 'https://github.com/radex/ethon.git', ref: '301517d087830569985eb3945fa5a6c74866863f' ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) Nozbe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

WatermelonDB

A reactive database framework

Build powerful React and React Native apps that scale from hundreds to tens of thousands of records and remain fast ⚡️

MIT License npm Gurubase

| | WatermelonDB | | - | ------------ | | ⚡️ | **Launch your app instantly** no matter how much data you have | | 📈 | **Highly scalable** from hundreds to tens of thousands of records | | 😎 | **Lazy loaded**. Only load data when you need it | | 🔄 | **Offline-first.** [Sync](https://watermelondb.dev/docs/Sync/Intro) with your own backend | | 📱 | **Multiplatform**. iOS, Android, Windows, web, and Node.js | | ⚛️ | **Optimized for React.** Easily plug data into components | | 🧰 | **Framework-agnostic.** Use JS API to plug into other UI frameworks | | ⏱ | **Fast.** And getting faster with every release! | | ✅ | **Proven.** Powers [Nozbe](https://nozbe.com/teams) since 2017 (and [many others](#who-uses-watermelondb)) | | ✨ | **Reactive.** (Optional) [RxJS](https://github.com/ReactiveX/rxjs) API | | 🔗 | **Relational.** Built on rock-solid [SQLite](https://www.sqlite.org) foundation | | ⚠️ | **Static typing** with [Flow](https://flow.org) or [TypeScript](https://typescriptlang.org) | ## Why Watermelon? **WatermelonDB** is a new way of dealing with user data in React Native and React web apps. It's optimized for building **complex applications** in React Native, and the number one goal is **real-world performance**. In simple words, _your app must launch fast_. For simple apps, using Redux or MobX with a persistence adapter is the easiest way to go. But when you start scaling to thousands or tens of thousands of database records, your app will now be slow to launch (especially on slower Android devices). Loading a full database into JavaScript is expensive! Watermelon fixes it **by being lazy**. Nothing is loaded until it's requested. And since all querying is performed directly on the rock-solid [SQLite database](https://www.sqlite.org/index.html) on a separate native thread, most queries resolve in an instant. But unlike using SQLite directly, Watermelon is **fully observable**. So whenever you change a record, all UI that depends on it will automatically re-render. For example, completing a task in a to-do app will re-render the task component, the list (to reorder), and all relevant task counters. [**Learn more**](https://www.youtube.com/watch?v=UlZ1QnFF4Cw). | React Native EU: Next-generation React Databases | | ---- | |

📺 Next-generation React databases
(a talk about WatermelonDB)

| ## Usage **Quick (over-simplified) example:** an app with posts and comments. First, you define Models: ```js class Post extends Model { @field('name') name @field('body') body @children('comments') comments } class Comment extends Model { @field('body') body @field('author') author } ``` Then, you connect components to the data: ```js const Comment = ({ comment }) => ( {comment.body} — by {comment.author} ) // This is how you make your app reactive! ✨ const enhance = withObservables(['comment'], ({ comment }) => ({ comment, })) const EnhancedComment = enhance(Comment) ``` And now you can render the whole Post: ```js const Post = ({ post, comments }) => ( {post.name} Comments: {comments.map(comment => )} ) const enhance = withObservables(['post'], ({ post }) => ({ post, comments: post.comments })) ``` The result is fully reactive! Whenever a post or comment is added, changed, or removed, the right components **will automatically re-render** on screen. Doesn't matter if a change occurred in a totally different part of the app, it all just works out of the box! ### ➡️ **Learn more:** [see full documentation](https://nozbe.github.io/WatermelonDB/) ## Who uses WatermelonDB Nozbe Teams
CAPMO
Mattermost
Rocket Chat
Steady
Aerobotics
Smash Appz
HaloGo
SportsRecruits
Chatable
Todorant
Blast Workout
Dayful
Learn The Words
ezypack
_Does your company or app use 🍉? Open a pull request and add your logo/icon with link here!_ ## Contributing We need you **WatermelonDB is an open-source project and it needs your help to thrive!** If there's a missing feature, a bug, or other improvement you'd like, we encourage you to contribute! Feel free to open an issue to get some guidance and see [Contributing guide](./CONTRIBUTING.md) for details about project setup, testing, etc. If you're just getting started, see [good first issues](https://github.com/Nozbe/WatermelonDB/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) that are easy to contribute to. If you make a non-trivial contribution, email me, and I'll send you a nice 🍉 sticker! If you make or are considering making an app using WatermelonDB, please let us know! ## Author and license **WatermelonDB** was created by [@Nozbe](https://github.com/Nozbe). **WatermelonDB's** main author and maintainer is [Radek Pietruszewski](https://github.com/radex) ([website](https://radex.io) ⋅ [𝕏 (Twitter)](https://twitter.com/radexp)) [See all contributors](https://github.com/Nozbe/WatermelonDB/graphs/contributors). WatermelonDB is available under the MIT license. See the [LICENSE file](https://github.com/Nozbe/WatermelonDB/LICENSE) for more info. ================================================ FILE: SECURITY.md ================================================ # Reporting Security Issues If you believe you've found a security vulnerability in WatermelonDB, let us know right away. More details on how to responsibly disclose issues: https://nozbe.com/bug-bounty/ ## How WatermelonDB reports security vulnerabilities If vulnerabilities are found, we'll post security advisories via GitHub once a confirmed patch is available. We may choose to send a heads-up to a select list of higher-profile projects/organizations to alert them about a vulnerability before the public. Inclusion into this list is entirely at our own discretion. If we do send a heads-up before a public patch, we'll include the least amount of detail possible - only enough to work around an issue. If we determine that it's in the best interest of all WatermelonDB users, we may choose to advise users to update to a new version of WatermelonDB or apply a workaround without revealing all details about the vulnerability. This may happen if we believe there's a very serious issue that's easy to patch but difficult to discover. If we do so, we will post a detailed explanation after a few weeks. ================================================ FILE: WatermelonDB.podspec ================================================ require "json" package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) Pod::Spec.new do |s| s.name = "WatermelonDB" s.version = package["version"] s.summary = package["description"] s.description = package["description"] s.homepage = package["homepage"] s.license = package["license"] s.author = { "author" => package["author"] } s.platforms = { :ios => "12.0", :tvos => "12.0" } s.source = { :git => "https://github.com/Nozbe/WatermelonDB.git", :tag => "v#{s.version}" } s.source_files = "native/ios/**/*.{h,m,mm,swift,c,cpp}", "native/shared/**/*.{h,c,cpp}" s.public_header_files = [ # FIXME: I don't think we should be exporting all headers as public # (although that is CocoaPods default behavior) # but this is needed for WatermelonDB to work in use_frameworks! mode # 'native/ios/**/*.h', 'native/ios/WatermelonDB/JSIInstaller.h', 'native/ios/WatermelonDB/WatermelonDB.h', ] s.pod_target_xcconfig = { # FIXME: This is a workaround for broken build in use_frameworks mode # I don't think this is a correct fix, but… seems to work? # 'OTHER_SWIFT_FLAGS' => '-Xcc -Wno-error=non-modular-include-in-framework-module' } s.requires_arc = true # simdjson is annoyingly slow without compiler optimization, disable for debugging s.compiler_flags = '-Os' s.dependency "React" s.libraries = 'sqlite3' # NOTE: This dependency doesn't seem to be needed anymore (tested on RN 0.66, 0.71), file an issue # if this causes issues for you # s.dependency "React-jsi" # NOTE: NPM-vendored @nozbe/simdjson must be used, not the CocoaPods version s.dependency "simdjson" end ================================================ FILE: babel.config.js ================================================ const plugins = [ [ '@babel/plugin-transform-runtime', { helpers: true, // regenerator: true, }, ], [ '@babel/plugin-transform-modules-commonjs', { loose: true, // improves speed & code size; unlikely to be a problem strict: false, strictMode: true, allowTopLevelThis: true, // this would improve speed&code size but breaks 3rd party code. can we apply it to our paths only? // (same with struct: true) // noInterop: true, }, ], ['@babel/plugin-proposal-decorators', { legacy: true }], '@babel/plugin-transform-flow-strip-types', ['@babel/plugin-proposal-class-properties', { loose: true }], [ '@babel/plugin-transform-classes', { loose: true, // spits out cleaner and faster output }, ], '@babel/plugin-syntax-dynamic-import', '@babel/plugin-transform-block-scoping', '@babel/plugin-proposal-json-strings', '@babel/plugin-proposal-unicode-property-regex', // See http://incaseofstairs.com/six-speed/ for speed comparison between native and transpiled ES6 '@babel/plugin-proposal-optional-chaining', ['@babel/plugin-proposal-private-methods', { loose: true }], '@babel/plugin-transform-template-literals', '@babel/plugin-transform-literals', '@babel/plugin-transform-function-name', '@babel/plugin-transform-arrow-functions', '@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-transform-shorthand-properties', '@babel/plugin-transform-spread', [ '@babel/plugin-proposal-object-rest-spread', { // use fast Object.assign loose: true, }, ], '@babel/plugin-transform-react-jsx', [ '@babel/plugin-transform-computed-properties', { // 2-3x faster, unlikely to be an issue loose: true, }, ], '@babel/plugin-transform-sticky-regex', '@babel/plugin-transform-unicode-regex', // TODO: fast-async is faster and cleaner, but causes a weird issue on older Android RN targets without jsc-android // '@babel/plugin-transform-async-to-generator', [ // TODO: We can get this faster by tweaking with options, but have to test thoroughly... 'module:fast-async', { spec: true, }, ], ] module.exports = { env: { development: { plugins, }, production: { plugins: [ ...plugins, 'minify-flip-comparisons', 'minify-guarded-expressions', 'minify-dead-code-elimination', ], }, test: { plugins: [...plugins, '@babel/plugin-syntax-jsx'], }, }, } ================================================ FILE: docs-website/.gitignore ================================================ # Dependencies /node_modules # Production /build # Generated files .docusaurus .cache-loader # Misc .DS_Store .env.local .env.development.local .env.test.local .env.production.local npm-debug.log* yarn-debug.log* yarn-error.log* ================================================ FILE: docs-website/README.md ================================================ # Website This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. ### Installation ``` $ yarn ``` ### Local Development ``` $ yarn start ``` This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. ### Build ``` $ yarn build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. ### Deployment Using SSH: ``` $ USE_SSH=true yarn deploy ``` Not using SSH: ``` $ GIT_USER= yarn deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. ================================================ FILE: docs-website/babel.config.js ================================================ module.exports = { presets: [require.resolve('@docusaurus/core/lib/babel/preset')], }; ================================================ FILE: docs-website/blog/2021-08-01-mdx-blog-post.mdx ================================================ --- slug: mdx-blog-post title: MDX Blog Post authors: [radex] tags: [docusaurus] --- Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). :::tip Use the power of React to create interactive blog posts. ```js ``` ::: ================================================ FILE: docs-website/blog/authors.yml ================================================ radex: name: Radek Pietruszewski title: Maintainer of WatermelonDB url: https://github.com/radex image_url: https://avatars.githubusercontent.com/u/183747?v=4 ================================================ FILE: docs-website/docs/docs/Advanced/AdvancedFields.md ================================================ # Advanced Fields ## `@json` If you have a lot of metadata about a record (say, an object with many keys, or an array of values), you can use a `@json` field to contain that information in a single string column (serialized to JSON) instead of adding multiple columns or a relation to another table. ⚠️ This is an advanced feature that comes with downsides — make sure you really need it First, add a string column to [the schema](../Schema.md): ```js tableSchema({ name: 'comments', columns: [ { name: 'reactions', type: 'string' }, // You can add isOptional: true, if appropriate ], }) ``` Then in the Model definition: ```js import { json } from '@nozbe/watermelondb/decorators' class Comment extends Model { // ... @json('reactions', sanitizeReactions) reactions } ``` Now you can set complex JSON values to a field: ```js comment.update(() => { comment.reactions = ['up', 'down', 'down'] }) ``` As the second argument, pass a **sanitizer function**. This is a function that receives whatever `JSON.parse()` returns for the serialized JSON, and returns whatever type you expect in your app. In other words, it turns raw, dirty, untrusted data (that might be missing, or malformed by a bug in previous version of the app) into trusted format. The sanitizer might also receive `null` if the column is nullable, or `undefined` if the field doesn't contain valid JSON. For example, if you need the field to be an array of strings, you can ensure it like so: ```js const sanitizeReactions = rawReactions => { return Array.isArray(rawReactions) ? rawReactions.map(String) : [] } ``` If you don't want to sanitize JSON, pass an identity function: ```js const sanitizeReactions = json => json ``` The sanitizer function takes an optional second argument, which is a reference to the model. This is useful is your sanitization logic depends on the other fields in the model. **Warning about JSON fields**: JSON fields go against relational, lazy nature of Watermelon, because **you can't query or count by the contents of JSON fields**. If you need or might need in the future to query records by some piece of data, don't use JSON. Only use JSON fields when you need the flexibility of complex freeform data, or the speed of having metadata without querying another table, and you are sure that you won't need to query by those metadata. ## `@nochange` For extra protection, you can mark fields as `@nochange` to ensure they can't be modified. Always put `@nochange` before `@field` / `@date` / `@text` ```js import { field, nochange } from '@nozbe/watermelondb/decorators' class User extends Model { // ... @nochange @field('is_owner') isOwner } ``` `user.isOwner` can only be set in the `collection.create()` block, but will throw an error if you try to set a new value in `user.update()` block. ### `@readonly` Similar to `@nochange`, you can use the `@readonly` decorator to ensure a field cannot be set at all. Use this for [create/update tracking](./CreateUpdateTracking.md), but it might also be useful if you use Watermelon with a [Sync engine](../Sync/Intro.md) and a field can only be set by the server. ## Custom observable fields You're in advanced [RxJS](https://github.com/ReactiveX/rxjs) territory now! You have been warned. Say, you have a Post model that has many Comments. And a Post is considered to be "popular" if it has more than 10 comments. You can add a "popular" badge to a Post component in two ways. One is to simply observe how many comments there are [in the component](../Components.md): ```js const enhance = withObservables(['post'], ({ post }) => ({ post: post.observe(), commentCount: post.comments.observeCount() })) ``` And in the `render` method, if `props.commentCount > 10`, show the badge. Another way is to define an observable property on the Model layer, like so: ```js import { distinctUntilChanged, map as map$ } from 'rxjs/operators' import { lazy } from '@nozbe/watermelondb/decorators' class Post extends Model { @lazy isPopular = this.comments.observeCount().pipe( map$(comments => comments > 10), distinctUntilChanged() ) } ``` And then you can directly connect this to the component: ```js const enhance = withObservables(['post'], ({ post }) => ({ isPopular: post.isPopular, })) ``` `props.isPopular` will reflect whether or not the Post is popular. Note that this is fully observable, i.e. if the number of comments rises above/falls below the popularity threshold, the component will re-render. Let's break it down: - `this.comments.observeCount()` - take the Observable number of comments - `map$(comments => comments > 10)` - transform this into an Observable of boolean (popular or not) - `distinctUntilChanged()` - this is so that if the comment count changes, but the popularity doesn't (it's still below/above 10), components won't be unnecessarily re-rendered - `@lazy` - also for performance (we only define this Observable once, so we can re-use it for free) Let's make this example more complicated. Say the post is **always** popular if it's marked as starred. So if `post.isStarred`, then we don't have to do unnecessary work of fetching comment count: ```js import { of as of$ } from 'rxjs/observable/of' import { distinctUntilChanged, map as map$ } from 'rxjs/operators' import { lazy } from '@nozbe/watermelondb/decorators' class Post extends Model { @lazy isPopular = this.observe().pipe( distinctUntilKeyChanged('isStarred'), switchMap(post => post.isStarred ? of$(true) : this.comments.observeCount().pipe(map$(comments => comments > 10)) ), distinctUntilChanged(), ) } ``` - `this.observe()` - if the Post changes, it might change its popularity status, so we observe it - `this.comments.observeCount().pipe(map$(comments => comments > 10))` - this part is the same, but we only observe it if the post is starred - `switchMap(post => post.isStarred ? of$(true) : ...)` - if the post is starred, we just return an Observable that emits `true` and never changes. - `distinctUntilKeyChanged('isStarred')` - for performance, so that we don't re-subscribe to comment count Observable if the post changes (only if the `isStarred` field changes) - `distinctUntilChanged()` - again, don't emit new values, if popularity doesn't change ================================================ FILE: docs-website/docs/docs/Advanced/CreateUpdateTracking.md ================================================ --- title: Automatic create/update tracking hide_title: true --- # Create/Update tracking You can add per-table support for create/update tracking. When you do this, the Model will have information about when it was created, and when it was last updated. :warning: **Note:** WatermelonDB automatically sets and persists the `created_at`/`updated_at` fields if they are present as _millisecond_ epoch's. If you intend to interact with these properties in any way you should always treat them as such. ### When to use this **Use create tracking**: - When you display to the user when a thing (e.g. a Post, Comment, Task) was created - If you sort created items chronologically (Note that Record IDs are random strings, not auto-incrementing integers, so you need create tracking to sort chronologically) **Use update tracking**: - When you display to the user when a thing (e.g. a Post) was modified **Notes**: - you _don't have to_ enable both create and update tracking. You can do either, both, or none. - In your model, these fields need to be called createdAt and updatedAt respectively. ### How to do this **Step 1:** Add to the [schema](../Schema.md): ```js tableSchema({ name: 'posts', columns: [ // other columns { name: 'created_at', type: 'number' }, { name: 'updated_at', type: 'number' }, ] }), ``` **Step 2:** Add this to the Model definition: ```js import { date, readonly } from '@nozbe/watermelondb/decorators' class Post extends Model { // ... @readonly @date('created_at') createdAt @readonly @date('updated_at') updatedAt } ``` Again, you can add just `created_at` column and field if you don't need update tracking. ### How this behaves If you have the magic `createdAt` field defined on the Model, the current timestamp will be set when you first call `collection.create()` or `collection.prepareCreate()`. It will never be modified again. If the magic `updatedAt` field is also defined, then after creation, `model.updatedAt` will have the same value as `model.createdAt`. Then every time you call `model.update()` or `model.prepareUpdate()`, `updatedAt` will be changed to the current timestamp. ================================================ FILE: docs-website/docs/docs/Advanced/Flow.md ================================================ --- title: Flow hide_title: true --- # Watermelon ❤️ Flow Watermelon was developed with [Flow](https://flow.org) in mind. If you're a Flow user yourself (and we highly recommend it!), here's some things you need to keep in mind: ## Setup Add this to your `.flowconfig` file so that Flow can see Watermelon's types. ```ini [declarations] /node_modules/@nozbe/watermelondb/.* [options] module.name_mapper='^@nozbe/watermelondb\(.*\)$' -> '/node_modules/@nozbe/watermelondb/src\1' ``` Note that this won't work if you put the entire `node_modules/` folder under the `[ignore]` section. In that case, change it to only ignore the specific node modules that throw errors in your app, so that Flow can scan Watermelon files. ## Tables and columns Table and column names are **opaque types** in Flow. So if you try to use simple strings, like so: ```js class Comment extends Model { static table = 'comments' @text('body') body } ``` You'll get errors, because you're passing `'comments'` (a `string`) where `TableName` is expected, and `'body'` (again, a `string`) where `ColumnName` is expected. When using Watermelon with Flow, you must pre-define all your table and column names in one place, then only use those symbols (and not strings) in all other places. We recommend defining symbols like this: ```js // File: model/schema.js // @flow import { tableName, columnName, type TableName, appSchema, tableSchema } from '@nozbe/watermelondb' import type Comment from './Comment.js' export const Tables = { comments: (tableName('comments'): TableName), // ... } export const Columns = { comments: { body: columnName('body'), // ... } } export const appSchema = appSchema({ version: 1, tables: [ tableSchema({ name: Tables.comments, columns: [ { name: Columns.comments.body, type: 'string' }, ], }), // ... ] }) ``` And then using them like so: ```js // File: model/Comment.js // @flow import { Model } from '@nozbe/watermelondb' import { text } from '@nozbe/watermelondb/decorators' import { Tables, Columns } from './schema.js' const Column = Columns.comments export default class Comment extends Model { static table = Tables.comments @text(Column.body) body: string } ``` ### But isn't that a lot of boilerplate? Yes, it looks more boilerplate'y than the non-Flow examples, however: - you're protected from typos — strings are defined once - easier refactoring — you only change column name in one place - no orphan columns or tables — no way to accidentally refer to a column or table that was removed from the schema - `TableName` is typed with the model class it refers to, which allows Flow to find other mistakes in your code In general, we find that untyped string constants lead to bugs, and defining typed constants is a good practice. ### associations When using Flow, you define model associations like this: ```js import { Model, associations } from '@nozbe/watermelondb' import { Tables, Columns } from './schema.js' const Column = Columns.posts class Post extends Model { static table = Tables.posts static associations = associations( [Tables.comments, { type: 'has_many', foreignKey: Columns.comments.postId }], [Tables.users, { type: 'belongs_to', key: Column.authorId }], ) } ``` ## Common types Many types are tagged with the model class the type refers to: ```js TableName // a table name referring to posts Collection // the Collection for posts Relation // a relation that can fetch a Comment Relation // a relation that can fetch a Comment or `null` Query // a query that can fetch many Comments ``` Always mark the type of model fields. Remember to include `?` if the underlying table column is optional. Flow can't check if model fields match the schema or if they match the decorator's signature. ```js @text(Column.body) body: string @date(Column.createdAt) createdAt: Date @date(Column.archivedAt) archivedAt: ?Date ``` If you need to refer to an ID of a record, always use the `RecordId` type alias, not `string` (they're the same, but the former is self-documenting). If you ever access the record's raw data (DON'T do that unless you *really* know what you're doing), use `DirtyRaw` to refer to raw data from external sources (database, server), and `RawRecord` after it was passed through `sanitizedRaw`. ================================================ FILE: docs-website/docs/docs/Advanced/LocalStorage.md ================================================ --- title: LocalStorage hide_title: true --- # Local storage WatermelonDB has a simple key/value store, similar to [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage): ```js // setting a value await database.localStorage.set("user_id", "abcdef") // retrieving a value const userId = await database.localStorage.get("user_id") // string or undefined if no value for this key // removing a value await database.localStorage.remove("user_id") ``` **When to use it**. For things like the ID of the logged-in user, or the route to the last-viewed screen in the app. You should generally avoid it and stick to standard Watermelon records. **This is a low-level API**. You can't do things like observe changes of a value over time. If you need that, just use standard WatermelonDB records. You can only store JSON-serializable values **What to be aware of**. DO NOT let the local storage key be a user-supplied value. Only allow predefined/whitelisted keys. Key names starting with `__` are reserved for WatermelonDB use (e.g. used by Sync to remember time of last sync) **Why not use localStorage/AsyncStorage?** Because this way, you have only one source of truth — one database that, say, stores the logged-in user ID and the information about all users. So there's a lower risk that the two sets of values get out of sync. ================================================ FILE: docs-website/docs/docs/Advanced/Logging.md ================================================ # Logging By default, Watermelon ships with basic logging enabled that may be useful for debugging. When the application is started, basic information about the location and setup of the database will be logged. As each query is executed, timing information will be logged. ## Disabling logging Disabling all logging is simple. Before your app starts, typically in your `database.js` file, import the logger and silence it: ```js import logger from '@nozbe/watermelondb/utils/common/logger'; logger.silence(); ``` ## Overriding logging behavior > **Note**: This class is not yet formally documented and its specifications may change. This method is for advanced users only, with > some tolerance for potential breaking changes in the future. The logger is a singleton instance of the Logger class, which exposes three methods: `log()`, `warn()`, and `error()`. Advanced users may monkey-patch the logger methods to change their behavior, such as to route messages to an alternate logger: ```js import Cabin from 'cabin'; import logger from '@nozbe/watermelondb/utils/common/logger'; const cabin = new Cabin(); logger.log = (...messages) => cabin.info(...messages); logger.warn = (...messages) => cabin.error(...messages); logger.error = (...messages) => cabin.error(...messages); ``` ================================================ FILE: docs-website/docs/docs/Advanced/Migrations.md ================================================ # Migrations **Schema migrations** is the mechanism by which you can add new tables and columns to the database in a backward-compatible way. Without migrations, if a user of your app upgrades from one version to another, their local database will be cleared at launch, and they will lose all their data. ⚠️ Always use migrations! ## Migrations setup 1. Add a new file for migrations: ```js // app/model/migrations.js import { schemaMigrations } from '@nozbe/watermelondb/Schema/migrations' export default schemaMigrations({ migrations: [ // We'll add migration definitions here later ], }) ``` 2. Hook up migrations to the Database adapter setup: ```js // index.js import migrations from 'model/migrations' const adapter = new SQLiteAdapter({ schema: mySchema, migrations, }) ``` ## Migrations workflow When you make schema changes when you use migrations, be sure to do this in this specific order, to minimize the likelihood of making an error. ### Step 1: Add a new migration First, define the migration - that is, define the **change** that occurs between two versions of schema (such as adding a new table, or a new table column). Don't change the schema file yet! ```js // app/model/migrations.js import { schemaMigrations, createTable } from '@nozbe/watermelondb/Schema/migrations' export default schemaMigrations({ migrations: [ { // ⚠️ Set this to a number one larger than the current schema version toVersion: 2, steps: [ // See "Migrations API" for more details createTable({ name: 'comments', columns: [ { name: 'post_id', type: 'string', isIndexed: true }, { name: 'body', type: 'string' }, ], }), ], }, ], }) ``` Refresh your simulator/browser. You should see this error: > Migrations can't be newer than schema. Schema is version 1 and migrations cover range from 1 to 2 If so, good, move to the next step! But you might also see an error like "Missing table name in schema", which means you made an error in defining migrations. See ["Migrations API" below](#migrations-api) for details. ### Step 2: Make matching changes in schema Now it's time to make the actual changes to the schema file — add the same tables or columns as in your migration definition ⚠️ Please double and triple check that your changes to schema match exactly the change you defined in the migration. Otherwise you risk that the app will work when the user migrates, but will fail if it's a fresh install — or vice versa. ⚠️ Don't change the schema version yet ```js // model/schema.js export default appSchema({ version: 1, tables: [ // This is our new table! tableSchema({ name: 'comments', columns: [ { name: 'post_id', type: 'string', isIndexed: true }, { name: 'body', type: 'string' }, ], }), // ... ] }) ``` Refresh the simulator. You should again see the same "Migrations can't be newer than schema" error. If you see a different error, you made a syntax error. ### Step 3: Bump schema version Now that we made matching changes in the schema (source of truth about tables and columns) and migrations (the change in tables and columns), it's time to commit the change by bumping the version: ```js // model/schema.js export default appSchema({ version: 2, tables: [ // ... ] }) ``` If you refresh again, your app should show up without issues — but now you can use the new tables/columns ### Step 4: Test your migrations Before shipping a new version of the app, please check that your database changes are all compatible: 1. Migrations test: Install the previous version of your app, then update to the version you're about to ship, and make sure it still works 2. Fresh schema install test: Remove the app, and then install the _new_ version of the app, and make sure it works ### Why is this order important It's simply because React Native simulator (and often React web projects) are configured to automatically refresh when you save a file. You don't want the database to accidentally migrate (upgrade) with changes that have a mistake, or changes you haven't yet completed making. By making migrations first, and bumping version last, you can double check you haven't made a mistake. ## Migrations API Each migration must migrate to a version one above the previous migration, and have multiple _steps_ (such as adding a new table, or new columns). Larger example: ```js schemaMigrations({ migrations: [ { toVersion: 3, steps: [ createTable({ name: 'comments', columns: [ { name: 'post_id', type: 'string', isIndexed: true }, { name: 'body', type: 'string' }, ], }), addColumns({ table: 'posts', columns: [ { name: 'subtitle', type: 'string', isOptional: true }, { name: 'is_pinned', type: 'boolean' }, ], }), ], }, { toVersion: 2, steps: [ // ... ], }, ], }) ``` ### Migration steps: - `createTable({ name: 'table_name', columns: [ ... ] })` - same API as `tableSchema()` - `addColumns({ table: 'table_name', columns: [ ... ] })` - you can add one or multiple columns to an existing table. The columns table has the same format as in schema definitions - Other types of migrations (e.g. deleting or renaming tables and columns) are not yet implemented. See [`migrations/index.js`](https://github.com/Nozbe/WatermelonDB/blob/master/src/Schema/migrations/index.js). Please contribute! ## Database reseting and other edge cases 1. When you're **not** using migrations, the database will reset (delete all its contents) whenever you change the schema version. 2. If the migration fails, the database will fail to initialize, and will roll back to previous version. This is unlikely, but could happen if you, for example, create a migration that tries to create the same table twice. The reason why the database will fail instead of reset is to avoid losing user data (also it's less confusing in development). You can notice the problem, fix the migration, and ship it again without data loss. 3. When database in the running app has *newer* database version than the schema version defined in code, the database will reset (clear its contents). This is useful in development. 4. If there's no available migrations path (e.g. user has app with database version 4, but oldest migration is from version 10 to 11), the database will reset. ### Rolling back changes There's no automatic "rollback" feature in Watermelon. If you make a mistake in migrations during development, roll back in this order: 1. Comment out any changes made to schema.js 2. Comment out any changes made to migrations.js 3. Decrement schema version number (bring back the original number) After refreshing app, the database should reset to previous state. Now you can correct your mistake and apply changes again (please do it in order described in "Migrations workflow"). ### Unsafe SQL migrations Similar to [Schema](../Schema.md), you can add `unsafeSql` parameter to every migration step to modify or replace SQL generated by WatermelonDB to perform the migration. There is also an `unsafeExecuteSql('some sql;')` step you can use to append extra SQL. Those are ignored with LokiJSAdapter and for the purposes of [migration syncs](../Sync/Intro.md). ================================================ FILE: docs-website/docs/docs/Advanced/Performance.md ================================================ --- title: Performance Tips hide_title: true --- # Performance Performance tips — TODO ================================================ FILE: docs-website/docs/docs/Advanced/ProTips.md ================================================ --- title: Pro Tips hide_title: true --- # Various Pro Tips ## Database viewer [See discussion](https://github.com/Nozbe/WatermelonDB/issues/710) **Android** - you can use the new [App Inspector](https://medium.com/androiddevelopers/database-inspector-9e91aa265316) in modern versions of Android Studio. **Via Flipper** You can also use Facebook Flipper [with a plugin](https://github.com/panz3r/react-native-flipper-databases#readme). See [discussion](https://github.com/Nozbe/WatermelonDB/issues/653). **iOS** - check open database path in iOS System Log (via Console for plugged-in device, or Xcode logs, or [by using `find`](https://github.com/Nozbe/WatermelonDB/issues/710#issuecomment-776255654)), then open it via `sqlite3` in the console, or an external tool like [sqlitebrowser](https://sqlitebrowser.org) ## Which SQLite version am I using? This usually only matters if you use raw SQL to use new SQLite versions: - On iOS, we use whatever SQLite version is bundled with the OS. [Here's a table of iOS version - SQLite version matches](https://github.com/yapstudios/YapDatabase/wiki/SQLite-version-(bundled-with-OS)) - On Android in JSI mode, we use SQLite bundled with WatermelonDB. See `@nozbe/sqlite` NPM dependency version to see which SQLite version is bundled. - On Android NOT in JSI mode, we use the SQLite bundled with the OS BTW: We're happy to accept contributions so that you can choose custom version or build of SQLite in all modes and on all platforms, but it needs to be opt-in (this adds to build time and binary size and most people don't need this) ## Prepopulating database on native There's no built-in support for this. One way is to generate a SQLite DB (you can use the the Node SQLite support in 0.19.0-2 pre-release or extract it from an ios/android app), bundle it with the app, and then use a bit of code to check if the DB you're expecting it available, and if not, making a copy of the default DB — before you attempt loading DB from JS side. [See discussion](https://github.com/Nozbe/WatermelonDB/issues/774#issuecomment-667981361) ## Override entity ID generator You can optionally overide WatermelonDB's id generator with your own custom id generator in order to create specific random id formats (e.g. if UUIDs are used in the backend). In your database index file, pass a function with your custom ID generator to `setGenerator`: ``` // Define a custom ID generator. function randomString(): string { return 'RANDOM STRING'; } setGenerator(randomString); // or as anonymous function: setGenerator(() => 'RANDOM STRING'); ``` To get UUIDs specifically, install [uuid](https://github.com/uuidjs/uuid) and then pass their id generator to `setGenerator`: ``` import { v4 as uuidv4 } from 'uuid'; setGenerator(() => uuidv4()); ``` ================================================ FILE: docs-website/docs/docs/Advanced/SharingDatabaseAcrossTargets.md ================================================ # iOS - Sharing database across targets In case you have multiple Xcode targets and want to share your WatermelonDB instance across them, there are 2 options to be followed: via JS or via native Swift / Objective-C. ### When to use this When you want to access the same database data in 2 or more Xcode targets (Notification Service Extension, Share Extension, iMessage stickers, etc). ### How to do this **Step 1:** Setting up an App Group Through Xcode, repeat this process for your **main target** and **every other target** that you want to share the database with: - Click on target name - Click **Signing and Capabilities** - Click **+ Capability** - Select **App Groups** - Provide your App Group name, usually `group.$(PRODUCT_BUNDLE_IDENTIFIER)` (e.g.: `group.com.example.MyAwesomeApp`) > Note: the App Group name must be the **exact same** for every target This tells iOS to share storage directories between your targets, and in this case, also the Watermelon database. **Step 2**: Setting up `dbName`: **Option A**: Via JS > Note: although this method is simpler, it has the disadvantage of breaking Chrome remote debugging 1. Install [rn-fetch-blob](https://github.com/joltup/rn-fetch-blob#installation) 2. In your JS, when creating the database, get the App Group path using `rn-fetch-blob`: ```ts import { NativeModules, Platform } from 'react-native'; import { Database } from '@nozbe/watermelondb'; import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite'; import schema from './schema'; import RNFetchBlob from 'rn-fetch-blob'; const getAppGroupPath = (): string => { let path = ''; if (Platform.OS === 'ios') { path = `${RNFetchBlob.fs.syncPathAppGroup('group.com.example.MyAwesomeApp')}/`; } return path; } const adapter = new SQLiteAdapter({ dbName: `${getAppGroupPath()}default.db`, schema, }); const database = new Database({ adapter, modelClasses: [ ... ], }); export default database; ``` **Option B**: Via native Swift / Objective-C 1. Through Xcode, repeat this process for your **main target** and **every other target** that you want to share the database with: - Edit `Info.plist` - Add a new row with `AppGroup` as key and `group.$(PRODUCT_BUNDLE_IDENTIFIER)` (set up in Step 1) as value. 2. Right-click your project name and click **New Group**. 3. Add a file named `AppGroup.m` and paste the following: ``` #import "React/RCTBridgeModule.h" @interface RCT_EXTERN_MODULE(AppGroup, NSObject) @end ``` 4. Add a file named `AppGroup.swift` and paste the following: ``` import Foundation @objc(AppGroup) class AppGroup: NSObject { @objc func constantsToExport() -> [AnyHashable : Any]! { var path = "" if let suiteName = Bundle.main.object(forInfoDictionaryKey: "AppGroup") as? String { if let directory = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: suiteName) { path = directory.path } } return ["path": "\(path)/"] } } ``` This reads your new `Info.plist` row and exports a constant called `path` with your App Group path (shared directory path), to be used in your JS code. 5. In your JS, when creating the database, import the `path` constant from your new `AppGroup` module and prepend to your `dbName`: ```ts import { NativeModules, Platform } from 'react-native'; import { Database } from '@nozbe/watermelondb'; import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite'; import schema from './schema'; const getAppGroupPath = (): string => { let path = ''; if (Platform.OS === 'ios') { path = NativeModules.AppGroup.path; } return path; } const adapter = new SQLiteAdapter({ dbName: `${getAppGroupPath()}default.db`, schema, }); const database = new Database({ adapter, modelClasses: [ ... ], }); export default database; ``` This way you're telling Watermelon to store your database into the shared directories, you're ready to go! ================================================ FILE: docs-website/docs/docs/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. Contributors: Please add your changes to CHANGELOG-Unreleased.md ## 0.28 - 2025-04-07 ### BREAKING CHANGES - [iOS] Podspec deployment target was bumped from iOS 11 to iOS 12 - [Android] Installation of Android JSI adapter has changed. To migrate, remove `getJSIModulePackage()` override in your `MainApplication.{java,kt}`, and add `new WatermelonDBJSIPackage()` to `getPackages()` override instead. See Installation docs for details. ### New features - Added `Database#experimentalIsVerbose` option - Support for React Native 0.74+ ### Fixes - [ts] Improved LocalStorage type definition - [ts] Add missing .d.ts for experimentalFailsafe decorator - [migrations] `unsafeExecuteSql` migration is now validate to ensure it ends with a semicolon (#1811) ### Changes - Minimum supported Node.js version is now 18.x - Improved Model diagnostic errors now always contain `table#id` of offending record - Update `better-sqlite3` to 11.x - Update sqlite (used by Android in JSI mode) to 3.46.0 - [docs] Improved Android installation docs - [docs] Removed examples from the codebase as they were unmaintained ### Internal - Update internal dependencies ## 0.27.1 - 2023-10-15 Fix missing Changelog for 0.27 release ## 0.27 - 2023-08-29 ### Highlights **Removed legacy Swift and Kotlin React Native Modules** Following the addition of new Native Modules in 0.26, we're removing the old implementations. We expect this to simplify installation process and remove a ton of compatibility and configuration issues due to Kotlin version mismatchs and the CocoaPods-Swift issues when using `use_frameworks!` or Expo. **Experimental React Native Windows support** WatermelonDB now has _experimental_ support for React Native Windows. See Installation docs for details. **Introducing Watermelon React** All React/React Native helpers for Watermelon are now available from a new `@nozbe/watermelodb/react` folder: - `DatabaseProvider`, `useDatabase`, `withDatabase` - NEW: `withObservables` - `@nozbe/with-observables` as a separate package is deprecated, and is now bundled with WatermelonDB - NEW: HOC helpers: `compose`, `withHooks` - NEW: `<WithObservables />` component, a component version of `withObservables` HOC. Useful when a value being observed is localized to a small part of a larger component, because you can effortlessly narrow down which parts of the component are re-rendered when the value changes without having to extract a new component. Imports from previous `@nozbe/watermelondb/DatabaseProvider` and `@nozbe/watermelondb/hooks` folders are deprecated and will be removed in a future version. **Introducing Watermelon Diagnostics** All debug/dev/diagnostics tools for Watermelon are now available from a new `@nozbe/watermelondb/diagnostics` folder: - NEW: `censorRaw` - takes a `RawRecord/DirtyRaw` and censors its string values, while preserving IDs, _status, _changed, and numeric/boolean values. Helpful when viewing database contents in context that could expose private user information - NEW: `diagnoseDatabaseStructure` - analyzes database to find inconsistencies, such as orphaned records (`belongs_to` relations on model that point to records that don't exist) or broken LokiJS database. Use this to find bugs in your data model. - NEW: `diagnoseSyncConsistency` - compares local database with the server version (contents of first/full sync) to find inconsistencies, missing and excess records. Use this to find bugs in your backend sync implementation. ### BREAKING CHANGES - `@nozbe/with-observables` is no longer a WatermelonDB dependency. Change your imports to `import { withObservables } from '@nozbe/watermelondb/react'` Changes unlikely to cause issues: - [iOS] If `import WatermelonDB` is used in your Swift app (for Turbo sync), remove it and replace with `#import <WatermelonDB/WatermelonDB.h>` in the bridging header - [iOS] If you use `_watermelonDBLoggingHook`, remove it. No replacement is provided at this time, feel free to contribute if you need this - [iOS] If you use `-DENABLE_JSLOCK_PERFORMANCE_HACK`, remove it. JSLockPerfHack has been non-functional for some time already, and has now been removed. Please file an issue if you relied on it. ### Deprecations - Imports from `@nozbe/watermelondb/DatabaseProvider` and `@nozbe/watermelondb/hooks`. Change to `@nozbe/watermelondb/react` ### New features - New `@experimentalFailsafe` decorator you can apply before `@relation/@immutableRelation` so that if relation points to a record that does not exist, `.fetch()/.observe()` yield `undefined` instead of throwing an error ### Fixes - [Flow/TS] Improved typing of DatabaseContext - Fixed `Cannot read property 'getRandomIds' of null`. This error occured if native modules were not correctly installed, however the location of the error caused a lot of confusion. ## 0.26 - 2023-04-28 ### Highlights **New Native Modules** We're transitioning SQLite adapters for React Native **from Kotlin and Swift to Java and Objective-C**. This is only a small part of WatermelonDB, yet is responsible for a disproportionate amount of issues raised, such as Kotlin version conflicts, Expo build failures, CocoaPods use_frameworks! issues. It makes library installation and updates more complicated for users. It complicates maintenance. Swift doesn't play nicely with either React Native's legacy Native Module system, nor can it interact cleanly with C++ (JSI/New Architecture) without going through Objective-C++. In other words, in the context of a React Native library, the benefit of these modern, nicer to use languages is far outweighed by the downsides. That's why we (@radex & @rozpierog) decided to rewrite the iOS and Android implementations to Objective-C and Java respectively. 0.26 is a transition release, and it contains both implementations. If you find a regression caused by the new bridge, pass `{disableNewBridge: true}` to `new SQLiteAdapter()` **and file an issue**. We plan to remove the old implementation in 0.27 or 0.28 release. **New documentation** We have a brand new documentation page, built with Docusaurus (contributed by @ErickLuizA). We plan to expand guides, add typing to examples, and add a proper API reference, but we need your help to do this! See: https://github.com/Nozbe/WatermelonDB/issues/1481 ### BREAKING CHANGES - [iOS] You should remove import of WatermelonDB's `SupportingFiles/Bridging.h` from your app project's `Bridging.h`. If this removal causes build issues, please file an issue. - [iOS] In your Podfile, replace previous WatermelonDB's pod imports with this: ```rb # Uncomment this line if you're not using auto-linking # pod 'WatermelonDB', path: '../node_modules/@nozbe/watermelondb' # WatermelonDB dependency pod 'simdjson', path: '../node_modules/@nozbe/simdjson', modular_headers: true ``` - Removed functions deprecated for 2+ years: - `Collection.unsafeFetchRecordsWithSQL()`. Use `.query(Q.unsafeSqlQuery('select * from...')).fetch()` instead. - `Database.action()`. Use `Database.write()` instead. - `.subAction()`. Use `.callWriter()` instead. - `@action` decorator. Use `@writer` instead. ### Deprecations ### New features - [Android] Added `experimentalUnsafeNativeReuse` option to SQLiteAdapter. See `src/adapters/sqlite/type.js` for more details - You can now pass an array to `Q.and(conditions)`, `Q.or(conditions)`, `collection.query(conditions)`, `query.extend(conditions)` in addition to spreading multiple arguments - Added JSDoc comments to many APIs ### Fixes - Improved resiliency to "Maximum call stack size exceeded" errors - [JSI] Improved reliability when reloading RCTBridge - [iOS] Fix "range of supported deployment targets" Xcode warning - `randomId` uses better randum number generator - Fixed "no such index" when using non-standard schemas and >1k bulk updates - Fixes and changes included in `@nozbe/with-observables@1.5.0` - [Flow] `query.batch([model, falsy])` no longer raises an error ### Performance - Warning is now given if a large number of arguments is passed to `Q.and, Q.or, Collection.query, Database.batch` instead of a single array - `randomId()` is now 2x faster on Chrome, 10x faster on Safari, 2x faster on iOS (Hermes) ### Changes - `randomId`: now also generates upper-case letters - Simplified CocoaPods/iOS integration - Docs improvements: SQLite versions, Flow declarations, Installation - Improved diagnostic warnings and errors: JSI, Writer/Reader - Remove old diagnostic warnings no longer relevant: `multiple Q.on()s`, `Database`, `LokiJSAdapter`, `SQLiteAdapter` - Updated `flow-bin` to 0.200. This shouldn't have an impact on you, but could fix or break Flow if you don't have WatermelonDB set to `[declarations]` mode - Updated `@babel/runtime` to 7.20.13 - Updated `rxjs` to 7.8.0 - Updated `sqlite` (SQLite used on Android in JSI mode) to 3.40.1 - Updated `simdjson` to 3.1.0 ### Internal - Cleaned up QueryDescription, ios folder structure, JSI implementation by splitting them into smaller parts. - [Android] [jsi] Simplify CMakeLists - Improve release script ## 0.25.5 - 2023-02-01 - Fix Android auto-linking ## 0.25.4 - 2023-01-31 - [Sync] Improve memory consumption (less likely to get "Maximum callstack exceeded" error) - [TypeScript] Fix type of `DirtyRaw` to `{ [key: string]: any }` (from `Object`) ## 0.25.3 - 2023-01-30 - Fixed TypeError regression ## 0.25.2 - 2023-01-30 ### Fixes - Fix TypeScript issues (@paulrostorp feat. @enahum) - Fix compilation on Kotlin 1.7 - Fix regression in Sync that could cause `Record ID xxx#yyy was sent over the bridge, but it's not cached` error ### Internal - Update internal dependencies - Fix Android CI - Improve TypeScript CI ## 0.25.1 - 2023-01-23 - Fix React Native 0.71+ Android broken build ## 0.25 - 2023-01-20 ### Highlights - Fix broken build on React Native 0.71+ - [Expo] Fixes Expo SDK 44+ build errors (@Kudo) - [JSI] Fix an issue that sometimes led to crashing app upon database close ### BREAKING CHANGES - [Query] `Q.where(xxx, undefined)` will now throw an error. This is a bug fix, since comparing to undefined was never allowed and would either error out or produce a wrong result in some cases. However, it could technically break an app that relied on existing buggy behavior - [JSI+Swift] If you use `watermelondbProvideSyncJson()` native iOS API, you might need to add `import WatermelonDB` ### New features - [adapters] Adapter objects can now be distinguished by checking their `static adapterType` - [Query] New `Q.includes('foo')` query for case-sensitive exact string includes comparison - [adapters] Adapter objects now returns `dbName` - [Sync] Replacement Sync - a new advanced sync feature. Server can now send a full dataset (same as during initial sync) and indicate with `{ experimentalStrategy: 'replacement' }` that instead of applying a diff, local database should be replaced with the dataset sent. Local records not present in the changeset will be deleted. However, unlike clearing database and logging in again, unpushed local changes (to records that are kept after replacement) are preserved. This is useful for recovering from a corrupted local database, or as a hack to deal with very large state changes such that server doesn't know how to efficiently send incremental changes and wants to send a full dataset instead. See docs for more details. - [Sync] Added `onWillApplyRemoteChanges` callback ### Performance - [LokiJS] Updated Loki with some performance improvements - [iOS] JSLockPerfHack now works on iOS 15 - [Sync] Improved performance of processing large pulls - Improved `@json` decorator, now with optional `{ memo: true }` parameter ### Changes - [Docs] Added additional Android JSI installation step ### Fixes - [TypeScript] Improve typings: add unsafeExecute method, localStorage property to Database - [android] Fixed compilation on some setups due to a missing `<cassert>` import - [sync] Fixed marking changes as synced for users that don't keep globally unique (only per-table unique) IDs - Fix `Model.experimentalMarkAsDeleted/experimentalDestroyPermanently()` throwing an error in some cases - Fixes included in updated `withObservables` ## 0.24 - 2021-10-28 ### BREAKING CHANGES - `Q.experimentalSortBy`, `Q.experimentalSkip`, `Q.experimentalTake` have been renamed to `Q.sortBy`, `Q.skip`, `Q.take` respectively - **RxJS has been updated to 7.3.0**. If you're not importing from `rxjs` in your app, this doesn't apply to you. If you are, read RxJS 7 breaking changes: https://rxjs.dev/deprecations/breaking-changes ### New features - **LocalStorage**. `database.localStorage` is now available - **sortBy, skip, take** are now available in LokiJSAdapter as well - **Disposable records**. Read-only records that cannot be saved in the database, updated, or deleted and only exist for as long as you keep a reference to them in memory can now be created using `collection.disposableFromDirtyRaw()`. This is useful when you're adding online-only features to an otherwise offline-first app. - [Sync] `experimentalRejectedIds` parameter now available in push response to allow partial rejection of an otherwise successful sync ### Fixes - Fixes an issue when using Headless JS on Android with JSI mode enabled - pass `usesExclusiveLocking: true` to SQLiteAdapter to enable - Fixes Typescript annotations for Collection and adapters/sqlite ## 0.23 - 2021-07-22 This is a big release to WatermelonDB with new advanced features, great performance improvements, and important fixes to JSI on Android. Please don't get scared off the long list of breaking changes - they are all either simple Find&Replace renames or changes to internals you probably don't use. It shouldn't take you more than 15 minutes to upgrade to 0.23. ### BREAKING CHANGES - **iOS Installation change**. You need to add this line to your Podfile: `pod 'simdjson', path: '../node_modules/@nozbe/simdjson'` - Deprecated `new Database({ actionsEnabled: false })` options is now removed. Actions are always enabled. - Deprecated `new SQLiteAdapter({ synchronous: true })` option is now removed. Use `{ jsi: true }` instead. - Deprecated `Q.unsafeLokiFilter` is now removed. Use `Q.unsafeLokiTransform((raws, loki) => raws.filter(raw => ...))` instead. - Deprecated `Query.hasJoins` is now removed - Changes to `LokiJSAdapter` constructor options: - `indexedDBSerializer` -> `extraIncrementalIDBOptions: { serializeChunk, deserializeChunk }` - `onIndexedDBFetchStart` -> `extraIncrementalIDBOptions: { onFetchStart }` - `onIndexedDBVersionChange` -> `extraIncrementalIDBOptions: { onversionchange }` - `autosave: false` -> `extraLokiOptions: { autosave: false }` - Changes to Internal APIs. These were never meant to be public, and so are unlikely to affect you: - `Model._isCommited`, `._hasPendingUpdate`, `._hasPendingDelete` have been removed and changed to `Model._pendingState` - `Collection.unsafeClearCache()` is no longer exposed - Values passed to `adapter.setLocal()` are now validated to be strings. This is technically a bug fix, since local storage was always documented to only accept strings, however applications may have relied on this lack of validation. Adding this validation was necessary to achieve consistent behavior between SQLiteAdapter and LokiJSAdapter - `unsafeSql` passed to `appSchema` will now also be called when dropping and later recreating all database indices on large batches. A second argument was added so you can distinguish between these cases. See Schema docs for more details. - **Changes to sync change tracking**. The behavior of `record._raw._changed` and `record._raw._status` (a.k.a. `record.syncStatus`) has changed. This is unlikely to be a breaking change to you, unless you're writing your own sync engine or rely on these low-level details. - Previously, \_changed was always empty when \_status=created. Now, \_changed is not populated during initial creation of a record, but a later update will add changed fields to \_changed. This change was necessary to fix a long-standing Sync bug. ### Deprecations - `database.action(() => {})` is now deprecated. Use `db.write(() => {})` instead (or `db.read(() => {})` if you only need consistency but are not writing any changes to DB) - `@action` is now deprecated. Use `@writer` or `@reader` instead - `.subAction()` is now deprecated. Use `.callReader()` or `.callWriter()` instead - `Collection.unsafeFetchRecordsWithSQL()` is now deprecated. Use `collection.query(Q.unsafeSqlQuery("select * from...")).fetch()` instead. ### New features - `db.write(writer => { ... writer.batch() })` - you can now call batch on the interface passed to a writer block - **Fetching record IDs and unsafe raws.** You can now optimize fetching of queries that only require IDs, not full cached records: - `await query.fetchIds()` will return an array of record ids - `await query.unsafeFetchRaw()` will return an array of unsanitized, unsafe raw objects (use alongside `Q.unsafeSqlQuery` to exclude unnecessary or include extra columns) - advanced `adapter.queryIds()`, `adapter.unsafeQueryRaw` are also available - **Raw SQL queries**. New syntax for running unsafe raw SQL queries: - `collection.query(Q.unsafeSqlQuery("select * from tasks where foo = ?", ['bar'])).fetch()` - You can now also run `.fetchCount()`, `.fetchIds()` on SQL queries - You can now safely pass values for SQL placeholders by passing an array - You can also observe an unsafe raw SQL query -- with some caveats! refer to documentation for more details - **Unsafe raw execute**. You can now execute arbitrary SQL queries (SQLiteAdapter) or access Loki object directly (LokiJSAdapter) using `adapter.unsafeExecute` -- see docs for more details - **Turbo Login**. You can now speed up the initial (login) sync by up to 5.3x with Turbo Login. See Sync docs for more details. - New diagnostic tool - **debugPrintChanges**. See Sync documentation for more details ### Performance - The order of Q. clauses in a query is now preserved - previously, the clauses could get rearranged and produce a suboptimal query - [SQLite] `adapter.batch()` with large numbers of created/updated/deleted records is now between 16-48% faster - [LokiJS] Querying and finding is now faster - unnecessary data copy is skipped - [jsi] 15-30% faster querying on JSC (iOS) when the number of returned records is large - [jsi] up to 52% faster batch creation (yes, that's on top of the improvement listed above!) - Fixed a performance bug that caused observed items on a list observer with `.observeWithColumns()` to be unnecessarily re-rendered just before they were removed from the list ### Changes - All Watermelon console logs are prepended with a 🍉 tag - Extra protections against improper use of writers/readers (formerly actions) have been added - Queries with multiple top-level `Q.on('table', ...)` now produce a warning. Use `Q.on('table', [condition1, condition2, ...])` syntax instead. - [jsi] WAL mode is now used ### Fixes - [jsi] Fix a race condition where commands sent to the database right after instantiating SQLiteAdapter would fail - [jsi] Fix incorrect error reporting on some sqlite errors - [jsi] Fix issue where app would crash on Android/Hermes on reload - [jsi] Fix IO errors on Android - [sync] Fixed a long-standing bug that would cause records that are created before a sync and updated during sync's push to lose their most recent changes on a subsequent sync ### Internal - Internal changes to SQLiteAdapter: - .batch is no longer available on iOS implementation - .batch/.batchJSON internal format has changed - .getDeletedRecords, destroyDeletedRecords, setLocal, removeLocal is no longer available - encoded SQLiteAdapter schema has changed - LokiJSAdapter has had many internal changes ## 0.22 - 2021-05-07 ### BREAKING CHANGES - [SQLite] `experimentalUseJSI: true` option has been renamed to `jsi: true` ### Deprecations - [LokiJS] `Q.unsafeLokiFilter` is now deprecated and will be removed in a future version. Use `Q.unsafeLokiTransform((raws, loki) => raws.filter(raw => ...))` instead. ### New features - [SQLite] [JSI] `jsi: true` now works on Android - see docs for installation info ### Performance - Removed dependency on rambdax and made the util library smaller - Faster withObservables ### Changes - Synchronization: `pushChanges` is optional, will not calculate local changes if not specified. - withObservables is now a dependency of WatermelonDB for simpler installation and consistent updates. You can (and generally should) delete `@nozbe/with-observables` from your app's package.json - [Docs] Add advanced tutorial to share database across iOS targets - @thiagobrez - [SQLite] Allowed callbacks (within the migrationEvents object) to be passed so as to track the migration events status ( onStart, onSuccess, onError ) - @avinashlng1080 - [SQLite] Added a dev-only `Query._sql()` method for quickly extracting SQL from Queries for debugging purposes ### Fixes - Non-react statics hoisting in `withDatabase()` - Fixed incorrect reference to `process`, which can break apps in some environments (e.g. webpack5) - [SQLite] [JSI] Fixed JSI mode when running on Hermes - Fixed a race condition when using standard fetch methods alongside `Collection.unsafeFetchRecordsWithSQL` - @jspizziri - withObservables shouldn't cause any RxJS issues anymore as it no longer imports RxJS - [Typescript] Added `onSetUpError` and `onIndexedDBFetchStart` fields to `LokiAdapterOptions`; fixes TS error - @3DDario - [Typescript] Removed duplicated identifiers `useWebWorker` and `useIncrementalIndexedDB` in `LokiAdapterOptions` - @3DDario - [Typescript] Fix default export in logger util ## 0.21 - 2021-03-24 ### BREAKING CHANGES - [LokiJS] `useWebWorker` and `useIncrementalIndexedDB` options are now required (previously, skipping them would only trigger a warning) ### New features - [Model] `Model.update` method now returns updated record - [adapters] `onSetUpError: Error => void` option is added to both `SQLiteAdapter` and `LokiJSAdapter`. Supply this option to catch initialization errors and offer the user to reload or log out - [LokiJS] new `extraLokiOptions` and `extraIncrementalIDBOptions` options - [Android] Autolinking is now supported. - If You upgrade to `<= v0.21.0` **AND** are on a version of React Native which supports Autolinking, you will need to remove the config manually linking WatermelonDB. - You can resolve this issue by **REMOVING** the lines of config from your project which are _added_ in the `Manual Install ONLY` section of the [Android Install docs](https://nozbe.github.io/WatermelonDB/Installation.html#android-react-native). ### Performance - [LokiJS] Improved performance of launching the app ### Changes - [LokiJS] `useWebWorker: true` and `useIncrementalIndexedDB: false` options are now deprecated. If you rely on these features, please file an issue! - [Sync] Optional `log` passed to sync now has more helpful diagnostic information - [Sync] Open-sourced a simple SyncLogger you can optionally use. See docs for more info. - [SQLiteAdapter] `synchronous:true` option is now deprecated and will be replaced with `experimentalUseJSI: true` in the future. Please test if your app compiles and works well with `experimentalUseJSI: true`, and if not - file an issue! - [LokiJS] Changed default autosave interval from 250 to 500ms - [Typescript] Add `experimentalNestedJoin` definition and `unsafeSqlExpr` clause ### Fixes - [LokiJS] Fixed a case where IndexedDB could get corrupted over time - [Resilience] Added extra diagnostics for when you encounter the `Record ID aa#bb was sent over the bridge, but it's not cached` error and a recovery path (LokiJSAdapter-only). Please file an issue if you encounter this issue! - [Typescript] Fixed type on OnFunction to accept `and` in join - [Typescript] Fixed type `database#batch(records)`'s argument `records` to accept mixed types ### Internal - Added an experimental mode where a broken database state is detected, further mutations prevented, and the user notified ## 0.20 - 2020-10-05 ### BREAKING CHANGES This release has unintentionally broken RxJS for some apps using `with-observables`. If you have this issue, please update `@nozbe/with-observables` to the latest version. ### New features - [Sync] Conflict resolution can now be customized. See docs for more details - [Android] Autolinking is now supported - [LokiJS] Adapter autosave option is now configurable ### Changes - Interal RxJS imports have been refactor such that rxjs-compat should never be used now - [Performance] Tweak Babel config to produce smaller code - [Performance] LokiJS-based apps will now take up to 30% less time to load the database (id and unique indicies are generated lazily) ### Fixes - [iOS] Fixed crash on database reset in apps linked against iOS 14 SDK - [LokiJS] Fix `Q.like` being broken for multi-line strings on web - Fixed warn "import cycle" from DialogProvider (#786) by @gmonte. - Fixed cache date as instance of Date (#828) by @djorkaeffalexandre. ## 0.19 - 2020-08-17 ### New features - [iOS] Added CocoaPods support - @leninlin - [NodeJS] Introducing a new SQLite Adapter based integration to NodeJS. This requires a peer dependency on [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) and should work with the same configuration as iOS/Android - @sidferreira - [Android] `exerimentalUseJSI` option has been enabled on Android. However, it requires some app-specific setup which is not yet documented - stay tuned for upcoming releases - [Schema] [Migrations] You can now pass `unsafeSql` parameters to schema builder and migration steps to modify SQL generated to set up the database or perform migrations. There's also new `unsafeExecuteSql` migration step. Please use this only if you know what you're doing — you shouldn't need this in 99% of cases. See Schema and Migrations docs for more details - [LokiJS] [Performance] Added experimental `onIndexedDBFetchStart` and `indexedDBSerializer` options to `LokiJSAdapter`. These can be used to improve app launch time. See `src/adapters/lokijs/index.js` for more details. ### Changes - [Performance] findAndObserve is now able to emit a value synchronously. By extension, this makes Relations put into withObservables able to render the child component in one shot. Avoiding the extra unnecessary render cycles avoids a lot of DOM and React commit-phase work, which can speed up loading some views by 30% - [Performance] LokiJS is now faster (refactored encodeQuery, skipped unnecessary clone operations) ## 0.18 - 2020-06-30 Another WatermelonDB release after just a week? Yup! And it's jam-packed full of features! ### New features - [Query] `Q.on` queries are now far more flexible. Previously, they could only be placed at the top level of a query. See Docs for more details. Now, you can: - Pass multiple conditions on the related query, like so: ```js collection.query(Q.on('projects', [Q.where('foo', 'bar'), Q.where('bar', 'baz')])) ``` - You can place `Q.on` deeper inside the query (nested inside `Q.and()`, `Q.or()`). However, you must explicitly list all tables you're joining on at the beginning of a query, using: `Q.experimentalJoinTables(['join_table1', 'join_table2'])`. - You can nest `Q.on` conditions inside `Q.on`, e.g. to make a condition on a grandchild. To do so, it's required to pass `Q.experimentalNestedJoin('parent_table', 'grandparent_table')` at the beginning of a query - [Query] `Q.unsafeSqlExpr()` and `Q.unsafeLokiExpr()` are introduced to allow adding bits of queries that are not supported by the WatermelonDB query language without having to use `unsafeFetchRecordsWithSQL()`. See docs for more details - [Query] `Q.unsafeLokiFilter((rawRecord, loki) => boolean)` can now be used as an escape hatch to make queries with LokiJSAdapter that are not otherwise possible (e.g. multi-table column comparisons). See docs for more details ### Changes - [Performance] [LokiJS] Improved performance of queries containing query comparisons on LokiJSAdapter - [Docs] Added Contributing guide for Query language improvements - [Deprecation] `Query.hasJoins` is deprecated - [DX] Queries with bad associations now show more helpful error message - [Query] Counting queries that contain `Q.experimentalTake` / `Q.experimentalSkip` is currently broken - previously it would return incorrect results, but now it will throw an error to avoid confusion. Please contribute to fix the root cause! ### Fixes - [Typescript] Fixed types of Relation ### Internal - `QueryDescription` structure has been changed. ## 0.17.1 - 2020-06-24 - Fixed broken iOS build - @mlecoq ## 0.17 - 2020-06-22 ### New features - [Sync] Introducing Migration Syncs - this allows fully consistent synchronization when migrating between schema versions. Previously, there was no mechanism to incrementally fetch all remote changes in new tables and columns after a migration - so local copy was likely inconsistent, requiring a re-login. After adopting migration syncs, Watermelon Sync will request from backend all missing information. See Sync docs for more details. - [iOS] Introducing a new native SQLite database integration, rewritten from scratch in C++, based on React Native's JSI (JavaScript Interface). It is to be considered experimental, however we intend to make it the default (and eventually, the only) implementation. In a later release, Android version will be introduced. The new adapter is up to 3x faster than the previously fastest `synchronous: true` option, however this speedup is only achieved with some unpublished React Native patches. To try out JSI, add `experimentalUseJSI: true` to `SQLiteAdapter` constructor. - [Query] Added `Q.experimentalSortBy(sortColumn, sortOrder)`, `Q.experimentalTake(count)`, `Q.experimentalSkip(count)` methods (only availble with SQLiteAdapter) - @Kenneth-KT - `Database.batch()` can now be called with a single array of models - [DX] `Database.get(tableName)` is now a shortcut for `Database.collections.get(tableName)` - [DX] Query is now thenable - you can now use `await query` and `await query.count` instead of `await query.fetch()` and `await query.fetchCount()` - [DX] Relation is now thenable - you can now use `await relation` instead of `await relation.fetch()` - [DX] Exposed `collection.db` and `model.db` as shortcuts to get to their Database object ### Changes - [Hardening] Column and table names starting with `__`, Object property names (e.g. `constructor`), and some reserved keywords are now forbidden - [DX] [Hardening] QueryDescription builder methods do tighter type checks, catching more bugs, and preventing users from unwisely passing unsanitized user data into Query builder methods - [DX] [Hardening] Adapters check early if table names are valid - [DX] Collection.find reports an error more quickly if an obviously invalid ID is passed - [DX] Intializing Database with invalid model classes will now show a helpful error - [DX] DatabaseProvider shows a more helpful error if used improperly - [Sync] Sync no longer fails if pullChanges returns collections that don't exist on the frontend - shows a warning instead. This is to make building backwards-compatible backends less error-prone - [Sync] [Docs] Sync documentation has been rewritten, and is now closer in detail to a formal specification - [Hardening] database.collections.get() better validates passed value - [Hardening] Prevents unsafe strings from being passed as column name/table name arguments in QueryDescription ### Fixes - [Sync] Fixed `RangeError: Maximum call stack size exceeded` when syncing large amounts of data - @leninlin - [iOS] Fixed a bug that could cause a database operation to fail with an (6) SQLITE_LOCKED error - [iOS] Fixed 'jsi/jsi.h' file not found when building at the consumer level. Added path `$(SRCROOT)/../../../../../ios/Pods/Headers/Public/React-jsi` to Header Search Paths (issue #691) - @victorbutler - [Native] SQLite keywords used as table or column names no longer crash - Fixed potential issues when subscribing to database, collection, model, queries passing a subscriber function with the same identity more than once ### Internal - Fixed broken adapter tests ## 0.15.1, 0.16.1-fix, 0.16.2 - 2020-06-03 This is a security patch for a vulnerability that could cause maliciously crafted record IDs to cause all or some of user's data to be deleted. More information available via GitHub security advisory ## 0.16.1 - 2020-05-18 ### Changes - `Database.unsafeResetDatabase()` is now less unsafe — more application bugs are being caught ### Fixes - [iOS] Fix build in apps using Flipper - [Typescript] Added type definition for `setGenerator`. - [Typescript] Fixed types of decorators. - [Typescript] Add Tests to test Types. - Fixed typo in learn-to-use docs. - [Typescript] Fixed types of changes. ### Internal - [SQLite] Infrastruture for a future JSI adapter has been added ## 0.16 - 2020-03-06 ### ⚠️ Breaking - `experimentalUseIncrementalIndexedDB` has been renamed to `useIncrementalIndexedDB` #### Low breakage risk - [adapters] Adapter API has changed from returning Promise to taking callbacks as the last argument. This won't affect you unless you call on adapter methods directly. `database.adapter` returns a new `DatabaseAdapterCompat` which has the same shape as old adapter API. You can use `database.adapter.underlyingAdapter` to get back `SQLiteAdapter` / `LokiJSAdapter` - [Collection] `Collection.fetchQuery` and `Collection.fetchCount` are removed. Please use `Query.fetch()` and `Query.fetchCount()`. ### New features - [SQLiteAdapter] [iOS] Add new `synchronous` option to adapter: `new SQLiteAdapter({ ..., synchronous: true })`. When enabled, database operations will block JavaScript thread. Adapter actions will resolve in the next microtask, which simplifies building flicker-free interfaces. Adapter will fall back to async operation when synchronous adapter is not available (e.g. when doing remote debugging) - [LokiJS] Added new `onQuotaExceededError?: (error: Error) => void` option to `LokiJSAdapter` constructor. This is called when underlying IndexedDB encountered a quota exceeded error (ran out of allotted disk space for app) This means that app can't save more data or that it will fall back to using in-memory database only Note that this only works when `useWebWorker: false` ### Changes - [Performance] Watermelon internals have been rewritten not to rely on Promises and allow some fetch/observe calls to resolve synchronously. Do not rely on this -- external API is still based on Rx and Promises and may resolve either asynchronously or synchronously depending on capabilities. This is meant as a internal performance optimization only for the time being. - [LokiJS] [Performance] Improved worker queue implementation for performance - [observation] Refactored observer implementations for performance ### Fixes - Fixed a possible cause for "Record ID xxx#yyy was sent over the bridge, but it's not cached" error - [LokiJS] Fixed an issue preventing database from saving when using `experimentalUseIncrementalIndexedDB` - Fixed a potential issue when using `database.unsafeResetDatabase()` - [iOS] Fixed issue with clearing database under experimental synchronous mode ### New features (Experimental) - [Model] Added experimental `model.experimentalSubscribe((isDeleted) => { ... })` method as a vanilla JS alternative to Rx based `model.observe()`. Unlike the latter, it does not notify the subscriber immediately upon subscription. - [Collection] Added internal `collection.experimentalSubscribe((changeSet) => { ... })` method as a vanilla JS alternative to Rx based `collection.changes` (you probably shouldn't be using this API anyway) - [Database] Added experimental `database.experimentalSubscribe(['table1', 'table2'], () => { ... })` method as a vanilla JS alternative to Rx-based `database.withChangesForTables()`. Unlike the latter, `experimentalSubscribe` notifies the subscriber only once after a batch that makes a change in multiple collections subscribed to. It also doesn't notify the subscriber immediately upon subscription, and doesn't send details about the changes, only a signal. - Added `experimentalDisableObserveCountThrottling()` to `@nozbe/watermelondb/observation/observeCount` that globally disables count observation throttling. We think that throttling on WatermelonDB level is not a good feature and will be removed in a future release - and will be better implemented on app level if necessary - [Query] Added experimental `query.experimentalSubscribe(records => { ... })`, `query.experimentalSubscribeWithColumns(['col1', 'col2'], records => { ... })`, and `query.experimentalSubscribeToCount(count => { ... })` methods ## 0.15 - 2019-11-08 ### Highlights This is a **massive** new update to WatermelonDB! 🍉 - **Up to 23x faster sync**. You heard that right. We've made big improvements to performance. In our tests, with a massive sync (first login, 45MB of data / 65K records) we got a speed up of: - 5.7s -> 1.2s on web (5x) - 142s -> 6s on iOS (23x) Expect more improvements in the coming releases! - **Improved LokiJS adapter**. Option to disable web workers, important Safari 13 fix, better performance, and now works in Private Modes. We recommend adding `useWebWorker: false, experimentalUseIncrementalIndexedDB: true` options to the `LokiJSAdapter` constructor to take advantage of the improvements, but please read further changelog to understand the implications of this. - **Raw SQL queries** now available on iOS and Android thanks to the community - **Improved TypeScript support** — thanks to the community ### ⚠️ Breaking - Deprecated `bool` schema column type is removed -- please change to `boolean` - Experimental `experimentalSetOnlyMarkAsChangedIfDiffers(false)` API is now removed ### New featuers - [Collection] Add `Collection.unsafeFetchRecordsWithSQL()` method. You can use it to fetch record using raw SQL queries on iOS and Android. Please be careful to avoid SQL injection and other pitfalls of raw queries - [LokiJS] Introduces new `new LokiJSAdapter({ ..., experimentalUseIncrementalIndexedDB: true })` option. When enabled, database will be saved to browser's IndexedDB using a new adapter that only saves the changed records, instead of the entire database. **This works around a serious bug in Safari 13** (https://bugs.webkit.org/show_bug.cgi?id=202137) that causes large databases to quickly balloon to gigabytes of temporary trash This also improves performance of incremental saves, although initial page load or very, very large saves might be slightly slower. This is intended to become the new default option, but it's not backwards compatible (if enabled, old database will be lost). **You're welcome to contribute an automatic migration code.** Note that this option is still experimental, and might change in breaking ways at any time. - [LokiJS] Introduces new `new LokiJSAdapter({ ..., useWebWorker: false })` option. Before, web workers were always used with `LokiJSAdapter`. Although web workers may have some performance benefits, disabling them may lead to lower memory consumption, lower latency, and easier debugging. YMMV. - [LokiJS] Added `onIndexedDBVersionChange` option to `LokiJSAdapter`. This is a callback that's called when internal IDB version changed (most likely the database was deleted in another browser tab). Pass a callback to force log out in this copy of the app as well. Note that this only works when using incrementalIDB and not using web workers - [Model] Add `Model._dangerouslySetRawWithoutMarkingColumnChange()` method. You probably shouldn't use it, but if you know what you're doing and want to live-update records from server without marking record as updated, this is useful - [Collection] Add `Collection.prepareCreateFromDirtyRaw()` - @json decorator sanitizer functions take an optional second argument, with a reference to the model ### Fixes - Pinned required `rambdax` version to 2.15.0 to avoid console logging bug. In a future release we will switch to our own fork of `rambdax` to avoid future breakages like this. ### Improvements - [Performance] Make large batches a lot faster (1.3s shaved off on a 65K insert sample) - [Performance] [iOS] Make large batch inserts an order of magnitude faster - [Performance] [iOS] Make encoding very large queries (with thousands of parameters) 20x faster - [Performance] [LokiJS] Make batch inserts faster (1.5s shaved off on a 65K insert sample) - [Performance] [LokiJS] Various performance improvements - [Performance] [Sync] Make Sync faster - [Performance] Make observation faster - [Performance] [Android] Make batches faster - Fix app glitches and performance issues caused by race conditions in `Query.observeWithColumns()` - [LokiJS] Persistence adapter will now be automatically selected based on availability. By default, IndexedDB is used. But now, if unavailable (e.g. in private mode), ephemeral memory adapter will be used. - Disabled console logs regarding new observations (it never actually counted all observations) and time to query/count/batch (the measures were wildly inaccurate because of asynchronicity - actual times are much lower) - [withObservables] Improved performance and debuggability (update withObservables package separately) - Improved debuggability of Watermelon -- shortened Rx stacks and added function names to aid in understanding call stacks and profiles - [adapters] The adapters interface has changed. `query()` and `count()` methods now receive a `SerializedQuery`, and `batch()` now takes `TableName<any>` and `RawRecord` or `RecordId` instead of `Model`. - [Typescript] Typing improvements - Added 3 missing properties `collections`, `database` and `asModel` in Model type definition. - Removed optional flag on `actionsEnabled` in the Database constructor options since its mandatory since 0.13.0. - fixed several further typing issues in Model, Relation and lazy decorator - Changed how async functions are transpiled in the library. This could break on really old Android phones but shouldn't matter if you use latest version of React Native. Please report an issue if you see a problem. - Avoid `database` prop drilling in the web demo ## 0.14.1 - 2019-08-31 Hotfix for rambdax crash - [Schema] Handle invalid table schema argument in appSchema - [withObservables] Added TypeScript support ([changelog](https://github.com/Nozbe/withObservables/blob/master/CHANGELOG.md)) - [Electron] avoid `Uncaught ReferenceError: global is not defined` in electron runtime ([#453](https://github.com/Nozbe/WatermelonDB/issues/453)) - [rambdax] Replaces `contains` with `includes` due to `contains` deprecation https://github.com/selfrefactor/rambda/commit/1dc1368f81e9f398664c9d95c2efbc48b5cdff9b#diff-04c6e90faac2675aa89e2176d2eec7d8R2209 ## 0.14.0 - 2019-08-02 ### New features - [Query] Added support for `notLike` queries 🎉 - [Actions] You can now batch delete record with all descendants using experimental functions `experimentalMarkAsDeleted` or `experimentalDestroyPermanently` ## 0.13.0 - 2019-07-18 ### ⚠️ Breaking - [Database] It is now mandatory to pass `actionsEnabled:` option to Database constructor. It is recommended that you enable this option: ```js const database = new Database({ adapter: ..., modelClasses: [...], actionsEnabled: true }) ``` See `docs/Actions.md` for more details about Actions. You can also pass `false` to maintain backward compatibility, but this option **will be removed** in a later version - [Adapters] `migrationsExperimental` prop of `SQLiteAdapter` and `LokiJSAdapter` has been renamed to `migrations`. ### New features - [Actions] You can now batch deletes by using `prepareMarkAsDeleted` or `prepareDestroyPermanently` - [Sync] Performance: `synchronize()` no longer calls your `pushChanges()` function if there are no local changes to push. This is meant to save unnecessary network bandwidth. ⚠️ Note that this could be a breaking change if you rely on it always being called - [Sync] When setting new values to fields on a record, the field (and record) will no longer be marked as changed if the field's value is the same. This is meant to improve performance and avoid unnecessary code in the app. ⚠️ Note that this could be a breaking change if you rely on the old behavior. For now you can import `experimentalSetOnlyMarkAsChangedIfDiffers` from `@nozbe/watermelondb/Model/index` and call if with `(false)` to bring the old behavior back, but this will be removed in the later version -- create a new issue explaining why you need this - [Sync] Small perf improvements ### Improvements - [Typescript] Improved types for SQLite and LokiJS adapters, migrations, models, the database and the logger. ## 0.12.3 - 2019-05-06 ### Changes - [Database] You can now update the random id schema by importing `import { setGenerator } from '@nozbe/watermelondb/utils/common/randomId'` and then calling `setGenerator(newGenenerator)`. This allows WatermelonDB to create specific IDs for example if your backend uses UUIDs. - [Typescript] Type improvements to SQLiteAdapter and Database - [Tests] remove cleanup for react-hooks-testing-library@0.5.0 compatibility ## 0.12.2 - 2019-04-19 ### Fixes - [TypeScript] 'Cannot use 'in' operator to search for 'initializer'; decorator fix ### Changes - [Database] You can now pass falsy values to `Database.batch(...)` (false, null, undefined). This is useful in keeping code clean when doing operations conditionally. (Also works with `model.batch(...)`) - [Decorators]. You can now use `@action` on methods of any object that has a `database: Database` property, and `@field @children @date @relation @immutableRelation @json @text @nochange` decorators on any object with a `asModel: Model` property. - [Sync] Adds a temporary/experimental `_unsafeBatchPerCollection: true` flag to `synchronize()`. This causes server changes to be committed to database in multiple batches, and not one. This is NOT preferred for reliability and performance reasons, but it works around a memory issue that might cause your app to crash on very large syncs (>20,000 records). Use this only if necessary. Note that this option might be removed at any time if a better solution is found. ## 0.12.1 - 2019-04-01 ### ⚠️ Hotfix - [iOS] Fix runtime crash when built with Xcode 10.2 (Swift 5 runtime). **⚠️ Note**: You need to upgrade to React Native 0.59.3 for this to work. If you can't upgrade React Native yet, either stick to Xcode 10.1 or manually apply this patch: https://github.com/Nozbe/WatermelonDB/pull/302/commits/aa4e08ad0fa55f434da2a94407c51fc5ff18e506 ### Changes - [Sync] Adds basic sync logging capability to Sync. Pass an empty object to `synchronize()` to populate it with diagnostic information: ```js const log = {} await synchronize({ database, log, ...}) console.log(log.startedAt) ``` See Sync documentation for more details. ## 0.12.0 - 2019-03-18 ### Added - [Hooks] new `useDatabase` hook for consuming the Database Context: ```js import { useDatabase } from '@nozbe/watermelondb/hooks' const Component = () => { const database = useDatabase() } ``` - [TypeScript] added `.d.ts` files. Please note: TypeScript definitions are currently incomplete and should be used as a guide only. **PRs for improvements would be greatly appreciated!** ### Performance - Improved UI performance by consolidating multiple observation emissions into a single per-collection batch emission when doing batch changes ## 0.11.0 - 2019-03-12 ### Breaking - ⚠️ Potentially BREAKING fix: a `@date` field now returns a Jan 1, 1970 date instead of `null` if the field's raw value is `0`. This is considered a bug fix, since it's unexpected to receive a `null` from a getter of a field whose column schema doesn't say `isOptional: true`. However, if you relied on this behavior, this might be a breaking change. - ⚠️ BREAKING: `Database.unsafeResetDatabase()` now requires that you run it inside an Action ### Bug fixes - [Sync] Fixed an issue where synchronization would continue running despite `unsafeResetDatabase` being called - [Android] fix compile error for kotlin 1.3+ ### Other changes - Actions are now aborted when `unsafeResetDatabase()` is called, making reseting database a little bit safer - Updated demo dependencies - LokiJS is now a dependency of WatermelonDB (although it's only required for use on the web) - [Android] removed unused test class - [Android] updated ktlint to `0.30.0` ## 0.10.1 - 2019-02-12 ### Changes - [Android] Changed `compile` to `implementation` in Library Gradle file - ⚠️ might break build if you are using Android Gradle Plugin <3.X - Updated `peerDependency` `react-native` to `0.57.0` - [Sync] Added `hasUnsyncedChanges()` helper method - [Sync] Improved documentation for backends that can't distinguish between `created` and `updated` records - [Sync] Improved diagnostics / protection against edge cases - [iOS] Add missing `header search path` to support **ejected** expo project. - [Android] Fix crash on android < 5.0 - [iOS] `SQLiteAdapter`'s `dbName` path now allows you to pass an absolute path to a file, instead of a name - [Web] Add adaptive layout for demo example with smooth scrolling for iOS ## 0.10.0 - 2019-01-18 ### Breaking - **BREAKING:** Table column `last_modified` is no longer automatically added to all database tables. If you don't use this column (e.g. in your custom sync code), you don't have to do anything. If you do, manually add this column to all table definitions in your Schema: ``` { name: 'last_modified', type: 'number', isOptional: true } ``` **Don't** bump schema version or write a migration for this. ### New - **Actions API**. This was actually released in 0.8.0 but is now documented. With Actions enabled, all create/update/delete/batch calls must be wrapped in an Action. To use Actions, call `await database.action(async () => { /* perform writes here */ }`, and in Model instance methods, you can just decorate the whole method with `@action`. This is necessary for Watermelon Sync, and also to enable greater safety and consistency. To enable actions, add `actionsEnabled: true` to `new Database({ ... })`. In a future release this will be enabled by default, and later, made mandatory. See documentation for more details. - **Watermelon Sync Adapter** (Experimental) Added `synchronize()` function that allows you to easily add full synchronization capabilities to your Watermelon app. You only need to provide two fetch calls to your remote server that conforms to Watermelon synchronization protocol, and all the client-side processing (applying remote changes, resolving conflicts, finding local changes, and marking them as synced) is done by Watermelon. See documentation for more details. - **Support caching for non-global IDs at Native level** ## 0.9.0 - 2018-11-23 ### New - Added `Q.like` - you can now make queries similar to SQL `LIKE` ## 0.8.0 - 2018-11-16 ### New - Added `DatabaseProvider` and `withDatabase` Higher-Order Component to reduce prop drilling - Added experimental Actions API. This will be documented in a future release. ### Fixes - Fixes crash on older Android React Native targets without `jsc-android` installed ## 0.7.0 - 2018-10-31 ### Deprecations - [Schema] Column type 'bool' is deprecated — change to 'boolean' ### New - Added support for Schema Migrations. See documentation for more details. - Added fundaments for integration of Danger with Jest ### Changes - Fixed "dependency cycle" warning - [SQLite] Fixed rare cases where database could be left in an unusable state (added missing transaction) - [Flow] Fixes `oneOf()` typing and some other variance errors - [React Native] App should launch a little faster, because schema is only compiled on demand now - Fixed typos in README.md - Updated Flow to 0.85 ## 0.6.2 - 2018-10-04 ### Deprecations - The `@nozbe/watermelondb/babel/cjs` / `@nozbe/watermelondb/babel/esm` Babel plugin that ships with Watermelon is deprecated and no longer necessary. Delete it from your Babel config as it will be removed in a future update ### Refactoring - Removed dependency on `async` (Web Worker should be ~30KB smaller) - Refactored `Collection` and `simpleObserver` for getting changes in an array and also adds CollectionChangeTypes for differentiation between different changes - Updated dependencies - Simplified build system by using relative imports - Simplified build package by outputting CJS-only files ## 0.6.1 - 2018-09-20 ### Added - Added iOS and Android integration tests and lint checks to TravisCI ### Changed - Changed Flow setup for apps using Watermelon - see docs/Advanced/Flow.md - Improved documentation, and demo code - Updated dependencies ### Fixed - Add quotes to all names in sql queries to allow keywords as table or column names - Fixed running model tests in apps with Watermelon in the loop - Fixed Flow when using Watermelon in apps ## 0.6.0 - 2018-09-05 Initial release of WatermelonDB ================================================ FILE: docs-website/docs/docs/CONTRIBUTING.md ================================================ --- title: Contributing hide_title: true --- We need you **WatermelonDB is an open-source project and it needs your help to thrive!** If there's a missing feature, a bug, or other improvement you'd like, we encourage you to contribute! Feel free to open an issue to get some guidance and see [Contributing guide](./CONTRIBUTING.md) for details about project setup, testing, etc. If you're just getting started, see [good first issues](https://github.com/Nozbe/WatermelonDB/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) that are easy to contribute to. If you make a non-trivial contribution, email me, and I'll send you a nice 🍉 sticker! If you make or are considering making an app using WatermelonDB, please let us know!
## Before you send a pull request 1. Did you add or changed some functionality? Add (or modify) tests! 2. Check if the automated tests pass ```bash yarn ci:check ``` 3. Format the files you changed ```bash yarn prettier ``` 4. Mark your changes in CHANGELOG Put a one-line description of your change under Added/Changed section. See [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Running Watermelon in development ### Download source and dependencies ```bash git clone https://github.com/Nozbe/WatermelonDB.git cd WatermelonDB yarn ``` ### Developing Watermelon alongside your app To work on Watermelon code in the sandbox of your app: ```bash yarn dev ``` This will create a `dev/` folder in Watermelon and observe changes to source files (only JavaScript files) and recompile them as needed. Then in your app: ```bash cd node_modules/@nozbe rm -fr watermelondb ln -s path-to-watermelondb/dev watermelondb ``` **This will work in Webpack but not in Metro** (React Native). Metro doesn't follow symlinks. Instead, you can compile WatermelonDB directly to your project: ```bash DEV_PATH="/path/to/your/app/node_modules/@nozbe/watermelondb" yarn dev ``` ### Running tests This runs Jest, ESLint and Flow: ```bash yarn ci:check ``` You can also run them separately: ```bash yarn test yarn eslint yarn flow ``` ### Editing files We recommend VS Code with ESLint, Flow, and Prettier (with prettier-eslint enabled) plugins for best development experience. (To see lint/type issues inline + have automatic reformatting of code) ## Editing native code In `native/ios` and `native/android` you'll find the native bridge code for React Native. It's recommended to use the latest stable version of Xcode / Android Studio to work on that code. ### Integration tests If you change native bridge code or `adapter/sqlite` code, it's recommended to run integration tests that run the entire Watermelon code with SQLite and React Native in the loop: ```bash yarn test:ios yarn test:android ``` ### Running tests manualy - For iOS open the `native/iosTest/WatermelonTester.xcworkspace` project and hit Cmd+U. - For Android open `native/androidTest` in AndroidStudio navigate to `app/src/androidTest/java/com.nozbe.watermelonTest/BridgeTest` and click green arrow near `class BridgeTest` ### Native linting Make sure the native code you're editing conforms to Watermelon standards: ```bash yarn ktlint ``` ### Native code troubleshooting 1. If `test:ios` fails in terminal: - Run tests in Xcode first before running from terminal - Make sure you have the right version of Xcode CLI tools set in Preferences -> Locations 1. Make sure you're on the most recent stable version of Xcode / Android Studio 1. Remove native caches: - Xcode: `~/Library/Developer/Xcode/DerivedData`: - Android: `.gradle` and `build` folders in `native/android` and `native/androidTest` - `node_modules` (because of React Native precompiled third party libraries) ================================================ FILE: docs-website/docs/docs/CRUD.md ================================================ # Create, Read, Update, Delete When you have your [Schema](./Schema.md) and [Models](./Model.md) defined, learn how to manipulate them! ## Reading #### Get a collection The `Collection` object is how you find, query, and create new records of a given type. ```js const postsCollection = database.get('posts') ``` Pass the [table name](./Schema.md) as the argument. #### Find a record (by ID) ```js const postId = 'abcdefgh' const post = await database.get('posts').find(postId) ``` `find()` returns a Promise. If the record cannot be found, the Promise will be rejected. #### Query records Find a list of records matching given conditions by making a Query and then fetching it: ```js const allPosts = await database.get('posts').query().fetch() const numberOfStarredPosts = await database.get('posts').query( Q.where('is_starred', true) ).fetchCount() ``` **➡️ Learn more:** [Queries](./Query.md) ## Modifying the database All modifications to the database (like creating, updating, deleting records) must be done **in a Writer**, either by wrapping your work in `database.write()`: ```js await database.write(async () => { const someComment = await database.get('comments').find(commentId) await someComment.update((comment) => { comment.isSpam = true }) }) ``` Or by defining a `@writer` method on a Model: ```js import { writer } from '@nozbe/watermelondb/decorators' class Comment extends Model { // (...) @writer async markAsSpam() { await this.update(comment => { comment.isSpam = true }) } } ``` **➡️ Learn more:** [Writers](./Writers.md) ### Create a new record ```js const newPost = await database.get('posts').create(post => { post.title = 'New post' post.body = 'Lorem ipsum...' }) ``` `.create()` takes a "builder function". In the example above, the builder will get a `Post` object as an argument. Use this object to set values for [fields you defined](./Model.md). **Note:** Always `await` the Promise returned by `create` before you access the created record. **Note:** You can only set fields inside `create()` or `update()` builder functions. ### Update a record ```js await somePost.update(post => { post.title = 'Updated title' }) ``` Like creating, updating takes a builder function, where you can use field setters. **Note:** Always `await` the Promise returned by `update` before you access the modified record. ### Delete a record There are two ways of deleting records: syncable (mark as deleted), and permanent. If you only use Watermelon as a local database, destroy records permanently, if you [synchronize](./Sync/Intro.md), mark as deleted instead. ```js await somePost.markAsDeleted() // syncable await somePost.destroyPermanently() // permanent ``` **Note:** Do not access, update, or observe records after they're deleted. ## Advanced - `Model.observe()` - usually you only use this [when connecting records to components](./Components.md), but you can manually observe a record outside of React components. The returned [RxJS](https://github.com/reactivex/rxjs) `Observable` will emit the record immediately upon subscription, and then every time the record is updated. If the record is deleted, the Observable will complete. - `Query.observe()`, `Relation.observe()` — analagous to the above, but for [Queries](./Query.md) and [Relations](./Relation.md) - `Query.observeWithColumns()` - used for [sorted lists](./Components.md) - `Collection.findAndObserve(id)` — same as using `.find(id)` and then calling `record.observe()` - `Model.prepareUpdate()`, `Collection.prepareCreate`, `Database.batch` — used for [batch updates](./Writers.md) - `Database.unsafeResetDatabase()` destroys the whole database - [be sure to see this comment before using it](https://github.com/Nozbe/WatermelonDB/blob/22188ee5b6e3af08e48e8af52d14e0d90db72925/src/Database/index.js#L131) - To override the `record.id` during the creation, e.g. to sync with a remote database, you can do it by `record._raw` property. Be aware that the `id` must be of type `string`. ```js await database.get('posts').create(post => { post._raw.id = serverId }) ``` ### Advanced: Unsafe raw execute ⚠️ Do not use this if you don't know what you're doing... There is an escape hatch to drop down from WatermelonDB to underlying database level to execute arbitrary commands. Use as a last resort tool: ```js await database.write(() => { // sqlite: await database.adapter.unsafeExecute({ sqls: [ // [sql_query, [placeholder arguments, ...]] ['create table temporary_test (id, foo, bar)', []], ['insert into temporary_test (id, foo, bar) values (?, ?, ?)', ['t1', true, 3.14]], ] }) // lokijs: await database.adapter.unsafeExecute({ loki: loki => { loki.addCollection('temporary_test', { unique: ['id'], indices: [], disableMeta: true }) loki.getCollection('temporary_test').insert({ id: 't1', foo: true, bar: 3.14 }) } }) }) ``` * * * ## Next steps ➡️ Now that you can create and update records, [**connect them to React components**](./Components.md) ================================================ FILE: docs-website/docs/docs/Components.md ================================================ # Connecting Components After you [define some Models](./Model.md), it's time to connect Watermelon to your app's interface. We're using React in this guide, however WatermelonDB can be used with any UI framework. **Note:** If you're not familiar with higher-order components, read [React documentation](https://reactjs.org/docs/higher-order-components.html), check out [`recompose`](https://github.com/acdlite/recompose)… or just read the examples below to see it in practice! ## Reactive components Here's a very simple React component rendering a `Comment` record: ```jsx const Comment = ({ comment }) => (

{comment.body}

) ``` Now we can fetch a comment: `const comment = await commentsCollection.find(id)` and then render it: ``. The only problem is that this is **not reactive**. If the Comment is updated or deleted, the component will not re-render to reflect the changes. (Unless an update is forced manually or the parent component re-renders). Let's enhance the component to make it _observe_ the `Comment` automatically: ```jsx import { withObservables } from '@nozbe/watermelondb/react' const enhance = withObservables(['comment'], ({ comment }) => ({ comment // shortcut syntax for `comment: comment.observe()` })) const EnhancedComment = enhance(Comment) export default EnhancedComment ``` Now, if we render ``, it **will** update every time the comment changes. ### Reactive lists Let's render the whole `Post` with comments: ```jsx import { withObservables } from '@nozbe/watermelondb/react' import EnhancedComment from 'components/Comment' const Post = ({ post, comments }) => (

{post.name}

{post.body}

Comments

{comments.map(comment => )}
) const enhance = withObservables(['post'], ({ post }) => ({ post, comments: post.comments, // Shortcut syntax for `post.comments.observe()` })) const EnhancedPost = enhance(Post) export default EnhancedPost ``` Notice a couple of things: 1. We're starting with a simple non-reactive `Post` component 2. Like before, we enhance it by observing the `Post`. If the post name or body changes, it will re-render. 3. To access comments, we fetch them from the database and observe using `post.comments.observe()` and inject a new prop `comments`. (`post.comments` is a Query created using `@children`). Note that we can skip `.observe()` and just pass `post.comments` for convenience — `withObservables` will call observe for us 4. By **observing the Query**, the `` component will re-render if a comment is created or deleted 5. However, observing the comments Query will not re-render `` if a comment is _updated_ — we render the `` so that _it_ observes the comment and re-renders if necessary. ### Reactive relations The `` component we made previously only renders the body of the comment but doesn't say who posted it. Assume the `Comment` model has a `@relation('users', 'author_id') author` field. Let's render it: ```jsx const Comment = ({ comment, author }) => (

{comment.body} — by {author.name}

) const enhance = withObservables(['comment'], ({ comment }) => ({ comment, author: comment.author, // shortcut syntax for `comment.author.observe()` })) const EnhancedComment = enhance(Comment) ``` `comment.author` is a [Relation object](./Relation.md), and we can call `.observe()` on it to fetch the `User` and then observe changes to it. If author's name changes, the component will re-render. **Note** again that we can also pass `Relation` objects directly for convenience, skipping `.observe()` ### Reactive optional relations Continuing the above example, if the comment has no author, the `comment.author_id` must be null. If `comment.author_id` has a value, the author record it refers to must be stored in the database, otherwise `withObservables` will throw an error that the record was not found. ### Reactive counters Let's make a `` component to display on a *list* of Posts, with only a brief summary of the contents and only the number of comments it has: ```jsx const PostExcerpt = ({ post, commentCount }) => (

{post.name}

{getExcerpt(post.body)}

{commentCount} comments
) const enhance = withObservables(['post'], ({ post }) => ({ post, commentCount: post.comments.observeCount() })) const EnhancedPostExcerpt = enhance(PostExcerpt) ``` This is very similar to normal ``. We take the `Query` for post's comments, but instead of observing the _list_ of comments, we call `observeCount()`. This is far more efficient. And as always, if a new comment is posted, or one is deleted, the component will re-render with the updated count. ## Hey, what about React Hooks? We get it — HOCs are so 2017, and Hooks are the future! And we agree. However, Hooks are not compatible with WatermelonDB's asynchronous API. You _could_ use alternative open-source Hooks for Rx Observables, however we don't recommend that. They won't work correctly in all cases and won't be as optimized for performance with WatermelonDB as `withObservables`. In the future, once Concurrent React is fully developed and published, WatermelonDB will have official hooks. **[See discussion about official `useObservables` Hook](https://github.com/Nozbe/withObservables/issues/16)** ## Understanding `withObservables` Let's unpack this: ```js withObservables(['post'], ({ post }) => ({ post: post.observe(), commentCount: post.comments.observeCount() })) ``` 1. Starting from the second argument, `({ post })` are the input props for the component. Here, we receive `post` prop with a `Post` object. 2. These: ```js ({ post: post.observe(), commentCount: post.comments.observeCount() }) ``` are the enhanced props we inject. The keys are props' names, and values are `Observable` objects. Here, we override the `post` prop with an observable version, and create a new `commentCount` prop. 3. The first argument: `['post']` is a list of props that trigger observation restart. So if a different `post` is passed, that new post will be observed. If you pass `[]`, the rendered Post will not change. You can pass multiple prop names if any of them should cause observation to re-start. Think of it the same way as the `deps` argument you pass to `useEffect` hook. 4. **Rule of thumb**: If you want to use a prop in the second arg function, pass its name in the first arg array ## Advanced 1. **findAndObserve**. If you have, say, a post ID from your Router (URL in the browser), you can use: ```js withObservables(['postId'], ({ postId, database }) => ({ post: database.get('posts').findAndObserve(postId) })) ``` 1. **RxJS transformations**. The values returned by `Model.observe()`, `Query.observe()`, `Relation.observe()` are [RxJS Observables](https://github.com/ReactiveX/rxjs). You can use standard transforms like mapping, filtering, throttling, startWith to change when and how the component is re-rendered. 1. **Custom Observables**. `withObservables` is a general-purpose HOC for Observables, not just Watermelon. You can create new props from any `Observable`. ### Advanced: observing sorted lists If you have a list that's dynamically sorted (e.g. sort comments by number of likes), use `Query.observeWithColumns` to ensure the list is re-rendered when its order changes: ```jsx // This is a function that sorts an array of comments according to its `likes` field // I'm using `ramda` functions for this example, but you can do sorting however you like const sortComments = sortWith([ descend(prop('likes')) ]) const CommentList = ({ comments }) => (
{sortComments(comments).map(comment => )}
) const enhance = withObservables(['post'], ({ post }) => ({ comments: post.comments.observeWithColumns(['likes']) })) const EnhancedCommentList = enhance(CommentList) ``` If you inject `post.comments.observe()` into the component, the list will not re-render to change its order, only if comments are added or removed. Instead, use `query.observeWithColumns()` with an array of [**column names**](./Schema.md) you use for sorting to re-render whenever a record on the list has any of those fields changed. ### Advanced: observing 2nd level relations If you have 2nd level relations, like author's `Contact` info, and want to connect it to a component as well, you cannot simply use `post.author.contact.observe()` in `withObservables`. Remember, `post.author` is not a `User` object, but a `Relation` that has to be asynchronously fetched. Before accessing and observing the `Contact` relation, you need to resolve the `author` itself. Here is the simplest way to do it: ```js import { compose } from '@nozbe/watermelondb/react' const enhance = compose( withObservables(['post'], ({ post }) => ({ post, author: post.author, })), withObservables(['author'], ({ author }) => ({ contact: author.contact, })), ) const EnhancedPost = enhance(PostComponent); ``` If you're not familiar with function composition, read the `enhance` function from top to bottom: - first, the PostComponent is enhanced by changing the incoming `post` prop into its observable version, and by adding a new `author` prop that will contain the fetched contents of `post.author` - then, the enhanced component is enhanced once again, by adding a `contact` prop containing the fetched contents of `author.contact`. #### Alternative method of observing 2nd level relations If you are familiar with `rxjs`, another way to achieve the same result is using `switchMap` operator: ```js import { switchMap } from 'rxjs/operators' const enhance = withObservables(['post'], ({post}) => ({ post: post, author: post.author, contact: post.author.observe().pipe(switchMap(author => author.contact.observe())) })) const EnhancedPost = enhance(PostComponent) ``` Now `PostComponent` will have `Post`, `Author` and `Contact` props. #### 2nd level optional relations If you have an optional relation between `Post` and `Author`, the enhanced component might receive `null` as `author` prop. As you must always return an observable for the `contact` prop, you can use `rxjs`'s `of` function to create a default or empty `Contact` prop: ```js import { of as of$ } from 'rxjs' import { withObservables, compose } from '@nozbe/watermelondb/react' const enhance = compose( withObservables(['post'], ({ post }) => ({ post, author: post.author, })), withObservables(['author'], ({ author }) => ({ contact: author ? author.contact.observe() : of$(null), })), ) ``` With the `switchMap` approach, you can do: ```js const enhance = withObservables(['post'], ({post}) => ({ post: post, author: post.author, contact: post.author.observe().pipe( switchMap(author => author ? author.contact : of$(null)) ) })) ``` ## Database Provider To prevent prop drilling you can use the Database Provider and the `withDatabase` Higher-Order Component. ```jsx import { DatabaseProvider } from '@nozbe/watermelondb/react' // ... const database = new Database({ adapter, modelClasses: [Blog, Post, Comment], }) render( , document.getElementById('application') ) ``` To consume the database in your components you just wrap your component like so: ```jsx import { withDatabase, compose } from '@nozbe/watermelondb/react' // ... export default compose( withDatabase, withObservables([], ({ database }) => ({ blogs: database.get('blogs').query(), })), )(BlogList) ``` The database prop in the `withObservables` Higher-Order Component is provided by the database provider. ### `useDatabase` You can also consume `Database` object using React Hooks syntax: ```js import { useDatabase } from '@nozbe/watermelondb/react' const Component = () => { const database = useDatabase() } ``` * * * ## Next steps ➡️ Next, learn more about [**custom Queries**](./Query.md) ================================================ FILE: docs-website/docs/docs/Implementation/Architecture.md ================================================ # Architecture ## Base objects `Database` is the root object of Watermelon. It owns: - a `DatabaseAdapter` - a map of `Collection`s `DatabaseAdapter` connects Watermelon's reactive world to low-level imperative world of databases. See [Adapters](./DatabaseAdapters.md). `Collection` manages all records of a given kind: - it has a cache of records already fetched from the database (`RecordCache`) - it has the public API to `find`, `query` and `create` existing records - it implements fetch/update/delete operations on records `Model` is an instance of a collection record. A model _class_ describes a _kind_ of a record. `Model` is the base class for your concrete models (e.g. `Post`, `Comment`, `Task`): - it describes the specific instance - `id` + all custom fields and actions - it has public API to `update`, `markAsDeleted` and `destroyPermanently` - implements record-level observation `observe()` - static fields describe base information about a model (`table`, `associations`) - See [Defining models](../Model.md) As a general rule, `Model` manages the state of a specific instance, and `Collection` of the entire collection of records. So for example, `model.markAsDeleted()` changes the local state of called record, but then delegates to its collection to notify collection observers and actually remove from the database `Query` is a helper object that gives us a nice API to perform queries (`query.observe()`, `query.fetchCount()`): - created via `collection.query()` - encapsulates a `QueryDescription` structure which actually describes the query conditions - fetch/observe methods actually delegate to `Collection` to perform database operations - caches `Observable`s created by `observe/observeCount` methods so they can be reused and shared ## Helper functions Watermelon's objects and classes are meant to be as minimal as possible — only manage their own state and be an API for your app. Most logic should be stateless, and implemented as pure functions: `QueryDescription` is a structure (object) describing the query, built using `Q.*` helper functions `encodeMatcher()`, `simpleObserver()`, `reloadingObserver()`, `fieldObserver()` implement query observation logic. Model decorators transform simple class properties into Watermelon-aware record fields. Much of Adapters' logic is implemented as pure functions too. See [Adapters](./DatabaseAdapters.md). ================================================ FILE: docs-website/docs/docs/Implementation/DatabaseAdapters.md ================================================ # Database Adapters In this guide, you'll learn how to add support for new databases and new platforms to WatermelonDB. ## Introduction WatermelonDB is designed to be database-agnostic. It's a frontend JavaScript database framework, but its high-level abstractions can be plugged in to any underlying database, platform, or UI framework. We call the translation layer between underlying databases and high-level WatermelonDB APIs **database adapters**. ## Currently supported databases ### SQLite Supported frameworks: - React Native: - Operating systems: - iOS - Android - Implementations: - JSI adapter - New NativeModule (added in 0.26) - Legacy NativeModule (deprecated in 0.26) - NodeJS - via `better-sqlite3` - contributed by Sid Ferreira ### LokiJS Supported frameworks: - Web - Storage: IndexedDB - NodeJS - Storage: in-memory only Why [LokiJS](http://techfort.github.io/LokiJS/)? WebSQL would be a perfect fit for Watermelon, but sadly is a dead API, so we must use IndexedDB, but its querying capabilities make it unsuitable as a serious database. LokiJS implements a very fast in-memory querying API, using IndexedDB as storage. ## Contribute these adapters! Please contribute to WatermelonDB. We'd love to support these platforms and databases: - [React Native for Windows and macOS](https://microsoft.github.io/react-native-windows/) - [Realm database](https://github.com/realm/realm-cpp) - SQLite for web ([sql.js](https://github.com/sql-js/sql.js/) or [absurd-sql](https://github.com/jlongster/absurd-sql)) - LokiJS NodeJS storage option - SQLite for [Electron](https://www.electronjs.org), Tauri, etc. - SQLite for [Capacitor](https://capacitorjs.com) ## Adding new React Native operating systems Thanks to our cross-platform JSI (C++) SQLite adapter, it takes very little code to add support for new React Native platforms (like macOS or Windows). All you have to do is this: - Compile `.cpp` files in `native/shared` folder - Link library with `sqlite3` - Use system-provided sqlite3 if possible (we do that on iOS) - If not, we ship sqlite source code via NPM `@nozbe/sqlite` package. Just add `node_modules/@nozbe/sqlite/**` to search paths and compile `node_modules/@nozbe/sqlite/*/sqlite3.c` - Provide implementation for `native/shared/DatabasePlatform.h` - Please note that most of these functions can remain unimplemented (empty) for basic operation - e.g. you can skip logging, memory, turbo json support - Provide a React Native hook that calls `Database::install(jsi::Runtime *)` Check out `native/android-jsi` and `native/ios` for two implementation examples. You might be able to reuse some code from these, e.g. platform support stubs or `CMakeLists.txt`. ## Adding new frameworks to SQLite adapter Let's say you want to add support for a new JS+native framework, like Electron, Tauri, NativeScript or Capacitor. This takes more work, but ultimately, given that (iOS, Android, JS, C++, Objective-C, Java) are supported already (just for React Native and Node), you only need to develop the glue code necessary to bridge the gap between `src/adapters/sqlite` JS code, and the native but non-React-Native-specific bits. You'll need some familiarity with the platform you're trying to support, but little WatermelonDB/React Native/C++ familiary will be needed to get this done. ### JS-side glue The general SQLite implementation is in `src/adapters/sqlite/index.js`. It forwards database calls to `this._dispatcher`. The dispatcher is the JS-side bridge/glue code. See `src/adapters/sqlite/makeDispatcher` to see concrete dispatchers and add your own, depending on the platform's convention of calling native code. For example: - `makeDispatcher/index.js` (Node JS) just imports more JS code, since native=JS in this case - `makeDispatcher/index.native.js` (React Native) calls `require('react-native').NativeModules` ### Native-side glue Depending on the capabilities of the framework you want to support, there's a few ways to go about this: **The easy (JS-only) way**. If your framework has existing SQLite bindings in JavaScript **that work synchronously** (similar to [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) in Node), you can reuse code in `src/adapters/sqlite/sqlite-node` **The Java/Objective-C way**. If your framework targets iOS, macOS, or Android, and you're terrified of C++, you can reuse the React Native NativeModule implementation. - Look at `native/ios/WatermelonDB/objc/WMDatabase.{h,m}` and `WMDatabaseDriver.{h,m}` for the iOS implementation. These files contain SQLite, WatermelonDB, and iOS-specific logic, but without React Native details. You need to provide an equivalent of `WMDatabaseBridge` (the React Native glue between `WMDatabaseDriver` and JS) for your framework - For Android, look at `native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java` and `WMDatabaseDriver.java` **The C++ way**. The best way is to refactor the React Native C++ JSI module to split off React Native-specific logic and leave a framework-independent core. Doing this way ensures that your port will receive support for new operating systems, and all the new features, as the core React Native module will focus on the C++ implementation in the long term. Contact @radex for guidance about this. ## Adding new databases If you want to contribute support to new underlying databases (i.e. not SQL or LokiJS-based), this is a rough sketch of what's required: - A new `FoodbAdapter` that conforms to `DatabaseAdapter` (`src/adapters/type.js`). You can initially skip some method implementations for basic support, most basic are `find, query, count, batch`. - Some way to convert WatermelonDB's query language into queries specific for your database. For reference, see: - `src/adapters/sqlite/encodeQuery` for generating SQL - `src/adapters/lokijs/worker/encodeQuery` for generating LokiJS queries + `executeQuery` which executes joins (which Loki does not natively support) ================================================ FILE: docs-website/docs/docs/Implementation/Publishing.md ================================================ # Publishing WatermelonDB ### Step 1: Run all automated tests ```bash yarn ci:check && yarn test:ios && yarn test:android && yarn ktlint ``` ### Step 2: Test manually in a real app ```bash yarn build ``` Then copy `dist/` and replace `app/node_modules/@nozbe/watermelondb` with it. If a quick smoke test passes, proceed to publish. ### Step 3: Update CHANGELOG Change `Unreleased` header to the new version, add new Unreleased ### Step 4: Publish ```bash npm run release # skips checks (only use on prerelease) npm run release --skip-checks ``` Don't use `yarn release` (or `yarn publish`) — it won't work (yarn doesn't support NPM 2FA). ================================================ FILE: docs-website/docs/docs/Implementation/SyncImpl.md ================================================ --- title: Sync implementation hide_title: true --- # Sync implementation details If you're looking for a guide to implement Watermelon Sync in your app, see [**Synchronization**](../Sync/Intro.md). If you want to contribute to Watermelon Sync, or implement your own synchronization engine from scratch, read this. ## Implementing your own sync from scratch For basic details about how changes tracking works, see: [📺 Digging deeper into WatermelonDB](https://www.youtube.com/watch?v=uFvHURTRLxQ) Why you might want to implement a custom sync engine? If you have an existing remote server architecture that's difficult to adapt to Watermelon sync protocol, or you specifically want a different architecture (e.g. single HTTP request -- server resolves conflicts). Be warned, however, that **implementing sync that works reliably** is a hard problem, so we recommend sticking to Watermelon Sync and tweaking it as needed. The rest of this document contains details about how Watermelon Sync works - you can use that as a blueprint for your own work. If possible, please use sync implementation helpers from `sync/*.js` to keep your custom sync implementation have as much commonality as possible with the standard implementation. This is good both for you and for the rest of WatermelonDB community, as we get to share improvements and bug fixes. If the helpers are _almost_ what you need, but not quite, please send pull requests with improvements! ## Watermelon Sync -- Details ### General design - master/replica - server is the source of truth, client has a full copy and syncs back to server (no peer-to-peer syncs) - two phase sync: first pull remote changes to local app, then push local changes to server - client resolves conflicts - content-based, not time-based conflict resolution - conflicts are resolved using per-column client-wins strategy: in conflict, server version is taken except for any column that was changed locally since last sync. - local app tracks its changes using a _status (synced/created/updated/deleted) field and _changes field (which specifies columns changed since last sync) - server only tracks timestamps (or version numbers) of every record, not specific changes - sync is performed for the entire database at once, not per-collection - eventual consistency (client and server are consistent at the moment of successful pull if no local changes need to be pushed) - non-blocking: local database writes (but not reads) are only momentarily locked when writing data but user can safely make new changes throughout the process ### Sync procedure 1. Pull phase - get `lastPulledAt` timestamp locally (null if first sync) - call `pullChanges` function, passing `lastPulledAt` - server responds with all changes (create/update/delete) that occured since `lastPulledAt` - server serves us with its current timestamp - IN ACTION (lock local writes): - ensure no concurrent syncs - apply remote changes locally - insert new records - if already exists (error), update - if locally marked as deleted (error), un-delete and update - update records - if synced, just replace contents with server version - if locally updated, we have a conflict! - take remote version, apply local fields that have been changed locally since last sync (per-column client wins strategy) - record stays marked as updated, because local changes still need to be pushed - if locally marked as deleted, ignore (deletion will be pushed later) - if doesn't exist locally (error), create - destroy records - if already deleted, ignore - if locally changed, destroy anyway - ignore children (server ought to schedule children to be destroyed) - if successful, save server's timestamp as new `lastPulledAt` 2. Push phase - Fetch local changes - Find all locally changed records (created/updated record + deleted IDs) for all collections - Strip _status, _changed - Call `pushChanges` function, passing local changes object, and the new `lastPulledAt` timestamp - Server applies local changes to database, and sends OK - If one of the pushed records has changed *on the server* since `lastPulledAt`, push is aborted, all changes reverted, and server responds with an error - IN ACTION (lock local writes): - markLocalChangesAsSynced: - take local changes fetched in previous step, and: - permanently destroy records marked as deleted - mark created/updated records as synced and reset their _changed field - note: *do not* mark record as synced if it changed locally since `fetch local changes` step (user could have made new changes that need syncing) ### Notes - This procedure is designed such that if sync fails at any moment, and even leaves local app in inconsistent (not fully synced) state, we should still achieve consistency with the next sync: - applyRemoteChanges is designed such that if all changes are applied, but `lastPulledAt` doesn't get saved — so during next pull server will serve us the same changes, second applyRemoteChanges will arrive at the same result - local changes before "fetch local changes" step don't matter at all - user can do anything - local changes between "fetch local changes" and "mark local changes as synced" will be ignored (won't be marked as synced) - will be pushed during next sync - if changes don't get marked as synced, and are pushed again, server should apply them the same way - remote changes between pull and push phase will be locally ignored (will be pulled next sync) unless there's a per-record conflict (then push fails, but next sync resolves both pull and push) ### Migration Syncs Schema versioning and migrations complicate sync, because a client might not be able to sync some tables and columns, but after upgrade to the newest version, it should be able to get consistent sync. To be able to do that, we need to know what's the schema version at which the last sync occured. Unfortunately, Watermelon Sync didn't track that from the first version, so backwards-compat is required. ``` synchronize({ migrationsEnabledAtVersion: XXX }) . . . . LPA = last pulled at MEA = migrationsEnabledAtVersion, schema version at which future migration support was introduced LS = last synced schema version (may be null due to backwards compat) CV = current schema version LPA MEA LS CV migration set LS=CV? comment null X X 10 null YES first sync. regardless of whether the app is migration sync aware, we can note LS=CV to fetch all migrations once available 100 null X X null NO indicates app is not migration sync aware so we're not setting LS to allow future migration sync 100 X 10 10 null NO up to date, no migration 100 9 9 10 {9-10} YES correct migration sync 100 9 null 10 {9-10} YES fallback migration. might not contain all necessary migrations, since we can't know for sure that user logged in at then-current-version==MEA 100 9 11 10 ERROR NO LS > CV indicates programmer error 100 11 X 10 ERROR NO MEA > CV indicates programmer error ``` ### Reference This design has been informed by: - 10 years of experience building synchronization at Nozbe - Kinto & Kinto.js - https://github.com/Kinto/kinto.js/blob/master/src/collection.js - https://kintojs.readthedocs.io/en/latest/api/#fetching-and-publishing-changes - Histo - https://github.com/mirkokiefer/syncing-thesis ================================================ FILE: docs-website/docs/docs/Installation.mdx ================================================ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Installation First, add Watermelon to your project: ```bash yarn add @nozbe/watermelondb # (or with npm:) npm install @nozbe/watermelondb ``` ## React Native setup 1. Install the Babel plugin for decorators if you haven't already: ```bash yarn add --dev @babel/plugin-proposal-decorators # (or with npm:) npm install -D @babel/plugin-proposal-decorators ``` 2. Add ES6 decorators support to your `.babelrc` file: ```json { "presets": ["module:metro-react-native-babel-preset"], "plugins": [["@babel/plugin-proposal-decorators", { "legacy": true }]] } ``` 3. Set up your iOS or Android project — see instructions below ### iOS (React Native) At least Xcode 15.x is recommended for building (earlier versions are likely to work, but not tested for compatibility). 1. **Set up Babel config in your project** See instructions above ⬆️ 2. **Link WatermelonDB's native library (using CocoaPods)** Open your `Podfile` and add this: ```ruby # Uncomment this line if you're not using auto-linking or if auto-linking causes trouble # pod 'WatermelonDB', path: '../node_modules/@nozbe/watermelondb' # WatermelonDB dependency, should not be needed on modern React Native # (please file an issue if this causes issues for you) # pod 'React-jsi', path: '../node_modules/react-native/ReactCommon/jsi', modular_headers: true # WatermelonDB dependency pod 'simdjson', path: '../node_modules/@nozbe/simdjson', modular_headers: true ``` Make sure you run `pod install` (or `bundle exec pod install`) after updating `Podfile`. We highly recommend that you _do not_ use frameworks. If WatermelonDB fails to build in the frameworks mode for you, [use this workaround](https://github.com/Nozbe/WatermelonDB/issues/1285#issuecomment-1381323060) to force building it in static library mode. Manual (non-CocoaPods) linking is not supported. ### Android (React Native) **Set up Babel config in your project** See instructions above ⬆️
Linking Manually By default, React Native uses **autolinking**, and **you don't need the steps below**! Only use this with old versions of React Native or if you opt out of autolinking. 1. In `android/settings.gradle`, add: ```gradle include ':watermelondb' project(':watermelondb').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android') ``` 2. In `android/app/build.gradle`, add: ```gradle // ... dependencies { // ... implementation project(':watermelondb') // ⬅️ This! } ``` 3. And finally, in `android/app/src/main/java/{YOUR_APP_PACKAGE}/MainApplication.java`, add: ```java // ... import com.nozbe.watermelondb.WatermelonDBPackage; // ⬅️ This! // ... @Override protected List getPackages() { return Arrays.asList( new MainReactPackage(), new WatermelonDBPackage() // ⬅️ Here! ); } ```
Using with react-native-screens or react-native-gesture-handler If you are using recent versions of react-native-screens or react-native-gesture-handler, you will need to set the kotlin version to 1.5.20 or above (see section above)
Troubleshooting If you get this error: > `Can't find variable: Symbol` You're using an ancient version of JSC. Install [`jsc-android`](https://github.com/react-community/jsc-android-buildscripts) or Hermes.
JSI Installation (Optional, recommended) To enable fast, highly performant, synchronous JSI operation on Android, you need to take a few additional steps manually. 1. Make sure you have NDK installed (version `20.1.5948944` has been tested to work when writing this guide) 2. In `android/settings.gradle`, add: ```gradle include ':watermelondb-jsi' project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi') ``` 3. In `android/app/build.gradle`, add: ```gradle // ... android { // ... packagingOptions { pickFirst '**/libc++_shared.so' // ⬅️ This (if missing) } } dependencies { // ... implementation project(':watermelondb-jsi') // ⬅️ This! } ``` 4. If you're using Proguard, in `android/app/proguard-rules.pro` add: ``` -keep class com.nozbe.watermelondb.** { *; } ``` 5. And finally, in `android/app/src/main/java/{YOUR_APP_PACKAGE}/MainApplication.{java|kt}`, add: ``` // ... import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage; // ⬅️ This! // ... @Override protected List getPackages() { return Arrays.asList( // new MyReactNativePackage(), new WatermelonDBJSIPackage() // ⬅️ Here! ); } ``` ``` // ... import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage // ⬅️ This! // ... override val reactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) { override fun getPackages(): List { return PackageList(this).packages.apply { // Packages that cannot be autolinked yet can be added manually here, for example: // add(new MyReactNativePackage()); add(WatermelonDBJSIPackage()) } } } ``` #### Troubleshooting JSI issues If you see a crash at launch similar to this after updating React Native: ``` signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x79193ac4a9 (...) backtrace: (...) watermelondb::createMethod(facebook::jsi::Runtime&, facebook::jsi::Object&, char const*, unsigned int, std::__ndk1::function)+88 watermelondb::Database::install(facebook::jsi::Runtime*)+96) (...) ``` … this is most likely due to broken `libc++_shared`. Run `./gradlew clean` from `native/android`, then try again.
## Web setup If you haven't already, install Babel plugins for decorators, static class properties, and async/await to get the most out of Watermelon. This assumes you use Babel 7 and already support ES6 syntax. ```bash yarn add --dev @babel/plugin-proposal-decorators yarn add --dev @babel/plugin-proposal-class-properties yarn add --dev @babel/plugin-transform-runtime # (or with npm:) npm install -D @babel/plugin-proposal-decorators npm install -D @babel/plugin-proposal-class-properties npm install -D @babel/plugin-transform-runtime ``` ### Webpack If you're using Webpack, add ES7 support to your `.babelrc` file: ```json { "plugins": [ ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties", { "loose": true }], [ "@babel/plugin-transform-runtime", { "helpers": true, "regenerator": true } ] ] } ``` ### Vite If you're using Vite, you'll need to edit your vite.config.js file. If you're working with React, ensure your config looks something like this: ```js import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [ react({ babel: { plugins: [ ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties", { "loose": true }], [ "@babel/plugin-transform-runtime", { "helpers": true, "regenerator": true } ] ], } }), ] }); ``` If you're not using React, you can try this (untested): ```js import { defineConfig } from 'vite'; import babel from 'vite-plugin-babel'; export default defineConfig({ plugins: [ babel({ babelConfig: { babelrc: false, configFile: false, plugins: [ ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties", { "loose": true }], [ "@babel/plugin-transform-runtime", { "helpers": true, "regenerator": true } ] ], }, }), ] }); ``` ## Windows (React Native) WatermelonDB has **experimental** support for [React Native Windows](https://microsoft.github.io/react-native-windows/), added in v0.27. NOTE: As of v0.28, Windows support is not maintained due to lack of resources, minimal demand, and difficulty maintaining support over React Native upgrades. If you're interested in sponsoring Windows support, please email me. To set up: 1. Set up Babel config in your project - See instructions above for all React Native platforms 2. Run `npx react-native autolink-windows` to perform autolinking. See section below if you don't use autolinking. Caveats to keep in mind about React Native Windows support: - Windows support is new and experimental - Only JSI port is available, so you must initialize `SQLiteAdapter` with `{ jsi: true }` - JSI means that Remote Debugging (WebDebugger) is not available. Use direct debugging. - Enable Hermes when using WatermelonDB on RNW. Chakra has not been tested and may not work. - Turbo Sync has not been implemented - onDestroy event has not been implemented. This only causes issues if you need to reload JS bundle at runtime (other than in development).
Linking Manually By default, React Native uses **autolinking**, and **you don't need the steps below**! Follow [instructions on React Native Windows website](https://microsoft.github.io/react-native-windows/docs/native-modules-using), noting that: - Path to vcxproj: `node_modules\@nozbe\watermelondb\native\windows\WatermelonDB\WatermelonDB.vcxproj` - Name of project to reference: `WatermelonDB` - Header for PCH: `#include "winrt/WatermelonDB.h"` - Package provider: `PackageProviders().Append(winrt::WatermelonDB::ReactPackageProvider());`
## NodeJS (SQLite) setup You only need this if you want to use WatermelonDB in NodeJS with SQLite (e.g. for scripts that share code with your web/React Native app) 1. Install [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) peer dependency ```sh yarn add --dev better-sqlite3 # (or with npm:) npm install -D better-sqlite3 ``` --- ## Next steps ➡️ After Watermelon is installed, [**set it up**](./Setup.md) ================================================ FILE: docs-website/docs/docs/Model.md ================================================ # Model A **Model** class represents a type of thing in your app. For example, `Post`, `Comment`, `User`. Before defining a Model, make sure you [defined its schema](./Schema.md). ## Create a Model Let's define the `Post` model: ```js // model/Post.js import { Model } from '@nozbe/watermelondb' export default class Post extends Model { static table = 'posts' } ``` Specify the table name for this Model — the same you defined [in the schema](./Schema.md). Now add the new Model to `Database`: ```js // index.js import Post from 'model/Post' const database = new Database({ // ... modelClasses: [Post], }) ``` ### Associations Many models relate to one another. A `Post` has many `Comment`s. And every `Comment` belongs to a `Post`. (Every relation is double-sided). Define those associations like so: ```js class Post extends Model { static table = 'posts' static associations = { comments: { type: 'has_many', foreignKey: 'post_id' }, } } class Comment extends Model { static table = 'comments' static associations = { posts: { type: 'belongs_to', key: 'post_id' }, } } ``` On the "child" side (`comments`) you define a `belongs_to` association, and pass a column name (key) that points to the parent (`post_id` is the ID of the post the comment belongs to). On the "parent" side (`posts`) you define an equivalent `has_many` association and pass the same column name (⚠️ note that the name here is `foreignKey`). ## Add fields Next, define the Model's _fields_ (properties). Those correspond to [table columns](./Schema.md) defined earlier in the schema. ```js import { field, text } from '@nozbe/watermelondb/decorators' class Post extends Model { static table = 'posts' static associations = { comments: { type: 'has_many', foreignKey: 'post_id' }, } @text('title') title @text('body') body @field('is_pinned') isPinned } ``` Fields are defined using ES6 decorators. Pass **column name** you defined in Schema as the argument to `@field`. **Field types**. Fields are guaranteed to be the same type (string/number/boolean) as the column type defined in Schema. If column is marked `isOptional: true`, fields may also be null. **User text fields**. For fields that contain arbitrary text specified by the user (e.g. names, titles, comment bodies), use `@text` - a simple extension of `@field` that also trims whitespace. **Note:** Why do I have to type the field/column name twice? The database convention is to use `snake_case` for names, and the JavaScript convention is to use camelCase. So for any multi-word name, the two differ. Also, for resiliency, we believe it's better to be explicit, because over time, you might want to refactor how you name your JavaScript field names, but column names must stay the same for backward compatibility. ### Date fields For date fields, use `@date` instead of `@field`. This will return a JavaScript `Date` object (instead of Unix timestamp integer). ```js import { date } from '@nozbe/watermelondb/decorators' class Post extends Model { // ... @date('last_event_at') lastEventAt } ``` ### Derived fields Use ES6 getters to define model properties that can be calculated based on database fields: ```js import { field, text } from '@nozbe/watermelondb/decorators' class Post extends Model { static table = 'posts' @date('archived_at') archivedAt get isRecentlyArchived() { // in the last 7 days return this.archivedAt && this.archivedAt.getTime() > Date.now() - 7 * 24 * 3600 * 1000 } } ``` ### To-one relation fields To point to a related record, e.g. `Post` a `Comment` belongs to, or author (`User`) of a `Comment`, use `@relation` or `@immutableRelation`: ```js import { relation, immutableRelation } from '@nozbe/watermelondb/decorators' class Comment extends Model { // ... @relation('posts', 'post_id') post @immutableRelation('users', 'author_id') author } ``` **➡️ Learn more:** [Relation API](./Relation.md) ### Children (to-many relation fields) To point to a list of records that belong to this Model, e.g. all `Comment`s that belong to a `Post`, you can define a simple `Query` using `@children`: ```js import { children } from '@nozbe/watermelondb/decorators' class Post extends Model { static table = 'posts' static associations = { comments: { type: 'has_many', foreignKey: 'post_id' }, } @children('comments') comments } ``` Pass the _table name_ of the related records as an argument to `@children`. The resulting property will be a `Query` you can fetch, observe, or count. **Note:** You must define a `has_many` association in `static associations` for this to work **➡️ Learn more:** [Queries](./Query.md) ### Custom Queries In addition to `@children`, you can define custom Queries or extend existing ones, for example: ```js import { children } from '@nozbe/watermelondb/decorators' import { Q } from '@nozbe/watermelondb' class Post extends Model { static table = 'posts' static associations = { comments: { type: 'has_many', foreignKey: 'post_id' }, } @children('comments') comments @lazy verifiedComments = this.comments.extend( Q.where('is_verified', true) ) } ``` **➡️ Learn more:** [Queries](./Query.md) ### Writer methods Define **writers** to simplify creating and updating records, for example: ```js import { writer } from '@nozbe/watermelondb/decorators' class Comment extends Model { static table = 'comments' @field('is_spam') isSpam @writer async markAsSpam() { await this.update(comment => { comment.isSpam = true }) } } ``` Methods must be marked as `@writer` to be able to modify the database. **➡️ Learn more:** [Writers](./Writers.md) ## Advanced fields You can also use these decorators: - `@json` for complex serialized data - `@readonly` to make the field read-only - `@nochange` to disallow changes to the field _after the first creation_ And you can make observable compound properties using RxJS... **➡️ Learn more:** [Advanced fields](./Advanced/AdvancedFields.md) * * * ## Next steps ➡️ After you define some Models, learn the [**Create / Read / Update / Delete API**](./CRUD.md) ================================================ FILE: docs-website/docs/docs/Query.md ================================================ --- title: Querying hide_title: true --- # Query API **Querying** is how you find records that match certain conditions, for example: - Find all comments that belong to a certain post - Find all _verified_ comments made by John - Count all verified comments made by John or Lucy published under posts made in the last two weeks Because queries are executed on the database, and not in JavaScript, they're really fast. It's also how Watermelon can be fast even at large scales, because even with tens of thousands of records _total_, you rarely need to load more than a few dozen records at app launch. ## Defining Queries ### @children The simplest query is made using `@children`. This defines a `Query` for all comments that belong to a `Post`: ```js class Post extends Model { // ... @children('comments') comments } ``` **➡️ Learn more:** [Defining Models](./Model.md) ### Extended Query To **narrow down** a `Query` (add [extra conditions](#query-conditions) to an existing Query), use `.extend()`: ```js import { Q } from '@nozbe/watermelondb' import { children, lazy } from '@nozbe/watermelondb/decorators' class Post extends Model { // ... @children('comments') comments @lazy verifiedComments = this.comments.extend( Q.where('is_verified', true) ) @lazy verifiedAwesomeComments = this.verifiedComments.extend( Q.where('is_awesome', true) ) } ``` **Note:** Use `@lazy` when extending or defining new Queries for performance ### Custom Queries You can query any table like so: ```js import { Q } from '@nozbe/watermelondb' const users = await database.get('users').query( // conditions that a user must match: Q.on('comments', 'post_id', somePostId) ).fetch() ``` This fetches all users that made a comment under a post with `id = somePostId`. You can define custom queries on a Model like so: ```js class Post extends Model { // ... @lazy commenters = this.collections.get('users').query( Q.on('comments', 'post_id', this.id) ) } ``` ## Executing Queries Most of the time, you execute Queries by connecting them to React Components like so: ```js withObservables(['post'], ({ post }) => ({ post, comments: post.comments, verifiedCommentCount: post.verifiedComments.observeCount(), })) ``` **➡️ Learn more:** [Connecting to Components](./Components.md) #### Fetch To simply get the current list or current count (without observing future changes), use `fetch` / `fetchCount`. ```js const comments = await post.comments.fetch() const verifiedCommentCount = await post.verifiedComments.fetchCount() // Shortcut syntax: const comments = await post.comments const verifiedCommentCount = await post.verifiedComments.count ``` ## Query conditions ```js import { Q } from '@nozbe/watermelondb' // ... database.get('comments').query( Q.where('is_verified', true) ) ``` This will query **all** comments that are verified (all comments with one condition: the `is_verified` column of a comment must be `true`). When making conditions, you refer to [**column names**](./Schema.md) of a table (i.e. `is_verified`, not `isVerified`). This is because queries are executed directly on the underlying database. The second argument is the value we want to query for. Note that the passed argument must be the same type as the column (`string`, `number`, or `boolean`; `null` is allowed only if the column is marked as `isOptional: true` in the schema). #### Empty query ```js const allComments = await database.get('comments').query().fetch() ``` A Query with no conditions will find **all** records in the collection. **Note:** Don't do this unless necessary. It's generally more efficient to only query the exact records you need. #### Multiple conditions ```js database.get('comments').query( Q.where('is_verified', true), Q.where('is_awesome', true) ) ``` This queries all comments that are **both** verified **and** awesome. ### Conditions with other operators | Query | JavaScript equivalent | | ------------- | ------------- | | `Q.where('is_verified', true)` | `is_verified === true` (shortcut syntax) | | `Q.where('is_verified', Q.eq(true))` | `is_verified === true` | | `Q.where('archived_at', Q.notEq(null))` | `archived_at !== null` | | `Q.where('likes', Q.gt(0))` | `likes > 0` | | `Q.where('likes', Q.weakGt(0))` | `likes > 0` (slightly different semantics — [see "null behavior"](#null-behavior) for details) | | `Q.where('likes', Q.gte(100))` | `likes >= 100` | | `Q.where('dislikes', Q.lt(100))` | `dislikes < 100` | | `Q.where('dislikes', Q.lte(100))` | `dislikes <= 100` | | `Q.where('likes', Q.between(10, 100))` | `likes >= 10 && likes <= 100` | | `Q.where('status', Q.oneOf(['published', 'draft']))` | `['published', 'draft'].includes(status)` | | `Q.where('status', Q.notIn(['archived', 'deleted']))` | `status !== 'archived' && status !== 'deleted'` | | `Q.where('status', Q.like('%bl_sh%'))` | `/.*bl.sh.*/i` (See note below!) | | `Q.where('status', Q.notLike('%bl_sh%'))` | `/^((!?.*bl.sh.*).)*$/i` (Inverse regex match) (See note below!) | | `Q.where('status', Q.includes('promoted'))` | `status.includes('promoted')` | ### LIKE / NOT LIKE You can use `Q.like` for search-related tasks. For example, to find all users whose username start with "jas" (case-insensitive) you can write ```js usersCollection.query( Q.where("username", Q.like(`${Q.sanitizeLikeString("jas")}%`) ) ``` where `"jas"` can be changed dynamically with user input. Note that the behavior of `Q.like` is not exact and can differ somewhat between implementations (SQLite vs LokiJS). For instance, while the comparison is case-insensitive, SQLite cannot by default compare non-ASCII characters case-insensitively (unless you install ICU extension). Use `Q.like` for user input search, but not for tasks that require a precise matching behavior. **Note:** It's NOT SAFE to use `Q.like` and `Q.notLike` with user input directly, because special characters like `%` or `_` are not escaped. Always sanitize user input like so: ```js Q.like(`%${Q.sanitizeLikeString(userInput)}%`) Q.notLike(`%${Q.sanitizeLikeString(userInput)}%`) ``` ### AND/OR nesting You can nest multiple conditions using `Q.and` and `Q.or`: ```js database.get('comments').query( Q.where('archived_at', Q.notEq(null)), Q.or( Q.where('is_verified', true), Q.and( Q.where('likes', Q.gt(10)), Q.where('dislikes', Q.lt(5)) ) ) ) ``` This is equivalent to `archivedAt !== null && (isVerified || (likes > 10 && dislikes < 5))`. ### Conditions on related tables ("JOIN queries") For example: query all comments under posts published by John: ```js // Shortcut syntax: database.get('comments').query( Q.on('posts', 'author_id', john.id), ) // Full syntax: database.get('comments').query( Q.on('posts', Q.where('author_id', Q.eq(john.id))), ) ``` Normally you set conditions on the table you're querying. Here we're querying **comments**, but we have a condition on the **post** the comment belongs to. The first argument for `Q.on` is the table name you're making a condition on. The other two arguments are same as for `Q.where`. **Note:** The two tables [must be associated](./Model.md) before you can use `Q.on`. #### Multiple conditions on a related table For example: query all comments under posts that are written by John *and* are either published or belong to `draftBlog` ```js database.get('comments').query( Q.on('posts', [ Q.where('author_id', john.id) Q.or( Q.where('published', true), Q.where('blog_id', draftBlog.id), ) ]), ) ``` Instead of an array of conditions, you can also pass `Q.and`, `Q.or`, `Q.where`, or `Q.on` as the second argument to `Q.on`. #### Nesting `Q.on` within AND/OR If you want to place `Q.on` nested within `Q.and` and `Q.or`, you must explicitly define all tables you're joining on. (NOTE: The `Q.experimentalJoinTables` API is subject to change) ```js tasksCollection.query( Q.experimentalJoinTables(['projects']), Q.or( Q.where('is_followed', true), Q.on('projects', 'is_followed', true), ), ) ``` #### Deep `Q.on`s You can also nest `Q.on` within `Q.on`, e.g. to make a condition on a grandparent. You must explicitly define the tables you're joining on. (NOTE: The `Q.experimentalNestedJoin` API is subject to change). Multiple levels of nesting are allowed. ```js // this queries tasks that are inside projects that are inside teams where team.foo == 'bar' tasksCollection.query( Q.experimentalNestedJoin('projects', 'teams'), Q.on('projects', Q.on('teams', 'foo', 'bar')), ) ``` ## Advanced Queries ### Advanced observing Call `query.observeWithColumns(['foo', 'bar'])` to create an Observable that emits a value not only when the list of matching records changes (new records/deleted records), but also when any of the matched records changes its `foo` or `bar` column. [Use this for observing sorted lists](./Components.md) #### Count throttling By default, calling `query.observeCount()` returns an Observable that is throttled to emit at most once every 250ms. You can disable throttling using `query.observeCount(false)`. ### Column comparisons This queries comments that have more likes than dislikes. Note that we're comparing `likes` column to another column instead of a value. ```js database.get('comments').query( Q.where('likes', Q.gt(Q.column('dislikes'))) ) ``` ### sortBy, take, skip You can use these clauses to sort the query by one or more columns. Note that only simple ascending/descending criteria for columns are supported. ```js database.get('comments').query( // sorts by number of likes from the most likes to the fewest Q.sortBy('likes', Q.desc), // if two comments have the same number of likes, the one with fewest dislikes will be at the top Q.sortBy('dislikes', Q.asc), // limit number of comments to 100, skipping the first 50 Q.skip(50), Q.take(100), ) ``` It isn't _necessarily_ better or more efficient to sort on query level instead of in JavaScript, **however** the most important use case for `Q.sortBy` is when used alongside `Q.skip` and `Q.take` to implement paging - to limit the number of records loaded from database to memory on very long lists ### Fetch IDs If you only need IDs of records matching a query, you can optimize the query by calling `await query.fetchIds()` instead of `await query.fetch()` ### Security Remember that Queries are a sensitive subject, security-wise. Never trust user input and pass it directly into queries. In particular: - Never pass into queries values you don't know for sure are the right type (e.g. value passed to `Q.eq()` should be a string, number, boolean, or null -- but not an Object. If the value comes from JSON, you must validate it before passing it!) - Never pass column names (without whitelisting) from user input - Values passed to `oneOf`, `notIn` should be arrays of simple types - be careful they don't contain objects - Do not use `Q.like` / `Q.notLike` without `Q.sanitizeLikeString` - Do not use `unsafe raw queries` without knowing what you're doing and sanitizing all user input ### Unsafe SQL queries ```js const records = await database.get('comments').query( Q.unsafeSqlQuery(`select * from comments where foo is not ? and _status is not 'deleted'`, ['bar']) ).fetch() const recordCount = await database.get('comments').query( Q.unsafeSqlQuery(`select count(*) as count from comments where foo is not ? and _status is not 'deleted'`, ['bar']) ).fetchCount() ``` You can also observe unsafe raw SQL queries, however, if it contains `JOIN` statements, you must explicitly specify all other tables using `Q.experimentalJoinTables` and/or `Q.experimentalNestedJoin`, like so: ```js const records = await database.get('comments').query( Q.experimentalJoinTables(['posts']), Q.experimentalNestedJoin('posts', 'blogs'), Q.unsafeSqlQuery( 'select comments.* from comments ' + 'left join posts on comments.post_id is posts.id ' + 'left join blogs on posts.blog_id is blogs.id' + 'where ...', ), ).observe() ``` ⚠️ Please note: - Do not use this if you don't know what you're doing - Do not pass user input directly to avoid SQL Injection - use `?` placeholders and pass array of placeholder values - You must filter out deleted record using `where _status is not 'deleted'` clause - If you're going to fetch count of the query, use `count(*) as count` as the select result ### Unsafe fetch raw In addition to `.fetch()` and `.fetchIds()`, there is also `.unsafeFetchRaw()`. Instead of returning an array of `Model` class instances, it returns an array of raw objects. You can use it as an unsafe optimization, or alongside `Q.unsafeSqlQuery`/`Q.unsafeLokiTransform` to create an advanced query that either skips fetching unnecessary columns or includes extra computed columns. For example: ```js const rawData = await database.get('posts').query( Q.unsafeSqlQuery( 'select posts.text1, count(tag_assignments.id) as tag_count, sum(tag_assignments.rank) as tag_rank from posts' + ' left join tag_assignments on posts.id = tag_assignments.post_id' + ' group by posts.id' + ' order by posts.position desc', ) ).unsafeFetchRaw() ``` ⚠️ You MUST NOT mutate returned objects. Doing so will corrupt the database. ### Unsafe SQL/Loki expressions You can also include smaller bits of SQL and Loki expressions so that you can still use as much of Watermelon query builder as possible: ```js // SQL example: postsCollection.query( Q.where('is_published', true), Q.unsafeSqlExpr('tasks.num1 not between 1 and 5'), ) // LokiJS example: postsCollection.query( Q.where('is_published', true), Q.unsafeLokiExpr({ text1: { $contains: 'hey' } }) ) ``` For SQL, be sure to prefix column names with table name when joining with other tables. ⚠️ Please do not use this if you don't know what you're doing. Do not pass user input directly to avoid SQL injection. ### Multi-table column comparisons and `Q.unsafeLokiTransform` Example: we want to query comments posted more than 14 days after the post it belongs to was published. There's sadly no built-in syntax for this, but can be worked around using unsafe expressions like so: ```js // SQL example: commentsCollection.query( Q.on('posts', 'published_at', Q.notEq(null)), Q.unsafeSqlExpr(`comments.createad_at > posts.published_at + ${14 * 24 * 3600 * 1000}`) ) // LokiJS example: commentsCollection.query( Q.on('posts', 'published_at', Q.notEq(null)), Q.unsafeLokiTransform((rawRecords, loki) => { return rawRecords.filter(rawRecord => { const post = loki.getCollection('posts').by('id', rawRecord.post_id) return post && rawRecord.created_at > post.published_at + 14 * 24 * 3600 * 1000 }) }), ) ``` For LokiJS, remember that `rawRecord` is an unsanitized, unsafe object and must not be mutated. `Q.unsafeLokiTransform` only works when using `LokiJSAdapter` with `useWebWorkers: false`. There can only be one `Q.unsafeLokiTransform` clause per query. ### `null` behavior There are some gotchas you should be aware of. The `Q.gt`, `gte`, `lt`, `lte`, `oneOf`, `notIn`, `like` operators match the semantics of SQLite in terms of how they treat `null`. Those are different from JavaScript. **Rule of thumb:** No null comparisons are allowed. For example, if you query `comments` for `Q.where('likes', Q.lt(10))`, a comment with 8 likes and 0 likes will be included, but a comment with `null` likes will not! In Watermelon queries, `null` is not less than any number. That's why you should avoid [making table columns optional](./Schema.md) unless you actually need it. Similarly, if you query with a column comparison, like `Q.where('likes', Q.gt(Q.column('dislikes')))`, only comments where both `likes` and `dislikes` are not null will be compared. A comment with 5 likes and `null` dislikes will NOT be included. 5 is not greater than `null` here. **`Q.oneOf` operator**: It is not allowed to pass `null` as an argument to `Q.oneOf`. Instead of `Q.oneOf([null, 'published', 'draft'])` you need to explicitly allow `null` as a value like so: ```js postsCollection.query( Q.or( Q.where('status', Q.oneOf(['published', 'draft'])), Q.where('status', null) ) ) ``` **`Q.notIn` operator**: If you query, say, posts with `Q.where('status', Q.notIn(['published', 'draft']))`, it will match posts with a status different than `published` or `draft`, however, it will NOT match posts with `status == null`. If you want to include such posts, query for that explicitly like with the example above. **`Q.weakGt` operator**: This is weakly typed version of `Q.gt` — one that allows null comparisons. So if you query `comments` with `Q.where('likes', Q.weakGt(Q.column('dislikes')))`, it WILL match comments with 5 likes and `null` dislikes. (For `weakGt`, unlike standard operators, any number is greater than `null`). ## Contributing improvements to Watermelon query language Here are files that are relevant. This list may look daunting, but adding new matchers is actually quite simple and multiple first-time contributors made these improvements (including like, sort, take, skip). The implementation is just split into multiple files (and their test files), but when you look at them, it'll be easy to add matchers by analogy. We recommend starting from writing tests first to check expected behavior, then implement the actual behavior. - `src/QueryDescription/test.js` - Test clause builder (`Q.myThing`) output and test that it rejects bad/unsafe parameters - `src/QueryDescription/index.js` - Add clause builder and type definition - `src/__tests__/databaseTests.js` - Add test ("join" if it requires conditions on related tables; "match" otherwise) that checks that the new clause matches expected records. From this, tests running against SQLite, LokiJS, and Matcher are generated. (If one of those is not supported, add `skip{Loki,Sql,Count,Matcher}: true` to your test) - `src/adapters/sqlite/encodeQuery/test.js` - Test that your query generates SQL you expect. (If your clause is Loki-only, test that error is thrown) - `src/adapters/sqlite/encodeQuery/index.js` - Generate SQL - `src/adapters/lokijs/worker/encodeQuery/test.js` - Test that your query generates the Loki query you expect (If your clause is SQLite-only, test that an error is thrown) - `src/adapters/lokijs/worker/encodeQuery/index.js` - Generate Loki query - `src/adapters/lokijs/worker/{performJoins/*.js,executeQuery.js}` - May be relevant for some Loki queries, but most likely you don't need to look here. - `src/observation/encodeMatcher/` - If your query can be checked against a record in JavaScript (e.g. you're adding new "by regex" matcher), implement this behavior here (`index.js`, `operators.js`). This is used for efficient "simple observation". You don't need to write tests - `databaseTests` are used automatically. If you can't or won't implement encodeMatcher for your query, add a check to `canEncode.js` so that it returns `false` for your query (Less efficient "reloading observation" will be used then). Add your query to `test.js`'s "unencodable queries" then. * * * ## Next steps ➡️ Now that you've mastered Queries, [**make more Relations**](./Relation.md) ================================================ FILE: docs-website/docs/docs/README.md ================================================ --- title: Check out the README hide_title: true ---

WatermelonDB

A reactive database framework

Build powerful React and React Native apps that scale from hundreds to tens of thousands of records and remain fast ⚡️

MIT License npm Gurubase

| | WatermelonDB | | - | ------------ | | ⚡️ | **Launch your app instantly** no matter how much data you have | | 📈 | **Highly scalable** from hundreds to tens of thousands of records | | 😎 | **Lazy loaded**. Only load data when you need it | | 🔄 | **Offline-first.** [Sync](https://watermelondb.dev/docs/Sync/Intro) with your own backend | | 📱 | **Multiplatform**. iOS, Android, Windows, web, and Node.js | | ⚛️ | **Optimized for React.** Easily plug data into components | | 🧰 | **Framework-agnostic.** Use JS API to plug into other UI frameworks | | ⏱ | **Fast.** And getting faster with every release! | | ✅ | **Proven.** Powers [Nozbe](https://nozbe.com/teams) since 2017 (and [many others](#who-uses-watermelondb)) | | ✨ | **Reactive.** (Optional) [RxJS](https://github.com/ReactiveX/rxjs) API | | 🔗 | **Relational.** Built on rock-solid [SQLite](https://www.sqlite.org) foundation | | ⚠️ | **Static typing** with [Flow](https://flow.org) or [TypeScript](https://typescriptlang.org) | ## Why Watermelon? **WatermelonDB** is a new way of dealing with user data in React Native and React web apps. It's optimized for building **complex applications** in React Native, and the number one goal is **real-world performance**. In simple words, _your app must launch fast_. For simple apps, using Redux or MobX with a persistence adapter is the easiest way to go. But when you start scaling to thousands or tens of thousands of database records, your app will now be slow to launch (especially on slower Android devices). Loading a full database into JavaScript is expensive! Watermelon fixes it **by being lazy**. Nothing is loaded until it's requested. And since all querying is performed directly on the rock-solid [SQLite database](https://www.sqlite.org/index.html) on a separate native thread, most queries resolve in an instant. But unlike using SQLite directly, Watermelon is **fully observable**. So whenever you change a record, all UI that depends on it will automatically re-render. For example, completing a task in a to-do app will re-render the task component, the list (to reorder), and all relevant task counters. [**Learn more**](https://www.youtube.com/watch?v=UlZ1QnFF4Cw). | React Native EU: Next-generation React Databases | | ---- | |

📺 Next-generation React databases
(a talk about WatermelonDB)

| ## Usage **Quick (over-simplified) example:** an app with posts and comments. First, you define Models: ```js class Post extends Model { @field('name') name @field('body') body @children('comments') comments } class Comment extends Model { @field('body') body @field('author') author } ``` Then, you connect components to the data: ```js const Comment = ({ comment }) => ( {comment.body} — by {comment.author} ) // This is how you make your app reactive! ✨ const enhance = withObservables(['comment'], ({ comment }) => ({ comment, })) const EnhancedComment = enhance(Comment) ``` And now you can render the whole Post: ```js const Post = ({ post, comments }) => ( {post.name} Comments: {comments.map(comment => )} ) const enhance = withObservables(['post'], ({ post }) => ({ post, comments: post.comments })) ``` The result is fully reactive! Whenever a post or comment is added, changed, or removed, the right components **will automatically re-render** on screen. Doesn't matter if a change occurred in a totally different part of the app, it all just works out of the box! ### ➡️ **Learn more:** [see full documentation](https://nozbe.github.io/WatermelonDB/) ## Who uses WatermelonDB Nozbe Teams
CAPMO
Mattermost
Rocket Chat
Steady
Aerobotics
Smash Appz
HaloGo
SportsRecruits
Chatable
Todorant
Blast Workout
Dayful
Learn The Words
_Does your company or app use 🍉? Open a pull request and add your logo/icon with link here!_ ## Contributing We need you **WatermelonDB is an open-source project and it needs your help to thrive!** If there's a missing feature, a bug, or other improvement you'd like, we encourage you to contribute! Feel free to open an issue to get some guidance and see [Contributing guide](./CONTRIBUTING.md) for details about project setup, testing, etc. If you're just getting started, see [good first issues](https://github.com/Nozbe/WatermelonDB/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) that are easy to contribute to. If you make a non-trivial contribution, email me, and I'll send you a nice 🍉 sticker! If you make or are considering making an app using WatermelonDB, please let us know! ## Author and license **WatermelonDB** was created by [@Nozbe](https://github.com/Nozbe). **WatermelonDB's** main author and maintainer is [Radek Pietruszewski](https://github.com/radex) ([website](https://radex.io) ⋅ [𝕏 (Twitter)](https://twitter.com/radexp)) [See all contributors](https://github.com/Nozbe/WatermelonDB/graphs/contributors). WatermelonDB is available under the MIT license. See the [LICENSE file](https://github.com/Nozbe/WatermelonDB/LICENSE) for more info. ================================================ FILE: docs-website/docs/docs/Relation.md ================================================ # Relations A `Relation` object represents one record pointing to another — such as the author (`User`) of a `Comment`, or the `Post` the comment belongs to. ### Defining Relations There's two steps to defining a relation: 1. A [**table column**](./Schema.md) for the related record's ID ```js tableSchema({ name: 'comments', columns: [ // ... { name: 'author_id', type: 'string' }, ] }), ``` 2. A `@relation` field [defined on a `Model`](./Model.md) class: ```js import { relation } from '@nozbe/watermelondb/decorators' class Comment extends Model { // ... @relation('users', 'author_id') author } ``` The first argument is the _table name_ of the related record, and the second is the _column name_ with an ID for the related record. ### immutableRelation If you have a relation that cannot change (for example, a comment can't change its author), use `@immutableRelation` for extra protection and performance: ```js import { immutableRelation } from '@nozbe/watermelondb/decorators' class Comment extends Model { // ... @immutableRelation('posts', 'post_id') post @immutableRelation('users', 'author_id') author } ``` ## Relation API In the example above, `comment.author` returns a `Relation` object. > Remember, WatermelonDB is a lazily-loaded database, so you don't get the related `User` record immediately, only when you explicitly fetch it ### Observing Most of the time, you [connect Relations to Components](./Components.md) by using `observe()` (the same [as with Queries](./Query.md)): ```js withObservables(['comment'], ({ comment }) => ({ comment, author: comment.author, // shortcut syntax for `author: comment.author.observe()` })) ``` The component will now have an `author` prop containing a `User`, and will re-render both when the user changes (e.g. comment's author changes its name), but also when a new author is assigned to the comment (if that was possible). ### Fetching To simply get the related record, use `fetch`. You might need it [in a Writer](./Writers.md) ```js const author = await comment.author.fetch() // Shortcut syntax: const author = await comment.author ``` **Note**: If the relation column (in this example, `author_id`) is marked as `isOptional: true`, `fetch()` might return `null`. ### ID If you only need the ID of a related record (e.g. to use in an URL or for the `key=` React prop), use `id`. ```js const authorId = comment.author.id ``` ### Assigning Use `set()` to assign a new record to the relation ```js await database.get('comments').create(comment => { comment.author.set(someUser) // ... }) ``` **Note**: you can only do this in the `.create()` or `.update()` block. You can also use `set id` if you only have the ID for the record to assign ```js await comment.update(() => { comment.author.id = userId }) ``` ## Advanced relations ### Many-To-Many Relation If for instance, our app `Post`s can be authored by many `User`s and a user can author many `Post`s. We would create such a relation following these steps:- 1. Create a pivot schema and model that both the `User` model and `Post` model has association to; say `PostAuthor` 2. Create has_many association on both `User` and `Post` pointing to `PostAuthor` Model 3. Create belongs_to association on `PostAuthor` pointing to both `User` and `Post` 4. Retrieve all `Posts` for a user by defining a query that uses the pivot `PostAuthor` to infer the `Post`s that were authored by the User. ```js import { lazy } from '@nozbe/watermelondb/decorators' class Post extends Model { static table = 'posts' static associations = { post_authors: { type: 'has_many', foreignKey: 'post_id' }, } @lazy authors = this.collections .get('users') .query(Q.on('post_authors', 'post_id', this.id)); } ``` ```js import { immutableRelation } from '@nozbe/watermelondb/decorators' class PostAuthor extends Model { static table = 'post_authors' static associations = { posts: { type: 'belongs_to', key: 'post_id' }, users: { type: 'belongs_to', key: 'user_id' }, } @immutableRelation('posts', 'post_id') post @immutableRelation('users', 'user_id') user } ``` ```js import { lazy } from '@nozbe/watermelondb/decorators' class User extends Model { static table = 'users' static associations = { post_authors: { type: 'has_many', foreignKey: 'user_id' }, } @lazy posts = this.collections .get('posts') .query(Q.on('post_authors', 'user_id', this.id)); } ``` ```js withObservables(['post'], ({ post }) => ({ authors: post.authors, })) ``` * * * ## Next steps ➡️ Now the last step of this guide: [**understand Writers (and Readers)**](./Writers.md) ================================================ FILE: docs-website/docs/docs/Roadmap.md ================================================ --- title: Roadmap hide_title: true --- # WatermelonDB Roadmap Despite being called 0.xx, WatermelonDB is essentially feature-complete and relatively API stable. It's used in production by [Nozbe Teams](https://nozbe.com) and many others. We don't call it 1.0 mostly out of convenience, to allow rapid development without incrementing `major` version counter (as dictated by SemVer). We do intend to call WatermelonDB a 1.0 once we can reach a long-term stable API. ### v1.0 - Optimized tree deleting - Long term stable API ### Beyond 1.0 - Full transactionality (atomicity) support? - Field sanitizers ================================================ FILE: docs-website/docs/docs/Schema.md ================================================ # Schema When using WatermelonDB, you're dealing with **Models** and **Collections**. However, underneath Watermelon sits an **underlying database** (SQLite or LokiJS) which speaks a different language: **tables and columns**. Together, those are called a **database schema** and we must define it first. ## Defining a Schema Say you want Models `Post`, `Comment` in your app. For each of those Models, you define a table. And for every field of a Model (e.g. name of the blog post, author of the comment) you define a column. For example: ```js // model/schema.js import { appSchema, tableSchema } from '@nozbe/watermelondb' export const mySchema = appSchema({ version: 1, tables: [ tableSchema({ name: 'posts', columns: [ { name: 'title', type: 'string' }, { name: 'subtitle', type: 'string', isOptional: true }, { name: 'body', type: 'string' }, { name: 'is_pinned', type: 'boolean' }, ] }), tableSchema({ name: 'comments', columns: [ { name: 'body', type: 'string' }, { name: 'post_id', type: 'string', isIndexed: true }, ] }), ] }) ``` **Note:** It is database convention to use plural and snake_case names for table names. Column names are also snake_case. So `Post` become `posts` and `createdAt` becomes `created_at`. ### Column types Columns have one of three types: `string`, `number`, or `boolean`. Fields of those types will default to `''`, `0`, or `false` respectively, if you create a record with a missing field. To allow fields to be `null`, mark the column as `isOptional: true`. ### Naming conventions To add a relation to a table (e.g. `Post` where a `Comment` was published, or author of a comment), add a string column ending with `_id`: ```js { name: 'post_id', type: 'string' }, { name: 'author_id', type: 'string' }, ``` Boolean columns should have names starting with `is_`: ```js { name: 'is_pinned', type: 'boolean' } ``` Date fields should be `number` (dates are stored as Unix timestamps) and have names ending with `_at`: ```js { name: 'last_seen_at', type: 'number', isOptional: true } ``` ### Special columns All tables _automatically_ have a string column `id` (of `string` type) to uniquely identify records -- therefore you cannot declare a column named `id` yourself. (There are also special `_status` and `_changed` columns used for [synchronization](./Sync/Intro.md) - you shouldn't touch them yourself). You can add special `created_at` / `updated_at` columns to enable [automatic create/update tracking](./Advanced/CreateUpdateTracking.md). ### Modifying Schema Watermelon cannot automatically detect Schema changes. Therefore, whenever you change the Schema, you must increment its version number (`version:` field). During early development, this is all you need to do - on app reload, this will cause the database to be cleared completely. To seamlessly update the schema (without deleting user data), use [Migrations](./Advanced/Migrations.md). ⚠️ Always use Migrations if you already shipped your app. ### Indexing To enable database indexing, add `isIndexed: true` to a column. Indexing makes querying by a column faster, at the expense of create/update speed and database size. For example, if you often query all comments belonging to a post (that is, query comments by its `post_id` column), you should mark the `post_id` column as indexed. However, if you rarely query all comments by its author, indexing `author_id` is probably not worth it. In general, most `_id` fields are indexed. Occasionally, `boolean` fields are worth indexing (but it's a "low quality index"). However, you should almost never index date (`_at`) columns or `string` columns. You definitely do not want to index long-form user text. ⚠️ Do not mark all columns as indexed to "make Watermelon faster". Indexing has a real performance cost and should be used only when appropriate. ## Advanced ### Unsafe SQL schema If you want to modify the SQL used to set up the SQLite database, you can pass `unsafeSql` parameter to `tableSchema` and `appSchema`. This parameter is a function that receives SQL generated by Watermelon, and you can return whatever you want - so you can append, prepend, replace parts of SQL, or return your own SQL altogether. When passed to `tableSchema`, it receives SQL generated for just that table, and when to `appSchema` - the entire schema SQL. ⚠️ Note that SQL generated by WatermelonDB is not considered to be a stable API, so be careful about your transforms as they can break at any time. ```js appSchema({ ... tables: [ tableSchema({ name: 'tasks', columns: [...], unsafeSql: sql => sql.replace(/create table [^)]+\)/, '$& without rowid'), }), ], unsafeSql: (sql, kind) => { // Note that this function is called not just when first setting up the database // Additionally, when running very large batches, all database indices may be dropped and later // recreated as an optimization. More kinds may be added in the future. switch (kind) { case 'setup': return `create blabla;${sql}` case 'create_indices': case 'drop_indices': return sql default: throw new Error('unexpected unsafeSql kind') } }, }) ``` * * * ## Next steps ➡️ After you define your schema, go ahead and [**define your Models**](./Model.md) ================================================ FILE: docs-website/docs/docs/Setup.md ================================================ --- title: 'Setup' hide_title: true --- # Set up your app for WatermelonDB Make sure you [installed Watermelon](./Installation.mdx) before proceeding. Create `model/schema.js` in your project. You'll need it for [the next step](./Schema.md). ```js import { appSchema, tableSchema } from '@nozbe/watermelondb' export default appSchema({ version: 1, tables: [ // We'll add tableSchemas here later ] }) ``` Similarly, create `model/migrations.js`. ([More information about migrations](./Advanced/Migrations.md)): ```js import { schemaMigrations } from '@nozbe/watermelondb/Schema/migrations' export default schemaMigrations({ migrations: [ // We'll add migration definitions here later ], }) ``` Now, in your `index.native.js`: ```js import { Platform } from 'react-native' import { Database } from '@nozbe/watermelondb' import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite' import schema from './model/schema' import migrations from './model/migrations' // import Post from './model/Post' // ⬅️ You'll import your Models here // First, create the adapter to the underlying database: const adapter = new SQLiteAdapter({ schema, // (You might want to comment it out for development purposes -- see Migrations documentation) migrations, // (optional database name or file system path) // dbName: 'myapp', // (recommended option, should work flawlessly out of the box on iOS. On Android, // additional installation steps have to be taken - disable if you run into issues...) jsi: true, /* Platform.OS === 'ios' */ // (optional, but you should implement this method) onSetUpError: error => { // Database failed to load -- offer the user to reload the app or log out } }) // Then, make a Watermelon database from it! const database = new Database({ adapter, modelClasses: [ // Post, // ⬅️ You'll add Models to Watermelon here ], }) ``` The above will work on React Native (iOS/Android) and NodeJS. For the web, instead of `SQLiteAdapter` use `LokiJSAdapter`: ```js import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs' const adapter = new LokiJSAdapter({ schema, // (You might want to comment out migrations for development purposes -- see Migrations documentation) migrations, useWebWorker: false, useIncrementalIndexedDB: true, // dbName: 'myapp', // optional db name // --- Optional, but recommended event handlers: onQuotaExceededError: (error) => { // Browser ran out of disk space -- offer the user to reload the app or log out }, onSetUpError: (error) => { // Database failed to load -- offer the user to reload the app or log out }, extraIncrementalIDBOptions: { onDidOverwrite: () => { // Called when this adapter is forced to overwrite contents of IndexedDB. // This happens if there's another open tab of the same app that's making changes. // Try to synchronize the app now, and if user is offline, alert them that if they close this // tab, some data may be lost }, onversionchange: () => { // database was deleted in another browser tab (user logged out), so we must make sure we delete // it in this tab as well - usually best to just refresh the page if (checkIfUserIsLoggedIn()) { window.location.reload() } }, } }) // The rest is the same! ``` * * * ## Next steps ➡️ After Watermelon is installed, [**define your app's schema**](./Schema.md) ================================================ FILE: docs-website/docs/docs/Sync/Backend.md ================================================ --- title: Backend hide_title: true --- ## Implementing your Sync backend ### Understanding `changes` objects Synchronized changes (received by the app in `pullChanges` and sent to the backend in `pushChanges`) are represented as an object with _raw records_. Those only use raw table and column names, and raw values (strings/numbers/booleans) — the same as in [Schema](../Schema.md). Deleted objects are always only represented by their IDs. Example: ```js { projects: { created: [ { id: 'aaaa', name: 'Foo', is_favorite: true }, { id: 'bbbb', name: 'Bar', is_favorite: false }, ], updated: [ { id: 'ccc', name: 'Baz', is_favorite: true }, ], deleted: ['ddd'], }, tasks: { created: [], updated: [ { id: 'tttt', name: 'Buy eggs' }, ], deleted: [], }, ... } ``` Again, notice the properties returned have the format defined in the [Schema](../Schema.md) (e.g. `is_favorite`, not `isFavorite`). Valid changes objects MUST conform to this shape: ```js Changes = { [table_name: string]: { created: RawRecord[], updated: RawRecord[], deleted: string[], } } ``` ### Implementing pull endpoint Expected parameters: ```js { lastPulledAt: Timestamp, schemaVersion: int, migration: null | { from: int, tables: string[], columns: { table: string, columns: string[] }[] } } ``` Expected response: ```js { changes: Changes, timestamp: Timestamp } ``` 1. The pull endpoint SHOULD take parameters and return a response matching the shape specified above. This shape MAY be different if negotiated with the frontend (however, frontend-side `pullChanges()` MUST conform to this) 2. The pull endpoint MUST return all record changes in all collections since `lastPulledAt`, specifically: - all records that were created on the server since `lastPulledAt` - all records that were updated on the server since `lastPulledAt` - IDs of all records that were deleted on the server since `lastPulledAt` - record IDs MUST NOT be duplicated 3. If `lastPulledAt` is null or 0, you MUST return all accessible records (first sync) 4. The timestamp returned by the server MUST be a value that, if passed again to `pullChanges()` as `lastPulledAt`, will return all changes that happened since this moment. 5. The pull endpoint MUST provide a consistent view of changes since `lastPulledAt` - You should perform all queries synchronously or in a write lock to ensure that returned changes are consistent - You should also mark the current server time synchronously with the queries - This is to ensure that no changes are made to the database while you're fetching changes (otherwise some records would never be returned in a pull query) - If it's absolutely not possible to do so, and you have to query each collection separately, be sure to return a `lastPulledAt` timestamp marked BEFORE querying starts. You still risk inconsistent responses (that may break app's consistency assumptions), but the next pull will fetch whatever changes occured during previous pull. - An alternative solution is to check for the newest change before and after all queries are made, and if there's been a change during the pull, return an error code, or retry. 6. If `migration` is not null, you MUST include records needed to get a consistent view after a local database migration - Specifically, you MUST include all records in tables that were added to the local database between the last user sync and `schemaVersion` - For all columns that were added to the local app database between the last sync and `schemaVersion`, you MUST include all records for which the added column has a value other than the default value (`0`, `''`, `false`, or `null` depending on column type and nullability) - You can determine what schema changes were made to the local app in two ways: - You can compare `migration.from` (local schema version at the time of the last sync) and `schemaVersion` (current local schema version). This requires you to negotiate with the frontend what schema changes are made at which schema versions, but gives you more control - Or you can ignore `migration.from` and only look at `migration.tables` (which indicates which tables were added to the local database since the last sync) and `migration.columns` (which indicates which columns were added to the local database to which tables since last sync). - If you use `migration.tables` and `migration.columns`, you MUST whitelist values a client can request. Take care not to leak any internal fields to the client. 7. Returned raw records MUST match your app's [Schema](../Schema.md) 8. Returned raw records MUST NOT not contain special `_status`, `_changed` fields. 9. Returned raw records MAY contain fields (columns) that are not yet present in the local app (at `schemaVersion` -- but added in a later version). They will be safely ignored. 10. Returned raw records MUST NOT contain arbitrary column names, as they may be unsafe (e.g. `__proto__` or `constructor`). You should whitelist acceptable column names. 11. Returned record IDs MUST only contain safe characters - Default WatermelonDB IDs conform to `/^[a-zA-Z0-9]{16}$/` - `_-.` are also allowed if you override default ID generator, but `'"\/$` are unsafe 12. Changes SHOULD NOT contain collections that are not yet present in the local app (at `schemaVersion`). They will, however, be safely ignored. - NOTE: This is true for WatermelonDB v0.17 and above. If you support clients using earlier versions, you MUST NOT return collections not known by them. 13. Changes MUST NOT contain collections with arbitrary names, as they may be unsafe. You should whitelist acceptable collection names. ### Implementing push endpoint 1. The push endpoint MUST apply local changes (passed as a `changes` object) to the database. Specifically: - create new records as specified by the changes object - update existing records as specified by the changes object - delete records by the specified IDs 2. If the `changes` object contains a new record with an ID that already exists, you MUST update it, and MUST NOT return an error code. - (This happens if previous push succeeded on the backend, but not on frontend) 3. If the `changes` object contains an update to a record that does not exist, then: - If you can determine that this record no longer exists because it was deleted, you SHOULD return an error code (to force frontend to pull the information about this deleted ID) - Otherwise, you MUST create it, and MUST NOT return an error code. (This scenario should not happen, but in case of frontend or backend bugs, it would keep sync from ever succeeding.) 4. If the `changes` object contains a record to delete that doesn't exist, you MUST ignore it and MUST NOT return an error code - (This may happen if previous push succeeded on the backend, but not on frontend, or if another user deleted this record in between user's pull and push calls) 5. If the `changes` object contains a record that has been modified on the server after `lastPulledAt`, you MUST abort push and return an error code - This scenario means that there's a conflict, and record was updated remotely between user's pull and push calls. Returning an error forces frontend to call pull endpoint again to resolve the conflict 6. If application of all local changes succeeds, the endpoint MUST return a success status code. 7. The push endpoint MUST be fully transactional. If there is an error, all local changes MUST be reverted on the server, and en error code MUST be returned. 8. You MUST ignore `_status` and `_changed` fields contained in records in `changes` object 9. You SHOULD validate data passed to the endpoint. In particular, collection and column names ought to be whitelisted, as well as ID format — and of course any application-specific invariants, such as permissions to access and modify records 10. You SHOULD sanitize record fields passed to the endpoint. If there's something slightly wrong with the contents (but not shape) of the data (e.g. `user.role` should be `owner`, `admin`, or `member`, but user sent empty string or `abcdef`), you SHOULD NOT send an error code. Instead, prefer to "fix" errors (sanitize to correct format). - Rationale: Synchronization should be reliable, and should not fail other than transiently, or for serious programming errors. Otherwise, the user will have a permanently unsyncable app, and may have to log out/delete it and lose unsynced data. You don't want a bug 5 versions ago to create a persistently failing sync. 11. You SHOULD delete all descendants of deleted records - Frontend should ask the push endpoint to do so as well, but if it's buggy, you may end up with permanent orphans ## Tips on implementing server-side changes tracking If you're wondering how to _actually_ implement consistent pulling of all changes since the last pull, or how to detect that a record being pushed by the user changed after `lastPulledAt`, here's what we recommend: - Add a `last_modified` field to all your server database tables, and bump it to `NOW()` every time you create or update a record. - This way, when you want to get all changes since `lastPulledAt`, you query records whose `last_modified > lastPulledAt`. - The timestamp should be at least millisecond resolution, and you should add (for extra safety) a MySQL/PostgreSQL procedure that will ensure `last_modified` uniqueness and monotonicity - Specificaly, check that there is no record with a `last_modified` equal to or greater than `NOW()`, and if there is, increment the new timestamp by 1 (or however much you need to ensure it's the greatest number) - [An example of this for PostgreSQL can be found in Kinto](https://github.com/Kinto/kinto/blob/814c30c5dd745717b8ea50d708d9163a38d2a9ec/kinto/core/storage/postgresql/schema.sql#L64-L116) - This protects against weird edge cases - such as records being lost due to server clock time changes (NTP time sync, leap seconds, etc.) - Of course, remember to ignore `last_modified` from the user if you do it this way. - An alternative to using timestamps is to use an auto-incrementing counter sequence, but you must ensure that this sequence is consistent across all collections. You also leak to users the amount of traffic to your sync server (number of changes in the sequence) - To distinguish between `created` and `updated` records, you can also store server-side `server_created_at` timestamp (if it's greater than `last_pulled_at` supplied to sync, then record is to be `created` on client, if less than — client already has it and it is to be `updated` on client). Note that this timestamp must be consistent with last_modified — and you must not use client-created `created_at` field, since you can never trust local timestamps. - Alternatively, you can send all non-deleted records as all `updated` and Watermelon will do the right thing in 99% of cases (you will be slightly less protected against weird edge cases — treatment of locally deleted records is different). If you do this, pass `sendCreatedAsUpdated: true` to `synchronize()` to supress warnings about records to be updated not existing locally. - You do need to implement a mechanism to track when records were deleted on the server, otherwise you wouldn't know to push them - One possible implementation is to not fully delete records, but mark them as DELETED=true - Or, you can have a `deleted_xxx` table with just the record ID and timestamp (consistent with last_modified) - Or, you can treat it the same way as "revoked permissions" - If you have a collaborative app with any sort of permissions, you also need to track granting and revoking of permissions the same way as changes to records - If permission to access records has been granted, the pull endpoint must add those records to `created` - If permission to access records has been revoked, the pull endpoint must add those records to `deleted` - Remember to also return all descendants of a record in those cases ## Existing Backend Implementations Note that those are not maintained by WatermelonDB, and we make no endorsements about quality of these projects: - [How to Build WatermelonDB Sync Backend in Elixir](https://fahri.id/posts/how-to-build-watermelondb-sync-backend-in-elixir/) - [Firemelon](https://github.com/AliAllaf/firemelon) - [Laravel Watermelon](https://github.com/nathanheffley/laravel-watermelon) Did you make one? Please contribute a link! ================================================ FILE: docs-website/docs/docs/Sync/Contribute.md ================================================ 1. If you implement Watermelon sync but found this guide confusing, please contribute improvements! 2. Please help out with solving the current limitations! 3. If you write server-side code made to be compatible with Watermelon, especially for popular platforms (Node, Ruby on Rails, Kinto, etc.) - please open source it and let us know! This would dramatically simplify implementing sync for people 4. If you find Watermelon sync bugs, please report the issue! And if possible, write regression tests to make sure it never happens again ================================================ FILE: docs-website/docs/docs/Sync/FAQ.md ================================================ --- title: FAQ hide_title: true --- # Frequently Asked Questions ### Sync primitives and implementing your own sync entirely from scratch See: [Sync implementation details](../Implementation/SyncImpl.md) ### Local vs Remote IDs WatermelonDB has been designed with the assumption that there is no difference between Local IDs (IDs of records and their relations in a WatermelonDB database) and Remote IDs (IDs on the backend server). So a local app can create new records, generating their IDs, and the backend server will use this ID as the true ID. This greatly simplifies synchronization, as you don't have to replace local with remote IDs on the record and all records that point to it. We highly recommend that you adopt this practice. Some people are skeptical about this approach due to conflicts, since backend can guarantee unique IDs, and the local app can't. However, in practice, a standard Watermelon ID has 8,000,000,000,000,000,000,000,000 possible combinations. That's enough entropy to make conflicts extremely unlikely. At [Nozbe](https://nozbe.com), we've done it this way at scale for more than 15 years, and not once did we encounter a genuine ID conflict or had other issues due to this approach. > Using the birthday problem, we can calculate that for 36^16 possible IDs, if your system grows to a billion records, the probability of a single conflict is 6e-8. At 100B records, the probability grows to 0.06%. But if you grow to that many records, you're probably a very rich company and can start worrying about things like this _then_. If you absolutely can't adopt this practice, there's a number of production apps using WatermelonDB that keep local and remote IDs separate — however, more work is required this way. Search Issues to find discussions about this topic — and consider contributing to WatermelonDB to make managing separate local IDs easier for everyone! ================================================ FILE: docs-website/docs/docs/Sync/Frontend.md ================================================ --- title: Frontend hide_title: true --- ## Implementing sync in frontend ## Using `synchronize()` in your app To synchronize, you need to pass `pullChanges` and `pushChanges` _(optional)_ that talk to your backend and are compatible with Watermelon Sync Protocol. The frontend code will look something like this: ```js import { synchronize } from '@nozbe/watermelondb/sync' async function mySync() { await synchronize({ database, pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => { const urlParams = `last_pulled_at=${lastPulledAt}&schema_version=${schemaVersion}&migration=${encodeURIComponent( JSON.stringify(migration), )}` const response = await fetch(`https://my.backend/sync?${urlParams}`) if (!response.ok) { throw new Error(await response.text()) } const { changes, timestamp } = await response.json() return { changes, timestamp } }, pushChanges: async ({ changes, lastPulledAt }) => { const response = await fetch(`https://my.backend/sync?last_pulled_at=${lastPulledAt}`, { method: 'POST', body: JSON.stringify(changes), }) if (!response.ok) { throw new Error(await response.text()) } }, migrationsEnabledAtVersion: 1, }) } ``` #### Who calls `synchronize()`? Upon looking at the example above, one question that may arise is who will call `synchronize()` -- or, in the example above `mySync()`. WatermelonDB does not manage the moment of invocation of the `synchronize()` function in any way. The database assumes every call of `pullChanges` will return _all_ the changes that haven't yet been replicated (up to `last_pulled_at`). The application code is responsible for calling `synchronize()` in the frequency it deems necessary. ### Implementing `pullChanges()` Watermelon will call this function to ask for changes that happened on the server since the last pull. Arguments: - `lastPulledAt` is a timestamp for the last time client pulled changes from server (or `null` if first sync) - `schemaVersion` is the current schema version of the local database - `migration` is an object representing schema changes since last sync (or `null` if up to date or not supported) This function should fetch from the server the list of ALL changes in all collections since `lastPulledAt`. 1. You MUST pass an async function or return a Promise that eventually resolves or rejects 2. You MUST pass `lastPulledAt`, `schemaVersion`, and `migration` to an endpoint that conforms to Watermelon Sync Protocol 3. You MUST return a promise resolving to an object of this shape (your backend SHOULD return this shape already): ```js { changes: { ... }, // valid changes object timestamp: 100000, // integer with *server's* current time } ``` 4. You MUST NOT store the object returned in `pullChanges()`. If you need to do any processing on it, do it before returning the object. Watermelon treats this object as "consumable" and can mutate it (for performance reasons) ### Implementing `pushChanges()` Watermelon will call this function with a list of changes that happened locally since the last push so you can post it to your backend. Arguments passed: ```js { changes: { ... }, // valid changes object lastPulledAt: 10000, // the timestamp of the last successful pull (timestamp returned in pullChanges) } ``` 1. You MUST pass `changes` and `lastPulledAt` to a push sync endpoint conforming to Watermelon Sync Protocol 2. You MUST pass an async function or return a Promise from `pushChanges()` 3. `pushChanges()` MUST resolve after and only after the backend confirms it successfully received local changes 4. `pushChanges()` MUST reject if backend failed to apply local changes 5. You MUST NOT resolve sync prematurely or in case of backend failure 6. You MUST NOT mutate or store arguments passed to `pushChanges()`. If you need to do any processing on it, do it before returning the object. Watermelon treats this object as "consumable" and can mutate it (for performance reasons) ## Checking unsynced changes WatermelonDB has a built in function to check whether there are any unsynced changes. The frontend code will look something like this ```js import { hasUnsyncedChanges } from '@nozbe/watermelondb/sync' async function checkUnsyncedChanges() { const database = useDatabase() await hasUnsyncedChanges({ database }) } ``` ## General information and tips 1. You MUST NOT connect to backend endpoints you don't control using `synchronize()`. WatermelonDB assumes pullChanges/pushChanges are friendly and correct and does not guarantee secure behavior if data returned is malformed. 2. You SHOULD NOT call `synchronize()` while synchronization is already in progress (it will safely abort) 3. You MUST NOT reset local database while synchronization is in progress (push to server will be safely aborted, but consistency of the local database may be compromised) 4. You SHOULD wrap `synchronize()` in a "retry once" block - if sync fails, try again once. This will resolve push failures due to server-side conflicts by pulling once again before pushing. 5. You can use `database.withChangesForTables` to detect when local changes occured to call sync. If you do this, you should debounce (or throttle) this signal to avoid calling `synchronize()` too often. ## Adopting Migration Syncs For Watermelon Sync to maintain consistency after [migrations](../Advanced/Migrations.md), you must support Migration Syncs (introduced in WatermelonDB v0.17). This allows Watermelon to request from backend the tables and columns it needs to have all the data. 1. For new apps, pass `{migrationsEnabledAtVersion: 1}` to `synchronize()` (or the first schema version that shipped / the oldest schema version from which it's possible to migrate to the current version) 2. To enable migration syncs, the database MUST be configured with [migrations spec](../Advanced/Migrations.md) (even if it's empty) 3. For existing apps, set `migrationsEnabledAtVersion` to the current schema version before making any schema changes. In other words, this version should be the last schema version BEFORE the first migration that should support migration syncs. 4. Note that for apps that shipped before WatermelonDB v0.17, it's not possible to determine what was the last schema version at which the sync happened. `migrationsEnabledAtVersion` is used as a placeholder in this case. It's not possible to guarantee that all necessary tables and columns will be requested. (If user logged in when schema version was lower than `migrationsEnabledAtVersion`, tables or columns were later added, and new records in those tables/changes in those columns occured on the server before user updated to an app version that has them, those records won't sync). To work around this, you may specify `migrationsEnabledAtVersion` to be the oldest schema version from which it's possible to migrate to the current version. However, this means that users, after updating to an app version that supports Migration Syncs, will request from the server all the records in new tables. This may be unacceptably inefficient. 5. WatermelonDB >=0.17 will note the schema version at which the user logged in, even if migrations are not enabled, so it's possible for app to request from backend changes from schema version lower than `migrationsEnabledAtVersion` 6. You MUST NOT delete old [migrations](../Advanced/Migrations.md), otherwise it's possible that the app is permanently unable to sync. ## (Advanced) Adopting Turbo Login WatermelonDB v0.23 introduced an advanced optimization called "Turbo Login". Syncing using Turbo is up to 5.3x faster than the traditional method and uses a lot less memory, so it's suitable for even very large syncs. Keep in mind: 1. This can only be used for the initial (login) sync, not for incremental syncs. It is a serious programmer error to run sync in Turbo mode if the database is not empty. 2. Syncs with `deleted: []` fields not empty will fail. 3. Turbo only works with SQLiteAdapter with JSI enabled and running - it does not work on web, or if e.g. Chrome Remote Debugging is enabled 4. While Turbo Login is stable, it's marked as "unsafe", meaning that the exact API may change in a future version Here's basic usage: ```js const isFirstSync = ... const useTurbo = isFirstSync await synchronize({ database, pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => { const response = await fetch(`https://my.backend/sync?${...}`) if (!response.ok) { throw new Error(await response.text()) } if (useTurbo) { // NOTE: DO NOT parse JSON, we want raw text const json = await response.text() return { syncJson: json } } else { const { changes, timestamp } = await response.json() return { changes, timestamp } } }, unsafeTurbo: useTurbo, // ... }) ``` Raw JSON text is required, so it is not expected that you need to do any processing in pullChanges() - doing that defeats much of the point of using Turbo Login! If you're using pullChanges to send additional data to your app other than Watermelon Sync's `changes` and `timestamp`, you won't be able to process it in pullChanges. However, WatermelonDB can still pass extra keys in sync response back to the app - you can process them using `onDidPullChanges`. This works both with and without turbo mode: ```js await synchronize({ database, pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => { // ... }, unsafeTurbo: useTurbo, onDidPullChanges: async ({ messages }) => { if (messages) { messages.forEach((message) => { alert(message) }) } }, // ... }) ``` There's a way to make Turbo Login even more _turbo_! However, it requires native development skills. You need to develop your own native networking code, so that raw JSON can go straight from your native code to WatermelonDB's native code - skipping JavaScript processing altogether. ```js await synchronize({ database, pullChanges: async ({ lastPulledAt, schemaVersion, migration }) => { // NOTE: You need the standard JS code path for incremental syncs // Create a unique id for this sync request const syncId = Math.floor(Math.random() * 1000000000) await NativeModules.MyNetworkingPlugin.pullSyncChanges( // Pass the id syncId, // Pass whatever information your plugin needs to make the request lastPulledAt, schemaVersion, migration, ) // If successful, return the sync id return { syncJsonId: syncId } }, unsafeTurbo: true, // ... }) ``` In native code, perform network request and if successful, extract raw response body data - `NSData *` on iOS, `byte[]` on Android. Avoid extracting the response as a string or parsing the JSON. Then pass it to WatermelonDB's native code: ```java // On Android (Java): import com.nozbe.watermelondb.jsi.WatermelonJSI; WatermelonJSI.provideSyncJson(/* id */ syncId, /* byte[] */ data); ``` ```objc // On iOS (Objective-C): // (If using Swift, add the import to the bridging header) #import watermelondbProvideSyncJson(syncId, data, &error) ``` ## Adding logging to your sync You can add basic sync logs to the sync process by passing an empty object to `synchronize()`. Sync will then mutate the object, populating it with diagnostic information (start/finish time, resolved conflicts, number of remote/local changes, any errors that occured, and more): ```js // Using built-in SyncLogger import SyncLogger from '@nozbe/watermelondb/sync/SyncLogger' const logger = new SyncLogger(10 /* limit of sync logs to keep in memory */ ) await synchronize({ database, log: logger.newLog(), ... }) // this returns all logs (censored and safe to use in production code) console.log(logger.logs) // same, but pretty-formatted to a string (a user can easy copy this for diagnostic purposes) console.log(logger.formattedLogs) // You don't have to use SyncLogger, just pass a plain object to synchronize() const log = {} await synchronize({ database, log, ... }) console.log(log.startedAt) console.log(log.finishedAt) ``` ⚠️ Remember to act responsibly with logs, since they might contain your user's private information. Don't display, save, or send the log unless you censor the log. ## Debugging `changes` If you want to conveniently see incoming and outgoing changes in sync in the console, add these lines to your pullChanges/pushChanges: ⚠️ Leaving such logging committed and running in production is a huge security vulnerability and a performance hog. ```js // UNDER NO CIRCUMSTANCES SHOULD YOU COMMIT THESE LINES UNCOMMENTED!!! require('@nozbe/watermelondb/sync/debugPrintChanges').default(changes, isPush) ``` Pass `true` for second parameter if you're checking outgoing changes (pushChanges), `false` otherwise. Make absolutely sure you don't commit this debug tool. For best experience, run this on web (Chrome) -- the React Native experience is not as good. ## (Advanced) Replacement Sync Added in WatermelonDB 0.25, there is an alternative way to synchronize changes with the server called "Replacement Sync". You should only use this as last resort for cases difficult to deal with in an incremental fashion, due to performance implications. Normally, `pullChanges` is expected to only return changes to data that had occured since `lastPulledAt`. During Replacement Sync, server sends the full dataset - _all_ records that user has access to, same as during initial (first/login) sync. Instead of applying these changes normally, the app will replace its database with the data set received, except that local unpushed changes will be preserved. In other words: - App will create records that are new locally, and update the rest to the server state as per usual - Records that have unpushed changes locally will go through conflict resolution as per usual - HOWEVER, instead of server passing a list of records to delete, app will delete local records not present in the dataset received - Details on how unpushed changes are preserved: - Records marked as `created` are preserved so they have a chance to sync - Records marked as `updated` or `deleted` will be preserved if they're contained in dataset received. Otherwise, they're deleted (since they were remotely deleted/server no longer grants you accecss to them, these changes would be ignored anyway if pushed). If there are no local (unpushed) changes before or during sync, replacement sync should yield the same state as clearing database and performing initial sync. In case replacement sync is performed with an empty dataset (and there are no local changes), the result should be equivalent to clearing database. **When should you use Replacement Sync?** - You can use it as a way to fix a bad sync state (mismatch between local and remote state) - You can use it in case you have a very large state change and your server doesn't know how to correctly calculate incremental changes since last sync (e.g. accessible records changed in a very complex permissions system) In such cases, you could alternatively relogin (clear the database, then perform initial sync again), however: - Replacement Sync preserves local changes to records (and other state such as Local Storage), so there's minimal risk for data loss - When clearing the database, you need to give up all references to Watermelon objects and stop all observation. Therefore, you need to unmount all UI that touches Watermelon, leading to poor UX. This is not required for Replacement Sync - On the other hand, Replacement Sync is much, much slower than Turbo Login (it's not possible to combine the two techniques), so this technique might not scale to very large datasets **Using Replacement Sync** In `pullChanges`, return an object with an extra `strategy` field ```js { changes: { ... }, timestamp: ..., experimentalStrategy: 'replacement', } ``` ## Additional `synchronize()` flags - `_unsafeBatchPerCollection: boolean` - if true, changes will be saved to the database in multiple batches. This is unsafe and breaks transactionality, however may be required for very large syncs due to memory issues - `sendCreatedAsUpdated: boolean` - if your backend can't differentiate between created and updated records, set this to `true` to supress warnings. Sync will still work well, however error reporting, and some edge cases will not be handled as well. - `conflictResolver: (TableName, local: DirtyRaw, remote: DirtyRaw, resolved: DirtyRaw) => DirtyRaw` - can be passed to customize how records are updated when they change during sync. See `src/sync/index.js` for details. - `onWillApplyRemoteChanges` - called after pullChanges is done, but before these changes are applied. Some stats about the pulled changes are passed as arguments. An advanced user can use this for example to show some UI to the user when processing a very large sync (could be useful for replacement syncs). Note that remote change count is NaN in turbo mode. ================================================ FILE: docs-website/docs/docs/Sync/Intro.md ================================================ --- title: Intro hide_title: true --- # Synchronization WatermelonDB has been designed from scratch to be able to seamlessly synchronize with a remote database (and, therefore, keep multiple copies of data synced with each other). Note that Watermelon is only a local database — you need to **bring your own backend**. What Watermelon provides are: - **Synchronization primitives** — information about which records were created, updated, or deleted locally since the last sync — and which columns exactly were modified. You can build your own custom sync engine using those primitives - **Built-in sync adapter** — You can use the sync engine Watermelon provides out of the box, and you only need to provide two API endpoints on your backend that conform to Watermelon sync protocol To implement synchronization between your client side database (WatermelonDB) and your server, you need to implement synchronization in the [frontend](../Sync/Frontend.md) & the [backend](../Sync/Backend.md). ================================================ FILE: docs-website/docs/docs/Sync/Limitations.md ================================================ 1. If a record being pushed changes remotely between pull and push, push will just fail. It would be better if it failed with a list of conflicts, so that `synchronize()` can automatically respond. Alternatively, sync could only send changed fields and server could automatically always just apply those changed fields to the server version (since that's what per-column client-wins resolver will do anyway) 2. During next sync pull, changes we've just pushed will be pulled again, which is unnecessary. It would be better if server, during push, also pulled local changes since `lastPulledAt` and responded with NEW timestamp to be treated as `lastPulledAt`. 3. It shouldn't be necessary to push the whole updated record — just changed fields + ID should be enough > Note: That might conflict with "If client wants to update a record that doesn’t exist, create it"
Don't like these limitations? Good, neither do we! Please [contribute](../Sync/Contribute.md) - we'll give you guidance. ================================================ FILE: docs-website/docs/docs/Sync/Troubleshoot.md ================================================ **⚠️ Note about a React Native / UglifyES bug**. When you import Watermelon Sync, your app might fail to compile in release mode. To fix this, configure Metro bundler to use Terser instead of UglifyES. Run: ```bash yarn add metro-minify-terser ``` Then, update `metro.config.js`: ```js module.exports = { // ... transformer: { // ... minifierPath: 'metro-minify-terser', }, } ``` You might also need to switch to Terser in Webpack if you use Watermelon for web. ================================================ FILE: docs-website/docs/docs/Writers.md ================================================ --- title: Writers, Readers, Batching hide_title: true --- # Writers, Readers, and batching Think of this guide as a part two of [Create, Read, Update, Delete](./CRUD.md). As mentioned previously, you can't just modify WatermelonDB's database anywhere. All changes must be done within a **Writer**. There are two ways of defining a writer: inline and by defining a **writer method**. ### Inline writers Here is an inline writer, you can invoke it anywhere you have access to the `database` object: ```js // Note: function passed to `database.write()` MUST be asynchronous const newPost = await database.write(async => { const post = await database.get('posts').create(post => { post.title = 'New post' post.body = 'Lorem ipsum...' }) const comment = await database.get('comments').create(comment => { comment.post.set(post) comment.author.id = someUserId comment.body = 'Great post!' }) // Note: Value returned from the wrapped function will be returned to `database.write` caller return post }) ``` ### Writer methods Writer methods can be defined on `Model` subclasses by using the `@writer` decorator: ```js import { writer } from '@nozbe/watermelondb/decorators' class Post extends Model { // ... @writer async addComment(body, author) { const newComment = await this.collections.get('comments').create(comment => { comment.post.set(this) comment.author.set(author) comment.body = body }) return newComment } } ``` We highly recommend defining writer methods on `Models` to organize all code that changes the database in one place, and only use inline writers sporadically. Note that this is the same as defining a simple method that wraps all work in `database.write()` - using `@writer` is simply more convenient. **Note:** - Always mark actions as `async` and remember to `await` on `.create()` and `.update()` - You can use `this.collections` to access `Database.collections` **Another example**: updater action on `Comment`: ```js class Comment extends Model { // ... @field('is_spam') isSpam @writer async markAsSpam() { await this.update(comment => { comment.isSpam = true }) } } ``` Now we can create a comment and immediately mark it as spam: ```js const comment = await post.addComment('Lorem ipsum', someUser) await comment.markAsSpam() ``` ## Batch updates When you make multiple changes in a writer, it's best to **batch them**. Batching means that the app doesn't have to go back and forth with the database (sending one command, waiting for the response, then sending another), but instead sends multiple commands in one big batch. This is faster, safer, and can avoid subtle bugs in your app Take an action that changes a `Post` into spam: ```js class Post extends Model { // ... @writer async createSpam() { await this.update(post => { post.title = `7 ways to lose weight` }) await this.collections.get('comments').create(comment => { comment.post.set(this) comment.body = "Don't forget to comment, like, and subscribe!" }) } } ``` Let's modify it to use batching: ```js class Post extends Model { // ... @writer async createSpam() { await this.batch( this.prepareUpdate(post => { post.title = `7 ways to lose weight` }), this.collections.get('comments').prepareCreate(comment => { comment.post.set(this) comment.body = "Don't forget to comment, like, and subscribe!" }) ) } } ``` **Note**: - You can call `await this.batch` within `@writer` methods only. You can also call `database.batch()` within a `database.write()` block. - Pass the list of **prepared operations** as arguments: - Instead of calling `await record.update()`, pass `record.prepareUpdate()` — note lack of `await` - Instead of `await collection.create()`, use `collection.prepareCreate()` - Instead of `await record.markAsDeleted()`, use `record.prepareMarkAsDeleted()` - Instead of `await record.destroyPermanently()`, use `record.prepareDestroyPermanently()` - Advanced: you can pass `collection.prepareCreateFromDirtyRaw({ put your JSON here })` - You can pass falsy values (null, undefined, false) to batch — they will simply be ignored. - You can also pass a single array argument instead of a list of arguments ## Delete action When you delete, say, a `Post`, you generally want all `Comment`s that belong to it to be deleted as well. To do this, override `markAsDeleted()` (or `destroyPermanently()` if you don't sync) to explicitly delete all children as well. ```js class Post extends Model { static table = 'posts' static associations = { comments: { type: 'has_many', foreignKey: 'post_id' }, } @children('comments') comments async markAsDeleted() { await this.comments.destroyAllPermanently() await super.markAsDeleted() } } ``` Then to actually delete the post: ```js database.write(async () => { await post.markAsDeleted() }) ``` **Note:** - Use `Query.destroyAllPermanently()` on all dependent `@children` you want to delete - Remember to call `super.markAsDeleted` — at the end of the method! ## Advanced: Why are readers and writers necessary? WatermelonDB is highly asynchronous, which is a BIG challange in terms of achieving consistent data. Read this only if you are curious:
Why are readers and writers necessary? Consider a function `markCommentsAsSpam` that fetches a list of comments on a post, and then marks them all as spam. The two operations (fetching, and then updating) are asynchronous, and some other operation that modifies the database could run in between. And it could just happen to be a function that adds a new comment on this post. Even though the function completes *successfully*, it wasn't *actually* successful at its job. This example is trivial. But others may be far more dangerous. If a function fetches a record to perform an update on, this very record could be deleted midway through, making the action fail (and potentially causing the app to crash, if not handled properly). Or a function could have invariants determining whether the user is allowed to perform an action, that would be invalidated during action's execution. Or, in a collaborative app where access permissions are represented by another object, parallel execution of different actions could cause those access relations to be left in an inconsistent state. The worst part is that analyzing all *possible* interactions for dangers is very hard, and having sync that runs automatically makes them very likely. Solution? Group together related reads and writes together in an Writer, enforce that all writes MUST occur in a Writer, and only allow one Writer to run at the time. This way, it's guaranteed that in a Writer, you're looking at a consistent view of the world. Most simple reads are safe to do without groupping them, however if you have multiple related reads, you also need to wrap them in a Reader.
## Advanced: Readers Readers are an advanced feature you'll rarely need. Because WatermelonDB is asynchronous, if you make multiple separate queries, normally you have no guarantee that no records were created, updated, or deleted between fetching these queries. Code within a Reader, however, has a guarantee that for the duration of the Reader, no changes will be made to the database (more precisely, no Writer can execute during Reader's work). For example, if you were writing a custom XML data export feature for your app, you'd want the information there to be fully consistent. Therefore, you'd wrap all queries within a Reader: ```js database.read(async () => { // no changes will happen to the database until this function exits }) // alternatively: class Blog extends Model { // ... @reader async exportBlog() { const posts = await this.posts.fetch() const comments = await this.allComments.fetch() // ... } } ``` ## Advanced: nesting writers or readers If you try to call a Writer from another Writer, you'll notice that it won't work. This is because while a Writer is running, no other Writer can run simultaneously. To override this behavior, wrap the Writer call in `this.callWriter`: ```js class Comment extends Model { // ... @writer async appendToPost() { const post = await this.post.fetch() // `appendToBody` is an `@writer` on `Post`, so we call callWriter to allow it await this.callWriter(() => post.appendToBody(this.body)) } } // alternatively: database.write(async writer => { const post = await database.get('posts').find('abcdef') await writer.callWriter(() => post.appendToBody('Lorem ipsum...')) // appendToBody is a @writer }) ``` The same is true with Readers - use `callReader` to nest readers. * * * ## Next steps ➡️ Now that you've mastered all basics of Watermelon, go create some powerful apps — or keep reading [**advanced guides**](./README.md) ================================================ FILE: docs-website/docusaurus.config.js ================================================ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion const { themes } = require('prism-react-renderer') const lightTheme = themes.github const darkTheme = themes.dracula const { version } = require('./package.json') /** @type {import('@docusaurus/types').Config} */ const config = { title: 'WatermelonDB', tagline: 'A reactive database framework', favicon: 'img/favicon.ico', // Set the production url of your site here url: 'https://watermelondb.dev', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' baseUrl: '/', // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. organizationName: 'Nozbe', // Usually your GitHub org/user name. projectName: 'WatermelonDB', // Usually your repo name. trailingSlash: false, onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', locales: ['en'], }, presets: [ [ 'classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/nozbe/WatermelonDB/edit/master/docs-website/', routeBasePath: '/', path: 'docs', lastVersion: 'current', versions: { current: { label: `${version}`, badge: true, }, }, }, // blog: { // showReadingTime: true, // // Please change this to your repo. // // Remove this to remove the "edit this page" links. // editUrl: // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', // }, theme: { customCss: require.resolve('./src/css/custom.css'), }, }), ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ // Replace with your project's social card image: 'img/watermelon-social-card.png', navbar: { title: 'WatermelonDB', logo: { alt: 'WatermelonDB Logo', src: 'img/logo.svg', }, items: [ { type: 'doc', position: 'left', label: 'Docs', docId: 'docs/README', }, { type: 'docsVersionDropdown', position: 'left', }, // {to: '/blog', label: 'Blog', position: 'left'}, { href: 'https://github.com/nozbe/WatermelonDB', label: 'GitHub', position: 'right', }, ], }, footer: { style: 'dark', links: [ { title: 'Docs', items: [ { label: 'Installation', to: '/docs/Installation', }, // { // label: 'Advanced Guides', // to: '/docs/Advanced/Migrations', // }, { label: 'Contributing', to: '/docs/CONTRIBUTING', }, ], }, { title: 'Community', items: [ { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/watermelondb', }, // { // label: 'Discord', // href: 'https://discordapp.com/invite/docusaurus', // }, { label: 'Twitter', href: 'https://twitter.com/radexp', }, ], }, { title: 'More', items: [ // { // label: 'Blog', // to: '/blog', // }, { label: 'GitHub', href: 'https://github.com/nozbe/WatermelonDB', }, ], }, ], copyright: `WatermelonDB by Radek Pietruszewski and Nozbe.`, }, prism: { theme: lightTheme, darkTheme: darkTheme, }, }), } module.exports = config ================================================ FILE: docs-website/package.json ================================================ { "name": "docs-website", "version": "0.28.0", "private": true, "scripts": { "docusaurus": "docusaurus", "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/preset-classic": "3.7.0", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", "prism-react-renderer": "^2.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.7.0" }, "browserslist": { "production": [ ">0.5%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "engines": { "node": ">=18.0" } } ================================================ FILE: docs-website/sidebars.js ================================================ /** * Creating a sidebar enables you to: - create an ordered group of docs - render a sidebar for each doc of that group - provide next/previous navigation The sidebars can be generated from the filesystem, or explicitly defined here. Create as many sidebars as you want. */ // @ts-check /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { docs: { About: [ 'docs/README', // 'docs/Why', // 'docs/WhoUses', // 'docs/Example', // 'docs/Demo', ], Setup: [ 'docs/Installation', 'docs/Setup', 'docs/Schema', 'docs/Model', 'docs/Advanced/Migrations', ], Usage: ['docs/Relation', 'docs/CRUD', 'docs/Components', 'docs/Query', 'docs/Writers'], Sync: [ 'docs/Sync/Intro', 'docs/Sync/Frontend', 'docs/Sync/Backend', 'docs/Sync/Limitations', 'docs/Sync/FAQ', 'docs/Sync/Troubleshoot', 'docs/Sync/Contribute', ], Advanced: [ 'docs/Advanced/CreateUpdateTracking', 'docs/Advanced/AdvancedFields', 'docs/Advanced/Flow', 'docs/Advanced/LocalStorage', 'docs/Advanced/ProTips', 'docs/Advanced/Performance', 'docs/Advanced/SharingDatabaseAcrossTargets', ], Contributing: [ { type: 'autogenerated', dirName: 'docs/Implementation', }, ], Other: ['docs/Roadmap', 'docs/CONTRIBUTING', 'docs/CHANGELOG'], }, } module.exports = sidebars ================================================ FILE: docs-website/src/components/HomepageFeatures/index.js ================================================ import clsx from 'clsx' import React from 'react' import styles from './styles.module.css' const FeatureList = [ { title: 'Fast', description: ( <> WatemerlonDB was designed from the ground up to be blazing fast ⚡️ and launch your app instantly no matter how much data you have. ), }, { title: 'Highly scalable', description: ( <> WatermelonDB is built on rock-solid SQLite foundation and optimized to handle from hundreds to tens of thousands of records. ), }, { title: 'Offline-first', description: ( <> Ideal for offline-first apps, sync with your own server using WatermelonDB Powerful Sync Engine. ), }, ] function Feature({ // Svg, title, description, }) { return (
{/*
*/}

{title}

{description}

) } export default function HomepageFeatures() { return (
{FeatureList.map((props) => ( ))}
) } ================================================ FILE: docs-website/src/components/HomepageFeatures/styles.module.css ================================================ .features { display: flex; align-items: center; padding: 2rem 0; width: 100%; } .featureSvg { height: 200px; width: 200px; } ================================================ FILE: docs-website/src/css/custom.css ================================================ /** * Any CSS included here will be global. The classic template * bundles Infima by default. Infima is a CSS framework designed to * work well for content-centric websites. */ /* You can override the default Infima variables here. */ :root { --ifm-color-primary: #5e983d; --ifm-color-primary-dark: #558937; --ifm-color-primary-darker: #508134; --ifm-color-primary-darkest: #426a2b; --ifm-color-primary-light: #67a743; --ifm-color-primary-lighter: #6caf46; --ifm-color-primary-lightest: #7dbc59; } /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { --ifm-color-primary: #de4156; --ifm-color-primary-dark: #da2940; --ifm-color-primary-darker: #d0243b; --ifm-color-primary-darkest: #ab1e31; --ifm-color-primary-light: #e2596c; --ifm-color-primary-lighter: #e46677; --ifm-color-primary-lightest: #eb8a97; } /* Use this tool to generate colors: https://docusaurus.io/docs/2.0.1/migration/manual#updated-fields */ ================================================ FILE: docs-website/src/pages/index.js ================================================ import Link from '@docusaurus/Link' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import HomepageFeatures from '@site/src/components/HomepageFeatures' import { Redirect } from '@docusaurus/router' import Layout from '@theme/Layout' import clsx from 'clsx' import React from 'react' import styles from './index.module.css' function HomepageHeader() { const { siteConfig } = useDocusaurusContext() return (

{siteConfig.title}

{siteConfig.tagline}

Get Started
) } export default function Home() { // TODO: Build actual home page return // return ( // // //
// //
//
// ) } ================================================ FILE: docs-website/src/pages/index.module.css ================================================ /** * CSS files with the .module.css suffix will be treated as CSS modules * and scoped locally. */ .heroBanner { padding: 4rem 0; text-align: center; position: relative; overflow: hidden; } @media screen and (max-width: 996px) { .heroBanner { padding: 2rem; } } .buttons { display: flex; align-items: center; justify-content: center; } ================================================ FILE: docs-website/static/.nojekyll ================================================ ================================================ FILE: docs-website/static/CNAME ================================================ watermelondb.dev ================================================ FILE: examples/typescript/AppSchema.ts ================================================ import { appSchema, tableSchema } from "@nozbe/watermelondb" import { TableName } from "./ts-example" export const AppSchema = appSchema({ version: 1, tables: [ tableSchema({ name: TableName.BLOGS, columns: [{ name: 'name', type: 'string' }], }), tableSchema({ name: TableName.POSTS, columns: [ { name: 'title', type: 'string' }, { name: 'body', type: 'string' }, { name: 'blog_id', type: 'string', isIndexed: true }, { name: 'is_nasty', type: 'boolean' }, ], }), ], }) ================================================ FILE: examples/typescript/__typetests__/README.md ================================================ Files here are not meant to be executed, only type-checked. Note: You MUST add imports to new files from index.ts Mirror changes here with src/__typetests__ ================================================ FILE: examples/typescript/__typetests__/index.ts ================================================ import './query' import './withObservables' ================================================ FILE: examples/typescript/__typetests__/query.ts ================================================ import { Collection, Q, type ColumnName, type TableName } from '@nozbe/watermelondb' const collection: Collection = null as any const t: TableName = null as any const c: ColumnName = null as any // Check that queries don't break collection.query() collection.query(Q.where(c, true)) collection.query(Q.and(Q.where(c, true))) collection.query(Q.or(Q.where(c, true))) collection.query(Q.on(t, Q.where(c, true))) collection.query().extend(Q.where(c, true)) // Same as above, but as an array collection.query([]) collection.query([Q.where(c, true)]) collection.query(Q.and([Q.where(c, true)])) collection.query(Q.or([Q.where(c, true)])) collection.query(Q.on(t, [Q.where(c, true)])) collection.query().extend([Q.where(c, true)]) ================================================ FILE: examples/typescript/__typetests__/withObservables.tsx ================================================ import * as React from 'react' import { withObservables, ExtractedObservables } from '@nozbe/watermelondb/src/react' import { Model, Database, tableName } from '@nozbe/watermelondb' import { expectType } from 'tsd-check' const TableName_BLOGS = tableName('blogs') class Blog extends Model { static table = TableName_BLOGS } const TABLE_NAME = 'table' const getObservables = ({ id, model, database, }: { id: string model: Blog database: Database }) => { const model$ = database.collections.get(TableName_BLOGS).findAndObserve(id) return { model: model, keyChanged: model, observedModel: model.observe(), secondModel: model$, } } interface ChildProps extends ExtractedObservables> { passThrough: string } class Child extends React.PureComponent { static options = { header: 'Header Text', } render() { const { model, keyChanged, observedModel, secondModel, passThrough } = this.props return ( <> <>{passThrough} <>{model.id} <>{keyChanged.id} <>{observedModel.id} <>{secondModel.id} ) } } const WrappedChild = withObservables(['id'], getObservables)(Child) // @ts-ignore const database!: Database const element = ( ) expectType(WrappedChild.options.header) ================================================ FILE: examples/typescript/package.json ================================================ { "name": "typescript-example", "version": "1.0.0", "license": "MIT", "scripts": { "test": "tsc --noEmit" }, "devDependencies": { "@nozbe/watermelondb": "link:../../", "@types/lokijs": "^1.5.3", "tsd-check": "^0.6.0", "typescript": "^4.5.0" } } ================================================ FILE: examples/typescript/ts-example.ts ================================================ // tslint:disable: max-classes-per-file import { Database, Model, Q, Query, Relation } from '@nozbe/watermelondb' import { action, children, field, lazy, relation, text } from '@nozbe/watermelondb/decorators' import { addColumns, schemaMigrations } from '@nozbe/watermelondb/Schema/migrations' import { setGenerator } from '@nozbe/watermelondb/utils/common/randomId' import SQLiteAdapter from "@nozbe/watermelondb/adapters/sqlite" import { Associations } from '@nozbe/watermelondb/Model' import { SyncDatabaseChangeSet, synchronize } from "@nozbe/watermelondb/sync" import { AppSchema } from "./AppSchema" import './__typetests__' // Create an enum for all Table Names. // This will help in documenting where all exact table names need to be passed. export enum TableName { BLOGS = 'blogs', POSTS = 'posts', } class Blog extends Model { static table = TableName.BLOGS static associations: Associations = { [TableName.POSTS]: { type: 'has_many', foreignKey: 'blog_id' }, } @field('name') name!: string; @children(TableName.POSTS) posts!: Query; @lazy nastyPosts = this.posts .extend(Q.where('is_nasty', true)); @action async moderateAll() { await this.nastyPosts.destroyAllPermanently() } } class Post extends Model { static table = TableName.POSTS static associations: Associations = { [TableName.BLOGS]: { type: 'belongs_to', key: 'blog_id' }, } @field('name') name!: string; @text("body") content!: string; @field('is_nasty') isNasty!: boolean; @relation(TableName.BLOGS, 'blog_id') blog!: Relation; } // Define a custom ID generator. function randomString(): string { return 'RANDOM STRING' } setGenerator(randomString) // or as anonymous function: setGenerator(() => 'RANDOM STRING') const adapter = new SQLiteAdapter({ schema: AppSchema, migrations: schemaMigrations({ migrations: [ { toVersion: 1, steps: [ addColumns({ table: TableName.POSTS, columns: [{ name: "body", type: "string", isIndexed: true, isOptional: false }], }), ], }, ], }), onSetUpError: (error): void => { }, }) const db = new Database({ adapter, modelClasses: [Blog, Post], }) const sync = async () => { return synchronize({ database: db, async pullChanges({ lastPulledAt, schemaVersion, migration }) { // just for demo purposes, this should come from the server const serverTS = new Date().getTime() const serverChanges: SyncDatabaseChangeSet = { posts: { created: [], updated: [], deleted: ["some-id"], }, } return { changes: serverChanges, timestamp: serverTS } }, async pushChanges({ changes, lastPulledAt }) { return undefined }, }) } ================================================ FILE: examples/typescript/tsconfig.json ================================================ { "compilerOptions": { "lib": ["ES2016", "DOM"], "emitDecoratorMetadata": true, "experimentalDecorators": true, "strict": true, "target": "ES5", "paths": { // this allows sub-package imports from src; fx. '@nozbe/watermelondb/decorators' "@nozbe/watermelondb/*": ["../../src/*"] } }, "include": [ "./*.ts", "../../src/**/*.ts" // this is just used to validate everything, not just imported declarations ] } ================================================ FILE: flow-typed/custom/lokijs.js ================================================ declare module 'lokijs' { declare module.exports: any; } declare module 'lokijs/src/loki-indexed-adapter' { declare module.exports: any; } ================================================ FILE: flow-typed/custom/react-native.js ================================================ declare module 'react-native' { declare module.exports: any; } ================================================ FILE: flow-typed/npm/rxjs_v6.x.js ================================================ type rxjs$PartialObserver<-T> = | { +next: (value: T) => mixed, +error?: (error: any) => mixed, +complete?: () => mixed } | { +next?: (value: T) => mixed, +error: (error: any) => mixed, +complete?: () => mixed } | { +next?: (value: T) => mixed, +error?: (error: any) => mixed, +complete: () => mixed }; declare interface rxjs$ISubscription { unsubscribe(): void; } type rxjs$TeardownLogic = rxjs$ISubscription | (() => void); type rxjs$EventListenerOptions = | { capture?: boolean, passive?: boolean, once?: boolean } | boolean; type rxjs$ObservableInput = rxjs$Observable | Promise | Iterable; type rxjs$OperatorFunction = (rxjs$Observable) => rxjs$Observable; type rxjs$OperatorFunctionLast> = ( rxjs$Observable ) => R; declare class rxjs$Observable<+T> { static create( subscribe: ( observer: rxjs$Observer ) => rxjs$ISubscription | Function | void ): rxjs$Observable; let( project: (self: rxjs$Observable) => rxjs$Observable ): rxjs$Observable; observeOn(scheduler: rxjs$SchedulerClass): rxjs$Observable; pipe(): rxjs$Observable; pipe(op1: rxjs$OperatorFunctionLast): A; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunctionLast ): B; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunctionLast ): C; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunction, op4: rxjs$OperatorFunctionLast ): D; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunction, op4: rxjs$OperatorFunction, op5: rxjs$OperatorFunctionLast ): E; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunction, op4: rxjs$OperatorFunction, op5: rxjs$OperatorFunction, op6: rxjs$OperatorFunctionLast ): F; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunction, op4: rxjs$OperatorFunction, op5: rxjs$OperatorFunction, op6: rxjs$OperatorFunction, op7: rxjs$OperatorFunctionLast ): G; pipe( op1: rxjs$OperatorFunction, op2: rxjs$OperatorFunction, op3: rxjs$OperatorFunction, op4: rxjs$OperatorFunction, op5: rxjs$OperatorFunction, op6: rxjs$OperatorFunction, op7: rxjs$OperatorFunction, ...operations: rxjs$OperatorFunctionLast[] ): any; toArray(): rxjs$Observable; toPromise(): Promise; subscribe(observer: rxjs$PartialObserver): rxjs$Subscription; subscribe( onNext: ?(value: T) => mixed, onError: ?(error: any) => mixed, onCompleted: ?() => mixed ): rxjs$Subscription; _subscribe(observer: rxjs$Subscriber): rxjs$Subscription; _isScalar: boolean; source: ?rxjs$Observable; operator: ?rxjs$Operator; } declare module 'rxjs/observable/bindCallback' { declare module.exports: { bindCallback( callbackFunc: (callback: (_: void) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): () => rxjs$Observable; bindCallback( callbackFunc: (callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): () => rxjs$Observable; bindCallback( callbackFunc: (v1: T, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T) => rxjs$Observable; bindCallback( callbackFunc: (v1: T, v2: T2, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2) => rxjs$Observable; bindCallback( callbackFunc: (v1: T, v2: T2, v3: T3, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, callback: (result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; bindCallback( callbackFunc: (callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): () => rxjs$Observable; bindCallback( callbackFunc: (v1: T, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, callback: (...args: Array) => any ) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, callback: (...args: Array) => any ) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, callback: (...args: Array) => any ) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (...args: Array) => any ) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; bindCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (...args: Array) => any ) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; bindCallback( callbackFunc: Function, selector?: void, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable; bindCallback( callbackFunc: Function, selector?: (...args: Array) => T, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable; } } declare module 'rxjs/observable/bindNodeCallback' { declare module.exports: { bindNodeCallback( callbackFunc: (callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): () => rxjs$Observable; bindNodeCallback( callbackFunc: (v1: T, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T) => rxjs$Observable; bindNodeCallback( callbackFunc: ( v1: T, v2: T2, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2) => rxjs$Observable; bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3) => rxjs$Observable; bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; bindNodeCallback( callbackFunc: Function, selector?: void, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable; bindNodeCallback( callbackFunc: Function, selector?: (...args: Array) => T, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable; } } type rxjs$Static$combineLatest = (( a: rxjs$Observable, resultSelector: (a: A) => B ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, resultSelector: (a: A, b: B) => C ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, resultSelector: (a: A, b: B, c: C) => D ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D) => E ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E) => F ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G ) => rxjs$Observable) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H ) => rxjs$Observable) & ((a: rxjs$Observable, _: void) => rxjs$Observable<[A]>) & (( a: rxjs$Observable, b: rxjs$Observable, _: void ) => rxjs$Observable<[A, B]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C, D]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C, D, E]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C, D, E, F]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C, D, E, F, G]>) & (( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, h: rxjs$Observable, _: void ) => rxjs$Observable<[A, B, C, D, E, F, G, H]>); declare module 'rxjs/observable/combineLatest' { declare module.exports: { combineLatest: rxjs$Static$combineLatest; } } declare module 'rxjs/observable/concat' { declare module.exports: { concat<+T>(...sources: rxjs$Observable[]): rxjs$Observable; } } declare module 'rxjs/observable/defer' { declare module.exports: { defer<+T>( observableFactory: () => rxjs$Observable | Promise ): rxjs$Observable; } } declare module 'rxjs/observable/empty' { declare module.exports: { empty(): rxjs$Observable; } } declare module 'rxjs/observable/forkJoin' { declare module.exports: { forkJoin( a: rxjs$Observable, resultSelector: (a: A) => B ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, resultSelector: (a: A, b: B) => C ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, resultSelector: (a: A, b: B, c: C) => D ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D) => E ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E) => F ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H ): rxjs$Observable; forkJoin( a: rxjs$Observable, b: rxjs$Observable, _: void ): rxjs$Observable<[A, B]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F, G]>; forkJoin( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, h: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F, G, H]>; forkJoin( a: Array>, _: void ): rxjs$Observable>; forkJoin( a: Array>, _: void ): rxjs$Observable; forkJoin( a: Array>, resultSelector: (...values: Array) => B ): rxjs$Observable; forkJoin( a: Array>, resultSelector: (...values: Array) => A ): rxjs$Observable; } } declare module 'rxjs/observable/from' { declare module.exports: { from<+T>( input: rxjs$ObservableInput, scheduler?: rxjs$SchedulerClass ): rxjs$Observable; } } declare module 'rxjs/observable/fromPromise' { declare module.exports: { fromPromise<+T>(promise: Promise): rxjs$Observable; } } declare module 'rxjs/observable/fromEvent' { declare module.exports: { fromEvent: (<+T>( element: any, eventName: string, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, options: rxjs$EventListenerOptions, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, selector: () => T, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, options: rxjs$EventListenerOptions, selector: () => T ) => rxjs$Observable); } } declare module 'rxjs/observable/fromEventPattern' { declare module.exports: { fromEventPattern<+T>( addHandler: (handler: (item: T) => void) => void, removeHandler: (handler: (item: T) => void) => void, selector?: () => T ): rxjs$Observable; } } declare module 'rxjs/observable/generate' { declare module.exports: { // TODO } } declare module 'rxjs/observable/iif' { declare module.exports: { // TODO } } declare module 'rxjs/observable/interval' { declare module.exports: { interval(period: number): rxjs$Observable; } } declare module 'rxjs/observable/merge' { declare module.exports: { merge: (<+T, U>( source0: rxjs$Observable, source1: rxjs$Observable ) => rxjs$Observable) & (<+T, U, V>( source0: rxjs$Observable, source1: rxjs$Observable, source2: rxjs$Observable ) => rxjs$Observable) & (<+T>(...sources: rxjs$Observable[]) => rxjs$Observable) } } declare module 'rxjs/observable/never' { declare module.exports: { never(): rxjs$Observable; } } declare module 'rxjs/observable/of' { declare module.exports: { of<+T>(...values: T[]): rxjs$Observable; } } declare module 'rxjs/observable/onErrorResumeNext' { declare module.exports: { // TODO } } declare module 'rxjs/observable/pairs' { declare module.exports: { // TODO } } declare module 'rxjs/observable/race' { declare module.exports: { // TODO } } declare module 'rxjs/observable/range' { declare module.exports: { range( start?: number, count?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable; } } declare module 'rxjs/observable/throwError' { declare module.exports: { throwError(error: any): rxjs$Observable; } } declare module 'rxjs/observable/timer' { declare module.exports: { timer( initialDelay: number | Date, period?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable; } } declare module 'rxjs/observable/using' { declare module.exports: { using<+T, R: rxjs$ISubscription>( resourceFactory: () => ?R, observableFactory: (resource: R) => rxjs$Observable | Promise | void ): rxjs$Observable; } } declare module 'rxjs/observable/zip' { declare module.exports: { zip( a: rxjs$Observable, resultSelector: (a: A) => B ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, resultSelector: (a: A, b: B) => C ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, resultSelector: (a: A, b: B, c: C) => D ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D) => E ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E) => F ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G ): rxjs$Observable; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H ): rxjs$Observable; zip(a: rxjs$Observable, _: void): rxjs$Observable<[A]>; zip( a: rxjs$Observable, b: rxjs$Observable, _: void ): rxjs$Observable<[A, B]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F, G]>; zip( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, h: rxjs$Observable, _: void ): rxjs$Observable<[A, B, C, D, E, F, G, H]>; } } declare class rxjs$ConnectableObservable extends rxjs$Observable { connect(): rxjs$Subscription; refCount(): rxjs$Observable; } declare module "rxjs/operators" { declare module.exports: { audit<+T>( durationSelector: (value: T) => rxjs$Observable | Promise ): rxjs$Observable => rxjs$Observable; auditTime<+T>( duration: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable; race<+T>(other: rxjs$Observable): rxjs$Observable => rxjs$Observable; repeat<+T>(count?: number): rxjs$Observable => rxjs$Observable; buffer<+T>(bufferBoundaries: rxjs$Observable): rxjs$Observable => rxjs$Observable>; bufferCount<+T>( bufferSize: number, startBufferEvery?: number ): rxjs$Observable => rxjs$Observable>; bufferTime<+T>( bufferTimeSpan: number, bufferCreationInterval?: number, maxBufferSize?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable>; bufferToggle<+T, U>( openings: rxjs$Observable | Promise, closingSelector: (value: U) => rxjs$Observable | Promise ): rxjs$Observable => rxjs$Observable>; bufferWhen<+T>( closingSelector: () => rxjs$Observable ): rxjs$Observable => rxjs$Observable>; catchError<+T, U>( selector: (err: any, caught: rxjs$Observable) => rxjs$Observable ): rxjs$Observable => rxjs$Observable; concat<+T, U>(...sources: rxjs$Observable[]): rxjs$Observable => rxjs$Observable; concatAll<+T, U>(): rxjs$Observable => rxjs$Observable; concatMap<+T, U>( f: (value: T, index: number) => rxjs$ObservableInput, _: void ): rxjs$Observable => rxjs$Observable; concatMap<+T, U, V>( f: (value: T, index: number) => rxjs$ObservableInput, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V ): rxjs$Observable => rxjs$Observable; debounceTime<+T>( dueTime: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable; defaultIfEmpty<+T, U>(defaultValue: U): rxjs$Observable => rxjs$Observable; delay<+T>(dueTime: number, scheduler?: rxjs$SchedulerClass): rxjs$Observable => rxjs$Observable; delayWhen<+T>( delayDurationSelector: (value: T) => rxjs$Observable, subscriptionDelay?: rxjs$Observable ): rxjs$Observable => rxjs$Observable; distinctUntilChanged<+T>(compare?: (x: T, y: T) => boolean): rxjs$Observable => rxjs$Observable; distinct<+T, U>( keySelector?: (value: T) => U, flushes?: rxjs$Observable ): rxjs$Observable => rxjs$Observable; distinctUntilKeyChanged<+T>( key: string, compare?: (x: mixed, y: mixed) => boolean ): rxjs$Observable => rxjs$Observable; elementAt<+T>(index: number, defaultValue?: T): rxjs$Observable => rxjs$Observable; exhaustMap<+T, U>( project: (value: T, index: number) => rxjs$ObservableInput, _: void ): rxjs$Observable => rxjs$Observable; exhaustMap<+T, U, V>( project: (value: T, index: number) => rxjs$ObservableInput, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V ): rxjs$Observable => rxjs$Observable; expand<+T>( project: (value: T, index: number) => rxjs$Observable, concurrent?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable; filter<+T>( predicate: (value: T, index: number) => boolean, thisArg?: any ): rxjs$Observable => rxjs$Observable; finalize<+T>(f: () => mixed): rxjs$Observable => rxjs$Observable; first<+T, U>( predicate: ?( value: T, index: number, source: rxjs$Observable ) => boolean, resultSelector: (value: T, index: number) => U ): rxjs$Observable => rxjs$Observable; first<+T, U>( predicate: ?( value: T, index: number, source: rxjs$Observable ) => boolean, resultSelector: ?(value: T, index: number) => U, defaultValue: U ): rxjs$Observable => rxjs$Observable; first<+T>( predicate?: (value: T, index: number, source: rxjs$Observable) => boolean ): rxjs$Observable => rxjs$Observable; groupBy: (<+T, K>( keySelector: (value: T) => K, _: void ) => rxjs$Observable => rxjs$Observable>) & (<+T, K, V>( keySelector: (value: T) => K, elementSelector: (value: T) => V, durationSelector?: ( grouped: rxjs$GroupedObservable ) => rxjs$Observable ) => rxjs$Observable => rxjs$Observable>); ignoreElements<+T, U>(): rxjs$Observable => rxjs$Observable; last<+T>( predicate?: (value: T, index: number, source: rxjs$Observable) => boolean ): rxjs$Observable => rxjs$Observable; last<+T, U>( predicate: ?( value: T, index: number, source: rxjs$Observable ) => boolean, resultSelector: (value: T, index: number) => U ): rxjs$Observable => rxjs$Observable; last<+T, U>( predicate: ?( value: T, index: number, source: rxjs$Observable ) => boolean, resultSelector: ?(value: T, index: number) => U, defaultValue: U ): rxjs$Observable => rxjs$Observable; startWith<+T>(...values: Array): rxjs$Observable => rxjs$Observable; // Alias for `mergeMap` flatMap<+T, U>( project: (value: T, index: number) => rxjs$ObservableInput, concurrency?: number ): rxjs$Observable => rxjs$Observable; flatMap<+T, U, V>( project: (value: T, index: number) => rxjs$ObservableInput, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V, concurrency?: number ): rxjs$Observable => rxjs$Observable; flatMapTo<+T, U>(innerObservable: rxjs$Observable): rxjs$Observable => rxjs$Observable; flatMapTo<+T, U, V>( innerObservable: rxjs$Observable, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V, concurrent?: number ): rxjs$Observable => rxjs$Observable; switchMap: (<+T, U, V>( project: (value: T, index: number) => rxjs$ObservableInput, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V ) => rxjs$Observable => rxjs$Observable) & (<+T, U>( project: (value: T, index: number) => rxjs$ObservableInput ) => rxjs$Observable => rxjs$Observable); switchMapTo<+T, U>(innerObservable: rxjs$Observable): rxjs$Observable => rxjs$Observable; map<+T, U>(f: (value: T, index: number) => U, thisArg?: any): rxjs$Observable => rxjs$Observable; mapTo<+T, U>(value: U): rxjs$Observable => rxjs$Observable; merge<+T>(other: rxjs$Observable): rxjs$Observable => rxjs$Observable; mergeAll<+T, U>(): rxjs$Observable => rxjs$Observable; mergeMap: (<+T, U>( project: (value: T, index: number) => rxjs$ObservableInput, concurrency?: number ) => rxjs$Observable => rxjs$Observable) & (<+T, U, V>( project: (value: T, index: number) => rxjs$ObservableInput, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V, concurrency?: number ) => rxjs$Observable => rxjs$Observable); mergeMapTo<+T, U>(innerObservable: rxjs$Observable): rxjs$Observable => rxjs$Observable; mergeMapTo<+T, U, V>( innerObservable: rxjs$Observable, resultSelector: ( outerValue: T, innerValue: U, outerIndex: number, innerIndex: number ) => V, concurrent?: number ): rxjs$Observable => rxjs$Observable; multicast<+T>( subjectOrSubjectFactory: rxjs$Subject | (() => rxjs$Subject) ): rxjs$Observable => rxjs$ConnectableObservable; pairwise<+T>(): rxjs$Observable => rxjs$Observable<[T, T]>; partition<+T>( predicate: (value: T, index: number) => boolean, thisArg: any ): rxjs$Observable => [rxjs$Observable, rxjs$Observable]; publish<+T>(): rxjs$Observable => rxjs$ConnectableObservable; publishLast<+T>(): rxjs$Observable => rxjs$ConnectableObservable; reduce<+T, U>( accumulator: ( acc: U, currentValue: T, index: number, source: rxjs$Observable ) => U, seed: U ): rxjs$Observable => rxjs$Observable; sample<+T>(notifier: rxjs$Observable): rxjs$Observable => rxjs$Observable; sampleTime<+T>( delay: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable; publishReplay<+T>( bufferSize?: number, windowTime?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$ConnectableObservable; retry<+T>(retryCount: ?number): rxjs$Observable => rxjs$Observable; retryWhen<+T>( notifier: (errors: rxjs$Observable) => rxjs$Observable ): rxjs$Observable => rxjs$Observable; scan<+T, U>(f: (acc: U, value: T) => U, initialValue: U): rxjs$Observable => rxjs$Observable; share<+T>(): rxjs$Observable => rxjs$Observable; skip<+T>(count: number): rxjs$Observable => rxjs$Observable; skipUntil<+T>(other: rxjs$Observable | Promise): rxjs$Observable => rxjs$Observable; skipWhile<+T>( predicate: (value: T, index: number) => boolean ): rxjs$Observable => rxjs$Observable; startWith<+T>(...values: Array): rxjs$Observable => rxjs$Observable; subscribeOn<+T>(scheduler: rxjs$SchedulerClass): rxjs$Observable => rxjs$Observable; take<+T>(count: number): rxjs$Observable => rxjs$Observable; takeUntil<+T>(other: rxjs$Observable): rxjs$Observable => rxjs$Observable; takeWhile<+T>( predicate: (value: T, index: number) => boolean ): rxjs$Observable => rxjs$Observable; tap: (<+T>( onNext?: (value: T) => mixed, onError?: (error: any) => mixed, onCompleted?: () => mixed ) => rxjs$Observable => rxjs$Observable) & (<+T>(observer: { next?: (value: T) => mixed, error?: (error: any) => mixed, complete?: () => mixed }) => rxjs$Observable => rxjs$Observable); throttleTime<+T>(duration: number): rxjs$Observable => rxjs$Observable; timeout<+T>(due: number | Date, _: void): rxjs$Observable => rxjs$Observable; timeoutWith<+T, U>( due: number | Date, withObservable: rxjs$Observable, scheduler?: rxjs$SchedulerClass ): rxjs$Observable => rxjs$Observable; toArray<+T>(): rxjs$Observable => rxjs$Observable; window<+T>( windowBoundaries: rxjs$Observable ): rxjs$Observable => rxjs$Observable>; windowCount<+T>( windowSize: number, startWindowEvery?: number ): rxjs$Observable => rxjs$Observable>; windowToggle<+T, A>( openings: rxjs$Observable, closingSelector: (value: A) => rxjs$Observable ): rxjs$Observable => rxjs$Observable>; windowWhen<+T>( closingSelector: () => rxjs$Observable ): rxjs$Observable => rxjs$Observable>; withLatestFrom: rxjs$Operators$withLatestFrom; // deprecated in favor of static zip // see: https://rxjs-dev.firebaseapp.com/api/operators/zip zip: rxjs$Operators$zip; // deprecated in favor of static combineLatest // see: https://rxjs-dev.firebaseapp.com/api/operators/combineLatest combineLatest: rxjs$Operators$combineLatest; refCount(): rxjs$ConnectableObservable => rxjs$Observable; }; } type rxjs$Operators$withLatestFrom = { ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, resultSelector: (t: T, a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, resultSelector: (t: T, a: A, b: B, c: C, d: D, e: E, f: F) => G ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, resultSelector: (t: T, a: A, b: B, c: C, d: D, e: E) => F ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, resultSelector: (t: T, a: A, b: B, c: C, d: D) => E ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, resultSelector: (t: T, a: A, b: B, c: C) => D ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, resultSelector: (t: T, a: A, b: B) => C ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, resultSelector: (t: T, a: A) => B ): rxjs$Observable => rxjs$Observable; ( resultSelector: (t: T) => A ): rxjs$Observable => rxjs$Observable; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, g: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B, C, D, E, E, F, G]>; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, f: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B, C, D, E, F]>; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, e: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B, C, D, E]>; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, d: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B, C, D]>; ( a: rxjs$Observable, b: rxjs$Observable, c: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B, C]>; ( a: rxjs$Observable, b: rxjs$Observable, _: void ): rxjs$Observable => rxjs$Observable<[T, A, B]>; (a: rxjs$Observable, _: void): rxjs$Observable => rxjs$Observable<[T, A]>; ( ...args: rxjs$Observable[] ): rxjs$Observable => rxjs$Observable; ( ...args: (rxjs$Observable | (t: T, ...obs: any[]) => R)[] ): rxjs$Observable => rxjs$Observable; } type rxjs$Operators$zip = rxjs$Operators$withLatestFrom; type rxjs$Operators$combineLatest = rxjs$Operators$withLatestFrom; declare class rxjs$GroupedObservable extends rxjs$Observable { key: K; } declare class rxjs$Observer<-T> { next(value: T): mixed; error(error: any): mixed; complete(): mixed; } declare interface rxjs$Operator { call(subscriber: rxjs$Subscriber, source: any): rxjs$TeardownLogic; } declare class rxjs$Subject mixins rxjs$Observable, rxjs$Observer { static create( destination: rxjs$Observer, source: rxjs$Observable ): rxjs$AnonymousSubject; asObservable(): rxjs$Observable; observers: Array>; unsubscribe(): void; // For use in subclasses only: _next(value: T): void; } declare class rxjs$AnonymousSubject extends rxjs$Subject { source: ?rxjs$Observable; destination: ?rxjs$Observer; constructor( destination?: rxjs$Observer, source?: rxjs$Observable ): void; } declare class rxjs$BehaviorSubject extends rxjs$Subject { constructor(initialValue: T): void; getValue(): T; } declare class rxjs$ReplaySubject extends rxjs$Subject { constructor( bufferSize?: number, windowTime?: number, scheduler?: rxjs$SchedulerClass ): void; } declare class rxjs$Subscription { unsubscribe(): void; add(teardown: rxjs$TeardownLogic): rxjs$Subscription; } declare class rxjs$Subscriber extends rxjs$Subscription { static create( next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void ): rxjs$Subscriber; constructor( destinationOrNext?: rxjs$PartialObserver | ((value: T) => void), error?: (e?: any) => void, complete?: () => void ): void; next(value?: T): void; error(err?: any): void; complete(): void; unsubscribe(): void; } declare class rxjs$SchedulerClass { schedule( work: (state?: T) => void, delay?: number, state?: T ): rxjs$Subscription; } declare class rxjs$ArgumentOutOfRangeError extends Error {} declare class rxjs$EmptyError extends Error {} declare class rxjs$ObjectUnsubscribedError extends Error {} declare class rxjs$TimeoutError extends Error {} declare class rxjs$UnsubscriptionError extends Error {} declare module "rxjs" { declare module.exports: { concat<+T>(...sources: rxjs$Observable[]): rxjs$Observable, from<+T>( input: rxjs$ObservableInput, scheduler?: rxjs$SchedulerClass ): rxjs$Observable, of<+T>(...values: T[]): rxjs$Observable, defer<+T>(factory: () => ?rxjs$ObservableInput): rxjs$Observable, empty<+T>(): rxjs$Observable, never<+T>(): rxjs$Observable, bindNodeCallback( callbackFunc: (callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): () => rxjs$Observable, bindNodeCallback( callbackFunc: (v1: T, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T) => rxjs$Observable, bindNodeCallback( callbackFunc: ( v1: T, v2: T2, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2) => rxjs$Observable, bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3) => rxjs$Observable, bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable, bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable, bindNodeCallback( callbackFunc: ( v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (err: any, result: U) => any ) => any, selector?: void, scheduler?: rxjs$SchedulerClass ): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable, bindNodeCallback( callbackFunc: Function, selector?: void, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable, bindNodeCallback( callbackFunc: Function, selector?: (...args: Array) => T, scheduler?: rxjs$SchedulerClass ): (...args: Array) => rxjs$Observable, timer( initialDelay: number | Date, period?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable, interval( period?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable, range( start?: number, count?: number, scheduler?: rxjs$SchedulerClass ): rxjs$Observable, merge: (<+T, U>( source0: rxjs$Observable, source1: rxjs$Observable ) => rxjs$Observable) & (<+T, U, V>( source0: rxjs$Observable, source1: rxjs$Observable, source2: rxjs$Observable ) => rxjs$Observable) & (<+T>(...sources: rxjs$Observable[]) => rxjs$Observable), fromEvent: (<+T>( element: any, eventName: string, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, options: rxjs$EventListenerOptions, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, selector: () => T, ...none: Array ) => rxjs$Observable) & (<+T>( element: any, eventName: string, options: rxjs$EventListenerOptions, selector: () => T ) => rxjs$Observable); combineLatest: rxjs$Static$combineLatest, Observable: typeof rxjs$Observable, Observer: typeof rxjs$Observer, ConnectableObservable: typeof rxjs$ConnectableObservable, Subject: typeof rxjs$Subject, Subscriber: typeof rxjs$Subscriber, AnonymousSubject: typeof rxjs$AnonymousSubject, BehaviorSubject: typeof rxjs$BehaviorSubject, ReplaySubject: typeof rxjs$ReplaySubject, Scheduler: { asap: rxjs$SchedulerClass, queue: rxjs$SchedulerClass, animationFrame: rxjs$SchedulerClass, async: rxjs$SchedulerClass }, Subscription: typeof rxjs$Subscription, ArgumentOutOfRangeError: typeof rxjs$ArgumentOutOfRangeError, EmptyError: typeof rxjs$EmptyError, ObjectUnsubscribedError: typeof rxjs$ObjectUnsubscribedError, TimeoutError: typeof rxjs$TimeoutError, UnsubscriptionError: typeof rxjs$UnsubscriptionError, throwError(error: any): rxjs$Observable, }; } declare module "rxjs/Observable" { declare module.exports: { Observable: typeof rxjs$Observable }; } declare module "rxjs/Observer" { declare module.exports: { Observer: typeof rxjs$Observer }; } declare module "rxjs/BehaviorSubject" { declare module.exports: { BehaviorSubject: typeof rxjs$BehaviorSubject }; } declare module "rxjs/ReplaySubject" { declare module.exports: { ReplaySubject: typeof rxjs$ReplaySubject }; } declare module "rxjs/Subject" { declare module.exports: { Subject: typeof rxjs$Subject, AnonymousSubject: typeof rxjs$AnonymousSubject }; } declare module "rxjs/Subscriber" { declare module.exports: { Subscriber: typeof rxjs$Subscriber }; } declare module "rxjs/Subscription" { declare module.exports: { Subscription: typeof rxjs$Subscription }; } declare module "rxjs/testing" { declare module.exports: { TestScheduler: typeof rxjs$SchedulerClass }; } declare module "rxjs/util/ArgumentOutOfRangeError" { declare module.exports: { ArgumentOutOfRangeError: typeof rxjs$ArgumentOutOfRangeError, }; } declare module "rxjs/util/EmptyError" { declare module.exports: { EmptyError: typeof rxjs$EmptyError, }; } declare module "rxjs/util/ObjectUnsubscribedError" { declare module.exports: { ObjectUnsubscribedError: typeof rxjs$ObjectUnsubscribedError, }; } declare module "rxjs/util/TimeoutError" { declare module.exports: { TimeoutError: typeof rxjs$TimeoutError, }; } declare module "rxjs/util/UnsubscriptionError" { declare module.exports: { UnsubscriptionError: typeof rxjs$UnsubscriptionError, }; } ================================================ FILE: jest.config.js ================================================ module.exports = { verbose: true, bail: true, moduleNameMapper: {}, setupFilesAfterEnv: ['/src/__tests__/setup.js'], rootDir: __dirname, modulePaths: ['/src'], moduleDirectories: ['/node_modules'], restoreMocks: true, testMatch: ['**/__tests__/**/?(spec|test).js', '**/?(*.)(spec|test).js'], moduleFileExtensions: ['js'], modulePathIgnorePatterns: ['/dist', '/dev'], // collectCoverage: true, // collectCoverageFrom: ['!**/node_modules/**', 'src/**'], // coverageDirectory: 'coverage', // coverageReporters: ['html', 'json'], cacheDirectory: '.cache/jest', } ================================================ FILE: metro.config.js ================================================ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config') const exclusionList = require('metro-config/src/defaults/exclusionList') // const fs = require('fs') const path = require('path') const glob = require('glob-to-regexp') const metroCache = require('metro-cache') // const rnwPath = fs.realpathSync( // path.resolve(require.resolve('react-native-windows/package.json'), '..'), // ) const getBlockList = () => { const defaultPattern = exclusionList([ // ignore dist/, dev/ glob(`${path.resolve(__dirname, '..')}/dist/*`), glob(`${path.resolve(__dirname, '..')}/dev/*`), glob(`${path.resolve(__dirname, '..')}/example/*`), // This stops "react-native run-windows" from causing the metro server to crash if its already running // TODO: Shouldn't it be native/windowsTest? new RegExp(`${path.resolve(__dirname, 'windows').replace(/[/\\]/g, '/')}.*`), // This prevents "react-native run-windows" from hitting: EBUSY: resource busy or locked, open msbuild.ProjectImports.zip or other files produced by msbuild // new RegExp(`${rnwPath}/build/.*`), // new RegExp(`${rnwPath}/target/.*`), // /.*\.ProjectImports\.zip/, ]) .toString() .slice(1, -1) // delete __tests__ from the default blacklist const newPattern = defaultPattern.replace(`|\\${path.sep}__tests__\\${path.sep}.*`, '') return RegExp(newPattern) } const config = { projectRoot: path.resolve(__dirname), watchFolders: [ path.resolve(__dirname, 'native'), path.resolve(__dirname, 'node_modules', '@babel'), ], resolver: { extraNodeModules: { // We need `expect` package for RN integration tests… but the damn thing expects to be in jest // (Node) environment… so we have to mock a bunch of stuff for this to work fs: path.resolve(__dirname, 'src/__tests__/emptyMock'), 'graceful-fs': path.resolve(__dirname, 'src/__tests__/emptyMock'), module: path.resolve(__dirname, 'src/__tests__/emptyMock'), assert: path.resolve(__dirname, 'src/__tests__/emptyMock'), stream: path.resolve(__dirname, 'src/__tests__/emptyMock'), constants: path.resolve(__dirname, 'src/__tests__/emptyMock'), }, blockList: getBlockList(), }, transformer: { babelTransformerPath: path.resolve(__dirname, 'native/metro-transformer.js'), }, cacheStores: [ new metroCache.FileStore({ root: path.resolve(__dirname, '.cache/metro'), }), ], } module.exports = mergeConfig(getDefaultConfig(__dirname), config) ================================================ FILE: native/.clang-format ================================================ AccessModifierOffset: 0 AlignEscapedNewlinesLeft: true AlignTrailingComments: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine: true AllowShortLoopsOnASingleLine: false AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: false BinPackParameters: false BreakBeforeBinaryOperators: false BreakBeforeBraces: Attach BreakBeforeTernaryOperators: false BreakConstructorInitializersBeforeComma: false ColumnLimit: 120 CommentPragmas: '' ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 0 ContinuationIndentWidth: 0 Cpp11BracedListStyle: false DerivePointerBinding: false IndentCaseLabels: false IndentFunctionDeclarationAfterType: false IndentWidth: 4 Language: Cpp MaxEmptyLinesToKeep: 2 NamespaceIndentation: None ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 100 PenaltyBreakComment: 100 PenaltyBreakFirstLessLess: 0 PenaltyBreakString: 100 PenaltyExcessCharacter: 1 PenaltyReturnTypeOnItsOwnLine: 20 # PointerBindsToType: 100 SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: false SpacesInParentheses: false Standard: Cpp11 TabWidth: 4 UseTab: Never ================================================ FILE: native/.gitignore ================================================ # Xcode # build/ *.pbxuser !default.pbxuser *.mode1v3 !default.mode1v3 *.mode2v3 !default.mode2v3 *.perspectivev3 !default.perspectivev3 xcuserdata *.xccheckout *.moved-aside DerivedData *.hmap *.ipa *.dSYM.zip *.xcuserstate project.xcworkspace **/.xcode.env.local # CocoaPods that are too big to reasonably commit **/Pods/boost-for-react-native **/Pods/boost **/Pods/RCT-Folly **/Pods/hermes-engine **/Pods/libevent **/Pods/Sentry **/Pods/hermes-engine-artifacts # Android/IntelliJ # build/ .idea .gradle .settings .project .classpath local.properties *.iml testPath* # BUCK buck-out/ \.buckd/ *.keystore # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the # screenshots whenever they are needed. # For more information about the recommended setup visit: # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md fastlane/report.xml fastlane/Preview.html fastlane/screenshots fastlane/README.md fastlane/test_output !DemoKeystore.keystore ================================================ FILE: native/android/.gitignore ================================================ *.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures .externalNativeBuild testPath* ================================================ FILE: native/android/build.gradle ================================================ buildscript { ext.getExtOrDefault = {name -> return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['ReactNativeWatermelonDB_' + name] } ext.getExtOrIntegerDefault = {name -> return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['ReactNativeWatermelonDB_' + name]).toInteger() } repositories { mavenCentral() } dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}") } } apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { compileSdkVersion getExtOrIntegerDefault('compileSdkVersion') buildToolsVersion getExtOrDefault('buildToolsVersion') namespace "com.nozbe.watermelondb" defaultConfig { minSdkVersion getExtOrIntegerDefault('minSdkVersion') targetSdkVersion getExtOrIntegerDefault('targetSdkVersion') versionCode 1 versionName "1.0" } } dependencies { //noinspection GradleDynamicVersion implementation 'com.facebook.react:react-native:+' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getExtOrDefault('kotlinVersion')}" } repositories { mavenCentral() } ================================================ FILE: native/android/gradle.properties ================================================ ReactNativeWatermelonDB_kotlinVersion=1.3.50 ReactNativeWatermelonDB_compileSdkVersion=31 ReactNativeWatermelonDB_buildToolsVersion=28.0.3 ReactNativeWatermelonDB_targetSdkVersion=28 ReactNativeWatermelonDB_minSdkVersion=16 ================================================ FILE: native/android/src/main/AndroidManifest.xml ================================================ ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/Connection.java ================================================ package com.nozbe.watermelondb; import java.util.ArrayList; public abstract class Connection { public static class Connected extends Connection { public final WMDatabaseDriver driver; public Connected(WMDatabaseDriver driver) { this.driver = driver; } } public static class Waiting extends Connection { public final ArrayList queueInWaiting; public Waiting(ArrayList queueInWaiting) { this.queueInWaiting = queueInWaiting; } } public ArrayList getQueue() { if (this instanceof Connected) { return new ArrayList<>(); } else if (this instanceof Waiting) { return ((Waiting) this).queueInWaiting; } return null; } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/DatabaseUtils.java ================================================ package com.nozbe.watermelondb; import android.database.Cursor; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableMap; public class DatabaseUtils { public static WritableMap cursorToMap(Cursor cursor) { WritableMap map = Arguments.createMap(); for (int i = 0; i < cursor.getColumnCount(); i++) { switch (cursor.getType(i)) { case Cursor.FIELD_TYPE_NULL: map.putNull(cursor.getColumnName(i)); break; case Cursor.FIELD_TYPE_INTEGER: case Cursor.FIELD_TYPE_FLOAT: map.putDouble(cursor.getColumnName(i), cursor.getDouble(i)); break; case Cursor.FIELD_TYPE_STRING: map.putString(cursor.getColumnName(i), cursor.getString(i)); break; case Cursor.FIELD_TYPE_BLOB: default: map.putString(cursor.getColumnName(i), ""); break; } } return map; } public static boolean arrayContains(final T[] array, final T value) { if (value == null) { for (final T e : array) { if (e == null) { return true; } } } else { for (final T e : array) { if (e == value || value.equals(e)) { return true; } } } return false; } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/MigrationNeededError.java ================================================ package com.nozbe.watermelondb; public class MigrationNeededError extends RuntimeException { public int databaseVersion; public MigrationNeededError(int databaseVersion) { this.databaseVersion = databaseVersion; } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/Queries.java ================================================ package com.nozbe.watermelondb; public class Queries { public static final String select_local_storage = "select value from local_storage where key = ?"; public static final String select_tables = "select * from sqlite_master where type='table'"; public static String dropTable(String table) { return "drop table if exists `" + table + "`"; } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/SchemaNeededError.java ================================================ package com.nozbe.watermelondb; public class SchemaNeededError extends RuntimeException { } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java ================================================ package com.nozbe.watermelondb; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.database.sqlite.SQLiteDatabase; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class WMDatabase { private final SQLiteDatabase db; private WMDatabase(SQLiteDatabase db) { this.db = db; } public static Map INSTANCES = new HashMap<>(); public static WMDatabase getInstance(String name, Context context) { return getInstance(name, context, SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING); } public static WMDatabase getInstance(String name, Context context, int openFlags) { synchronized (WMDatabase.class) { WMDatabase instance = INSTANCES.getOrDefault(name, null); if (instance == null || !instance.isOpen()) { WMDatabase database = buildDatabase(name, context, openFlags); INSTANCES.put(name, database); return database; } else { return instance; } } } public static WMDatabase buildDatabase(String name, Context context, int openFlags) { SQLiteDatabase sqLiteDatabase = WMDatabase.createSQLiteDatabase(name, context, openFlags); return new WMDatabase(sqLiteDatabase); } private static SQLiteDatabase createSQLiteDatabase(String name, Context context, int openFlags) { String path; if (name.equals(":memory:") || name.contains("mode=memory")) { context.getCacheDir().delete(); path = new File(context.getCacheDir(), name).getPath(); } else { // On some systems there is some kind of lock on `/databases` folder ¯\_(ツ)_/¯ path = context.getDatabasePath("" + name + ".db").getPath().replace("/databases", ""); } return SQLiteDatabase.openDatabase(path, null, openFlags); } public void setUserVersion(int version) { db.setVersion(version); } public int getUserVersion() { return db.getVersion(); } public void unsafeExecuteStatements(String statements) { this.transaction(() -> { // NOTE: This must NEVER be allowed to take user input - split by `;` is not grammar-aware // and so is unsafe. Only works with Watermelon-generated strings known to be safe for (String statement : statements.split(";")) { if (!statement.trim().isEmpty()) { this.execute(statement); } } }); } public void execute(String query, Object[] args) { db.execSQL(query, args); } public void execute(String query) { db.execSQL(query); } public void delete(String query, Object[] args) { db.execSQL(query, args); } public Cursor rawQuery(String sql, Object[] args) { // HACK: db.rawQuery only supports String args, and there's no clean way AFAIK to construct // a query with arbitrary args (like with execSQL). However, we can misuse cursor factory // to get the reference of a SQLiteQuery before it's executed // https://github.com/aosp-mirror/platform_frameworks_base/blob/0799624dc7eb4b4641b4659af5b5ec4b9f80dd81/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java#L30 // https://github.com/aosp-mirror/platform_frameworks_base/blob/0799624dc7eb4b4641b4659af5b5ec4b9f80dd81/core/java/android/database/sqlite/SQLiteProgram.java#L32 String[] rawArgs = new String[args.length]; Arrays.fill(rawArgs, ""); return db.rawQueryWithFactory( (db1, driver, editTable, query) -> { for (int i = 0; i < args.length; i++) { Object arg = args[i]; if (arg instanceof String) { query.bindString(i + 1, (String) arg); } else if (arg instanceof Boolean) { query.bindLong(i + 1, (Boolean) arg ? 1 : 0); } else if (arg instanceof Double) { query.bindDouble(i + 1, (Double) arg); } else if (arg == null) { query.bindNull(i + 1); } else { throw new IllegalArgumentException("Bad query arg type: " + arg.getClass().getCanonicalName()); } } return new SQLiteCursor(driver, editTable, query); }, sql, rawArgs, null, null ); } public Cursor rawQuery(String sql) { return rawQuery(sql, new Object[] {}); } public int count(String query, Object[] args) { try (Cursor cursor = rawQuery(query, args)) { cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex("count"); if (cursor.getCount() > 0) { return cursor.getInt(columnIndex); } else { return 0; } } } public int count(String query) { return this.count(query, new Object[]{}); } public String getFromLocalStorage(String key) { try (Cursor cursor = rawQuery(Queries.select_local_storage, new Object[]{key})) { cursor.moveToFirst(); if (cursor.getCount() > 0) { return cursor.getString(0); } else { return null; } } } private ArrayList getAllTables() { ArrayList allTables = new ArrayList<>(); try (Cursor cursor = rawQuery(Queries.select_tables)) { cursor.moveToFirst(); int nameIndex = cursor.getColumnIndex("name"); if (nameIndex > -1) { do { allTables.add(cursor.getString(nameIndex)); } while (cursor.moveToNext()); } } return allTables; } public void unsafeDestroyEverything() { this.transaction(() -> { for (String tableName : getAllTables()) { execute(Queries.dropTable(tableName)); } execute("pragma writable_schema=1"); execute("delete from sqlite_master where type in ('table', 'index', 'trigger')"); execute("pragma user_version=0"); execute("pragma writable_schema=0"); }); } interface TransactionFunction { void applyTransactionFunction(); } public void transaction(TransactionFunction function) { db.beginTransaction(); try { function.applyTransactionFunction(); db.setTransactionSuccessful(); } finally { db.endTransaction(); } } public Boolean isOpen() { return db.isOpen(); } public void close() { db.close(); } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseBridge.java ================================================ package com.nozbe.watermelondb; import android.content.Context; import android.os.Trace; import androidx.annotation.NonNull; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.nozbe.watermelondb.utils.MigrationSet; import com.nozbe.watermelondb.utils.Schema; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Logger; import java.security.SecureRandom; public class WMDatabaseBridge extends ReactContextBaseJavaModule { ReactApplicationContext reactContext; public WMDatabaseBridge(ReactApplicationContext reactContext) { super(reactContext); this.reactContext = reactContext; } public static final String NAME = "WMDatabaseBridge"; @NonNull @Override public String getName() { return NAME; } private final Map connections = new HashMap<>(); @ReactMethod public void initialize(final Integer tag, final String databaseName, final int schemaVersion, final boolean unsafeNativeReuse, final Promise promise) { if (connections.containsKey(tag)) { throw new IllegalStateException("A driver with tag " + tag + " already set up"); } final WritableMap promiseMap = Arguments.createMap(); try { connections.put(tag, new Connection.Connected(new WMDatabaseDriver((Context) reactContext, databaseName, schemaVersion, unsafeNativeReuse))); promiseMap.putString("code", "ok"); promise.resolve(promiseMap); } catch (SchemaNeededError e) { connections.put(tag, new Connection.Waiting(new ArrayList<>())); promiseMap.putString("code", "schema_needed"); promise.resolve(promiseMap); } catch (MigrationNeededError e) { connections.put(tag, new Connection.Waiting(new ArrayList<>())); promiseMap.putString("code", "migrations_needed"); promiseMap.putInt("databaseVersion", e.databaseVersion); promise.resolve(promiseMap); } catch (Exception e) { promise.reject(e); } } @ReactMethod public void setUpWithSchema(final Integer tag, final String databaseName, final String schema, final int schemaVersion, final boolean unsafeNativeReuse, final Promise promise) { connectDriver(tag, new WMDatabaseDriver(reactContext, databaseName, new Schema(schemaVersion, schema), unsafeNativeReuse), promise); } @ReactMethod public void setUpWithMigrations(final Integer tag, final String databaseName, final String migrations, final int fromVersion, final int toVersion, final boolean unsafeNativeReuse, final Promise promise) { try { connectDriver(tag, new WMDatabaseDriver(reactContext, databaseName, new MigrationSet(fromVersion, toVersion, migrations), unsafeNativeReuse), promise); } catch (Exception e) { disconnectDriver(tag); promise.reject(e); } } @ReactMethod private void find(int tag, String table, String id, Promise promise) { withDriver(tag, promise, (driver) -> driver.find(table, id), "find " + id); } @ReactMethod public void query(int tag, String table, String query, ReadableArray args, Promise promise) { withDriver(tag, promise, (driver) -> driver.cachedQuery(table, query, args.toArrayList().toArray()), "query"); } @ReactMethod public void queryIds(int tag, String query, ReadableArray args, Promise promise) { withDriver(tag, promise, (driver) -> driver.queryIds(query, args.toArrayList().toArray()), "queryIds"); } @ReactMethod public void unsafeQueryRaw(int tag, String query, ReadableArray args, Promise promise) { withDriver(tag, promise, (driver) -> driver.unsafeQueryRaw(query, args.toArrayList().toArray()), "unsafeQueryRaw"); } @ReactMethod public void count(int tag, String query, ReadableArray args, Promise promise) { withDriver(tag, promise, (driver) -> driver.count(query, args.toArrayList().toArray()), "count"); } @ReactMethod public void batch(int tag, ReadableArray operations, Promise promise) { withDriver(tag, promise, (driver) -> { driver.batch(operations); return true; }, "batch"); } @ReactMethod public void unsafeResetDatabase(int tag, String schema, int schemaVersion, Promise promise) { withDriver(tag, promise, (driver) -> { driver.unsafeResetDatabase(new Schema(schemaVersion, schema)); return null; }, "unsafeResetDatabase"); } @ReactMethod public void getLocal(int tag, String key, Promise promise) { withDriver(tag, promise, (driver) -> driver.getLocal(key), "getLocal"); } @ReactMethod(isBlockingSynchronousMethod = true) public WritableArray unsafeGetLocalSynchronously(int tag, String key) { try { Connection connection = connections.get(tag); if (connection == null) { throw new Exception("No driver with tag " + tag + " available"); } if (connection instanceof Connection.Connected) { String value = ((Connection.Connected) connection).driver.getLocal(key); WritableArray result = Arguments.createArray(); result.pushString("result"); result.pushString(value); return result; } else if (connection instanceof Connection.Waiting) { throw new Exception("Waiting connection unexpected for unsafeGetLocalSynchronously"); } } catch (Exception e) { WritableArray result = Arguments.createArray(); result.pushString("error"); result.pushString(e.getMessage()); return result; } return null; } private List getQueue(int connectionTag) { List queue; if (connections.containsKey(connectionTag)) { Connection connection = connections.get(connectionTag); if (connection != null) { queue = connection.getQueue(); } else { queue = new ArrayList<>(); } } else { queue = new ArrayList<>(); } return queue; } interface ParamFunction { Object applyParamFunction(WMDatabaseDriver arg); } private void withDriver(final int tag, final Promise promise, final ParamFunction function, String functionName) { try { Trace.beginSection("WMDatabaseBridge." + functionName); Connection connection = connections.get(tag); if (connection == null) { promise.reject(new Exception("No driver with tag " + tag + " available")); } else if (connection instanceof Connection.Connected) { Object result = function.applyParamFunction(((Connection.Connected) connection).driver); promise.resolve(result == Void.TYPE ? true : result); } else if (connection instanceof Connection.Waiting) { // try again when driver is ready connection.getQueue().add(() -> withDriver(tag, promise, function, functionName)); connections.put(tag, new Connection.Waiting(connection.getQueue())); } } catch (Exception e) { promise.reject(functionName, e); } finally { Trace.endSection(); } } private void connectDriver(int connectionTag, WMDatabaseDriver driver, Promise promise) { List queue = getQueue(connectionTag); connections.put(connectionTag, new Connection.Connected(driver)); for (Runnable operation : queue) { operation.run(); } promise.resolve(true); } private void disconnectDriver(int connectionTag) { List queue = getQueue(connectionTag); connections.remove(connectionTag); for (Runnable operation : queue) { operation.run(); } } @ReactMethod public void provideSyncJson(int id, String json, Promise promise) { // Note: WatermelonJSI is optional on Android, but we don't want users to have to set up // yet another NativeModule, so we're using Reflection to access it from here try { Class clazz = Class.forName("com.nozbe.watermelondb.jsi.WatermelonJSI"); Method method = clazz.getDeclaredMethod("provideSyncJson", int.class, byte[].class); method.invoke(null, id, json.getBytes()); promise.resolve(true); } catch (Exception e) { promise.reject(e); } } @ReactMethod(isBlockingSynchronousMethod = true) public WritableArray getRandomBytes(int count) { if (count != 256) { throw new IllegalStateException("Expected getRandomBytes to be called with 256"); } byte[] randomBytes = new byte[256]; SecureRandom random = new SecureRandom(); random.nextBytes(randomBytes); WritableArray result = Arguments.createArray(); for (byte value : randomBytes) { result.pushInt(Byte.toUnsignedInt(value)); } return result; } @Override public void invalidate() { // NOTE: See Database::install() for explanation super.invalidate(); reactContext.runOnJSQueueThread(() -> { try { Class clazz = Class.forName("com.nozbe.watermelondb.jsi.WatermelonJSI"); Method method = clazz.getDeclaredMethod("onCatalystInstanceDestroy"); method.invoke(null); } catch (Exception e) { if (BuildConfig.DEBUG) { Logger logger = Logger.getLogger("DB_Bridge"); logger.info("Could not find JSI onCatalystInstanceDestroy"); } } }); } @Deprecated @Override public void onCatalystInstanceDestroy() { // NOTE: See Database::install() for explanation super.onCatalystInstanceDestroy(); reactContext.getCatalystInstance().getReactQueueConfiguration().getJSQueueThread().runOnQueue(() -> { try { Class clazz = Class.forName("com.nozbe.watermelondb.jsi.WatermelonJSI"); Method method = clazz.getDeclaredMethod("onCatalystInstanceDestroy"); method.invoke(null); } catch (Exception e) { if (BuildConfig.DEBUG) { Logger logger = Logger.getLogger("DB_Bridge"); logger.info("Could not find JSI onCatalystInstanceDestroy"); } } }); } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseDriver.java ================================================ package com.nozbe.watermelondb; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Trace; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.WritableArray; import com.nozbe.watermelondb.utils.MigrationSet; import com.nozbe.watermelondb.utils.Pair; import com.nozbe.watermelondb.utils.Schema; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Logger; public class WMDatabaseDriver { private final WMDatabase database; private final Logger log; private final Map> cachedRecords; public WMDatabaseDriver(Context context, String dbName) { this(context, dbName, false); } public WMDatabaseDriver(Context context, String dbName, int schemaVersion, boolean unsafeNativeReuse) { this(context, dbName, unsafeNativeReuse); SchemaCompatibility compatibility = isCompatible(schemaVersion); if (compatibility instanceof SchemaCompatibility.NeedsSetup) { throw new SchemaNeededError(); } else if (compatibility instanceof SchemaCompatibility.NeedsMigration) { throw new MigrationNeededError( ((SchemaCompatibility.NeedsMigration) compatibility).fromVersion ); } } public WMDatabaseDriver(Context context, String dbName, Schema schema, boolean unsafeNativeReuse) { this(context, dbName, unsafeNativeReuse); unsafeResetDatabase(schema); } public WMDatabaseDriver(Context context, String dbName, MigrationSet migrations, boolean unsafeNativeReuse) { this(context, dbName, unsafeNativeReuse); migrate(migrations); } public WMDatabaseDriver(Context context, String dbName, boolean unsafeNativeReuse) { this.database = unsafeNativeReuse ? WMDatabase.getInstance(dbName, context, SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) : WMDatabase.buildDatabase(dbName, context, SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING); if (BuildConfig.DEBUG) { this.log = Logger.getLogger("DB_Driver"); } else { this.log = null; } this.cachedRecords = new HashMap<>(); } public Object find(String table, String id) { if (isCached(table, id)) { return id; } Object[] args = {id}; try (Cursor cursor = database.rawQuery("select * from `" + table + "` where id == ? limit 1", args)) { if (cursor.getCount() <= 0) { return null; } markAsCached(table, id); cursor.moveToFirst(); return DatabaseUtils.cursorToMap(cursor); } } public WritableArray cachedQuery(String table, String query, Object[] args) { WritableArray resultArray = Arguments.createArray(); try (Cursor cursor = database.rawQuery(query, args)) { if (cursor.getCount() > 0 && DatabaseUtils.arrayContains(cursor.getColumnNames(), "id")) { int idColumnIndex = cursor.getColumnIndex("id"); while (cursor.moveToNext()) { String id = cursor.getString(idColumnIndex); if (isCached(table, id)) { resultArray.pushString(id); } else { markAsCached(table, id); resultArray.pushMap(DatabaseUtils.cursorToMap(cursor)); } } } } return resultArray; } public WritableArray queryIds(String query, Object[] args) { WritableArray resultArray = Arguments.createArray(); try (Cursor cursor = database.rawQuery(query, args)) { if (cursor.getCount() > 0 && DatabaseUtils.arrayContains(cursor.getColumnNames(), "id")) { while (cursor.moveToNext()) { int columnIndex = cursor.getColumnIndex("id"); resultArray.pushString(cursor.getString(columnIndex)); } } } return resultArray; } public WritableArray unsafeQueryRaw(String query, Object[] args) { WritableArray resultArray = Arguments.createArray(); try (Cursor cursor = database.rawQuery(query, args)) { if (cursor.getCount() > 0) { while (cursor.moveToNext()) { resultArray.pushMap(DatabaseUtils.cursorToMap(cursor)); } } } return resultArray; } public int count(String query, Object[] args) { return database.count(query, args); } public String getLocal(String key) { return database.getFromLocalStorage(key); } public void batch(ReadableArray operations) { List> newIds = new ArrayList<>(); List> removedIds = new ArrayList<>(); Trace.beginSection("Batch"); try { database.transaction(() -> { for (int i = 0; i < operations.size(); i++) { ReadableArray operation = operations.getArray(i); int cacheBehavior = operation.getInt(0); String table = cacheBehavior != 0 ? operation.getString(1) : ""; String sql = operation.getString(2); ReadableArray argBatches = operation.getArray(3); for (int j = 0; j < argBatches.size(); j++) { Object[] args = argBatches.getArray(j).toArrayList().toArray(); database.execute(sql, args); if (cacheBehavior != 0) { String id = (String) args[0]; if (cacheBehavior == 1) { newIds.add(Pair.create(table, id)); } else if (cacheBehavior == -1) { removedIds.add(Pair.create(table, id)); } } } } }); } finally { Trace.endSection(); } Trace.beginSection("updateCaches"); for (Pair it : newIds) { markAsCached(it.first, it.second); } for (Pair it : removedIds) { removeFromCache(it.first, it.second); } Trace.endSection(); } private void markAsCached(String table, String id) { // log.info("Mark as cached " + id); List cache = cachedRecords.get(table); if (cache == null) { cache = new ArrayList<>(); } cache.add(id); cachedRecords.put(table, cache); } private boolean isCached(String table, String id) { List cache = cachedRecords.get(table); return cache != null && cache.contains(id); } private void removeFromCache(String table, String id) { List cache = cachedRecords.get(table); if (cache != null) { cache.remove(id); cachedRecords.put(table, cache); } } public void close() { database.close(); } private void migrate(MigrationSet migrations) { int databaseVersion = database.getUserVersion(); if (databaseVersion != migrations.from) { throw new IllegalArgumentException("Incompatible migration set applied. " + "DB: " + databaseVersion + ", migration: " + migrations.from); } database.transaction(() -> { database.unsafeExecuteStatements(migrations.sql); database.setUserVersion(migrations.to); }); } public void unsafeResetDatabase(Schema schema) { if (log != null) { log.info("Unsafe reset database"); } database.unsafeDestroyEverything(); cachedRecords.clear(); database.transaction(() -> { database.unsafeExecuteStatements(schema.sql); database.setUserVersion(schema.version); }); } private static class SchemaCompatibility { static class Compatible extends SchemaCompatibility { } static class NeedsSetup extends SchemaCompatibility { } static class NeedsMigration extends SchemaCompatibility { final int fromVersion; NeedsMigration(int fromVersion) { this.fromVersion = fromVersion; } } } private SchemaCompatibility isCompatible(int schemaVersion) { int databaseVersion = database.getUserVersion(); if (databaseVersion == schemaVersion) { return new SchemaCompatibility.Compatible(); } else if (databaseVersion == 0) { return new SchemaCompatibility.NeedsSetup(); } else if (databaseVersion < schemaVersion) { return new SchemaCompatibility.NeedsMigration(databaseVersion); } else { log.info("com.nozbe.watermelondb.Database has newer version (" + databaseVersion + ") than what the " + "app supports (" + schemaVersion + "). Will reset database."); return new SchemaCompatibility.NeedsSetup(); } } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/WatermelonDBPackage.java ================================================ package com.nozbe.watermelondb; import androidx.annotation.NonNull; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class WatermelonDBPackage implements ReactPackage { @NonNull @Override public List createNativeModules(@NonNull ReactApplicationContext reactAppContext) { List modules = new ArrayList<>(); modules.add(new WMDatabaseBridge(reactAppContext)); return modules; } @NonNull @Override public List createViewManagers(@NonNull ReactApplicationContext reactAppContext) { return Collections.emptyList(); } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/utils/MigrationSet.java ================================================ package com.nozbe.watermelondb.utils; public class MigrationSet { public int from; public int to; public String sql; public MigrationSet(int from, int to, String sql) { this.from = from; this.to = to; this.sql = sql; } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/utils/Pair.java ================================================ package com.nozbe.watermelondb.utils; public class Pair { public K first; public V second; private Pair(K key, V value) { first = key; second = value; } public static Pair create(K key, V value) { return new Pair<>(key, value); } } ================================================ FILE: native/android/src/main/java/com/nozbe/watermelondb/utils/Schema.java ================================================ package com.nozbe.watermelondb.utils; public class Schema { public int version; public String sql; public Schema(int version, String sql) { this.version = version; this.sql = sql; } } ================================================ FILE: native/android-jsi/.gitignore ================================================ *.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures .externalNativeBuild .cxx testPath* ================================================ FILE: native/android-jsi/build.gradle ================================================ apply plugin: 'com.android.library' def DEFAULT_COMPILE_SDK_VERSION = 28 def DEFAULT_BUILD_TOOLS_VERSION = "28.0.3" def DEFAULT_MIN_SDK_VERSION = 16 def DEFAULT_TARGET_SDK_VERSION = 28 def DEFAULT_NDK_VERSION = "20.1.5948944" android { compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION ndkVersion rootProject.hasProperty('ndkVersion') ? rootProject.ndkVersion : DEFAULT_NDK_VERSION namespace "com.nozbe.watermelondb.jsi" defaultConfig { minSdkVersion rootProject.hasProperty('minSdkVersion') ? rootProject.minSdkVersion : DEFAULT_MIN_SDK_VERSION targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION versionCode 1 versionName "1.0" externalNativeBuild { cmake { // Not sure if this is necessary. I added this in attempt to fix catching // C++ errors across .so bounds, but it still doesn't work, so can probably get rid // of this // NOTE: It appears that doing this causes some ABI compatibility issues (or something): // libc++_shared.so // libc++_shared.so (__gxx_personality_v0+416) // libreactnativejni.so // libreactnativejni.so (_Unwind_RaiseException+263) // libfbjni.so (__cxa_throw+108) // libc++_shared.so (std::__ndk1::locale::use_facet(std::__ndk1::locale::id&) const+212) // libwatermelondb-jsi.so (std::__ndk1::basic_ostream>::operator<<(long long)+124) // libwatermelondb-jsi.so (std::__ndk1::basic_string::char_traits, watermelondb::to_json_string::allocator> watermelondb::to_json_string(simdjson::fallback::ondemand::value&&&)+3486) // arguments "-DANDROID_STL=c++_shared" } } } externalNativeBuild { cmake { // version '3.10.2' path "src/main/cpp/CMakeLists.txt" } } packagingOptions { // TODO: This only seems necessary if c++_shared is enabled in cmake // pickFirst '**/libc++_shared.so' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.facebook.react:react-native:+' } ================================================ FILE: native/android-jsi/src/main/AndroidManifest.xml ================================================ ================================================ FILE: native/android-jsi/src/main/cpp/CMakeLists.txt ================================================ PROJECT(watermelondb-jsi C CXX) cmake_minimum_required(VERSION 3.4.1) # inspired by https://github.com/ericlewis/react-native-hostobject-demo/blob/6f16c01db80f928ccd294c8cc5d4668b0f8c15ec/android/app/CMakeLists.txt # execute_process (COMMAND ln "-s" "src" "../../../../../node_modules/react-native/third-party/double-conversion-1.1.6/double-conversion") # NOTE: This may need to be bumped sometimes to force CMake caches to clear set(WMELON_JSI_BUMP 4) # ------------------------------------------------- # Figure out where node_modules is # (surely there's a better way to do this) # This has to work with standard RN project, Nozbe's unusual folder structure and internal Watermelon tester get_filename_component(_nativeTesterPath "../../../../../node_modules/@nozbe/sqlite/" REALPATH) get_filename_component(_nozbePath "../../../../../../../../../native/node_modules/react-native/ReactCommon/jsi/jsi/" REALPATH) if(EXISTS "${_nativeTesterPath}") # these paths work for WatermelonDB native tester set(NODE_MODULES_PATH_WM ../../../../../node_modules/) set(NODE_MODULES_PATH_RN ../../../../../node_modules/) elseif(EXISTS "${_nozbePath}") # these paths work for Nozbe set(NODE_MODULES_PATH_WM ../../../../../../../) set(NODE_MODULES_PATH_RN ../../../../../../../../../native/node_modules/) else() # these paths should work for a standard RN project set(NODE_MODULES_PATH_WM ../../../../../../../) set(NODE_MODULES_PATH_RN ../../../../../../../) endif() # ------------------------------------------------- # Header search paths # FIXME: should work… set(SQLITE_VERSION sqlite-amalgamation-3460000) include_directories( ../../../../shared ${NODE_MODULES_PATH_WM}/@nozbe/sqlite/${SQLITE_VERSION}/ ${NODE_MODULES_PATH_WM}/@nozbe/simdjson/src/ ${NODE_MODULES_PATH_RN}/react-native/React ${NODE_MODULES_PATH_RN}/react-native/React/Base ${NODE_MODULES_PATH_RN}/react-native/ReactCommon ${NODE_MODULES_PATH_RN}/react-native/ReactCommon/jsi # these seem necessary only if we import # ../../../../../node_modules/react-native/third-party/folly-2018.10.22.00 # ../../../../../node_modules/react-native/third-party/double-conversion-1.1.6 # ../../../../../node_modules/react-native/third-party/boost_1_63_0 # ../../../../../node_modules/react-native/third-party/glog-0.3.5/src ) # ------------------------------------------------- # Build configuration #add_definitions( # -DFOLLY_USE_LIBCPP=1 # -DFOLLY_NO_CONFIG=1 # -DFOLLY_HAVE_MEMRCHR=1 #) # simdjson is slow without optimization set(CMAKE_CXX_FLAGS_DEBUG "-Os") # comment out for JSI debugging set(CMAKE_CXX_FLAGS_RELEASE "-Os") # TODO: Configure sqlite with compile-time options # https://www.sqlite.org/compile.html # ------------------------------------------------- # Source files file(GLOB ANDROID_JSI_SRC_FILES ./*.cpp) file(GLOB SHARED_SRC_FILES ../../../../shared/*.cpp) add_library(watermelondb-jsi SHARED # vendor files ${NODE_MODULES_PATH_WM}/@nozbe/sqlite/${SQLITE_VERSION}/sqlite3.c ${NODE_MODULES_PATH_WM}/@nozbe/simdjson/src/simdjson.cpp # our sources ${ANDROID_JSI_SRC_FILES} ${SHARED_SRC_FILES} # this seems necessary to use almost any JSI API - otherwise we get linker errors # seems wrong to compile a file that's already getting compiled as part of the app, but ¯\_(ツ)_/¯ ${NODE_MODULES_PATH_RN}/react-native/ReactCommon/jsi/jsi/jsi.cpp) # Enable Android 16kb native library alignment target_link_options(watermelondb-jsi PRIVATE "-Wl,-z,max-page-size=16384") target_link_libraries(watermelondb-jsi # link with these libraries: android log) ================================================ FILE: native/android-jsi/src/main/cpp/DatabasePlatformAndroid.cpp ================================================ #include #include #include #include #include #include "DatabasePlatform.h" #include "DatabasePlatformAndroid.h" #define LOG_TAG "watermelondb.jsi" #define SQLITE_LOG_TAG "watermelondb.sqlite" namespace watermelondb { namespace platform { void consoleLog(std::string message) { __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "%s\n", message.c_str()); } void consoleError(std::string message) { __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "%s\n", message.c_str()); } jint verbose_level; bool isVerboseLogEnabled() { // TODO: Available since API level 30 // return __android_log_is_loggable(verbose_level, SQLITE_LOG_TAG, ANDROID_LOG_INFO); return false; } // Based on https://github.com/aosp-mirror/platform_frameworks_base/blob/6bebb8418ceecf44d2af40033870f3aabacfe36e/core/jni/android_database_SQLiteGlobal.cpp#L38 static void sqliteLogCallback(void *data, int err, const char *message) { bool isVerbose = !!data; int errType = err & 255; if (errType == 0 || errType == SQLITE_CONSTRAINT || errType == SQLITE_SCHEMA || errType == SQLITE_NOTICE || err == SQLITE_WARNING_AUTOINDEX) { if (isVerbose) { __android_log_print(ANDROID_LOG_VERBOSE, SQLITE_LOG_TAG, "(%d) %s\n", err, message); } } else if (errType == SQLITE_WARNING) { __android_log_print(ANDROID_LOG_WARN, SQLITE_LOG_TAG, "(%d) %s\n", err, message); } else { __android_log_print(ANDROID_LOG_ERROR, SQLITE_LOG_TAG, "(%d) %s\n", err, message); } } std::once_flag sqliteInitialization; void initializeSqlite() { std::call_once(sqliteInitialization, []() { // Redirect sqlite messages to Android log if (sqlite3_config(SQLITE_CONFIG_LOG, &sqliteLogCallback, isVerboseLogEnabled()) != SQLITE_OK) { consoleError("Failed to configure SQLite to redirect messages to Android log"); } // Enable file URI syntax https://www.sqlite.org/uri.html (e.g. ?mode=memory&cache=shared) if (sqlite3_config(SQLITE_CONFIG_URI, 1) != SQLITE_OK) { consoleError("Failed to configure SQLite to support file URI syntax - shared cache will not work"); } // sqlite should do its best to stay <8MB of heap allocations // 8MB is what android uses by default: // https://github.com/aosp-mirror/platform_frameworks_base/blob/6bebb8418ceecf44d2af40033870f3aabacfe36e/core/jni/android_database_SQLiteGlobal.cpp#L68 sqlite3_soft_heap_limit(8 * 1024 * 1024); if (sqlite3_initialize() != SQLITE_OK) { consoleError("Failed to initialize sqlite - this probably means sqlite was already initialized"); } }); } static JavaVM *jvm; void configureJNI(JNIEnv *env) { assert(env); if (env->GetJavaVM(&jvm) != JNI_OK) { consoleError("Could not initialize WatermelonDB JSI - cannot get JavaVM"); std::abort(); } assert(jvm); // // find magic constant needed for verbose logs // jclass logClass = env->FindClass("android/util/Log"); // if (logClass == NULL) { // throw std::runtime_error("Unable to find android/util/Log"); // } // jfieldID logVerboseFieldId = env->GetStaticFieldID(logClass, "VERBOSE", "I"); // if (logVerboseFieldId == NULL) { // throw std::runtime_error("Unable to find android/util/Log's VERBOSE"); // } // verbose_level = env->GetStaticIntField(logClass, logVerboseFieldId); } std::string resolveDatabasePath(std::string path) { JNIEnv *env; assert(jvm); if (jvm->AttachCurrentThread(&env, NULL) != JNI_OK) { throw std::runtime_error("Unable to resolve db path - JVM thread attach failed"); } assert(env); jclass clazz = env->FindClass("com/nozbe/watermelondb/jsi/JSIInstaller"); if (clazz == NULL) { throw std::runtime_error("Unable to resolve db path - missing JSIInstaller class"); } jmethodID mid = env->GetStaticMethodID(clazz, "_resolveDatabasePath", "(Ljava/lang/String;)Ljava/lang/String;"); if (mid == NULL) { throw std::runtime_error("Unable to resolve db path - missing Java _resolveDatabasePath method"); } jobject jniPath = env->NewStringUTF(path.c_str()); if (jniPath == NULL) { throw std::runtime_error("Unable to resolve db path - could not construct a Java string"); } jstring jniResolvedPath = (jstring)env->CallStaticObjectMethod(clazz, mid, jniPath); if (env->ExceptionCheck()) { throw std::runtime_error("Unable to resolve db path - exception occured while resolving path"); } const char *cResolvedPath = env->GetStringUTFChars(jniResolvedPath, 0); if (cResolvedPath == NULL) { throw std::runtime_error("Unable to resolve db path - failed to get path string"); } std::string resolvedPath(cResolvedPath); env->ReleaseStringUTFChars(jniResolvedPath, cResolvedPath); return resolvedPath; } void deleteDatabaseFile(std::string path, bool warnIfDoesNotExist) { // TODO: Unimplemented } void onMemoryAlert(std::function callback) { // TODO: Unimplemented // NOTE: https://developer.android.com/reference/android/app/Application#onTrimMemory(int) } struct ProvidedSyncJson { jbyteArray array; jbyte *bytes; jsize length; }; std::unordered_map providedSyncJsons; std::mutex providedSyncJsonsMutex; void provideJson(int id, jbyteArray array) { const std::lock_guard lock(providedSyncJsonsMutex); JNIEnv *env; assert(jvm); if (jvm->AttachCurrentThread(&env, NULL) != JNI_OK) { return; } assert(env); if (providedSyncJsons.find(id) != providedSyncJsons.end()) { jclass exceptionClass = env->FindClass("java/lang/Exception"); env->ThrowNew(exceptionClass, "sync json is already provided"); return; } jbyte* bytes = env->GetByteArrayElements(array, NULL); jsize length = env->GetArrayLength(array); jbyteArray arrayGlobalRef = static_cast(env->NewGlobalRef(array)); ProvidedSyncJson json = { arrayGlobalRef, bytes, length }; providedSyncJsons[id] = json; } std::string_view getSyncJson(int id) { const std::lock_guard lock(providedSyncJsonsMutex); auto jsonSearch = providedSyncJsons.find(id); if (jsonSearch == providedSyncJsons.end()) { throw std::runtime_error("Sync json " + std::to_string(id) + " does not exist"); } auto json = jsonSearch->second; std::string_view view((char *) json.bytes, json.length); return view; } void deleteSyncJson(int id) { const std::lock_guard lock(providedSyncJsonsMutex); JNIEnv *env; assert(jvm); if (jvm->AttachCurrentThread(&env, NULL) != JNI_OK) { throw std::runtime_error("JVM thread attach failed"); } assert(env); auto jsonSearch = providedSyncJsons.find(id); if (jsonSearch != providedSyncJsons.end()) { auto json = jsonSearch->second; env->ReleaseByteArrayElements(json.array, json.bytes, JNI_ABORT); providedSyncJsons.erase(id); env->DeleteGlobalRef(json.array); } } std::vector> destroyListeners; void destroy() { for (auto listener : destroyListeners) { listener(); } destroyListeners.clear(); } void onDestroy(std::function callback) { destroyListeners.push_back(callback); } } // namespace platform } // namespace watermelondb ================================================ FILE: native/android-jsi/src/main/cpp/DatabasePlatformAndroid.h ================================================ #pragma once #include namespace watermelondb { namespace platform { void configureJNI(JNIEnv *env); void provideJson(int id, jbyteArray array); void destroy(); } // namespace platform } // namespace watermelondb ================================================ FILE: native/android-jsi/src/main/cpp/JSIInstaller.cpp ================================================ #include #include #include "Database.h" #include "DatabasePlatformAndroid.h" using namespace facebook; extern "C" JNIEXPORT void JNICALL Java_com_nozbe_watermelondb_jsi_JSIInstaller_installBinding(JNIEnv *env, jobject thiz, jlong runtimePtr) { jsi::Runtime *runtime = (jsi::Runtime *)runtimePtr; assert(runtime != nullptr); watermelondb::platform::configureJNI(env); watermelondb::Database::install(runtime); } extern "C" JNIEXPORT void JNICALL Java_com_nozbe_watermelondb_jsi_JSIInstaller_provideSyncJson(JNIEnv *env, jclass clazz, jint id, jbyteArray array) { watermelondb::platform::provideJson(id, array); } extern "C" JNIEXPORT void JNICALL Java_com_nozbe_watermelondb_jsi_JSIInstaller_destroy(JNIEnv *env, jclass clazz) { watermelondb::platform::destroy(); } ================================================ FILE: native/android-jsi/src/main/java/com/nozbe/watermelondb/WatermelonDBJSIModule.java ================================================ package com.nozbe.watermelondb.jsi; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.facebook.react.bridge.JavaScriptContextHolder; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.module.annotations.ReactModule; @ReactModule(name = WatermelonDBJSIModule.NAME) public class WatermelonDBJSIModule extends ReactContextBaseJavaModule { ReactApplicationContext reactContext; public static final String NAME = "WMDatabaseJSIBridge"; public WatermelonDBJSIModule(ReactApplicationContext reactContext) { super(reactContext); this.reactContext = reactContext; } @NonNull @Override public String getName() { return NAME; } @ReactMethod(isBlockingSynchronousMethod = true) public boolean install() { try { JavaScriptContextHolder jsContext = getReactApplicationContext().getJavaScriptContextHolder(); JSIInstaller.install(getReactApplicationContext(), jsContext.get()); Log.i(NAME, "Successfully installed Watermelon DB JSI Bindings!"); return true; } catch (Exception exception) { Log.e(NAME, "Failed to install Watermelon DB JSI Bindings!", exception); return false; } } } ================================================ FILE: native/android-jsi/src/main/java/com/nozbe/watermelondb/jsi/JSIInstaller.java ================================================ package com.nozbe.watermelondb.jsi; import android.content.Context; class JSIInstaller { static void install(Context context, long javaScriptContextHolder) { JSIInstaller.context = context; new JSIInstaller().installBinding(javaScriptContextHolder); // call methods we're going to need from JNI - if we don't, Proguard/R8 will strip it from // release binaries. We could use @Keep or configure Proguard to keep it but that would be // error prone for lib users _resolveDatabasePath(""); } // Helper method called from C++ static String _resolveDatabasePath(String dbName) { // On some systems there is some kind of lock on `/databases` folder ¯\_(ツ)_/¯ return context.getDatabasePath(dbName + ".db").getPath().replace("/databases", ""); } private native void installBinding(long javaScriptContextHolder); static native void provideSyncJson(int id, byte[] json); static native void destroy(); private static Context context; static { System.loadLibrary("watermelondb-jsi"); } } ================================================ FILE: native/android-jsi/src/main/java/com/nozbe/watermelondb/jsi/WatermelonDBJSIPackage.java ================================================ package com.nozbe.watermelondb.jsi; import androidx.annotation.NonNull; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class WatermelonDBJSIPackage implements ReactPackage { @NonNull @Override public List createNativeModules(@NonNull ReactApplicationContext reactAppContext) { List modules = new ArrayList<>(); modules.add(new WatermelonDBJSIModule(reactAppContext)); return modules; } @NonNull @Override public List createViewManagers(@NonNull ReactApplicationContext reactAppContext) { return Collections.emptyList(); } } ================================================ FILE: native/android-jsi/src/main/java/com/nozbe/watermelondb/jsi/WatermelonJSI.java ================================================ package com.nozbe.watermelondb.jsi; import android.app.Application; // Public interface to JSI-based Watermelon public class WatermelonJSI { public static void onTrimMemory(int level) { // TODO: Unimplemented } public static void provideSyncJson(int id, byte[] json) { JSIInstaller.provideSyncJson(id, json); } public static void onCatalystInstanceDestroy() { JSIInstaller.destroy(); } } ================================================ FILE: native/androidTest/.gitignore ================================================ *.iml /.gradle /local.properties /.idea .DS_Store /build /captures .externalNativeBuild testPath* ================================================ FILE: native/androidTest/app/BUCK ================================================ # To learn about Buck see [Docs](https://buckbuild.com/). # To run your application with Buck: # - install Buck # - `npm start` - to start the packager # - `cd android` # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck # - `buck install -r android/app` - compile, install and run application # lib_deps = [] for jarfile in glob(['libs/*.jar']): name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] lib_deps.append(':' + name) prebuilt_jar( name = name, binary_jar = jarfile, ) for aarfile in glob(['libs/*.aar']): name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] lib_deps.append(':' + name) android_prebuilt_aar( name = name, aar = aarfile, ) android_library( name = "all-libs", exported_deps = lib_deps, ) android_library( name = "app-code", srcs = glob([ "src/main/java/**/*.java", ]), deps = [ ":all-libs", ":build_config", ":res", ], ) android_build_config( name = "build_config", package = "com.nozbe.watermelondb", ) android_resource( name = "res", package = "com.nozbe.watermelondb", res = "src/main/res", ) android_binary( name = "app", keystore = "//android/keystores:debug", manifest = "src/main/AndroidManifest.xml", package_type = "debug", deps = [ ":app-code", ], ) ================================================ FILE: native/androidTest/app/build.gradle ================================================ apply plugin: "com.android.application" apply plugin: "com.facebook.react" apply plugin: 'kotlin-android' import com.android.build.OutputFile /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. */ react { /* Folders */ // The root of your project, i.e. where "package.json" lives. Default is '..' root = file("$rootDir/../../") // The folder where the react-native NPM package is. Default is ../node_modules/react-native // reactNativeDir = file("../node_modules/react-native") // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen // codegenDir = file("../node_modules/react-native-codegen") // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js // cliFile = file("../node_modules/react-native/cli.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to // skip the bundling of the JS bundle and the assets. By default is just 'debug'. // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. // FIXME: New React gradle plugin doesn't seem to have "bundleInDebug" option… // debuggableVariants = [] /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. // nodeExecutableAndArgs = ["node"] // // The command to run when bundling. By default is 'bundle' // bundleCommand = "ram-bundle" // // The path to the CLI configuration file. Default is empty. // bundleConfig = file(../rn-cli.config.js) // // The name of the generated asset file containing your JS bundle // bundleAssetName = "MyApplication.android.bundle" // // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' entryFile = file("$rootDir/../../src/index.integrationTests.native.js") // // A list of extra flags to pass to the 'bundle' commands. // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle // extraPackagerArgs = [] /* Hermes Commands */ // The hermes compiler command to run. By default it is 'hermesc' // hermesCommand = "$rootDir/../../node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc" // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] } /** * Set this to true to create four separate APKs instead of one, * one for each native architecture. This is useful if you don't * use App Bundles (https://developer.android.com/guide/app-bundle/) * and want to have separate APKs to upload to the Play Store. */ def enableSeparateBuildPerCPUArchitecture = false /** * Run Proguard to shrink the Java bytecode in release builds. */ def enableProguardInReleaseBuilds = false android { testBuildType "debug" compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion namespace "com.nozbe.watermelonTest" defaultConfig { applicationId "com.nozbe.watermelondb" minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 1 versionName "1.0" ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86" } testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { release { if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD } } } splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK include "armeabi-v7a", "arm64-v8a", "x86" } } buildTypes { release { debuggable true minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release applicationIdSuffix ".release" versionNameSuffix '-RELEASE' } debug { debuggable true } } // applicationVariants are e.g. debug, release applicationVariants.all { variant -> variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode } } } packagingOptions { // jniLibs { // pickFirsts += ['**/libc++_shared.so', 'META-INF/**'] // } pickFirst '**/libhermes.so' pickFirst '**/libc++_shared.so' } } configurations { ktlint } dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") ktlint("com.pinterest:ktlint:0.48.2") { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, getObjects().named(Bundling, Bundling.EXTERNAL)) } } // implementation fileTree(dir: "libs", include: ["*.jar"]) implementation project(':watermelondb') implementation project(':watermelondb-jsi') implementation 'androidx.appcompat:appcompat:1.6.0' implementation("com.facebook.react:hermes-android") implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" androidTestImplementation 'androidx.annotation:annotation:1.3.0' androidTestImplementation 'androidx.test:runner:1.5.2' androidTestImplementation 'androidx.test:rules:1.5.0' androidTestImplementation 'androidx.test:core-ktx:1.5.0' } // apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) task ktlint(type: JavaExec, group: "verification") { description = "Check Kotlin code style." classpath = configurations.ktlint mainClass.set("com.pinterest.ktlint.Main") args "src/**/*.kt" // see https://pinterest.github.io/ktlint/install/cli/#command-line-usage for more information } check.dependsOn ktlint task ktlintFormat(type: JavaExec, group: "formatting") { description = "Fix Kotlin code style deviations." classpath = configurations.ktlint mainClass.set("com.pinterest.ktlint.Main") args "-F", "src/**/*.kt" // see https://pinterest.github.io/ktlint/install/cli/#command-line-usage for more information } repositories { mavenCentral() } ================================================ FILE: native/androidTest/app/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Disabling obfuscation is useful if you collect stack traces from production crashes # (unless you are using a system that supports de-obfuscate the stack traces). -dontobfuscate # React Native # Keep our interfaces so they can be used by other ProGuard rules. # See http://sourceforge.net/p/proguard/bugs/466/ -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters -keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip # Do not strip any method/class that is annotated with @DoNotStrip -keep @com.facebook.proguard.annotations.DoNotStrip class * -keep @com.facebook.common.internal.DoNotStrip class * -keepclassmembers class * { @com.facebook.proguard.annotations.DoNotStrip *; @com.facebook.common.internal.DoNotStrip *; } -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { void set*(***); *** get*(); } -keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } -keep class * extends com.facebook.react.bridge.NativeModule { *; } -keepclassmembers,includedescriptorclasses class * { native ; } -keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } -keep class com.facebook.hermes.unicode.** { *; } -keep class com.facebook.jni.** { *; } -dontwarn com.facebook.react.** # TextLayoutBuilder uses a non-public Android constructor within StaticLayout. # See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. -dontwarn android.text.StaticLayout # okhttp -keepattributes Signature -keepattributes *Annotation* -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -dontwarn okhttp3.** # okio -keep class sun.misc.Unsafe { *; } -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** # watermelondb -keep class com.nozbe.watermelondb.** { *; } ================================================ FILE: native/androidTest/app/src/androidTest/java/com/nozbe/watermelonTest/BridgeTest.kt ================================================ package com.nozbe.watermelonTest import android.util.Log import androidx.test.core.app.launchActivity import org.junit.Assert import org.junit.Test class BridgeTest { @Test fun testBridge() { launchActivity() synchronized(BridgeTestReporter.testFinishedNotification) { BridgeTestReporter.testFinishedNotification.wait(5 * 60 * 1000) } try { when (val result = BridgeTestReporter.result) { is BridgeTestReporter.Result.Success -> { result.result.filter { it.isNotEmpty() }.forEach { Log.d("BridgeTest", it) } } is BridgeTestReporter.Result.Failure -> { val failureString = result.errors.asSequence().filter { it.isNotEmpty() }.joinToString(separator = "\n") Assert.fail(failureString) } } } catch (e: UninitializedPropertyAccessException) { Assert.fail("Bridge tests timed out and a report could not have been obtained. Either JS code could not be run at all or one of the asynchronous tests never returned") } } } ================================================ FILE: native/androidTest/app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: native/androidTest/app/src/main/java/com/nozbe/watermelonTest/BridgeTestReporter.kt ================================================ package com.nozbe.watermelonTest import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.ReadableMap import java.util.logging.Logger class BridgeTestReporter(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { sealed class Result { class Success(val result: List) : Result() class Failure(val errors: List) : Result() } override fun getName() = "BridgeTestReporter" companion object { lateinit var result: Result val testFinishedNotification = Object() } @Suppress("UNCHECKED_CAST") @ReactMethod fun testsFinished(report: ReadableMap) { Logger.getLogger(name).info(report.toString()) val tempResult = report.toHashMap()["results"] as ArrayList> result = if (report.getInt("errorCount") > 0) { val messages = tempResult.map { if (!(it["passed"] as Boolean)) { it["message"] as String? ?: "" } else { "" } } Result.Failure(messages) } else { val messages = tempResult.map { if (it["passed"] as Boolean) { it["message"] as String? ?: "" } else { "" } } Result.Success(messages) } synchronized(testFinishedNotification) { testFinishedNotification.notify() } } } ================================================ FILE: native/androidTest/app/src/main/java/com/nozbe/watermelonTest/MainActivity.kt ================================================ package com.nozbe.watermelonTest import com.facebook.react.ReactActivity import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled import com.facebook.react.defaults.DefaultReactActivityDelegate import com.nozbe.watermelondb.jsi.WatermelonJSI class MainActivity : ReactActivity() { override fun getMainComponentName(): String = "watermelonTest" override fun onTrimMemory(level: Int) { super.onTrimMemory(level) WatermelonJSI.onTrimMemory(level) } override fun createReactActivityDelegate(): ReactActivityDelegate = DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) } ================================================ FILE: native/androidTest/app/src/main/java/com/nozbe/watermelonTest/MainApplication.kt ================================================ package com.nozbe.watermelonTest import android.app.Application import com.facebook.react.ReactApplication import com.facebook.react.ReactHost import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost import com.facebook.react.shell.MainReactPackage import com.facebook.soloader.SoLoader import com.nozbe.watermelondb.WatermelonDBPackage import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage class MainApplication : Application(), ReactApplication { override val reactNativeHost = object : DefaultReactNativeHost(this) { override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG override fun getPackages(): List = listOf(MainReactPackage(), NativeModulesPackage(), WatermelonDBPackage(), WatermelonDBJSIPackage()) override fun getJSMainModuleName(): String = "src/index.integrationTests.native" } override fun onCreate() { super.onCreate() SoLoader.init(this, false) } override val reactHost: ReactHost get() = getDefaultReactHost(applicationContext, reactNativeHost) } ================================================ FILE: native/androidTest/app/src/main/java/com/nozbe/watermelonTest/NativeModulesPackage.kt ================================================ package com.nozbe.watermelonTest import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager class NativeModulesPackage : ReactPackage { override fun createViewManagers(reactContext: ReactApplicationContext): List> = emptyList() override fun createNativeModules(reactContext: ReactApplicationContext): List = listOf(BridgeTestReporter(reactContext)) } ================================================ FILE: native/androidTest/app/src/main/res/values/strings.xml ================================================ Watermelon Tests ================================================ FILE: native/androidTest/build.gradle ================================================ // import org.apache.tools.ant.taskdefs.condition.Os // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { project.ext { buildToolsVersion = "34.0.0" minSdkVersion = 23 compileSdkVersion = 34 targetSdkVersion = 34 ndkVersion = "26.1.10909125" kotlinVersion = '1.9.22' } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") // classpath("de.undercouch:gradle-download-task:5.0.1") classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } configurations.all { resolutionStrategy { force "com.facebook.soloader:soloader:0.8.2" } } apply plugin: "com.facebook.react.rootproject" // allprojects { // repositories { // exclusiveContent { // // We get React Native's Android binaries exclusively through npm, // // from a local Maven repo inside node_modules/react-native/. // // (The use of exclusiveContent prevents looking elsewhere like Maven Central // // and potentially getting a wrong version.) // filter { // includeGroup "com.facebook.react" // } // forRepository { // maven { // url "$rootDir/../../node_modules/react-native/android" // } // } // } // mavenLocal() // maven { // // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm // url "$rootDir/../../node_modules/react-native/android" // } // maven { // // Local Maven repo containing AARs with JSC library built for Android // url "$rootDir/../../node_modules/jsc-android/dist" // } // mavenCentral { // // We don't want to fetch react-native from Maven Central as there are // // older versions over there. // content { // excludeGroup "com.facebook.react" // } // } // google() // maven { url 'https://www.jitpack.io' } // } // } ================================================ FILE: native/androidTest/gradle/wrapper/gradle-wrapper.properties ================================================ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists ================================================ FILE: native/androidTest/gradle.properties ================================================ # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true MYAPP_RELEASE_STORE_FILE=DemoKeystore.keystore MYAPP_RELEASE_KEY_ALIAS=DemoKeystoreAlias MYAPP_RELEASE_STORE_PASSWORD=DemoKeystore MYAPP_RELEASE_KEY_PASSWORD=DemoKeystore android.useAndroidX=true android.enableJetifier=true #android.useDeprecatedNdk=true # Use this property to specify which architecture you want to build. # You can also override it from the CLI using # ./gradlew -PreactNativeArchitectures=x86_64 reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # Use this property to enable support to the new architecture. # This will allow you to use TurboModules and the Fabric render in # your application. You should enable this flag either if you want # to write custom TurboModules/Fabric components OR use libraries that # are providing them. newArchEnabled=false # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. hermesEnabled=true ================================================ FILE: native/androidTest/gradlew ================================================ #!/bin/sh # # Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ############################################################################## # # Gradle start up script for POSIX generated by Gradle. # # Important for running: # # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is # noncompliant, but you have some other compliant shell such as ksh or # bash, then to run this script, type that shell name before the whole # command line, like: # # ksh Gradle # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», # «${var#prefix}», «${var%suffix}», and «$( cmd )»; # * compound commands having a testable exit status, especially «case»; # * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # # (2) This script targets any POSIX shell, so it avoids extensions provided # by Bash, Ksh, etc; in particular arrays are avoided. # # The "traditional" practice of packing multiple parameters into a # space-separated string is a well documented source of bugs and security # problems, so this is (mostly) avoided, by progressively accumulating # options in "$@", and eventually passing that to Java. # # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; # see the in-line comments for details. # # There are tweaks for specific operating systems such as AIX, CygWin, # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. # ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link app_path=$0 # Need this for daisy-chained symlinks. while APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path [ -h "$app_path" ] do ls=$( ls -ld "$app_path" ) link=${ls#*' -> '} case $link in #( /*) app_path=$link ;; #( *) app_path=$APP_HOME$link ;; esac done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo "$*" } >&2 die () { echo echo "$*" echo exit 1 } >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "$( uname )" in #( CYGWIN* ) cygwin=true ;; #( Darwin* ) darwin=true ;; #( MSYS* | MINGW* ) msys=true ;; #( NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD=$JAVA_HOME/jre/sh/java else JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD=java if ! command -v java >/dev/null 2>&1 then die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi # Collect all arguments for the java command, stacking in reverse order: # * args from the command line # * the main class name # * -classpath # * -D...appname settings # * --module-path (only if needed) # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) # Now convert the arguments - kludge to limit ourselves to /bin/sh for arg do if case $arg in #( -*) false ;; # don't mess with options #( /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath [ -e "$t" ] ;; #( *) false ;; esac then arg=$( cygpath --path --ignore --mixed "$arg" ) fi # Roll the args list around exactly as many times as the number of # args, so each arg winds up back in the position where it started, but # possibly modified. # # NB: a `for` loop captures its iteration list before it begins, so # changing the positional parameters here affects neither the number of # iterations, nor the values presented in `arg`. shift # remove old arg set -- "$@" "$arg" # push replacement arg done fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ org.gradle.wrapper.GradleWrapperMain \ "$@" # Stop when "xargs" is not available. if ! command -v xargs >/dev/null 2>&1 then die "xargs is not available" fi # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. # # In Bash we could simply go: # # readarray ARGS < <( xargs -n1 <<<"$var" ) && # set -- "${ARGS[@]}" "$@" # # but POSIX shell has neither arrays nor command substitution, so instead we # post-process each arg (as a line of input to sed) to backslash-escape any # character that might be a shell metacharacter, then use eval to reverse # that process (while maintaining the separation between arguments), and wrap # the whole thing up as a single "set" statement. # # This will of course break if any of these variables contains a newline or # an unmatched quote. # eval "set -- $( printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | tr '\n' ' ' )" '"$@"' exec "$JAVACMD" "$@" ================================================ FILE: native/androidTest/gradlew.bat ================================================ @rem @rem Copyright 2015 the original author or authors. @rem @rem Licensed under the Apache License, Version 2.0 (the "License"); @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem @rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Resolve any "." and ".." in APP_HOME to make it shorter. for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute echo. 1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute echo. 1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! set EXIT_CODE=%ERRORLEVEL% if %EXIT_CODE% equ 0 set EXIT_CODE=1 if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal :omega ================================================ FILE: native/androidTest/keystores/BUCK ================================================ keystore( name = "debug", properties = "debug.keystore.properties", store = "debug.keystore", visibility = [ "PUBLIC", ], ) ================================================ FILE: native/androidTest/keystores/debug.keystore.properties ================================================ key.store=debug.keystore key.alias=androiddebugkey key.store.password=android key.alias.password=android ================================================ FILE: native/androidTest/settings.gradle ================================================ rootProject.name = 'watermelonTest' include ':watermelondb' project(':watermelondb').projectDir = new File(rootProject.projectDir, '../../native/android') include ':watermelondb-jsi' project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../../native/android-jsi') include ':app' includeBuild('../../node_modules/@react-native/gradle-plugin') ================================================ FILE: native/ios/WatermelonDB/DatabasePlatformIOS.mm ================================================ #include "DatabasePlatform.h" #import #import #include namespace watermelondb { namespace platform { void consoleLog(std::string message) { NSLog(@"%s", message.c_str()); } void consoleError(std::string message) { NSLog(@"Error: %s", message.c_str()); } void initializeSqlite() { // Nothing to do } std::string resolveDatabasePath(std::string path) { // Default: app documents/.db NSError *err = nil; NSURL *documentsUrl = [NSFileManager.defaultManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:false error:&err]; if (err) { NSLog(@"Error: %@", err); throw std::runtime_error("Failed to resolve database path - could not find documentsUrl"); } NSString *dbPath = [documentsUrl URLByAppendingPathComponent: [NSString stringWithFormat:@"%s.db", path.c_str()]].path; return std::string([dbPath cStringUsingEncoding:NSUTF8StringEncoding]); } void deleteDatabaseFile(std::string path, bool warnIfDoesNotExist) { NSString *nsPath = [NSString stringWithCString:path.c_str() encoding:NSUTF8StringEncoding]; NSFileManager *manager = NSFileManager.defaultManager; if (![manager fileExistsAtPath:nsPath]) { if (warnIfDoesNotExist) { NSLog(@"Warning: Skipping deleting %@, because it does not exist", nsPath); } else { throw std::runtime_error("Could not delete database file " + path + " because it does not exist"); } return; } NSError *err = nil; [manager removeItemAtPath:nsPath error:&err]; if (err) { throw std::runtime_error("Could not delete database file - " + std::string([err.description cStringUsingEncoding:NSUTF8StringEncoding])); } } void onMemoryAlert(std::function callback) { // TODO: Unimplemented } NSMutableDictionary *providedSyncJsons = [NSMutableDictionary new]; std::mutex providedSyncJsonsMutex; extern "C" void watermelondbProvideSyncJson(int id, NSData *json, NSError **errorPtr) { const std::lock_guard lock(providedSyncJsonsMutex); if (providedSyncJsons[@(id)]) { NSString *errorMsg = [NSString stringWithFormat:@"Sync json %i is already provided", id]; *errorPtr = [NSError errorWithDomain:@"com.nozbe.watermelondb.error" code:-1 userInfo:@{ @"NSLocalizedDescriptionKey": errorMsg }]; return; } providedSyncJsons[@(id)] = json; } std::string_view getSyncJson(int id) { const std::lock_guard lock(providedSyncJsonsMutex); NSData *json = providedSyncJsons[@(id)]; if (!json) { throw std::runtime_error("Sync json " + std::to_string(id) + " does not exist"); } std::string_view view((char *) json.bytes, json.length); return view; } void deleteSyncJson(int id) { const std::lock_guard lock(providedSyncJsonsMutex); [providedSyncJsons removeObjectForKey: @(id)]; } void onDestroy(std::function callback) { [NSNotificationCenter.defaultCenter addObserverForName:RCTBridgeWillReloadNotification object:nil queue:nil usingBlock: ^(NSNotification *note) { callback(); }]; } } // namespace platform } // namespace watermelondb ================================================ FILE: native/ios/WatermelonDB/FMDB/LICENSE.txt ================================================ If you are using FMDB in your project, I'd love to hear about it. Let Gus know by sending an email to gus@flyingmeat.com. And if you happen to come across either Gus Mueller or Rob Ryan in a bar, you might consider purchasing a drink of their choosing if FMDB has been useful to you. Finally, and shortly, this is the MIT License. Copyright (c) 2008-2014 Flying Meat Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: native/ios/WatermelonDB/FMDB/README.markdown ================================================ # FMDB v2.7 [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/FMDB.svg)](https://img.shields.io/cocoapods/v/FMDB.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) This is an Objective-C wrapper around SQLite: http://sqlite.org/ ## The FMDB Mailing List: http://groups.google.com/group/fmdb ## Read the SQLite FAQ: http://www.sqlite.org/faq.html Since FMDB is built on top of SQLite, you're going to want to read this page top to bottom at least once. And while you're there, make sure to bookmark the SQLite Documentation page: http://www.sqlite.org/docs.html ## Contributing Do you have an awesome idea that deserves to be in FMDB? You might consider pinging ccgus first to make sure he hasn't already ruled it out for some reason. Otherwise pull requests are great, and make sure you stick to the local coding conventions. However, please be patient and if you haven't heard anything from ccgus for a week or more, you might want to send a note asking what's up. ## Installing ### CocoaPods [![Dependency Status](https://www.versioneye.com/objective-c/fmdb/2.3/badge.svg?style=flat)](https://www.versioneye.com/objective-c/fmdb/2.3) [![Reference Status](https://www.versioneye.com/objective-c/fmdb/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/fmdb/references) FMDB can be installed using [CocoaPods](https://cocoapods.org/). If you haven't done so already, you might want to initialize the project, to have it produce a `Podfile` template for you: ``` $ pod init ``` Then, edit the `Podfile`, adding `FMDB`: ```ruby # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'MyApp' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for MyApp2 pod 'FMDB' # pod 'FMDB/FTS' # FMDB with FTS # pod 'FMDB/standalone' # FMDB with latest SQLite amalgamation source # pod 'FMDB/standalone/FTS' # FMDB with latest SQLite amalgamation source and FTS # pod 'FMDB/SQLCipher' # FMDB with SQLCipher end ``` Then install the pods: ``` $ pod install ``` Then open the `.xcworkspace` rather than the `.xcodeproj`. For more information on Cocoapods visit https://cocoapods.org. **If using FMDB with [SQLCipher](https://www.zetetic.net/sqlcipher/) you must use the FMDB/SQLCipher subspec. The FMDB/SQLCipher subspec declares SQLCipher as a dependency, allowing FMDB to be compiled with the `-DSQLITE_HAS_CODEC` flag.** ### Carthage Once you make sure you have [the latest version of Carthage](https://github.com/Carthage/Carthage/releases), you can open up a command line terminal, navigate to your project's main directory, and then do the following commands: ``` $ echo ' github "ccgus/fmdb" ' > ./Cartfile $ carthage update ``` You can then configure your project as outlined in Carthage's [Getting Started](https://github.com/Carthage/Carthage#getting-started) (i.e. for iOS, adding the framework to the "Link Binary with Libraries" in your target and adding the `copy-frameworks` script; in macOS, adding the framework to the list of "Embedded Binaries"). ## FMDB Class Reference: http://ccgus.github.io/fmdb/html/index.html ## Automatic Reference Counting (ARC) or Manual Memory Management? You can use either style in your Cocoa project. FMDB will figure out which you are using at compile time and do the right thing. ## What's New in FMDB 2.7 FMDB 2.7 attempts to support a more natural interface. This represents a fairly significant change for Swift developers (audited for nullability; shifted to properties in external interfaces where possible rather than methods; etc.). For Objective-C developers, this should be a fairly seamless transition (unless you were using the ivars that were previously exposed in the public interface, which you shouldn't have been doing, anyway!). ### Nullability and Swift Optionals FMDB 2.7 is largely the same as prior versions, but has been audited for nullability. For Objective-C users, this simply means that if you perform a static analysis of your FMDB-based project, you may receive more meaningful warnings as you review your project, but there are likely to be few, if any, changes necessary in your code. For Swift users, this nullability audit results in changes that are not entirely backward compatible with FMDB 2.6, but is a little more Swifty. Before FMDB was audited for nullability, Swift was forced to defensively assume that variables were optional, but the library now more accurately knows which properties and method parameters are optional, and which are not. This means, though, that Swift code written for FMDB 2.7 may require changes. For example, consider the following Swift 3/Swift 4 code for FMDB 2.6: ```swift queue.inTransaction { db, rollback in do { guard let db == db else { // handle error here return } try db.executeUpdate("INSERT INTO foo (bar) VALUES (?)", values: [1]) try db.executeUpdate("INSERT INTO foo (bar) VALUES (?)", values: [2]) } catch { rollback?.pointee = true } } ``` Because FMDB 2.6 was not audited for nullability, Swift inferred that `db` and `rollback` were optionals. But, now, in FMDB 2.7, Swift now knows that, for example, neither `db` nor `rollback` above can be `nil`, so they are no longer optionals. Thus it becomes: ```swift queue.inTransaction { db, rollback in do { try db.executeUpdate("INSERT INTO foo (bar) VALUES (?)", values: [1]) try db.executeUpdate("INSERT INTO foo (bar) VALUES (?)", values: [2]) } catch { rollback.pointee = true } } ``` ### Custom Functions In the past, when writing custom functions, you would have to generally include your own `@autoreleasepool` block to avoid problems when writing functions that scanned through a large table. Now, FMDB will automatically wrap it in an autorelease pool, so you don't have to. Also, in the past, when retrieving the values passed to the function, you had to drop down to the SQLite C API and include your own `sqlite3_value_XXX` calls. There are now `FMDatabase` methods, `valueInt`, `valueString`, etc., so you can stay within Swift and/or Objective-C, without needing to call the C functions yourself. Likewise, when specifying the return values, you no longer need to call `sqlite3_result_XXX` C API, but rather you can use `FMDatabase` methods, `resultInt`, `resultString`, etc. There is a new `enum` for `valueType` called `SqliteValueType`, which can be used for checking the type of parameter passed to the custom function. Thus, you can do something like (as of Swift 3): ```swift db.makeFunctionNamed("RemoveDiacritics", arguments: 1) { context, argc, argv in guard db.valueType(argv[0]) == .text || db.valueType(argv[0]) == .null else { db.resultError("Expected string parameter", context: context) return } if let string = db.valueString(argv[0])?.folding(options: .diacriticInsensitive, locale: nil) { db.resultString(string, context: context) } else { db.resultNull(context: context) } } ``` And you can then use that function in your SQL (in this case, matching both "Jose" and "José"): ```sql SELECT * FROM employees WHERE RemoveDiacritics(first_name) LIKE 'jose' ``` Note, the method `makeFunctionNamed:maximumArguments:withBlock:` has been renamed to `makeFunctionNamed:arguments:block:`, to more accurately reflect the functional intent of the second parameter. ### API Changes In addition to the `makeFunctionNamed` noted above, there are a few other API changes. Specifically, - To become consistent with the rest of the API, the methods `objectForColumnName` and `UTF8StringForColumnName` have been renamed to `objectForColumn` and `UTF8StringForColumn`. - Note, the `objectForColumn` (and the associted subscript operator) now returns `nil` if an invalid column name/index is passed to it. It used to return `NSNull`. - To avoid confusion with `FMDatabaseQueue` method `inTransaction`, which performs transactions, the `FMDatabase` method to determine whether you are in a transaction or not, `inTransaction`, has been replaced with a read-only property, `isInTransaction`. - Several functions have been converted to properties, namely, `databasePath`, `maxBusyRetryTimeInterval`, `shouldCacheStatements`, `sqliteHandle`, `hasOpenResultSets`, `lastInsertRowId`, `changes`, `goodConnection`, `columnCount`, `resultDictionary`, `applicationID`, `applicationIDString`, `userVersion`, `countOfCheckedInDatabases`, `countOfCheckedOutDatabases`, and `countOfOpenDatabases`. For Objective-C users, this has little material impact, but for Swift users, it results in a slightly more natural interface. Note: For Objective-C developers, previously versions of FMDB exposed many ivars (but we hope you weren't using them directly, anyway!), but the implmentation details for these are no longer exposed. ### URL Methods In keeping with Apple's shift from paths to URLs, there are now `NSURL` renditions of the various `init` methods, previously only accepting paths. ## Usage There are three main classes in FMDB: 1. `FMDatabase` - Represents a single SQLite database. Used for executing SQL statements. 2. `FMResultSet` - Represents the results of executing a query on an `FMDatabase`. 3. `FMDatabaseQueue` - If you're wanting to perform queries and updates on multiple threads, you'll want to use this class. It's described in the "Thread Safety" section below. ### Database Creation An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted when the `FMDatabase` connection is closed. 3. `NULL`. An in-memory database is created. This database will be destroyed when the `FMDatabase` connection is closed. (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: http://www.sqlite.org/inmemorydb.html) ```objc NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmp.db"]; FMDatabase *db = [FMDatabase databaseWithPath:path]; ``` ### Opening Before you can interact with the database, it must be opened. Opening fails if there are insufficient resources or permissions to open and/or create the database. ```objc if (![db open]) { // [db release]; // uncomment this line in manual referencing code; in ARC, this is not necessary/permitted db = nil; return; } ``` ### Executing Updates Any sort of SQL statement which is not a `SELECT` statement qualifies as an update. This includes `CREATE`, `UPDATE`, `INSERT`, `ALTER`, `COMMIT`, `BEGIN`, `DETACH`, `DELETE`, `DROP`, `END`, `EXPLAIN`, `VACUUM`, and `REPLACE` statements (plus many more). Basically, if your SQL statement does not begin with `SELECT`, it is an update statement. Executing updates returns a single value, a `BOOL`. A return value of `YES` means the update was successfully executed, and a return value of `NO` means that some error was encountered. You may invoke the `-lastErrorMessage` and `-lastErrorCode` methods to retrieve more information. ### Executing Queries A `SELECT` statement is a query and is executed via one of the `-executeQuery...` methods. Executing queries returns an `FMResultSet` object if successful, and `nil` upon failure. You should use the `-lastErrorMessage` and `-lastErrorCode` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" from one record to the other. With FMDB, the easiest way to do that is like this: ```objc FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"]; while ([s next]) { //retrieve values for each record } ``` You must always invoke `-[FMResultSet next]` before attempting to access the values returned in a query, even if you're only expecting one: ```objc FMResultSet *s = [db executeQuery:@"SELECT COUNT(*) FROM myTable"]; if ([s next]) { int totalCount = [s intForColumnIndex:0]; } ``` `FMResultSet` has many methods to retrieve data in an appropriate format: - `intForColumn:` - `longForColumn:` - `longLongIntForColumn:` - `boolForColumn:` - `doubleForColumn:` - `stringForColumn:` - `dateForColumn:` - `dataForColumn:` - `dataNoCopyForColumn:` - `UTF8StringForColumn:` - `objectForColumn:` Each of these methods also has a `{type}ForColumnIndex:` variant that is used to retrieve the data based on the position of the column in the results, as opposed to the column's name. Typically, there's no need to `-close` an `FMResultSet` yourself, since that happens when either the result set is deallocated, or the parent database is closed. ### Closing When you have finished executing queries and updates on the database, you should `-close` the `FMDatabase` connection so that SQLite will relinquish any resources it has acquired during the course of its operation. ```objc [db close]; ``` ### Transactions `FMDatabase` can begin and commit a transaction by invoking one of the appropriate methods or executing a begin/end transaction statement. ### Multiple Statements and Batch Stuff You can use `FMDatabase`'s executeStatements:withResultBlock: to do multiple statements in a string: ```objc NSString *sql = @"create table bulktest1 (id integer primary key autoincrement, x text);" "create table bulktest2 (id integer primary key autoincrement, y text);" "create table bulktest3 (id integer primary key autoincrement, z text);" "insert into bulktest1 (x) values ('XXX');" "insert into bulktest2 (y) values ('YYY');" "insert into bulktest3 (z) values ('ZZZ');"; success = [db executeStatements:sql]; sql = @"select count(*) as count from bulktest1;" "select count(*) as count from bulktest2;" "select count(*) as count from bulktest3;"; success = [self.db executeStatements:sql withResultBlock:^int(NSDictionary *dictionary) { NSInteger count = [dictionary[@"count"] integerValue]; XCTAssertEqual(count, 1, @"expected one record for dictionary %@", dictionary); return 0; }]; ``` ### Data Sanitization When providing a SQL statement to FMDB, you should not attempt to "sanitize" any values before insertion. Instead, you should use the standard SQLite binding syntax: ```sql INSERT INTO myTable VALUES (?, ?, ?, ?) ``` The `?` character is recognized by SQLite as a placeholder for a value to be inserted. The execution methods all accept a variable number of arguments (or a representation of those arguments, such as an `NSArray`, `NSDictionary`, or a `va_list`), which are properly escaped for you. And, to use that SQL with the `?` placeholders from Objective-C: ```objc NSInteger identifier = 42; NSString *name = @"Liam O'Flaherty (\"the famous Irish author\")"; NSDate *date = [NSDate date]; NSString *comment = nil; BOOL success = [db executeUpdate:@"INSERT INTO authors (identifier, name, date, comment) VALUES (?, ?, ?, ?)", @(identifier), name, date, comment ?: [NSNull null]]; if (!success) { NSLog(@"error = %@", [db lastErrorMessage]); } ``` > **Note:** Fundamental data types, like the `NSInteger` variable `identifier`, should be as a `NSNumber` objects, achieved by using the `@` syntax, shown above. Or you can use the `[NSNumber numberWithInt:identifier]` syntax, too. > > Likewise, SQL `NULL` values should be inserted as `[NSNull null]`. For example, in the case of `comment` which might be `nil` (and is in this example), you can use the `comment ?: [NSNull null]` syntax, which will insert the string if `comment` is not `nil`, but will insert `[NSNull null]` if it is `nil`. In Swift, you would use `executeUpdate(values:)`, which not only is a concise Swift syntax, but also `throws` errors for proper error handling: ```swift do { let identifier = 42 let name = "Liam O'Flaherty (\"the famous Irish author\")" let date = Date() let comment: String? = nil try db.executeUpdate("INSERT INTO authors (identifier, name, date, comment) VALUES (?, ?, ?, ?)", values: [identifier, name, date, comment ?? NSNull()]) } catch { print("error = \(error)") } ``` > **Note:** In Swift, you don't have to wrap fundamental numeric types like you do in Objective-C. But if you are going to insert an optional string, you would probably use the `comment ?? NSNull()` syntax (i.e., if it is `nil`, use `NSNull`, otherwise use the string). Alternatively, you may use named parameters syntax: ```sql INSERT INTO authors (identifier, name, date, comment) VALUES (:identifier, :name, :date, :comment) ``` The parameters *must* start with a colon. SQLite itself supports other characters, but internally the dictionary keys are prefixed with a colon, do **not** include the colon in your dictionary keys. ```objc NSDictionary *arguments = @{@"identifier": @(identifier), @"name": name, @"date": date, @"comment": comment ?: [NSNull null]}; BOOL success = [db executeUpdate:@"INSERT INTO authors (identifier, name, date, comment) VALUES (:identifier, :name, :date, :comment)" withParameterDictionary:arguments]; if (!success) { NSLog(@"error = %@", [db lastErrorMessage]); } ``` The key point is that one should not use `NSString` method `stringWithFormat` to manually insert values into the SQL statement, itself. Nor should one Swift string interpolation to insert values into the SQL. Use `?` placeholders for values to be inserted into the database (or used in `WHERE` clauses in `SELECT` statements).

Using FMDatabaseQueue and Thread Safety.

Using a single instance of `FMDatabase` from multiple threads at once is a bad idea. It has always been OK to make a `FMDatabase` object *per thread*. Just don't share a single instance across threads, and definitely not across multiple threads at the same time. Bad things will eventually happen and you'll eventually get something to crash, or maybe get an exception, or maybe meteorites will fall out of the sky and hit your Mac Pro. *This would suck*. **So don't instantiate a single `FMDatabase` object and use it across multiple threads.** Instead, use `FMDatabaseQueue`. Instantiate a single `FMDatabaseQueue` and use it across multiple threads. The `FMDatabaseQueue` object will synchronize and coordinate access across the multiple threads. Here's how to use it: First, make your queue. ```objc FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; ``` Then use it like so: ```objc [queue inDatabase:^(FMDatabase *db) { [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @1]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @2]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @3]; FMResultSet *rs = [db executeQuery:@"select * from foo"]; while ([rs next]) { … } }]; ``` An easy way to wrap things up in a transaction can be done like this: ```objc [queue inTransaction:^(FMDatabase *db, BOOL *rollback) { [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @1]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @2]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", @3]; if (whoopsSomethingWrongHappened) { *rollback = YES; return; } // etc ... }]; ``` The Swift equivalent would be: ```swift queue.inTransaction { db, rollback in do { try db.executeUpdate("INSERT INTO myTable VALUES (?)", values: [1]) try db.executeUpdate("INSERT INTO myTable VALUES (?)", values: [2]) try db.executeUpdate("INSERT INTO myTable VALUES (?)", values: [3]) if whoopsSomethingWrongHappened { rollback.pointee = true return } // etc ... } catch { rollback.pointee = true print(error) } } ``` (Note, as of Swift 3, use `pointee`. But in Swift 2.3, use `memory` rather than `pointee`.) `FMDatabaseQueue` will run the blocks on a serialized queue (hence the name of the class). So if you call `FMDatabaseQueue`'s methods from multiple threads at the same time, they will be executed in the order they are received. This way queries and updates won't step on each other's toes, and every one is happy. **Note:** The calls to `FMDatabaseQueue`'s methods are blocking. So even though you are passing along blocks, they will **not** be run on another thread. ## Making custom sqlite functions, based on blocks. You can do this! For an example, look for `-makeFunctionNamed:` in main.m ## Swift You can use FMDB in Swift projects too. To do this, you must: 1. Copy the relevant `.m` and `.h` files from the FMDB `src` folder into your project. You can copy all of them (which is easiest), or only the ones you need. Likely you will need [`FMDatabase`](http://ccgus.github.io/fmdb/html/Classes/FMDatabase.html) and [`FMResultSet`](http://ccgus.github.io/fmdb/html/Classes/FMResultSet.html) at a minimum. [`FMDatabaseAdditions`](http://ccgus.github.io/fmdb/html/Categories/FMDatabase+FMDatabaseAdditions.html) provides some very useful convenience methods, so you will likely want that, too. If you are doing multithreaded access to a database, [`FMDatabaseQueue`](http://ccgus.github.io/fmdb/html/Classes/FMDatabaseQueue.html) is quite useful, too. If you choose to not copy all of the files from the `src` directory, though, you may want to update `FMDB.h` to only reference the files that you included in your project. Note, if you're copying all of the files from the `src` folder into to your project (which is recommended), you may want to drag the individual files into your project, not the folder, itself, because if you drag the folder, you won't be prompted to add the bridging header (see next point). 2. If prompted to create a "bridging header", you should do so. If not prompted and if you don't already have a bridging header, add one. For more information on bridging headers, see [Swift and Objective-C in the Same Project](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_76). 3. In your bridging header, add a line that says: ```objc #import "FMDB.h" ``` 4. Use the variations of `executeQuery` and `executeUpdate` with the `sql` and `values` parameters with `try` pattern, as shown below. These renditions of `executeQuery` and `executeUpdate` both `throw` errors in true Swift fashion. If you do the above, you can then write Swift code that uses `FMDatabase`. For example, as of Swift 3: ```swift let fileURL = try! FileManager.default .url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true) .appendingPathComponent("test.sqlite") let database = FMDatabase(url: fileURL) guard database.open() else { print("Unable to open database") return } do { try database.executeUpdate("create table test(x text, y text, z text)", values: nil) try database.executeUpdate("insert into test (x, y, z) values (?, ?, ?)", values: ["a", "b", "c"]) try database.executeUpdate("insert into test (x, y, z) values (?, ?, ?)", values: ["e", "f", "g"]) let rs = try database.executeQuery("select x, y, z from test", values: nil) while rs.next() { if let x = rs.string(forColumn: "x"), let y = rs.string(forColumn: "y"), let z = rs.string(forColumn: "z") { print("x = \(x); y = \(y); z = \(z)") } } } catch { print("failed: \(error.localizedDescription)") } database.close() ``` ## History The history and changes are availbe on its [GitHub page](https://github.com/ccgus/fmdb) and are summarized in the "CHANGES_AND_TODO_LIST.txt" file. ## Contributors The contributors to FMDB are contained in the "Contributors.txt" file. ## Additional projects using FMDB, which might be interesting to the discerning developer. * FMDBMigrationManager, A SQLite schema migration management system for FMDB: https://github.com/layerhq/FMDBMigrationManager * FCModel, An alternative to Core Data for people who like having direct SQL access: https://github.com/marcoarment/FCModel ## Quick notes on FMDB's coding style Spaces, not tabs. Square brackets, not dot notation. Look at what FMDB already does with curly brackets and such, and stick to that style. ## Reporting bugs Reduce your bug down to the smallest amount of code possible. You want to make it super easy for the developers to see and reproduce your bug. If it helps, pretend that the person who can fix your bug is active on shipping 3 major products, works on a handful of open source projects, has a newborn baby, and is generally very very busy. And we've even added a template function to main.m (FMDBReportABugFunction) in the FMDB distribution to help you out: * Open up fmdb project in Xcode. * Open up main.m and modify the FMDBReportABugFunction to reproduce your bug. * Setup your table(s) in the code. * Make your query or update(s). * Add some assertions which demonstrate the bug. Then you can bring it up on the FMDB mailing list by showing your nice and compact FMDBReportABugFunction, or you can report the bug via the github FMDB bug reporter. **Optional:** Figure out where the bug is, fix it, and send a patch in or bring that up on the mailing list. Make sure all the other tests run after your modifications. ## Support The support channels for FMDB are the mailing list (see above), filing a bug here, or maybe on Stack Overflow. So that is to say, support is provided by the community and on a voluntary basis. FMDB development is overseen by Gus Mueller of Flying Meat. If FMDB been helpful to you, consider purchasing an app from FM or telling all your friends about it. ## License The license for FMDB is contained in the "License.txt" file. If you happen to come across either Gus Mueller or Rob Ryan in a bar, you might consider purchasing a drink of their choosing if FMDB has been useful to you. (The drink is for them of course, shame on you for trying to keep it.) ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDB.h ================================================ #import FOUNDATION_EXPORT double FMDBVersionNumber; FOUNDATION_EXPORT const unsigned char FMDBVersionString[]; #import "FMDatabase.h" #import "FMResultSet.h" #import "FMDatabaseAdditions.h" #import "FMDatabaseQueue.h" #import "FMDatabasePool.h" ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabase.h ================================================ #import #import "FMResultSet.h" #import "FMDatabasePool.h" NS_ASSUME_NONNULL_BEGIN #if ! __has_feature(objc_arc) #define FMDBAutorelease(__v) ([__v autorelease]); #define FMDBReturnAutoreleased FMDBAutorelease #define FMDBRetain(__v) ([__v retain]); #define FMDBReturnRetained FMDBRetain #define FMDBRelease(__v) ([__v release]); #define FMDBDispatchQueueRelease(__v) (dispatch_release(__v)); #else // -fobjc-arc #define FMDBAutorelease(__v) #define FMDBReturnAutoreleased(__v) (__v) #define FMDBRetain(__v) #define FMDBReturnRetained(__v) (__v) #define FMDBRelease(__v) // If OS_OBJECT_USE_OBJC=1, then the dispatch objects will be treated like ObjC objects // and will participate in ARC. // See the section on "Dispatch Queues and Automatic Reference Counting" in "Grand Central Dispatch (GCD) Reference" for details. #if OS_OBJECT_USE_OBJC #define FMDBDispatchQueueRelease(__v) #else #define FMDBDispatchQueueRelease(__v) (dispatch_release(__v)); #endif #endif #if !__has_feature(objc_instancetype) #define instancetype id #endif typedef int(^FMDBExecuteStatementsCallbackBlock)(NSDictionary *resultsDictionary); typedef NS_ENUM(int, FMDBCheckpointMode) { FMDBCheckpointModePassive = 0, // SQLITE_CHECKPOINT_PASSIVE, FMDBCheckpointModeFull = 1, // SQLITE_CHECKPOINT_FULL, FMDBCheckpointModeRestart = 2, // SQLITE_CHECKPOINT_RESTART, FMDBCheckpointModeTruncate = 3 // SQLITE_CHECKPOINT_TRUNCATE }; /** A SQLite ([http://sqlite.org/](http://sqlite.org/)) Objective-C wrapper. ### Usage The three main classes in FMDB are: - `FMDatabase` - Represents a single SQLite database. Used for executing SQL statements. - `` - Represents the results of executing a query on an `FMDatabase`. - `` - If you want to perform queries and updates on multiple threads, you'll want to use this class. ### See also - `` - A pool of `FMDatabase` objects. - `` - A wrapper for `sqlite_stmt`. ### External links - [FMDB on GitHub](https://github.com/ccgus/fmdb) including introductory documentation - [SQLite web site](http://sqlite.org/) - [FMDB mailing list](http://groups.google.com/group/fmdb) - [SQLite FAQ](http://www.sqlite.org/faq.html) @warning Do not instantiate a single `FMDatabase` object and use it across multiple threads. Instead, use ``. */ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-interface-ivars" @interface FMDatabase : NSObject ///----------------- /// @name Properties ///----------------- /** Whether should trace execution */ @property (atomic, assign) BOOL traceExecution; /** Whether checked out or not */ @property (atomic, assign) BOOL checkedOut; /** Crash on errors */ @property (atomic, assign) BOOL crashOnErrors; /** Logs errors */ @property (atomic, assign) BOOL logsErrors; /** Dictionary of cached statements */ @property (atomic, retain, nullable) NSMutableDictionary *cachedStatements; ///--------------------- /// @name Initialization ///--------------------- /** Create a `FMDatabase` object. An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. For example, to create/open a database in your Mac OS X `tmp` folder: FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; Or, in iOS, you might open a database in the app's `Documents` directory: NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) @param inPath Path of database file @return `FMDatabase` object if successful; `nil` if failure. */ + (instancetype)databaseWithPath:(NSString * _Nullable)inPath; /** Create a `FMDatabase` object. An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: 1. A file system URL. The file does not have to exist on disk. If it does not exist, it is created for you. 2. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. For example, to create/open a database in your Mac OS X `tmp` folder: FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; Or, in iOS, you might open a database in the app's `Documents` directory: NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) @param url The local file URL (not remote URL) of database file @return `FMDatabase` object if successful; `nil` if failure. */ + (instancetype)databaseWithURL:(NSURL * _Nullable)url; /** Initialize a `FMDatabase` object. An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. For example, to create/open a database in your Mac OS X `tmp` folder: FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; Or, in iOS, you might open a database in the app's `Documents` directory: NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) @param path Path of database file. @return `FMDatabase` object if successful; `nil` if failure. */ - (instancetype)initWithPath:(NSString * _Nullable)path; /** Initialize a `FMDatabase` object. An `FMDatabase` is created with a local file URL to a SQLite database file. This path can be one of these three: 1. A file system URL. The file does not have to exist on disk. If it does not exist, it is created for you. 2. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. For example, to create/open a database in your Mac OS X `tmp` folder: FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; Or, in iOS, you might open a database in the app's `Documents` directory: NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) @param url The file `NSURL` of database file. @return `FMDatabase` object if successful; `nil` if failure. */ - (instancetype)initWithURL:(NSURL * _Nullable)url; ///----------------------------------- /// @name Opening and closing database ///----------------------------------- /// Is the database open or not? @property (nonatomic) BOOL isOpen; /** Opening a new database connection The database is opened for reading and writing, and is created if it does not already exist. @return `YES` if successful, `NO` on error. @see [sqlite3_open()](http://sqlite.org/c3ref/open.html) @see openWithFlags: @see close */ - (BOOL)open; /** Opening a new database connection with flags and an optional virtual file system (VFS) @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: `SQLITE_OPEN_READONLY` The database is opened in read-only mode. If the database does not already exist, an error is returned. `SQLITE_OPEN_READWRITE` The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. @return `YES` if successful, `NO` on error. @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) @see open @see close */ - (BOOL)openWithFlags:(int)flags; /** Opening a new database connection with flags and an optional virtual file system (VFS) @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: `SQLITE_OPEN_READONLY` The database is opened in read-only mode. If the database does not already exist, an error is returned. `SQLITE_OPEN_READWRITE` The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. @param vfsName If vfs is given the value is passed to the vfs parameter of sqlite3_open_v2. @return `YES` if successful, `NO` on error. @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) @see open @see close */ - (BOOL)openWithFlags:(int)flags vfs:(NSString * _Nullable)vfsName; /** Closing a database connection @return `YES` if success, `NO` on error. @see [sqlite3_close()](http://sqlite.org/c3ref/close.html) @see open @see openWithFlags: */ - (BOOL)close; /** Test to see if we have a good connection to the database. This will confirm whether: - is database open - if open, it will try a simple SELECT statement and confirm that it succeeds. @return `YES` if everything succeeds, `NO` on failure. */ @property (nonatomic, readonly) BOOL goodConnection; ///---------------------- /// @name Perform updates ///---------------------- /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. @param sql The SQL to be performed, with optional `?` placeholders. @param outErr A reference to the `NSError` pointer to be updated with an auto released `NSError` object if an error if an error occurs. If `nil`, no `NSError` object will be returned. @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) */ - (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError * _Nullable *)outErr, ...; /** Execute single update statement @see executeUpdate:withErrorAndBindings: @warning **Deprecated**: Please use `` instead. */ - (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError * _Nullable*)outErr, ... __deprecated_msg("Use executeUpdate:withErrorAndBindings: instead");; /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. @param sql The SQL to be performed, with optional `?` placeholders. @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) @note This technique supports the use of `?` placeholders in the SQL, automatically binding any supplied value parameters to those placeholders. This approach is more robust than techniques that entail using `stringWithFormat` to manually build SQL statements, which can be problematic if the values happened to include any characters that needed to be quoted. @note You cannot use this method from Swift due to incompatibilities between Swift and Objective-C variadic implementations. Consider using `` instead. */ - (BOOL)executeUpdate:(NSString*)sql, ...; /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. Do not use `?` placeholders in the SQL if you use this method. @param format The SQL to be performed, with `printf`-style escape sequences. @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see executeUpdate: @see lastError @see lastErrorCode @see lastErrorMessage @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command [db executeUpdateWithFormat:@"INSERT INTO test (name) VALUES (%@)", @"Gus"]; is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `` [db executeUpdate:@"INSERT INTO test (name) VALUES (?)", @"Gus"]; There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `VALUES` clause was _not_ `VALUES ('%@')` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `VALUES (%@)`. */ - (BOOL)executeUpdateWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. @param sql The SQL to be performed, with optional `?` placeholders. @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see executeUpdate:values:error: @see lastError @see lastErrorCode @see lastErrorMessage */ - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments; /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. This is similar to ``, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. In Swift, this throws errors, as if it were defined as follows: `func executeUpdate(sql: String, values: [Any]?) throws -> Bool` @param sql The SQL to be performed, with optional `?` placeholders. @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. @param error A `NSError` object to receive any error object (if any). @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage */ - (BOOL)executeUpdate:(NSString*)sql values:(NSArray * _Nullable)values error:(NSError * _Nullable __autoreleasing *)error; /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. @param sql The SQL to be performed, with optional `?` placeholders. @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage */ - (BOOL)executeUpdate:(NSString*)sql withParameterDictionary:(NSDictionary *)arguments; /** Execute single update statement This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. @param sql The SQL to be performed, with optional `?` placeholders. @param args A `va_list` of arguments. @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage */ - (BOOL)executeUpdate:(NSString*)sql withVAList: (va_list)args; /** Execute multiple SQL statements This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses `sqlite3_exec`. @param sql The SQL to be performed @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see executeStatements:withResultBlock: @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) */ - (BOOL)executeStatements:(NSString *)sql; /** Execute multiple SQL statements with callback handler This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses `sqlite3_exec`. @param sql The SQL to be performed. @param block A block that will be called for any result sets returned by any SQL statements. Note, if you supply this block, it must return integer value, zero upon success (this would be a good opportunity to use SQLITE_OK), non-zero value upon failure (which will stop the bulk execution of the SQL). If a statement returns values, the block will be called with the results from the query in NSDictionary *resultsDictionary. This may be `nil` if you don't care to receive any results. @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see executeStatements: @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) */ - (BOOL)executeStatements:(NSString *)sql withResultBlock:(__attribute__((noescape)) FMDBExecuteStatementsCallbackBlock _Nullable)block; /** Last insert rowid Each entry in an SQLite table has a unique 64-bit signed integer key called the "rowid". The rowid is always available as an undeclared column named `ROWID`, `OID`, or `_ROWID_` as long as those names are not also used by explicitly declared columns. If the table has a column of type `INTEGER PRIMARY KEY` then that column is another alias for the rowid. This routine returns the rowid of the most recent successful `INSERT` into the database from the database connection in the first argument. As of SQLite version 3.7.7, this routines records the last insert rowid of both ordinary tables and virtual tables. If no successful `INSERT`s have ever occurred on that database connection, zero is returned. @return The rowid of the last inserted row. @see [sqlite3_last_insert_rowid()](http://sqlite.org/c3ref/last_insert_rowid.html) */ @property (nonatomic, readonly) int64_t lastInsertRowId; /** The number of rows changed by prior SQL statement. This function returns the number of database rows that were changed or inserted or deleted by the most recently completed SQL statement on the database connection specified by the first parameter. Only changes that are directly specified by the INSERT, UPDATE, or DELETE statement are counted. @return The number of rows changed by prior SQL statement. @see [sqlite3_changes()](http://sqlite.org/c3ref/changes.html) */ @property (nonatomic, readonly) int changes; ///------------------------- /// @name Retrieving results ///------------------------- /** Execute select statement Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. This method employs [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) for any optional value parameters. This properly escapes any characters that need escape sequences (e.g. quotation marks), which eliminates simple SQL errors as well as protects against SQL injection attacks. This method natively handles `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects. All other object types will be interpreted as text values using the object's `description` method. @param sql The SELECT statement to be performed, with optional `?` placeholders. @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) @note You cannot use this method from Swift due to incompatibilities between Swift and Objective-C variadic implementations. Consider using `` instead. */ - (FMResultSet * _Nullable)executeQuery:(NSString*)sql, ...; /** Execute select statement Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. @param format The SQL to be performed, with `printf`-style escape sequences. @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see executeQuery: @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command [db executeQueryWithFormat:@"SELECT * FROM test WHERE name=%@", @"Gus"]; is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `` [db executeQuery:@"SELECT * FROM test WHERE name=?", @"Gus"]; There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `WHERE` clause was _not_ `WHERE name='%@'` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `WHERE name=%@`. */ - (FMResultSet * _Nullable)executeQueryWithFormat:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2); /** Execute select statement Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. @param sql The SELECT statement to be performed, with optional `?` placeholders. @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see -executeQuery:values:error: @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) */ - (FMResultSet * _Nullable)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments; /** Execute select statement Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. This is similar to ``, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. In Swift, this throws errors, as if it were defined as follows: `func executeQuery(sql: String, values: [Any]?) throws -> FMResultSet!` @param sql The SELECT statement to be performed, with optional `?` placeholders. @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. @param error A `NSError` object to receive any error object (if any). @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) @note When called from Swift, only use the first two parameters, `sql` and `values`. This but throws the error. */ - (FMResultSet * _Nullable)executeQuery:(NSString *)sql values:(NSArray * _Nullable)values error:(NSError * _Nullable __autoreleasing *)error; /** Execute select statement Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. @param sql The SELECT statement to be performed, with optional `?` placeholders. @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) */ - (FMResultSet * _Nullable)executeQuery:(NSString *)sql withParameterDictionary:(NSDictionary * _Nullable)arguments; // Documentation forthcoming. - (FMResultSet * _Nullable)executeQuery:(NSString *)sql withVAList:(va_list)args; ///------------------- /// @name Transactions ///------------------- /** Begin a transaction @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see commit @see rollback @see beginDeferredTransaction @see isInTransaction @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs an exclusive transaction, not a deferred transaction. This behavior is likely to change in future versions of FMDB, whereby this method will likely eventually adopt standard SQLite behavior and perform deferred transactions. If you really need exclusive tranaction, it is recommended that you use `beginExclusiveTransaction`, instead, not only to make your intent explicit, but also to future-proof your code. */ - (BOOL)beginTransaction; /** Begin a deferred transaction @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see commit @see rollback @see beginTransaction @see isInTransaction */ - (BOOL)beginDeferredTransaction; /** Begin an immediate transaction @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see commit @see rollback @see beginTransaction @see isInTransaction */ - (BOOL)beginImmediateTransaction; /** Begin an exclusive transaction @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see commit @see rollback @see beginTransaction @see isInTransaction */ - (BOOL)beginExclusiveTransaction; /** Commit a transaction Commit a transaction that was initiated with either `` or with ``. @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see beginTransaction @see beginDeferredTransaction @see rollback @see isInTransaction */ - (BOOL)commit; /** Rollback a transaction Rollback a transaction that was initiated with either `` or with ``. @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see beginTransaction @see beginDeferredTransaction @see commit @see isInTransaction */ - (BOOL)rollback; /** Identify whether currently in a transaction or not @see beginTransaction @see beginDeferredTransaction @see commit @see rollback */ @property (nonatomic, readonly) BOOL isInTransaction; - (BOOL)inTransaction __deprecated_msg("Use isInTransaction property instead"); ///---------------------------------------- /// @name Cached statements and result sets ///---------------------------------------- /** Clear cached statements */ - (void)clearCachedStatements; /** Close all open result sets */ - (void)closeOpenResultSets; /** Whether database has any open result sets @return `YES` if there are open result sets; `NO` if not. */ @property (nonatomic, readonly) BOOL hasOpenResultSets; /** Whether should cache statements or not */ @property (nonatomic) BOOL shouldCacheStatements; /** Interupt pending database operation This method causes any pending database operation to abort and return at its earliest opportunity @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. */ - (BOOL)interrupt; ///------------------------- /// @name Encryption methods ///------------------------- /** Set encryption key. @param key The key to be used. @return `YES` if success, `NO` on error. @see https://www.zetetic.net/sqlcipher/ @warning You need to have purchased the sqlite encryption extensions for this method to work. */ - (BOOL)setKey:(NSString*)key; /** Reset encryption key @param key The key to be used. @return `YES` if success, `NO` on error. @see https://www.zetetic.net/sqlcipher/ @warning You need to have purchased the sqlite encryption extensions for this method to work. */ - (BOOL)rekey:(NSString*)key; /** Set encryption key using `keyData`. @param keyData The `NSData` to be used. @return `YES` if success, `NO` on error. @see https://www.zetetic.net/sqlcipher/ @warning You need to have purchased the sqlite encryption extensions for this method to work. */ - (BOOL)setKeyWithData:(NSData *)keyData; /** Reset encryption key using `keyData`. @param keyData The `NSData` to be used. @return `YES` if success, `NO` on error. @see https://www.zetetic.net/sqlcipher/ @warning You need to have purchased the sqlite encryption extensions for this method to work. */ - (BOOL)rekeyWithData:(NSData *)keyData; ///------------------------------ /// @name General inquiry methods ///------------------------------ /** The path of the database file */ @property (nonatomic, readonly, nullable) NSString *databasePath; /** The file URL of the database file. */ @property (nonatomic, readonly, nullable) NSURL *databaseURL; /** The underlying SQLite handle @return The `sqlite3` pointer. */ @property (nonatomic, readonly) void *sqliteHandle; ///----------------------------- /// @name Retrieving error codes ///----------------------------- /** Last error message Returns the English-language text that describes the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. @return `NSString` of the last error message. @see [sqlite3_errmsg()](http://sqlite.org/c3ref/errcode.html) @see lastErrorCode @see lastError */ - (NSString*)lastErrorMessage; /** Last error code Returns the numeric result code or extended result code for the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. @return Integer value of the last error code. @see [sqlite3_errcode()](http://sqlite.org/c3ref/errcode.html) @see lastErrorMessage @see lastError */ - (int)lastErrorCode; /** Last extended error code Returns the numeric extended result code for the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. @return Integer value of the last extended error code. @see [sqlite3_errcode()](http://sqlite.org/c3ref/errcode.html) @see [2. Primary Result Codes versus Extended Result Codes](http://sqlite.org/rescode.html#primary_result_codes_versus_extended_result_codes) @see [5. Extended Result Code List](http://sqlite.org/rescode.html#extrc) @see lastErrorMessage @see lastError */ - (int)lastExtendedErrorCode; /** Had error @return `YES` if there was an error, `NO` if no error. @see lastError @see lastErrorCode @see lastErrorMessage */ - (BOOL)hadError; /** Last error @return `NSError` representing the last error. @see lastErrorCode @see lastErrorMessage */ - (NSError *)lastError; // description forthcoming @property (nonatomic) NSTimeInterval maxBusyRetryTimeInterval; ///------------------ /// @name Save points ///------------------ /** Start save point @param name Name of save point. @param outErr A `NSError` object to receive any error object (if any). @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see releaseSavePointWithName:error: @see rollbackToSavePointWithName:error: */ - (BOOL)startSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; /** Release save point @param name Name of save point. @param outErr A `NSError` object to receive any error object (if any). @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see startSavePointWithName:error: @see rollbackToSavePointWithName:error: */ - (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; /** Roll back to save point @param name Name of save point. @param outErr A `NSError` object to receive any error object (if any). @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. @see startSavePointWithName:error: @see releaseSavePointWithName:error: */ - (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; /** Start save point @param block Block of code to perform from within save point. @return The NSError corresponding to the error, if any. If no error, returns `nil`. @see startSavePointWithName:error: @see releaseSavePointWithName:error: @see rollbackToSavePointWithName:error: */ - (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(BOOL *rollback))block; ///----------------- /// @name Checkpoint ///----------------- /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode error:(NSError * _Nullable *)error; /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param name The db name for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name error:(NSError * _Nullable *)error; /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param name The db name for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @param logFrameCount If not NULL, then this is set to the total number of frames in the log file or to -1 if the checkpoint could not run because of an error or because the database is not in WAL mode. @param checkpointCount If not NULL, then this is set to the total number of checkpointed frames in the log file (including any that were already checkpointed before the function was called) or to -1 if the checkpoint could not run due to an error or because the database is not in WAL mode. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name logFrameCount:(int * _Nullable)logFrameCount checkpointCount:(int * _Nullable)checkpointCount error:(NSError * _Nullable *)error; ///---------------------------- /// @name SQLite library status ///---------------------------- /** Test to see if the library is threadsafe @return `NO` if and only if SQLite was compiled with mutexing code omitted due to the SQLITE_THREADSAFE compile-time option being set to 0. @see [sqlite3_threadsafe()](http://sqlite.org/c3ref/threadsafe.html) */ + (BOOL)isSQLiteThreadSafe; /** Run-time library version numbers @return The sqlite library version string. @see [sqlite3_libversion()](http://sqlite.org/c3ref/libversion.html) */ + (NSString*)sqliteLibVersion; + (NSString*)FMDBUserVersion; + (SInt32)FMDBVersion; ///------------------------ /// @name Make SQL function ///------------------------ /** Adds SQL functions or aggregates or to redefine the behavior of existing SQL functions or aggregates. For example: [db makeFunctionNamed:@"RemoveDiacritics" arguments:1 block:^(void *context, int argc, void **argv) { SqliteValueType type = [self.db valueType:argv[0]]; if (type == SqliteValueTypeNull) { [self.db resultNullInContext:context]; return; } if (type != SqliteValueTypeText) { [self.db resultError:@"Expected text" context:context]; return; } NSString *string = [self.db valueString:argv[0]]; NSString *result = [string stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:nil]; [self.db resultString:result context:context]; }]; FMResultSet *rs = [db executeQuery:@"SELECT * FROM employees WHERE RemoveDiacritics(first_name) LIKE 'jose'"]; NSAssert(rs, @"Error %@", [db lastErrorMessage]); @param name Name of function. @param arguments Maximum number of parameters. @param block The block of code for the function. @see [sqlite3_create_function()](http://sqlite.org/c3ref/create_function.html) */ - (void)makeFunctionNamed:(NSString *)name arguments:(int)arguments block:(void (^)(void *context, int argc, void * _Nonnull * _Nonnull argv))block; - (void)makeFunctionNamed:(NSString *)name maximumArguments:(int)count withBlock:(void (^)(void *context, int argc, void * _Nonnull * _Nonnull argv))block __deprecated_msg("Use makeFunctionNamed:arguments:block:"); typedef NS_ENUM(int, SqliteValueType) { SqliteValueTypeInteger = 1, SqliteValueTypeFloat = 2, SqliteValueTypeText = 3, SqliteValueTypeBlob = 4, SqliteValueTypeNull = 5 }; - (SqliteValueType)valueType:(void *)argv; /** Get integer value of parameter in custom function. @param value The argument whose value to return. @return The integer value. @see makeFunctionNamed:arguments:block: */ - (int)valueInt:(void *)value; /** Get long value of parameter in custom function. @param value The argument whose value to return. @return The long value. @see makeFunctionNamed:arguments:block: */ - (long long)valueLong:(void *)value; /** Get double value of parameter in custom function. @param value The argument whose value to return. @return The double value. @see makeFunctionNamed:arguments:block: */ - (double)valueDouble:(void *)value; /** Get `NSData` value of parameter in custom function. @param value The argument whose value to return. @return The data object. @see makeFunctionNamed:arguments:block: */ - (NSData * _Nullable)valueData:(void *)value; /** Get string value of parameter in custom function. @param value The argument whose value to return. @return The string value. @see makeFunctionNamed:arguments:block: */ - (NSString * _Nullable)valueString:(void *)value; /** Return null value from custom function. @param context The context to which the null value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultNullInContext:(void *)context NS_SWIFT_NAME(resultNull(context:)); /** Return integer value from custom function. @param value The integer value to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultInt:(int) value context:(void *)context; /** Return long value from custom function. @param value The long value to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultLong:(long long)value context:(void *)context; /** Return double value from custom function. @param value The double value to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultDouble:(double)value context:(void *)context; /** Return `NSData` object from custom function. @param data The `NSData` object to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultData:(NSData *)data context:(void *)context; /** Return string value from custom function. @param value The string value to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultString:(NSString *)value context:(void *)context; /** Return error string from custom function. @param error The error string to be returned. @param context The context to which the error will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultError:(NSString *)error context:(void *)context; /** Return error code from custom function. @param errorCode The integer error code to be returned. @param context The context to which the error will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultErrorCode:(int)errorCode context:(void *)context; /** Report memory error in custom function. @param context The context to which the error will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultErrorNoMemoryInContext:(void *)context NS_SWIFT_NAME(resultErrorNoMemory(context:)); /** Report that string or BLOB is too long to represent in custom function. @param context The context to which the error will be returned. @see makeFunctionNamed:arguments:block: */ - (void)resultErrorTooBigInContext:(void *)context NS_SWIFT_NAME(resultErrorTooBig(context:)); ///--------------------- /// @name Date formatter ///--------------------- /** Generate an `NSDateFormatter` that won't be broken by permutations of timezones or locales. Use this method to generate values to set the dateFormat property. Example: myDB.dateFormat = [FMDatabase storeableDateFormat:@"yyyy-MM-dd HH:mm:ss"]; @param format A valid NSDateFormatter format string. @return A `NSDateFormatter` that can be used for converting dates to strings and vice versa. @see hasDateFormatter @see setDateFormat: @see dateFromString: @see stringFromDate: @see storeableDateFormat: @warning Note that `NSDateFormatter` is not thread-safe, so the formatter generated by this method should be assigned to only one FMDB instance and should not be used for other purposes. */ + (NSDateFormatter *)storeableDateFormat:(NSString *)format; /** Test whether the database has a date formatter assigned. @return `YES` if there is a date formatter; `NO` if not. @see hasDateFormatter @see setDateFormat: @see dateFromString: @see stringFromDate: @see storeableDateFormat: */ - (BOOL)hasDateFormatter; /** Set to a date formatter to use string dates with sqlite instead of the default UNIX timestamps. @param format Set to nil to use UNIX timestamps. Defaults to nil. Should be set using a formatter generated using FMDatabase::storeableDateFormat. @see hasDateFormatter @see setDateFormat: @see dateFromString: @see stringFromDate: @see storeableDateFormat: @warning Note there is no direct getter for the `NSDateFormatter`, and you should not use the formatter you pass to FMDB for other purposes, as `NSDateFormatter` is not thread-safe. */ - (void)setDateFormat:(NSDateFormatter * _Nullable)format; /** Convert the supplied NSString to NSDate, using the current database formatter. @param s `NSString` to convert to `NSDate`. @return The `NSDate` object; or `nil` if no formatter is set. @see hasDateFormatter @see setDateFormat: @see dateFromString: @see stringFromDate: @see storeableDateFormat: */ - (NSDate * _Nullable)dateFromString:(NSString *)s; /** Convert the supplied NSDate to NSString, using the current database formatter. @param date `NSDate` of date to convert to `NSString`. @return The `NSString` representation of the date; `nil` if no formatter is set. @see hasDateFormatter @see setDateFormat: @see dateFromString: @see stringFromDate: @see storeableDateFormat: */ - (NSString * _Nullable)stringFromDate:(NSDate *)date; @end /** Objective-C wrapper for `sqlite3_stmt` This is a wrapper for a SQLite `sqlite3_stmt`. Generally when using FMDB you will not need to interact directly with `FMStatement`, but rather with `` and `` only. ### See also - `` - `` - [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) */ @interface FMStatement : NSObject { void *_statement; NSString *_query; long _useCount; BOOL _inUse; } ///----------------- /// @name Properties ///----------------- /** Usage count */ @property (atomic, assign) long useCount; /** SQL statement */ @property (atomic, retain) NSString *query; /** SQLite sqlite3_stmt @see [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) */ @property (atomic, assign) void *statement; /** Indication of whether the statement is in use */ @property (atomic, assign) BOOL inUse; ///---------------------------- /// @name Closing and Resetting ///---------------------------- /** Close statement */ - (void)close; /** Reset statement */ - (void)reset; @end #pragma clang diagnostic pop NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabase.m ================================================ #import "FMDatabase.h" #import #import #if FMDB_SQLITE_STANDALONE #import #else #import #endif @interface FMDatabase () { void* _db; BOOL _isExecutingStatement; NSTimeInterval _startBusyRetryTime; NSMutableSet *_openResultSets; NSMutableSet *_openFunctions; NSDateFormatter *_dateFormat; } NS_ASSUME_NONNULL_BEGIN - (FMResultSet * _Nullable)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; - (BOOL)executeUpdate:(NSString *)sql error:(NSError * _Nullable *)outErr withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; NS_ASSUME_NONNULL_END @end @implementation FMDatabase // Because these two properties have all of their accessor methods implemented, // we have to synthesize them to get the corresponding ivars. The rest of the // properties have their ivars synthesized automatically for us. @synthesize shouldCacheStatements = _shouldCacheStatements; @synthesize maxBusyRetryTimeInterval = _maxBusyRetryTimeInterval; #pragma mark FMDatabase instantiation and deallocation + (instancetype)databaseWithPath:(NSString *)aPath { return FMDBReturnAutoreleased([[self alloc] initWithPath:aPath]); } + (instancetype)databaseWithURL:(NSURL *)url { return FMDBReturnAutoreleased([[self alloc] initWithURL:url]); } - (instancetype)init { return [self initWithPath:nil]; } - (instancetype)initWithURL:(NSURL *)url { return [self initWithPath:url.path]; } - (instancetype)initWithPath:(NSString *)path { assert(sqlite3_threadsafe()); // whoa there big boy- gotta make sure sqlite it happy with what we're going to do. self = [super init]; if (self) { _databasePath = [path copy]; _openResultSets = [[NSMutableSet alloc] init]; _db = nil; _logsErrors = YES; _crashOnErrors = NO; _maxBusyRetryTimeInterval = 2; _isOpen = NO; } return self; } #if ! __has_feature(objc_arc) - (void)finalize { [self close]; [super finalize]; } #endif - (void)dealloc { [self close]; FMDBRelease(_openResultSets); FMDBRelease(_cachedStatements); FMDBRelease(_dateFormat); FMDBRelease(_databasePath); FMDBRelease(_openFunctions); #if ! __has_feature(objc_arc) [super dealloc]; #endif } - (NSURL *)databaseURL { return _databasePath ? [NSURL fileURLWithPath:_databasePath] : nil; } + (NSString*)FMDBUserVersion { return @"2.7.5"; } // returns 0x0240 for version 2.4. This makes it super easy to do things like: // /* need to make sure to do X with FMDB version 2.4 or later */ // if ([FMDatabase FMDBVersion] >= 0x0240) { … } + (SInt32)FMDBVersion { // we go through these hoops so that we only have to change the version number in a single spot. static dispatch_once_t once; static SInt32 FMDBVersionVal = 0; dispatch_once(&once, ^{ NSString *prodVersion = [self FMDBUserVersion]; if ([[prodVersion componentsSeparatedByString:@"."] count] < 3) { prodVersion = [prodVersion stringByAppendingString:@".0"]; } NSString *junk = [prodVersion stringByReplacingOccurrencesOfString:@"." withString:@""]; char *e = nil; FMDBVersionVal = (int) strtoul([junk UTF8String], &e, 16); }); return FMDBVersionVal; } #pragma mark SQLite information + (NSString*)sqliteLibVersion { return [NSString stringWithFormat:@"%s", sqlite3_libversion()]; } + (BOOL)isSQLiteThreadSafe { // make sure to read the sqlite headers on this guy! return sqlite3_threadsafe() != 0; } - (void*)sqliteHandle { return _db; } - (const char*)sqlitePath { if (!_databasePath) { return ":memory:"; } if ([_databasePath length] == 0) { return ""; // this creates a temporary database (it's an sqlite thing). } return [_databasePath fileSystemRepresentation]; } #pragma mark Open and close database - (BOOL)open { if (_isOpen) { return YES; } // if we previously tried to open and it failed, make sure to close it before we try again if (_db) { [self close]; } // now open database int err = sqlite3_open([self sqlitePath], (sqlite3**)&_db ); if(err != SQLITE_OK) { NSLog(@"error opening!: %d", err); return NO; } if (_maxBusyRetryTimeInterval > 0.0) { // set the handler [self setMaxBusyRetryTimeInterval:_maxBusyRetryTimeInterval]; } _isOpen = YES; return YES; } - (BOOL)openWithFlags:(int)flags { return [self openWithFlags:flags vfs:nil]; } - (BOOL)openWithFlags:(int)flags vfs:(NSString *)vfsName { #if SQLITE_VERSION_NUMBER >= 3005000 if (_isOpen) { return YES; } // if we previously tried to open and it failed, make sure to close it before we try again if (_db) { [self close]; } // now open database int err = sqlite3_open_v2([self sqlitePath], (sqlite3**)&_db, flags, [vfsName UTF8String]); if(err != SQLITE_OK) { NSLog(@"error opening!: %d", err); return NO; } if (_maxBusyRetryTimeInterval > 0.0) { // set the handler [self setMaxBusyRetryTimeInterval:_maxBusyRetryTimeInterval]; } _isOpen = YES; return YES; #else NSLog(@"openWithFlags requires SQLite 3.5"); return NO; #endif } - (BOOL)close { [self clearCachedStatements]; [self closeOpenResultSets]; if (!_db) { return YES; } int rc; BOOL retry; BOOL triedFinalizingOpenStatements = NO; do { retry = NO; rc = sqlite3_close(_db); if (SQLITE_BUSY == rc || SQLITE_LOCKED == rc) { if (!triedFinalizingOpenStatements) { triedFinalizingOpenStatements = YES; sqlite3_stmt *pStmt; while ((pStmt = sqlite3_next_stmt(_db, nil)) !=0) { NSLog(@"Closing leaked statement"); sqlite3_finalize(pStmt); retry = YES; } } } else if (SQLITE_OK != rc) { NSLog(@"error closing!: %d", rc); } } while (retry); _db = nil; _isOpen = false; return YES; } #pragma mark Busy handler routines // NOTE: appledoc seems to choke on this function for some reason; // so when generating documentation, you might want to ignore the // .m files so that it only documents the public interfaces outlined // in the .h files. // // This is a known appledoc bug that it has problems with C functions // within a class implementation, but for some reason, only this // C function causes problems; the rest don't. Anyway, ignoring the .m // files with appledoc will prevent this problem from occurring. static int FMDBDatabaseBusyHandler(void *f, int count) { FMDatabase *self = (__bridge FMDatabase*)f; if (count == 0) { self->_startBusyRetryTime = [NSDate timeIntervalSinceReferenceDate]; return 1; } NSTimeInterval delta = [NSDate timeIntervalSinceReferenceDate] - (self->_startBusyRetryTime); if (delta < [self maxBusyRetryTimeInterval]) { int requestedSleepInMillseconds = (int) arc4random_uniform(50) + 50; int actualSleepInMilliseconds = sqlite3_sleep(requestedSleepInMillseconds); if (actualSleepInMilliseconds != requestedSleepInMillseconds) { NSLog(@"WARNING: Requested sleep of %i milliseconds, but SQLite returned %i. Maybe SQLite wasn't built with HAVE_USLEEP=1?", requestedSleepInMillseconds, actualSleepInMilliseconds); } return 1; } return 0; } - (void)setMaxBusyRetryTimeInterval:(NSTimeInterval)timeout { _maxBusyRetryTimeInterval = timeout; if (!_db) { return; } if (timeout > 0) { sqlite3_busy_handler(_db, &FMDBDatabaseBusyHandler, (__bridge void *)(self)); } else { // turn it off otherwise sqlite3_busy_handler(_db, nil, nil); } } - (NSTimeInterval)maxBusyRetryTimeInterval { return _maxBusyRetryTimeInterval; } // we no longer make busyRetryTimeout public // but for folks who don't bother noticing that the interface to FMDatabase changed, // we'll still implement the method so they don't get suprise crashes - (int)busyRetryTimeout { NSLog(@"%s:%d", __FUNCTION__, __LINE__); NSLog(@"FMDB: busyRetryTimeout no longer works, please use maxBusyRetryTimeInterval"); return -1; } - (void)setBusyRetryTimeout:(int)i { #pragma unused(i) NSLog(@"%s:%d", __FUNCTION__, __LINE__); NSLog(@"FMDB: setBusyRetryTimeout does nothing, please use setMaxBusyRetryTimeInterval:"); } #pragma mark Result set functions - (BOOL)hasOpenResultSets { return [_openResultSets count] > 0; } - (void)closeOpenResultSets { //Copy the set so we don't get mutation errors NSSet *openSetCopy = FMDBReturnAutoreleased([_openResultSets copy]); for (NSValue *rsInWrappedInATastyValueMeal in openSetCopy) { FMResultSet *rs = (FMResultSet *)[rsInWrappedInATastyValueMeal pointerValue]; [rs setParentDB:nil]; [rs close]; [_openResultSets removeObject:rsInWrappedInATastyValueMeal]; } } - (void)resultSetDidClose:(FMResultSet *)resultSet { NSValue *setValue = [NSValue valueWithNonretainedObject:resultSet]; [_openResultSets removeObject:setValue]; } #pragma mark Cached statements - (void)clearCachedStatements { for (NSMutableSet *statements in [_cachedStatements objectEnumerator]) { for (FMStatement *statement in [statements allObjects]) { [statement close]; } } [_cachedStatements removeAllObjects]; } - (FMStatement*)cachedStatementForQuery:(NSString*)query { NSMutableSet* statements = [_cachedStatements objectForKey:query]; return [[statements objectsPassingTest:^BOOL(FMStatement* statement, BOOL *stop) { *stop = ![statement inUse]; return *stop; }] anyObject]; } - (void)setCachedStatement:(FMStatement*)statement forQuery:(NSString*)query { NSParameterAssert(query); if (!query) { NSLog(@"API misuse, -[FMDatabase setCachedStatement:forQuery:] query must not be nil"); return; } query = [query copy]; // in case we got handed in a mutable string... [statement setQuery:query]; NSMutableSet* statements = [_cachedStatements objectForKey:query]; if (!statements) { statements = [NSMutableSet set]; } [statements addObject:statement]; [_cachedStatements setObject:statements forKey:query]; FMDBRelease(query); } #pragma mark Key routines - (BOOL)rekey:(NSString*)key { NSData *keyData = [NSData dataWithBytes:(void *)[key UTF8String] length:(NSUInteger)strlen([key UTF8String])]; return [self rekeyWithData:keyData]; } - (BOOL)rekeyWithData:(NSData *)keyData { #ifdef SQLITE_HAS_CODEC if (!keyData) { return NO; } int rc = sqlite3_rekey(_db, [keyData bytes], (int)[keyData length]); if (rc != SQLITE_OK) { NSLog(@"error on rekey: %d", rc); NSLog(@"%@", [self lastErrorMessage]); } return (rc == SQLITE_OK); #else #pragma unused(keyData) return NO; #endif } - (BOOL)setKey:(NSString*)key { NSData *keyData = [NSData dataWithBytes:[key UTF8String] length:(NSUInteger)strlen([key UTF8String])]; return [self setKeyWithData:keyData]; } - (BOOL)setKeyWithData:(NSData *)keyData { #ifdef SQLITE_HAS_CODEC if (!keyData) { return NO; } int rc = sqlite3_key(_db, [keyData bytes], (int)[keyData length]); return (rc == SQLITE_OK); #else #pragma unused(keyData) return NO; #endif } #pragma mark Date routines + (NSDateFormatter *)storeableDateFormat:(NSString *)format { NSDateFormatter *result = FMDBReturnAutoreleased([[NSDateFormatter alloc] init]); result.dateFormat = format; result.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; result.locale = FMDBReturnAutoreleased([[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]); return result; } - (BOOL)hasDateFormatter { return _dateFormat != nil; } - (void)setDateFormat:(NSDateFormatter *)format { FMDBAutorelease(_dateFormat); _dateFormat = FMDBReturnRetained(format); } - (NSDate *)dateFromString:(NSString *)s { return [_dateFormat dateFromString:s]; } - (NSString *)stringFromDate:(NSDate *)date { return [_dateFormat stringFromDate:date]; } #pragma mark State of database - (BOOL)goodConnection { if (!_isOpen) { return NO; } FMResultSet *rs = [self executeQuery:@"select name from sqlite_master where type='table'"]; if (rs) { [rs close]; return YES; } return NO; } - (void)warnInUse { NSLog(@"The FMDatabase %@ is currently in use.", self); #ifndef NS_BLOCK_ASSERTIONS if (_crashOnErrors) { NSAssert(false, @"The FMDatabase %@ is currently in use.", self); abort(); } #endif } - (BOOL)databaseExists { if (!_isOpen) { NSLog(@"The FMDatabase %@ is not open.", self); #ifndef NS_BLOCK_ASSERTIONS if (_crashOnErrors) { NSAssert(false, @"The FMDatabase %@ is not open.", self); abort(); } #endif return NO; } return YES; } #pragma mark Error routines - (NSString *)lastErrorMessage { return [NSString stringWithUTF8String:sqlite3_errmsg(_db)]; } - (BOOL)hadError { int lastErrCode = [self lastErrorCode]; return (lastErrCode > SQLITE_OK && lastErrCode < SQLITE_ROW); } - (int)lastErrorCode { return sqlite3_errcode(_db); } - (int)lastExtendedErrorCode { return sqlite3_extended_errcode(_db); } - (NSError*)errorWithMessage:(NSString *)message { NSDictionary* errorMessage = [NSDictionary dictionaryWithObject:message forKey:NSLocalizedDescriptionKey]; return [NSError errorWithDomain:@"FMDatabase" code:sqlite3_errcode(_db) userInfo:errorMessage]; } - (NSError*)lastError { return [self errorWithMessage:[self lastErrorMessage]]; } #pragma mark Update information routines - (sqlite_int64)lastInsertRowId { if (_isExecutingStatement) { [self warnInUse]; return NO; } _isExecutingStatement = YES; sqlite_int64 ret = sqlite3_last_insert_rowid(_db); _isExecutingStatement = NO; return ret; } - (int)changes { if (_isExecutingStatement) { [self warnInUse]; return 0; } _isExecutingStatement = YES; int ret = sqlite3_changes(_db); _isExecutingStatement = NO; return ret; } #pragma mark SQL manipulation - (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt { if ((!obj) || ((NSNull *)obj == [NSNull null])) { sqlite3_bind_null(pStmt, idx); } // FIXME - someday check the return codes on these binds. else if ([obj isKindOfClass:[NSData class]]) { const void *bytes = [obj bytes]; if (!bytes) { // it's an empty NSData object, aka [NSData data]. // Don't pass a NULL pointer, or sqlite will bind a SQL null instead of a blob. bytes = ""; } sqlite3_bind_blob(pStmt, idx, bytes, (int)[obj length], SQLITE_STATIC); } else if ([obj isKindOfClass:[NSDate class]]) { if (self.hasDateFormatter) sqlite3_bind_text(pStmt, idx, [[self stringFromDate:obj] UTF8String], -1, SQLITE_STATIC); else sqlite3_bind_double(pStmt, idx, [obj timeIntervalSince1970]); } else if ([obj isKindOfClass:[NSNumber class]]) { if (strcmp([obj objCType], @encode(char)) == 0) { sqlite3_bind_int(pStmt, idx, [obj charValue]); } else if (strcmp([obj objCType], @encode(unsigned char)) == 0) { sqlite3_bind_int(pStmt, idx, [obj unsignedCharValue]); } else if (strcmp([obj objCType], @encode(short)) == 0) { sqlite3_bind_int(pStmt, idx, [obj shortValue]); } else if (strcmp([obj objCType], @encode(unsigned short)) == 0) { sqlite3_bind_int(pStmt, idx, [obj unsignedShortValue]); } else if (strcmp([obj objCType], @encode(int)) == 0) { sqlite3_bind_int(pStmt, idx, [obj intValue]); } else if (strcmp([obj objCType], @encode(unsigned int)) == 0) { sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedIntValue]); } else if (strcmp([obj objCType], @encode(long)) == 0) { sqlite3_bind_int64(pStmt, idx, [obj longValue]); } else if (strcmp([obj objCType], @encode(unsigned long)) == 0) { sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongValue]); } else if (strcmp([obj objCType], @encode(long long)) == 0) { sqlite3_bind_int64(pStmt, idx, [obj longLongValue]); } else if (strcmp([obj objCType], @encode(unsigned long long)) == 0) { sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongLongValue]); } else if (strcmp([obj objCType], @encode(float)) == 0) { sqlite3_bind_double(pStmt, idx, [obj floatValue]); } else if (strcmp([obj objCType], @encode(double)) == 0) { sqlite3_bind_double(pStmt, idx, [obj doubleValue]); } else if (strcmp([obj objCType], @encode(BOOL)) == 0) { sqlite3_bind_int(pStmt, idx, ([obj boolValue] ? 1 : 0)); } else { sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); } } else { sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); } } - (void)extractSQL:(NSString *)sql argumentsList:(va_list)args intoString:(NSMutableString *)cleanedSQL arguments:(NSMutableArray *)arguments { NSUInteger length = [sql length]; unichar last = '\0'; for (NSUInteger i = 0; i < length; ++i) { id arg = nil; unichar current = [sql characterAtIndex:i]; unichar add = current; if (last == '%') { switch (current) { case '@': arg = va_arg(args, id); break; case 'c': // warning: second argument to 'va_arg' is of promotable type 'char'; this va_arg has undefined behavior because arguments will be promoted to 'int' arg = [NSString stringWithFormat:@"%c", va_arg(args, int)]; break; case 's': arg = [NSString stringWithUTF8String:va_arg(args, char*)]; break; case 'd': case 'D': case 'i': arg = [NSNumber numberWithInt:va_arg(args, int)]; break; case 'u': case 'U': arg = [NSNumber numberWithUnsignedInt:va_arg(args, unsigned int)]; break; case 'h': i++; if (i < length && [sql characterAtIndex:i] == 'i') { // warning: second argument to 'va_arg' is of promotable type 'short'; this va_arg has undefined behavior because arguments will be promoted to 'int' arg = [NSNumber numberWithShort:(short)(va_arg(args, int))]; } else if (i < length && [sql characterAtIndex:i] == 'u') { // warning: second argument to 'va_arg' is of promotable type 'unsigned short'; this va_arg has undefined behavior because arguments will be promoted to 'int' arg = [NSNumber numberWithUnsignedShort:(unsigned short)(va_arg(args, uint))]; } else { i--; } break; case 'q': i++; if (i < length && [sql characterAtIndex:i] == 'i') { arg = [NSNumber numberWithLongLong:va_arg(args, long long)]; } else if (i < length && [sql characterAtIndex:i] == 'u') { arg = [NSNumber numberWithUnsignedLongLong:va_arg(args, unsigned long long)]; } else { i--; } break; case 'f': arg = [NSNumber numberWithDouble:va_arg(args, double)]; break; case 'g': // warning: second argument to 'va_arg' is of promotable type 'float'; this va_arg has undefined behavior because arguments will be promoted to 'double' arg = [NSNumber numberWithFloat:(float)(va_arg(args, double))]; break; case 'l': i++; if (i < length) { unichar next = [sql characterAtIndex:i]; if (next == 'l') { i++; if (i < length && [sql characterAtIndex:i] == 'd') { //%lld arg = [NSNumber numberWithLongLong:va_arg(args, long long)]; } else if (i < length && [sql characterAtIndex:i] == 'u') { //%llu arg = [NSNumber numberWithUnsignedLongLong:va_arg(args, unsigned long long)]; } else { i--; } } else if (next == 'd') { //%ld arg = [NSNumber numberWithLong:va_arg(args, long)]; } else if (next == 'u') { //%lu arg = [NSNumber numberWithUnsignedLong:va_arg(args, unsigned long)]; } else { i--; } } else { i--; } break; default: // something else that we can't interpret. just pass it on through like normal break; } } else if (current == '%') { // percent sign; skip this character add = '\0'; } if (arg != nil) { [cleanedSQL appendString:@"?"]; [arguments addObject:arg]; } else if (add == (unichar)'@' && last == (unichar) '%') { [cleanedSQL appendFormat:@"NULL"]; } else if (add != '\0') { [cleanedSQL appendFormat:@"%C", add]; } last = current; } } #pragma mark Execute queries - (FMResultSet *)executeQuery:(NSString *)sql withParameterDictionary:(NSDictionary *)arguments { return [self executeQuery:sql withArgumentsInArray:nil orDictionary:arguments orVAList:nil]; } - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { if (![self databaseExists]) { return 0x00; } if (_isExecutingStatement) { [self warnInUse]; return 0x00; } _isExecutingStatement = YES; int rc = 0x00; sqlite3_stmt *pStmt = 0x00; FMStatement *statement = 0x00; FMResultSet *rs = 0x00; if (_traceExecution && sql) { NSLog(@"%@ executeQuery: %@", self, sql); } if (_shouldCacheStatements) { statement = [self cachedStatementForQuery:sql]; pStmt = statement ? [statement statement] : 0x00; [statement reset]; } if (!pStmt) { rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); if (SQLITE_OK != rc) { if (_logsErrors) { NSLog(@"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); NSLog(@"DB Query: %@", sql); NSLog(@"DB Path: %@", _databasePath); } if (_crashOnErrors) { NSAssert(false, @"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); abort(); } sqlite3_finalize(pStmt); _isExecutingStatement = NO; return nil; } } id obj; int idx = 0; int queryCount = sqlite3_bind_parameter_count(pStmt); // pointed out by Dominic Yu (thanks!) // If dictionaryArgs is passed in, that means we are using sqlite's named parameter support if (dictionaryArgs) { for (NSString *dictionaryKey in [dictionaryArgs allKeys]) { // Prefix the key with a colon. NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey]; if (_traceExecution) { NSLog(@"%@ = %@", parameterName, [dictionaryArgs objectForKey:dictionaryKey]); } // Get the index for the parameter name. int namedIdx = sqlite3_bind_parameter_index(pStmt, [parameterName UTF8String]); FMDBRelease(parameterName); if (namedIdx > 0) { // Standard binding from here. [self bindObject:[dictionaryArgs objectForKey:dictionaryKey] toColumn:namedIdx inStatement:pStmt]; // increment the binding count, so our check below works out idx++; } else { NSLog(@"Could not find index for %@", dictionaryKey); } } } else { while (idx < queryCount) { if (arrayArgs && idx < (int)[arrayArgs count]) { obj = [arrayArgs objectAtIndex:(NSUInteger)idx]; } else if (args) { obj = va_arg(args, id); } else { //We ran out of arguments break; } if (_traceExecution) { if ([obj isKindOfClass:[NSData class]]) { NSLog(@"data: %ld bytes", (unsigned long)[(NSData*)obj length]); } else { NSLog(@"obj: %@", obj); } } idx++; [self bindObject:obj toColumn:idx inStatement:pStmt]; } } if (idx != queryCount) { NSLog(@"Error: the bind count is not correct for the # of variables (executeQuery)"); sqlite3_finalize(pStmt); _isExecutingStatement = NO; return nil; } FMDBRetain(statement); // to balance the release below if (!statement) { statement = [[FMStatement alloc] init]; [statement setStatement:pStmt]; if (_shouldCacheStatements && sql) { [self setCachedStatement:statement forQuery:sql]; } } // the statement gets closed in rs's dealloc or [rs close]; rs = [FMResultSet resultSetWithStatement:statement usingParentDatabase:self]; [rs setQuery:sql]; NSValue *openResultSet = [NSValue valueWithNonretainedObject:rs]; [_openResultSets addObject:openResultSet]; [statement setUseCount:[statement useCount] + 1]; FMDBRelease(statement); _isExecutingStatement = NO; return rs; } - (FMResultSet *)executeQuery:(NSString*)sql, ... { va_list args; va_start(args, sql); id result = [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args]; va_end(args); return result; } - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... { va_list args; va_start(args, format); NSMutableString *sql = [NSMutableString stringWithCapacity:[format length]]; NSMutableArray *arguments = [NSMutableArray array]; [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; va_end(args); return [self executeQuery:sql withArgumentsInArray:arguments]; } - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments { return [self executeQuery:sql withArgumentsInArray:arguments orDictionary:nil orVAList:nil]; } - (FMResultSet *)executeQuery:(NSString *)sql values:(NSArray *)values error:(NSError * __autoreleasing *)error { FMResultSet *rs = [self executeQuery:sql withArgumentsInArray:values orDictionary:nil orVAList:nil]; if (!rs && error) { *error = [self lastError]; } return rs; } - (FMResultSet *)executeQuery:(NSString*)sql withVAList:(va_list)args { return [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args]; } #pragma mark Execute updates - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { if (![self databaseExists]) { return NO; } if (_isExecutingStatement) { [self warnInUse]; return NO; } _isExecutingStatement = YES; int rc = 0x00; sqlite3_stmt *pStmt = 0x00; FMStatement *cachedStmt = 0x00; if (_traceExecution && sql) { NSLog(@"%@ executeUpdate: %@", self, sql); } if (_shouldCacheStatements) { cachedStmt = [self cachedStatementForQuery:sql]; pStmt = cachedStmt ? [cachedStmt statement] : 0x00; [cachedStmt reset]; } if (!pStmt) { rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); if (SQLITE_OK != rc) { if (_logsErrors) { NSLog(@"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); NSLog(@"DB Query: %@", sql); NSLog(@"DB Path: %@", _databasePath); } if (_crashOnErrors) { NSAssert(false, @"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); abort(); } if (outErr) { *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; } sqlite3_finalize(pStmt); _isExecutingStatement = NO; return NO; } } id obj; int idx = 0; int queryCount = sqlite3_bind_parameter_count(pStmt); // If dictionaryArgs is passed in, that means we are using sqlite's named parameter support if (dictionaryArgs) { for (NSString *dictionaryKey in [dictionaryArgs allKeys]) { // Prefix the key with a colon. NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey]; if (_traceExecution) { NSLog(@"%@ = %@", parameterName, [dictionaryArgs objectForKey:dictionaryKey]); } // Get the index for the parameter name. int namedIdx = sqlite3_bind_parameter_index(pStmt, [parameterName UTF8String]); FMDBRelease(parameterName); if (namedIdx > 0) { // Standard binding from here. [self bindObject:[dictionaryArgs objectForKey:dictionaryKey] toColumn:namedIdx inStatement:pStmt]; // increment the binding count, so our check below works out idx++; } else { NSString *message = [NSString stringWithFormat:@"Could not find index for %@", dictionaryKey]; if (_logsErrors) { NSLog(@"%@", message); } if (outErr) { *outErr = [self errorWithMessage:message]; } } } } else { while (idx < queryCount) { if (arrayArgs && idx < (int)[arrayArgs count]) { obj = [arrayArgs objectAtIndex:(NSUInteger)idx]; } else if (args) { obj = va_arg(args, id); } else { //We ran out of arguments break; } if (_traceExecution) { if ([obj isKindOfClass:[NSData class]]) { NSLog(@"data: %ld bytes", (unsigned long)[(NSData*)obj length]); } else { NSLog(@"obj: %@", obj); } } idx++; [self bindObject:obj toColumn:idx inStatement:pStmt]; } } if (idx != queryCount) { NSString *message = [NSString stringWithFormat:@"Error: the bind count (%d) is not correct for the # of variables in the query (%d) (%@) (executeUpdate)", idx, queryCount, sql]; if (_logsErrors) { NSLog(@"%@", message); } if (outErr) { *outErr = [self errorWithMessage:message]; } sqlite3_finalize(pStmt); _isExecutingStatement = NO; return NO; } /* Call sqlite3_step() to run the virtual machine. Since the SQL being ** executed is not a SELECT statement, we assume no data will be returned. */ rc = sqlite3_step(pStmt); if (SQLITE_DONE == rc) { // all is well, let's return. } else if (SQLITE_INTERRUPT == rc) { if (_logsErrors) { NSLog(@"Error calling sqlite3_step. Query was interrupted (%d: %s) SQLITE_INTERRUPT", rc, sqlite3_errmsg(_db)); NSLog(@"DB Query: %@", sql); } } else if (rc == SQLITE_ROW) { NSString *message = [NSString stringWithFormat:@"A executeUpdate is being called with a query string '%@'", sql]; if (_logsErrors) { NSLog(@"%@", message); NSLog(@"DB Query: %@", sql); } if (outErr) { *outErr = [self errorWithMessage:message]; } } else { if (outErr) { *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; } if (SQLITE_ERROR == rc) { if (_logsErrors) { NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_ERROR", rc, sqlite3_errmsg(_db)); NSLog(@"DB Query: %@", sql); } } else if (SQLITE_MISUSE == rc) { // uh oh. if (_logsErrors) { NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_MISUSE", rc, sqlite3_errmsg(_db)); NSLog(@"DB Query: %@", sql); } } else { // wtf? if (_logsErrors) { NSLog(@"Unknown error calling sqlite3_step (%d: %s) eu", rc, sqlite3_errmsg(_db)); NSLog(@"DB Query: %@", sql); } } } if (_shouldCacheStatements && !cachedStmt) { cachedStmt = [[FMStatement alloc] init]; [cachedStmt setStatement:pStmt]; [self setCachedStatement:cachedStmt forQuery:sql]; FMDBRelease(cachedStmt); } int closeErrorCode; if (cachedStmt) { [cachedStmt setUseCount:[cachedStmt useCount] + 1]; closeErrorCode = sqlite3_reset(pStmt); } else { /* Finalize the virtual machine. This releases all memory and other ** resources allocated by the sqlite3_prepare() call above. */ closeErrorCode = sqlite3_finalize(pStmt); } if (closeErrorCode != SQLITE_OK) { if (_logsErrors) { NSLog(@"Unknown error finalizing or resetting statement (%d: %s)", closeErrorCode, sqlite3_errmsg(_db)); NSLog(@"DB Query: %@", sql); } } _isExecutingStatement = NO; return (rc == SQLITE_DONE || rc == SQLITE_OK); } - (BOOL)executeUpdate:(NSString*)sql, ... { va_list args; va_start(args, sql); BOOL result = [self executeUpdate:sql error:nil withArgumentsInArray:nil orDictionary:nil orVAList:args]; va_end(args); return result; } - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments { return [self executeUpdate:sql error:nil withArgumentsInArray:arguments orDictionary:nil orVAList:nil]; } - (BOOL)executeUpdate:(NSString*)sql values:(NSArray *)values error:(NSError * __autoreleasing *)error { return [self executeUpdate:sql error:error withArgumentsInArray:values orDictionary:nil orVAList:nil]; } - (BOOL)executeUpdate:(NSString*)sql withParameterDictionary:(NSDictionary *)arguments { return [self executeUpdate:sql error:nil withArgumentsInArray:nil orDictionary:arguments orVAList:nil]; } - (BOOL)executeUpdate:(NSString*)sql withVAList:(va_list)args { return [self executeUpdate:sql error:nil withArgumentsInArray:nil orDictionary:nil orVAList:args]; } - (BOOL)executeUpdateWithFormat:(NSString*)format, ... { va_list args; va_start(args, format); NSMutableString *sql = [NSMutableString stringWithCapacity:[format length]]; NSMutableArray *arguments = [NSMutableArray array]; [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; va_end(args); return [self executeUpdate:sql withArgumentsInArray:arguments]; } int FMDBExecuteBulkSQLCallback(void *theBlockAsVoid, int columns, char **values, char **names); // shhh clang. int FMDBExecuteBulkSQLCallback(void *theBlockAsVoid, int columns, char **values, char **names) { if (!theBlockAsVoid) { return SQLITE_OK; } int (^execCallbackBlock)(NSDictionary *resultsDictionary) = (__bridge int (^)(NSDictionary *__strong))(theBlockAsVoid); NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:(NSUInteger)columns]; for (NSInteger i = 0; i < columns; i++) { NSString *key = [NSString stringWithUTF8String:names[i]]; id value = values[i] ? [NSString stringWithUTF8String:values[i]] : [NSNull null]; value = value ? value : [NSNull null]; [dictionary setObject:value forKey:key]; } return execCallbackBlock(dictionary); } - (BOOL)executeStatements:(NSString *)sql { return [self executeStatements:sql withResultBlock:nil]; } - (BOOL)executeStatements:(NSString *)sql withResultBlock:(__attribute__((noescape)) FMDBExecuteStatementsCallbackBlock)block { int rc; char *errmsg = nil; rc = sqlite3_exec([self sqliteHandle], [sql UTF8String], block ? FMDBExecuteBulkSQLCallback : nil, (__bridge void *)(block), &errmsg); if (errmsg && [self logsErrors]) { NSLog(@"Error inserting batch: %s", errmsg); sqlite3_free(errmsg); } return (rc == SQLITE_OK); } - (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... { va_list args; va_start(args, outErr); BOOL result = [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:args]; va_end(args); return result; } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" - (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... { va_list args; va_start(args, outErr); BOOL result = [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:args]; va_end(args); return result; } #pragma clang diagnostic pop #pragma mark Transactions - (BOOL)rollback { BOOL b = [self executeUpdate:@"rollback transaction"]; if (b) { _isInTransaction = NO; } return b; } - (BOOL)commit { BOOL b = [self executeUpdate:@"commit transaction"]; if (b) { _isInTransaction = NO; } return b; } - (BOOL)beginTransaction { BOOL b = [self executeUpdate:@"begin exclusive transaction"]; if (b) { _isInTransaction = YES; } return b; } - (BOOL)beginDeferredTransaction { BOOL b = [self executeUpdate:@"begin deferred transaction"]; if (b) { _isInTransaction = YES; } return b; } - (BOOL)beginImmediateTransaction { BOOL b = [self executeUpdate:@"begin immediate transaction"]; if (b) { _isInTransaction = YES; } return b; } - (BOOL)beginExclusiveTransaction { BOOL b = [self executeUpdate:@"begin exclusive transaction"]; if (b) { _isInTransaction = YES; } return b; } - (BOOL)inTransaction { return _isInTransaction; } - (BOOL)interrupt { if (_db) { sqlite3_interrupt([self sqliteHandle]); return YES; } return NO; } static NSString *FMDBEscapeSavePointName(NSString *savepointName) { return [savepointName stringByReplacingOccurrencesOfString:@"'" withString:@"''"]; } - (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); NSString *sql = [NSString stringWithFormat:@"savepoint '%@';", FMDBEscapeSavePointName(name)]; return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return NO; #endif } - (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); NSString *sql = [NSString stringWithFormat:@"release savepoint '%@';", FMDBEscapeSavePointName(name)]; return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return NO; #endif } - (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError**)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); NSString *sql = [NSString stringWithFormat:@"rollback transaction to savepoint '%@';", FMDBEscapeSavePointName(name)]; return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return NO; #endif } - (NSError*)inSavePoint:(__attribute__((noescape)) void (^)(BOOL *rollback))block { #if SQLITE_VERSION_NUMBER >= 3007000 static unsigned long savePointIdx = 0; NSString *name = [NSString stringWithFormat:@"dbSavePoint%ld", savePointIdx++]; BOOL shouldRollback = NO; NSError *err = 0x00; if (![self startSavePointWithName:name error:&err]) { return err; } if (block) { block(&shouldRollback); } if (shouldRollback) { // We need to rollback and release this savepoint to remove it [self rollbackToSavePointWithName:name error:&err]; } [self releaseSavePointWithName:name error:&err]; return err; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return [NSError errorWithDomain:@"FMDatabase" code:0 userInfo:@{NSLocalizedDescriptionKey : errorMessage}]; #endif } - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode error:(NSError * __autoreleasing *)error { return [self checkpoint:checkpointMode name:nil logFrameCount:NULL checkpointCount:NULL error:error]; } - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString *)name error:(NSError * __autoreleasing *)error { return [self checkpoint:checkpointMode name:name logFrameCount:NULL checkpointCount:NULL error:error]; } - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString *)name logFrameCount:(int *)logFrameCount checkpointCount:(int *)checkpointCount error:(NSError * __autoreleasing *)error { const char* dbName = [name UTF8String]; #if SQLITE_VERSION_NUMBER >= 3007006 int err = sqlite3_wal_checkpoint_v2(_db, dbName, checkpointMode, logFrameCount, checkpointCount); #else NSLog(@"sqlite3_wal_checkpoint_v2 unavailable before sqlite 3.7.6. Ignoring checkpoint mode: %d", mode); int err = sqlite3_wal_checkpoint(_db, dbName); #endif if(err != SQLITE_OK) { if (error) { *error = [self lastError]; } if (self.logsErrors) NSLog(@"%@", [self lastErrorMessage]); if (self.crashOnErrors) { NSAssert(false, @"%@", [self lastErrorMessage]); abort(); } return NO; } else { return YES; } } #pragma mark Cache statements - (BOOL)shouldCacheStatements { return _shouldCacheStatements; } - (void)setShouldCacheStatements:(BOOL)value { _shouldCacheStatements = value; if (_shouldCacheStatements && !_cachedStatements) { [self setCachedStatements:[NSMutableDictionary dictionary]]; } if (!_shouldCacheStatements) { [self setCachedStatements:nil]; } } #pragma mark Callback function void FMDBBlockSQLiteCallBackFunction(sqlite3_context *context, int argc, sqlite3_value **argv); // -Wmissing-prototypes void FMDBBlockSQLiteCallBackFunction(sqlite3_context *context, int argc, sqlite3_value **argv) { #if ! __has_feature(objc_arc) void (^block)(sqlite3_context *context, int argc, sqlite3_value **argv) = (id)sqlite3_user_data(context); #else void (^block)(sqlite3_context *context, int argc, sqlite3_value **argv) = (__bridge id)sqlite3_user_data(context); #endif if (block) { @autoreleasepool { block(context, argc, argv); } } } // deprecated because "arguments" parameter is not maximum argument count, but actual argument count. - (void)makeFunctionNamed:(NSString *)name maximumArguments:(int)arguments withBlock:(void (^)(void *context, int argc, void **argv))block { [self makeFunctionNamed:name arguments:arguments block:block]; } - (void)makeFunctionNamed:(NSString *)name arguments:(int)arguments block:(void (^)(void *context, int argc, void **argv))block { if (!_openFunctions) { _openFunctions = [NSMutableSet new]; } id b = FMDBReturnAutoreleased([block copy]); [_openFunctions addObject:b]; /* I tried adding custom functions to release the block when the connection is destroyed- but they seemed to never be called, so we use _openFunctions to store the values instead. */ #if ! __has_feature(objc_arc) sqlite3_create_function([self sqliteHandle], [name UTF8String], arguments, SQLITE_UTF8, (void*)b, &FMDBBlockSQLiteCallBackFunction, 0x00, 0x00); #else sqlite3_create_function([self sqliteHandle], [name UTF8String], arguments, SQLITE_UTF8, (__bridge void*)b, &FMDBBlockSQLiteCallBackFunction, 0x00, 0x00); #endif } - (SqliteValueType)valueType:(void *)value { return sqlite3_value_type(value); } - (int)valueInt:(void *)value { return sqlite3_value_int(value); } - (long long)valueLong:(void *)value { return sqlite3_value_int64(value); } - (double)valueDouble:(void *)value { return sqlite3_value_double(value); } - (NSData *)valueData:(void *)value { const void *bytes = sqlite3_value_blob(value); int length = sqlite3_value_bytes(value); return bytes ? [NSData dataWithBytes:bytes length:(NSUInteger)length] : nil; } - (NSString *)valueString:(void *)value { const char *cString = (const char *)sqlite3_value_text(value); return cString ? [NSString stringWithUTF8String:cString] : nil; } - (void)resultNullInContext:(void *)context { sqlite3_result_null(context); } - (void)resultInt:(int) value context:(void *)context { sqlite3_result_int(context, value); } - (void)resultLong:(long long)value context:(void *)context { sqlite3_result_int64(context, value); } - (void)resultDouble:(double)value context:(void *)context { sqlite3_result_double(context, value); } - (void)resultData:(NSData *)data context:(void *)context { sqlite3_result_blob(context, data.bytes, (int)data.length, SQLITE_TRANSIENT); } - (void)resultString:(NSString *)value context:(void *)context { sqlite3_result_text(context, [value UTF8String], -1, SQLITE_TRANSIENT); } - (void)resultError:(NSString *)error context:(void *)context { sqlite3_result_error(context, [error UTF8String], -1); } - (void)resultErrorCode:(int)errorCode context:(void *)context { sqlite3_result_error_code(context, errorCode); } - (void)resultErrorNoMemoryInContext:(void *)context { sqlite3_result_error_nomem(context); } - (void)resultErrorTooBigInContext:(void *)context { sqlite3_result_error_toobig(context); } @end @implementation FMStatement #if ! __has_feature(objc_arc) - (void)finalize { [self close]; [super finalize]; } #endif - (void)dealloc { [self close]; FMDBRelease(_query); #if ! __has_feature(objc_arc) [super dealloc]; #endif } - (void)close { if (_statement) { sqlite3_finalize(_statement); _statement = 0x00; } _inUse = NO; } - (void)reset { if (_statement) { sqlite3_reset(_statement); } _inUse = NO; } - (NSString*)description { return [NSString stringWithFormat:@"%@ %ld hit(s) for query %@", [super description], _useCount, _query]; } @end ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabaseAdditions.h ================================================ // // FMDatabaseAdditions.h // fmdb // // Created by August Mueller on 10/30/05. // Copyright 2005 Flying Meat Inc.. All rights reserved. // #import #import "FMDatabase.h" NS_ASSUME_NONNULL_BEGIN /** Category of additions for `` class. ### See also - `` */ @interface FMDatabase (FMDatabaseAdditions) ///---------------------------------------- /// @name Return results of SQL to variable ///---------------------------------------- /** Return `int` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `int` value. @note This is not available from Swift. */ - (int)intForQuery:(NSString*)query, ...; /** Return `long` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `long` value. @note This is not available from Swift. */ - (long)longForQuery:(NSString*)query, ...; /** Return `BOOL` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `BOOL` value. @note This is not available from Swift. */ - (BOOL)boolForQuery:(NSString*)query, ...; /** Return `double` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `double` value. @note This is not available from Swift. */ - (double)doubleForQuery:(NSString*)query, ...; /** Return `NSString` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `NSString` value. @note This is not available from Swift. */ - (NSString * _Nullable)stringForQuery:(NSString*)query, ...; /** Return `NSData` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `NSData` value. @note This is not available from Swift. */ - (NSData * _Nullable)dataForQuery:(NSString*)query, ...; /** Return `NSDate` value for query @param query The SQL query to be performed. @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. @return `NSDate` value. @note This is not available from Swift. */ - (NSDate * _Nullable)dateForQuery:(NSString*)query, ...; // Notice that there's no dataNoCopyForQuery:. // That would be a bad idea, because we close out the result set, and then what // happens to the data that we just didn't copy? Who knows, not I. ///-------------------------------- /// @name Schema related operations ///-------------------------------- /** Does table exist in database? @param tableName The name of the table being looked for. @return `YES` if table found; `NO` if not found. */ - (BOOL)tableExists:(NSString*)tableName; /** The schema of the database. This will be the schema for the entire database. For each entity, each row of the result set will include the following fields: - `type` - The type of entity (e.g. table, index, view, or trigger) - `name` - The name of the object - `tbl_name` - The name of the table to which the object references - `rootpage` - The page number of the root b-tree page for tables and indices - `sql` - The SQL that created the entity @return `FMResultSet` of schema; `nil` on error. @see [SQLite File Format](http://www.sqlite.org/fileformat.html) */ - (FMResultSet * _Nullable)getSchema; /** The schema of the database. This will be the schema for a particular table as report by SQLite `PRAGMA`, for example: PRAGMA table_info('employees') This will report: - `cid` - The column ID number - `name` - The name of the column - `type` - The data type specified for the column - `notnull` - whether the field is defined as NOT NULL (i.e. values required) - `dflt_value` - The default value for the column - `pk` - Whether the field is part of the primary key of the table @param tableName The name of the table for whom the schema will be returned. @return `FMResultSet` of schema; `nil` on error. @see [table_info](http://www.sqlite.org/pragma.html#pragma_table_info) */ - (FMResultSet * _Nullable)getTableSchema:(NSString*)tableName; /** Test to see if particular column exists for particular table in database @param columnName The name of the column. @param tableName The name of the table. @return `YES` if column exists in table in question; `NO` otherwise. */ - (BOOL)columnExists:(NSString*)columnName inTableWithName:(NSString*)tableName; /** Test to see if particular column exists for particular table in database @param columnName The name of the column. @param tableName The name of the table. @return `YES` if column exists in table in question; `NO` otherwise. @see columnExists:inTableWithName: @warning Deprecated - use `` instead. */ - (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName __deprecated_msg("Use columnExists:inTableWithName: instead"); /** Validate SQL statement This validates SQL statement by performing `sqlite3_prepare_v2`, but not returning the results, but instead immediately calling `sqlite3_finalize`. @param sql The SQL statement being validated. @param error This is a pointer to a `NSError` object that will receive the autoreleased `NSError` object if there was any error. If this is `nil`, no `NSError` result will be returned. @return `YES` if validation succeeded without incident; `NO` otherwise. */ - (BOOL)validateSQL:(NSString*)sql error:(NSError * _Nullable *)error; ///----------------------------------- /// @name Application identifier tasks ///----------------------------------- /** Retrieve application ID @return The `uint32_t` numeric value of the application ID. @see setApplicationID: */ @property (nonatomic) uint32_t applicationID; #if TARGET_OS_MAC && !TARGET_OS_IPHONE /** Retrieve application ID string @see setApplicationIDString: */ @property (nonatomic, retain) NSString *applicationIDString; #endif ///----------------------------------- /// @name user version identifier tasks ///----------------------------------- /** Retrieve user version @see setUserVersion: */ @property (nonatomic) uint32_t userVersion; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabaseAdditions.m ================================================ // // FMDatabaseAdditions.m // fmdb // // Created by August Mueller on 10/30/05. // Copyright 2005 Flying Meat Inc.. All rights reserved. // #import "FMDatabase.h" #import "FMDatabaseAdditions.h" #import "TargetConditionals.h" #if FMDB_SQLITE_STANDALONE #import #else #import #endif @interface FMDatabase (PrivateStuff) - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; @end @implementation FMDatabase (FMDatabaseAdditions) #define RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(type, sel) \ va_list args; \ va_start(args, query); \ FMResultSet *resultSet = [self executeQuery:query withArgumentsInArray:0x00 orDictionary:0x00 orVAList:args]; \ va_end(args); \ if (![resultSet next]) { return (type)0; } \ type ret = [resultSet sel:0]; \ [resultSet close]; \ [resultSet setParentDB:nil]; \ return ret; - (NSString *)stringForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(NSString *, stringForColumnIndex); } - (int)intForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(int, intForColumnIndex); } - (long)longForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(long, longForColumnIndex); } - (BOOL)boolForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(BOOL, boolForColumnIndex); } - (double)doubleForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(double, doubleForColumnIndex); } - (NSData*)dataForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(NSData *, dataForColumnIndex); } - (NSDate*)dateForQuery:(NSString*)query, ... { RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(NSDate *, dateForColumnIndex); } - (BOOL)tableExists:(NSString*)tableName { tableName = [tableName lowercaseString]; FMResultSet *rs = [self executeQuery:@"select [sql] from sqlite_master where [type] = 'table' and lower(name) = ?", tableName]; //if at least one next exists, table exists BOOL returnBool = [rs next]; //close and free object [rs close]; return returnBool; } /* get table with list of tables: result colums: type[STRING], name[STRING],tbl_name[STRING],rootpage[INTEGER],sql[STRING] check if table exist in database (patch from OZLB) */ - (FMResultSet * _Nullable)getSchema { //result colums: type[STRING], name[STRING],tbl_name[STRING],rootpage[INTEGER],sql[STRING] FMResultSet *rs = [self executeQuery:@"SELECT type, name, tbl_name, rootpage, sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE type != 'meta' AND name NOT LIKE 'sqlite_%' ORDER BY tbl_name, type DESC, name"]; return rs; } /* get table schema: result colums: cid[INTEGER], name,type [STRING], notnull[INTEGER], dflt_value[],pk[INTEGER] */ - (FMResultSet * _Nullable)getTableSchema:(NSString*)tableName { //result colums: cid[INTEGER], name,type [STRING], notnull[INTEGER], dflt_value[],pk[INTEGER] FMResultSet *rs = [self executeQuery:[NSString stringWithFormat: @"pragma table_info('%@')", tableName]]; return rs; } - (BOOL)columnExists:(NSString*)columnName inTableWithName:(NSString*)tableName { BOOL returnBool = NO; tableName = [tableName lowercaseString]; columnName = [columnName lowercaseString]; FMResultSet *rs = [self getTableSchema:tableName]; //check if column is present in table schema while ([rs next]) { if ([[[rs stringForColumn:@"name"] lowercaseString] isEqualToString:columnName]) { returnBool = YES; break; } } //If this is not done FMDatabase instance stays out of pool [rs close]; return returnBool; } - (uint32_t)applicationID { #if SQLITE_VERSION_NUMBER >= 3007017 uint32_t r = 0; FMResultSet *rs = [self executeQuery:@"pragma application_id"]; if ([rs next]) { r = (uint32_t)[rs longLongIntForColumnIndex:0]; } [rs close]; return r; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Application ID functions require SQLite 3.7.17", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return 0; #endif } - (void)setApplicationID:(uint32_t)appID { #if SQLITE_VERSION_NUMBER >= 3007017 NSString *query = [NSString stringWithFormat:@"pragma application_id=%d", appID]; FMResultSet *rs = [self executeQuery:query]; [rs next]; [rs close]; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Application ID functions require SQLite 3.7.17", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); #endif } #if TARGET_OS_MAC && !TARGET_OS_IPHONE - (NSString*)applicationIDString { #if SQLITE_VERSION_NUMBER >= 3007017 NSString *s = NSFileTypeForHFSTypeCode([self applicationID]); assert([s length] == 6); s = [s substringWithRange:NSMakeRange(1, 4)]; return s; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Application ID functions require SQLite 3.7.17", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return nil; #endif } - (void)setApplicationIDString:(NSString*)s { #if SQLITE_VERSION_NUMBER >= 3007017 if ([s length] != 4) { NSLog(@"setApplicationIDString: string passed is not exactly 4 chars long. (was %ld)", [s length]); } [self setApplicationID:NSHFSTypeCodeFromFileType([NSString stringWithFormat:@"'%@'", s])]; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Application ID functions require SQLite 3.7.17", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); #endif } #endif - (uint32_t)userVersion { uint32_t r = 0; FMResultSet *rs = [self executeQuery:@"pragma user_version"]; if ([rs next]) { r = (uint32_t)[rs longLongIntForColumnIndex:0]; } [rs close]; return r; } - (void)setUserVersion:(uint32_t)version { NSString *query = [NSString stringWithFormat:@"pragma user_version = %d", version]; FMResultSet *rs = [self executeQuery:query]; [rs next]; [rs close]; } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" - (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName __attribute__ ((deprecated)) { return [self columnExists:columnName inTableWithName:tableName]; } #pragma clang diagnostic pop - (BOOL)validateSQL:(NSString*)sql error:(NSError**)error { sqlite3_stmt *pStmt = NULL; BOOL validationSucceeded = YES; int rc = sqlite3_prepare_v2([self sqliteHandle], [sql UTF8String], -1, &pStmt, 0); if (rc != SQLITE_OK) { validationSucceeded = NO; if (error) { *error = [NSError errorWithDomain:NSCocoaErrorDomain code:[self lastErrorCode] userInfo:[NSDictionary dictionaryWithObject:[self lastErrorMessage] forKey:NSLocalizedDescriptionKey]]; } } sqlite3_finalize(pStmt); return validationSucceeded; } @end ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabasePool.h ================================================ // // FMDatabasePool.h // fmdb // // Created by August Mueller on 6/22/11. // Copyright 2011 Flying Meat Inc. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN @class FMDatabase; /** Pool of `` objects. ### See also - `` - `` @warning Before using `FMDatabasePool`, please consider using `` instead. If you really really really know what you're doing and `FMDatabasePool` is what you really really need (ie, you're using a read only database), OK you can use it. But just be careful not to deadlock! For an example on deadlocking, search for: `ONLY_USE_THE_POOL_IF_YOU_ARE_DOING_READS_OTHERWISE_YOULL_DEADLOCK_USE_FMDATABASEQUEUE_INSTEAD` in the main.m file. */ @interface FMDatabasePool : NSObject /** Database path */ @property (atomic, copy, nullable) NSString *path; /** Delegate object */ @property (atomic, assign, nullable) id delegate; /** Maximum number of databases to create */ @property (atomic, assign) NSUInteger maximumNumberOfDatabasesToCreate; /** Open flags */ @property (atomic, readonly) int openFlags; /** Custom virtual file system name */ @property (atomic, copy, nullable) NSString *vfsName; ///--------------------- /// @name Initialization ///--------------------- /** Create pool using path. @param aPath The file path of the database. @return The `FMDatabasePool` object. `nil` on error. */ + (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath; /** Create pool using file URL. @param url The file `NSURL` of the database. @return The `FMDatabasePool` object. `nil` on error. */ + (instancetype)databasePoolWithURL:(NSURL * _Nullable)url; /** Create pool using path and specified flags @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabasePool` object. `nil` on error. */ + (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create pool using file URL and specified flags @param url The file `NSURL` of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabasePool` object. `nil` on error. */ + (instancetype)databasePoolWithURL:(NSURL * _Nullable)url flags:(int)openFlags; /** Create pool using path. @param aPath The file path of the database. @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath; /** Create pool using file URL. @param url The file `NSURL of the database. @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url; /** Create pool using path and specified flags. @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create pool using file URL and specified flags. @param url The file `NSURL` of the database. @param openFlags Flags passed to the openWithFlags method of the database @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags; /** Create pool using path and specified flags. @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; /** Create pool using file URL and specified flags. @param url The file `NSURL` of the database. @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system @return The `FMDatabasePool` object. `nil` on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; /** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object. Subclasses can override this method to return specified Class of 'FMDatabase' subclass. @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object. */ + (Class)databaseClass; ///------------------------------------------------ /// @name Keeping track of checked in/out databases ///------------------------------------------------ /** Number of checked-in databases in pool */ @property (nonatomic, readonly) NSUInteger countOfCheckedInDatabases; /** Number of checked-out databases in pool */ @property (nonatomic, readonly) NSUInteger countOfCheckedOutDatabases; /** Total number of databases in pool */ @property (nonatomic, readonly) NSUInteger countOfOpenDatabases; /** Release all databases in pool */ - (void)releaseAllDatabases; ///------------------------------------------ /// @name Perform database operations in pool ///------------------------------------------ /** Synchronously perform database operations in pool. @param block The code to be run on the `FMDatabasePool` pool. */ - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block; /** Synchronously perform database operations in pool using transaction. @param block The code to be run on the `FMDatabasePool` pool. @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs an exclusive transaction, not a deferred transaction. This behavior is likely to change in future versions of FMDB, whereby this method will likely eventually adopt standard SQLite behavior and perform deferred transactions. If you really need exclusive tranaction, it is recommended that you use `inExclusiveTransaction`, instead, not only to make your intent explicit, but also to future-proof your code. */ - (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using exclusive transaction. @param block The code to be run on the `FMDatabasePool` pool. */ - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using deferred transaction. @param block The code to be run on the `FMDatabasePool` pool. */ - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using immediate transactions. @param block The code to be run on the queue of `FMDatabaseQueue` */ - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using save point. @param block The code to be run on the `FMDatabasePool` pool. @return `NSError` object if error; `nil` if successful. @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use `<[FMDatabase startSavePointWithName:error:]>` instead. */ - (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; @end /** FMDatabasePool delegate category This is a category that defines the protocol for the FMDatabasePool delegate */ @interface NSObject (FMDatabasePoolDelegate) /** Asks the delegate whether database should be added to the pool. @param pool The `FMDatabasePool` object. @param database The `FMDatabase` object. @return `YES` if it should add database to pool; `NO` if not. */ - (BOOL)databasePool:(FMDatabasePool*)pool shouldAddDatabaseToPool:(FMDatabase*)database; /** Tells the delegate that database was added to the pool. @param pool The `FMDatabasePool` object. @param database The `FMDatabase` object. */ - (void)databasePool:(FMDatabasePool*)pool didAddDatabase:(FMDatabase*)database; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabasePool.m ================================================ // // FMDatabasePool.m // fmdb // // Created by August Mueller on 6/22/11. // Copyright 2011 Flying Meat Inc. All rights reserved. // #if FMDB_SQLITE_STANDALONE #import #else #import #endif #import "FMDatabasePool.h" #import "FMDatabase.h" typedef NS_ENUM(NSInteger, FMDBTransaction) { FMDBTransactionExclusive, FMDBTransactionDeferred, FMDBTransactionImmediate, }; @interface FMDatabasePool () { dispatch_queue_t _lockQueue; NSMutableArray *_databaseInPool; NSMutableArray *_databaseOutPool; } - (void)pushDatabaseBackInPool:(FMDatabase*)db; - (FMDatabase*)db; @end @implementation FMDatabasePool @synthesize path=_path; @synthesize delegate=_delegate; @synthesize maximumNumberOfDatabasesToCreate=_maximumNumberOfDatabasesToCreate; @synthesize openFlags=_openFlags; + (instancetype)databasePoolWithPath:(NSString *)aPath { return FMDBReturnAutoreleased([[self alloc] initWithPath:aPath]); } + (instancetype)databasePoolWithURL:(NSURL *)url { return FMDBReturnAutoreleased([[self alloc] initWithPath:url.path]); } + (instancetype)databasePoolWithPath:(NSString *)aPath flags:(int)openFlags { return FMDBReturnAutoreleased([[self alloc] initWithPath:aPath flags:openFlags]); } + (instancetype)databasePoolWithURL:(NSURL *)url flags:(int)openFlags { return FMDBReturnAutoreleased([[self alloc] initWithPath:url.path flags:openFlags]); } - (instancetype)initWithURL:(NSURL *)url flags:(int)openFlags vfs:(NSString *)vfsName { return [self initWithPath:url.path flags:openFlags vfs:vfsName]; } - (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString *)vfsName { self = [super init]; if (self != nil) { _path = [aPath copy]; _lockQueue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL); _databaseInPool = FMDBReturnRetained([NSMutableArray array]); _databaseOutPool = FMDBReturnRetained([NSMutableArray array]); _openFlags = openFlags; _vfsName = [vfsName copy]; } return self; } - (instancetype)initWithPath:(NSString *)aPath flags:(int)openFlags { return [self initWithPath:aPath flags:openFlags vfs:nil]; } - (instancetype)initWithURL:(NSURL *)url flags:(int)openFlags { return [self initWithPath:url.path flags:openFlags vfs:nil]; } - (instancetype)initWithPath:(NSString*)aPath { // default flags for sqlite3_open return [self initWithPath:aPath flags:SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE]; } - (instancetype)initWithURL:(NSURL *)url { return [self initWithPath:url.path]; } - (instancetype)init { return [self initWithPath:nil]; } + (Class)databaseClass { return [FMDatabase class]; } - (void)dealloc { _delegate = 0x00; FMDBRelease(_path); FMDBRelease(_databaseInPool); FMDBRelease(_databaseOutPool); FMDBRelease(_vfsName); if (_lockQueue) { FMDBDispatchQueueRelease(_lockQueue); _lockQueue = 0x00; } #if ! __has_feature(objc_arc) [super dealloc]; #endif } - (void)executeLocked:(void (^)(void))aBlock { dispatch_sync(_lockQueue, aBlock); } - (void)pushDatabaseBackInPool:(FMDatabase*)db { if (!db) { // db can be null if we set an upper bound on the # of databases to create. return; } [self executeLocked:^() { if ([self->_databaseInPool containsObject:db]) { [[NSException exceptionWithName:@"Database already in pool" reason:@"The FMDatabase being put back into the pool is already present in the pool" userInfo:nil] raise]; } [self->_databaseInPool addObject:db]; [self->_databaseOutPool removeObject:db]; }]; } - (FMDatabase*)db { __block FMDatabase *db; [self executeLocked:^() { db = [self->_databaseInPool lastObject]; BOOL shouldNotifyDelegate = NO; if (db) { [self->_databaseOutPool addObject:db]; [self->_databaseInPool removeLastObject]; } else { if (self->_maximumNumberOfDatabasesToCreate) { NSUInteger currentCount = [self->_databaseOutPool count] + [self->_databaseInPool count]; if (currentCount >= self->_maximumNumberOfDatabasesToCreate) { NSLog(@"Maximum number of databases (%ld) has already been reached!", (long)currentCount); return; } } db = [[[self class] databaseClass] databaseWithPath:self->_path]; shouldNotifyDelegate = YES; } //This ensures that the db is opened before returning #if SQLITE_VERSION_NUMBER >= 3005000 BOOL success = [db openWithFlags:self->_openFlags vfs:self->_vfsName]; #else BOOL success = [db open]; #endif if (success) { if ([self->_delegate respondsToSelector:@selector(databasePool:shouldAddDatabaseToPool:)] && ![self->_delegate databasePool:self shouldAddDatabaseToPool:db]) { [db close]; db = 0x00; } else { //It should not get added in the pool twice if lastObject was found if (![self->_databaseOutPool containsObject:db]) { [self->_databaseOutPool addObject:db]; if (shouldNotifyDelegate && [self->_delegate respondsToSelector:@selector(databasePool:didAddDatabase:)]) { [self->_delegate databasePool:self didAddDatabase:db]; } } } } else { NSLog(@"Could not open up the database at path %@", self->_path); db = 0x00; } }]; return db; } - (NSUInteger)countOfCheckedInDatabases { __block NSUInteger count; [self executeLocked:^() { count = [self->_databaseInPool count]; }]; return count; } - (NSUInteger)countOfCheckedOutDatabases { __block NSUInteger count; [self executeLocked:^() { count = [self->_databaseOutPool count]; }]; return count; } - (NSUInteger)countOfOpenDatabases { __block NSUInteger count; [self executeLocked:^() { count = [self->_databaseOutPool count] + [self->_databaseInPool count]; }]; return count; } - (void)releaseAllDatabases { [self executeLocked:^() { [self->_databaseOutPool removeAllObjects]; [self->_databaseInPool removeAllObjects]; }]; } - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block { FMDatabase *db = [self db]; block(db); [self pushDatabaseBackInPool:db]; } - (void)beginTransaction:(FMDBTransaction)transaction withBlock:(void (^)(FMDatabase *db, BOOL *rollback))block { BOOL shouldRollback = NO; FMDatabase *db = [self db]; switch (transaction) { case FMDBTransactionExclusive: [db beginTransaction]; break; case FMDBTransactionDeferred: [db beginDeferredTransaction]; break; case FMDBTransactionImmediate: [db beginImmediateTransaction]; break; } block(db, &shouldRollback); if (shouldRollback) { [db rollback]; } else { [db commit]; } [self pushDatabaseBackInPool:db]; } - (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionExclusive withBlock:block]; } - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionDeferred withBlock:block]; } - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionExclusive withBlock:block]; } - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionImmediate withBlock:block]; } - (NSError*)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { #if SQLITE_VERSION_NUMBER >= 3007000 static unsigned long savePointIdx = 0; NSString *name = [NSString stringWithFormat:@"savePoint%ld", savePointIdx++]; BOOL shouldRollback = NO; FMDatabase *db = [self db]; NSError *err = 0x00; if (![db startSavePointWithName:name error:&err]) { [self pushDatabaseBackInPool:db]; return err; } block(db, &shouldRollback); if (shouldRollback) { // We need to rollback and release this savepoint to remove it [db rollbackToSavePointWithName:name error:&err]; } [db releaseSavePointWithName:name error:&err]; [self pushDatabaseBackInPool:db]; return err; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); return [NSError errorWithDomain:@"FMDatabase" code:0 userInfo:@{NSLocalizedDescriptionKey : errorMessage}]; #endif } @end ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabaseQueue.h ================================================ // // FMDatabaseQueue.h // fmdb // // Created by August Mueller on 6/22/11. // Copyright 2011 Flying Meat Inc. All rights reserved. // #import #import "FMDatabase.h" NS_ASSUME_NONNULL_BEGIN /** To perform queries and updates on multiple threads, you'll want to use `FMDatabaseQueue`. Using a single instance of `` from multiple threads at once is a bad idea. It has always been OK to make a `` object *per thread*. Just don't share a single instance across threads, and definitely not across multiple threads at the same time. Instead, use `FMDatabaseQueue`. Here's how to use it: First, make your queue. FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; Then use it like so: [queue inDatabase:^(FMDatabase *db) { [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; FMResultSet *rs = [db executeQuery:@"select * from foo"]; while ([rs next]) { //… } }]; An easy way to wrap things up in a transaction can be done like this: [queue inTransaction:^(FMDatabase *db, BOOL *rollback) { [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; if (whoopsSomethingWrongHappened) { *rollback = YES; return; } // etc… [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]]; }]; `FMDatabaseQueue` will run the blocks on a serialized queue (hence the name of the class). So if you call `FMDatabaseQueue`'s methods from multiple threads at the same time, they will be executed in the order they are received. This way queries and updates won't step on each other's toes, and every one is happy. ### See also - `` @warning Do not instantiate a single `` object and use it across multiple threads. Use `FMDatabaseQueue` instead. @warning The calls to `FMDatabaseQueue`'s methods are blocking. So even though you are passing along blocks, they will **not** be run on another thread. */ @interface FMDatabaseQueue : NSObject /** Path of database */ @property (atomic, retain, nullable) NSString *path; /** Open flags */ @property (atomic, readonly) int openFlags; /** Custom virtual file system name */ @property (atomic, copy, nullable) NSString *vfsName; ///---------------------------------------------------- /// @name Initialization, opening, and closing of queue ///---------------------------------------------------- /** Create queue using path. @param aPath The file path of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ + (nullable instancetype)databaseQueueWithPath:(NSString * _Nullable)aPath; /** Create queue using file URL. @param url The file `NSURL` of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ + (nullable instancetype)databaseQueueWithURL:(NSURL * _Nullable)url; /** Create queue using path and specified flags. @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ + (nullable instancetype)databaseQueueWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create queue using file URL and specified flags. @param url The file `NSURL` of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ + (nullable instancetype)databaseQueueWithURL:(NSURL * _Nullable)url flags:(int)openFlags; /** Create queue using path. @param aPath The file path of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath; /** Create queue using file URL. @param url The file `NSURL of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url; /** Create queue using path and specified flags. @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create queue using file URL and specified flags. @param url The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags; /** Create queue using path and specified flags. @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; /** Create queue using file URL and specified flags. @param url The file `NSURL of the database. @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system @return The `FMDatabaseQueue` object. `nil` on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; /** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object. Subclasses can override this method to return specified Class of 'FMDatabase' subclass. @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object. */ + (Class)databaseClass; /** Close database used by queue. */ - (void)close; /** Interupt pending database operation. */ - (void)interrupt; ///----------------------------------------------- /// @name Dispatching database operations to queue ///----------------------------------------------- /** Synchronously perform database operations on queue. @param block The code to be run on the queue of `FMDatabaseQueue` */ - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block; /** Synchronously perform database operations on queue, using transactions. @param block The code to be run on the queue of `FMDatabaseQueue` @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs an exclusive transaction, not a deferred transaction. This behavior is likely to change in future versions of FMDB, whereby this method will likely eventually adopt standard SQLite behavior and perform deferred transactions. If you really need exclusive tranaction, it is recommended that you use `inExclusiveTransaction`, instead, not only to make your intent explicit, but also to future-proof your code. */ - (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using deferred transactions. @param block The code to be run on the queue of `FMDatabaseQueue` */ - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using exclusive transactions. @param block The code to be run on the queue of `FMDatabaseQueue` */ - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using immediate transactions. @param block The code to be run on the queue of `FMDatabaseQueue` */ - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; ///----------------------------------------------- /// @name Dispatching database operations to queue ///----------------------------------------------- /** Synchronously perform database operations using save point. @param block The code to be run on the queue of `FMDatabaseQueue` */ // NOTE: you can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. // If you need to nest, use FMDatabase's startSavePointWithName:error: instead. - (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; ///----------------- /// @name Checkpoint ///----------------- /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode error:(NSError * _Nullable *)error; /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param name The db name for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name error:(NSError * _Nullable *)error; /** Performs a WAL checkpoint @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param name The db name for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. @param logFrameCount If not NULL, then this is set to the total number of frames in the log file or to -1 if the checkpoint could not run because of an error or because the database is not in WAL mode. @param checkpointCount If not NULL, then this is set to the total number of checkpointed frames in the log file (including any that were already checkpointed before the function was called) or to -1 if the checkpoint could not run due to an error or because the database is not in WAL mode. @return YES on success, otherwise NO. */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name logFrameCount:(int * _Nullable)logFrameCount checkpointCount:(int * _Nullable)checkpointCount error:(NSError * _Nullable *)error; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMDatabaseQueue.m ================================================ // // FMDatabaseQueue.m // fmdb // // Created by August Mueller on 6/22/11. // Copyright 2011 Flying Meat Inc. All rights reserved. // #import "FMDatabaseQueue.h" #import "FMDatabase.h" #if FMDB_SQLITE_STANDALONE #import #else #import #endif typedef NS_ENUM(NSInteger, FMDBTransaction) { FMDBTransactionExclusive, FMDBTransactionDeferred, FMDBTransactionImmediate, }; /* Note: we call [self retain]; before using dispatch_sync, just incase FMDatabaseQueue is released on another thread and we're in the middle of doing something in dispatch_sync */ /* * A key used to associate the FMDatabaseQueue object with the dispatch_queue_t it uses. * This in turn is used for deadlock detection by seeing if inDatabase: is called on * the queue's dispatch queue, which should not happen and causes a deadlock. */ static const void * const kDispatchQueueSpecificKey = &kDispatchQueueSpecificKey; @interface FMDatabaseQueue () { dispatch_queue_t _queue; FMDatabase *_db; } @end @implementation FMDatabaseQueue + (instancetype)databaseQueueWithPath:(NSString *)aPath { FMDatabaseQueue *q = [[self alloc] initWithPath:aPath]; FMDBAutorelease(q); return q; } + (instancetype)databaseQueueWithURL:(NSURL *)url { return [self databaseQueueWithPath:url.path]; } + (instancetype)databaseQueueWithPath:(NSString *)aPath flags:(int)openFlags { FMDatabaseQueue *q = [[self alloc] initWithPath:aPath flags:openFlags]; FMDBAutorelease(q); return q; } + (instancetype)databaseQueueWithURL:(NSURL *)url flags:(int)openFlags { return [self databaseQueueWithPath:url.path flags:openFlags]; } + (Class)databaseClass { return [FMDatabase class]; } - (instancetype)initWithURL:(NSURL *)url flags:(int)openFlags vfs:(NSString *)vfsName { return [self initWithPath:url.path flags:openFlags vfs:vfsName]; } - (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString *)vfsName { self = [super init]; if (self != nil) { _db = [[[self class] databaseClass] databaseWithPath:aPath]; FMDBRetain(_db); #if SQLITE_VERSION_NUMBER >= 3005000 BOOL success = [_db openWithFlags:openFlags vfs:vfsName]; #else BOOL success = [_db open]; #endif if (!success) { NSLog(@"Could not create database queue for path %@", aPath); FMDBRelease(self); return 0x00; } _path = FMDBReturnRetained(aPath); _queue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL); dispatch_queue_set_specific(_queue, kDispatchQueueSpecificKey, (__bridge void *)self, NULL); _openFlags = openFlags; _vfsName = [vfsName copy]; } return self; } - (instancetype)initWithPath:(NSString *)aPath flags:(int)openFlags { return [self initWithPath:aPath flags:openFlags vfs:nil]; } - (instancetype)initWithURL:(NSURL *)url flags:(int)openFlags { return [self initWithPath:url.path flags:openFlags vfs:nil]; } - (instancetype)initWithURL:(NSURL *)url { return [self initWithPath:url.path]; } - (instancetype)initWithPath:(NSString *)aPath { // default flags for sqlite3_open return [self initWithPath:aPath flags:SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE vfs:nil]; } - (instancetype)init { return [self initWithPath:nil]; } - (void)dealloc { FMDBRelease(_db); FMDBRelease(_path); FMDBRelease(_vfsName); if (_queue) { FMDBDispatchQueueRelease(_queue); _queue = 0x00; } #if ! __has_feature(objc_arc) [super dealloc]; #endif } - (void)close { FMDBRetain(self); dispatch_sync(_queue, ^() { [self->_db close]; FMDBRelease(_db); self->_db = 0x00; }); FMDBRelease(self); } - (void)interrupt { [[self database] interrupt]; } - (FMDatabase*)database { if (![_db isOpen]) { if (!_db) { _db = FMDBReturnRetained([[[self class] databaseClass] databaseWithPath:_path]); } #if SQLITE_VERSION_NUMBER >= 3005000 BOOL success = [_db openWithFlags:_openFlags vfs:_vfsName]; #else BOOL success = [_db open]; #endif if (!success) { NSLog(@"FMDatabaseQueue could not reopen database for path %@", _path); FMDBRelease(_db); _db = 0x00; return 0x00; } } return _db; } - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block { #ifndef NDEBUG /* Get the currently executing queue (which should probably be nil, but in theory could be another DB queue * and then check it against self to make sure we're not about to deadlock. */ FMDatabaseQueue *currentSyncQueue = (__bridge id)dispatch_get_specific(kDispatchQueueSpecificKey); assert(currentSyncQueue != self && "inDatabase: was called reentrantly on the same queue, which would lead to a deadlock"); #endif FMDBRetain(self); dispatch_sync(_queue, ^() { FMDatabase *db = [self database]; block(db); if ([db hasOpenResultSets]) { NSLog(@"Warning: there is at least one open result set around after performing [FMDatabaseQueue inDatabase:]"); #if defined(DEBUG) && DEBUG NSSet *openSetCopy = FMDBReturnAutoreleased([[db valueForKey:@"_openResultSets"] copy]); for (NSValue *rsInWrappedInATastyValueMeal in openSetCopy) { FMResultSet *rs = (FMResultSet *)[rsInWrappedInATastyValueMeal pointerValue]; NSLog(@"query: '%@'", [rs query]); } #endif } }); FMDBRelease(self); } - (void)beginTransaction:(FMDBTransaction)transaction withBlock:(void (^)(FMDatabase *db, BOOL *rollback))block { FMDBRetain(self); dispatch_sync(_queue, ^() { BOOL shouldRollback = NO; switch (transaction) { case FMDBTransactionExclusive: [[self database] beginTransaction]; break; case FMDBTransactionDeferred: [[self database] beginDeferredTransaction]; break; case FMDBTransactionImmediate: [[self database] beginImmediateTransaction]; break; } block([self database], &shouldRollback); if (shouldRollback) { [[self database] rollback]; } else { [[self database] commit]; } }); FMDBRelease(self); } - (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionExclusive withBlock:block]; } - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionDeferred withBlock:block]; } - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { [self beginTransaction:FMDBTransactionExclusive withBlock:block]; } - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase * _Nonnull, BOOL * _Nonnull))block { [self beginTransaction:FMDBTransactionImmediate withBlock:block]; } - (NSError*)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block { #if SQLITE_VERSION_NUMBER >= 3007000 static unsigned long savePointIdx = 0; __block NSError *err = 0x00; FMDBRetain(self); dispatch_sync(_queue, ^() { NSString *name = [NSString stringWithFormat:@"savePoint%ld", savePointIdx++]; BOOL shouldRollback = NO; if ([[self database] startSavePointWithName:name error:&err]) { block([self database], &shouldRollback); if (shouldRollback) { // We need to rollback and release this savepoint to remove it [[self database] rollbackToSavePointWithName:name error:&err]; } [[self database] releaseSavePointWithName:name error:&err]; } }); FMDBRelease(self); return err; #else NSString *errorMessage = NSLocalizedStringFromTable(@"Save point functions require SQLite 3.7", @"FMDB", nil); if (_db.logsErrors) NSLog(@"%@", errorMessage); return [NSError errorWithDomain:@"FMDatabase" code:0 userInfo:@{NSLocalizedDescriptionKey : errorMessage}]; #endif } - (BOOL)checkpoint:(FMDBCheckpointMode)mode error:(NSError * __autoreleasing *)error { return [self checkpoint:mode name:nil logFrameCount:NULL checkpointCount:NULL error:error]; } - (BOOL)checkpoint:(FMDBCheckpointMode)mode name:(NSString *)name error:(NSError * __autoreleasing *)error { return [self checkpoint:mode name:name logFrameCount:NULL checkpointCount:NULL error:error]; } - (BOOL)checkpoint:(FMDBCheckpointMode)mode name:(NSString *)name logFrameCount:(int * _Nullable)logFrameCount checkpointCount:(int * _Nullable)checkpointCount error:(NSError * __autoreleasing _Nullable * _Nullable)error { __block BOOL result; __block NSError *blockError; FMDBRetain(self); dispatch_sync(_queue, ^() { result = [self.database checkpoint:mode name:name logFrameCount:NULL checkpointCount:NULL error:&blockError]; }); FMDBRelease(self); if (error) { *error = blockError; } return result; } @end ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMResultSet.h ================================================ #import NS_ASSUME_NONNULL_BEGIN #ifndef __has_feature // Optional. #define __has_feature(x) 0 // Compatibility with non-clang compilers. #endif #ifndef NS_RETURNS_NOT_RETAINED #if __has_feature(attribute_ns_returns_not_retained) #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) #else #define NS_RETURNS_NOT_RETAINED #endif #endif @class FMDatabase; @class FMStatement; /** Represents the results of executing a query on an ``. ### See also - `` */ @interface FMResultSet : NSObject @property (nonatomic, retain, nullable) FMDatabase *parentDB; ///----------------- /// @name Properties ///----------------- /** Executed query */ @property (atomic, retain, nullable) NSString *query; /** `NSMutableDictionary` mapping column names to numeric index */ @property (readonly) NSMutableDictionary *columnNameToIndexMap; /** `FMStatement` used by result set. */ @property (atomic, retain, nullable) FMStatement *statement; ///------------------------------------ /// @name Creating and closing a result set ///------------------------------------ /** Create result set from `` @param statement A `` to be performed @param aDB A `` to be used @return A `FMResultSet` on success; `nil` on failure */ + (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB; /** Close result set */ - (void)close; ///--------------------------------------- /// @name Iterating through the result set ///--------------------------------------- /** Retrieve next row for result set. You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one. @return `YES` if row successfully retrieved; `NO` if end of result set reached @see hasAnotherRow */ - (BOOL)next; /** Retrieve next row for result set. You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one. @param outErr A 'NSError' object to receive any error object (if any). @return 'YES' if row successfully retrieved; 'NO' if end of result set reached @see hasAnotherRow */ - (BOOL)nextWithError:(NSError * _Nullable *)outErr; /** Did the last call to `` succeed in retrieving another row? @return `YES` if the last call to `` succeeded in retrieving another record; `NO` if not. @see next @warning The `hasAnotherRow` method must follow a call to ``. If the previous database interaction was something other than a call to `next`, then this method may return `NO`, whether there is another row of data or not. */ - (BOOL)hasAnotherRow; ///--------------------------------------------- /// @name Retrieving information from result set ///--------------------------------------------- /** How many columns in result set @return Integer value of the number of columns. */ @property (nonatomic, readonly) int columnCount; /** Column index for column name @param columnName `NSString` value of the name of the column. @return Zero-based index for column. */ - (int)columnIndexForName:(NSString*)columnName; /** Column name for column index @param columnIdx Zero-based index for column. @return columnName `NSString` value of the name of the column. */ - (NSString * _Nullable)columnNameForIndex:(int)columnIdx; /** Result set integer value for column. @param columnName `NSString` value of the name of the column. @return `int` value of the result set's column. */ - (int)intForColumn:(NSString*)columnName; /** Result set integer value for column. @param columnIdx Zero-based index for column. @return `int` value of the result set's column. */ - (int)intForColumnIndex:(int)columnIdx; /** Result set `long` value for column. @param columnName `NSString` value of the name of the column. @return `long` value of the result set's column. */ - (long)longForColumn:(NSString*)columnName; /** Result set long value for column. @param columnIdx Zero-based index for column. @return `long` value of the result set's column. */ - (long)longForColumnIndex:(int)columnIdx; /** Result set `long long int` value for column. @param columnName `NSString` value of the name of the column. @return `long long int` value of the result set's column. */ - (long long int)longLongIntForColumn:(NSString*)columnName; /** Result set `long long int` value for column. @param columnIdx Zero-based index for column. @return `long long int` value of the result set's column. */ - (long long int)longLongIntForColumnIndex:(int)columnIdx; /** Result set `unsigned long long int` value for column. @param columnName `NSString` value of the name of the column. @return `unsigned long long int` value of the result set's column. */ - (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName; /** Result set `unsigned long long int` value for column. @param columnIdx Zero-based index for column. @return `unsigned long long int` value of the result set's column. */ - (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx; /** Result set `BOOL` value for column. @param columnName `NSString` value of the name of the column. @return `BOOL` value of the result set's column. */ - (BOOL)boolForColumn:(NSString*)columnName; /** Result set `BOOL` value for column. @param columnIdx Zero-based index for column. @return `BOOL` value of the result set's column. */ - (BOOL)boolForColumnIndex:(int)columnIdx; /** Result set `double` value for column. @param columnName `NSString` value of the name of the column. @return `double` value of the result set's column. */ - (double)doubleForColumn:(NSString*)columnName; /** Result set `double` value for column. @param columnIdx Zero-based index for column. @return `double` value of the result set's column. */ - (double)doubleForColumnIndex:(int)columnIdx; /** Result set `NSString` value for column. @param columnName `NSString` value of the name of the column. @return String value of the result set's column. */ - (NSString * _Nullable)stringForColumn:(NSString*)columnName; /** Result set `NSString` value for column. @param columnIdx Zero-based index for column. @return String value of the result set's column. */ - (NSString * _Nullable)stringForColumnIndex:(int)columnIdx; /** Result set `NSDate` value for column. @param columnName `NSString` value of the name of the column. @return Date value of the result set's column. */ - (NSDate * _Nullable)dateForColumn:(NSString*)columnName; /** Result set `NSDate` value for column. @param columnIdx Zero-based index for column. @return Date value of the result set's column. */ - (NSDate * _Nullable)dateForColumnIndex:(int)columnIdx; /** Result set `NSData` value for column. This is useful when storing binary data in table (such as image or the like). @param columnName `NSString` value of the name of the column. @return Data value of the result set's column. */ - (NSData * _Nullable)dataForColumn:(NSString*)columnName; /** Result set `NSData` value for column. @param columnIdx Zero-based index for column. @return Data value of the result set's column. */ - (NSData * _Nullable)dataForColumnIndex:(int)columnIdx; /** Result set `(const unsigned char *)` value for column. @param columnName `NSString` value of the name of the column. @return `(const unsigned char *)` value of the result set's column. */ - (const unsigned char * _Nullable)UTF8StringForColumn:(NSString*)columnName; - (const unsigned char * _Nullable)UTF8StringForColumnName:(NSString*)columnName __deprecated_msg("Use UTF8StringForColumn instead"); /** Result set `(const unsigned char *)` value for column. @param columnIdx Zero-based index for column. @return `(const unsigned char *)` value of the result set's column. */ - (const unsigned char * _Nullable)UTF8StringForColumnIndex:(int)columnIdx; /** Result set object for column. @param columnName Name of the column. @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. @see objectForKeyedSubscript: */ - (id _Nullable)objectForColumn:(NSString*)columnName; - (id _Nullable)objectForColumnName:(NSString*)columnName __deprecated_msg("Use objectForColumn instead"); /** Result set object for column. @param columnIdx Zero-based index for column. @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. @see objectAtIndexedSubscript: */ - (id _Nullable)objectForColumnIndex:(int)columnIdx; /** Result set object for column. This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: id result = rs[@"employee_name"]; This simplified syntax is equivalent to calling: id result = [rs objectForKeyedSubscript:@"employee_name"]; which is, it turns out, equivalent to calling: id result = [rs objectForColumnName:@"employee_name"]; @param columnName `NSString` value of the name of the column. @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. */ - (id _Nullable)objectForKeyedSubscript:(NSString *)columnName; /** Result set object for column. This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: id result = rs[0]; This simplified syntax is equivalent to calling: id result = [rs objectForKeyedSubscript:0]; which is, it turns out, equivalent to calling: id result = [rs objectForColumnName:0]; @param columnIdx Zero-based index for column. @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. */ - (id _Nullable)objectAtIndexedSubscript:(int)columnIdx; /** Result set `NSData` value for column. @param columnName `NSString` value of the name of the column. @return Data value of the result set's column. @warning If you are going to use this data after you iterate over the next row, or after you close the result set, make sure to make a copy of the data first (or just use ``/``) If you don't, you're going to be in a world of hurt when you try and use the data. */ - (NSData * _Nullable)dataNoCopyForColumn:(NSString *)columnName NS_RETURNS_NOT_RETAINED; /** Result set `NSData` value for column. @param columnIdx Zero-based index for column. @return Data value of the result set's column. @warning If you are going to use this data after you iterate over the next row, or after you close the result set, make sure to make a copy of the data first (or just use ``/``) If you don't, you're going to be in a world of hurt when you try and use the data. */ - (NSData * _Nullable)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED; /** Is the column `NULL`? @param columnIdx Zero-based index for column. @return `YES` if column is `NULL`; `NO` if not `NULL`. */ - (BOOL)columnIndexIsNull:(int)columnIdx; /** Is the column `NULL`? @param columnName `NSString` value of the name of the column. @return `YES` if column is `NULL`; `NO` if not `NULL`. */ - (BOOL)columnIsNull:(NSString*)columnName; /** Returns a dictionary of the row results mapped to case sensitive keys of the column names. @warning The keys to the dictionary are case sensitive of the column names. */ @property (nonatomic, readonly, nullable) NSDictionary *resultDictionary; /** Returns a dictionary of the row results @see resultDictionary @warning **Deprecated**: Please use `` instead. Also, beware that `` is case sensitive! */ - (NSDictionary * _Nullable)resultDict __deprecated_msg("Use resultDictionary instead"); ///----------------------------- /// @name Key value coding magic ///----------------------------- /** Performs `setValue` to yield support for key value observing. @param object The object for which the values will be set. This is the key-value-coding compliant object that you might, for example, observe. */ - (void)kvcMagic:(id)object; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/FMDB/src/fmdb/FMResultSet.m ================================================ #import "FMResultSet.h" #import "FMDatabase.h" #import #if FMDB_SQLITE_STANDALONE #import #else #import #endif @interface FMDatabase () - (void)resultSetDidClose:(FMResultSet *)resultSet; @end @interface FMResultSet () { NSMutableDictionary *_columnNameToIndexMap; } @end @implementation FMResultSet + (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB { FMResultSet *rs = [[FMResultSet alloc] init]; [rs setStatement:statement]; [rs setParentDB:aDB]; NSParameterAssert(![statement inUse]); [statement setInUse:YES]; // weak reference return FMDBReturnAutoreleased(rs); } #if ! __has_feature(objc_arc) - (void)finalize { [self close]; [super finalize]; } #endif - (void)dealloc { [self close]; FMDBRelease(_query); _query = nil; FMDBRelease(_columnNameToIndexMap); _columnNameToIndexMap = nil; #if ! __has_feature(objc_arc) [super dealloc]; #endif } - (void)close { [_statement reset]; FMDBRelease(_statement); _statement = nil; // we don't need this anymore... (i think) //[_parentDB setInUse:NO]; [_parentDB resultSetDidClose:self]; [self setParentDB:nil]; } - (int)columnCount { return sqlite3_column_count([_statement statement]); } - (NSMutableDictionary *)columnNameToIndexMap { if (!_columnNameToIndexMap) { int columnCount = sqlite3_column_count([_statement statement]); _columnNameToIndexMap = [[NSMutableDictionary alloc] initWithCapacity:(NSUInteger)columnCount]; int columnIdx = 0; for (columnIdx = 0; columnIdx < columnCount; columnIdx++) { [_columnNameToIndexMap setObject:[NSNumber numberWithInt:columnIdx] forKey:[[NSString stringWithUTF8String:sqlite3_column_name([_statement statement], columnIdx)] lowercaseString]]; } } return _columnNameToIndexMap; } - (void)kvcMagic:(id)object { int columnCount = sqlite3_column_count([_statement statement]); int columnIdx = 0; for (columnIdx = 0; columnIdx < columnCount; columnIdx++) { const char *c = (const char *)sqlite3_column_text([_statement statement], columnIdx); // check for a null row if (c) { NSString *s = [NSString stringWithUTF8String:c]; [object setValue:s forKey:[NSString stringWithUTF8String:sqlite3_column_name([_statement statement], columnIdx)]]; } } } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" - (NSDictionary *)resultDict { NSUInteger num_cols = (NSUInteger)sqlite3_data_count([_statement statement]); if (num_cols > 0) { NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:num_cols]; NSEnumerator *columnNames = [[self columnNameToIndexMap] keyEnumerator]; NSString *columnName = nil; while ((columnName = [columnNames nextObject])) { id objectValue = [self objectForColumnName:columnName]; [dict setObject:objectValue forKey:columnName]; } return FMDBReturnAutoreleased([dict copy]); } else { NSLog(@"Warning: There seem to be no columns in this set."); } return nil; } #pragma clang diagnostic pop - (NSDictionary*)resultDictionary { NSUInteger num_cols = (NSUInteger)sqlite3_data_count([_statement statement]); if (num_cols > 0) { NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:num_cols]; int columnCount = sqlite3_column_count([_statement statement]); int columnIdx = 0; for (columnIdx = 0; columnIdx < columnCount; columnIdx++) { NSString *columnName = [NSString stringWithUTF8String:sqlite3_column_name([_statement statement], columnIdx)]; id objectValue = [self objectForColumnIndex:columnIdx]; [dict setObject:objectValue forKey:columnName]; } return dict; } else { NSLog(@"Warning: There seem to be no columns in this set."); } return nil; } - (BOOL)next { return [self nextWithError:nil]; } - (BOOL)nextWithError:(NSError **)outErr { int rc = sqlite3_step([_statement statement]); if (SQLITE_BUSY == rc || SQLITE_LOCKED == rc) { NSLog(@"%s:%d Database busy (%@)", __FUNCTION__, __LINE__, [_parentDB databasePath]); NSLog(@"Database busy"); if (outErr) { *outErr = [_parentDB lastError]; } } else if (SQLITE_DONE == rc || SQLITE_ROW == rc) { // all is well, let's return. } else if (SQLITE_ERROR == rc) { NSLog(@"Error calling sqlite3_step (%d: %s) rs", rc, sqlite3_errmsg([_parentDB sqliteHandle])); if (outErr) { *outErr = [_parentDB lastError]; } } else if (SQLITE_MISUSE == rc) { // uh oh. NSLog(@"Error calling sqlite3_step (%d: %s) rs", rc, sqlite3_errmsg([_parentDB sqliteHandle])); if (outErr) { if (_parentDB) { *outErr = [_parentDB lastError]; } else { // If 'next' or 'nextWithError' is called after the result set is closed, // we need to return the appropriate error. NSDictionary* errorMessage = [NSDictionary dictionaryWithObject:@"parentDB does not exist" forKey:NSLocalizedDescriptionKey]; *outErr = [NSError errorWithDomain:@"FMDatabase" code:SQLITE_MISUSE userInfo:errorMessage]; } } } else { // wtf? NSLog(@"Unknown error calling sqlite3_step (%d: %s) rs", rc, sqlite3_errmsg([_parentDB sqliteHandle])); if (outErr) { *outErr = [_parentDB lastError]; } } if (rc != SQLITE_ROW) { [self close]; } return (rc == SQLITE_ROW); } - (BOOL)hasAnotherRow { return sqlite3_errcode([_parentDB sqliteHandle]) == SQLITE_ROW; } - (int)columnIndexForName:(NSString*)columnName { columnName = [columnName lowercaseString]; NSNumber *n = [[self columnNameToIndexMap] objectForKey:columnName]; if (n != nil) { return [n intValue]; } NSLog(@"Warning: I could not find the column named '%@'.", columnName); return -1; } - (int)intForColumn:(NSString*)columnName { return [self intForColumnIndex:[self columnIndexForName:columnName]]; } - (int)intForColumnIndex:(int)columnIdx { return sqlite3_column_int([_statement statement], columnIdx); } - (long)longForColumn:(NSString*)columnName { return [self longForColumnIndex:[self columnIndexForName:columnName]]; } - (long)longForColumnIndex:(int)columnIdx { return (long)sqlite3_column_int64([_statement statement], columnIdx); } - (long long int)longLongIntForColumn:(NSString*)columnName { return [self longLongIntForColumnIndex:[self columnIndexForName:columnName]]; } - (long long int)longLongIntForColumnIndex:(int)columnIdx { return sqlite3_column_int64([_statement statement], columnIdx); } - (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName { return [self unsignedLongLongIntForColumnIndex:[self columnIndexForName:columnName]]; } - (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx { return (unsigned long long int)[self longLongIntForColumnIndex:columnIdx]; } - (BOOL)boolForColumn:(NSString*)columnName { return [self boolForColumnIndex:[self columnIndexForName:columnName]]; } - (BOOL)boolForColumnIndex:(int)columnIdx { return ([self intForColumnIndex:columnIdx] != 0); } - (double)doubleForColumn:(NSString*)columnName { return [self doubleForColumnIndex:[self columnIndexForName:columnName]]; } - (double)doubleForColumnIndex:(int)columnIdx { return sqlite3_column_double([_statement statement], columnIdx); } - (NSString *)stringForColumnIndex:(int)columnIdx { if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0) || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } const char *c = (const char *)sqlite3_column_text([_statement statement], columnIdx); if (!c) { // null row. return nil; } return [NSString stringWithUTF8String:c]; } - (NSString*)stringForColumn:(NSString*)columnName { return [self stringForColumnIndex:[self columnIndexForName:columnName]]; } - (NSDate*)dateForColumn:(NSString*)columnName { return [self dateForColumnIndex:[self columnIndexForName:columnName]]; } - (NSDate*)dateForColumnIndex:(int)columnIdx { if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0) || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } return [_parentDB hasDateFormatter] ? [_parentDB dateFromString:[self stringForColumnIndex:columnIdx]] : [NSDate dateWithTimeIntervalSince1970:[self doubleForColumnIndex:columnIdx]]; } - (NSData*)dataForColumn:(NSString*)columnName { return [self dataForColumnIndex:[self columnIndexForName:columnName]]; } - (NSData*)dataForColumnIndex:(int)columnIdx { if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0) || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } const char *dataBuffer = sqlite3_column_blob([_statement statement], columnIdx); int dataSize = sqlite3_column_bytes([_statement statement], columnIdx); if (dataBuffer == NULL) { return nil; } return [NSData dataWithBytes:(const void *)dataBuffer length:(NSUInteger)dataSize]; } - (NSData*)dataNoCopyForColumn:(NSString*)columnName { return [self dataNoCopyForColumnIndex:[self columnIndexForName:columnName]]; } - (NSData*)dataNoCopyForColumnIndex:(int)columnIdx { if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0) || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } const char *dataBuffer = sqlite3_column_blob([_statement statement], columnIdx); int dataSize = sqlite3_column_bytes([_statement statement], columnIdx); NSData *data = [NSData dataWithBytesNoCopy:(void *)dataBuffer length:(NSUInteger)dataSize freeWhenDone:NO]; return data; } - (BOOL)columnIndexIsNull:(int)columnIdx { return sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL; } - (BOOL)columnIsNull:(NSString*)columnName { return [self columnIndexIsNull:[self columnIndexForName:columnName]]; } - (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx { if (sqlite3_column_type([_statement statement], columnIdx) == SQLITE_NULL || (columnIdx < 0) || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } return sqlite3_column_text([_statement statement], columnIdx); } - (const unsigned char *)UTF8StringForColumn:(NSString*)columnName { return [self UTF8StringForColumnIndex:[self columnIndexForName:columnName]]; } - (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName { return [self UTF8StringForColumn:columnName]; } - (id)objectForColumnIndex:(int)columnIdx { if (columnIdx < 0 || columnIdx >= sqlite3_column_count([_statement statement])) { return nil; } int columnType = sqlite3_column_type([_statement statement], columnIdx); id returnValue = nil; if (columnType == SQLITE_INTEGER) { returnValue = [NSNumber numberWithLongLong:[self longLongIntForColumnIndex:columnIdx]]; } else if (columnType == SQLITE_FLOAT) { returnValue = [NSNumber numberWithDouble:[self doubleForColumnIndex:columnIdx]]; } else if (columnType == SQLITE_BLOB) { returnValue = [self dataForColumnIndex:columnIdx]; } else { //default to a string for everything else returnValue = [self stringForColumnIndex:columnIdx]; } if (returnValue == nil) { returnValue = [NSNull null]; } return returnValue; } - (id)objectForColumnName:(NSString*)columnName { return [self objectForColumn:columnName]; } - (id)objectForColumn:(NSString*)columnName { return [self objectForColumnIndex:[self columnIndexForName:columnName]]; } // returns autoreleased NSString containing the name of the column in the result set - (NSString*)columnNameForIndex:(int)columnIdx { return [NSString stringWithUTF8String: sqlite3_column_name([_statement statement], columnIdx)]; } - (id)objectAtIndexedSubscript:(int)columnIdx { return [self objectForColumnIndex:columnIdx]; } - (id)objectForKeyedSubscript:(NSString *)columnName { return [self objectForColumn:columnName]; } @end ================================================ FILE: native/ios/WatermelonDB/JSIInstaller.h ================================================ #pragma once #import #ifdef __cplusplus extern "C" { #endif void installWatermelonJSI(RCTCxxBridge *bridge); void watermelondbProvideSyncJson(int id, NSData *json, NSError **errorPtr); #ifdef __cplusplus } // extern "C" #endif ================================================ FILE: native/ios/WatermelonDB/JSIInstaller.mm ================================================ #import "JSIInstaller.h" #import "Database.h" extern "C" void installWatermelonJSI(RCTCxxBridge *bridge) { if (bridge.runtime == nullptr) { return; } jsi::Runtime *runtime = (jsi::Runtime*) bridge.runtime; assert(runtime != nullptr); watermelondb::Database::install(runtime); } ================================================ FILE: native/ios/WatermelonDB/WatermelonDB.h ================================================ #pragma once #import "./JSIInstaller.h" ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabase.h ================================================ #import "FMDB.h" NS_ASSUME_NONNULL_BEGIN @interface WMDatabase : NSObject @property (readwrite, strong, nonatomic) FMDatabase *fmdb; @property (readwrite, nonatomic) long userVersion; #pragma mark - Initialization + (instancetype) databaseWithPath:(NSString *)path; #pragma mark - Executing queries - (BOOL) executeQuery:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; /// Executes multiple queries separated by `;` - (BOOL) executeStatements:(NSString *)sql error:(NSError **)errorPtr; - (FMResultSet *) queryRaw:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; - (NSNumber * _Nullable) count:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; #pragma mark - Other database functions - (BOOL) inTransaction:(BOOL (^)(NSError**))transactionBlock error:(NSError**)errorPtr; - (BOOL) unsafeDestroyEverything:(NSError**)errorPtr; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabase.m ================================================ #import "WMDatabase.h" #import @implementation WMDatabase { NSString *_path; } - (instancetype) initWithPath:(NSString *)path { if (self = [super init]) { _path = path; _fmdb = [FMDatabase databaseWithPath:path]; [self open]; } return self; } + (instancetype) databaseWithPath:(NSString *)path { return [[self alloc] initWithPath:path]; } - (void) open { if (![_fmdb open]) { [NSException raise:@"OpenFailed" format:@"Failed to open the database: %@", _fmdb.lastErrorMessage]; } // TODO: Experiment with WAL // // must be queryRaw - returns value // _ = try queryRaw("pragma journal_mode=wal") // TODO: Configurable logger NSLog(@"Opened database at %@", _path); } #pragma mark - Executing queries - (BOOL) executeQuery:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { return [_fmdb executeUpdate:query values:args error:errorPtr]; } - (BOOL) executeStatements:(NSString *)sql error:(NSError **)errorPtr { if (![_fmdb executeStatements:sql]) { *errorPtr = _fmdb.lastError; return NO; } return YES; } - (FMResultSet *) queryRaw:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { return [_fmdb executeQuery:query values:args error:errorPtr]; } - (NSNumber * _Nullable) count:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { FMResultSet *result = [_fmdb executeQuery:query values:args error:errorPtr]; if (!result) { *errorPtr = _fmdb.lastError; return nil; } if (![result next]) { *errorPtr = [NSError errorWithDomain:@"WMDatabase" code:0 userInfo:@{ NSLocalizedDescriptionKey: @"Invalid count query, can't find next() on the result" }]; return nil; } if ([result columnIndexForName:@"count"] == -1) { *errorPtr = [NSError errorWithDomain:@"WMDatabase" code:0 userInfo:@{ NSLocalizedDescriptionKey: @"Invalid count query, can't find `count` column" }]; return nil; } return @([result intForColumn:@"count"]); } #pragma mark - Other database functions // TODO: This is a near 1-to-1 translated from Swift, but it's not an ObjC-y way of doing this - (BOOL) inTransaction:(BOOL (^)(NSError**))transactionBlock error:(NSError**)errorPtr { if (![_fmdb beginTransaction]) { *errorPtr = _fmdb.lastError; return NO; } BOOL txnResult = transactionBlock(errorPtr); if (txnResult) { if (![_fmdb commit]) { *errorPtr = _fmdb.lastError; return NO; } return YES; } else { if (![_fmdb rollback]) { *errorPtr = _fmdb.lastError; } return NO; } } - (long) userVersion { FMResultSet *result = [_fmdb executeQuery:@"pragma user_version"]; [result next]; return [result longForColumnIndex:0]; } - (void) setUserVersion:(long)userVersion { NSString *sql = [NSString stringWithFormat:@"pragma user_version = %li", userVersion]; BOOL result = [_fmdb executeUpdate:sql]; if (!result) { [NSException raise:@"SetUserVersionFailed" format:@"Failed to set user version: %@", _fmdb.lastErrorMessage]; } } - (BOOL) unsafeDestroyEverything:(NSError**)errorPtr { // NOTE: Deleting files by default because it seems simpler, more reliable // But sadly this won't work for in-memory (shared) databases if ([self isInMemoryDatabase]) { // NOTE: As of iOS 14, selecting tables from sqlite_master and deleting them does not work // They seem to be enabling "defensive" config. So we use another obscure method to clear the database // https://www.sqlite.org/c3ref/c_dbconfig_defensive.html#sqlitedbconfigresetdatabase if (sqlite3_db_config(_fmdb.sqliteHandle, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0) != SQLITE_OK) { *errorPtr = [NSError errorWithDomain:@"WMDatabase" code:0 userInfo:@{ NSLocalizedDescriptionKey: @"Failed to enable reset database mode", @"FMDBError": _fmdb.lastError }]; return NO; } if (![self executeStatements:@"vacuum" error:errorPtr]) { return NO; } if (sqlite3_db_config(_fmdb.sqliteHandle, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0) != SQLITE_OK) { *errorPtr = [NSError errorWithDomain:@"WMDatabase" code:0 userInfo:@{ NSLocalizedDescriptionKey: @"Failed to disable reset database mode", @"FMDBError": _fmdb.lastError }]; return NO; } return YES; } else { if (![_fmdb close]) { *errorPtr = [NSError errorWithDomain:@"WMDatabase" code:0 userInfo:@{ NSLocalizedDescriptionKey: @"Could not close database", @"FMDBError": _fmdb.lastError }]; return NO; } NSFileManager *manager = [NSFileManager defaultManager]; // remove database if (![manager removeItemAtPath:_path error:errorPtr]) { return NO; } // try removing database WAL files (ignore errors) [manager removeItemAtPath:[NSString stringWithFormat:@"%@-wal", _path] error:nil]; [manager removeItemAtPath:[NSString stringWithFormat:@"%@-shm", _path] error:nil]; // reopen database [self open]; return YES; } } # pragma mark - Private helpers - (BOOL) isInMemoryDatabase { return [_path isEqualToString:@":memory:"] || [_path isEqualToString:@"file::memory:"] || [_path containsString:@"?mode=memory"]; } @end ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabaseBridge.h ================================================ #import @interface WMDatabaseBridge : NSObject @end ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabaseBridge.m ================================================ #import "WMDatabaseBridge.h" #import "WMDatabaseDriver.h" #import "JSIInstaller.h" @implementation WMDatabaseBridge { NSMutableDictionary *_connections; NSMutableDictionary *_queue; // operations waiting on a connection } #pragma mark - RCTBridgeModule stuff RCT_EXPORT_MODULE(); @synthesize bridge = _bridge; - (instancetype)init { self = [super init]; if (self) { _connections = [NSMutableDictionary dictionary]; _queue = [NSMutableDictionary dictionary]; } return self; } - (dispatch_queue_t) methodQueue { // TODO: userInteractive QOS seems wrong, but that's what the Swift implementation used so far dispatch_queue_attr_t attr = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); return dispatch_queue_create("com.nozbe.watermelondb.database", attr); } + (BOOL) requiresMainQueueSetup { return NO; } #define BRIDGE_METHOD(name, args) \ RCT_EXPORT_METHOD(name:(nonnull NSNumber *)tag \ args \ resolve:(RCTPromiseResolveBlock)resolve \ reject:(RCTPromiseRejectBlock)reject \ ) #pragma mark - Initialization & Setup BRIDGE_METHOD(initialize, databaseName:(nonnull NSString *)name schemaVersion:(nonnull NSNumber *)version ) { if (_connections[tag] || _queue[tag]) { return reject(@"db.initialize.error", [NSString stringWithFormat:@"A driver with tag %@ is already set up", tag], nil); } WMDatabaseDriver *driver = [WMDatabaseDriver driverWithName:name]; WMDatabaseCompatibility compatibility = [driver isCompatibleWithSchemaVersion:[version integerValue]]; if (compatibility == WMDatabaseCompatibilityCompatible) { _connections[tag] = driver; return resolve(@{@"code": @"ok"}); } else if (compatibility == WMDatabaseCompatibilityNeedsSetup) { _queue[tag] = [NSMutableArray array]; return resolve(@{@"code": @"schema_needed"}); } else if (compatibility == WMDatabaseCompatibilityNeedsMigration) { _queue[tag] = [NSMutableArray array]; return resolve(@{@"code": @"migrations_needed", @"databaseVersion": @(driver.schemaVersion)}); } [NSException raise:@"BadArgument" format:@"Unexpected WMDatabaseCompatibility"]; } BRIDGE_METHOD(setUpWithSchema, databaseName:(nonnull NSString *)name schema:(nonnull NSString *)schema schemaVersion:(nonnull NSNumber *)version ) { WMDatabaseDriver *driver = [WMDatabaseDriver driverWithName:name]; [driver setUpWithSchema:schema schemaVersion:[version integerValue]]; [self connectDriverAsync:tag driver:driver]; return resolve(@YES); } BRIDGE_METHOD(setUpWithMigrations, databaseName:(nonnull NSString *)name migrations:(nonnull NSString *)migrationSQL fromVersion:(nonnull NSNumber *)fromVersion toVersion:(nonnull NSNumber *)toVersion ) { WMDatabaseDriver *driver = [WMDatabaseDriver driverWithName:name]; NSError *error; if ([driver setUpWithMigrations:migrationSQL fromVersion:[fromVersion integerValue] toVersion:[toVersion integerValue] error:&error]) { [self connectDriverAsync:tag driver:driver]; return resolve(@YES); } else { [self disconnectDriver:tag]; return reject(@"db.setUpWithMigrations.error", error.localizedDescription, error); } } #pragma mark - Database functions #define WITH_DRIVER(block) \ [self withDriver:tag resolve:resolve reject:reject methodName:__PRETTY_FUNCTION__ action:^(WMDatabaseDriver *driver, NSError **errorPtr) block ]; BRIDGE_METHOD(find, table:(nonnull NSString *)table id:(nonnull NSString *)id ) { WITH_DRIVER({ return [driver find:table id:id error:errorPtr]; }) } BRIDGE_METHOD(query, table:(nonnull NSString *)table query:(nonnull NSString *)query args:(nonnull NSArray *)args ) { WITH_DRIVER({ return [driver cachedQuery:table query:query args:args error:errorPtr]; }) } BRIDGE_METHOD(queryIds, query:(nonnull NSString *)query args:(nonnull NSArray *)args ) { WITH_DRIVER({ return [driver queryIds:query args:args error:errorPtr]; }) } BRIDGE_METHOD(unsafeQueryRaw, query:(nonnull NSString *)query args:(nonnull NSArray *)args ) { WITH_DRIVER({ return [driver unsafeQueryRaw:query args:args error:errorPtr]; }) } BRIDGE_METHOD(count, query:(nonnull NSString *)query args:(nonnull NSArray *)args ) { WITH_DRIVER({ return [driver count:query args:args error:errorPtr]; }) } BRIDGE_METHOD(batchJSON, operations:(NSString *)serializedOperations ) { WITH_DRIVER({ NSData *jsonData = [serializedOperations dataUsingEncoding:NSUTF8StringEncoding]; NSArray *operations = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:errorPtr]; if (!operations) { return @NO; } [driver batch:operations error:errorPtr]; return @YES; }) } BRIDGE_METHOD(unsafeResetDatabase, schema:(nonnull NSString *)schema schemaVersion:(nonnull NSNumber *)version ) { WITH_DRIVER({ [driver unsafeResetDatabaseWithSchema:schema schemaVersion:[version integerValue] error:errorPtr]; return @YES; }) } BRIDGE_METHOD(getLocal, key:(nonnull NSString *)key ) { WITH_DRIVER({ return [driver getLocal:key error:errorPtr]; }) } #pragma mark - JSI Support RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(initializeJSI) { __block RCTCxxBridge *bridge = (RCTCxxBridge *) _bridge; dispatch_sync([self methodQueue], ^{ installWatermelonJSI(bridge); }); return @YES; } RCT_EXPORT_METHOD(provideSyncJson:(nonnull NSNumber *)id json:(nonnull NSString *)json resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { NSError *error; watermelondbProvideSyncJson(id.intValue, [json dataUsingEncoding:NSUTF8StringEncoding], &error); if (error) { reject(@"db.provideSyncJson.error", error.localizedDescription, error); } else { resolve(@YES); } } RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getRandomBytes:(nonnull NSNumber *)count) { size_t batchSize = 256; if (![count isEqualToNumber:@(batchSize)]) { [NSException raise:@"getRandomBytes" format:@"Expected getRandomBytes to be called with 256"]; } uint8_t randomBuffer[batchSize]; arc4random_buf(&randomBuffer, batchSize); NSMutableArray *result = [NSMutableArray array]; for (size_t i = 0; i < batchSize; i++) { result[i] = @(randomBuffer[i]); } return result; } RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getRandomIds) { static const char alphabet[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; size_t batchSize = 64; char randomIds[batchSize * 17]; for (size_t i = 0; i < batchSize; i++) { for (size_t j = 0; j < 16; j++) { randomIds[i*17 + j] = alphabet[arc4random_uniform(62)]; } if (i != (batchSize - 1)) { randomIds[i*17 + 16] = ','; } } return [NSString stringWithCString:randomIds encoding:NSUTF8StringEncoding]; } #pragma mark - Helpers - (void) connectDriverAsync:(nonnull NSNumber *)tag driver:(WMDatabaseDriver *)driver { _connections[tag] = driver; NSArray *queuedOperations = _queue[tag]; [_queue removeObjectForKey:tag]; for (void (^action)(void) in queuedOperations) { action(); } } - (void) disconnectDriver:(nonnull NSNumber *)tag { [_connections removeObjectForKey:tag]; // NOTE: In Swift, queued operations are executed, which seems wrong [_queue removeObjectForKey:tag]; } - (void) withDriver:(nonnull NSNumber *)tag resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject methodName:(const char *)methodName action:(id (^)(WMDatabaseDriver *, NSError**))action { WMDatabaseDriver *driver = _connections[tag]; if (driver) { NSError *error; id result = action(driver, &error); if (error) { NSString *errorName = [NSString stringWithFormat:@"db.%s.error", methodName]; return reject(errorName, error.localizedDescription, error); } else { return resolve(result); } } else { NSLog(@"Operation for driver %@ enqueued", tag); NSMutableArray *queuedOperations = _queue[tag]; // try again when driver is ready void (^queueOperation)(void) = ^() { [self withDriver:tag resolve:resolve reject:reject methodName:methodName action:action]; }; [queuedOperations addObject:queueOperation]; } } @end ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabaseDriver.h ================================================ #import "WMDatabase.h" NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, WMDatabaseCompatibility) { WMDatabaseCompatibilityCompatible, WMDatabaseCompatibilityNeedsSetup, WMDatabaseCompatibilityNeedsMigration, }; @interface WMDatabaseDriver : NSObject @property (readwrite, strong, nonatomic) WMDatabase *db; @property (readonly, strong, nonatomic) NSMutableDictionary *> *cachedRecords; #pragma mark - Initialization + (instancetype) driverWithName:(NSString *)dbName; #pragma mark - Setup - (long) schemaVersion; - (WMDatabaseCompatibility) isCompatibleWithSchemaVersion:(long)version; - (void) setUpWithSchema:(NSString *)sql schemaVersion:(long)version; - (BOOL) setUpWithMigrations:(NSString *)sql fromVersion:(long)fromVersion toVersion:(long)toVersion error:(NSError **)errorPtr; #pragma mark - Database functions - (id) find:(NSString *)table id:(NSString *)id error:(NSError **)errorPtr; - (NSArray *) cachedQuery:(NSString *)table query:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; - (NSArray *) queryIds:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; - (NSArray *) unsafeQueryRaw:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; - (NSNumber *) count:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr; - (BOOL) batch:(NSArray *)operations error:(NSError **)errorPtr; - (NSString *) getLocal:(NSString *)key error:(NSError **)errorPtr; - (BOOL) unsafeResetDatabaseWithSchema:(NSString *)sql schemaVersion:(long)version error:(NSError **)errorPtr; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/ios/WatermelonDB/objc/WMDatabaseDriver.m ================================================ #import "WMDatabaseDriver.h" @implementation WMDatabaseDriver #pragma mark - Initialization - (instancetype) initWithName:(NSString *)dbName { if (self = [super init]) { _db = [WMDatabase databaseWithPath:[self pathForName:dbName]]; _cachedRecords = [NSMutableDictionary dictionary]; } return self; } + (instancetype) driverWithName:(NSString *)dbName { return [[self alloc] initWithName:dbName]; } - (NSString *) pathForName:(NSString *)dbName { // If starts with `file:` or contains `/`, it's a path! if ([dbName hasPrefix:@"file:"] || [dbName containsString:@"/"]) { return dbName; } else { NSURL *url = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:false error:nil]; return [[url URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.db", dbName]] path]; } } #pragma mark - Setup - (long) schemaVersion { return _db.userVersion; } - (WMDatabaseCompatibility) isCompatibleWithSchemaVersion:(long)version { long dbVersion = _db.userVersion; if (version == dbVersion) { return WMDatabaseCompatibilityCompatible; } else if (dbVersion == 0) { return WMDatabaseCompatibilityNeedsSetup; } else if (dbVersion >= 1 && dbVersion < version) { return WMDatabaseCompatibilityNeedsMigration; } else { // TODO: Add logger customization NSLog(@"Database has newer version (%li) than what the app supports (%li). Will reset database.", dbVersion, version); return WMDatabaseCompatibilityNeedsSetup; } } - (void) setUpWithSchema:(NSString *)sql schemaVersion:(long)version { NSError *error; if (![self unsafeResetDatabaseWithSchema:sql schemaVersion:version error:&error]) { [NSException raise:@"SetUpWithSchemaFailed" format:@"Error while setting up the database: %@", error]; } } - (BOOL) setUpWithMigrations:(NSString *)sql fromVersion:(long)fromVersion toVersion:(long)toVersion error:(NSError **)errorPtr { long databaseVersion = _db.userVersion; if (databaseVersion != fromVersion) { [NSException raise:@"IncompatibleMigrations" format:@"Incompatbile migration set applied. DB: %li, migration: %li", databaseVersion, fromVersion]; } __block WMDatabase *db = _db; BOOL txnResult = [db inTransaction:^BOOL(NSError **innerErrorPtr) { if (![db executeStatements:sql error:innerErrorPtr]) { return NO; } [db setUserVersion:toVersion]; return YES; } error:errorPtr]; return txnResult; } #pragma mark - Database functions - (id) find:(NSString *)table id:(NSString *)id error:(NSError **)errorPtr { if ([self isCached:table id:id]) { return id; } NSString *query = [NSString stringWithFormat:@"select * from `%@` where id == ? limit 1", table]; FMResultSet *result = [_db queryRaw:query args:@[id] error:errorPtr]; if (!result) { return nil; } if (![result next]) { return [NSNull null]; } [self markAsCached:table id:id]; return [result resultDictionary]; } - (NSArray *) cachedQuery:(NSString *)table query:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { NSMutableArray *resultArray = [NSMutableArray array]; FMResultSet *result = [_db queryRaw:query args:args error:errorPtr]; if (!result) { return nil; } while ([result next]) { NSString *id = [result stringForColumn:@"id"]; if ([self isCached:table id:id]) { [resultArray addObject:id]; } else { [self markAsCached:table id:id]; [resultArray addObject:[result resultDictionary]]; } } return resultArray; } - (NSArray *) queryIds:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { NSMutableArray *resultArray = [NSMutableArray array]; FMResultSet *result = [_db queryRaw:query args:args error:errorPtr]; if (!result) { return nil; } while ([result next]) { [resultArray addObject:[result stringForColumn:@"id"]]; } return resultArray; } - (NSArray *) unsafeQueryRaw:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { NSMutableArray *resultArray = [NSMutableArray array]; FMResultSet *result = [_db queryRaw:query args:args error:errorPtr]; if (!result) { return nil; } while ([result next]) { [resultArray addObject:[result resultDictionary]]; } return resultArray; } - (NSNumber *) count:(NSString *)query args:(NSArray *)args error:(NSError **)errorPtr { return [_db count:query args:args error:errorPtr]; } // Look for NativeBridgeBatchOperation type - (BOOL) batch:(NSArray *)operations error:(NSError **)errorPtr { // TODO: Refactor for perf to use cacheKeys ala Database.cpp ? NSMutableArray *addedIds = [NSMutableArray array]; NSMutableArray *removedIds = [NSMutableArray array]; __block WMDatabase *db = _db; BOOL txnResult = [db inTransaction:^BOOL(NSError **innerErrorPtr) { for (NSArray *operation in operations) { NSNumber *cacheBehavior = operation[0]; NSString *table = operation[1]; NSString *sql = operation[2]; NSArray *argBatches = operation[3]; for (NSArray *args in argBatches) { if (![db executeQuery:sql args:args error:innerErrorPtr]) { return NO; } if (cacheBehavior.intValue == 1) { [addedIds addObject:@[table, args[0]]]; } else if (cacheBehavior.intValue == -1) { [removedIds addObject:@[table, args[0]]]; } } } return YES; } error:errorPtr]; if (!txnResult) { return NO; } for (NSArray *pair in addedIds) { [self markAsCached:pair[0] id:pair[1]]; } for (NSArray *pair in removedIds) { [self removeFromCache:pair[0] id:pair[1]]; } return YES; } - (NSString *) getLocal:(NSString *)key error:(NSError **)errorPtr { // TODO: Shouldn't this be moved to JS, handled by queryRaw? FMResultSet *result = [_db queryRaw:@"select `value` from `local_storage` where `key` = ?" args:@[key] error:errorPtr]; if (!result) { return nil; } if (![result next]) { return [NSNull null]; } return [result stringForColumn:@"value"]; } - (BOOL) unsafeResetDatabaseWithSchema:(NSString *)sql schemaVersion:(long)version error:(NSError **)errorPtr { if (![_db unsafeDestroyEverything:errorPtr]) { return NO; } _cachedRecords = [NSMutableDictionary dictionary]; __block WMDatabase *db = _db; BOOL txnResult = [db inTransaction:^BOOL(NSError **innerErrorPtr) { if (![db executeStatements:sql error:innerErrorPtr]) { return NO; } [db setUserVersion:version]; return YES; } error:errorPtr]; return txnResult; } #pragma mark - Record caching - (BOOL) isCached:(NSString *)table id:(NSString *)id { if ([_cachedRecords[table] containsObject:id]) { return YES; } return NO; } - (void) markAsCached:(NSString *)table id:(NSString *)id { NSMutableSet *set = _cachedRecords[table]; if (!set) { set = [NSMutableSet set]; _cachedRecords[table] = set; } [set addObject:id]; } - (void) removeFromCache:(NSString *)table id:(NSString *)id { [_cachedRecords[table] removeObject:id]; } @end ================================================ FILE: native/iosTest/.xcode.env ================================================ # This `.xcode.env` file is versioned and is used to source the environment # used when running script phases inside Xcode. # To customize your local environment, you can create an `.xcode.env.local` # file that is not versioned. # NODE_BINARY variable contains the PATH to the node executable. # # Customize the NODE_BINARY variable here. # For example, to use nvm with brew, add the following line # . "$(brew --prefix nvm)/nvm.sh" --no-use export NODE_BINARY=$(command -v node) ================================================ FILE: native/iosTest/Podfile ================================================ # source 'https://github.com/CocoaPods/Specs.git' workspace 'WatermelonTester.xcworkspace' require_relative '../../node_modules/react-native/scripts/react_native_pods' require_relative '../../node_modules/@react-native-community/cli-platform-ios/native_modules' platform :ios, '15.0' hermes_enabled = true should_use_frameworks = false if should_use_frameworks use_frameworks! linkage: :static $static_framework = [ 'WatermelonDB', 'simdjson', ] end Pod::Sandbox::FileAccessor.send(:define_method, :docs) do # work around https://github.com/CocoaPods/CocoaPods/issues/11753#issuecomment-1425802717 # p "Monkey-patched docs :)" return [] end target 'WatermelonTester' do config = use_native_modules! flags = get_default_flags() use_react_native!( path: '../../node_modules/react-native', hermes_enabled: hermes_enabled, fabric_enabled: false, app_path: "#{Pod::Config.instance.installation_root}/../.." ) pod 'WatermelonDB', path: '../../' pod 'simdjson', path: '../../node_modules/@nozbe/simdjson', modular_headers: true, inhibit_warnings: true target 'WatermelonTesterTests' do inherit! :complete end end if should_use_frameworks pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {} installer.pod_targets.each do |pod| if $static_framework.include?(pod.name) def pod.build_type; Pod::BuildType.static_library # >= 1.9 end end end end end post_install do |installer| react_native_post_install( installer, '../../node_modules/react-native', mac_catalyst_enabled: false, ) installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= %w[ $(inherited) CCACHE_HACK_TOOLCHAIN_DIR="$(TOOLCHAIN_DIR)" ] # ccache bails out of caching if clang modules are enabled, but this breaks some packages # you also have to be careful about PCHs # sometimes you might have to manually add a system framework to project Link phase # more info: https://pspdfkit.com/blog/2015/ccache-for-fun-and-profit/ # TODO: Bring back CC # config.build_settings['CC'] ||= ['$(SRCROOT)/../../../scripts/ccache-clang'] # case target.name # when 'Nimble' # config.build_settings['CLANG_ENABLE_MODULES'] ||= ['YES'] # else config.build_settings['CLANG_ENABLE_MODULES'] ||= ['NO'] # end # Fixes https://github.com/facebook/react-native/issues/34106 if target.name == 'React-Codegen' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4' end end end end ================================================ FILE: native/iosTest/Pods/DoubleConversion/LICENSE ================================================ Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: native/iosTest/Pods/DoubleConversion/README ================================================ http://code.google.com/p/double-conversion This project (double-conversion) provides binary-decimal and decimal-binary routines for IEEE doubles. The library consists of efficient conversion routines that have been extracted from the V8 JavaScript engine. The code has been refactored and improved so that it can be used more easily in other projects. There is extensive documentation in src/double-conversion.h. Other examples can be found in test/cctest/test-conversions.cc. Building ======== This library can be built with scons [0] or cmake [1]. The checked-in Makefile simply forwards to scons, and provides a shortcut to run all tests: make make test Scons ----- The easiest way to install this library is to use `scons`. It builds the static and shared library, and is set up to install those at the correct locations: scons install Use the `DESTDIR` option to change the target directory: scons DESTDIR=alternative_directory install Cmake ----- To use cmake run `cmake .` in the root directory. This overwrites the existing Makefile. Use `-DBUILD_SHARED_LIBS=ON` to enable the compilation of shared libraries. Note that this disables static libraries. There is currently no way to build both libraries at the same time with cmake. Use `-DBUILD_TESTING=ON` to build the test executable. cmake . -DBUILD_TESTING=ON make test/cctest/cctest --list | tr -d '<' | xargs test/cctest/cctest [0]: http://www.scons.org [1]: http://www.cmake.org ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/bignum-dtoa.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "bignum-dtoa.h" #include "bignum.h" #include "ieee.h" namespace double_conversion { static int NormalizedExponent(uint64_t significand, int exponent) { ASSERT(significand != 0); while ((significand & Double::kHiddenBit) == 0) { significand = significand << 1; exponent = exponent - 1; } return exponent; } // Forward declarations: // Returns an estimation of k such that 10^(k-1) <= v < 10^k. static int EstimatePower(int exponent); // Computes v / 10^estimated_power exactly, as a ratio of two bignums, numerator // and denominator. static void InitialScaledStartValues(uint64_t significand, int exponent, bool lower_boundary_is_closer, int estimated_power, bool need_boundary_deltas, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus); // Multiplies numerator/denominator so that its values lies in the range 1-10. // Returns decimal_point s.t. // v = numerator'/denominator' * 10^(decimal_point-1) // where numerator' and denominator' are the values of numerator and // denominator after the call to this function. static void FixupMultiply10(int estimated_power, bool is_even, int* decimal_point, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus); // Generates digits from the left to the right and stops when the generated // digits yield the shortest decimal representation of v. static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus, bool is_even, Vector buffer, int* length); // Generates 'requested_digits' after the decimal point. static void BignumToFixed(int requested_digits, int* decimal_point, Bignum* numerator, Bignum* denominator, Vector(buffer), int* length); // Generates 'count' digits of numerator/denominator. // Once 'count' digits have been produced rounds the result depending on the // remainder (remainders of exactly .5 round upwards). Might update the // decimal_point when rounding up (for example for 0.9999). static void GenerateCountedDigits(int count, int* decimal_point, Bignum* numerator, Bignum* denominator, Vector(buffer), int* length); void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, Vector buffer, int* length, int* decimal_point) { ASSERT(v > 0); ASSERT(!Double(v).IsSpecial()); uint64_t significand; int exponent; bool lower_boundary_is_closer; if (mode == BIGNUM_DTOA_SHORTEST_SINGLE) { float f = static_cast(v); ASSERT(f == v); significand = Single(f).Significand(); exponent = Single(f).Exponent(); lower_boundary_is_closer = Single(f).LowerBoundaryIsCloser(); } else { significand = Double(v).Significand(); exponent = Double(v).Exponent(); lower_boundary_is_closer = Double(v).LowerBoundaryIsCloser(); } bool need_boundary_deltas = (mode == BIGNUM_DTOA_SHORTEST || mode == BIGNUM_DTOA_SHORTEST_SINGLE); bool is_even = (significand & 1) == 0; int normalized_exponent = NormalizedExponent(significand, exponent); // estimated_power might be too low by 1. int estimated_power = EstimatePower(normalized_exponent); // Shortcut for Fixed. // The requested digits correspond to the digits after the point. If the // number is much too small, then there is no need in trying to get any // digits. if (mode == BIGNUM_DTOA_FIXED && -estimated_power - 1 > requested_digits) { buffer[0] = '\0'; *length = 0; // Set decimal-point to -requested_digits. This is what Gay does. // Note that it should not have any effect anyways since the string is // empty. *decimal_point = -requested_digits; return; } Bignum numerator; Bignum denominator; Bignum delta_minus; Bignum delta_plus; // Make sure the bignum can grow large enough. The smallest double equals // 4e-324. In this case the denominator needs fewer than 324*4 binary digits. // The maximum double is 1.7976931348623157e308 which needs fewer than // 308*4 binary digits. ASSERT(Bignum::kMaxSignificantBits >= 324*4); InitialScaledStartValues(significand, exponent, lower_boundary_is_closer, estimated_power, need_boundary_deltas, &numerator, &denominator, &delta_minus, &delta_plus); // We now have v = (numerator / denominator) * 10^estimated_power. FixupMultiply10(estimated_power, is_even, decimal_point, &numerator, &denominator, &delta_minus, &delta_plus); // We now have v = (numerator / denominator) * 10^(decimal_point-1), and // 1 <= (numerator + delta_plus) / denominator < 10 switch (mode) { case BIGNUM_DTOA_SHORTEST: case BIGNUM_DTOA_SHORTEST_SINGLE: GenerateShortestDigits(&numerator, &denominator, &delta_minus, &delta_plus, is_even, buffer, length); break; case BIGNUM_DTOA_FIXED: BignumToFixed(requested_digits, decimal_point, &numerator, &denominator, buffer, length); break; case BIGNUM_DTOA_PRECISION: GenerateCountedDigits(requested_digits, decimal_point, &numerator, &denominator, buffer, length); break; default: UNREACHABLE(); } buffer[*length] = '\0'; } // The procedure starts generating digits from the left to the right and stops // when the generated digits yield the shortest decimal representation of v. A // decimal representation of v is a number lying closer to v than to any other // double, so it converts to v when read. // // This is true if d, the decimal representation, is between m- and m+, the // upper and lower boundaries. d must be strictly between them if !is_even. // m- := (numerator - delta_minus) / denominator // m+ := (numerator + delta_plus) / denominator // // Precondition: 0 <= (numerator+delta_plus) / denominator < 10. // If 1 <= (numerator+delta_plus) / denominator < 10 then no leading 0 digit // will be produced. This should be the standard precondition. static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus, bool is_even, Vector buffer, int* length) { // Small optimization: if delta_minus and delta_plus are the same just reuse // one of the two bignums. if (Bignum::Equal(*delta_minus, *delta_plus)) { delta_plus = delta_minus; } *length = 0; for (;;) { uint16_t digit; digit = numerator->DivideModuloIntBignum(*denominator); ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. // digit = numerator / denominator (integer division). // numerator = numerator % denominator. buffer[(*length)++] = static_cast(digit + '0'); // Can we stop already? // If the remainder of the division is less than the distance to the lower // boundary we can stop. In this case we simply round down (discarding the // remainder). // Similarly we test if we can round up (using the upper boundary). bool in_delta_room_minus; bool in_delta_room_plus; if (is_even) { in_delta_room_minus = Bignum::LessEqual(*numerator, *delta_minus); } else { in_delta_room_minus = Bignum::Less(*numerator, *delta_minus); } if (is_even) { in_delta_room_plus = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0; } else { in_delta_room_plus = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0; } if (!in_delta_room_minus && !in_delta_room_plus) { // Prepare for next iteration. numerator->Times10(); delta_minus->Times10(); // We optimized delta_plus to be equal to delta_minus (if they share the // same value). So don't multiply delta_plus if they point to the same // object. if (delta_minus != delta_plus) { delta_plus->Times10(); } } else if (in_delta_room_minus && in_delta_room_plus) { // Let's see if 2*numerator < denominator. // If yes, then the next digit would be < 5 and we can round down. int compare = Bignum::PlusCompare(*numerator, *numerator, *denominator); if (compare < 0) { // Remaining digits are less than .5. -> Round down (== do nothing). } else if (compare > 0) { // Remaining digits are more than .5 of denominator. -> Round up. // Note that the last digit could not be a '9' as otherwise the whole // loop would have stopped earlier. // We still have an assert here in case the preconditions were not // satisfied. ASSERT(buffer[(*length) - 1] != '9'); buffer[(*length) - 1]++; } else { // Halfway case. // TODO(floitsch): need a way to solve half-way cases. // For now let's round towards even (since this is what Gay seems to // do). if ((buffer[(*length) - 1] - '0') % 2 == 0) { // Round down => Do nothing. } else { ASSERT(buffer[(*length) - 1] != '9'); buffer[(*length) - 1]++; } } return; } else if (in_delta_room_minus) { // Round down (== do nothing). return; } else { // in_delta_room_plus // Round up. // Note again that the last digit could not be '9' since this would have // stopped the loop earlier. // We still have an ASSERT here, in case the preconditions were not // satisfied. ASSERT(buffer[(*length) -1] != '9'); buffer[(*length) - 1]++; return; } } } // Let v = numerator / denominator < 10. // Then we generate 'count' digits of d = x.xxxxx... (without the decimal point) // from left to right. Once 'count' digits have been produced we decide wether // to round up or down. Remainders of exactly .5 round upwards. Numbers such // as 9.999999 propagate a carry all the way, and change the // exponent (decimal_point), when rounding upwards. static void GenerateCountedDigits(int count, int* decimal_point, Bignum* numerator, Bignum* denominator, Vector buffer, int* length) { ASSERT(count >= 0); for (int i = 0; i < count - 1; ++i) { uint16_t digit; digit = numerator->DivideModuloIntBignum(*denominator); ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. // digit = numerator / denominator (integer division). // numerator = numerator % denominator. buffer[i] = static_cast(digit + '0'); // Prepare for next iteration. numerator->Times10(); } // Generate the last digit. uint16_t digit; digit = numerator->DivideModuloIntBignum(*denominator); if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) { digit++; } ASSERT(digit <= 10); buffer[count - 1] = static_cast(digit + '0'); // Correct bad digits (in case we had a sequence of '9's). Propagate the // carry until we hat a non-'9' or til we reach the first digit. for (int i = count - 1; i > 0; --i) { if (buffer[i] != '0' + 10) break; buffer[i] = '0'; buffer[i - 1]++; } if (buffer[0] == '0' + 10) { // Propagate a carry past the top place. buffer[0] = '1'; (*decimal_point)++; } *length = count; } // Generates 'requested_digits' after the decimal point. It might omit // trailing '0's. If the input number is too small then no digits at all are // generated (ex.: 2 fixed digits for 0.00001). // // Input verifies: 1 <= (numerator + delta) / denominator < 10. static void BignumToFixed(int requested_digits, int* decimal_point, Bignum* numerator, Bignum* denominator, Vector(buffer), int* length) { // Note that we have to look at more than just the requested_digits, since // a number could be rounded up. Example: v=0.5 with requested_digits=0. // Even though the power of v equals 0 we can't just stop here. if (-(*decimal_point) > requested_digits) { // The number is definitively too small. // Ex: 0.001 with requested_digits == 1. // Set decimal-point to -requested_digits. This is what Gay does. // Note that it should not have any effect anyways since the string is // empty. *decimal_point = -requested_digits; *length = 0; return; } else if (-(*decimal_point) == requested_digits) { // We only need to verify if the number rounds down or up. // Ex: 0.04 and 0.06 with requested_digits == 1. ASSERT(*decimal_point == -requested_digits); // Initially the fraction lies in range (1, 10]. Multiply the denominator // by 10 so that we can compare more easily. denominator->Times10(); if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) { // If the fraction is >= 0.5 then we have to include the rounded // digit. buffer[0] = '1'; *length = 1; (*decimal_point)++; } else { // Note that we caught most of similar cases earlier. *length = 0; } return; } else { // The requested digits correspond to the digits after the point. // The variable 'needed_digits' includes the digits before the point. int needed_digits = (*decimal_point) + requested_digits; GenerateCountedDigits(needed_digits, decimal_point, numerator, denominator, buffer, length); } } // Returns an estimation of k such that 10^(k-1) <= v < 10^k where // v = f * 2^exponent and 2^52 <= f < 2^53. // v is hence a normalized double with the given exponent. The output is an // approximation for the exponent of the decimal approimation .digits * 10^k. // // The result might undershoot by 1 in which case 10^k <= v < 10^k+1. // Note: this property holds for v's upper boundary m+ too. // 10^k <= m+ < 10^k+1. // (see explanation below). // // Examples: // EstimatePower(0) => 16 // EstimatePower(-52) => 0 // // Note: e >= 0 => EstimatedPower(e) > 0. No similar claim can be made for e<0. static int EstimatePower(int exponent) { // This function estimates log10 of v where v = f*2^e (with e == exponent). // Note that 10^floor(log10(v)) <= v, but v <= 10^ceil(log10(v)). // Note that f is bounded by its container size. Let p = 53 (the double's // significand size). Then 2^(p-1) <= f < 2^p. // // Given that log10(v) == log2(v)/log2(10) and e+(len(f)-1) is quite close // to log2(v) the function is simplified to (e+(len(f)-1)/log2(10)). // The computed number undershoots by less than 0.631 (when we compute log3 // and not log10). // // Optimization: since we only need an approximated result this computation // can be performed on 64 bit integers. On x86/x64 architecture the speedup is // not really measurable, though. // // Since we want to avoid overshooting we decrement by 1e10 so that // floating-point imprecisions don't affect us. // // Explanation for v's boundary m+: the computation takes advantage of // the fact that 2^(p-1) <= f < 2^p. Boundaries still satisfy this requirement // (even for denormals where the delta can be much more important). const double k1Log10 = 0.30102999566398114; // 1/lg(10) // For doubles len(f) == 53 (don't forget the hidden bit). const int kSignificandSize = Double::kSignificandSize; double estimate = ceil((exponent + kSignificandSize - 1) * k1Log10 - 1e-10); return static_cast(estimate); } // See comments for InitialScaledStartValues. static void InitialScaledStartValuesPositiveExponent( uint64_t significand, int exponent, int estimated_power, bool need_boundary_deltas, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { // A positive exponent implies a positive power. ASSERT(estimated_power >= 0); // Since the estimated_power is positive we simply multiply the denominator // by 10^estimated_power. // numerator = v. numerator->AssignUInt64(significand); numerator->ShiftLeft(exponent); // denominator = 10^estimated_power. denominator->AssignPowerUInt16(10, estimated_power); if (need_boundary_deltas) { // Introduce a common denominator so that the deltas to the boundaries are // integers. denominator->ShiftLeft(1); numerator->ShiftLeft(1); // Let v = f * 2^e, then m+ - v = 1/2 * 2^e; With the common // denominator (of 2) delta_plus equals 2^e. delta_plus->AssignUInt16(1); delta_plus->ShiftLeft(exponent); // Same for delta_minus. The adjustments if f == 2^p-1 are done later. delta_minus->AssignUInt16(1); delta_minus->ShiftLeft(exponent); } } // See comments for InitialScaledStartValues static void InitialScaledStartValuesNegativeExponentPositivePower( uint64_t significand, int exponent, int estimated_power, bool need_boundary_deltas, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { // v = f * 2^e with e < 0, and with estimated_power >= 0. // This means that e is close to 0 (have a look at how estimated_power is // computed). // numerator = significand // since v = significand * 2^exponent this is equivalent to // numerator = v * / 2^-exponent numerator->AssignUInt64(significand); // denominator = 10^estimated_power * 2^-exponent (with exponent < 0) denominator->AssignPowerUInt16(10, estimated_power); denominator->ShiftLeft(-exponent); if (need_boundary_deltas) { // Introduce a common denominator so that the deltas to the boundaries are // integers. denominator->ShiftLeft(1); numerator->ShiftLeft(1); // Let v = f * 2^e, then m+ - v = 1/2 * 2^e; With the common // denominator (of 2) delta_plus equals 2^e. // Given that the denominator already includes v's exponent the distance // to the boundaries is simply 1. delta_plus->AssignUInt16(1); // Same for delta_minus. The adjustments if f == 2^p-1 are done later. delta_minus->AssignUInt16(1); } } // See comments for InitialScaledStartValues static void InitialScaledStartValuesNegativeExponentNegativePower( uint64_t significand, int exponent, int estimated_power, bool need_boundary_deltas, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { // Instead of multiplying the denominator with 10^estimated_power we // multiply all values (numerator and deltas) by 10^-estimated_power. // Use numerator as temporary container for power_ten. Bignum* power_ten = numerator; power_ten->AssignPowerUInt16(10, -estimated_power); if (need_boundary_deltas) { // Since power_ten == numerator we must make a copy of 10^estimated_power // before we complete the computation of the numerator. // delta_plus = delta_minus = 10^estimated_power delta_plus->AssignBignum(*power_ten); delta_minus->AssignBignum(*power_ten); } // numerator = significand * 2 * 10^-estimated_power // since v = significand * 2^exponent this is equivalent to // numerator = v * 10^-estimated_power * 2 * 2^-exponent. // Remember: numerator has been abused as power_ten. So no need to assign it // to itself. ASSERT(numerator == power_ten); numerator->MultiplyByUInt64(significand); // denominator = 2 * 2^-exponent with exponent < 0. denominator->AssignUInt16(1); denominator->ShiftLeft(-exponent); if (need_boundary_deltas) { // Introduce a common denominator so that the deltas to the boundaries are // integers. numerator->ShiftLeft(1); denominator->ShiftLeft(1); // With this shift the boundaries have their correct value, since // delta_plus = 10^-estimated_power, and // delta_minus = 10^-estimated_power. // These assignments have been done earlier. // The adjustments if f == 2^p-1 (lower boundary is closer) are done later. } } // Let v = significand * 2^exponent. // Computes v / 10^estimated_power exactly, as a ratio of two bignums, numerator // and denominator. The functions GenerateShortestDigits and // GenerateCountedDigits will then convert this ratio to its decimal // representation d, with the required accuracy. // Then d * 10^estimated_power is the representation of v. // (Note: the fraction and the estimated_power might get adjusted before // generating the decimal representation.) // // The initial start values consist of: // - a scaled numerator: s.t. numerator/denominator == v / 10^estimated_power. // - a scaled (common) denominator. // optionally (used by GenerateShortestDigits to decide if it has the shortest // decimal converting back to v): // - v - m-: the distance to the lower boundary. // - m+ - v: the distance to the upper boundary. // // v, m+, m-, and therefore v - m- and m+ - v all share the same denominator. // // Let ep == estimated_power, then the returned values will satisfy: // v / 10^ep = numerator / denominator. // v's boundarys m- and m+: // m- / 10^ep == v / 10^ep - delta_minus / denominator // m+ / 10^ep == v / 10^ep + delta_plus / denominator // Or in other words: // m- == v - delta_minus * 10^ep / denominator; // m+ == v + delta_plus * 10^ep / denominator; // // Since 10^(k-1) <= v < 10^k (with k == estimated_power) // or 10^k <= v < 10^(k+1) // we then have 0.1 <= numerator/denominator < 1 // or 1 <= numerator/denominator < 10 // // It is then easy to kickstart the digit-generation routine. // // The boundary-deltas are only filled if the mode equals BIGNUM_DTOA_SHORTEST // or BIGNUM_DTOA_SHORTEST_SINGLE. static void InitialScaledStartValues(uint64_t significand, int exponent, bool lower_boundary_is_closer, int estimated_power, bool need_boundary_deltas, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { if (exponent >= 0) { InitialScaledStartValuesPositiveExponent( significand, exponent, estimated_power, need_boundary_deltas, numerator, denominator, delta_minus, delta_plus); } else if (estimated_power >= 0) { InitialScaledStartValuesNegativeExponentPositivePower( significand, exponent, estimated_power, need_boundary_deltas, numerator, denominator, delta_minus, delta_plus); } else { InitialScaledStartValuesNegativeExponentNegativePower( significand, exponent, estimated_power, need_boundary_deltas, numerator, denominator, delta_minus, delta_plus); } if (need_boundary_deltas && lower_boundary_is_closer) { // The lower boundary is closer at half the distance of "normal" numbers. // Increase the common denominator and adapt all but the delta_minus. denominator->ShiftLeft(1); // *2 numerator->ShiftLeft(1); // *2 delta_plus->ShiftLeft(1); // *2 } } // This routine multiplies numerator/denominator so that its values lies in the // range 1-10. That is after a call to this function we have: // 1 <= (numerator + delta_plus) /denominator < 10. // Let numerator the input before modification and numerator' the argument // after modification, then the output-parameter decimal_point is such that // numerator / denominator * 10^estimated_power == // numerator' / denominator' * 10^(decimal_point - 1) // In some cases estimated_power was too low, and this is already the case. We // then simply adjust the power so that 10^(k-1) <= v < 10^k (with k == // estimated_power) but do not touch the numerator or denominator. // Otherwise the routine multiplies the numerator and the deltas by 10. static void FixupMultiply10(int estimated_power, bool is_even, int* decimal_point, Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { bool in_range; if (is_even) { // For IEEE doubles half-way cases (in decimal system numbers ending with 5) // are rounded to the closest floating-point number with even significand. in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0; } else { in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0; } if (in_range) { // Since numerator + delta_plus >= denominator we already have // 1 <= numerator/denominator < 10. Simply update the estimated_power. *decimal_point = estimated_power + 1; } else { *decimal_point = estimated_power; numerator->Times10(); if (Bignum::Equal(*delta_minus, *delta_plus)) { delta_minus->Times10(); delta_plus->AssignBignum(*delta_minus); } else { delta_minus->Times10(); delta_plus->Times10(); } } } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/bignum-dtoa.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_ #define DOUBLE_CONVERSION_BIGNUM_DTOA_H_ #include "utils.h" namespace double_conversion { enum BignumDtoaMode { // Return the shortest correct representation. // For example the output of 0.299999999999999988897 is (the less accurate but // correct) 0.3. BIGNUM_DTOA_SHORTEST, // Same as BIGNUM_DTOA_SHORTEST but for single-precision floats. BIGNUM_DTOA_SHORTEST_SINGLE, // Return a fixed number of digits after the decimal point. // For instance fixed(0.1, 4) becomes 0.1000 // If the input number is big, the output will be big. BIGNUM_DTOA_FIXED, // Return a fixed number of digits, no matter what the exponent is. BIGNUM_DTOA_PRECISION }; // Converts the given double 'v' to ascii. // The result should be interpreted as buffer * 10^(point-length). // The buffer will be null-terminated. // // The input v must be > 0 and different from NaN, and Infinity. // // The output depends on the given mode: // - SHORTEST: produce the least amount of digits for which the internal // identity requirement is still satisfied. If the digits are printed // (together with the correct exponent) then reading this number will give // 'v' again. The buffer will choose the representation that is closest to // 'v'. If there are two at the same distance, than the number is round up. // In this mode the 'requested_digits' parameter is ignored. // - FIXED: produces digits necessary to print a given number with // 'requested_digits' digits after the decimal point. The produced digits // might be too short in which case the caller has to fill the gaps with '0's. // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. // Halfway cases are rounded up. The call toFixed(0.15, 2) thus returns // buffer="2", point=0. // Note: the length of the returned buffer has no meaning wrt the significance // of its digits. That is, just because it contains '0's does not mean that // any other digit would not satisfy the internal identity requirement. // - PRECISION: produces 'requested_digits' where the first digit is not '0'. // Even though the length of produced digits usually equals // 'requested_digits', the function is allowed to return fewer digits, in // which case the caller has to fill the missing digits with '0's. // Halfway cases are again rounded up. // 'BignumDtoa' expects the given buffer to be big enough to hold all digits // and a terminating null-character. void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, Vector buffer, int* length, int* point); } // namespace double_conversion #endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/bignum.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "bignum.h" #include "utils.h" namespace double_conversion { Bignum::Bignum() : bigits_(bigits_buffer_, kBigitCapacity), used_digits_(0), exponent_(0) { for (int i = 0; i < kBigitCapacity; ++i) { bigits_[i] = 0; } } template static int BitSize(S value) { (void) value; // Mark variable as used. return 8 * sizeof(value); } // Guaranteed to lie in one Bigit. void Bignum::AssignUInt16(uint16_t value) { ASSERT(kBigitSize >= BitSize(value)); Zero(); if (value == 0) return; EnsureCapacity(1); bigits_[0] = value; used_digits_ = 1; } void Bignum::AssignUInt64(uint64_t value) { const int kUInt64Size = 64; Zero(); if (value == 0) return; int needed_bigits = kUInt64Size / kBigitSize + 1; EnsureCapacity(needed_bigits); for (int i = 0; i < needed_bigits; ++i) { bigits_[i] = value & kBigitMask; value = value >> kBigitSize; } used_digits_ = needed_bigits; Clamp(); } void Bignum::AssignBignum(const Bignum& other) { exponent_ = other.exponent_; for (int i = 0; i < other.used_digits_; ++i) { bigits_[i] = other.bigits_[i]; } // Clear the excess digits (if there were any). for (int i = other.used_digits_; i < used_digits_; ++i) { bigits_[i] = 0; } used_digits_ = other.used_digits_; } static uint64_t ReadUInt64(Vector buffer, int from, int digits_to_read) { uint64_t result = 0; for (int i = from; i < from + digits_to_read; ++i) { int digit = buffer[i] - '0'; ASSERT(0 <= digit && digit <= 9); result = result * 10 + digit; } return result; } void Bignum::AssignDecimalString(Vector value) { // 2^64 = 18446744073709551616 > 10^19 const int kMaxUint64DecimalDigits = 19; Zero(); int length = value.length(); int pos = 0; // Let's just say that each digit needs 4 bits. while (length >= kMaxUint64DecimalDigits) { uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits); pos += kMaxUint64DecimalDigits; length -= kMaxUint64DecimalDigits; MultiplyByPowerOfTen(kMaxUint64DecimalDigits); AddUInt64(digits); } uint64_t digits = ReadUInt64(value, pos, length); MultiplyByPowerOfTen(length); AddUInt64(digits); Clamp(); } static int HexCharValue(char c) { if ('0' <= c && c <= '9') return c - '0'; if ('a' <= c && c <= 'f') return 10 + c - 'a'; ASSERT('A' <= c && c <= 'F'); return 10 + c - 'A'; } void Bignum::AssignHexString(Vector value) { Zero(); int length = value.length(); int needed_bigits = length * 4 / kBigitSize + 1; EnsureCapacity(needed_bigits); int string_index = length - 1; for (int i = 0; i < needed_bigits - 1; ++i) { // These bigits are guaranteed to be "full". Chunk current_bigit = 0; for (int j = 0; j < kBigitSize / 4; j++) { current_bigit += HexCharValue(value[string_index--]) << (j * 4); } bigits_[i] = current_bigit; } used_digits_ = needed_bigits - 1; Chunk most_significant_bigit = 0; // Could be = 0; for (int j = 0; j <= string_index; ++j) { most_significant_bigit <<= 4; most_significant_bigit += HexCharValue(value[j]); } if (most_significant_bigit != 0) { bigits_[used_digits_] = most_significant_bigit; used_digits_++; } Clamp(); } void Bignum::AddUInt64(uint64_t operand) { if (operand == 0) return; Bignum other; other.AssignUInt64(operand); AddBignum(other); } void Bignum::AddBignum(const Bignum& other) { ASSERT(IsClamped()); ASSERT(other.IsClamped()); // If this has a greater exponent than other append zero-bigits to this. // After this call exponent_ <= other.exponent_. Align(other); // There are two possibilities: // aaaaaaaaaaa 0000 (where the 0s represent a's exponent) // bbbbb 00000000 // ---------------- // ccccccccccc 0000 // or // aaaaaaaaaa 0000 // bbbbbbbbb 0000000 // ----------------- // cccccccccccc 0000 // In both cases we might need a carry bigit. EnsureCapacity(1 + Max(BigitLength(), other.BigitLength()) - exponent_); Chunk carry = 0; int bigit_pos = other.exponent_ - exponent_; ASSERT(bigit_pos >= 0); for (int i = 0; i < other.used_digits_; ++i) { Chunk sum = bigits_[bigit_pos] + other.bigits_[i] + carry; bigits_[bigit_pos] = sum & kBigitMask; carry = sum >> kBigitSize; bigit_pos++; } while (carry != 0) { Chunk sum = bigits_[bigit_pos] + carry; bigits_[bigit_pos] = sum & kBigitMask; carry = sum >> kBigitSize; bigit_pos++; } used_digits_ = Max(bigit_pos, used_digits_); ASSERT(IsClamped()); } void Bignum::SubtractBignum(const Bignum& other) { ASSERT(IsClamped()); ASSERT(other.IsClamped()); // We require this to be bigger than other. ASSERT(LessEqual(other, *this)); Align(other); int offset = other.exponent_ - exponent_; Chunk borrow = 0; int i; for (i = 0; i < other.used_digits_; ++i) { ASSERT((borrow == 0) || (borrow == 1)); Chunk difference = bigits_[i + offset] - other.bigits_[i] - borrow; bigits_[i + offset] = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); } while (borrow != 0) { Chunk difference = bigits_[i + offset] - borrow; bigits_[i + offset] = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); ++i; } Clamp(); } void Bignum::ShiftLeft(int shift_amount) { if (used_digits_ == 0) return; exponent_ += shift_amount / kBigitSize; int local_shift = shift_amount % kBigitSize; EnsureCapacity(used_digits_ + 1); BigitsShiftLeft(local_shift); } void Bignum::MultiplyByUInt32(uint32_t factor) { if (factor == 1) return; if (factor == 0) { Zero(); return; } if (used_digits_ == 0) return; // The product of a bigit with the factor is of size kBigitSize + 32. // Assert that this number + 1 (for the carry) fits into double chunk. ASSERT(kDoubleChunkSize >= kBigitSize + 32 + 1); DoubleChunk carry = 0; for (int i = 0; i < used_digits_; ++i) { DoubleChunk product = static_cast(factor) * bigits_[i] + carry; bigits_[i] = static_cast(product & kBigitMask); carry = (product >> kBigitSize); } while (carry != 0) { EnsureCapacity(used_digits_ + 1); bigits_[used_digits_] = carry & kBigitMask; used_digits_++; carry >>= kBigitSize; } } void Bignum::MultiplyByUInt64(uint64_t factor) { if (factor == 1) return; if (factor == 0) { Zero(); return; } ASSERT(kBigitSize < 32); uint64_t carry = 0; uint64_t low = factor & 0xFFFFFFFF; uint64_t high = factor >> 32; for (int i = 0; i < used_digits_; ++i) { uint64_t product_low = low * bigits_[i]; uint64_t product_high = high * bigits_[i]; uint64_t tmp = (carry & kBigitMask) + product_low; bigits_[i] = tmp & kBigitMask; carry = (carry >> kBigitSize) + (tmp >> kBigitSize) + (product_high << (32 - kBigitSize)); } while (carry != 0) { EnsureCapacity(used_digits_ + 1); bigits_[used_digits_] = carry & kBigitMask; used_digits_++; carry >>= kBigitSize; } } void Bignum::MultiplyByPowerOfTen(int exponent) { const uint64_t kFive27 = UINT64_2PART_C(0x6765c793, fa10079d); const uint16_t kFive1 = 5; const uint16_t kFive2 = kFive1 * 5; const uint16_t kFive3 = kFive2 * 5; const uint16_t kFive4 = kFive3 * 5; const uint16_t kFive5 = kFive4 * 5; const uint16_t kFive6 = kFive5 * 5; const uint32_t kFive7 = kFive6 * 5; const uint32_t kFive8 = kFive7 * 5; const uint32_t kFive9 = kFive8 * 5; const uint32_t kFive10 = kFive9 * 5; const uint32_t kFive11 = kFive10 * 5; const uint32_t kFive12 = kFive11 * 5; const uint32_t kFive13 = kFive12 * 5; const uint32_t kFive1_to_12[] = { kFive1, kFive2, kFive3, kFive4, kFive5, kFive6, kFive7, kFive8, kFive9, kFive10, kFive11, kFive12 }; ASSERT(exponent >= 0); if (exponent == 0) return; if (used_digits_ == 0) return; // We shift by exponent at the end just before returning. int remaining_exponent = exponent; while (remaining_exponent >= 27) { MultiplyByUInt64(kFive27); remaining_exponent -= 27; } while (remaining_exponent >= 13) { MultiplyByUInt32(kFive13); remaining_exponent -= 13; } if (remaining_exponent > 0) { MultiplyByUInt32(kFive1_to_12[remaining_exponent - 1]); } ShiftLeft(exponent); } void Bignum::Square() { ASSERT(IsClamped()); int product_length = 2 * used_digits_; EnsureCapacity(product_length); // Comba multiplication: compute each column separately. // Example: r = a2a1a0 * b2b1b0. // r = 1 * a0b0 + // 10 * (a1b0 + a0b1) + // 100 * (a2b0 + a1b1 + a0b2) + // 1000 * (a2b1 + a1b2) + // 10000 * a2b2 // // In the worst case we have to accumulate nb-digits products of digit*digit. // // Assert that the additional number of bits in a DoubleChunk are enough to // sum up used_digits of Bigit*Bigit. if ((1 << (2 * (kChunkSize - kBigitSize))) <= used_digits_) { UNIMPLEMENTED(); } DoubleChunk accumulator = 0; // First shift the digits so we don't overwrite them. int copy_offset = used_digits_; for (int i = 0; i < used_digits_; ++i) { bigits_[copy_offset + i] = bigits_[i]; } // We have two loops to avoid some 'if's in the loop. for (int i = 0; i < used_digits_; ++i) { // Process temporary digit i with power i. // The sum of the two indices must be equal to i. int bigit_index1 = i; int bigit_index2 = 0; // Sum all of the sub-products. while (bigit_index1 >= 0) { Chunk chunk1 = bigits_[copy_offset + bigit_index1]; Chunk chunk2 = bigits_[copy_offset + bigit_index2]; accumulator += static_cast(chunk1) * chunk2; bigit_index1--; bigit_index2++; } bigits_[i] = static_cast(accumulator) & kBigitMask; accumulator >>= kBigitSize; } for (int i = used_digits_; i < product_length; ++i) { int bigit_index1 = used_digits_ - 1; int bigit_index2 = i - bigit_index1; // Invariant: sum of both indices is again equal to i. // Inner loop runs 0 times on last iteration, emptying accumulator. while (bigit_index2 < used_digits_) { Chunk chunk1 = bigits_[copy_offset + bigit_index1]; Chunk chunk2 = bigits_[copy_offset + bigit_index2]; accumulator += static_cast(chunk1) * chunk2; bigit_index1--; bigit_index2++; } // The overwritten bigits_[i] will never be read in further loop iterations, // because bigit_index1 and bigit_index2 are always greater // than i - used_digits_. bigits_[i] = static_cast(accumulator) & kBigitMask; accumulator >>= kBigitSize; } // Since the result was guaranteed to lie inside the number the // accumulator must be 0 now. ASSERT(accumulator == 0); // Don't forget to update the used_digits and the exponent. used_digits_ = product_length; exponent_ *= 2; Clamp(); } void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) { ASSERT(base != 0); ASSERT(power_exponent >= 0); if (power_exponent == 0) { AssignUInt16(1); return; } Zero(); int shifts = 0; // We expect base to be in range 2-32, and most often to be 10. // It does not make much sense to implement different algorithms for counting // the bits. while ((base & 1) == 0) { base >>= 1; shifts++; } int bit_size = 0; int tmp_base = base; while (tmp_base != 0) { tmp_base >>= 1; bit_size++; } int final_size = bit_size * power_exponent; // 1 extra bigit for the shifting, and one for rounded final_size. EnsureCapacity(final_size / kBigitSize + 2); // Left to Right exponentiation. int mask = 1; while (power_exponent >= mask) mask <<= 1; // The mask is now pointing to the bit above the most significant 1-bit of // power_exponent. // Get rid of first 1-bit; mask >>= 2; uint64_t this_value = base; bool delayed_multipliciation = false; const uint64_t max_32bits = 0xFFFFFFFF; while (mask != 0 && this_value <= max_32bits) { this_value = this_value * this_value; // Verify that there is enough space in this_value to perform the // multiplication. The first bit_size bits must be 0. if ((power_exponent & mask) != 0) { uint64_t base_bits_mask = ~((static_cast(1) << (64 - bit_size)) - 1); bool high_bits_zero = (this_value & base_bits_mask) == 0; if (high_bits_zero) { this_value *= base; } else { delayed_multipliciation = true; } } mask >>= 1; } AssignUInt64(this_value); if (delayed_multipliciation) { MultiplyByUInt32(base); } // Now do the same thing as a bignum. while (mask != 0) { Square(); if ((power_exponent & mask) != 0) { MultiplyByUInt32(base); } mask >>= 1; } // And finally add the saved shifts. ShiftLeft(shifts * power_exponent); } // Precondition: this/other < 16bit. uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) { ASSERT(IsClamped()); ASSERT(other.IsClamped()); ASSERT(other.used_digits_ > 0); // Easy case: if we have less digits than the divisor than the result is 0. // Note: this handles the case where this == 0, too. if (BigitLength() < other.BigitLength()) { return 0; } Align(other); uint16_t result = 0; // Start by removing multiples of 'other' until both numbers have the same // number of digits. while (BigitLength() > other.BigitLength()) { // This naive approach is extremely inefficient if `this` divided by other // is big. This function is implemented for doubleToString where // the result should be small (less than 10). ASSERT(other.bigits_[other.used_digits_ - 1] >= ((1 << kBigitSize) / 16)); ASSERT(bigits_[used_digits_ - 1] < 0x10000); // Remove the multiples of the first digit. // Example this = 23 and other equals 9. -> Remove 2 multiples. result += static_cast(bigits_[used_digits_ - 1]); SubtractTimes(other, bigits_[used_digits_ - 1]); } ASSERT(BigitLength() == other.BigitLength()); // Both bignums are at the same length now. // Since other has more than 0 digits we know that the access to // bigits_[used_digits_ - 1] is safe. Chunk this_bigit = bigits_[used_digits_ - 1]; Chunk other_bigit = other.bigits_[other.used_digits_ - 1]; if (other.used_digits_ == 1) { // Shortcut for easy (and common) case. int quotient = this_bigit / other_bigit; bigits_[used_digits_ - 1] = this_bigit - other_bigit * quotient; ASSERT(quotient < 0x10000); result += static_cast(quotient); Clamp(); return result; } int division_estimate = this_bigit / (other_bigit + 1); ASSERT(division_estimate < 0x10000); result += static_cast(division_estimate); SubtractTimes(other, division_estimate); if (other_bigit * (division_estimate + 1) > this_bigit) { // No need to even try to subtract. Even if other's remaining digits were 0 // another subtraction would be too much. return result; } while (LessEqual(other, *this)) { SubtractBignum(other); result++; } return result; } template static int SizeInHexChars(S number) { ASSERT(number > 0); int result = 0; while (number != 0) { number >>= 4; result++; } return result; } static char HexCharOfValue(int value) { ASSERT(0 <= value && value <= 16); if (value < 10) return static_cast(value + '0'); return static_cast(value - 10 + 'A'); } bool Bignum::ToHexString(char* buffer, int buffer_size) const { ASSERT(IsClamped()); // Each bigit must be printable as separate hex-character. ASSERT(kBigitSize % 4 == 0); const int kHexCharsPerBigit = kBigitSize / 4; if (used_digits_ == 0) { if (buffer_size < 2) return false; buffer[0] = '0'; buffer[1] = '\0'; return true; } // We add 1 for the terminating '\0' character. int needed_chars = (BigitLength() - 1) * kHexCharsPerBigit + SizeInHexChars(bigits_[used_digits_ - 1]) + 1; if (needed_chars > buffer_size) return false; int string_index = needed_chars - 1; buffer[string_index--] = '\0'; for (int i = 0; i < exponent_; ++i) { for (int j = 0; j < kHexCharsPerBigit; ++j) { buffer[string_index--] = '0'; } } for (int i = 0; i < used_digits_ - 1; ++i) { Chunk current_bigit = bigits_[i]; for (int j = 0; j < kHexCharsPerBigit; ++j) { buffer[string_index--] = HexCharOfValue(current_bigit & 0xF); current_bigit >>= 4; } } // And finally the last bigit. Chunk most_significant_bigit = bigits_[used_digits_ - 1]; while (most_significant_bigit != 0) { buffer[string_index--] = HexCharOfValue(most_significant_bigit & 0xF); most_significant_bigit >>= 4; } return true; } Bignum::Chunk Bignum::BigitAt(int index) const { if (index >= BigitLength()) return 0; if (index < exponent_) return 0; return bigits_[index - exponent_]; } int Bignum::Compare(const Bignum& a, const Bignum& b) { ASSERT(a.IsClamped()); ASSERT(b.IsClamped()); int bigit_length_a = a.BigitLength(); int bigit_length_b = b.BigitLength(); if (bigit_length_a < bigit_length_b) return -1; if (bigit_length_a > bigit_length_b) return +1; for (int i = bigit_length_a - 1; i >= Min(a.exponent_, b.exponent_); --i) { Chunk bigit_a = a.BigitAt(i); Chunk bigit_b = b.BigitAt(i); if (bigit_a < bigit_b) return -1; if (bigit_a > bigit_b) return +1; // Otherwise they are equal up to this digit. Try the next digit. } return 0; } int Bignum::PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c) { ASSERT(a.IsClamped()); ASSERT(b.IsClamped()); ASSERT(c.IsClamped()); if (a.BigitLength() < b.BigitLength()) { return PlusCompare(b, a, c); } if (a.BigitLength() + 1 < c.BigitLength()) return -1; if (a.BigitLength() > c.BigitLength()) return +1; // The exponent encodes 0-bigits. So if there are more 0-digits in 'a' than // 'b' has digits, then the bigit-length of 'a'+'b' must be equal to the one // of 'a'. if (a.exponent_ >= b.BigitLength() && a.BigitLength() < c.BigitLength()) { return -1; } Chunk borrow = 0; // Starting at min_exponent all digits are == 0. So no need to compare them. int min_exponent = Min(Min(a.exponent_, b.exponent_), c.exponent_); for (int i = c.BigitLength() - 1; i >= min_exponent; --i) { Chunk chunk_a = a.BigitAt(i); Chunk chunk_b = b.BigitAt(i); Chunk chunk_c = c.BigitAt(i); Chunk sum = chunk_a + chunk_b; if (sum > chunk_c + borrow) { return +1; } else { borrow = chunk_c + borrow - sum; if (borrow > 1) return -1; borrow <<= kBigitSize; } } if (borrow == 0) return 0; return -1; } void Bignum::Clamp() { while (used_digits_ > 0 && bigits_[used_digits_ - 1] == 0) { used_digits_--; } if (used_digits_ == 0) { // Zero. exponent_ = 0; } } bool Bignum::IsClamped() const { return used_digits_ == 0 || bigits_[used_digits_ - 1] != 0; } void Bignum::Zero() { for (int i = 0; i < used_digits_; ++i) { bigits_[i] = 0; } used_digits_ = 0; exponent_ = 0; } void Bignum::Align(const Bignum& other) { if (exponent_ > other.exponent_) { // If "X" represents a "hidden" digit (by the exponent) then we are in the // following case (a == this, b == other): // a: aaaaaaXXXX or a: aaaaaXXX // b: bbbbbbX b: bbbbbbbbXX // We replace some of the hidden digits (X) of a with 0 digits. // a: aaaaaa000X or a: aaaaa0XX int zero_digits = exponent_ - other.exponent_; EnsureCapacity(used_digits_ + zero_digits); for (int i = used_digits_ - 1; i >= 0; --i) { bigits_[i + zero_digits] = bigits_[i]; } for (int i = 0; i < zero_digits; ++i) { bigits_[i] = 0; } used_digits_ += zero_digits; exponent_ -= zero_digits; ASSERT(used_digits_ >= 0); ASSERT(exponent_ >= 0); } } void Bignum::BigitsShiftLeft(int shift_amount) { ASSERT(shift_amount < kBigitSize); ASSERT(shift_amount >= 0); Chunk carry = 0; for (int i = 0; i < used_digits_; ++i) { Chunk new_carry = bigits_[i] >> (kBigitSize - shift_amount); bigits_[i] = ((bigits_[i] << shift_amount) + carry) & kBigitMask; carry = new_carry; } if (carry != 0) { bigits_[used_digits_] = carry; used_digits_++; } } void Bignum::SubtractTimes(const Bignum& other, int factor) { ASSERT(exponent_ <= other.exponent_); if (factor < 3) { for (int i = 0; i < factor; ++i) { SubtractBignum(other); } return; } Chunk borrow = 0; int exponent_diff = other.exponent_ - exponent_; for (int i = 0; i < other.used_digits_; ++i) { DoubleChunk product = static_cast(factor) * other.bigits_[i]; DoubleChunk remove = borrow + product; Chunk difference = bigits_[i + exponent_diff] - (remove & kBigitMask); bigits_[i + exponent_diff] = difference & kBigitMask; borrow = static_cast((difference >> (kChunkSize - 1)) + (remove >> kBigitSize)); } for (int i = other.used_digits_ + exponent_diff; i < used_digits_; ++i) { if (borrow == 0) return; Chunk difference = bigits_[i] - borrow; bigits_[i] = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); } Clamp(); } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/bignum.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_BIGNUM_H_ #define DOUBLE_CONVERSION_BIGNUM_H_ #include "utils.h" namespace double_conversion { class Bignum { public: // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately. // This bignum can encode much bigger numbers, since it contains an // exponent. static const int kMaxSignificantBits = 3584; Bignum(); void AssignUInt16(uint16_t value); void AssignUInt64(uint64_t value); void AssignBignum(const Bignum& other); void AssignDecimalString(Vector value); void AssignHexString(Vector value); void AssignPowerUInt16(uint16_t base, int exponent); void AddUInt16(uint16_t operand); void AddUInt64(uint64_t operand); void AddBignum(const Bignum& other); // Precondition: this >= other. void SubtractBignum(const Bignum& other); void Square(); void ShiftLeft(int shift_amount); void MultiplyByUInt32(uint32_t factor); void MultiplyByUInt64(uint64_t factor); void MultiplyByPowerOfTen(int exponent); void Times10() { return MultiplyByUInt32(10); } // Pseudocode: // int result = this / other; // this = this % other; // In the worst case this function is in O(this/other). uint16_t DivideModuloIntBignum(const Bignum& other); bool ToHexString(char* buffer, int buffer_size) const; // Returns // -1 if a < b, // 0 if a == b, and // +1 if a > b. static int Compare(const Bignum& a, const Bignum& b); static bool Equal(const Bignum& a, const Bignum& b) { return Compare(a, b) == 0; } static bool LessEqual(const Bignum& a, const Bignum& b) { return Compare(a, b) <= 0; } static bool Less(const Bignum& a, const Bignum& b) { return Compare(a, b) < 0; } // Returns Compare(a + b, c); static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c); // Returns a + b == c static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) { return PlusCompare(a, b, c) == 0; } // Returns a + b <= c static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) { return PlusCompare(a, b, c) <= 0; } // Returns a + b < c static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) { return PlusCompare(a, b, c) < 0; } private: typedef uint32_t Chunk; typedef uint64_t DoubleChunk; static const int kChunkSize = sizeof(Chunk) * 8; static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8; // With bigit size of 28 we loose some bits, but a double still fits easily // into two chunks, and more importantly we can use the Comba multiplication. static const int kBigitSize = 28; static const Chunk kBigitMask = (1 << kBigitSize) - 1; // Every instance allocates kBigitLength chunks on the stack. Bignums cannot // grow. There are no checks if the stack-allocated space is sufficient. static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; void EnsureCapacity(int size) { if (size > kBigitCapacity) { UNREACHABLE(); } } void Align(const Bignum& other); void Clamp(); bool IsClamped() const; void Zero(); // Requires this to have enough capacity (no tests done). // Updates used_digits_ if necessary. // shift_amount must be < kBigitSize. void BigitsShiftLeft(int shift_amount); // BigitLength includes the "hidden" digits encoded in the exponent. int BigitLength() const { return used_digits_ + exponent_; } Chunk BigitAt(int index) const; void SubtractTimes(const Bignum& other, int factor); Chunk bigits_buffer_[kBigitCapacity]; // A vector backed by bigits_buffer_. This way accesses to the array are // checked for out-of-bounds errors. Vector bigits_; int used_digits_; // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). int exponent_; DISALLOW_COPY_AND_ASSIGN(Bignum); }; } // namespace double_conversion #endif // DOUBLE_CONVERSION_BIGNUM_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/cached-powers.cc ================================================ // Copyright 2006-2008 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include #include "utils.h" #include "cached-powers.h" namespace double_conversion { struct CachedPower { uint64_t significand; int16_t binary_exponent; int16_t decimal_exponent; }; static const CachedPower kCachedPowers[] = { {UINT64_2PART_C(0xfa8fd5a0, 081c0288), -1220, -348}, {UINT64_2PART_C(0xbaaee17f, a23ebf76), -1193, -340}, {UINT64_2PART_C(0x8b16fb20, 3055ac76), -1166, -332}, {UINT64_2PART_C(0xcf42894a, 5dce35ea), -1140, -324}, {UINT64_2PART_C(0x9a6bb0aa, 55653b2d), -1113, -316}, {UINT64_2PART_C(0xe61acf03, 3d1a45df), -1087, -308}, {UINT64_2PART_C(0xab70fe17, c79ac6ca), -1060, -300}, {UINT64_2PART_C(0xff77b1fc, bebcdc4f), -1034, -292}, {UINT64_2PART_C(0xbe5691ef, 416bd60c), -1007, -284}, {UINT64_2PART_C(0x8dd01fad, 907ffc3c), -980, -276}, {UINT64_2PART_C(0xd3515c28, 31559a83), -954, -268}, {UINT64_2PART_C(0x9d71ac8f, ada6c9b5), -927, -260}, {UINT64_2PART_C(0xea9c2277, 23ee8bcb), -901, -252}, {UINT64_2PART_C(0xaecc4991, 4078536d), -874, -244}, {UINT64_2PART_C(0x823c1279, 5db6ce57), -847, -236}, {UINT64_2PART_C(0xc2109436, 4dfb5637), -821, -228}, {UINT64_2PART_C(0x9096ea6f, 3848984f), -794, -220}, {UINT64_2PART_C(0xd77485cb, 25823ac7), -768, -212}, {UINT64_2PART_C(0xa086cfcd, 97bf97f4), -741, -204}, {UINT64_2PART_C(0xef340a98, 172aace5), -715, -196}, {UINT64_2PART_C(0xb23867fb, 2a35b28e), -688, -188}, {UINT64_2PART_C(0x84c8d4df, d2c63f3b), -661, -180}, {UINT64_2PART_C(0xc5dd4427, 1ad3cdba), -635, -172}, {UINT64_2PART_C(0x936b9fce, bb25c996), -608, -164}, {UINT64_2PART_C(0xdbac6c24, 7d62a584), -582, -156}, {UINT64_2PART_C(0xa3ab6658, 0d5fdaf6), -555, -148}, {UINT64_2PART_C(0xf3e2f893, dec3f126), -529, -140}, {UINT64_2PART_C(0xb5b5ada8, aaff80b8), -502, -132}, {UINT64_2PART_C(0x87625f05, 6c7c4a8b), -475, -124}, {UINT64_2PART_C(0xc9bcff60, 34c13053), -449, -116}, {UINT64_2PART_C(0x964e858c, 91ba2655), -422, -108}, {UINT64_2PART_C(0xdff97724, 70297ebd), -396, -100}, {UINT64_2PART_C(0xa6dfbd9f, b8e5b88f), -369, -92}, {UINT64_2PART_C(0xf8a95fcf, 88747d94), -343, -84}, {UINT64_2PART_C(0xb9447093, 8fa89bcf), -316, -76}, {UINT64_2PART_C(0x8a08f0f8, bf0f156b), -289, -68}, {UINT64_2PART_C(0xcdb02555, 653131b6), -263, -60}, {UINT64_2PART_C(0x993fe2c6, d07b7fac), -236, -52}, {UINT64_2PART_C(0xe45c10c4, 2a2b3b06), -210, -44}, {UINT64_2PART_C(0xaa242499, 697392d3), -183, -36}, {UINT64_2PART_C(0xfd87b5f2, 8300ca0e), -157, -28}, {UINT64_2PART_C(0xbce50864, 92111aeb), -130, -20}, {UINT64_2PART_C(0x8cbccc09, 6f5088cc), -103, -12}, {UINT64_2PART_C(0xd1b71758, e219652c), -77, -4}, {UINT64_2PART_C(0x9c400000, 00000000), -50, 4}, {UINT64_2PART_C(0xe8d4a510, 00000000), -24, 12}, {UINT64_2PART_C(0xad78ebc5, ac620000), 3, 20}, {UINT64_2PART_C(0x813f3978, f8940984), 30, 28}, {UINT64_2PART_C(0xc097ce7b, c90715b3), 56, 36}, {UINT64_2PART_C(0x8f7e32ce, 7bea5c70), 83, 44}, {UINT64_2PART_C(0xd5d238a4, abe98068), 109, 52}, {UINT64_2PART_C(0x9f4f2726, 179a2245), 136, 60}, {UINT64_2PART_C(0xed63a231, d4c4fb27), 162, 68}, {UINT64_2PART_C(0xb0de6538, 8cc8ada8), 189, 76}, {UINT64_2PART_C(0x83c7088e, 1aab65db), 216, 84}, {UINT64_2PART_C(0xc45d1df9, 42711d9a), 242, 92}, {UINT64_2PART_C(0x924d692c, a61be758), 269, 100}, {UINT64_2PART_C(0xda01ee64, 1a708dea), 295, 108}, {UINT64_2PART_C(0xa26da399, 9aef774a), 322, 116}, {UINT64_2PART_C(0xf209787b, b47d6b85), 348, 124}, {UINT64_2PART_C(0xb454e4a1, 79dd1877), 375, 132}, {UINT64_2PART_C(0x865b8692, 5b9bc5c2), 402, 140}, {UINT64_2PART_C(0xc83553c5, c8965d3d), 428, 148}, {UINT64_2PART_C(0x952ab45c, fa97a0b3), 455, 156}, {UINT64_2PART_C(0xde469fbd, 99a05fe3), 481, 164}, {UINT64_2PART_C(0xa59bc234, db398c25), 508, 172}, {UINT64_2PART_C(0xf6c69a72, a3989f5c), 534, 180}, {UINT64_2PART_C(0xb7dcbf53, 54e9bece), 561, 188}, {UINT64_2PART_C(0x88fcf317, f22241e2), 588, 196}, {UINT64_2PART_C(0xcc20ce9b, d35c78a5), 614, 204}, {UINT64_2PART_C(0x98165af3, 7b2153df), 641, 212}, {UINT64_2PART_C(0xe2a0b5dc, 971f303a), 667, 220}, {UINT64_2PART_C(0xa8d9d153, 5ce3b396), 694, 228}, {UINT64_2PART_C(0xfb9b7cd9, a4a7443c), 720, 236}, {UINT64_2PART_C(0xbb764c4c, a7a44410), 747, 244}, {UINT64_2PART_C(0x8bab8eef, b6409c1a), 774, 252}, {UINT64_2PART_C(0xd01fef10, a657842c), 800, 260}, {UINT64_2PART_C(0x9b10a4e5, e9913129), 827, 268}, {UINT64_2PART_C(0xe7109bfb, a19c0c9d), 853, 276}, {UINT64_2PART_C(0xac2820d9, 623bf429), 880, 284}, {UINT64_2PART_C(0x80444b5e, 7aa7cf85), 907, 292}, {UINT64_2PART_C(0xbf21e440, 03acdd2d), 933, 300}, {UINT64_2PART_C(0x8e679c2f, 5e44ff8f), 960, 308}, {UINT64_2PART_C(0xd433179d, 9c8cb841), 986, 316}, {UINT64_2PART_C(0x9e19db92, b4e31ba9), 1013, 324}, {UINT64_2PART_C(0xeb96bf6e, badf77d9), 1039, 332}, {UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340}, }; static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers); static const int kCachedPowersOffset = 348; // -1 * the first decimal_exponent. static const double kD_1_LOG2_10 = 0.30102999566398114; // 1 / lg(10) // Difference between the decimal exponents in the table above. const int PowersOfTenCache::kDecimalExponentDistance = 8; const int PowersOfTenCache::kMinDecimalExponent = -348; const int PowersOfTenCache::kMaxDecimalExponent = 340; void PowersOfTenCache::GetCachedPowerForBinaryExponentRange( int min_exponent, int max_exponent, DiyFp* power, int* decimal_exponent) { int kQ = DiyFp::kSignificandSize; double k = ceil((min_exponent + kQ - 1) * kD_1_LOG2_10); int foo = kCachedPowersOffset; int index = (foo + static_cast(k) - 1) / kDecimalExponentDistance + 1; ASSERT(0 <= index && index < kCachedPowersLength); CachedPower cached_power = kCachedPowers[index]; ASSERT(min_exponent <= cached_power.binary_exponent); (void) max_exponent; // Mark variable as used. ASSERT(cached_power.binary_exponent <= max_exponent); *decimal_exponent = cached_power.decimal_exponent; *power = DiyFp(cached_power.significand, cached_power.binary_exponent); } void PowersOfTenCache::GetCachedPowerForDecimalExponent(int requested_exponent, DiyFp* power, int* found_exponent) { ASSERT(kMinDecimalExponent <= requested_exponent); ASSERT(requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance); int index = (requested_exponent + kCachedPowersOffset) / kDecimalExponentDistance; CachedPower cached_power = kCachedPowers[index]; *power = DiyFp(cached_power.significand, cached_power.binary_exponent); *found_exponent = cached_power.decimal_exponent; ASSERT(*found_exponent <= requested_exponent); ASSERT(requested_exponent < *found_exponent + kDecimalExponentDistance); } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/cached-powers.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_ #define DOUBLE_CONVERSION_CACHED_POWERS_H_ #include "diy-fp.h" namespace double_conversion { class PowersOfTenCache { public: // Not all powers of ten are cached. The decimal exponent of two neighboring // cached numbers will differ by kDecimalExponentDistance. static const int kDecimalExponentDistance; static const int kMinDecimalExponent; static const int kMaxDecimalExponent; // Returns a cached power-of-ten with a binary exponent in the range // [min_exponent; max_exponent] (boundaries included). static void GetCachedPowerForBinaryExponentRange(int min_exponent, int max_exponent, DiyFp* power, int* decimal_exponent); // Returns a cached power of ten x ~= 10^k such that // k <= decimal_exponent < k + kCachedPowersDecimalDistance. // The given decimal_exponent must satisfy // kMinDecimalExponent <= requested_exponent, and // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. static void GetCachedPowerForDecimalExponent(int requested_exponent, DiyFp* power, int* found_exponent); }; } // namespace double_conversion #endif // DOUBLE_CONVERSION_CACHED_POWERS_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/diy-fp.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "diy-fp.h" #include "utils.h" namespace double_conversion { void DiyFp::Multiply(const DiyFp& other) { // Simply "emulates" a 128 bit multiplication. // However: the resulting number only contains 64 bits. The least // significant 64 bits are only used for rounding the most significant 64 // bits. const uint64_t kM32 = 0xFFFFFFFFU; uint64_t a = f_ >> 32; uint64_t b = f_ & kM32; uint64_t c = other.f_ >> 32; uint64_t d = other.f_ & kM32; uint64_t ac = a * c; uint64_t bc = b * c; uint64_t ad = a * d; uint64_t bd = b * d; uint64_t tmp = (bd >> 32) + (ad & kM32) + (bc & kM32); // By adding 1U << 31 to tmp we round the final result. // Halfway cases will be round up. tmp += 1U << 31; uint64_t result_f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32); e_ += other.e_ + 64; f_ = result_f; } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/diy-fp.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_DIY_FP_H_ #define DOUBLE_CONVERSION_DIY_FP_H_ #include "utils.h" namespace double_conversion { // This "Do It Yourself Floating Point" class implements a floating-point number // with a uint64 significand and an int exponent. Normalized DiyFp numbers will // have the most significant bit of the significand set. // Multiplication and Subtraction do not normalize their results. // DiyFp are not designed to contain special doubles (NaN and Infinity). class DiyFp { public: static const int kSignificandSize = 64; DiyFp() : f_(0), e_(0) {} DiyFp(uint64_t f, int e) : f_(f), e_(e) {} // this = this - other. // The exponents of both numbers must be the same and the significand of this // must be bigger than the significand of other. // The result will not be normalized. void Subtract(const DiyFp& other) { ASSERT(e_ == other.e_); ASSERT(f_ >= other.f_); f_ -= other.f_; } // Returns a - b. // The exponents of both numbers must be the same and this must be bigger // than other. The result will not be normalized. static DiyFp Minus(const DiyFp& a, const DiyFp& b) { DiyFp result = a; result.Subtract(b); return result; } // this = this * other. void Multiply(const DiyFp& other); // returns a * b; static DiyFp Times(const DiyFp& a, const DiyFp& b) { DiyFp result = a; result.Multiply(b); return result; } void Normalize() { ASSERT(f_ != 0); uint64_t f = f_; int e = e_; // This method is mainly called for normalizing boundaries. In general // boundaries need to be shifted by 10 bits. We thus optimize for this case. const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); while ((f & k10MSBits) == 0) { f <<= 10; e -= 10; } while ((f & kUint64MSB) == 0) { f <<= 1; e--; } f_ = f; e_ = e; } static DiyFp Normalize(const DiyFp& a) { DiyFp result = a; result.Normalize(); return result; } uint64_t f() const { return f_; } int e() const { return e_; } void set_f(uint64_t new_value) { f_ = new_value; } void set_e(int new_value) { e_ = new_value; } private: static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); uint64_t f_; int e_; }; } // namespace double_conversion #endif // DOUBLE_CONVERSION_DIY_FP_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/double-conversion.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "double-conversion.h" #include "bignum-dtoa.h" #include "fast-dtoa.h" #include "fixed-dtoa.h" #include "ieee.h" #include "strtod.h" #include "utils.h" namespace double_conversion { const DoubleToStringConverter& DoubleToStringConverter::EcmaScriptConverter() { int flags = UNIQUE_ZERO | EMIT_POSITIVE_EXPONENT_SIGN; static DoubleToStringConverter converter(flags, "Infinity", "NaN", 'e', -6, 21, 6, 0); return converter; } bool DoubleToStringConverter::HandleSpecialValues( double value, StringBuilder* result_builder) const { Double double_inspect(value); if (double_inspect.IsInfinite()) { if (infinity_symbol_ == NULL) return false; if (value < 0) { result_builder->AddCharacter('-'); } result_builder->AddString(infinity_symbol_); return true; } if (double_inspect.IsNan()) { if (nan_symbol_ == NULL) return false; result_builder->AddString(nan_symbol_); return true; } return false; } void DoubleToStringConverter::CreateExponentialRepresentation( const char* decimal_digits, int length, int exponent, StringBuilder* result_builder) const { ASSERT(length != 0); result_builder->AddCharacter(decimal_digits[0]); if (length != 1) { result_builder->AddCharacter('.'); result_builder->AddSubstring(&decimal_digits[1], length-1); } result_builder->AddCharacter(exponent_character_); if (exponent < 0) { result_builder->AddCharacter('-'); exponent = -exponent; } else { if ((flags_ & EMIT_POSITIVE_EXPONENT_SIGN) != 0) { result_builder->AddCharacter('+'); } } if (exponent == 0) { result_builder->AddCharacter('0'); return; } ASSERT(exponent < 1e4); const int kMaxExponentLength = 5; char buffer[kMaxExponentLength + 1]; buffer[kMaxExponentLength] = '\0'; int first_char_pos = kMaxExponentLength; while (exponent > 0) { buffer[--first_char_pos] = '0' + (exponent % 10); exponent /= 10; } result_builder->AddSubstring(&buffer[first_char_pos], kMaxExponentLength - first_char_pos); } void DoubleToStringConverter::CreateDecimalRepresentation( const char* decimal_digits, int length, int decimal_point, int digits_after_point, StringBuilder* result_builder) const { // Create a representation that is padded with zeros if needed. if (decimal_point <= 0) { // "0.00000decimal_rep". result_builder->AddCharacter('0'); if (digits_after_point > 0) { result_builder->AddCharacter('.'); result_builder->AddPadding('0', -decimal_point); ASSERT(length <= digits_after_point - (-decimal_point)); result_builder->AddSubstring(decimal_digits, length); int remaining_digits = digits_after_point - (-decimal_point) - length; result_builder->AddPadding('0', remaining_digits); } } else if (decimal_point >= length) { // "decimal_rep0000.00000" or "decimal_rep.0000" result_builder->AddSubstring(decimal_digits, length); result_builder->AddPadding('0', decimal_point - length); if (digits_after_point > 0) { result_builder->AddCharacter('.'); result_builder->AddPadding('0', digits_after_point); } } else { // "decima.l_rep000" ASSERT(digits_after_point > 0); result_builder->AddSubstring(decimal_digits, decimal_point); result_builder->AddCharacter('.'); ASSERT(length - decimal_point <= digits_after_point); result_builder->AddSubstring(&decimal_digits[decimal_point], length - decimal_point); int remaining_digits = digits_after_point - (length - decimal_point); result_builder->AddPadding('0', remaining_digits); } if (digits_after_point == 0) { if ((flags_ & EMIT_TRAILING_DECIMAL_POINT) != 0) { result_builder->AddCharacter('.'); } if ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) { result_builder->AddCharacter('0'); } } } bool DoubleToStringConverter::ToShortestIeeeNumber( double value, StringBuilder* result_builder, DoubleToStringConverter::DtoaMode mode) const { ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE); if (Double(value).IsSpecial()) { return HandleSpecialValues(value, result_builder); } int decimal_point; bool sign; const int kDecimalRepCapacity = kBase10MaximalLength + 1; char decimal_rep[kDecimalRepCapacity]; int decimal_rep_length; DoubleToAscii(value, mode, 0, decimal_rep, kDecimalRepCapacity, &sign, &decimal_rep_length, &decimal_point); bool unique_zero = (flags_ & UNIQUE_ZERO) != 0; if (sign && (value != 0.0 || !unique_zero)) { result_builder->AddCharacter('-'); } int exponent = decimal_point - 1; if ((decimal_in_shortest_low_ <= exponent) && (exponent < decimal_in_shortest_high_)) { CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, Max(0, decimal_rep_length - decimal_point), result_builder); } else { CreateExponentialRepresentation(decimal_rep, decimal_rep_length, exponent, result_builder); } return true; } bool DoubleToStringConverter::ToFixed(double value, int requested_digits, StringBuilder* result_builder) const { ASSERT(kMaxFixedDigitsBeforePoint == 60); const double kFirstNonFixed = 1e60; if (Double(value).IsSpecial()) { return HandleSpecialValues(value, result_builder); } if (requested_digits > kMaxFixedDigitsAfterPoint) return false; if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false; // Find a sufficiently precise decimal representation of n. int decimal_point; bool sign; // Add space for the '\0' byte. const int kDecimalRepCapacity = kMaxFixedDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1; char decimal_rep[kDecimalRepCapacity]; int decimal_rep_length; DoubleToAscii(value, FIXED, requested_digits, decimal_rep, kDecimalRepCapacity, &sign, &decimal_rep_length, &decimal_point); bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); if (sign && (value != 0.0 || !unique_zero)) { result_builder->AddCharacter('-'); } CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, requested_digits, result_builder); return true; } bool DoubleToStringConverter::ToExponential( double value, int requested_digits, StringBuilder* result_builder) const { if (Double(value).IsSpecial()) { return HandleSpecialValues(value, result_builder); } if (requested_digits < -1) return false; if (requested_digits > kMaxExponentialDigits) return false; int decimal_point; bool sign; // Add space for digit before the decimal point and the '\0' character. const int kDecimalRepCapacity = kMaxExponentialDigits + 2; ASSERT(kDecimalRepCapacity > kBase10MaximalLength); char decimal_rep[kDecimalRepCapacity]; int decimal_rep_length; if (requested_digits == -1) { DoubleToAscii(value, SHORTEST, 0, decimal_rep, kDecimalRepCapacity, &sign, &decimal_rep_length, &decimal_point); } else { DoubleToAscii(value, PRECISION, requested_digits + 1, decimal_rep, kDecimalRepCapacity, &sign, &decimal_rep_length, &decimal_point); ASSERT(decimal_rep_length <= requested_digits + 1); for (int i = decimal_rep_length; i < requested_digits + 1; ++i) { decimal_rep[i] = '0'; } decimal_rep_length = requested_digits + 1; } bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); if (sign && (value != 0.0 || !unique_zero)) { result_builder->AddCharacter('-'); } int exponent = decimal_point - 1; CreateExponentialRepresentation(decimal_rep, decimal_rep_length, exponent, result_builder); return true; } bool DoubleToStringConverter::ToPrecision(double value, int precision, StringBuilder* result_builder) const { if (Double(value).IsSpecial()) { return HandleSpecialValues(value, result_builder); } if (precision < kMinPrecisionDigits || precision > kMaxPrecisionDigits) { return false; } // Find a sufficiently precise decimal representation of n. int decimal_point; bool sign; // Add one for the terminating null character. const int kDecimalRepCapacity = kMaxPrecisionDigits + 1; char decimal_rep[kDecimalRepCapacity]; int decimal_rep_length; DoubleToAscii(value, PRECISION, precision, decimal_rep, kDecimalRepCapacity, &sign, &decimal_rep_length, &decimal_point); ASSERT(decimal_rep_length <= precision); bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); if (sign && (value != 0.0 || !unique_zero)) { result_builder->AddCharacter('-'); } // The exponent if we print the number as x.xxeyyy. That is with the // decimal point after the first digit. int exponent = decimal_point - 1; int extra_zero = ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) ? 1 : 0; if ((-decimal_point + 1 > max_leading_padding_zeroes_in_precision_mode_) || (decimal_point - precision + extra_zero > max_trailing_padding_zeroes_in_precision_mode_)) { // Fill buffer to contain 'precision' digits. // Usually the buffer is already at the correct length, but 'DoubleToAscii' // is allowed to return less characters. for (int i = decimal_rep_length; i < precision; ++i) { decimal_rep[i] = '0'; } CreateExponentialRepresentation(decimal_rep, precision, exponent, result_builder); } else { CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, Max(0, precision - decimal_point), result_builder); } return true; } static BignumDtoaMode DtoaToBignumDtoaMode( DoubleToStringConverter::DtoaMode dtoa_mode) { switch (dtoa_mode) { case DoubleToStringConverter::SHORTEST: return BIGNUM_DTOA_SHORTEST; case DoubleToStringConverter::SHORTEST_SINGLE: return BIGNUM_DTOA_SHORTEST_SINGLE; case DoubleToStringConverter::FIXED: return BIGNUM_DTOA_FIXED; case DoubleToStringConverter::PRECISION: return BIGNUM_DTOA_PRECISION; default: UNREACHABLE(); } } void DoubleToStringConverter::DoubleToAscii(double v, DtoaMode mode, int requested_digits, char* buffer, int buffer_length, bool* sign, int* length, int* point) { Vector vector(buffer, buffer_length); ASSERT(!Double(v).IsSpecial()); ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE || requested_digits >= 0); if (Double(v).Sign() < 0) { *sign = true; v = -v; } else { *sign = false; } if (mode == PRECISION && requested_digits == 0) { vector[0] = '\0'; *length = 0; return; } if (v == 0) { vector[0] = '0'; vector[1] = '\0'; *length = 1; *point = 1; return; } bool fast_worked; switch (mode) { case SHORTEST: fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST, 0, vector, length, point); break; case SHORTEST_SINGLE: fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST_SINGLE, 0, vector, length, point); break; case FIXED: fast_worked = FastFixedDtoa(v, requested_digits, vector, length, point); break; case PRECISION: fast_worked = FastDtoa(v, FAST_DTOA_PRECISION, requested_digits, vector, length, point); break; default: fast_worked = false; UNREACHABLE(); } if (fast_worked) return; // If the fast dtoa didn't succeed use the slower bignum version. BignumDtoaMode bignum_mode = DtoaToBignumDtoaMode(mode); BignumDtoa(v, bignum_mode, requested_digits, vector, length, point); vector[*length] = '\0'; } // Consumes the given substring from the iterator. // Returns false, if the substring does not match. static bool ConsumeSubString(const char** current, const char* end, const char* substring) { ASSERT(**current == *substring); for (substring++; *substring != '\0'; substring++) { ++*current; if (*current == end || **current != *substring) return false; } ++*current; return true; } // Maximum number of significant digits in decimal representation. // The longest possible double in decimal representation is // (2^53 - 1) * 2 ^ -1074 that is (2 ^ 53 - 1) * 5 ^ 1074 / 10 ^ 1074 // (768 digits). If we parse a number whose first digits are equal to a // mean of 2 adjacent doubles (that could have up to 769 digits) the result // must be rounded to the bigger one unless the tail consists of zeros, so // we don't need to preserve all the digits. const int kMaxSignificantDigits = 772; // Returns true if a nonspace found and false if the end has reached. static inline bool AdvanceToNonspace(const char** current, const char* end) { while (*current != end) { if (**current != ' ') return true; ++*current; } return false; } static bool isDigit(int x, int radix) { return (x >= '0' && x <= '9' && x < '0' + radix) || (radix > 10 && x >= 'a' && x < 'a' + radix - 10) || (radix > 10 && x >= 'A' && x < 'A' + radix - 10); } static double SignedZero(bool sign) { return sign ? -0.0 : 0.0; } // Returns true if 'c' is a decimal digit that is valid for the given radix. // // The function is small and could be inlined, but VS2012 emitted a warning // because it constant-propagated the radix and concluded that the last // condition was always true. By moving it into a separate function the // compiler wouldn't warn anymore. static bool IsDecimalDigitForRadix(int c, int radix) { return '0' <= c && c <= '9' && (c - '0') < radix; } // Returns true if 'c' is a character digit that is valid for the given radix. // The 'a_character' should be 'a' or 'A'. // // The function is small and could be inlined, but VS2012 emitted a warning // because it constant-propagated the radix and concluded that the first // condition was always false. By moving it into a separate function the // compiler wouldn't warn anymore. static bool IsCharacterDigitForRadix(int c, int radix, char a_character) { return radix > 10 && c >= a_character && c < a_character + radix - 10; } // Parsing integers with radix 2, 4, 8, 16, 32. Assumes current != end. template static double RadixStringToIeee(const char* current, const char* end, bool sign, bool allow_trailing_junk, double junk_string_value, bool read_as_double, const char** trailing_pointer) { ASSERT(current != end); const int kDoubleSize = Double::kSignificandSize; const int kSingleSize = Single::kSignificandSize; const int kSignificandSize = read_as_double? kDoubleSize: kSingleSize; // Skip leading 0s. while (*current == '0') { ++current; if (current == end) { *trailing_pointer = end; return SignedZero(sign); } } int64_t number = 0; int exponent = 0; const int radix = (1 << radix_log_2); do { int digit; if (IsDecimalDigitForRadix(*current, radix)) { digit = static_cast(*current) - '0'; } else if (IsCharacterDigitForRadix(*current, radix, 'a')) { digit = static_cast(*current) - 'a' + 10; } else if (IsCharacterDigitForRadix(*current, radix, 'A')) { digit = static_cast(*current) - 'A' + 10; } else { if (allow_trailing_junk || !AdvanceToNonspace(¤t, end)) { break; } else { return junk_string_value; } } number = number * radix + digit; int overflow = static_cast(number >> kSignificandSize); if (overflow != 0) { // Overflow occurred. Need to determine which direction to round the // result. int overflow_bits_count = 1; while (overflow > 1) { overflow_bits_count++; overflow >>= 1; } int dropped_bits_mask = ((1 << overflow_bits_count) - 1); int dropped_bits = static_cast(number) & dropped_bits_mask; number >>= overflow_bits_count; exponent = overflow_bits_count; bool zero_tail = true; for (;;) { ++current; if (current == end || !isDigit(*current, radix)) break; zero_tail = zero_tail && *current == '0'; exponent += radix_log_2; } if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { return junk_string_value; } int middle_value = (1 << (overflow_bits_count - 1)); if (dropped_bits > middle_value) { number++; // Rounding up. } else if (dropped_bits == middle_value) { // Rounding to even to consistency with decimals: half-way case rounds // up if significant part is odd and down otherwise. if ((number & 1) != 0 || !zero_tail) { number++; // Rounding up. } } // Rounding up may cause overflow. if ((number & ((int64_t)1 << kSignificandSize)) != 0) { exponent++; number >>= 1; } break; } ++current; } while (current != end); ASSERT(number < ((int64_t)1 << kSignificandSize)); ASSERT(static_cast(static_cast(number)) == number); *trailing_pointer = current; if (exponent == 0) { if (sign) { if (number == 0) return -0.0; number = -number; } return static_cast(number); } ASSERT(number != 0); return Double(DiyFp(number, exponent)).value(); } double StringToDoubleConverter::StringToIeee( const char* input, int length, int* processed_characters_count, bool read_as_double) const { const char* current = input; const char* end = input + length; *processed_characters_count = 0; const bool allow_trailing_junk = (flags_ & ALLOW_TRAILING_JUNK) != 0; const bool allow_leading_spaces = (flags_ & ALLOW_LEADING_SPACES) != 0; const bool allow_trailing_spaces = (flags_ & ALLOW_TRAILING_SPACES) != 0; const bool allow_spaces_after_sign = (flags_ & ALLOW_SPACES_AFTER_SIGN) != 0; // To make sure that iterator dereferencing is valid the following // convention is used: // 1. Each '++current' statement is followed by check for equality to 'end'. // 2. If AdvanceToNonspace returned false then current == end. // 3. If 'current' becomes equal to 'end' the function returns or goes to // 'parsing_done'. // 4. 'current' is not dereferenced after the 'parsing_done' label. // 5. Code before 'parsing_done' may rely on 'current != end'. if (current == end) return empty_string_value_; if (allow_leading_spaces || allow_trailing_spaces) { if (!AdvanceToNonspace(¤t, end)) { *processed_characters_count = static_cast(current - input); return empty_string_value_; } if (!allow_leading_spaces && (input != current)) { // No leading spaces allowed, but AdvanceToNonspace moved forward. return junk_string_value_; } } // The longest form of simplified number is: "-.1eXXX\0". const int kBufferSize = kMaxSignificantDigits + 10; char buffer[kBufferSize]; // NOLINT: size is known at compile time. int buffer_pos = 0; // Exponent will be adjusted if insignificant digits of the integer part // or insignificant leading zeros of the fractional part are dropped. int exponent = 0; int significant_digits = 0; int insignificant_digits = 0; bool nonzero_digit_dropped = false; bool sign = false; if (*current == '+' || *current == '-') { sign = (*current == '-'); ++current; const char* next_non_space = current; // Skip following spaces (if allowed). if (!AdvanceToNonspace(&next_non_space, end)) return junk_string_value_; if (!allow_spaces_after_sign && (current != next_non_space)) { return junk_string_value_; } current = next_non_space; } if (infinity_symbol_ != NULL) { if (*current == infinity_symbol_[0]) { if (!ConsumeSubString(¤t, end, infinity_symbol_)) { return junk_string_value_; } if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { return junk_string_value_; } if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { return junk_string_value_; } ASSERT(buffer_pos == 0); *processed_characters_count = static_cast(current - input); return sign ? -Double::Infinity() : Double::Infinity(); } } if (nan_symbol_ != NULL) { if (*current == nan_symbol_[0]) { if (!ConsumeSubString(¤t, end, nan_symbol_)) { return junk_string_value_; } if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { return junk_string_value_; } if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { return junk_string_value_; } ASSERT(buffer_pos == 0); *processed_characters_count = static_cast(current - input); return sign ? -Double::NaN() : Double::NaN(); } } bool leading_zero = false; if (*current == '0') { ++current; if (current == end) { *processed_characters_count = static_cast(current - input); return SignedZero(sign); } leading_zero = true; // It could be hexadecimal value. if ((flags_ & ALLOW_HEX) && (*current == 'x' || *current == 'X')) { ++current; if (current == end || !isDigit(*current, 16)) { return junk_string_value_; // "0x". } const char* tail_pointer = NULL; double result = RadixStringToIeee<4>(current, end, sign, allow_trailing_junk, junk_string_value_, read_as_double, &tail_pointer); if (tail_pointer != NULL) { if (allow_trailing_spaces) AdvanceToNonspace(&tail_pointer, end); *processed_characters_count = static_cast(tail_pointer - input); } return result; } // Ignore leading zeros in the integer part. while (*current == '0') { ++current; if (current == end) { *processed_characters_count = static_cast(current - input); return SignedZero(sign); } } } bool octal = leading_zero && (flags_ & ALLOW_OCTALS) != 0; // Copy significant digits of the integer part (if any) to the buffer. while (*current >= '0' && *current <= '9') { if (significant_digits < kMaxSignificantDigits) { ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos++] = static_cast(*current); significant_digits++; // Will later check if it's an octal in the buffer. } else { insignificant_digits++; // Move the digit into the exponential part. nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; } octal = octal && *current < '8'; ++current; if (current == end) goto parsing_done; } if (significant_digits == 0) { octal = false; } if (*current == '.') { if (octal && !allow_trailing_junk) return junk_string_value_; if (octal) goto parsing_done; ++current; if (current == end) { if (significant_digits == 0 && !leading_zero) { return junk_string_value_; } else { goto parsing_done; } } if (significant_digits == 0) { // octal = false; // Integer part consists of 0 or is absent. Significant digits start after // leading zeros (if any). while (*current == '0') { ++current; if (current == end) { *processed_characters_count = static_cast(current - input); return SignedZero(sign); } exponent--; // Move this 0 into the exponent. } } // There is a fractional part. // We don't emit a '.', but adjust the exponent instead. while (*current >= '0' && *current <= '9') { if (significant_digits < kMaxSignificantDigits) { ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos++] = static_cast(*current); significant_digits++; exponent--; } else { // Ignore insignificant digits in the fractional part. nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; } ++current; if (current == end) goto parsing_done; } } if (!leading_zero && exponent == 0 && significant_digits == 0) { // If leading_zeros is true then the string contains zeros. // If exponent < 0 then string was [+-]\.0*... // If significant_digits != 0 the string is not equal to 0. // Otherwise there are no digits in the string. return junk_string_value_; } // Parse exponential part. if (*current == 'e' || *current == 'E') { if (octal && !allow_trailing_junk) return junk_string_value_; if (octal) goto parsing_done; ++current; if (current == end) { if (allow_trailing_junk) { goto parsing_done; } else { return junk_string_value_; } } char sign = '+'; if (*current == '+' || *current == '-') { sign = static_cast(*current); ++current; if (current == end) { if (allow_trailing_junk) { goto parsing_done; } else { return junk_string_value_; } } } if (current == end || *current < '0' || *current > '9') { if (allow_trailing_junk) { goto parsing_done; } else { return junk_string_value_; } } const int max_exponent = INT_MAX / 2; ASSERT(-max_exponent / 2 <= exponent && exponent <= max_exponent / 2); int num = 0; do { // Check overflow. int digit = *current - '0'; if (num >= max_exponent / 10 && !(num == max_exponent / 10 && digit <= max_exponent % 10)) { num = max_exponent; } else { num = num * 10 + digit; } ++current; } while (current != end && *current >= '0' && *current <= '9'); exponent += (sign == '-' ? -num : num); } if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { return junk_string_value_; } if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { return junk_string_value_; } if (allow_trailing_spaces) { AdvanceToNonspace(¤t, end); } parsing_done: exponent += insignificant_digits; if (octal) { double result; const char* tail_pointer = NULL; result = RadixStringToIeee<3>(buffer, buffer + buffer_pos, sign, allow_trailing_junk, junk_string_value_, read_as_double, &tail_pointer); ASSERT(tail_pointer != NULL); *processed_characters_count = static_cast(current - input); return result; } if (nonzero_digit_dropped) { buffer[buffer_pos++] = '1'; exponent--; } ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos] = '\0'; double converted; if (read_as_double) { converted = Strtod(Vector(buffer, buffer_pos), exponent); } else { converted = Strtof(Vector(buffer, buffer_pos), exponent); } *processed_characters_count = static_cast(current - input); return sign? -converted: converted; } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/double-conversion.h ================================================ // Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ #define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ #include "utils.h" namespace double_conversion { class DoubleToStringConverter { public: // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the // function returns false. static const int kMaxFixedDigitsBeforePoint = 60; static const int kMaxFixedDigitsAfterPoint = 60; // When calling ToExponential with a requested_digits // parameter > kMaxExponentialDigits then the function returns false. static const int kMaxExponentialDigits = 120; // When calling ToPrecision with a requested_digits // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits // then the function returns false. static const int kMinPrecisionDigits = 1; static const int kMaxPrecisionDigits = 120; enum Flags { NO_FLAGS = 0, EMIT_POSITIVE_EXPONENT_SIGN = 1, EMIT_TRAILING_DECIMAL_POINT = 2, EMIT_TRAILING_ZERO_AFTER_POINT = 4, UNIQUE_ZERO = 8 }; // Flags should be a bit-or combination of the possible Flags-enum. // - NO_FLAGS: no special flags. // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent // form, emits a '+' for positive exponents. Example: 1.2e+2. // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is // converted into decimal format then a trailing decimal point is appended. // Example: 2345.0 is converted to "2345.". // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point // emits a trailing '0'-character. This flag requires the // EXMIT_TRAILING_DECIMAL_POINT flag. // Example: 2345.0 is converted to "2345.0". // - UNIQUE_ZERO: "-0.0" is converted to "0.0". // // Infinity symbol and nan_symbol provide the string representation for these // special values. If the string is NULL and the special value is encountered // then the conversion functions return false. // // The exponent_character is used in exponential representations. It is // usually 'e' or 'E'. // // When converting to the shortest representation the converter will // represent input numbers in decimal format if they are in the interval // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ // (lower boundary included, greater boundary excluded). // Example: with decimal_in_shortest_low = -6 and // decimal_in_shortest_high = 21: // ToShortest(0.000001) -> "0.000001" // ToShortest(0.0000001) -> "1e-7" // ToShortest(111111111111111111111.0) -> "111111111111111110000" // ToShortest(100000000000000000000.0) -> "100000000000000000000" // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" // // When converting to precision mode the converter may add // max_leading_padding_zeroes before returning the number in exponential // format. // Example with max_leading_padding_zeroes_in_precision_mode = 6. // ToPrecision(0.0000012345, 2) -> "0.0000012" // ToPrecision(0.00000012345, 2) -> "1.2e-7" // Similarily the converter may add up to // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid // returning an exponential representation. A zero added by the // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: // ToPrecision(230.0, 2) -> "230" // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. DoubleToStringConverter(int flags, const char* infinity_symbol, const char* nan_symbol, char exponent_character, int decimal_in_shortest_low, int decimal_in_shortest_high, int max_leading_padding_zeroes_in_precision_mode, int max_trailing_padding_zeroes_in_precision_mode) : flags_(flags), infinity_symbol_(infinity_symbol), nan_symbol_(nan_symbol), exponent_character_(exponent_character), decimal_in_shortest_low_(decimal_in_shortest_low), decimal_in_shortest_high_(decimal_in_shortest_high), max_leading_padding_zeroes_in_precision_mode_( max_leading_padding_zeroes_in_precision_mode), max_trailing_padding_zeroes_in_precision_mode_( max_trailing_padding_zeroes_in_precision_mode) { // When 'trailing zero after the point' is set, then 'trailing point' // must be set too. ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); } // Returns a converter following the EcmaScript specification. static const DoubleToStringConverter& EcmaScriptConverter(); // Computes the shortest string of digits that correctly represent the input // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high // (see constructor) it then either returns a decimal representation, or an // exponential representation. // Example with decimal_in_shortest_low = -6, // decimal_in_shortest_high = 21, // EMIT_POSITIVE_EXPONENT_SIGN activated, and // EMIT_TRAILING_DECIMAL_POINT deactived: // ToShortest(0.000001) -> "0.000001" // ToShortest(0.0000001) -> "1e-7" // ToShortest(111111111111111111111.0) -> "111111111111111110000" // ToShortest(100000000000000000000.0) -> "100000000000000000000" // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" // // Note: the conversion may round the output if the returned string // is accurate enough to uniquely identify the input-number. // For example the most precise representation of the double 9e59 equals // "899999999999999918767229449717619953810131273674690656206848", but // the converter will return the shorter (but still correct) "9e59". // // Returns true if the conversion succeeds. The conversion always succeeds // except when the input value is special and no infinity_symbol or // nan_symbol has been given to the constructor. bool ToShortest(double value, StringBuilder* result_builder) const { return ToShortestIeeeNumber(value, result_builder, SHORTEST); } // Same as ToShortest, but for single-precision floats. bool ToShortestSingle(float value, StringBuilder* result_builder) const { return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); } // Computes a decimal representation with a fixed number of digits after the // decimal point. The last emitted digit is rounded. // // Examples: // ToFixed(3.12, 1) -> "3.1" // ToFixed(3.1415, 3) -> "3.142" // ToFixed(1234.56789, 4) -> "1234.5679" // ToFixed(1.23, 5) -> "1.23000" // ToFixed(0.1, 4) -> "0.1000" // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" // ToFixed(0.1, 17) -> "0.10000000000000001" // // If requested_digits equals 0, then the tail of the result depends on // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. // Examples, for requested_digits == 0, // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be // - false and false: then 123.45 -> 123 // 0.678 -> 1 // - true and false: then 123.45 -> 123. // 0.678 -> 1. // - true and true: then 123.45 -> 123.0 // 0.678 -> 1.0 // // Returns true if the conversion succeeds. The conversion always succeeds // except for the following cases: // - the input value is special and no infinity_symbol or nan_symbol has // been provided to the constructor, // - 'value' > 10^kMaxFixedDigitsBeforePoint, or // - 'requested_digits' > kMaxFixedDigitsAfterPoint. // The last two conditions imply that the result will never contain more than // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters // (one additional character for the sign, and one for the decimal point). bool ToFixed(double value, int requested_digits, StringBuilder* result_builder) const; // Computes a representation in exponential format with requested_digits // after the decimal point. The last emitted digit is rounded. // If requested_digits equals -1, then the shortest exponential representation // is computed. // // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and // exponent_character set to 'e'. // ToExponential(3.12, 1) -> "3.1e0" // ToExponential(5.0, 3) -> "5.000e0" // ToExponential(0.001, 2) -> "1.00e-3" // ToExponential(3.1415, -1) -> "3.1415e0" // ToExponential(3.1415, 4) -> "3.1415e0" // ToExponential(3.1415, 3) -> "3.142e0" // ToExponential(123456789000000, 3) -> "1.235e14" // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" // ToExponential(1000000000000000019884624838656.0, 32) -> // "1.00000000000000001988462483865600e30" // ToExponential(1234, 0) -> "1e3" // // Returns true if the conversion succeeds. The conversion always succeeds // except for the following cases: // - the input value is special and no infinity_symbol or nan_symbol has // been provided to the constructor, // - 'requested_digits' > kMaxExponentialDigits. // The last condition implies that the result will never contain more than // kMaxExponentialDigits + 8 characters (the sign, the digit before the // decimal point, the decimal point, the exponent character, the // exponent's sign, and at most 3 exponent digits). bool ToExponential(double value, int requested_digits, StringBuilder* result_builder) const; // Computes 'precision' leading digits of the given 'value' and returns them // either in exponential or decimal format, depending on // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the // constructor). // The last computed digit is rounded. // // Example with max_leading_padding_zeroes_in_precision_mode = 6. // ToPrecision(0.0000012345, 2) -> "0.0000012" // ToPrecision(0.00000012345, 2) -> "1.2e-7" // Similarily the converter may add up to // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid // returning an exponential representation. A zero added by the // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: // ToPrecision(230.0, 2) -> "230" // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no // EMIT_TRAILING_ZERO_AFTER_POINT: // ToPrecision(123450.0, 6) -> "123450" // ToPrecision(123450.0, 5) -> "123450" // ToPrecision(123450.0, 4) -> "123500" // ToPrecision(123450.0, 3) -> "123000" // ToPrecision(123450.0, 2) -> "1.2e5" // // Returns true if the conversion succeeds. The conversion always succeeds // except for the following cases: // - the input value is special and no infinity_symbol or nan_symbol has // been provided to the constructor, // - precision < kMinPericisionDigits // - precision > kMaxPrecisionDigits // The last condition implies that the result will never contain more than // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the // exponent character, the exponent's sign, and at most 3 exponent digits). bool ToPrecision(double value, int precision, StringBuilder* result_builder) const; enum DtoaMode { // Produce the shortest correct representation. // For example the output of 0.299999999999999988897 is (the less accurate // but correct) 0.3. SHORTEST, // Same as SHORTEST, but for single-precision floats. SHORTEST_SINGLE, // Produce a fixed number of digits after the decimal point. // For instance fixed(0.1, 4) becomes 0.1000 // If the input number is big, the output will be big. FIXED, // Fixed number of digits (independent of the decimal point). PRECISION }; // The maximal number of digits that are needed to emit a double in base 10. // A higher precision can be achieved by using more digits, but the shortest // accurate representation of any double will never use more digits than // kBase10MaximalLength. // Note that DoubleToAscii null-terminates its input. So the given buffer // should be at least kBase10MaximalLength + 1 characters long. static const int kBase10MaximalLength = 17; // Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v' // after it has been casted to a single-precision float. That is, in this // mode static_cast(v) must not be NaN, +Infinity or -Infinity. // // The result should be interpreted as buffer * 10^(point-length). // // The output depends on the given mode: // - SHORTEST: produce the least amount of digits for which the internal // identity requirement is still satisfied. If the digits are printed // (together with the correct exponent) then reading this number will give // 'v' again. The buffer will choose the representation that is closest to // 'v'. If there are two at the same distance, than the one farther away // from 0 is chosen (halfway cases - ending with 5 - are rounded up). // In this mode the 'requested_digits' parameter is ignored. // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. // - FIXED: produces digits necessary to print a given number with // 'requested_digits' digits after the decimal point. The produced digits // might be too short in which case the caller has to fill the remainder // with '0's. // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. // Halfway cases are rounded towards +/-Infinity (away from 0). The call // toFixed(0.15, 2) thus returns buffer="2", point=0. // The returned buffer may contain digits that would be truncated from the // shortest representation of the input. // - PRECISION: produces 'requested_digits' where the first digit is not '0'. // Even though the length of produced digits usually equals // 'requested_digits', the function is allowed to return fewer digits, in // which case the caller has to fill the missing digits with '0's. // Halfway cases are again rounded away from 0. // DoubleToAscii expects the given buffer to be big enough to hold all // digits and a terminating null-character. In SHORTEST-mode it expects a // buffer of at least kBase10MaximalLength + 1. In all other modes the // requested_digits parameter and the padding-zeroes limit the size of the // output. Don't forget the decimal point, the exponent character and the // terminating null-character when computing the maximal output size. // The given length is only used in debug mode to ensure the buffer is big // enough. static void DoubleToAscii(double v, DtoaMode mode, int requested_digits, char* buffer, int buffer_length, bool* sign, int* length, int* point); private: // Implementation for ToShortest and ToShortestSingle. bool ToShortestIeeeNumber(double value, StringBuilder* result_builder, DtoaMode mode) const; // If the value is a special value (NaN or Infinity) constructs the // corresponding string using the configured infinity/nan-symbol. // If either of them is NULL or the value is not special then the // function returns false. bool HandleSpecialValues(double value, StringBuilder* result_builder) const; // Constructs an exponential representation (i.e. 1.234e56). // The given exponent assumes a decimal point after the first decimal digit. void CreateExponentialRepresentation(const char* decimal_digits, int length, int exponent, StringBuilder* result_builder) const; // Creates a decimal representation (i.e 1234.5678). void CreateDecimalRepresentation(const char* decimal_digits, int length, int decimal_point, int digits_after_point, StringBuilder* result_builder) const; const int flags_; const char* const infinity_symbol_; const char* const nan_symbol_; const char exponent_character_; const int decimal_in_shortest_low_; const int decimal_in_shortest_high_; const int max_leading_padding_zeroes_in_precision_mode_; const int max_trailing_padding_zeroes_in_precision_mode_; DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); }; class StringToDoubleConverter { public: // Enumeration for allowing octals and ignoring junk when converting // strings to numbers. enum Flags { NO_FLAGS = 0, ALLOW_HEX = 1, ALLOW_OCTALS = 2, ALLOW_TRAILING_JUNK = 4, ALLOW_LEADING_SPACES = 8, ALLOW_TRAILING_SPACES = 16, ALLOW_SPACES_AFTER_SIGN = 32 }; // Flags should be a bit-or combination of the possible Flags-enum. // - NO_FLAGS: no special flags. // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. // Ex: StringToDouble("0x1234") -> 4660.0 // In StringToDouble("0x1234.56") the characters ".56" are trailing // junk. The result of the call is hence dependent on // the ALLOW_TRAILING_JUNK flag and/or the junk value. // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, // the string will not be parsed as "0" followed by junk. // // - ALLOW_OCTALS: recognizes the prefix "0" for octals: // If a sequence of octal digits starts with '0', then the number is // read as octal integer. Octal numbers may only be integers. // Ex: StringToDouble("01234") -> 668.0 // StringToDouble("012349") -> 12349.0 // Not a sequence of octal // // digits. // In StringToDouble("01234.56") the characters ".56" are trailing // junk. The result of the call is hence dependent on // the ALLOW_TRAILING_JUNK flag and/or the junk value. // In StringToDouble("01234e56") the characters "e56" are trailing // junk, too. // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of // a double literal. // - ALLOW_LEADING_SPACES: skip over leading spaces. // - ALLOW_TRAILING_SPACES: ignore trailing spaces. // - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign. // Ex: StringToDouble("- 123.2") -> -123.2. // StringToDouble("+ 123.2") -> 123.2 // // empty_string_value is returned when an empty string is given as input. // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string // containing only spaces is converted to the 'empty_string_value', too. // // junk_string_value is returned when // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not // part of a double-literal) is found. // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a // double literal. // // infinity_symbol and nan_symbol are strings that are used to detect // inputs that represent infinity and NaN. They can be null, in which case // they are ignored. // The conversion routine first reads any possible signs. Then it compares the // following character of the input-string with the first character of // the infinity, and nan-symbol. If either matches, the function assumes, that // a match has been found, and expects the following input characters to match // the remaining characters of the special-value symbol. // This means that the following restrictions apply to special-value symbols: // - they must not start with signs ('+', or '-'), // - they must not have the same first character. // - they must not start with digits. // // Examples: // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, // empty_string_value = 0.0, // junk_string_value = NaN, // infinity_symbol = "infinity", // nan_symbol = "nan": // StringToDouble("0x1234") -> 4660.0. // StringToDouble("0x1234K") -> 4660.0. // StringToDouble("") -> 0.0 // empty_string_value. // StringToDouble(" ") -> NaN // junk_string_value. // StringToDouble(" 1") -> NaN // junk_string_value. // StringToDouble("0x") -> NaN // junk_string_value. // StringToDouble("-123.45") -> -123.45. // StringToDouble("--123.45") -> NaN // junk_string_value. // StringToDouble("123e45") -> 123e45. // StringToDouble("123E45") -> 123e45. // StringToDouble("123e+45") -> 123e45. // StringToDouble("123E-45") -> 123e-45. // StringToDouble("123e") -> 123.0 // trailing junk ignored. // StringToDouble("123e-") -> 123.0 // trailing junk ignored. // StringToDouble("+NaN") -> NaN // NaN string literal. // StringToDouble("-infinity") -> -inf. // infinity literal. // StringToDouble("Infinity") -> NaN // junk_string_value. // // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, // empty_string_value = 0.0, // junk_string_value = NaN, // infinity_symbol = NULL, // nan_symbol = NULL: // StringToDouble("0x1234") -> NaN // junk_string_value. // StringToDouble("01234") -> 668.0. // StringToDouble("") -> 0.0 // empty_string_value. // StringToDouble(" ") -> 0.0 // empty_string_value. // StringToDouble(" 1") -> 1.0 // StringToDouble("0x") -> NaN // junk_string_value. // StringToDouble("0123e45") -> NaN // junk_string_value. // StringToDouble("01239E45") -> 1239e45. // StringToDouble("-infinity") -> NaN // junk_string_value. // StringToDouble("NaN") -> NaN // junk_string_value. StringToDoubleConverter(int flags, double empty_string_value, double junk_string_value, const char* infinity_symbol, const char* nan_symbol) : flags_(flags), empty_string_value_(empty_string_value), junk_string_value_(junk_string_value), infinity_symbol_(infinity_symbol), nan_symbol_(nan_symbol) { } // Performs the conversion. // The output parameter 'processed_characters_count' is set to the number // of characters that have been processed to read the number. // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included // in the 'processed_characters_count'. Trailing junk is never included. double StringToDouble(const char* buffer, int length, int* processed_characters_count) const { return StringToIeee(buffer, length, processed_characters_count, true); } // Same as StringToDouble but reads a float. // Note that this is not equivalent to static_cast(StringToDouble(...)) // due to potential double-rounding. float StringToFloat(const char* buffer, int length, int* processed_characters_count) const { return static_cast(StringToIeee(buffer, length, processed_characters_count, false)); } private: const int flags_; const double empty_string_value_; const double junk_string_value_; const char* const infinity_symbol_; const char* const nan_symbol_; double StringToIeee(const char* buffer, int length, int* processed_characters_count, bool read_as_double) const; DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); }; } // namespace double_conversion #endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/fast-dtoa.cc ================================================ // Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast-dtoa.h" #include "cached-powers.h" #include "diy-fp.h" #include "ieee.h" namespace double_conversion { // The minimal and maximal target exponent define the range of w's binary // exponent, where 'w' is the result of multiplying the input by a cached power // of ten. // // A different range might be chosen on a different platform, to optimize digit // generation, but a smaller range requires more powers of ten to be cached. static const int kMinimalTargetExponent = -60; static const int kMaximalTargetExponent = -32; // Adjusts the last digit of the generated number, and screens out generated // solutions that may be inaccurate. A solution may be inaccurate if it is // outside the safe interval, or if we cannot prove that it is closer to the // input than a neighboring representation of the same length. // // Input: * buffer containing the digits of too_high / 10^kappa // * the buffer's length // * distance_too_high_w == (too_high - w).f() * unit // * unsafe_interval == (too_high - too_low).f() * unit // * rest = (too_high - buffer * 10^kappa).f() * unit // * ten_kappa = 10^kappa * unit // * unit = the common multiplier // Output: returns true if the buffer is guaranteed to contain the closest // representable number to the input. // Modifies the generated digits in the buffer to approach (round towards) w. static bool RoundWeed(Vector buffer, int length, uint64_t distance_too_high_w, uint64_t unsafe_interval, uint64_t rest, uint64_t ten_kappa, uint64_t unit) { uint64_t small_distance = distance_too_high_w - unit; uint64_t big_distance = distance_too_high_w + unit; // Let w_low = too_high - big_distance, and // w_high = too_high - small_distance. // Note: w_low < w < w_high // // The real w (* unit) must lie somewhere inside the interval // ]w_low; w_high[ (often written as "(w_low; w_high)") // Basically the buffer currently contains a number in the unsafe interval // ]too_low; too_high[ with too_low < w < too_high // // too_high - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ^v 1 unit ^ ^ ^ ^ // boundary_high --------------------- . . . . // ^v 1 unit . . . . // - - - - - - - - - - - - - - - - - - - + - - + - - - - - - . . // . . ^ . . // . big_distance . . . // . . . . rest // small_distance . . . . // v . . . . // w_high - - - - - - - - - - - - - - - - - - . . . . // ^v 1 unit . . . . // w ---------------------------------------- . . . . // ^v 1 unit v . . . // w_low - - - - - - - - - - - - - - - - - - - - - . . . // . . v // buffer --------------------------------------------------+-------+-------- // . . // safe_interval . // v . // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . // ^v 1 unit . // boundary_low ------------------------- unsafe_interval // ^v 1 unit v // too_low - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // // // Note that the value of buffer could lie anywhere inside the range too_low // to too_high. // // boundary_low, boundary_high and w are approximations of the real boundaries // and v (the input number). They are guaranteed to be precise up to one unit. // In fact the error is guaranteed to be strictly less than one unit. // // Anything that lies outside the unsafe interval is guaranteed not to round // to v when read again. // Anything that lies inside the safe interval is guaranteed to round to v // when read again. // If the number inside the buffer lies inside the unsafe interval but not // inside the safe interval then we simply do not know and bail out (returning // false). // // Similarly we have to take into account the imprecision of 'w' when finding // the closest representation of 'w'. If we have two potential // representations, and one is closer to both w_low and w_high, then we know // it is closer to the actual value v. // // By generating the digits of too_high we got the largest (closest to // too_high) buffer that is still in the unsafe interval. In the case where // w_high < buffer < too_high we try to decrement the buffer. // This way the buffer approaches (rounds towards) w. // There are 3 conditions that stop the decrementation process: // 1) the buffer is already below w_high // 2) decrementing the buffer would make it leave the unsafe interval // 3) decrementing the buffer would yield a number below w_high and farther // away than the current number. In other words: // (buffer{-1} < w_high) && w_high - buffer{-1} > buffer - w_high // Instead of using the buffer directly we use its distance to too_high. // Conceptually rest ~= too_high - buffer // We need to do the following tests in this order to avoid over- and // underflows. ASSERT(rest <= unsafe_interval); while (rest < small_distance && // Negated condition 1 unsafe_interval - rest >= ten_kappa && // Negated condition 2 (rest + ten_kappa < small_distance || // buffer{-1} > w_high small_distance - rest >= rest + ten_kappa - small_distance)) { buffer[length - 1]--; rest += ten_kappa; } // We have approached w+ as much as possible. We now test if approaching w- // would require changing the buffer. If yes, then we have two possible // representations close to w, but we cannot decide which one is closer. if (rest < big_distance && unsafe_interval - rest >= ten_kappa && (rest + ten_kappa < big_distance || big_distance - rest > rest + ten_kappa - big_distance)) { return false; } // Weeding test. // The safe interval is [too_low + 2 ulp; too_high - 2 ulp] // Since too_low = too_high - unsafe_interval this is equivalent to // [too_high - unsafe_interval + 4 ulp; too_high - 2 ulp] // Conceptually we have: rest ~= too_high - buffer return (2 * unit <= rest) && (rest <= unsafe_interval - 4 * unit); } // Rounds the buffer upwards if the result is closer to v by possibly adding // 1 to the buffer. If the precision of the calculation is not sufficient to // round correctly, return false. // The rounding might shift the whole buffer in which case the kappa is // adjusted. For example "99", kappa = 3 might become "10", kappa = 4. // // If 2*rest > ten_kappa then the buffer needs to be round up. // rest can have an error of +/- 1 unit. This function accounts for the // imprecision and returns false, if the rounding direction cannot be // unambiguously determined. // // Precondition: rest < ten_kappa. static bool RoundWeedCounted(Vector buffer, int length, uint64_t rest, uint64_t ten_kappa, uint64_t unit, int* kappa) { ASSERT(rest < ten_kappa); // The following tests are done in a specific order to avoid overflows. They // will work correctly with any uint64 values of rest < ten_kappa and unit. // // If the unit is too big, then we don't know which way to round. For example // a unit of 50 means that the real number lies within rest +/- 50. If // 10^kappa == 40 then there is no way to tell which way to round. if (unit >= ten_kappa) return false; // Even if unit is just half the size of 10^kappa we are already completely // lost. (And after the previous test we know that the expression will not // over/underflow.) if (ten_kappa - unit <= unit) return false; // If 2 * (rest + unit) <= 10^kappa we can safely round down. if ((ten_kappa - rest > rest) && (ten_kappa - 2 * rest >= 2 * unit)) { return true; } // If 2 * (rest - unit) >= 10^kappa, then we can safely round up. if ((rest > unit) && (ten_kappa - (rest - unit) <= (rest - unit))) { // Increment the last digit recursively until we find a non '9' digit. buffer[length - 1]++; for (int i = length - 1; i > 0; --i) { if (buffer[i] != '0' + 10) break; buffer[i] = '0'; buffer[i - 1]++; } // If the first digit is now '0'+ 10 we had a buffer with all '9's. With the // exception of the first digit all digits are now '0'. Simply switch the // first digit to '1' and adjust the kappa. Example: "99" becomes "10" and // the power (the kappa) is increased. if (buffer[0] == '0' + 10) { buffer[0] = '1'; (*kappa) += 1; } return true; } return false; } // Returns the biggest power of ten that is less than or equal to the given // number. We furthermore receive the maximum number of bits 'number' has. // // Returns power == 10^(exponent_plus_one-1) such that // power <= number < power * 10. // If number_bits == 0 then 0^(0-1) is returned. // The number of bits must be <= 32. // Precondition: number < (1 << (number_bits + 1)). // Inspired by the method for finding an integer log base 10 from here: // http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 static unsigned int const kSmallPowersOfTen[] = {0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; static void BiggestPowerTen(uint32_t number, int number_bits, uint32_t* power, int* exponent_plus_one) { ASSERT(number < (1u << (number_bits + 1))); // 1233/4096 is approximately 1/lg(10). int exponent_plus_one_guess = ((number_bits + 1) * 1233 >> 12); // We increment to skip over the first entry in the kPowersOf10 table. // Note: kPowersOf10[i] == 10^(i-1). exponent_plus_one_guess++; // We don't have any guarantees that 2^number_bits <= number. if (number < kSmallPowersOfTen[exponent_plus_one_guess]) { exponent_plus_one_guess--; } *power = kSmallPowersOfTen[exponent_plus_one_guess]; *exponent_plus_one = exponent_plus_one_guess; } // Generates the digits of input number w. // w is a floating-point number (DiyFp), consisting of a significand and an // exponent. Its exponent is bounded by kMinimalTargetExponent and // kMaximalTargetExponent. // Hence -60 <= w.e() <= -32. // // Returns false if it fails, in which case the generated digits in the buffer // should not be used. // Preconditions: // * low, w and high are correct up to 1 ulp (unit in the last place). That // is, their error must be less than a unit of their last digits. // * low.e() == w.e() == high.e() // * low < w < high, and taking into account their error: low~ <= high~ // * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent // Postconditions: returns false if procedure fails. // otherwise: // * buffer is not null-terminated, but len contains the number of digits. // * buffer contains the shortest possible decimal digit-sequence // such that LOW < buffer * 10^kappa < HIGH, where LOW and HIGH are the // correct values of low and high (without their error). // * if more than one decimal representation gives the minimal number of // decimal digits then the one closest to W (where W is the correct value // of w) is chosen. // Remark: this procedure takes into account the imprecision of its input // numbers. If the precision is not enough to guarantee all the postconditions // then false is returned. This usually happens rarely (~0.5%). // // Say, for the sake of example, that // w.e() == -48, and w.f() == 0x1234567890abcdef // w's value can be computed by w.f() * 2^w.e() // We can obtain w's integral digits by simply shifting w.f() by -w.e(). // -> w's integral part is 0x1234 // w's fractional part is therefore 0x567890abcdef. // Printing w's integral part is easy (simply print 0x1234 in decimal). // In order to print its fraction we repeatedly multiply the fraction by 10 and // get each digit. Example the first digit after the point would be computed by // (0x567890abcdef * 10) >> 48. -> 3 // The whole thing becomes slightly more complicated because we want to stop // once we have enough digits. That is, once the digits inside the buffer // represent 'w' we can stop. Everything inside the interval low - high // represents w. However we have to pay attention to low, high and w's // imprecision. static bool DigitGen(DiyFp low, DiyFp w, DiyFp high, Vector buffer, int* length, int* kappa) { ASSERT(low.e() == w.e() && w.e() == high.e()); ASSERT(low.f() + 1 <= high.f() - 1); ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); // low, w and high are imprecise, but by less than one ulp (unit in the last // place). // If we remove (resp. add) 1 ulp from low (resp. high) we are certain that // the new numbers are outside of the interval we want the final // representation to lie in. // Inversely adding (resp. removing) 1 ulp from low (resp. high) would yield // numbers that are certain to lie in the interval. We will use this fact // later on. // We will now start by generating the digits within the uncertain // interval. Later we will weed out representations that lie outside the safe // interval and thus _might_ lie outside the correct interval. uint64_t unit = 1; DiyFp too_low = DiyFp(low.f() - unit, low.e()); DiyFp too_high = DiyFp(high.f() + unit, high.e()); // too_low and too_high are guaranteed to lie outside the interval we want the // generated number in. DiyFp unsafe_interval = DiyFp::Minus(too_high, too_low); // We now cut the input number into two parts: the integral digits and the // fractionals. We will not write any decimal separator though, but adapt // kappa instead. // Reminder: we are currently computing the digits (stored inside the buffer) // such that: too_low < buffer * 10^kappa < too_high // We use too_high for the digit_generation and stop as soon as possible. // If we stop early we effectively round down. DiyFp one = DiyFp(static_cast(1) << -w.e(), w.e()); // Division by one is a shift. uint32_t integrals = static_cast(too_high.f() >> -one.e()); // Modulo by one is an and. uint64_t fractionals = too_high.f() & (one.f() - 1); uint32_t divisor; int divisor_exponent_plus_one; BiggestPowerTen(integrals, DiyFp::kSignificandSize - (-one.e()), &divisor, &divisor_exponent_plus_one); *kappa = divisor_exponent_plus_one; *length = 0; // Loop invariant: buffer = too_high / 10^kappa (integer division) // The invariant holds for the first iteration: kappa has been initialized // with the divisor exponent + 1. And the divisor is the biggest power of ten // that is smaller than integrals. while (*kappa > 0) { int digit = integrals / divisor; ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; integrals %= divisor; (*kappa)--; // Note that kappa now equals the exponent of the divisor and that the // invariant thus holds again. uint64_t rest = (static_cast(integrals) << -one.e()) + fractionals; // Invariant: too_high = buffer * 10^kappa + DiyFp(rest, one.e()) // Reminder: unsafe_interval.e() == one.e() if (rest < unsafe_interval.f()) { // Rounding down (by not emitting the remaining digits) yields a number // that lies within the unsafe interval. return RoundWeed(buffer, *length, DiyFp::Minus(too_high, w).f(), unsafe_interval.f(), rest, static_cast(divisor) << -one.e(), unit); } divisor /= 10; } // The integrals have been generated. We are at the point of the decimal // separator. In the following loop we simply multiply the remaining digits by // 10 and divide by one. We just need to pay attention to multiply associated // data (like the interval or 'unit'), too. // Note that the multiplication by 10 does not overflow, because w.e >= -60 // and thus one.e >= -60. ASSERT(one.e() >= -60); ASSERT(fractionals < one.f()); ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); for (;;) { fractionals *= 10; unit *= 10; unsafe_interval.set_f(unsafe_interval.f() * 10); // Integer division by one. int digit = static_cast(fractionals >> -one.e()); ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; fractionals &= one.f() - 1; // Modulo by one. (*kappa)--; if (fractionals < unsafe_interval.f()) { return RoundWeed(buffer, *length, DiyFp::Minus(too_high, w).f() * unit, unsafe_interval.f(), fractionals, one.f(), unit); } } } // Generates (at most) requested_digits digits of input number w. // w is a floating-point number (DiyFp), consisting of a significand and an // exponent. Its exponent is bounded by kMinimalTargetExponent and // kMaximalTargetExponent. // Hence -60 <= w.e() <= -32. // // Returns false if it fails, in which case the generated digits in the buffer // should not be used. // Preconditions: // * w is correct up to 1 ulp (unit in the last place). That // is, its error must be strictly less than a unit of its last digit. // * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent // // Postconditions: returns false if procedure fails. // otherwise: // * buffer is not null-terminated, but length contains the number of // digits. // * the representation in buffer is the most precise representation of // requested_digits digits. // * buffer contains at most requested_digits digits of w. If there are less // than requested_digits digits then some trailing '0's have been removed. // * kappa is such that // w = buffer * 10^kappa + eps with |eps| < 10^kappa / 2. // // Remark: This procedure takes into account the imprecision of its input // numbers. If the precision is not enough to guarantee all the postconditions // then false is returned. This usually happens rarely, but the failure-rate // increases with higher requested_digits. static bool DigitGenCounted(DiyFp w, int requested_digits, Vector buffer, int* length, int* kappa) { ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); ASSERT(kMinimalTargetExponent >= -60); ASSERT(kMaximalTargetExponent <= -32); // w is assumed to have an error less than 1 unit. Whenever w is scaled we // also scale its error. uint64_t w_error = 1; // We cut the input number into two parts: the integral digits and the // fractional digits. We don't emit any decimal separator, but adapt kappa // instead. Example: instead of writing "1.2" we put "12" into the buffer and // increase kappa by 1. DiyFp one = DiyFp(static_cast(1) << -w.e(), w.e()); // Division by one is a shift. uint32_t integrals = static_cast(w.f() >> -one.e()); // Modulo by one is an and. uint64_t fractionals = w.f() & (one.f() - 1); uint32_t divisor; int divisor_exponent_plus_one; BiggestPowerTen(integrals, DiyFp::kSignificandSize - (-one.e()), &divisor, &divisor_exponent_plus_one); *kappa = divisor_exponent_plus_one; *length = 0; // Loop invariant: buffer = w / 10^kappa (integer division) // The invariant holds for the first iteration: kappa has been initialized // with the divisor exponent + 1. And the divisor is the biggest power of ten // that is smaller than 'integrals'. while (*kappa > 0) { int digit = integrals / divisor; ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; requested_digits--; integrals %= divisor; (*kappa)--; // Note that kappa now equals the exponent of the divisor and that the // invariant thus holds again. if (requested_digits == 0) break; divisor /= 10; } if (requested_digits == 0) { uint64_t rest = (static_cast(integrals) << -one.e()) + fractionals; return RoundWeedCounted(buffer, *length, rest, static_cast(divisor) << -one.e(), w_error, kappa); } // The integrals have been generated. We are at the point of the decimal // separator. In the following loop we simply multiply the remaining digits by // 10 and divide by one. We just need to pay attention to multiply associated // data (the 'unit'), too. // Note that the multiplication by 10 does not overflow, because w.e >= -60 // and thus one.e >= -60. ASSERT(one.e() >= -60); ASSERT(fractionals < one.f()); ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); while (requested_digits > 0 && fractionals > w_error) { fractionals *= 10; w_error *= 10; // Integer division by one. int digit = static_cast(fractionals >> -one.e()); ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; requested_digits--; fractionals &= one.f() - 1; // Modulo by one. (*kappa)--; } if (requested_digits != 0) return false; return RoundWeedCounted(buffer, *length, fractionals, one.f(), w_error, kappa); } // Provides a decimal representation of v. // Returns true if it succeeds, otherwise the result cannot be trusted. // There will be *length digits inside the buffer (not null-terminated). // If the function returns true then // v == (double) (buffer * 10^decimal_exponent). // The digits in the buffer are the shortest representation possible: no // 0.09999999999999999 instead of 0.1. The shorter representation will even be // chosen even if the longer one would be closer to v. // The last digit will be closest to the actual v. That is, even if several // digits might correctly yield 'v' when read again, the closest will be // computed. static bool Grisu3(double v, FastDtoaMode mode, Vector buffer, int* length, int* decimal_exponent) { DiyFp w = Double(v).AsNormalizedDiyFp(); // boundary_minus and boundary_plus are the boundaries between v and its // closest floating-point neighbors. Any number strictly between // boundary_minus and boundary_plus will round to v when convert to a double. // Grisu3 will never output representations that lie exactly on a boundary. DiyFp boundary_minus, boundary_plus; if (mode == FAST_DTOA_SHORTEST) { Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } else { ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE); float single_v = static_cast(v); Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } ASSERT(boundary_plus.e() == w.e()); DiyFp ten_mk; // Cached power of ten: 10^-k int mk; // -k int ten_mk_minimal_binary_exponent = kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize); int ten_mk_maximal_binary_exponent = kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize); PowersOfTenCache::GetCachedPowerForBinaryExponentRange( ten_mk_minimal_binary_exponent, ten_mk_maximal_binary_exponent, &ten_mk, &mk); ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + DiyFp::kSignificandSize) && (kMaximalTargetExponent >= w.e() + ten_mk.e() + DiyFp::kSignificandSize)); // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a // 64 bit significand and ten_mk is thus only precise up to 64 bits. // The DiyFp::Times procedure rounds its result, and ten_mk is approximated // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now // off by a small amount. // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w. // In other words: let f = scaled_w.f() and e = scaled_w.e(), then // (f-1) * 2^e < w*10^k < (f+1) * 2^e DiyFp scaled_w = DiyFp::Times(w, ten_mk); ASSERT(scaled_w.e() == boundary_plus.e() + ten_mk.e() + DiyFp::kSignificandSize); // In theory it would be possible to avoid some recomputations by computing // the difference between w and boundary_minus/plus (a power of 2) and to // compute scaled_boundary_minus/plus by subtracting/adding from // scaled_w. However the code becomes much less readable and the speed // enhancements are not terriffic. DiyFp scaled_boundary_minus = DiyFp::Times(boundary_minus, ten_mk); DiyFp scaled_boundary_plus = DiyFp::Times(boundary_plus, ten_mk); // DigitGen will generate the digits of scaled_w. Therefore we have // v == (double) (scaled_w * 10^-mk). // Set decimal_exponent == -mk and pass it to DigitGen. If scaled_w is not an // integer than it will be updated. For instance if scaled_w == 1.23 then // the buffer will be filled with "123" und the decimal_exponent will be // decreased by 2. int kappa; bool result = DigitGen(scaled_boundary_minus, scaled_w, scaled_boundary_plus, buffer, length, &kappa); *decimal_exponent = -mk + kappa; return result; } // The "counted" version of grisu3 (see above) only generates requested_digits // number of digits. This version does not generate the shortest representation, // and with enough requested digits 0.1 will at some point print as 0.9999999... // Grisu3 is too imprecise for real halfway cases (1.5 will not work) and // therefore the rounding strategy for halfway cases is irrelevant. static bool Grisu3Counted(double v, int requested_digits, Vector buffer, int* length, int* decimal_exponent) { DiyFp w = Double(v).AsNormalizedDiyFp(); DiyFp ten_mk; // Cached power of ten: 10^-k int mk; // -k int ten_mk_minimal_binary_exponent = kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize); int ten_mk_maximal_binary_exponent = kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize); PowersOfTenCache::GetCachedPowerForBinaryExponentRange( ten_mk_minimal_binary_exponent, ten_mk_maximal_binary_exponent, &ten_mk, &mk); ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + DiyFp::kSignificandSize) && (kMaximalTargetExponent >= w.e() + ten_mk.e() + DiyFp::kSignificandSize)); // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a // 64 bit significand and ten_mk is thus only precise up to 64 bits. // The DiyFp::Times procedure rounds its result, and ten_mk is approximated // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now // off by a small amount. // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w. // In other words: let f = scaled_w.f() and e = scaled_w.e(), then // (f-1) * 2^e < w*10^k < (f+1) * 2^e DiyFp scaled_w = DiyFp::Times(w, ten_mk); // We now have (double) (scaled_w * 10^-mk). // DigitGen will generate the first requested_digits digits of scaled_w and // return together with a kappa such that scaled_w ~= buffer * 10^kappa. (It // will not always be exactly the same since DigitGenCounted only produces a // limited number of digits.) int kappa; bool result = DigitGenCounted(scaled_w, requested_digits, buffer, length, &kappa); *decimal_exponent = -mk + kappa; return result; } bool FastDtoa(double v, FastDtoaMode mode, int requested_digits, Vector buffer, int* length, int* decimal_point) { ASSERT(v > 0); ASSERT(!Double(v).IsSpecial()); bool result = false; int decimal_exponent = 0; switch (mode) { case FAST_DTOA_SHORTEST: case FAST_DTOA_SHORTEST_SINGLE: result = Grisu3(v, mode, buffer, length, &decimal_exponent); break; case FAST_DTOA_PRECISION: result = Grisu3Counted(v, requested_digits, buffer, length, &decimal_exponent); break; default: UNREACHABLE(); } if (result) { *decimal_point = *length + decimal_exponent; buffer[*length] = '\0'; } return result; } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/fast-dtoa.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_FAST_DTOA_H_ #define DOUBLE_CONVERSION_FAST_DTOA_H_ #include "utils.h" namespace double_conversion { enum FastDtoaMode { // Computes the shortest representation of the given input. The returned // result will be the most accurate number of this length. Longer // representations might be more accurate. FAST_DTOA_SHORTEST, // Same as FAST_DTOA_SHORTEST but for single-precision floats. FAST_DTOA_SHORTEST_SINGLE, // Computes a representation where the precision (number of digits) is // given as input. The precision is independent of the decimal point. FAST_DTOA_PRECISION }; // FastDtoa will produce at most kFastDtoaMaximalLength digits. This does not // include the terminating '\0' character. static const int kFastDtoaMaximalLength = 17; // Same for single-precision numbers. static const int kFastDtoaMaximalSingleLength = 9; // Provides a decimal representation of v. // The result should be interpreted as buffer * 10^(point - length). // // Precondition: // * v must be a strictly positive finite double. // // Returns true if it succeeds, otherwise the result can not be trusted. // There will be *length digits inside the buffer followed by a null terminator. // If the function returns true and mode equals // - FAST_DTOA_SHORTEST, then // the parameter requested_digits is ignored. // The result satisfies // v == (double) (buffer * 10^(point - length)). // The digits in the buffer are the shortest representation possible. E.g. // if 0.099999999999 and 0.1 represent the same double then "1" is returned // with point = 0. // The last digit will be closest to the actual v. That is, even if several // digits might correctly yield 'v' when read again, the buffer will contain // the one closest to v. // - FAST_DTOA_PRECISION, then // the buffer contains requested_digits digits. // the difference v - (buffer * 10^(point-length)) is closest to zero for // all possible representations of requested_digits digits. // If there are two values that are equally close, then FastDtoa returns // false. // For both modes the buffer must be large enough to hold the result. bool FastDtoa(double d, FastDtoaMode mode, int requested_digits, Vector buffer, int* length, int* decimal_point); } // namespace double_conversion #endif // DOUBLE_CONVERSION_FAST_DTOA_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/fixed-dtoa.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "fixed-dtoa.h" #include "ieee.h" namespace double_conversion { // Represents a 128bit type. This class should be replaced by a native type on // platforms that support 128bit integers. class UInt128 { public: UInt128() : high_bits_(0), low_bits_(0) { } UInt128(uint64_t high, uint64_t low) : high_bits_(high), low_bits_(low) { } void Multiply(uint32_t multiplicand) { uint64_t accumulator; accumulator = (low_bits_ & kMask32) * multiplicand; uint32_t part = static_cast(accumulator & kMask32); accumulator >>= 32; accumulator = accumulator + (low_bits_ >> 32) * multiplicand; low_bits_ = (accumulator << 32) + part; accumulator >>= 32; accumulator = accumulator + (high_bits_ & kMask32) * multiplicand; part = static_cast(accumulator & kMask32); accumulator >>= 32; accumulator = accumulator + (high_bits_ >> 32) * multiplicand; high_bits_ = (accumulator << 32) + part; ASSERT((accumulator >> 32) == 0); } void Shift(int shift_amount) { ASSERT(-64 <= shift_amount && shift_amount <= 64); if (shift_amount == 0) { return; } else if (shift_amount == -64) { high_bits_ = low_bits_; low_bits_ = 0; } else if (shift_amount == 64) { low_bits_ = high_bits_; high_bits_ = 0; } else if (shift_amount <= 0) { high_bits_ <<= -shift_amount; high_bits_ += low_bits_ >> (64 + shift_amount); low_bits_ <<= -shift_amount; } else { low_bits_ >>= shift_amount; low_bits_ += high_bits_ << (64 - shift_amount); high_bits_ >>= shift_amount; } } // Modifies *this to *this MOD (2^power). // Returns *this DIV (2^power). int DivModPowerOf2(int power) { if (power >= 64) { int result = static_cast(high_bits_ >> (power - 64)); high_bits_ -= static_cast(result) << (power - 64); return result; } else { uint64_t part_low = low_bits_ >> power; uint64_t part_high = high_bits_ << (64 - power); int result = static_cast(part_low + part_high); high_bits_ = 0; low_bits_ -= part_low << power; return result; } } bool IsZero() const { return high_bits_ == 0 && low_bits_ == 0; } int BitAt(int position) { if (position >= 64) { return static_cast(high_bits_ >> (position - 64)) & 1; } else { return static_cast(low_bits_ >> position) & 1; } } private: static const uint64_t kMask32 = 0xFFFFFFFF; // Value == (high_bits_ << 64) + low_bits_ uint64_t high_bits_; uint64_t low_bits_; }; static const int kDoubleSignificandSize = 53; // Includes the hidden bit. static void FillDigits32FixedLength(uint32_t number, int requested_length, Vector buffer, int* length) { for (int i = requested_length - 1; i >= 0; --i) { buffer[(*length) + i] = '0' + number % 10; number /= 10; } *length += requested_length; } static void FillDigits32(uint32_t number, Vector buffer, int* length) { int number_length = 0; // We fill the digits in reverse order and exchange them afterwards. while (number != 0) { int digit = number % 10; number /= 10; buffer[(*length) + number_length] = static_cast('0' + digit); number_length++; } // Exchange the digits. int i = *length; int j = *length + number_length - 1; while (i < j) { char tmp = buffer[i]; buffer[i] = buffer[j]; buffer[j] = tmp; i++; j--; } *length += number_length; } static void FillDigits64FixedLength(uint64_t number, Vector buffer, int* length) { const uint32_t kTen7 = 10000000; // For efficiency cut the number into 3 uint32_t parts, and print those. uint32_t part2 = static_cast(number % kTen7); number /= kTen7; uint32_t part1 = static_cast(number % kTen7); uint32_t part0 = static_cast(number / kTen7); FillDigits32FixedLength(part0, 3, buffer, length); FillDigits32FixedLength(part1, 7, buffer, length); FillDigits32FixedLength(part2, 7, buffer, length); } static void FillDigits64(uint64_t number, Vector buffer, int* length) { const uint32_t kTen7 = 10000000; // For efficiency cut the number into 3 uint32_t parts, and print those. uint32_t part2 = static_cast(number % kTen7); number /= kTen7; uint32_t part1 = static_cast(number % kTen7); uint32_t part0 = static_cast(number / kTen7); if (part0 != 0) { FillDigits32(part0, buffer, length); FillDigits32FixedLength(part1, 7, buffer, length); FillDigits32FixedLength(part2, 7, buffer, length); } else if (part1 != 0) { FillDigits32(part1, buffer, length); FillDigits32FixedLength(part2, 7, buffer, length); } else { FillDigits32(part2, buffer, length); } } static void RoundUp(Vector buffer, int* length, int* decimal_point) { // An empty buffer represents 0. if (*length == 0) { buffer[0] = '1'; *decimal_point = 1; *length = 1; return; } // Round the last digit until we either have a digit that was not '9' or until // we reached the first digit. buffer[(*length) - 1]++; for (int i = (*length) - 1; i > 0; --i) { if (buffer[i] != '0' + 10) { return; } buffer[i] = '0'; buffer[i - 1]++; } // If the first digit is now '0' + 10, we would need to set it to '0' and add // a '1' in front. However we reach the first digit only if all following // digits had been '9' before rounding up. Now all trailing digits are '0' and // we simply switch the first digit to '1' and update the decimal-point // (indicating that the point is now one digit to the right). if (buffer[0] == '0' + 10) { buffer[0] = '1'; (*decimal_point)++; } } // The given fractionals number represents a fixed-point number with binary // point at bit (-exponent). // Preconditions: // -128 <= exponent <= 0. // 0 <= fractionals * 2^exponent < 1 // The buffer holds the result. // The function will round its result. During the rounding-process digits not // generated by this function might be updated, and the decimal-point variable // might be updated. If this function generates the digits 99 and the buffer // already contained "199" (thus yielding a buffer of "19999") then a // rounding-up will change the contents of the buffer to "20000". static void FillFractionals(uint64_t fractionals, int exponent, int fractional_count, Vector buffer, int* length, int* decimal_point) { ASSERT(-128 <= exponent && exponent <= 0); // 'fractionals' is a fixed-point number, with binary point at bit // (-exponent). Inside the function the non-converted remainder of fractionals // is a fixed-point number, with binary point at bit 'point'. if (-exponent <= 64) { // One 64 bit number is sufficient. ASSERT(fractionals >> 56 == 0); int point = -exponent; for (int i = 0; i < fractional_count; ++i) { if (fractionals == 0) break; // Instead of multiplying by 10 we multiply by 5 and adjust the point // location. This way the fractionals variable will not overflow. // Invariant at the beginning of the loop: fractionals < 2^point. // Initially we have: point <= 64 and fractionals < 2^56 // After each iteration the point is decremented by one. // Note that 5^3 = 125 < 128 = 2^7. // Therefore three iterations of this loop will not overflow fractionals // (even without the subtraction at the end of the loop body). At this // time point will satisfy point <= 61 and therefore fractionals < 2^point // and any further multiplication of fractionals by 5 will not overflow. fractionals *= 5; point--; int digit = static_cast(fractionals >> point); ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; fractionals -= static_cast(digit) << point; } // If the first bit after the point is set we have to round up. if (((fractionals >> (point - 1)) & 1) == 1) { RoundUp(buffer, length, decimal_point); } } else { // We need 128 bits. ASSERT(64 < -exponent && -exponent <= 128); UInt128 fractionals128 = UInt128(fractionals, 0); fractionals128.Shift(-exponent - 64); int point = 128; for (int i = 0; i < fractional_count; ++i) { if (fractionals128.IsZero()) break; // As before: instead of multiplying by 10 we multiply by 5 and adjust the // point location. // This multiplication will not overflow for the same reasons as before. fractionals128.Multiply(5); point--; int digit = fractionals128.DivModPowerOf2(point); ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; } if (fractionals128.BitAt(point - 1) == 1) { RoundUp(buffer, length, decimal_point); } } } // Removes leading and trailing zeros. // If leading zeros are removed then the decimal point position is adjusted. static void TrimZeros(Vector buffer, int* length, int* decimal_point) { while (*length > 0 && buffer[(*length) - 1] == '0') { (*length)--; } int first_non_zero = 0; while (first_non_zero < *length && buffer[first_non_zero] == '0') { first_non_zero++; } if (first_non_zero != 0) { for (int i = first_non_zero; i < *length; ++i) { buffer[i - first_non_zero] = buffer[i]; } *length -= first_non_zero; *decimal_point -= first_non_zero; } } bool FastFixedDtoa(double v, int fractional_count, Vector buffer, int* length, int* decimal_point) { const uint32_t kMaxUInt32 = 0xFFFFFFFF; uint64_t significand = Double(v).Significand(); int exponent = Double(v).Exponent(); // v = significand * 2^exponent (with significand a 53bit integer). // If the exponent is larger than 20 (i.e. we may have a 73bit number) then we // don't know how to compute the representation. 2^73 ~= 9.5*10^21. // If necessary this limit could probably be increased, but we don't need // more. if (exponent > 20) return false; if (fractional_count > 20) return false; *length = 0; // At most kDoubleSignificandSize bits of the significand are non-zero. // Given a 64 bit integer we have 11 0s followed by 53 potentially non-zero // bits: 0..11*..0xxx..53*..xx if (exponent + kDoubleSignificandSize > 64) { // The exponent must be > 11. // // We know that v = significand * 2^exponent. // And the exponent > 11. // We simplify the task by dividing v by 10^17. // The quotient delivers the first digits, and the remainder fits into a 64 // bit number. // Dividing by 10^17 is equivalent to dividing by 5^17*2^17. const uint64_t kFive17 = UINT64_2PART_C(0xB1, A2BC2EC5); // 5^17 uint64_t divisor = kFive17; int divisor_power = 17; uint64_t dividend = significand; uint32_t quotient; uint64_t remainder; // Let v = f * 2^e with f == significand and e == exponent. // Then need q (quotient) and r (remainder) as follows: // v = q * 10^17 + r // f * 2^e = q * 10^17 + r // f * 2^e = q * 5^17 * 2^17 + r // If e > 17 then // f * 2^(e-17) = q * 5^17 + r/2^17 // else // f = q * 5^17 * 2^(17-e) + r/2^e if (exponent > divisor_power) { // We only allow exponents of up to 20 and therefore (17 - e) <= 3 dividend <<= exponent - divisor_power; quotient = static_cast(dividend / divisor); remainder = (dividend % divisor) << divisor_power; } else { divisor <<= divisor_power - exponent; quotient = static_cast(dividend / divisor); remainder = (dividend % divisor) << exponent; } FillDigits32(quotient, buffer, length); FillDigits64FixedLength(remainder, buffer, length); *decimal_point = *length; } else if (exponent >= 0) { // 0 <= exponent <= 11 significand <<= exponent; FillDigits64(significand, buffer, length); *decimal_point = *length; } else if (exponent > -kDoubleSignificandSize) { // We have to cut the number. uint64_t integrals = significand >> -exponent; uint64_t fractionals = significand - (integrals << -exponent); if (integrals > kMaxUInt32) { FillDigits64(integrals, buffer, length); } else { FillDigits32(static_cast(integrals), buffer, length); } *decimal_point = *length; FillFractionals(fractionals, exponent, fractional_count, buffer, length, decimal_point); } else if (exponent < -128) { // This configuration (with at most 20 digits) means that all digits must be // 0. ASSERT(fractional_count <= 20); buffer[0] = '\0'; *length = 0; *decimal_point = -fractional_count; } else { *decimal_point = 0; FillFractionals(significand, exponent, fractional_count, buffer, length, decimal_point); } TrimZeros(buffer, length, decimal_point); buffer[*length] = '\0'; if ((*length) == 0) { // The string is empty and the decimal_point thus has no importance. Mimick // Gay's dtoa and and set it to -fractional_count. *decimal_point = -fractional_count; } return true; } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/fixed-dtoa.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_ #define DOUBLE_CONVERSION_FIXED_DTOA_H_ #include "utils.h" namespace double_conversion { // Produces digits necessary to print a given number with // 'fractional_count' digits after the decimal point. // The buffer must be big enough to hold the result plus one terminating null // character. // // The produced digits might be too short in which case the caller has to fill // the gaps with '0's. // Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and // decimal_point = -2. // Halfway cases are rounded towards +/-Infinity (away from 0). The call // FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0. // The returned buffer may contain digits that would be truncated from the // shortest representation of the input. // // This method only works for some parameters. If it can't handle the input it // returns false. The output is null-terminated when the function succeeds. bool FastFixedDtoa(double v, int fractional_count, Vector buffer, int* length, int* decimal_point); } // namespace double_conversion #endif // DOUBLE_CONVERSION_FIXED_DTOA_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/ieee.h ================================================ // Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_DOUBLE_H_ #define DOUBLE_CONVERSION_DOUBLE_H_ #include "diy-fp.h" namespace double_conversion { // We assume that doubles and uint64_t have the same endianness. static uint64_t double_to_uint64(double d) { return BitCast(d); } static double uint64_to_double(uint64_t d64) { return BitCast(d64); } static uint32_t float_to_uint32(float f) { return BitCast(f); } static float uint32_to_float(uint32_t d32) { return BitCast(d32); } // Helper functions for doubles. class Double { public: static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. static const int kSignificandSize = 53; Double() : d64_(0) {} explicit Double(double d) : d64_(double_to_uint64(d)) {} explicit Double(uint64_t d64) : d64_(d64) {} explicit Double(DiyFp diy_fp) : d64_(DiyFpToUint64(diy_fp)) {} // The value encoded by this Double must be greater or equal to +0.0. // It must not be special (infinity, or NaN). DiyFp AsDiyFp() const { ASSERT(Sign() > 0); ASSERT(!IsSpecial()); return DiyFp(Significand(), Exponent()); } // The value encoded by this Double must be strictly greater than 0. DiyFp AsNormalizedDiyFp() const { ASSERT(value() > 0.0); uint64_t f = Significand(); int e = Exponent(); // The current double could be a denormal. while ((f & kHiddenBit) == 0) { f <<= 1; e--; } // Do the final shifts in one go. f <<= DiyFp::kSignificandSize - kSignificandSize; e -= DiyFp::kSignificandSize - kSignificandSize; return DiyFp(f, e); } // Returns the double's bit as uint64. uint64_t AsUint64() const { return d64_; } // Returns the next greater double. Returns +infinity on input +infinity. double NextDouble() const { if (d64_ == kInfinity) return Double(kInfinity).value(); if (Sign() < 0 && Significand() == 0) { // -0.0 return 0.0; } if (Sign() < 0) { return Double(d64_ - 1).value(); } else { return Double(d64_ + 1).value(); } } double PreviousDouble() const { if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity(); if (Sign() < 0) { return Double(d64_ + 1).value(); } else { if (Significand() == 0) return -0.0; return Double(d64_ - 1).value(); } } int Exponent() const { if (IsDenormal()) return kDenormalExponent; uint64_t d64 = AsUint64(); int biased_e = static_cast((d64 & kExponentMask) >> kPhysicalSignificandSize); return biased_e - kExponentBias; } uint64_t Significand() const { uint64_t d64 = AsUint64(); uint64_t significand = d64 & kSignificandMask; if (!IsDenormal()) { return significand + kHiddenBit; } else { return significand; } } // Returns true if the double is a denormal. bool IsDenormal() const { uint64_t d64 = AsUint64(); return (d64 & kExponentMask) == 0; } // We consider denormals not to be special. // Hence only Infinity and NaN are special. bool IsSpecial() const { uint64_t d64 = AsUint64(); return (d64 & kExponentMask) == kExponentMask; } bool IsNan() const { uint64_t d64 = AsUint64(); return ((d64 & kExponentMask) == kExponentMask) && ((d64 & kSignificandMask) != 0); } bool IsInfinite() const { uint64_t d64 = AsUint64(); return ((d64 & kExponentMask) == kExponentMask) && ((d64 & kSignificandMask) == 0); } int Sign() const { uint64_t d64 = AsUint64(); return (d64 & kSignMask) == 0? 1: -1; } // Precondition: the value encoded by this Double must be greater or equal // than +0.0. DiyFp UpperBoundary() const { ASSERT(Sign() > 0); return DiyFp(Significand() * 2 + 1, Exponent() - 1); } // Computes the two boundaries of this. // The bigger boundary (m_plus) is normalized. The lower boundary has the same // exponent as m_plus. // Precondition: the value encoded by this Double must be greater than 0. void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { ASSERT(value() > 0.0); DiyFp v = this->AsDiyFp(); DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); DiyFp m_minus; if (LowerBoundaryIsCloser()) { m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); } else { m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); } m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); m_minus.set_e(m_plus.e()); *out_m_plus = m_plus; *out_m_minus = m_minus; } bool LowerBoundaryIsCloser() const { // The boundary is closer if the significand is of the form f == 2^p-1 then // the lower boundary is closer. // Think of v = 1000e10 and v- = 9999e9. // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but // at a distance of 1e8. // The only exception is for the smallest normal: the largest denormal is // at the same distance as its successor. // Note: denormals have the same exponent as the smallest normals. bool physical_significand_is_zero = ((AsUint64() & kSignificandMask) == 0); return physical_significand_is_zero && (Exponent() != kDenormalExponent); } double value() const { return uint64_to_double(d64_); } // Returns the significand size for a given order of magnitude. // If v = f*2^e with 2^p-1 <= f <= 2^p then p+e is v's order of magnitude. // This function returns the number of significant binary digits v will have // once it's encoded into a double. In almost all cases this is equal to // kSignificandSize. The only exceptions are denormals. They start with // leading zeroes and their effective significand-size is hence smaller. static int SignificandSizeForOrderOfMagnitude(int order) { if (order >= (kDenormalExponent + kSignificandSize)) { return kSignificandSize; } if (order <= kDenormalExponent) return 0; return order - kDenormalExponent; } static double Infinity() { return Double(kInfinity).value(); } static double NaN() { return Double(kNaN).value(); } private: static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; static const int kDenormalExponent = -kExponentBias + 1; static const int kMaxExponent = 0x7FF - kExponentBias; static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); const uint64_t d64_; static uint64_t DiyFpToUint64(DiyFp diy_fp) { uint64_t significand = diy_fp.f(); int exponent = diy_fp.e(); while (significand > kHiddenBit + kSignificandMask) { significand >>= 1; exponent++; } if (exponent >= kMaxExponent) { return kInfinity; } if (exponent < kDenormalExponent) { return 0; } while (exponent > kDenormalExponent && (significand & kHiddenBit) == 0) { significand <<= 1; exponent--; } uint64_t biased_exponent; if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) { biased_exponent = 0; } else { biased_exponent = static_cast(exponent + kExponentBias); } return (significand & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); } DISALLOW_COPY_AND_ASSIGN(Double); }; class Single { public: static const uint32_t kSignMask = 0x80000000; static const uint32_t kExponentMask = 0x7F800000; static const uint32_t kSignificandMask = 0x007FFFFF; static const uint32_t kHiddenBit = 0x00800000; static const int kPhysicalSignificandSize = 23; // Excludes the hidden bit. static const int kSignificandSize = 24; Single() : d32_(0) {} explicit Single(float f) : d32_(float_to_uint32(f)) {} explicit Single(uint32_t d32) : d32_(d32) {} // The value encoded by this Single must be greater or equal to +0.0. // It must not be special (infinity, or NaN). DiyFp AsDiyFp() const { ASSERT(Sign() > 0); ASSERT(!IsSpecial()); return DiyFp(Significand(), Exponent()); } // Returns the single's bit as uint64. uint32_t AsUint32() const { return d32_; } int Exponent() const { if (IsDenormal()) return kDenormalExponent; uint32_t d32 = AsUint32(); int biased_e = static_cast((d32 & kExponentMask) >> kPhysicalSignificandSize); return biased_e - kExponentBias; } uint32_t Significand() const { uint32_t d32 = AsUint32(); uint32_t significand = d32 & kSignificandMask; if (!IsDenormal()) { return significand + kHiddenBit; } else { return significand; } } // Returns true if the single is a denormal. bool IsDenormal() const { uint32_t d32 = AsUint32(); return (d32 & kExponentMask) == 0; } // We consider denormals not to be special. // Hence only Infinity and NaN are special. bool IsSpecial() const { uint32_t d32 = AsUint32(); return (d32 & kExponentMask) == kExponentMask; } bool IsNan() const { uint32_t d32 = AsUint32(); return ((d32 & kExponentMask) == kExponentMask) && ((d32 & kSignificandMask) != 0); } bool IsInfinite() const { uint32_t d32 = AsUint32(); return ((d32 & kExponentMask) == kExponentMask) && ((d32 & kSignificandMask) == 0); } int Sign() const { uint32_t d32 = AsUint32(); return (d32 & kSignMask) == 0? 1: -1; } // Computes the two boundaries of this. // The bigger boundary (m_plus) is normalized. The lower boundary has the same // exponent as m_plus. // Precondition: the value encoded by this Single must be greater than 0. void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { ASSERT(value() > 0.0); DiyFp v = this->AsDiyFp(); DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); DiyFp m_minus; if (LowerBoundaryIsCloser()) { m_minus = DiyFp((v.f() << 2) - 1, v.e() - 2); } else { m_minus = DiyFp((v.f() << 1) - 1, v.e() - 1); } m_minus.set_f(m_minus.f() << (m_minus.e() - m_plus.e())); m_minus.set_e(m_plus.e()); *out_m_plus = m_plus; *out_m_minus = m_minus; } // Precondition: the value encoded by this Single must be greater or equal // than +0.0. DiyFp UpperBoundary() const { ASSERT(Sign() > 0); return DiyFp(Significand() * 2 + 1, Exponent() - 1); } bool LowerBoundaryIsCloser() const { // The boundary is closer if the significand is of the form f == 2^p-1 then // the lower boundary is closer. // Think of v = 1000e10 and v- = 9999e9. // Then the boundary (== (v - v-)/2) is not just at a distance of 1e9 but // at a distance of 1e8. // The only exception is for the smallest normal: the largest denormal is // at the same distance as its successor. // Note: denormals have the same exponent as the smallest normals. bool physical_significand_is_zero = ((AsUint32() & kSignificandMask) == 0); return physical_significand_is_zero && (Exponent() != kDenormalExponent); } float value() const { return uint32_to_float(d32_); } static float Infinity() { return Single(kInfinity).value(); } static float NaN() { return Single(kNaN).value(); } private: static const int kExponentBias = 0x7F + kPhysicalSignificandSize; static const int kDenormalExponent = -kExponentBias + 1; static const int kMaxExponent = 0xFF - kExponentBias; static const uint32_t kInfinity = 0x7F800000; static const uint32_t kNaN = 0x7FC00000; const uint32_t d32_; DISALLOW_COPY_AND_ASSIGN(Single); }; } // namespace double_conversion #endif // DOUBLE_CONVERSION_DOUBLE_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/strtod.cc ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "strtod.h" #include "bignum.h" #include "cached-powers.h" #include "ieee.h" namespace double_conversion { // 2^53 = 9007199254740992. // Any integer with at most 15 decimal digits will hence fit into a double // (which has a 53bit significand) without loss of precision. static const int kMaxExactDoubleIntegerDecimalDigits = 15; // 2^64 = 18446744073709551616 > 10^19 static const int kMaxUint64DecimalDigits = 19; // Max double: 1.7976931348623157 x 10^308 // Min non-zero double: 4.9406564584124654 x 10^-324 // Any x >= 10^309 is interpreted as +infinity. // Any x <= 10^-324 is interpreted as 0. // Note that 2.5e-324 (despite being smaller than the min double) will be read // as non-zero (equal to the min non-zero double). static const int kMaxDecimalPower = 309; static const int kMinDecimalPower = -324; // 2^64 = 18446744073709551616 static const uint64_t kMaxUint64 = UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF); static const double exact_powers_of_ten[] = { 1.0, // 10^0 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, // 10^10 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, // 10^20 1000000000000000000000.0, // 10^22 = 0x21e19e0c9bab2400000 = 0x878678326eac9 * 2^22 10000000000000000000000.0 }; static const int kExactPowersOfTenSize = ARRAY_SIZE(exact_powers_of_ten); // Maximum number of significant digits in the decimal representation. // In fact the value is 772 (see conversions.cc), but to give us some margin // we round up to 780. static const int kMaxSignificantDecimalDigits = 780; static Vector TrimLeadingZeros(Vector buffer) { for (int i = 0; i < buffer.length(); i++) { if (buffer[i] != '0') { return buffer.SubVector(i, buffer.length()); } } return Vector(buffer.start(), 0); } static Vector TrimTrailingZeros(Vector buffer) { for (int i = buffer.length() - 1; i >= 0; --i) { if (buffer[i] != '0') { return buffer.SubVector(0, i + 1); } } return Vector(buffer.start(), 0); } static void CutToMaxSignificantDigits(Vector buffer, int exponent, char* significant_buffer, int* significant_exponent) { for (int i = 0; i < kMaxSignificantDecimalDigits - 1; ++i) { significant_buffer[i] = buffer[i]; } // The input buffer has been trimmed. Therefore the last digit must be // different from '0'. ASSERT(buffer[buffer.length() - 1] != '0'); // Set the last digit to be non-zero. This is sufficient to guarantee // correct rounding. significant_buffer[kMaxSignificantDecimalDigits - 1] = '1'; *significant_exponent = exponent + (buffer.length() - kMaxSignificantDecimalDigits); } // Trims the buffer and cuts it to at most kMaxSignificantDecimalDigits. // If possible the input-buffer is reused, but if the buffer needs to be // modified (due to cutting), then the input needs to be copied into the // buffer_copy_space. static void TrimAndCut(Vector buffer, int exponent, char* buffer_copy_space, int space_size, Vector* trimmed, int* updated_exponent) { Vector left_trimmed = TrimLeadingZeros(buffer); Vector right_trimmed = TrimTrailingZeros(left_trimmed); exponent += left_trimmed.length() - right_trimmed.length(); if (right_trimmed.length() > kMaxSignificantDecimalDigits) { (void) space_size; // Mark variable as used. ASSERT(space_size >= kMaxSignificantDecimalDigits); CutToMaxSignificantDigits(right_trimmed, exponent, buffer_copy_space, updated_exponent); *trimmed = Vector(buffer_copy_space, kMaxSignificantDecimalDigits); } else { *trimmed = right_trimmed; *updated_exponent = exponent; } } // Reads digits from the buffer and converts them to a uint64. // Reads in as many digits as fit into a uint64. // When the string starts with "1844674407370955161" no further digit is read. // Since 2^64 = 18446744073709551616 it would still be possible read another // digit if it was less or equal than 6, but this would complicate the code. static uint64_t ReadUint64(Vector buffer, int* number_of_read_digits) { uint64_t result = 0; int i = 0; while (i < buffer.length() && result <= (kMaxUint64 / 10 - 1)) { int digit = buffer[i++] - '0'; ASSERT(0 <= digit && digit <= 9); result = 10 * result + digit; } *number_of_read_digits = i; return result; } // Reads a DiyFp from the buffer. // The returned DiyFp is not necessarily normalized. // If remaining_decimals is zero then the returned DiyFp is accurate. // Otherwise it has been rounded and has error of at most 1/2 ulp. static void ReadDiyFp(Vector buffer, DiyFp* result, int* remaining_decimals) { int read_digits; uint64_t significand = ReadUint64(buffer, &read_digits); if (buffer.length() == read_digits) { *result = DiyFp(significand, 0); *remaining_decimals = 0; } else { // Round the significand. if (buffer[read_digits] >= '5') { significand++; } // Compute the binary exponent. int exponent = 0; *result = DiyFp(significand, exponent); *remaining_decimals = buffer.length() - read_digits; } } static bool DoubleStrtod(Vector trimmed, int exponent, double* result) { #if !defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS) // On x86 the floating-point stack can be 64 or 80 bits wide. If it is // 80 bits wide (as is the case on Linux) then double-rounding occurs and the // result is not accurate. // We know that Windows32 uses 64 bits and is therefore accurate. // Note that the ARM simulator is compiled for 32bits. It therefore exhibits // the same problem. return false; #endif if (trimmed.length() <= kMaxExactDoubleIntegerDecimalDigits) { int read_digits; // The trimmed input fits into a double. // If the 10^exponent (resp. 10^-exponent) fits into a double too then we // can compute the result-double simply by multiplying (resp. dividing) the // two numbers. // This is possible because IEEE guarantees that floating-point operations // return the best possible approximation. if (exponent < 0 && -exponent < kExactPowersOfTenSize) { // 10^-exponent fits into a double. *result = static_cast(ReadUint64(trimmed, &read_digits)); ASSERT(read_digits == trimmed.length()); *result /= exact_powers_of_ten[-exponent]; return true; } if (0 <= exponent && exponent < kExactPowersOfTenSize) { // 10^exponent fits into a double. *result = static_cast(ReadUint64(trimmed, &read_digits)); ASSERT(read_digits == trimmed.length()); *result *= exact_powers_of_ten[exponent]; return true; } int remaining_digits = kMaxExactDoubleIntegerDecimalDigits - trimmed.length(); if ((0 <= exponent) && (exponent - remaining_digits < kExactPowersOfTenSize)) { // The trimmed string was short and we can multiply it with // 10^remaining_digits. As a result the remaining exponent now fits // into a double too. *result = static_cast(ReadUint64(trimmed, &read_digits)); ASSERT(read_digits == trimmed.length()); *result *= exact_powers_of_ten[remaining_digits]; *result *= exact_powers_of_ten[exponent - remaining_digits]; return true; } } return false; } // Returns 10^exponent as an exact DiyFp. // The given exponent must be in the range [1; kDecimalExponentDistance[. static DiyFp AdjustmentPowerOfTen(int exponent) { ASSERT(0 < exponent); ASSERT(exponent < PowersOfTenCache::kDecimalExponentDistance); // Simply hardcode the remaining powers for the given decimal exponent // distance. ASSERT(PowersOfTenCache::kDecimalExponentDistance == 8); switch (exponent) { case 1: return DiyFp(UINT64_2PART_C(0xa0000000, 00000000), -60); case 2: return DiyFp(UINT64_2PART_C(0xc8000000, 00000000), -57); case 3: return DiyFp(UINT64_2PART_C(0xfa000000, 00000000), -54); case 4: return DiyFp(UINT64_2PART_C(0x9c400000, 00000000), -50); case 5: return DiyFp(UINT64_2PART_C(0xc3500000, 00000000), -47); case 6: return DiyFp(UINT64_2PART_C(0xf4240000, 00000000), -44); case 7: return DiyFp(UINT64_2PART_C(0x98968000, 00000000), -40); default: UNREACHABLE(); } } // If the function returns true then the result is the correct double. // Otherwise it is either the correct double or the double that is just below // the correct double. static bool DiyFpStrtod(Vector buffer, int exponent, double* result) { DiyFp input; int remaining_decimals; ReadDiyFp(buffer, &input, &remaining_decimals); // Since we may have dropped some digits the input is not accurate. // If remaining_decimals is different than 0 than the error is at most // .5 ulp (unit in the last place). // We don't want to deal with fractions and therefore keep a common // denominator. const int kDenominatorLog = 3; const int kDenominator = 1 << kDenominatorLog; // Move the remaining decimals into the exponent. exponent += remaining_decimals; uint64_t error = (remaining_decimals == 0 ? 0 : kDenominator / 2); int old_e = input.e(); input.Normalize(); error <<= old_e - input.e(); ASSERT(exponent <= PowersOfTenCache::kMaxDecimalExponent); if (exponent < PowersOfTenCache::kMinDecimalExponent) { *result = 0.0; return true; } DiyFp cached_power; int cached_decimal_exponent; PowersOfTenCache::GetCachedPowerForDecimalExponent(exponent, &cached_power, &cached_decimal_exponent); if (cached_decimal_exponent != exponent) { int adjustment_exponent = exponent - cached_decimal_exponent; DiyFp adjustment_power = AdjustmentPowerOfTen(adjustment_exponent); input.Multiply(adjustment_power); if (kMaxUint64DecimalDigits - buffer.length() >= adjustment_exponent) { // The product of input with the adjustment power fits into a 64 bit // integer. ASSERT(DiyFp::kSignificandSize == 64); } else { // The adjustment power is exact. There is hence only an error of 0.5. error += kDenominator / 2; } } input.Multiply(cached_power); // The error introduced by a multiplication of a*b equals // error_a + error_b + error_a*error_b/2^64 + 0.5 // Substituting a with 'input' and b with 'cached_power' we have // error_b = 0.5 (all cached powers have an error of less than 0.5 ulp), // error_ab = 0 or 1 / kDenominator > error_a*error_b/ 2^64 int error_b = kDenominator / 2; int error_ab = (error == 0 ? 0 : 1); // We round up to 1. int fixed_error = kDenominator / 2; error += error_b + error_ab + fixed_error; old_e = input.e(); input.Normalize(); error <<= old_e - input.e(); // See if the double's significand changes if we add/subtract the error. int order_of_magnitude = DiyFp::kSignificandSize + input.e(); int effective_significand_size = Double::SignificandSizeForOrderOfMagnitude(order_of_magnitude); int precision_digits_count = DiyFp::kSignificandSize - effective_significand_size; if (precision_digits_count + kDenominatorLog >= DiyFp::kSignificandSize) { // This can only happen for very small denormals. In this case the // half-way multiplied by the denominator exceeds the range of an uint64. // Simply shift everything to the right. int shift_amount = (precision_digits_count + kDenominatorLog) - DiyFp::kSignificandSize + 1; input.set_f(input.f() >> shift_amount); input.set_e(input.e() + shift_amount); // We add 1 for the lost precision of error, and kDenominator for // the lost precision of input.f(). error = (error >> shift_amount) + 1 + kDenominator; precision_digits_count -= shift_amount; } // We use uint64_ts now. This only works if the DiyFp uses uint64_ts too. ASSERT(DiyFp::kSignificandSize == 64); ASSERT(precision_digits_count < 64); uint64_t one64 = 1; uint64_t precision_bits_mask = (one64 << precision_digits_count) - 1; uint64_t precision_bits = input.f() & precision_bits_mask; uint64_t half_way = one64 << (precision_digits_count - 1); precision_bits *= kDenominator; half_way *= kDenominator; DiyFp rounded_input(input.f() >> precision_digits_count, input.e() + precision_digits_count); if (precision_bits >= half_way + error) { rounded_input.set_f(rounded_input.f() + 1); } // If the last_bits are too close to the half-way case than we are too // inaccurate and round down. In this case we return false so that we can // fall back to a more precise algorithm. *result = Double(rounded_input).value(); if (half_way - error < precision_bits && precision_bits < half_way + error) { // Too imprecise. The caller will have to fall back to a slower version. // However the returned number is guaranteed to be either the correct // double, or the next-lower double. return false; } else { return true; } } // Returns // - -1 if buffer*10^exponent < diy_fp. // - 0 if buffer*10^exponent == diy_fp. // - +1 if buffer*10^exponent > diy_fp. // Preconditions: // buffer.length() + exponent <= kMaxDecimalPower + 1 // buffer.length() + exponent > kMinDecimalPower // buffer.length() <= kMaxDecimalSignificantDigits static int CompareBufferWithDiyFp(Vector buffer, int exponent, DiyFp diy_fp) { ASSERT(buffer.length() + exponent <= kMaxDecimalPower + 1); ASSERT(buffer.length() + exponent > kMinDecimalPower); ASSERT(buffer.length() <= kMaxSignificantDecimalDigits); // Make sure that the Bignum will be able to hold all our numbers. // Our Bignum implementation has a separate field for exponents. Shifts will // consume at most one bigit (< 64 bits). // ln(10) == 3.3219... ASSERT(((kMaxDecimalPower + 1) * 333 / 100) < Bignum::kMaxSignificantBits); Bignum buffer_bignum; Bignum diy_fp_bignum; buffer_bignum.AssignDecimalString(buffer); diy_fp_bignum.AssignUInt64(diy_fp.f()); if (exponent >= 0) { buffer_bignum.MultiplyByPowerOfTen(exponent); } else { diy_fp_bignum.MultiplyByPowerOfTen(-exponent); } if (diy_fp.e() > 0) { diy_fp_bignum.ShiftLeft(diy_fp.e()); } else { buffer_bignum.ShiftLeft(-diy_fp.e()); } return Bignum::Compare(buffer_bignum, diy_fp_bignum); } // Returns true if the guess is the correct double. // Returns false, when guess is either correct or the next-lower double. static bool ComputeGuess(Vector trimmed, int exponent, double* guess) { if (trimmed.length() == 0) { *guess = 0.0; return true; } if (exponent + trimmed.length() - 1 >= kMaxDecimalPower) { *guess = Double::Infinity(); return true; } if (exponent + trimmed.length() <= kMinDecimalPower) { *guess = 0.0; return true; } if (DoubleStrtod(trimmed, exponent, guess) || DiyFpStrtod(trimmed, exponent, guess)) { return true; } if (*guess == Double::Infinity()) { return true; } return false; } double Strtod(Vector buffer, int exponent) { char copy_buffer[kMaxSignificantDecimalDigits]; Vector trimmed; int updated_exponent; TrimAndCut(buffer, exponent, copy_buffer, kMaxSignificantDecimalDigits, &trimmed, &updated_exponent); exponent = updated_exponent; double guess; bool is_correct = ComputeGuess(trimmed, exponent, &guess); if (is_correct) return guess; DiyFp upper_boundary = Double(guess).UpperBoundary(); int comparison = CompareBufferWithDiyFp(trimmed, exponent, upper_boundary); if (comparison < 0) { return guess; } else if (comparison > 0) { return Double(guess).NextDouble(); } else if ((Double(guess).Significand() & 1) == 0) { // Round towards even. return guess; } else { return Double(guess).NextDouble(); } } float Strtof(Vector buffer, int exponent) { char copy_buffer[kMaxSignificantDecimalDigits]; Vector trimmed; int updated_exponent; TrimAndCut(buffer, exponent, copy_buffer, kMaxSignificantDecimalDigits, &trimmed, &updated_exponent); exponent = updated_exponent; double double_guess; bool is_correct = ComputeGuess(trimmed, exponent, &double_guess); float float_guess = static_cast(double_guess); if (float_guess == double_guess) { // This shortcut triggers for integer values. return float_guess; } // We must catch double-rounding. Say the double has been rounded up, and is // now a boundary of a float, and rounds up again. This is why we have to // look at previous too. // Example (in decimal numbers): // input: 12349 // high-precision (4 digits): 1235 // low-precision (3 digits): // when read from input: 123 // when rounded from high precision: 124. // To do this we simply look at the neigbors of the correct result and see // if they would round to the same float. If the guess is not correct we have // to look at four values (since two different doubles could be the correct // double). double double_next = Double(double_guess).NextDouble(); double double_previous = Double(double_guess).PreviousDouble(); float f1 = static_cast(double_previous); float f2 = float_guess; float f3 = static_cast(double_next); float f4; if (is_correct) { f4 = f3; } else { double double_next2 = Double(double_next).NextDouble(); f4 = static_cast(double_next2); } (void) f2; // Mark variable as used. ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4); // If the guess doesn't lie near a single-precision boundary we can simply // return its float-value. if (f1 == f4) { return float_guess; } ASSERT((f1 != f2 && f2 == f3 && f3 == f4) || (f1 == f2 && f2 != f3 && f3 == f4) || (f1 == f2 && f2 == f3 && f3 != f4)); // guess and next are the two possible canditates (in the same way that // double_guess was the lower candidate for a double-precision guess). float guess = f1; float next = f4; DiyFp upper_boundary; if (guess == 0.0f) { float min_float = 1e-45f; upper_boundary = Double(static_cast(min_float) / 2).AsDiyFp(); } else { upper_boundary = Single(guess).UpperBoundary(); } int comparison = CompareBufferWithDiyFp(trimmed, exponent, upper_boundary); if (comparison < 0) { return guess; } else if (comparison > 0) { return next; } else if ((Single(guess).Significand() & 1) == 0) { // Round towards even. return guess; } else { return next; } } } // namespace double_conversion ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/strtod.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_STRTOD_H_ #define DOUBLE_CONVERSION_STRTOD_H_ #include "utils.h" namespace double_conversion { // The buffer must only contain digits in the range [0-9]. It must not // contain a dot or a sign. It must not start with '0', and must not be empty. double Strtod(Vector buffer, int exponent); // The buffer must only contain digits in the range [0-9]. It must not // contain a dot or a sign. It must not start with '0', and must not be empty. float Strtof(Vector buffer, int exponent); } // namespace double_conversion #endif // DOUBLE_CONVERSION_STRTOD_H_ ================================================ FILE: native/iosTest/Pods/DoubleConversion/double-conversion/utils.h ================================================ // Copyright 2010 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef DOUBLE_CONVERSION_UTILS_H_ #define DOUBLE_CONVERSION_UTILS_H_ #include #include #include #ifndef ASSERT #define ASSERT(condition) \ assert(condition); #endif #ifndef UNIMPLEMENTED #define UNIMPLEMENTED() (abort()) #endif #ifndef UNREACHABLE #define UNREACHABLE() (abort()) #endif // Double operations detection based on target architecture. // Linux uses a 80bit wide floating point stack on x86. This induces double // rounding, which in turn leads to wrong results. // An easy way to test if the floating-point operations are correct is to // evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then // the result is equal to 89255e-22. // The best way to test this, is to create a division-function and to compare // the output of the division with the expected result. (Inlining must be // disabled.) // On Linux,x86 89255e-22 != Div_double(89255.0/1e22) #if defined(_M_X64) || defined(__x86_64__) || \ defined(__ARMEL__) || defined(__avr32__) || \ defined(__hppa__) || defined(__ia64__) || \ defined(__mips__) || \ defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ defined(__SH4__) || defined(__alpha__) || \ defined(_MIPS_ARCH_MIPS32R2) || \ defined(__AARCH64EL__) #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #elif defined(__mc68000__) #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) #if defined(_WIN32) // Windows uses a 64bit wide floating point stack. #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #else #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS #endif // _WIN32 #else #error Target architecture was not detected as supported by Double-Conversion. #endif #if defined(__GNUC__) #define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) #else #define DOUBLE_CONVERSION_UNUSED #endif #if defined(_WIN32) && !defined(__MINGW32__) typedef signed char int8_t; typedef unsigned char uint8_t; typedef short int16_t; // NOLINT typedef unsigned short uint16_t; // NOLINT typedef int int32_t; typedef unsigned int uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; // intptr_t and friends are defined in crtdefs.h through stdio.h. #else #include #endif // The following macro works on both 32 and 64-bit platforms. // Usage: instead of writing 0x1234567890123456 // write UINT64_2PART_C(0x12345678,90123456); #define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) // The expression ARRAY_SIZE(a) is a compile-time constant of type // size_t which represents the number of elements of the given // array. You should only use ARRAY_SIZE on statically allocated // arrays. #ifndef ARRAY_SIZE #define ARRAY_SIZE(a) \ ((sizeof(a) / sizeof(*(a))) / \ static_cast(!(sizeof(a) % sizeof(*(a))))) #endif // A macro to disallow the evil copy constructor and operator= functions // This should be used in the private: declarations for a class #ifndef DISALLOW_COPY_AND_ASSIGN #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); \ void operator=(const TypeName&) #endif // A macro to disallow all the implicit constructors, namely the // default constructor, copy constructor and operator= functions. // // This should be used in the private: declarations for a class // that wants to prevent anyone from instantiating it. This is // especially useful for classes containing only static methods. #ifndef DISALLOW_IMPLICIT_CONSTRUCTORS #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ TypeName(); \ DISALLOW_COPY_AND_ASSIGN(TypeName) #endif namespace double_conversion { static const int kCharSize = sizeof(char); // Returns the maximum of the two parameters. template static T Max(T a, T b) { return a < b ? b : a; } // Returns the minimum of the two parameters. template static T Min(T a, T b) { return a < b ? a : b; } inline int StrLength(const char* string) { size_t length = strlen(string); ASSERT(length == static_cast(static_cast(length))); return static_cast(length); } // This is a simplified version of V8's Vector class. template class Vector { public: Vector() : start_(NULL), length_(0) {} Vector(T* data, int length) : start_(data), length_(length) { ASSERT(length == 0 || (length > 0 && data != NULL)); } // Returns a vector using the same backing storage as this one, // spanning from and including 'from', to but not including 'to'. Vector SubVector(int from, int to) { ASSERT(to <= length_); ASSERT(from < to); ASSERT(0 <= from); return Vector(start() + from, to - from); } // Returns the length of the vector. int length() const { return length_; } // Returns whether or not the vector is empty. bool is_empty() const { return length_ == 0; } // Returns the pointer to the start of the data in the vector. T* start() const { return start_; } // Access individual vector elements - checks bounds in debug mode. T& operator[](int index) const { ASSERT(0 <= index && index < length_); return start_[index]; } T& first() { return start_[0]; } T& last() { return start_[length_ - 1]; } private: T* start_; int length_; }; // Helper class for building result strings in a character buffer. The // purpose of the class is to use safe operations that checks the // buffer bounds on all operations in debug mode. class StringBuilder { public: StringBuilder(char* buffer, int size) : buffer_(buffer, size), position_(0) { } ~StringBuilder() { if (!is_finalized()) Finalize(); } int size() const { return buffer_.length(); } // Get the current position in the builder. int position() const { ASSERT(!is_finalized()); return position_; } // Reset the position. void Reset() { position_ = 0; } // Add a single character to the builder. It is not allowed to add // 0-characters; use the Finalize() method to terminate the string // instead. void AddCharacter(char c) { ASSERT(c != '\0'); ASSERT(!is_finalized() && position_ < buffer_.length()); buffer_[position_++] = c; } // Add an entire string to the builder. Uses strlen() internally to // compute the length of the input string. void AddString(const char* s) { AddSubstring(s, StrLength(s)); } // Add the first 'n' characters of the given string 's' to the // builder. The input string must have enough characters. void AddSubstring(const char* s, int n) { ASSERT(!is_finalized() && position_ + n < buffer_.length()); ASSERT(static_cast(n) <= strlen(s)); memmove(&buffer_[position_], s, n * kCharSize); position_ += n; } // Add character padding to the builder. If count is non-positive, // nothing is added to the builder. void AddPadding(char c, int count) { for (int i = 0; i < count; i++) { AddCharacter(c); } } // Finalize the string by 0-terminating it and returning the buffer. char* Finalize() { ASSERT(!is_finalized() && position_ < buffer_.length()); buffer_[position_] = '\0'; // Make sure nobody managed to add a 0-character to the // buffer while building the string. ASSERT(strlen(buffer_.start()) == static_cast(position_)); position_ = -1; ASSERT(is_finalized()); return buffer_.start(); } private: Vector buffer_; int position_; bool is_finalized() const { return position_ < 0; } DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); }; // The type-based aliasing rule allows the compiler to assume that pointers of // different types (for some definition of different) never alias each other. // Thus the following code does not work: // // float f = foo(); // int fbits = *(int*)(&f); // // The compiler 'knows' that the int pointer can't refer to f since the types // don't match, so the compiler may cache f in a register, leaving random data // in fbits. Using C++ style casts makes no difference, however a pointer to // char data is assumed to alias any other pointer. This is the 'memcpy // exception'. // // Bit_cast uses the memcpy exception to move the bits from a variable of one // type of a variable of another type. Of course the end result is likely to // be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005) // will completely optimize BitCast away. // // There is an additional use for BitCast. // Recent gccs will warn when they see casts that may result in breakage due to // the type-based aliasing rule. If you have checked that there is no breakage // you can use BitCast to cast one pointer type to another. This confuses gcc // enough that it can no longer see that you have cast one pointer type to // another thus avoiding the warning. template inline Dest BitCast(const Source& source) { // Compile time assertion: sizeof(Dest) == sizeof(Source) // A compile error here means your Dest and Source have different sizes. DOUBLE_CONVERSION_UNUSED typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; Dest dest; memmove(&dest, &source, sizeof(dest)); return dest; } template inline Dest BitCast(Source* source) { return BitCast(reinterpret_cast(source)); } } // namespace double_conversion #endif // DOUBLE_CONVERSION_UTILS_H_ ================================================ FILE: native/iosTest/Pods/Local Podspecs/DoubleConversion.podspec.json ================================================ { "name": "DoubleConversion", "version": "1.1.6", "license": { "type": "MIT" }, "homepage": "https://github.com/google/double-conversion", "summary": "Efficient binary-decimal and decimal-binary conversion routines for IEEE doubles", "authors": "Google", "prepare_command": "mv src double-conversion", "source": { "git": "https://github.com/google/double-conversion.git", "tag": "v1.1.6" }, "module_name": "DoubleConversion", "header_dir": "double-conversion", "source_files": "double-conversion/*.{h,cc}", "compiler_flags": "-Wno-unreachable-code", "user_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/DoubleConversion\"" }, "pod_target_xcconfig": { "DEFINES_MODULE": "YES" }, "platforms": { "ios": "13.4" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/FBLazyVector.podspec.json ================================================ { "name": "FBLazyVector", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{c,h,m,mm,cpp}", "header_dir": "FBLazyVector" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/RCT-Folly.podspec.json ================================================ { "name": "RCT-Folly", "version": "2024.01.01.00", "license": { "type": "Apache License, Version 2.0" }, "homepage": "https://github.com/facebook/folly", "summary": "An open-source C++ library developed and used at Facebook.", "authors": "Facebook", "source": { "git": "https://github.com/facebook/folly.git", "tag": "v2024.01.01.00" }, "module_name": "folly", "header_mappings_dir": ".", "dependencies": { "boost": [ ], "DoubleConversion": [ ], "glog": [ ], "fmt": [ "9.1.0" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new", "preserve_paths": "folly/*.h", "libraries": "c++abi", "source_files": [ "folly/String.cpp", "folly/Conv.cpp", "folly/Demangle.cpp", "folly/FileUtil.cpp", "folly/Format.cpp", "folly/lang/SafeAssert.cpp", "folly/lang/ToAscii.cpp", "folly/ScopeGuard.cpp", "folly/Unicode.cpp", "folly/dynamic.cpp", "folly/json.cpp", "folly/json_pointer.cpp", "folly/container/detail/F14Table.cpp", "folly/detail/Demangle.cpp", "folly/detail/FileUtilDetail.cpp", "folly/detail/SplitStringSimd.cpp", "folly/detail/UniqueInstance.cpp", "folly/hash/SpookyHashV2.cpp", "folly/lang/Assume.cpp", "folly/lang/CString.cpp", "folly/lang/Exception.cpp", "folly/memory/detail/MallocImpl.cpp", "folly/net/NetOps.cpp", "folly/portability/SysUio.cpp", "folly/synchronization/SanitizeThread.cpp", "folly/system/AtFork.cpp", "folly/system/ThreadId.cpp", "folly/*.h", "folly/container/*.h", "folly/container/detail/*.h", "folly/detail/*.h", "folly/functional/*.h", "folly/hash/*.h", "folly/lang/*.h", "folly/memory/*.h", "folly/memory/detail/*.h", "folly/net/*.h", "folly/net/detail/*.h", "folly/portability/*.h", "folly/system/*.h", "folly/*.h", "folly/container/*.h", "folly/container/detail/*.h", "folly/detail/*.h", "folly/functional/*.h", "folly/hash/*.h", "folly/lang/*.h", "folly/memory/*.h", "folly/memory/detail/*.h", "folly/net/*.h", "folly/net/detail/*.h", "folly/portability/*.h", "folly/system/*.h", "c++abi" ], "pod_target_xcconfig": { "USE_HEADERMAP": "NO", "DEFINES_MODULE": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"", "OTHER_LDFLAGS": "\"-Wl,-U,_jump_fcontext\" \"-Wl,-U,_make_fcontext\"" }, "user_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\"" }, "default_subspecs": "Default", "platforms": { "ios": "13.4" }, "subspecs": [ { "name": "Default" }, { "name": "Fabric", "source_files": [ "folly/SharedMutex.cpp", "folly/concurrency/CacheLocality.cpp", "folly/detail/Futex.cpp", "folly/synchronization/ParkingLot.cpp", "folly/portability/Malloc.cpp", "folly/concurrency/CacheLocality.h", "folly/synchronization/*.h", "folly/system/ThreadId.h" ], "preserve_paths": [ "folly/concurrency/CacheLocality.h", "folly/synchronization/*.h", "folly/system/ThreadId.h" ] } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/RCTDeprecation.podspec.json ================================================ { "name": "RCTDeprecation", "version": "0.74.6", "authors": "Meta Platforms, Inc. and its affiliates", "license": "MIT", "homepage": "https://reactnative.dev/", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v#{version}" }, "summary": "Macros for marking APIs as deprecated", "source_files": [ "Exported/*.h", "RCTDeprecation.m" ], "pod_target_xcconfig": { "DEFINES_MODULE": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "compiler_flags": "-Wnullable-to-nonnull-conversion -Wnullability-completeness", "platforms": { "osx": null, "ios": null, "tvos": null, "visionos": null, "watchos": null } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/RCTRequired.podspec.json ================================================ { "name": "RCTRequired", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{c,h,m,mm,cpp}", "header_dir": "RCTRequired" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/RCTTypeSafety.podspec.json ================================================ { "name": "RCTTypeSafety", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{c,h,m,mm,cpp}", "header_dir": "RCTTypeSafety", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/Libraries/TypeSafety\"" }, "dependencies": { "FBLazyVector": [ "0.74.6" ], "RCTRequired": [ "0.74.6" ], "React-Core": [ "0.74.6" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-Codegen.podspec.json ================================================ { "name": "React-Codegen", "version": "0.74.6", "summary": "Temp pod for generated files for React Native", "homepage": "https://facebook.com/", "license": "Unlicense", "authors": "Facebook", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -Wno-nullability-completeness -std=c++20", "source": { "git": "" }, "header_mappings_dir": "./", "platforms": { "ios": "13.4" }, "source_files": "**/*.{h,mm,cpp}", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"$(PODS_ROOT)/Headers/Private/React-Fabric\" \"$(PODS_ROOT)/Headers/Private/React-RCTFabric\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_TARGET_SRCROOT)\"", "FRAMEWORK_SEARCH_PATHS": [ ] }, "dependencies": { "React-jsiexecutor": [ ], "RCT-Folly": [ ], "RCTRequired": [ ], "RCTTypeSafety": [ ], "React-Core": [ ], "React-jsi": [ ], "ReactCommon/turbomodule/bridging": [ ], "ReactCommon/turbomodule/core": [ ], "React-NativeModulesApple": [ ], "glog": [ ], "DoubleConversion": [ ], "React-graphics": [ ], "React-rendererdebug": [ ], "React-Fabric": [ ], "React-FabricImage": [ ], "React-debug": [ ], "React-utils": [ ], "React-featureflags": [ ], "hermes-engine": [ ] }, "script_phases": { "name": "Generate Specs", "execution_position": "before_compile", "input_files": [ ], "show_env_vars_in_log": true, "output_files": [ "${DERIVED_FILE_DIR}/react-codegen.log" ], "script": "pushd \"$PODS_ROOT/../\" > /dev/null\nRCT_SCRIPT_POD_INSTALLATION_ROOT=$(pwd)\npopd >/dev/null\n\nexport RCT_SCRIPT_RN_DIR=$RCT_SCRIPT_POD_INSTALLATION_ROOT/../../node_modules/react-native\nexport RCT_SCRIPT_APP_PATH=$RCT_SCRIPT_POD_INSTALLATION_ROOT/../..\nexport RCT_SCRIPT_OUTPUT_DIR=$RCT_SCRIPT_POD_INSTALLATION_ROOT\nexport RCT_SCRIPT_TYPE=withCodegenDiscovery\n\nSCRIPT_PHASES_SCRIPT=\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\"\nWITH_ENVIRONMENT=\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\"\n/bin/sh -c \"$WITH_ENVIRONMENT $SCRIPT_PHASES_SCRIPT\"\n" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-Core.podspec.json ================================================ { "name": "React-Core", "version": "0.74.6", "summary": "The core of React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "resource_bundles": { "RCTI18nStrings": [ "React/I18n/strings/*.lproj" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1", "header_dir": "React", "frameworks": "JavaScriptCore", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "$(PODS_TARGET_SRCROOT)/ReactCommon $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation/RCTDeprecation.framework/Headers\"", "DEFINES_MODULE": "YES", "GCC_PREPROCESSOR_DEFINITIONS": "RCT_METRO_PORT=${RCT_METRO_PORT}", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "FRAMEWORK_SEARCH_PATHS": "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-hermes\"" }, "user_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/Headers/Private/React-Core\"" }, "default_subspecs": "Default", "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "React-cxxreact": [ ], "React-perflogger": [ ], "React-jsi": [ ], "React-jsiexecutor": [ ], "React-utils": [ ], "React-featureflags": [ ], "SocketRocket": [ "0.7.0" ], "React-runtimescheduler": [ ], "Yoga": [ ], "glog": [ ], "React-jsinspector": [ ], "RCTDeprecation": [ ], "React-hermes": [ ], "hermes-engine": [ ] }, "subspecs": [ { "name": "Default", "source_files": "React/**/*.{c,h,m,mm,S,cpp}", "exclude_files": [ "React/CoreModules/**/*", "React/DevSupport/**/*", "React/Fabric/**/*", "React/FBReactNativeSpec/**/*", "React/Tests/**/*", "React/Inspector/**/*", "React/CxxBridge/JSCExecutorFactory.{h,mm}" ], "private_header_files": "React/Cxx*/*.h" }, { "name": "DevSupport", "source_files": [ "React/DevSupport/*.{h,mm,m}", "React/Inspector/*.{h,mm,m}" ], "dependencies": { "React-Core/Default": [ "0.74.6" ], "React-Core/RCTWebSocket": [ "0.74.6" ] }, "private_header_files": "React/Inspector/RCTCxx*.h" }, { "name": "RCTWebSocket", "source_files": "Libraries/WebSocket/*.{h,m}", "dependencies": { "React-Core/Default": [ "0.74.6" ] } }, { "name": "CoreModulesHeaders", "source_files": "React/CoreModules/**/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTActionSheetHeaders", "source_files": "Libraries/ActionSheetIOS/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTAnimationHeaders", "source_files": "Libraries/NativeAnimation/{Drivers/*,Nodes/*,*}.{h}", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTBlobHeaders", "source_files": "Libraries/Blob/{RCTBlobManager,RCTFileReaderModule}.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTImageHeaders", "source_files": "Libraries/Image/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTLinkingHeaders", "source_files": "Libraries/LinkingIOS/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTNetworkHeaders", "source_files": "Libraries/Network/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTPushNotificationHeaders", "source_files": "Libraries/PushNotificationIOS/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTSettingsHeaders", "source_files": "Libraries/Settings/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTTextHeaders", "source_files": "Libraries/Text/**/*.h", "dependencies": { "React-Core/Default": [ ] } }, { "name": "RCTVibrationHeaders", "source_files": "Libraries/Vibration/*.h", "dependencies": { "React-Core/Default": [ ] } } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-CoreModules.podspec.json ================================================ { "name": "React-CoreModules", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{c,m,mm,cpp}", "header_dir": "CoreModules", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/React/CoreModules\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\"" }, "frameworks": "UIKit", "dependencies": { "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "RCT-Folly": [ "2024.01.01.00" ], "RCTTypeSafety": [ "0.74.6" ], "React-Core/CoreModulesHeaders": [ "0.74.6" ], "React-RCTImage": [ "0.74.6" ], "React-jsi": [ "0.74.6" ], "React-RCTBlob": [ ], "SocketRocket": [ "0.7.0" ], "React-jsinspector": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-Fabric.podspec.json ================================================ { "name": "React-Fabric", "version": "0.74.6", "summary": "Fabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "dummyFile.cpp", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "DEFINES_MODULE": "YES", "HEADER_SEARCH_PATHS": "\"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"" }, "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-jsiexecutor": [ ], "RCTRequired": [ ], "RCTTypeSafety": [ ], "ReactCommon/turbomodule/core": [ ], "React-jsi": [ ], "React-logger": [ ], "glog": [ ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "React-Core": [ ], "React-debug": [ ], "React-utils": [ ], "React-runtimescheduler": [ ], "React-cxxreact": [ ], "React-rendererdebug": [ ], "React-graphics": [ ], "hermes-engine": [ ] }, "script_phases": [ { "name": "[RN]Check rncore", "execution_position": "before_compile", "script": "echo \"Checking whether Codegen has run...\"\nrncorePath=\"$REACT_NATIVE_PATH/ReactCommon/react/renderer/components/rncore\"\n\nif [[ ! -d \"$rncorePath\" ]]; then\n echo 'error: Codegen did not run properly in your project. Please reinstall cocoapods with `bundle exec pod install`.'\n exit 1\nfi\n" } ], "subspecs": [ { "name": "animations", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/animations/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/animations/tests", "header_dir": "react/renderer/animations" }, { "name": "attributedstring", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/attributedstring/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/attributedstring/tests", "header_dir": "react/renderer/attributedstring" }, { "name": "core", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "source_files": "react/renderer/core/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/core/tests", "header_dir": "react/renderer/core", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"" } }, { "name": "componentregistry", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/componentregistry/*.{m,mm,cpp,h}", "header_dir": "react/renderer/componentregistry" }, { "name": "componentregistrynative", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/componentregistry/native/**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/componentregistry/native" }, { "name": "components", "subspecs": [ { "name": "inputaccessory", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/inputaccessory/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/inputaccessory/tests", "header_dir": "react/renderer/components/inputaccessory" }, { "name": "legacyviewmanagerinterop", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/legacyviewmanagerinterop/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/legacyviewmanagerinterop/tests", "header_dir": "react/renderer/components/legacyviewmanagerinterop", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/Headers/Private/React-Core\"" } }, { "name": "modal", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/modal/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/modal/tests", "header_dir": "react/renderer/components/modal" }, { "name": "rncore", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/rncore/**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/components/rncore" }, { "name": "root", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/root/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/root/tests", "header_dir": "react/renderer/components/root" }, { "name": "safeareaview", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/safeareaview/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/safeareaview/tests", "header_dir": "react/renderer/components/safeareaview" }, { "name": "scrollview", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/scrollview/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/scrollview/tests", "header_dir": "react/renderer/components/scrollview" }, { "name": "text", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/text/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/text/tests", "header_dir": "react/renderer/components/text" }, { "name": "textinput", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/textinput/platform/ios/**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/components/iostextinput" }, { "name": "unimplementedview", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/unimplementedview/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/unimplementedview/tests", "header_dir": "react/renderer/components/unimplementedview" }, { "name": "view", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "Yoga": [ ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/components/view/**/*.{m,mm,cpp,h}", "exclude_files": [ "react/renderer/components/view/tests", "react/renderer/components/view/platform/android" ], "header_dir": "react/renderer/components/view", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/Headers/Private/Yoga\"" } } ] }, { "name": "imagemanager", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/imagemanager/*.{m,mm,cpp,h}", "header_dir": "react/renderer/imagemanager" }, { "name": "mounting", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/mounting/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/mounting/tests", "header_dir": "react/renderer/mounting" }, { "name": "scheduler", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/scheduler/**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/scheduler" }, { "name": "templateprocessor", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/templateprocessor/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/templateprocessor/tests", "header_dir": "react/renderer/templateprocessor" }, { "name": "textlayoutmanager", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-Fabric/uimanager": [ ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": [ "react/renderer/textlayoutmanager/platform/ios/**/*.{m,mm,cpp,h}", "react/renderer/textlayoutmanager/*.{m,mm,cpp,h}" ], "exclude_files": [ "react/renderer/textlayoutmanager/tests", "react/renderer/textlayoutmanager/platform/android", "react/renderer/textlayoutmanager/platform/cxx" ], "header_dir": "react/renderer/textlayoutmanager" }, { "name": "uimanager", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/uimanager/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/uimanager/tests", "header_dir": "react/renderer/uimanager" }, { "name": "telemetry", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/telemetry/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/telemetry/tests", "header_dir": "react/renderer/telemetry" }, { "name": "leakchecker", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ] }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "source_files": "react/renderer/leakchecker/**/*.{cpp,h}", "exclude_files": "react/renderer/leakchecker/tests", "header_dir": "react/renderer/leakchecker", "pod_target_xcconfig": { "GCC_WARN_PEDANTIC": "YES" } } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-FabricImage.podspec.json ================================================ { "name": "React-FabricImage", "version": "0.74.6", "summary": "Image Component for Fabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "react/renderer/components/image/**/*.{m,mm,cpp,h}", "exclude_files": "react/renderer/components/image/tests", "header_dir": "react/renderer/components/image", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"" }, "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-jsiexecutor": [ "0.74.6" ], "RCTRequired": [ "0.74.6" ], "RCTTypeSafety": [ "0.74.6" ], "React-jsi": [ ], "React-logger": [ ], "glog": [ ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "React-ImageManager": [ ], "React-utils": [ ], "Yoga": [ ], "ReactCommon": [ ], "React-graphics": [ ], "React-Fabric": [ ], "React-rendererdebug": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-ImageManager.podspec.json ================================================ { "name": "React-ImageManager", "version": "0.74.6", "summary": "Fabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "source_files": "**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/imagemanager", "pod_target_xcconfig": { "USE_HEADERMAP": "NO", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/../../../\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "DEFINES_MODULE": "YES" }, "dependencies": { "RCT-Folly/Fabric": [ ], "React-Core/Default": [ ], "glog": [ ], "React-Fabric": [ ], "React-graphics": [ ], "React-debug": [ ], "React-utils": [ ], "React-rendererdebug": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-Mapbuffer.podspec.json ================================================ { "name": "React-Mapbuffer", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "react/renderer/mapbuffer/*.{cpp,h}", "exclude_files": "react/renderer/mapbuffer/tests", "public_header_files": "react/renderer/mapbuffer/*.h", "header_dir": "react/renderer/mapbuffer", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\"", "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "dependencies": { "glog": [ ], "React-debug": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-NativeModulesApple.podspec.json ================================================ { "name": "React-NativeModulesApple", "module_name": "React_NativeModulesApple", "header_dir": "ReactCommon", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "source_files": "ReactCommon/**/*.{mm,cpp,h}", "dependencies": { "glog": [ ], "ReactCommon/turbomodule/core": [ ], "ReactCommon/turbomodule/bridging": [ ], "React-callinvoker": [ ], "React-Core": [ ], "React-cxxreact": [ ], "React-jsi": [ ], "React-runtimeexecutor": [ ], "React-jsinspector": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTActionSheet.podspec.json ================================================ { "name": "React-RCTActionSheet", "version": "0.74.6", "summary": "An API for displaying iOS action sheets and share sheets.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/actionsheetios", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTActionSheet", "dependencies": { "React-Core/RCTActionSheetHeaders": [ "0.74.6" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTAnimation.podspec.json ================================================ { "name": "React-RCTAnimation", "version": "0.74.6", "summary": "A native driver for the Animated API.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{h,m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTAnimation", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\"" }, "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "RCTTypeSafety": [ ], "React-jsi": [ ], "React-Core/RCTAnimationHeaders": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTAppDelegate.podspec.json ================================================ { "name": "React-RCTAppDelegate", "version": "0.74.6", "summary": "An utility library to simplify common operations for the New Architecture", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{c,h,m,mm,S,cpp}", "compiler_flags": "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "$(PODS_TARGET_SRCROOT)/../../ReactCommon $(PODS_ROOT)/Headers/Private/React-Core $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-RCTFabric $(PODS_ROOT)/Headers/Private/Yoga $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore/React_RuntimeCore.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple/React_RuntimeApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\"", "OTHER_CPLUSPLUSFLAGS": "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "DEFINES_MODULE": "YES" }, "user_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/Headers/Private/React-Core\"" }, "dependencies": { "React-Core": [ ], "RCT-Folly": [ "2024.01.01.00" ], "RCTRequired": [ ], "RCTTypeSafety": [ ], "React-RCTNetwork": [ ], "React-RCTImage": [ ], "React-CoreModules": [ ], "React-nativeconfig": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ], "React-runtimescheduler": [ ], "React-RCTFabric": [ ], "React-RuntimeCore": [ ], "React-RuntimeApple": [ ], "React-Fabric": [ ], "React-graphics": [ ], "React-utils": [ ], "React-debug": [ ], "React-rendererdebug": [ ], "React-featureflags": [ ], "React-hermes": [ ], "React-RuntimeHermes": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTBlob.podspec.json ================================================ { "name": "React-RCTBlob", "version": "0.74.6", "summary": "An API for displaying iOS action sheets and share sheets.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{h,m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTBlob", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\"" }, "dependencies": { "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "RCT-Folly": [ "2024.01.01.00" ], "React-jsi": [ ], "React-Core/RCTBlobHeaders": [ ], "React-Core/RCTWebSocket": [ ], "React-RCTNetwork": [ ], "React-Codegen": [ ], "React-NativeModulesApple": [ ], "React-jsinspector": [ ], "ReactCommon": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTFabric.podspec.json ================================================ { "name": "React-RCTFabric", "version": "0.74.6", "summary": "RCTFabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "Fabric/**/*.{c,h,m,mm,S,cpp}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "exclude_files": [ "**/tests/*", "**/android/*", "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation" ], "header_dir": "React", "module_name": "RCTFabric", "frameworks": [ "JavaScriptCore", "MobileCoreServices" ], "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/Headers/Private/React-Core\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/Headers/Public/React-Codegen\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/textlayoutmanager/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/textinput/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig/React_nativeconfig.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "OTHER_CFLAGS": "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "dependencies": { "React-Core": [ ], "React-RCTImage": [ ], "RCT-Folly/Fabric": [ "2024.01.01.00" ], "glog": [ ], "Yoga": [ ], "React-RCTText": [ ], "React-jsi": [ ], "React-FabricImage": [ ], "React-Fabric": [ ], "React-nativeconfig": [ ], "React-graphics": [ ], "React-ImageManager": [ ], "React-featureflags": [ ], "React-debug": [ ], "React-utils": [ ], "React-rendererdebug": [ ], "React-runtimescheduler": [ ], "React-jsinspector": [ ], "hermes-engine": [ ] }, "testspecs": [ { "name": "Tests", "test_type": "unit", "source_files": "Tests/**/*.{mm}", "frameworks": "XCTest" } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTImage.podspec.json ================================================ { "name": "React-RCTImage", "version": "0.74.6", "summary": "A React component for displaying different types of images.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/image", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTImage", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\"" }, "frameworks": [ "Accelerate", "UIKit" ], "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "RCTTypeSafety": [ ], "React-jsi": [ ], "React-Core/RCTImageHeaders": [ ], "React-RCTNetwork": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTLinking.podspec.json ================================================ { "name": "React-RCTLinking", "version": "0.74.6", "summary": "A general interface to interact with both incoming and outgoing app links.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/linking", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTLinking", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios\"" }, "dependencies": { "React-Core/RCTLinkingHeaders": [ "0.74.6" ], "ReactCommon/turbomodule/core": [ "0.74.6" ], "React-jsi": [ "0.74.6" ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTNetwork.podspec.json ================================================ { "name": "React-RCTNetwork", "version": "0.74.6", "summary": "The networking library of React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTNetwork", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios\"" }, "frameworks": "MobileCoreServices", "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "RCTTypeSafety": [ ], "React-jsi": [ ], "React-Core/RCTNetworkHeaders": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTSettings.podspec.json ================================================ { "name": "React-RCTSettings", "version": "0.74.6", "summary": "A wrapper for NSUserDefaults, a persistent key-value store available only on iOS.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/settings", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTSettings", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios\"" }, "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "RCTTypeSafety": [ ], "React-jsi": [ ], "React-Core/RCTSettingsHeaders": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTText.podspec.json ================================================ { "name": "React-RCTText", "version": "0.74.6", "summary": "A React component for displaying text.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/text", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{h,m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTText", "frameworks": [ "MobileCoreServices" ], "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "dependencies": { "Yoga": [ ], "React-Core/RCTTextHeaders": [ "0.74.6" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RCTVibration.podspec.json ================================================ { "name": "React-RCTVibration", "version": "0.74.6", "summary": "An API for controlling the vibration hardware of the device.", "homepage": "https://reactnative.dev/", "documentation_url": "https://reactnative.dev/docs/vibration", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{m,mm}", "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "header_dir": "RCTVibration", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\"" }, "frameworks": "AudioToolbox", "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "React-jsi": [ ], "React-Core/RCTVibrationHeaders": [ ], "React-Codegen": [ ], "ReactCommon": [ ], "React-NativeModulesApple": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RuntimeApple.podspec.json ================================================ { "name": "React-RuntimeApple", "version": "0.74.6", "summary": "The React Native Runtime.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "ReactCommon/*.{mm,h}", "header_dir": "ReactCommon", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": [ "$(PODS_ROOT)/boost", "$(PODS_ROOT)/Headers/Private/React-Core", "$(PODS_TARGET_SRCROOT)/../../../..", "$(PODS_TARGET_SRCROOT)/../../../../.." ], "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-jsiexecutor": [ ], "React-cxxreact": [ ], "React-callinvoker": [ ], "React-runtimeexecutor": [ ], "React-utils": [ ], "React-jsi": [ ], "React-Core/Default": [ ], "React-CoreModules": [ ], "React-NativeModulesApple": [ ], "React-RCTFabric": [ ], "React-RuntimeCore": [ ], "React-Mapbuffer": [ ], "React-jserrorhandler": [ ], "React-jsinspector": [ ], "hermes-engine": [ ], "React-RuntimeHermes": [ ] }, "exclude_files": "ReactCommon/RCTJscInstance.{mm,h}" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RuntimeCore.podspec.json ================================================ { "name": "React-RuntimeCore", "version": "0.74.6", "summary": "The React Native Runtime.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": [ "*.{cpp,h}", "nativeviewconfig/*.{cpp,h}" ], "exclude_files": [ "iostests/*", "tests/**/*.{cpp,h}" ], "header_dir": "react/runtime", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/React-Core\" \"${PODS_TARGET_SRCROOT}/../..\"", "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-jsiexecutor": [ ], "React-cxxreact": [ ], "React-runtimeexecutor": [ ], "glog": [ ], "React-jsi": [ ], "React-jserrorhandler": [ ], "React-runtimescheduler": [ ], "React-utils": [ ], "React-featureflags": [ ], "hermes-engine": [ ], "React-jsinspector": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-RuntimeHermes.podspec.json ================================================ { "name": "React-RuntimeHermes", "version": "0.74.6", "summary": "The React Native Runtime.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "hermes/*.{cpp,h}", "header_dir": "react/runtime/hermes", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"${PODS_TARGET_SRCROOT}/../..\" \"${PODS_TARGET_SRCROOT}/../../hermes/executor\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-nativeconfig": [ ], "React-jsitracing": [ ], "React-jsi": [ ], "React-utils": [ ], "React-RuntimeCore": [ ], "React-featureflags": [ ], "React-jsinspector": [ ], "React-hermes": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-callinvoker.podspec.json ================================================ { "name": "React-callinvoker", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h}", "header_dir": "ReactCommon" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-cxxreact.podspec.json ================================================ { "name": "React-cxxreact", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{cpp,h}", "exclude_files": "SampleCxxModule.*", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "header_dir": "cxxreact", "dependencies": { "boost": [ "1.83.0" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "RCT-Folly": [ "2024.01.01.00" ], "glog": [ ], "React-jsinspector": [ ], "React-callinvoker": [ "0.74.6" ], "React-runtimeexecutor": [ "0.74.6" ], "React-perflogger": [ "0.74.6" ], "React-jsi": [ "0.74.6" ], "React-logger": [ "0.74.6" ], "React-debug": [ "0.74.6" ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-debug.podspec.json ================================================ { "name": "React-debug", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h}", "header_dir": "react/debug", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "DEFINES_MODULE": "YES" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-featureflags.podspec.json ================================================ { "name": "React-featureflags", "version": "0.74.6", "summary": "React Native internal feature flags", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{cpp,h}", "header_dir": "react/featureflags", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "", "DEFINES_MODULE": "YES" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-graphics.podspec.json ================================================ { "name": "React-graphics", "version": "0.74.6", "summary": "Fabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "source_files": "**/*.{m,mm,cpp,h}", "header_dir": "react/renderer/graphics", "exclude_files": [ "tests", "platform/android", "platform/cxx", "platform/windows", "react/renderer/graphics" ], "pod_target_xcconfig": { "USE_HEADERMAP": "NO", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/../../../\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"", "DEFINES_MODULE": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "dependencies": { "glog": [ ], "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-Core/Default": [ "0.74.6" ], "React-utils": [ ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-hermes.podspec.json ================================================ { "name": "React-hermes", "version": "0.74.6", "summary": "Hermes engine for React Native", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "public_header_files": "executor/HermesExecutorFactory.h", "source_files": [ "executor/*.{cpp,h}", "inspector-modern/chrome/*.{cpp,h}", "executor/HermesExecutorFactory.h" ], "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"${PODS_ROOT}/hermes-engine/destroot/include\" \"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "header_dir": "reacthermes", "dependencies": { "React-cxxreact": [ "0.74.6" ], "React-jsiexecutor": [ "0.74.6" ], "React-jsinspector": [ ], "React-perflogger": [ "0.74.6" ], "RCT-Folly": [ "2024.01.01.00" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "glog": [ ], "hermes-engine": [ ], "React-jsi": [ ], "React-runtimeexecutor": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-jserrorhandler.podspec.json ================================================ { "name": "React-jserrorhandler", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "header_dir": "jserrorhandler", "source_files": "JsErrorHandler.{cpp,h}", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer/React_Mapbuffer.framework/Headers\"" }, "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "dependencies": { "RCT-Folly/Fabric": [ "2024.01.01.00" ], "React-jsi": [ ], "React-debug": [ ], "React-Mapbuffer": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-jsi.podspec.json ================================================ { "name": "React-jsi", "version": "0.74.6", "summary": "JavaScript Interface layer for React Native", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "header_dir": "jsi", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"", "DEFINES_MODULE": "YES" }, "dependencies": { "boost": [ "1.83.0" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "RCT-Folly": [ "2024.01.01.00" ], "glog": [ ], "hermes-engine": [ ] }, "source_files": "**/*.{cpp,h}", "exclude_files": [ "jsi/jsilib-posix.cpp", "jsi/jsilib-windows.cpp", "**/test/*", "jsi/jsi.cpp" ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-jsiexecutor.podspec.json ================================================ { "name": "React-jsiexecutor", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "jsireact/*.{cpp,h}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "header_dir": "jsireact", "dependencies": { "React-cxxreact": [ "0.74.6" ], "React-jsi": [ "0.74.6" ], "React-perflogger": [ "0.74.6" ], "RCT-Folly": [ "2024.01.01.00" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "glog": [ ], "React-jsinspector": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-jsinspector.podspec.json ================================================ { "name": "React-jsinspector", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{cpp,h}", "header_dir": "jsinspector-modern", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "DEFINES_MODULE": "YES" }, "dependencies": { "glog": [ ], "RCT-Folly": [ "2024.01.01.00" ], "React-featureflags": [ ], "DoubleConversion": [ ], "React-runtimeexecutor": [ "0.74.6" ], "React-jsi": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-jsitracing.podspec.json ================================================ { "name": "React-jsitracing", "version": "0.74.6", "summary": "Internal library for JSI debugging.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "JSITracing.{cpp,h}", "header_dir": ".", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"${PODS_TARGET_SRCROOT}/../..\"", "USE_HEADERMAP": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "dependencies": { "React-jsi": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-logger.podspec.json ================================================ { "name": "React-logger", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "*.{cpp,h}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "" }, "header_dir": "logger", "dependencies": { "glog": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-nativeconfig.podspec.json ================================================ { "name": "React-nativeconfig", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "react/config/*.{m,mm,cpp,h}", "header_dir": "react/config", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-perflogger.podspec.json ================================================ { "name": "React-perflogger", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h}", "header_dir": "reactperflogger", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-rendererdebug.podspec.json ================================================ { "name": "React-rendererdebug", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h,mm}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "header_dir": "react/renderer/debug", "exclude_files": "tests", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\"", "DEFINES_MODULE": "YES" }, "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "React-debug": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-rncore.podspec.json ================================================ { "name": "React-rncore", "version": "0.74.6", "summary": "Fabric for React Native.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "dummyFile.cpp", "pod_target_xcconfig": { "USE_HEADERMAP": "YES", "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_TARGET_SRCROOT)/ReactCommon\"", "CLANG_CXX_LANGUAGE_STANDARD": "c++20" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-runtimeexecutor.podspec.json ================================================ { "name": "React-runtimeexecutor", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h}", "header_dir": "ReactCommon", "dependencies": { "React-jsi": [ "0.74.6" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-runtimescheduler.podspec.json ================================================ { "name": "React-runtimescheduler", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "header_dir": "react/renderer/runtimescheduler", "exclude_files": "tests", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\"" }, "dependencies": { "React-runtimeexecutor": [ ], "React-callinvoker": [ ], "React-cxxreact": [ ], "React-rendererdebug": [ ], "React-utils": [ ], "React-featureflags": [ ], "glog": [ ], "RCT-Folly": [ "2024.01.01.00" ], "React-jsi": [ ], "React-debug": [ ], "hermes-engine": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React-utils.podspec.json ================================================ { "name": "React-utils", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "source_files": "**/*.{cpp,h,mm}", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32", "header_dir": "react/utils", "exclude_files": "tests", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\"", "DEFINES_MODULE": "YES" }, "dependencies": { "RCT-Folly": [ "2024.01.01.00" ], "React-jsi": [ "0.74.6" ], "glog": [ ], "hermes-engine": [ ], "React-debug": [ ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/React.podspec.json ================================================ { "name": "React", "version": "0.74.6", "summary": "A framework for building native apps using React", "description": "React Native apps are built using the React JS\nframework, and render directly to native UIKit\nelements using a fully asynchronous architecture.\nThere is no browser and no HTML. We have picked what\nwe think is the best set of features from these and\nother technologies to build what we hope to become\nthe best product development framework available,\nwith an emphasis on iteration speed, developer\ndelight, continuity of technology, and absolutely\nbeautiful and fast products with no compromises in\nquality or capability.", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "preserve_paths": [ "package.json", "LICENSE", "LICENSE-docs" ], "cocoapods_version": ">= 1.10.1", "dependencies": { "React-Core": [ "0.74.6" ], "React-Core/DevSupport": [ "0.74.6" ], "React-Core/RCTWebSocket": [ "0.74.6" ], "React-RCTActionSheet": [ "0.74.6" ], "React-RCTAnimation": [ "0.74.6" ], "React-RCTBlob": [ "0.74.6" ], "React-RCTImage": [ "0.74.6" ], "React-RCTLinking": [ "0.74.6" ], "React-RCTNetwork": [ "0.74.6" ], "React-RCTSettings": [ "0.74.6" ], "React-RCTText": [ "0.74.6" ], "React-RCTVibration": [ "0.74.6" ] } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/ReactCommon.podspec.json ================================================ { "name": "ReactCommon", "module_name": "ReactCommon", "version": "0.74.6", "summary": "-", "homepage": "https://reactnative.dev/", "license": "MIT", "authors": "Meta Platforms, Inc. and its affiliates", "platforms": { "ios": "13.4" }, "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "header_dir": "ReactCommon", "compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"", "USE_HEADERMAP": "YES", "DEFINES_MODULE": "YES", "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "GCC_WARN_PEDANTIC": "YES" }, "subspecs": [ { "name": "turbomodule", "dependencies": { "React-callinvoker": [ "0.74.6" ], "React-perflogger": [ "0.74.6" ], "React-cxxreact": [ "0.74.6" ], "React-jsi": [ "0.74.6" ], "RCT-Folly": [ "2024.01.01.00" ], "React-logger": [ "0.74.6" ], "DoubleConversion": [ ], "fmt": [ "9.1.0" ], "glog": [ ], "hermes-engine": [ ] }, "subspecs": [ { "name": "bridging", "dependencies": { "React-jsi": [ "0.74.6" ], "hermes-engine": [ ] }, "source_files": "react/bridging/**/*.{cpp,h}", "exclude_files": "react/bridging/tests", "header_dir": "react/bridging", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" } }, { "name": "core", "source_files": "react/nativemodule/core/ReactCommon/**/*.{cpp,h}", "pod_target_xcconfig": { "HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers\"" }, "dependencies": { "React-debug": [ "0.74.6" ], "React-utils": [ "0.74.6" ] } } ] } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/WatermelonDB.podspec.json ================================================ { "name": "WatermelonDB", "version": "0.28.0-0", "summary": "Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast", "description": "Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast", "homepage": "https://github.com/Nozbe/WatermelonDB#readme", "license": "MIT", "authors": { "author": "@Nozbe" }, "platforms": { "ios": "12.0", "tvos": "12.0" }, "source": { "git": "https://github.com/Nozbe/WatermelonDB.git", "tag": "v0.28.0-0" }, "source_files": [ "native/ios/**/*.{h,m,mm,swift,c,cpp}", "native/shared/**/*.{h,c,cpp}" ], "public_header_files": [ "native/ios/WatermelonDB/JSIInstaller.h", "native/ios/WatermelonDB/WatermelonDB.h" ], "pod_target_xcconfig": { }, "requires_arc": true, "compiler_flags": "-Os", "dependencies": { "React": [ ], "simdjson": [ ] }, "libraries": "sqlite3" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/Yoga.podspec.json ================================================ { "name": "Yoga", "version": "0.0.0", "license": { "type": "MIT" }, "homepage": "https://yogalayout.dev", "documentation_url": "https://yogalayout.dev/docs/", "summary": "Yoga is a cross-platform layout engine which implements Flexbox.", "description": "Yoga is a cross-platform layout engine enabling maximum collaboration within your team by implementing an API many designers are familiar with, and opening it up to developers across different platforms.", "authors": "Facebook", "source": { "git": "https://github.com/facebook/react-native.git", "tag": "v0.74.6" }, "module_name": "yoga", "header_dir": "yoga", "requires_arc": false, "pod_target_xcconfig": { "DEFINES_MODULE": "YES" }, "compiler_flags": [ "-fno-omit-frame-pointer", "-fexceptions", "-Wall", "-Werror", "-std=c++20", "-fPIC" ], "platforms": { "ios": "13.4" }, "source_files": "yoga/**/*.{cpp,h}", "header_mappings_dir": "yoga", "public_header_files": "yoga/*.h", "private_header_files": [ "yoga/config/Config.h", "yoga/enums/Align.h", "yoga/enums/Edge.h", "yoga/enums/Gutter.h", "yoga/enums/Justify.h", "yoga/enums/ExperimentalFeature.h", "yoga/enums/Unit.h", "yoga/enums/FlexDirection.h", "yoga/enums/Errata.h", "yoga/enums/Direction.h", "yoga/enums/MeasureMode.h", "yoga/enums/PhysicalEdge.h", "yoga/enums/Display.h", "yoga/enums/LogLevel.h", "yoga/enums/NodeType.h", "yoga/enums/YogaEnums.h", "yoga/enums/PositionType.h", "yoga/enums/Overflow.h", "yoga/enums/Dimension.h", "yoga/enums/Wrap.h", "yoga/style/SmallValueBuffer.h", "yoga/style/Style.h", "yoga/style/StyleValueHandle.h", "yoga/style/StyleValuePool.h", "yoga/style/StyleLength.h", "yoga/algorithm/Baseline.h", "yoga/algorithm/FlexLine.h", "yoga/algorithm/BoundAxis.h", "yoga/algorithm/SizingMode.h", "yoga/algorithm/Align.h", "yoga/algorithm/Cache.h", "yoga/algorithm/FlexDirection.h", "yoga/algorithm/TrailingPosition.h", "yoga/algorithm/CalculateLayout.h", "yoga/algorithm/PixelGrid.h", "yoga/algorithm/AbsoluteLayout.h", "yoga/numeric/Comparison.h", "yoga/numeric/FloatOptional.h", "yoga/node/LayoutResults.h", "yoga/node/Node.h", "yoga/node/CachedMeasurement.h", "yoga/event/event.h", "yoga/debug/AssertFatal.h", "yoga/debug/Log.h" ], "preserve_paths": [ "yoga/**/*.h" ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/boost.podspec.json ================================================ { "name": "boost", "version": "1.83.0", "license": { "type": "Boost Software License", "file": "LICENSE_1_0.txt" }, "homepage": "http://www.boost.org", "summary": "Boost provides free peer-reviewed portable C++ source libraries.", "authors": "Rene Rivera", "source": { "http": "https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.bz2", "sha256": "6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e" }, "platforms": { "ios": "13.4" }, "requires_arc": false, "module_name": "boost", "header_dir": "boost", "preserve_paths": "boost" } ================================================ FILE: native/iosTest/Pods/Local Podspecs/fmt.podspec.json ================================================ { "name": "fmt", "version": "9.1.0", "license": { "type": "MIT" }, "homepage": "https://github.com/fmtlib/fmt", "summary": "{fmt} is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and iostreams.", "authors": "The fmt contributors", "source": { "git": "https://github.com/fmtlib/fmt.git", "tag": "9.1.0" }, "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20" }, "platforms": { "ios": "13.4" }, "libraries": "c++", "public_header_files": "include/fmt/*.h", "header_mappings_dir": "include", "source_files": [ "include/fmt/*.h", "src/format.cc" ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/glog.podspec.json ================================================ { "name": "glog", "version": "0.3.5", "license": { "type": "Google", "file": "COPYING" }, "homepage": "https://github.com/google/glog", "summary": "Google logging module", "authors": "Google", "prepare_command": "#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n\nset -e\n\nPLATFORM_NAME=\"${PLATFORM_NAME:-iphoneos}\"\nCURRENT_ARCH=\"${CURRENT_ARCH}\"\n\nif [ -z \"$CURRENT_ARCH\" ] || [ \"$CURRENT_ARCH\" == \"undefined_arch\" ]; then\n # Xcode 10 beta sets CURRENT_ARCH to \"undefined_arch\", this leads to incorrect linker arg.\n # it's better to rely on platform name as fallback because architecture differs between simulator and device\n\n if [[ \"$PLATFORM_NAME\" == *\"simulator\"* ]]; then\n CURRENT_ARCH=\"x86_64\"\n else\n CURRENT_ARCH=\"arm64\"\n fi\nfi\n\n# @lint-ignore-every TXT2 Tab Literal\nif [ \"$CURRENT_ARCH\" == \"arm64\" ]; then\n cat <<\\EOF >>fix_glog_0.3.5_apple_silicon.patch\ndiff --git a/config.sub b/config.sub\nindex 1761d8b..43fa2e8 100755\n--- a/config.sub\n+++ b/config.sub\n@@ -1096,6 +1096,9 @@ case $basic_machine in\n \t\tbasic_machine=z8k-unknown\n \t\tos=-sim\n \t\t;;\n+\tarm64-*)\n+\t\tbasic_machine=$(echo $basic_machine | sed 's/arm64/aarch64/')\n+\t\t;;\n \tnone)\n \t\tbasic_machine=none-none\n \t\tos=-none\nEOF\n\n patch -p1 config.sub fix_glog_0.3.5_apple_silicon.patch\nfi\n\nXCRUN=\"$(which xcrun)\"\nif [ -n \"$XCRUN\" ]; then\n export CC=\"$(xcrun -find -sdk $PLATFORM_NAME cc) -arch $CURRENT_ARCH -isysroot $(xcrun -sdk $PLATFORM_NAME --show-sdk-path)\"\n export CXX=\"$CC\"\nelse\n export CC=\"$CC:-$(which gcc)\"\n export CXX=\"$CXX:-$(which g++ || true)\"\nfi\nexport CXX=\"$CXX:-$CC\"\n\n# Remove automake symlink if it exists\nif [ -h \"test-driver\" ]; then\n rm test-driver\nfi\n\n# Manually disable gflags include to fix issue https://github.com/facebook/react-native/issues/28446\nsed -i.bak -e 's/\\@ac_cv_have_libgflags\\@/0/' src/glog/logging.h.in && rm src/glog/logging.h.in.bak\nsed -i.bak -e 's/HAVE_LIB_GFLAGS/HAVE_LIB_GFLAGS_DISABLED/' src/config.h.in && rm src/config.h.in.bak\n\n./configure --host arm-apple-darwin\n\ncat << EOF >> src/config.h\n/* Add in so we have Apple Target Conditionals */\n#ifdef __APPLE__\n#include \n#include \n#endif\n\n/* Special configuration for ucontext */\n#undef HAVE_UCONTEXT_H\n#undef PC_FROM_UCONTEXT\n#if defined(__x86_64__)\n#define PC_FROM_UCONTEXT uc_mcontext->__ss.__rip\n#elif defined(__i386__)\n#define PC_FROM_UCONTEXT uc_mcontext->__ss.__eip\n#endif\nEOF\n\n# Prepare exported header include\nEXPORTED_INCLUDE_DIR=\"exported/glog\"\nmkdir -p exported/glog\ncp -f src/glog/log_severity.h \"$EXPORTED_INCLUDE_DIR/\"\ncp -f src/glog/logging.h \"$EXPORTED_INCLUDE_DIR/\"\ncp -f src/glog/raw_logging.h \"$EXPORTED_INCLUDE_DIR/\"\ncp -f src/glog/stl_logging.h \"$EXPORTED_INCLUDE_DIR/\"\ncp -f src/glog/vlog_is_on.h \"$EXPORTED_INCLUDE_DIR/\"", "source": { "git": "https://github.com/google/glog.git", "tag": "v0.3.5" }, "module_name": "glog", "header_dir": "glog", "source_files": [ "src/glog/*.h", "src/demangle.cc", "src/logging.cc", "src/raw_logging.cc", "src/signalhandler.cc", "src/symbolize.cc", "src/utilities.cc", "src/vlog_is_on.cc" ], "preserve_paths": [ "src/*.h", "src/base/*.h" ], "exclude_files": "src/windows/**/*", "compiler_flags": "-Wno-shorten-64-to-32", "pod_target_xcconfig": { "USE_HEADERMAP": "NO", "HEADER_SEARCH_PATHS": "$(PODS_TARGET_SRCROOT)/src", "DEFINES_MODULE": "YES" }, "platforms": { "ios": "13.4" } } ================================================ FILE: native/iosTest/Pods/Local Podspecs/hermes-engine.podspec.json ================================================ { "name": "hermes-engine", "version": "0.74.6", "summary": "Hermes is a small and lightweight JavaScript engine optimized for running React Native.", "description": "Hermes is a JavaScript engine optimized for fast start-up of React Native apps. It features ahead-of-time static optimization and compact bytecode.", "homepage": "https://hermesengine.dev", "license": "MIT", "authors": "Facebook", "source": { "http": "https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.74.6/react-native-artifacts-0.74.6-hermes-ios-debug.tar.gz" }, "platforms": { "osx": "10.13", "ios": "13.4", "visionos": "1.0" }, "preserve_paths": "**/*.*", "source_files": "", "pod_target_xcconfig": { "CLANG_CXX_LANGUAGE_STANDARD": "c++20", "CLANG_CXX_LIBRARY": "compiler-default" }, "ios": { "vendored_frameworks": "destroot/Library/Frameworks/ios/hermes.framework" }, "osx": { "vendored_frameworks": "destroot/Library/Frameworks/macosx/hermes.framework" }, "script_phases": { "name": "[Hermes] Replace Hermes for the right configuration, if needed", "execution_position": "before_compile", "script": " . \"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\n\n CONFIG=\"Release\"\n if echo $GCC_PREPROCESSOR_DEFINITIONS | grep -q \"DEBUG=1\"; then\n CONFIG=\"Debug\"\n fi\n\n \"$NODE_BINARY\" \"$REACT_NATIVE_PATH/sdks/hermes-engine/utils/replace_hermes_version.js\" -c \"$CONFIG\" -r \"0.74.6\" -p \"$PODS_ROOT\"\n" }, "subspecs": [ { "name": "Pre-built", "preserve_paths": [ "destroot/bin/*", "**/*.{h,c,cpp}" ], "source_files": "destroot/include/hermes/**/*.h", "header_mappings_dir": "destroot/include", "ios": { "vendored_frameworks": "destroot/Library/Frameworks/universal/hermes.xcframework" }, "visionos": { "vendored_frameworks": "destroot/Library/Frameworks/universal/hermes.xcframework" }, "osx": { "vendored_frameworks": "destroot/Library/Frameworks/macosx/hermes.framework" } } ] } ================================================ FILE: native/iosTest/Pods/Local Podspecs/simdjson.podspec.json ================================================ { "name": "simdjson", "version": "3.9.4", "summary": "NPM-released fork of simdjson C++ library", "description": "NPM-released fork of simdjson C++ library", "homepage": "https://github.com/Nozbe/simdjson", "license": "Apache-2.0", "authors": { "author": "simdjson authors" }, "platforms": { "ios": "11.0", "tvos": "11.0" }, "source": { "git": "https://github.com/Nozbe/simdmjson.git", "tag": "v3.9.4" }, "source_files": "src/*.{h,cpp}", "public_header_files": "src/simdjson.h", "requires_arc": true, "compiler_flags": "-Os" } ================================================ FILE: native/iosTest/Pods/Pods.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 51; objects = { /* Begin PBXAggregateTarget section */ 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */ = { isa = PBXAggregateTarget; buildConfigurationList = 30B947E14EE1C9821D33E6F7B6C9B674 /* Build configuration list for PBXAggregateTarget "React-RCTActionSheet" */; buildPhases = ( ); dependencies = ( 795142F7B9CEBC2409056405CF1A0236 /* PBXTargetDependency */, ); name = "React-RCTActionSheet"; }; 1BEE828C124E6416179B904A9F66D794 /* React */ = { isa = PBXAggregateTarget; buildConfigurationList = D6A86079896F7EF87D956234AFC7707B /* Build configuration list for PBXAggregateTarget "React" */; buildPhases = ( ); dependencies = ( F77531E668A19B6443CBD7E19D27545D /* PBXTargetDependency */, 9574B0698E37FC3108573EFE439B41A8 /* PBXTargetDependency */, 0C5451BA2A75717532FFAD7F482792BE /* PBXTargetDependency */, 3AD4BE5BC377F82502EDC24E98A0CD21 /* PBXTargetDependency */, 3AD979AD7992ED35CB478669CECBFA0C /* PBXTargetDependency */, 7845C42B56BD999D4789DAC5D452DC83 /* PBXTargetDependency */, D871603375871A9101013BADEECA2E73 /* PBXTargetDependency */, CE6EA560516182C0A6BB28F3AC6094FB /* PBXTargetDependency */, 94FAD4F9BBCBE1444B11C91C436E40FC /* PBXTargetDependency */, 9D5BDF20084DF3E8210FEE9F61DE5032 /* PBXTargetDependency */, ); name = React; }; 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */ = { isa = PBXAggregateTarget; buildConfigurationList = 430F0181C23B9D49AE0FB01BF97532C0 /* Build configuration list for PBXAggregateTarget "React-callinvoker" */; buildPhases = ( ); dependencies = ( ); name = "React-callinvoker"; }; 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */ = { isa = PBXAggregateTarget; buildConfigurationList = 81539B5A4569E3F41E63CB9C9B3DDF65 /* Build configuration list for PBXAggregateTarget "React-runtimeexecutor" */; buildPhases = ( ); dependencies = ( CCCDA559E86BE44E9BF7387A47AEAE68 /* PBXTargetDependency */, ); name = "React-runtimeexecutor"; }; 718331030FAA6D88E74D4B2240BB4AC8 /* React-jsitracing */ = { isa = PBXAggregateTarget; buildConfigurationList = 3C2B4CD24E58B412E3E2C697725C9878 /* Build configuration list for PBXAggregateTarget "React-jsitracing" */; buildPhases = ( ); dependencies = ( 0C2CAC5C2695689B85F032B736C68BB2 /* PBXTargetDependency */, ); name = "React-jsitracing"; }; 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */ = { isa = PBXAggregateTarget; buildConfigurationList = 611882B4FC76DDB90E3FE11E69E82A1D /* Build configuration list for PBXAggregateTarget "FBLazyVector" */; buildPhases = ( ); dependencies = ( ); name = FBLazyVector; }; 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */ = { isa = PBXAggregateTarget; buildConfigurationList = 65417709D1683A7567ED9D68A22636AA /* Build configuration list for PBXAggregateTarget "hermes-engine" */; buildPhases = ( B89680891A24601AFD2489230D18F55C /* [CP-User] [Hermes] Replace Hermes for the right configuration, if needed */, 8F6E4EC43155610A21F16E054B4EAFF3 /* [CP] Copy XCFrameworks */, ); dependencies = ( ); name = "hermes-engine"; }; B41E34C6B259B9994C513BE178912491 /* React-rncore */ = { isa = PBXAggregateTarget; buildConfigurationList = F730EC4EA56CE21717CD773050DB72DA /* Build configuration list for PBXAggregateTarget "React-rncore" */; buildPhases = ( ); dependencies = ( ); name = "React-rncore"; }; E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */ = { isa = PBXAggregateTarget; buildConfigurationList = 9A3369F1A104F96B1995A4DC4B4D5777 /* Build configuration list for PBXAggregateTarget "RCTRequired" */; buildPhases = ( ); dependencies = ( ); name = RCTRequired; }; EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */ = { isa = PBXAggregateTarget; buildConfigurationList = CBAB2C5064DBA2DAE34E7B896B68FABD /* Build configuration list for PBXAggregateTarget "boost" */; buildPhases = ( ); dependencies = ( ); name = boost; }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ 006EBCAFA23C3844F04C940A4F313410 /* Props.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF2A098BFA676BEB807B64FA44567B00 /* Props.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 008E750C6767F6A81D7DF312DEEB5EA3 /* EventBeat.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CE7D7393D013F61BE78DD0E2CDA786F /* EventBeat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 00A5EA92B12316AE199E2854F7DB8F9F /* RCTSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D9E5911728E23B08C57B041A401477 /* RCTSegmentedControlManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 00C54E7CD50896090EF4E7278BA81656 /* RCTBlobPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 925A2297E6EEF7197A415C4C41AE8027 /* RCTBlobPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 012219210290351B09E3228F57549796 /* React-RCTSettings-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2726901F064D66A4F014D07BB986BF67 /* React-RCTSettings-dummy.m */; }; 012747985355A39C6D1E6079BBE61B87 /* RCTScrollEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5424951447BE1FD64194B009E9504B50 /* RCTScrollEvent.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 012BB6EAAEB87A76C792B66D04A36B78 /* RCTPackagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = D325DB74A674890FFA71EB148DA83A39 /* RCTPackagerClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; 013853D86CB10EC25449DC7BF10568E1 /* ReactNativeFeatureFlagsDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = DC24DA11D62A60707D4DA680FD726094 /* ReactNativeFeatureFlagsDefaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; 01474AE21855DC963FC28E1C31BEB84A /* ModuleRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 80D64042B21EA7CEEB535422CBABD3F1 /* ModuleRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 017DF990D65F9C2E66641A01B59D6B5A /* Access.h in Headers */ = {isa = PBXBuildFile; fileRef = 908D006CABFC90D4BADBF7B0C2544818 /* Access.h */; settings = {ATTRIBUTES = (Project, ); }; }; 01A541E5BC9CBB99C2EE623A47D5DC67 /* RCTReloadCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DF60B1D14EECCD8446FC1A15E8766B4 /* RCTReloadCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; 01D487B3BCD02252EA46AD31A3AE88F2 /* ManagedObjectWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 73AB6FD4B3DF99EC222564D6743427C3 /* ManagedObjectWrapper.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 01E2ED6001D6C49CE159000B657445E8 /* RCTTextPrimitivesConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9103371D49F49FB8704F83F623604846 /* RCTTextPrimitivesConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 01FF22D8A0746B87FA43295D52EDFF01 /* ImageShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C69750863FB2783C4C3DA5FBF5A671 /* ImageShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 02316C6ABD89D9DCFC7B8AF62D777CD8 /* SharedProxyCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 816B94D26D0966A297B8BFCB1F24039B /* SharedProxyCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0231AD4A2A7FBFE5C9D2F17185F85FFC /* not_null-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = A854CDECEC563F33590796054B7822E0 /* not_null-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0260211AC75157F22C8A580DB42FCBD2 /* InspectorPackagerConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3070DCC47CC323B0236AAA591CC207A /* InspectorPackagerConnection.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 026D5B5D71D8CFF7B02A6F9E1EEA6B5D /* RCTFabricComponentsPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 69E632279F0013ADFF7F6ECDE2FAF2E7 /* RCTFabricComponentsPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 027B3B0E43853967D8B623D4E5A9A287 /* RCTHost+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BA9901F19F900300AC2E7122D5AC01A6 /* RCTHost+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 028D9502D34CF9EFCF733F318ECCD483 /* RuntimeAgentDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F4D03D4133A485BCCB2117CF4DDE2ED6 /* RuntimeAgentDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 02A0A139AA95C6D1D6EF74AC71B17B90 /* PThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 586BE0D668A4FAAEE338C3991530ACC0 /* PThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0325D441EB7088C55285D0ED7E97A25F /* Display.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7DA62E7DF50F0A454C529AA78EA7E5 /* Display.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0333BBF0A9EA7C3B7E05BD48E0D67A82 /* vi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5744FF8972259231F82207B5D2C1B114 /* vi.lproj */; }; 03366D45E928B9EBD08D6BFDB5566C4D /* F14SetFallback.h in Headers */ = {isa = PBXBuildFile; fileRef = D673246C2C1796D3D74599E1964A310D /* F14SetFallback.h */; settings = {ATTRIBUTES = (Project, ); }; }; 03584C8062B53F05A7A5BA8A4C002AE0 /* RCTLogBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A49FC170B2F422E9973F529DFC94316 /* RCTLogBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0364A19CF9719BA18B744C8BFBF53540 /* WMDatabaseDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 54CED87C8170B13841D92A0113192459 /* WMDatabaseDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0366A2F9BCF416C8C084A6CFE4257720 /* TouchEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 359747BC6AC4881D3081F8B6AA532321 /* TouchEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0370A8D6E25EA067E86213AF97FA908F /* RCTSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D9722AC2B3A09F57A4EF66060A291E1E /* RCTSwitch.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 038A3F0242D33B98EB3291B978423B1F /* Utility.h in Headers */ = {isa = PBXBuildFile; fileRef = 2002DD4A0F6B3EB4DD29785216A66D9B /* Utility.h */; settings = {ATTRIBUTES = (Project, ); }; }; 03E022AAD071ABD52393EA63BED66760 /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 500E0FB005F00271DB2A0C68724900DA /* RCTShadowView+Layout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 041CF2CB65A7E9545B3EC1BB2BCFD469 /* RCTCxxConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = E727F73300B53155B530D74924AD2BA8 /* RCTCxxConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0427F0349638DCD376F42A586CB060E0 /* JSExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C51C4243A2C445225C52EAD81BE81D66 /* JSExecutor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 04D5FD40FF43BF9CD112D2B1E115FA0A /* String.h in Headers */ = {isa = PBXBuildFile; fileRef = DDED685F4B3E6B9AD98CDA1F1594C02B /* String.h */; settings = {ATTRIBUTES = (Project, ); }; }; 04DA5067488F0CEF42FA792DB385DE48 /* MapBufferBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BD79853D3326455B2119D890DC49815 /* MapBufferBuilder.cpp */; }; 04F8707A7E7C72B27B4A1BBE81C9030C /* RCTBridgeMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = E598B862EA984799230DF69702BF2488 /* RCTBridgeMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; 050FE1A6E2E7D773A48B1F4BED2FC450 /* RCTFPSGraph.mm in Sources */ = {isa = PBXBuildFile; fileRef = 963A0C06992A9D8797E0E1BA9A14DB04 /* RCTFPSGraph.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 05425C40C186C4D905D650FDE09FBB6F /* RCTJSIExecutorRuntimeInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = AA29C6591A2E715C33B132EAC7AF7008 /* RCTJSIExecutorRuntimeInstaller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 055DA973F87A7B3ECAE8DC3E4579BE45 /* MicroSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA911281D978CB40351D59D5598FC9B /* MicroSpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; 057F908327F36BAAE35535CCD3AF5CD1 /* ShadowTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95D17842EC6B842F72D0A2E4DA506E78 /* ShadowTree.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 05A580DBF295D2371F431C910CC5919C /* RCTBridgeConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E01084CFFDCD00B181AAEBF7F6EC46 /* RCTBridgeConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05AC9AEA1013D02AF586E82722432DB4 /* RCTCxxUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F40B6C62C59C16116BE5B43DD2B6E4 /* RCTCxxUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05CEAA68D97F9486B6361528835C7FFC /* RCTTextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6501460FCAA027C674AB185B605DE1E /* RCTTextAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 061B1D7E9A7E2A984C737EABBEADD5F6 /* Extern.h in Headers */ = {isa = PBXBuildFile; fileRef = 686FA922FDC06D95A33307B2DFE9C50E /* Extern.h */; settings = {ATTRIBUTES = (Project, ); }; }; 062CCABB12806D7CB657BEB43436A947 /* DebugStringConvertible.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B36F42640063CCA329D93AC8F874A56 /* DebugStringConvertible.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0642403BB181EA7478210C0089DEF508 /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8CD6649A7EC8CDD2CF31FCF0EBBD4501 /* cs.lproj */; }; 0663905B64268796E97AEE20D0DF5F57 /* YGNodeStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C5225A85D60908066F79256FD961B24 /* YGNodeStyle.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 066F723FEEAC257D987EC4692F9132EB /* RValueReferenceWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFECA4F48E22E7225529497330DEB8B /* RValueReferenceWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 069B050AFB16542D9675E9245FF16FC5 /* RCTExceptionsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = B7DAE91AFA1AEC4FD04392E412D1D4CE /* RCTExceptionsManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 069EC9D1FB2F67664CF6B2CEC35D10FF /* BaseViewEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = FD851DC7951B65E103BB27B6706B8EE3 /* BaseViewEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0740889CD8076D764DE2ECBE838DE059 /* RCTScrollEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C5887CFA052BA4652642CE173F3C2F4 /* RCTScrollEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 074543D7B648948577CE19FF74825D59 /* States.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3F5D9E03D596413A96FCC9292384B7D /* States.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 07600B8FEF009F0EF5D1EE0510FDEE45 /* HazptrDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 099CB5926F7A7C10C82306F50F31CAE7 /* HazptrDomain.h */; settings = {ATTRIBUTES = (Project, ); }; }; 076814077F393DA76C02B2B98955F27B /* RCTSinglelineTextInputView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 28992A73B6E2E3C1194912C0730023B1 /* RCTSinglelineTextInputView.mm */; }; 07718CEC8AD51EEE4CC2299F0637398E /* RCTImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DD12CDD757C637C9F44622EFFFFB58B1 /* RCTImageSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0786745B0F7A7521328CC9923B8BF5E9 /* RCTBaseTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 21754846DD83D3794B287A3D6BB4DA9C /* RCTBaseTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0797F9543456306CA94A496239F85C3E /* ComponentDescriptors.h in Headers */ = {isa = PBXBuildFile; fileRef = AC18E26348C64BD7E409DF012EC8FD1E /* ComponentDescriptors.h */; settings = {ATTRIBUTES = (Project, ); }; }; 079D341C7E45BB820BB7CD75514E3282 /* RCTMessageThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C795DB945B2C3AA8C9DB7C2065D7C38 /* RCTMessageThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 07BFA4FB5FAF3E14B7D0E4C8711EF0B1 /* IPAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 832DCF641540319B774328DFB00B9620 /* IPAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; 07D42E889C8BBFAEBA0D6209B9929086 /* RCTRefreshableProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 88FE98CEA078C7FBF78F8FA3A02093CE /* RCTRefreshableProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 07E90BA58803F737B48DA6554802CA36 /* Chrono.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC5AD5C90390C13DD621B5A02EEE993 /* Chrono.h */; settings = {ATTRIBUTES = (Project, ); }; }; 083594D0ABE1486128C1FACE9EBBB8E1 /* JSRuntimeFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E2734D8657ABDA8E52005D327C59A4 /* JSRuntimeFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 083E2C962EA0D5E14FEA17B782E3AF09 /* RCTImageManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = EBC95FE616AEF3E48E3F113E5BB076C4 /* RCTImageManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 084B7DAB689734EEBB98408DD6E7F12B /* RCTActivityIndicatorViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 98CDD541D0DC28ECF520BEE664E58AEC /* RCTActivityIndicatorViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 08C4E352A9F9F366FA356A9978482B37 /* Arena.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F169E67E9F6AF9D77C49B765487E70 /* Arena.h */; settings = {ATTRIBUTES = (Project, ); }; }; 08DB5A93E58A2B2DB9557F5578E835D2 /* ShadowNodeTraits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AE90B08B12F40EABE9BDF5B888E8832 /* ShadowNodeTraits.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0911E5CE6C9678C2C47A2A1749FF64D4 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = D4586CC35438203A980E60618B09852C /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 09946EAA53E8CE2FFF8939A7012AABD1 /* JSBundleType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC28EEFD6B8B7AAEB56E2A041A6DDCB5 /* JSBundleType.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 099A28E24D0D1D10AE86EA1B272EB1FF /* RCTImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 645F364C7D0579436F0E777A3156F8C5 /* RCTImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 09AAD2EF48DD20C48D9ED5976230E59F /* RCTLocalAssetImageLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2912664908CB6F78177A7A284D257A7 /* RCTLocalAssetImageLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 09D436AE529D72CDC3C5268A5EFA9903 /* RCTNetworking.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C987DB1C26CAE3839EA088A41B167DF /* RCTNetworking.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 09D9EE11D46CB94FAFBB54DFAED6C44E /* SRDelegateController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F8810FFDF257E41E57C7103FDC6A5BB /* SRDelegateController.m */; }; 09DEA251437E9A7F259A7FADBDC16619 /* ValueUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD37A9A693B3CEB099DDA9955E3C67F /* ValueUnit.h */; settings = {ATTRIBUTES = (Project, ); }; }; 09FF08768BDBFF4D478026381BB522BB /* TextLayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = BD485A11989B9D9DA494C47A98A5F09D /* TextLayoutContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A1065F756F05AE906969E13DD4A1346 /* RawEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7841C02BBC8782E7B8D3EF2815A6026C /* RawEvent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0A375EA2429F646CCA545A8C0D177863 /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CEE94FB9A70376F30A45C598232AD61 /* event.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 0A525F353D76ACCAEB8A08546550D6AE /* HermesExecutorFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CA9A9E0677E6E622E8C0C6BFC057B5 /* HermesExecutorFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A66803576446C88DE73AFC6C2B9B253 /* RCTObjectAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F35ECB508AB87E99C735B9A8219E2790 /* RCTObjectAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A74076497F9A29CE8DDDD53D828748B /* SynchronousEventBeat.h in Headers */ = {isa = PBXBuildFile; fileRef = DC5E287FACF5FD6F1EC1566E83AC741C /* SynchronousEventBeat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A84A0D6B6C2378A9F17CC60E5629981 /* RCTConvertHelpers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 82552A36AF98B4CFE12CF35D745DFEBA /* RCTConvertHelpers.mm */; }; 0A9DCA309A20F282A70CE9A354445E8A /* RCTBaseTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FD3BEF6FF2E1CB963FD11F173D53D /* RCTBaseTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0AB017AA30AADCABC979757F7F94A860 /* ShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2594C363D96114D88D6D3996A6AD08 /* ShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0AE3B42013A6EC4A1BDE21E82E39800F /* TextAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 296D3832DB6A00F26BCB4D9A491A88E6 /* TextAttributes.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 0B0269B6A3EE1DBDAAE36B6D4D159963 /* dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = 732688D92C1058B4D3B68B3EF5CB178C /* dynamic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B2B305A2CAE42A22ABF7A71994E8C63 /* FixedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FAC834F5ADBD6F3EEF6BE67C8BE5F06 /* FixedString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B3B9EC6140BA1847988F15E0947B26E /* WaitOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = D1C29624546038DCFAE9385CBC490A7F /* WaitOptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B59F1574F8DE2DC67F22706B855B56B /* ObserverContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = E0529EAB67BFDD4AEA0A80301D04CE2C /* ObserverContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B842AC5587E3794C6EA8047E54FDB41 /* RCTRefreshControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DE9029B11C02C40098A6D686789D830 /* RCTRefreshControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0BC972460491F39270DE005A9D40A372 /* EventPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E12CAD2C6FB4F2DF64F7CCC6D15E3F /* EventPriority.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0BE3BABD266439B755BB51D2E6522C93 /* UnimplementedViewShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF7E566A1E46C435965177310C115248 /* UnimplementedViewShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 0BE9D5B31B8178E25D7701679E024C08 /* RCTNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F4B2863206A2795EDD2B67B16FAC91C /* RCTNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C0B183FCA29DC956E1A1B894DE839D8 /* UnimplementedViewProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9C75E943A657F3153FF32A050DA7592 /* UnimplementedViewProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 0C1656F42CCF33F050C0CE2F7FC009E2 /* AtomicUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C9BBAB8DD3A07A56FC902CC374E80A3B /* AtomicUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C173B954EAFE33EB0E10A7430B53888 /* RCTRootViewFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = D3CD42FBDC4A9051EBFC9BBE6DB02349 /* RCTRootViewFactory.mm */; settings = {COMPILER_FLAGS = "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES"; }; }; 0C1DD5D979DF1A9CFCB7ED8034F0C6F0 /* DelayedInit.h in Headers */ = {isa = PBXBuildFile; fileRef = DB05D38A61483D308412FA789EE36CBC /* DelayedInit.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C341730FFBD4215E38D143F056AAD97 /* JSBigString.h in Headers */ = {isa = PBXBuildFile; fileRef = AE85DC12DF3E30AE258ACC3C9861E350 /* JSBigString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C5A0742C3AE61AB9C451CA241A06AA3 /* std.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A866CA3EE1ADEEDF264EFCEC0F0F57 /* std.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C829322BFE8672132D133A9ADDC02E6 /* ExecutionContextManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5660D2686BFA4493932307298F162071 /* ExecutionContextManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0CAEB04840483A8A5A72F4355958AD73 /* RCTScrollContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40CFEC8038EA506FF0CAC998C27E80BF /* RCTScrollContentView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0CCB0E1584227DBA1626298A85B5330C /* RCTInspectorDevServerHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492BFB87D3FC79B8A5E5053209507E96 /* RCTInspectorDevServerHelper.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0D0305563835BA45E3AB92FDC061900A /* Sqlite.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E38DDBA8B3F295D182A2E60FC4F968B /* Sqlite.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D380672BD934ED65A236B8874DCD341 /* Unit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4815C38AF6C2FD23A9E98263CAFC071E /* Unit.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D396D428896CA61E2301A747EE5708F /* RCTPropsAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 07248FECF4EA760047A9A71945D1E7E2 /* RCTPropsAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D43A9F582531A23BE6A6D1DC895F52E /* Touch.h in Headers */ = {isa = PBXBuildFile; fileRef = B711337B1DBE8FDF8CF854026E0D14C1 /* Touch.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D74FE5F1E9448343E13242159F63F6C /* RCTAlertController.mm in Sources */ = {isa = PBXBuildFile; fileRef = D5F538BF3285BAC9B7F01B8E674355D6 /* RCTAlertController.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 0D98617995EAA61C68C93966586EC450 /* SocketFastOpen.h in Headers */ = {isa = PBXBuildFile; fileRef = C042000B32A98F9B8FE68F105D95B8D4 /* SocketFastOpen.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D9B0AA50FE453B74124CA01912B4B7C /* Try-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 77B99168E6021298797F07B5B41C5A77 /* Try-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0DB74DB42DFB69580318D842D74E803C /* RCTMessageThread.mm in Sources */ = {isa = PBXBuildFile; fileRef = 78B7DDD1D6B4E8239B45FF43C990D36E /* RCTMessageThread.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0DE685BA8A37536FD089DCCA1AEADA20 /* JSModulesUnbundle.h in Headers */ = {isa = PBXBuildFile; fileRef = D37C2939F3CFD83C906796976DC6425E /* JSModulesUnbundle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E25FDA99228EB53935D4EFF113CEA15 /* RCTCxxUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = B96DBA623627412849117547371D9FEC /* RCTCxxUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0E3B2C94F912663229BBBB5B4D6303A7 /* RCTWebSocketExecutor.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3A27AAA848CC83E397DC39A9E46B682 /* RCTWebSocketExecutor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 0E5654A31BD89F81B5627D63B794AAD3 /* RCTTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 52350E9ADA2301F7191C925F1DCDD5BE /* RCTTouchHandler.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0E58F200670891AE6FB10861BC1EEE46 /* React-RCTAnimation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 089961A4AC420F0D1B51AF0717493120 /* React-RCTAnimation-dummy.m */; }; 0E616E8FB2D3D470F8965D0D1A975DDC /* Comparison.h in Headers */ = {isa = PBXBuildFile; fileRef = F3822D806026A4FCC42B9B6C3AD50045 /* Comparison.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E62F29B3D5442BFEE2027D69162BDF7 /* ExceptionWrapper-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E639F57C80F20E749E4AAA4336E32B /* ExceptionWrapper-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E7C77866A73091BD1A36B2228ABD0FB /* ParagraphComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E725BADB6EC401BE33F493BD4BE2793 /* ParagraphComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E80F9F0507C7BEE0E643E3ACA26DF38 /* CalculateLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E1BDFFD718B2082F582FF8627388E098 /* CalculateLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E9F6325DB8475265B002F1E7FD69D5B /* RCTComponentViewDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED440A6B8C1D4FBA39CD54ECE8D51F3 /* RCTComponentViewDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0ECBB2631A8B65825964451B921BF5DB /* Foreach.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB864487EEC16CB2CBD3A5CA275FCA1 /* Foreach.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0EEB24CECB61AF303B67DD51759484C6 /* RCTDevSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7DB6E20FB18E511B8C98C3656B364612 /* RCTDevSettings.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 0F16C97260095D02DE5415B6AC67D505 /* Overflow.h in Headers */ = {isa = PBXBuildFile; fileRef = EC5F5A9DB399E74A3B0F0CDEE200B40E /* Overflow.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F406AD78F915630431DD8A720AEC4D7 /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = F336A6F8A52B443F471C3A212D86DC43 /* cached-powers.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 0F50D5BEC1F259C0536E804EDFA6AC86 /* RCTDynamicTypeRamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C5791AD6F4A42E6F15A4AE3E13672C9 /* RCTDynamicTypeRamp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F9E6E4C19935E040E25D1CF43DF474E /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 776D1F938E2ED7503BB26ACB324E4DF9 /* State.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0FB25A9F0783B7F60859244B80A341AE /* RCTSafeAreaView.m in Sources */ = {isa = PBXBuildFile; fileRef = D63DB3EEA2658569FE4F58A50743B58C /* RCTSafeAreaView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 0FBE1DE34BDFE9B0C85542DEB581D4B6 /* BaseTextShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D0CA4B3C631CF1CCBBF61F2587F57B7 /* BaseTextShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 0FD8067209C57B8F29919B037BC1ADCE /* RCTDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = A956484ABC9353D13F5C213DFF6F76A7 /* RCTDecayAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0FEE31C3F9AD01261144C17B9456649D /* CString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AFE8F048924F7A8798499375AA68271 /* CString.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 103B71140476A7F2EF9149C840F969BC /* RCTTypedModuleConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 0741545417754F6F394479EDADE0B5F6 /* RCTTypedModuleConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 103C9C846673585F643489F5844C7873 /* SRURLUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 11168BD52EB1FA983258A217EBF918E9 /* SRURLUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; 106F3109E3A54C7F0C67DABAFAD2B5A0 /* RuntimeScheduler_Legacy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2E26EF832C651D9123567DC1E118CA8 /* RuntimeScheduler_Legacy.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 10C16DE5DAD1B3D65FCED627DA9BA6F2 /* RCTUIManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F9E3E83E4B4A307A114208C3D1F55BC8 /* RCTUIManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10C999C6FFE831B0F4E754627171AC0F /* RCTImagePlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F2B8A9CA2FD124CEED393804E7351A /* RCTImagePlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10CFBCB29BE411B25B987B73CFF4B18D /* ParagraphShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA655BCC979429F0F18E3B0FA7422BD /* ParagraphShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10D706F48F81D0DA3FBD346730A27F9C /* PhysicalEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = D2F955F57435151EED343EB06358A2A7 /* PhysicalEdge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10FD9B5E858AB7024274775682AFD14B /* instrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = B87758E567704381060EF12FB7B025AB /* instrumentation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11116B560FB8DB7A5F736E5E8C11301B /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C67AC080A782225408DA978D1DA4CA /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1161007E9F6AE05B1C1F1911C7E44E76 /* ToAscii.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 354A705EB660FEBF388788D956A9E58A /* ToAscii.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 117CFBAF2F3D6DA74F906DB824DBA6A0 /* AtomicNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 357C89461C2B2C6319BF4ADE3900971C /* AtomicNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11AB7A2E0F4DA784CFD4F91F3B078693 /* SafeAssert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2DA18CEB3A1B39D6DEFDA830C70B7AE /* SafeAssert.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 11B0E7FB7ECA7915B7A9BE59DEAE0A2C /* RCTDeviceInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3B03D90250BBDC20A58910E9BAE12F13 /* RCTDeviceInfo.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 11CDCB576F0B65DE17497B576F58EAE2 /* BaseTextShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D6775356C3C08E3F8AEEA4E5D9A9A05 /* BaseTextShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11D8A53B5669E71051AED58511A1202D /* RCTUIManagerUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 1749F4295539F83F4BA4637FE2C39F34 /* RCTUIManagerUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 11DF589DF2952480FDAADA363B846A8C /* RCTComponentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 49C8ED14DB40A8E3E597CC83FDA19B4B /* RCTComponentData.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 11E23CE507B474D1E3C4F5B07071F93B /* CheckedMath.h in Headers */ = {isa = PBXBuildFile; fileRef = B83DFBC0279E4DF8CFA602D622946926 /* CheckedMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12059A7AC3C0621F11193E23732E1819 /* SRIOConsumerPool.h in Headers */ = {isa = PBXBuildFile; fileRef = AD29B45C17572843FBF6146FD5BF87E6 /* SRIOConsumerPool.h */; settings = {ATTRIBUTES = (Project, ); }; }; 120634F36CBAC662040FA4FADC964386 /* RCTUIImageViewAnimated.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB8ABBAD57F26EF6E656FCE9B68DB2F2 /* RCTUIImageViewAnimated.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 124EE25B6A65DBC1926C13C9CC91C6E1 /* RCTPlatformColorUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F98C396019C17AFAC2E6514744534845 /* RCTPlatformColorUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 126FD381EC013EB7F76745BF6B3959FF /* AtFork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFAEF578C155F412D05E26AF9E63C602 /* AtFork.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 12731EBF39779BB1E177B701949AD2C2 /* RCTTransformAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BD826EA734516D956DB671826DED506 /* RCTTransformAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12B3909CB415E47E8826B5999B035007 /* LayoutPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B840D20BFE171BE3DD9DFE4EC33AC0 /* LayoutPrimitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12DFBB4643EF49D0656128B8F983CD6F /* Unit.h in Headers */ = {isa = PBXBuildFile; fileRef = EA4EE4C6FAFA0A824AFDB30A96D0C144 /* Unit.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12F481159DC1895DF2BC2595AF7AF275 /* RCTLocalizationProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = C488747CC15D138B30ADB8E498B04FF4 /* RCTLocalizationProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 12F715ECB2D5A07ABA04F56405B1F80E /* json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F91CC1CB5BBFE630F1A219C0EDA145B9 /* json.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 1304FE75578CCF44D9049CCEFCDB04D9 /* ShadowViewMutation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AEAEA20EE165C0C9C90A2B2BDD3C21A /* ShadowViewMutation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1315D3EE3476373DEAB746B56511B323 /* InspectorInterfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35645CAF1F9339B964422D6014D3FB62 /* InspectorInterfaces.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 132ABB496BA53BC8084D9FE272A010D3 /* Uri-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = FB0002CFA1F991284A466F64F3CDD670 /* Uri-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 132E187EFE1E47ADD957A700284D6D9F /* RCTAccessibilityManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D7C4A3E62FB0FF7DF9D127631B944B1 /* RCTAccessibilityManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 132EA906D184846F30461FF9D8FFC75D /* RCTComponentViewHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 287D6D149E8F946A10D3DCE0418FB1FC /* RCTComponentViewHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13372D98CE8D776E176F54A38E8E6C22 /* UnrollUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C8868803CE5E240AD3BBEBB15555C0F /* UnrollUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 134F41DF984A58A9AF39A8C4B87BA130 /* RCTAppState.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A3132932FB8BCA22D8C2EB34C0BA27 /* RCTAppState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13635F0130E1586FD24F72C56AD22D62 /* RunLoopObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE02C2175E3E663763ADD7A4613D0103 /* RunLoopObserver.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 1366F04C5590C425BB77826538FFC333 /* RCTUIUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 568619787B3509509A5FFEA27285F968 /* RCTUIUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13691F404B16F303025DBD6AB3558377 /* React-debug-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 751490A9CC81CC3D1FD6DE9D1A2309B0 /* React-debug-dummy.m */; }; 14188338839347D37D80C598C0E5748C /* DoubleConversion-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C32920036DAE3C20F1840181BC975BDA /* DoubleConversion-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1432E3A16B74C9650C19792CD18E8B4E /* LegacyUIManagerConstantsProviderBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 090C56DE791731685F76F2010E681C1E /* LegacyUIManagerConstantsProviderBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 146AB77B241BF6C67DBDD63E5634067A /* RCTViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = A2237CD09A4316F9776CDCDA5907FAF5 /* RCTViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1478022575B1D58411C818595E989892 /* SRPinningSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A4D45A1805126ED1CD25C84B4FFE9C2 /* SRPinningSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14A2A5FBA6070AC7E7320E8DA534901D /* RCTAnimationDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 109F9C2934C9D047C914A988E8DFBBA6 /* RCTAnimationDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14D3C20765AA5165E7881E50B9491268 /* RCTInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 16F3181ABDCFFB13D360DA6C3047FC89 /* RCTInstance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 151E1345EEB4F94B1CDF454826A8A392 /* Malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B9CC2B87AA979A0CE226E57B8BE306A7 /* Malloc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 152D661D4E78EFAF951BEEEC25294B04 /* TurboModuleBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA88CD24C578A8D699BEE467905F247 /* TurboModuleBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1590F8C4A09BF6B5279331EA10DCD463 /* StaticSingletonManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8A1AA2067618E92E2DC37877060EA1 /* StaticSingletonManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15A01C98D01F5E8CF5667E215EC11869 /* RCTAdditionAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAEBDA32E972C2DD6BC87FC03C2F7B79 /* RCTAdditionAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 15D2AA86AE351CD34C4884281F78EAC1 /* PositionType.h in Headers */ = {isa = PBXBuildFile; fileRef = DA12408D51CF845CE9C49609B11D2C6D /* PositionType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15FEAC3E79CD8CAA28028308AEFFB10E /* RCTDeprecation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB252110B7F6302C421C46ADF22A0BD /* RCTDeprecation-dummy.m */; }; 1615048D674C53EC2FE5B6B09AB39742 /* SimpleThreadSafeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 20DB7A7891E6EF51C69DA252EF43EE25 /* SimpleThreadSafeCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 164466B28EEB0ABA1B7B4750EA02412A /* RCTObjectAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 717D5148DA07668AC04A61F52407FF5A /* RCTObjectAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 166EFABABADB56EE0ADEED83DF8BD9FF /* React-RCTBlob-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B041282BB6E0CD0755E03B990F035982 /* React-RCTBlob-dummy.m */; }; 1671FF1B0ECF02D1CEEA5C6BC8BD0545 /* ConcurrentSkipList.h in Headers */ = {isa = PBXBuildFile; fileRef = CB027A92361F7CF889CAB836E490C149 /* ConcurrentSkipList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 16769F3466BB96E91499BDFF33A8DFB0 /* RCTSurfacePresenterBridgeAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD2869F37A6F486F8994AEF1E2A9E0D4 /* RCTSurfacePresenterBridgeAdapter.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 169D881DA6F98A74ADBAB85239E51495 /* StateUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56D34A45C0AD73CC42339EC6A2CA028E /* StateUpdate.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 16B0FFD3A9EB7A8C3CA7E201D4471911 /* UninitializedMemoryHacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD30C23A0277639DFBEA7BDEC6DFEE3 /* UninitializedMemoryHacks.h */; settings = {ATTRIBUTES = (Project, ); }; }; 16C786D254AC4BB415F78C7E14E32E91 /* Direction.h in Headers */ = {isa = PBXBuildFile; fileRef = A27676D6AF709B183CC889284CE2B3D1 /* Direction.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1720823FC59E390B74A878DE97477C35 /* SmallLocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CCBE13D47A90960E21168709D81A256 /* SmallLocks.h */; settings = {ATTRIBUTES = (Project, ); }; }; 173E5B38A957B127E5311171245424B2 /* ExecutionContextManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90CE57248719DB1AD38AECFB8A66AF11 /* ExecutionContextManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 1742C4E8AB7ED1A6739FA6689AA3DE2A /* RCTSinglelineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 70FD25025D88D2C467D14135D309D155 /* RCTSinglelineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 176B697FC865093156BE99FD2E26E832 /* RCTBackedTextInputDelegateAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6316526F1CBE0396E9767EDFD35C9870 /* RCTBackedTextInputDelegateAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 177DA7AB540346CDB555B61232F0C1EF /* JSIExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 80C0E79E7C53BAA868A44B3B53AEDC66 /* JSIExecutor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 177DC996D972A1F1AA6BC586B8A468A7 /* RCTConvert+Text.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B62C6CE9D343C56E332C5816AC631E6 /* RCTConvert+Text.h */; settings = {ATTRIBUTES = (Project, ); }; }; 17A413B902A05FF7C8FFA29FF67C8484 /* RCTRedBoxExtraDataViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D5CD2B433F8011D807EABA3442374E7 /* RCTRedBoxExtraDataViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 17E53719BE7C9DAA239E3684B393CA6B /* RCTDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = E590E42E80DFE90E35C644EC5BA97D77 /* RCTDisplayLink.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 1870A74C16D312C74C2956A5EDBFFA89 /* react_native_assert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DEFDBFF0494ECD44CD200BB0D4A18A33 /* react_native_assert.cpp */; }; 18D0C52BFC98BED39B1BA61AEEEE42BA /* RCTPropsAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 07248FECF4EA760047A9A71945D1E7E2 /* RCTPropsAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 18F1DA5B651DC6FF50C4B7D1A14C844C /* PlatformTimerRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C7F9675F0DDF7D607F4527AEEA7CE9A /* PlatformTimerRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 191AF4701921B0FFF6BBFE9DEA53594C /* SRURLUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = BA4DC46A209C68A22450F45E72C9E535 /* SRURLUtilities.m */; }; 1954536D05D0919B8EBF384663613170 /* RCTLogBox.mm in Sources */ = {isa = PBXBuildFile; fileRef = AD4FFB5F1B30B5584201585D67221D38 /* RCTLogBox.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 198422DED4D172D61EEF24D51F0C90FC /* F14Set.h in Headers */ = {isa = PBXBuildFile; fileRef = 27DB05F6CB39113BE10AD3A747787E40 /* F14Set.h */; settings = {ATTRIBUTES = (Project, ); }; }; 198A3B5F43844F6B78F0A7BC96A9EDE7 /* RCTParagraphComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350583A27DECF7088A05CC2259BE2E98 /* RCTParagraphComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 19965E9C8B6A83E60822324223B9E1A0 /* RCTStatusBarManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99F1158A135CC58252D861686496E8DE /* RCTStatusBarManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 19B38D8BECB8D7FA1BC251ACA2144990 /* componentNameByReactViewName.h in Headers */ = {isa = PBXBuildFile; fileRef = F0DF8AFAE1CBEF65355E92467584E4A5 /* componentNameByReactViewName.h */; settings = {ATTRIBUTES = (Project, ); }; }; 19CA3B1362DA1810EFB9E88C070B0610 /* RCTFileRequestHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6424FC955FE5FD23D675EE7BA5D86749 /* RCTFileRequestHandler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 1A11A9EE8F446EA3A8B0E39CA71A4BDB /* TypeList.h in Headers */ = {isa = PBXBuildFile; fileRef = D5266C5C2A1441F787E4EAA90B9166DA /* TypeList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A4E0BB39256B618590C38FE0F367BE7 /* TextShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D0C7E3FC36DCB52EB03EDF13AE747FE /* TextShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 1AA0576DF9AF85EFA7E299D94B5C3B82 /* MapBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 020982AF78C5E396F3E5F3B1DAB98A95 /* MapBuffer.cpp */; }; 1AF039E7B9A51980BFD84F7F156D0F30 /* RawPropsPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = F56A35A5E128A460F52E75B7F79344AC /* RawPropsPrimitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1AF45C2BB51683947FDF5F457C5EB8C4 /* RCTNetworkTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 91DEEA05C7FC3B3FE85F51D16F0060A1 /* RCTNetworkTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B2038C09720EE3EF41A25166979A55C /* RCTImageStoreManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 682FB404BC26FD7A5CE7722DC28CA1D9 /* RCTImageStoreManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 1B502CFAD551B4D4392A0BADFBBEF25B /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 91CE745FCDC2F917FBFE8E7C44B21638 /* sv.lproj */; }; 1B8A83B4760FD4C5BA61A514D66A63CD /* RCTActivityIndicatorViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 017AAA982C6D59AF8E6BE61915541DEC /* RCTActivityIndicatorViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1BAC799EDE2AC6356058F9873FD0E453 /* RCTInputAccessoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B510656AC02DF313FD0F8F0C11489FC /* RCTInputAccessoryView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1BC18889A0F8309C58DCAE6525184FC0 /* RCTShadowView+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CF6A928C7A982274E5574B81E88B799B /* RCTShadowView+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1C27E39EC5320E65D9EEF37CF24927BC /* Syslog.h in Headers */ = {isa = PBXBuildFile; fileRef = C3A48141C5DA78A08DB8A2E1D30AB6D9 /* Syslog.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1C2B9AB0D768A8AAE37CD8D81A4577FE /* TextShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 34DB7C7BB2A350937253113F587A18E4 /* TextShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1C834508104A30A18F88CF2096F4D027 /* Pid.h in Headers */ = {isa = PBXBuildFile; fileRef = FADAE66E358428988B767C2AAC5E2119 /* Pid.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1CC5C347C1A6FBFC24DD8F7BB59F94FE /* RCTBlobManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 181D4079537F9E8B578405C805CEE545 /* RCTBlobManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1CE20D629F4DE5EA945C098144CC56E5 /* ShadowTreeRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 9621CF80D2D681568C8BCAB003EA22F2 /* ShadowTreeRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1CFA73658F87C10453EE47487DCC0B4E /* RCTBaseTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 21754846DD83D3794B287A3D6BB4DA9C /* RCTBaseTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1D24AD6815FB29F4B8A6C10D6E9101F8 /* RawProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 19D4CF0857B96FBEA270CC2CD46B424F /* RawProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1D3F9F242ECCE36DDFD697B08B9C28E2 /* RCTImageResponseObserverProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7ACDCCE812E169B5C2EE32A4A130D907 /* RCTImageResponseObserverProxy.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1D460FFC60AA03A2D4A41BB9313212B7 /* RCTRedBoxSetEnabled.m in Sources */ = {isa = PBXBuildFile; fileRef = FBC253E87364123EF03ADC474B7364C8 /* RCTRedBoxSetEnabled.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 1D65FAC0B4EB638F3549891915706680 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B97F33E9BF0E6E5FD86B0667D950EEC9 /* de.lproj */; }; 1D8DF82EA7134E0A0C27D629500846B9 /* StyleLength.h in Headers */ = {isa = PBXBuildFile; fileRef = C1761C0EF012288CCBB296F26485316A /* StyleLength.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DAE56A42C6E37928F1FFEB77BF3DC83 /* RCTBridgeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E589066D508A38B86B7F0F4BC726DB0 /* RCTBridgeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DAE7679F73905E15A400EAA0352004A /* Expected.h in Headers */ = {isa = PBXBuildFile; fileRef = D869113E22557F357D518366520103CC /* Expected.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DB4BA71D203BAEC328D16B17FBD954D /* EventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A4AFB126642929BDB526E70B71748879 /* EventQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DD61B98236970129C72DC5F12F60FFC /* RCTUIImageViewAnimated.h in Headers */ = {isa = PBXBuildFile; fileRef = 23F1171EF1ED7FAD36769DFA9AE002FD /* RCTUIImageViewAnimated.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DF173C0F1800A149A77357F3C58CFDB /* RCTRootContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E9B6C8F56601C7A8963DC42032FDCD4 /* RCTRootContentView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 1DF1BB081174334B20F0576E3917DDFD /* RCTPerformanceLoggerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = BC22B5A34F36A3E0B23AF08AE83EE25D /* RCTPerformanceLoggerUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1E19E82F288E0354AF7A0C508DE61035 /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 42069F17D0B92E1DCE65D62807AAC0E8 /* RCTScrollContentShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 1E274E727DB799B01B0C75D68C9C1D4E /* FBReactNativeSpec-generated.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D50029B232140A61A9034E9BCCA51BB /* FBReactNativeSpec-generated.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -Wno-nullability-completeness -std=c++20"; }; }; 1E3B09D27ABE649167CCDD7BDED72012 /* color.h in Headers */ = {isa = PBXBuildFile; fileRef = B32465A7B304C55D416657F5078DC373 /* color.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1EC4F1FA41C153E536CF6B69DAB893B2 /* RCTSafeAreaViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = A46EE0867CB9E92996C6DE17ED0EE3DB /* RCTSafeAreaViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1EDC798E6DFC0A6D410C23283F368BB2 /* ValueFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9788F37552AF8A0A123A07FA7D080CFA /* ValueFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F147DA94B4631A7C3DFA6A200385A7F /* Error.h in Headers */ = {isa = PBXBuildFile; fileRef = F15F1FDA5B8172C6781AEDF956D65B0C /* Error.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F2F410A3DBB6D4DDF4AB78B2D20E7E1 /* propsConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = D8FE00B7A123C71C5F84EA661B962CBE /* propsConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F42FAE5D5775D8F7630EE666E17DB4B /* RCTComponentData.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D198038E6A0A8EAA233D9E57B97AC6 /* RCTComponentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F5DD61D863EF9D3FB7CF714C39251F7 /* RCTHost.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3AFC07867C7C0F7FA6437AB25AB2C0 /* RCTHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F72F587B6C3002E9497082BD1AA562D /* Align.h in Headers */ = {isa = PBXBuildFile; fileRef = 997B7B2A3CC26B9D704D7CB940D7E4C6 /* Align.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F8AEF1CE8B533F95A189E4023D12779 /* RangeSse42.h in Headers */ = {isa = PBXBuildFile; fileRef = 937EF872F9B051F189B72F49D8D54CAD /* RangeSse42.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1FAE05CEA6EEBE5C78C774D3210A258B /* OpenSSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E748C5FBED7C0C756FC4C4A6B5C2E8C /* OpenSSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2000672F833DFA37DD8CB7BEAFCCF66F /* RCTColorAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 991E213D38BB44AE5C3367DDE4A4D4D8 /* RCTColorAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2001CC4F61119A2ACAC4E1B9519A91F5 /* SRLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C0FAA307377663772FDCD8EEA4D9752 /* SRLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; 201B4E5253766941A6453DBDAEBB5A7B /* Badge.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BD78C8466D2DAC22B989C5EFC592BAD /* Badge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 20AA75C455914560C441E1A6A7AB2FBE /* React-CoreModules-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 51FCC6E2D2922D4288A83D114839FF83 /* React-CoreModules-dummy.m */; }; 20BB7CDCC08AFE49FE5BDA569D34CA7F /* RCTKeyboardObserver.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED075D1904D8F2A132AD09A4B59B2BE9 /* RCTKeyboardObserver.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 20C78373363E4FE8FD4F47D5BA774E31 /* SharedMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11C43FEC006F4FB4810E35B57EDCC84B /* SharedMutex.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 20E7F16F71DC306F4B434967352405D8 /* RCTGIFImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B86E6473CEA7651AF56AB4A0DE22037C /* RCTGIFImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 20EAE28B44F5C9DE96EC1A6F88B62226 /* RCTInputAccessoryContentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E0E6784EF6FD3D1F4FC47BCD8E352359 /* RCTInputAccessoryContentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 20F2FB8C633B8AAF924B03661CAFFC73 /* RCTLinkingPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 03DD688F3EE201B455FF2DD77C7D1A1E /* RCTLinkingPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 20F4C041F77DE88B56616FB311D808D4 /* RCTSurfaceRootView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95FAFB9E62426C075E9E5E41D65333EB /* RCTSurfaceRootView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 2107303D3315D0F3426CECDA31262A67 /* JSIndexedRAMBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 005EE10ECBC2C2E6ED007588CF1B3163 /* JSIndexedRAMBundle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 21173C1FF076EA74CC2875A8451CD04B /* RCTInteropTurboModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = A4841C02742AC28A86287DBC07806A0E /* RCTInteropTurboModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2127F903E8B55484942293A05FD9C18B /* F14Set-fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EE92B6EF155BE970721A6B2647F4AF4 /* F14Set-fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; 21762E8D44EA510506E4F327D3288746 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C02361943CFC4D43BDE38DB0C69F197 /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2185C70869CA8F16DEF5598671117271 /* FMDatabasePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E6807903C30860853913241D16DBE5 /* FMDatabasePool.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; 21923AF5A501E8D2C01033B9DCACBBAE /* React-ImageManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDED2FDDA75EFFC4F049DF04CA2B0B69 /* React-ImageManager-dummy.m */; }; 219B3B01BD518584F2A89A722BCFD0DD /* RCTTextViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = FE4DF00236D3CFC9333AC4F2536AD07C /* RCTTextViewManager.mm */; }; 221CEE4476D0FB923A3FE36D579351FA /* RCTDevLoadingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C1BA5C7F7A59628950008F9375BF82 /* RCTDevLoadingView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 223B827459F291942AAB05E2A456B6AE /* NativeSemaphore.h in Headers */ = {isa = PBXBuildFile; fileRef = F138DB447C457AE8D0B432C87AB6D5C2 /* NativeSemaphore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 224015C78F407E1AF6FB0BFA6A88B60A /* SRPinningSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 63DB097D064EEC088A4DDB9A0F3030F8 /* SRPinningSecurityPolicy.m */; }; 22444A20481B3591CDC93BC0F4036A1D /* ConcreteComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A8338A74887E54877E3B5E2360A93D /* ConcreteComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 229229DAE6C3E28130FBD708A67CBC5F /* PointerHoverTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E177524AAB858045AD52E1FFD4C991A /* PointerHoverTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; 22C211E6B7DAF646E04306522824BBE2 /* protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 068DB205A59C74E3480D49B43B734439 /* protocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 22F46521658395591D46E6679AAA6E65 /* SafeAreaViewComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C897CCFDE4BF7130CDDA0286B966FDB /* SafeAreaViewComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 22F5D84C2EC3F910630272B7FC049205 /* RCTFileReaderModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 91946E0E55C67A006BFC6A09B6757F34 /* RCTFileReaderModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2302E49723D8DDAEDAE358344C4523DB /* IPAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = CFBAA91154D63D788000A507C872D157 /* IPAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; 231F95C755E8E42DA517D4818ACCAFB8 /* RCTRuntimeExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A75958C7177C6CC36B895D30E732E64 /* RCTRuntimeExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2325A82054865E3115D014BB158CE549 /* SafeAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 718D4D78E0BAE0CC2A7AE58A6FBEA36A /* SafeAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2333ED79527F4E5206C50DCF55A95D34 /* os.h in Headers */ = {isa = PBXBuildFile; fileRef = E8A80DDDD78CE9D5045965620EF601A1 /* os.h */; settings = {ATTRIBUTES = (Project, ); }; }; 237C8EB38A4DCFA780AD9A086456731B /* ThreadCachedInt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2E8DDEAB65BA26685A7F1CE66A6C2B /* ThreadCachedInt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2383735C57B2D47D561308E59910C80E /* DynamicPropsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 777152D60FDE62FB7858028E0F494386 /* DynamicPropsUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; 23EA4F6D2E5FC91C6D53D8806CEAB325 /* Byte.h in Headers */ = {isa = PBXBuildFile; fileRef = 63F5F0571EA83996B53E596BF37008E4 /* Byte.h */; settings = {ATTRIBUTES = (Project, ); }; }; 23FE66BD7B87FE4B286A4773B14F1309 /* ParkingLot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4DBF56470408F62F5CFC5811EC41C55 /* ParkingLot.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 244DF977A158213CCB43D4FB6CB90E3C /* RCTViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B47FFA4BCF0EC2E8F7A7330A0B625F7 /* RCTViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 244E92C5AC2F270708212D76276B1CC6 /* FBReactNativeSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 67659C3BADBA7BF553069160A417E2A0 /* FBReactNativeSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2458B50A7D8382C89BABA674C834A9EB /* React-NativeModulesApple-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F5340BCCBE419D365ECF7F577F67C2B /* React-NativeModulesApple-dummy.m */; }; 245A6AC43C8E566986398F8A0295848A /* RCTPlatform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 581AB95CD00868534D40A89FC7298A36 /* RCTPlatform.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 24688A1F5DA03AD255685CF282C0B45E /* RCTAnimatedImage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8612AE35A990235C979983FD304D7330 /* RCTAnimatedImage.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 24707196E335E65B5121B91C0FD70449 /* LayoutMetrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05E7D2C113326591CAF18117371EEF7E /* LayoutMetrics.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 247DEF303BC51C27870693F921CE4A24 /* Yoga.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BA4FB0F0557FD723CB5B38C308FCE50 /* Yoga.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24B93B8D464A1B7783F9BCFDD33A31D4 /* RCTResizeMode.h in Headers */ = {isa = PBXBuildFile; fileRef = D47708686F705FA831C439C1F56306F5 /* RCTResizeMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24DD942C54FA5B87253413913DD836E1 /* RCTViewRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A322F1AA7B7D88649BEF8224A0A6AC08 /* RCTViewRegistry.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 251D3DAD4CE4ACA70D08EBB9CBF9BB39 /* FloatOptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 7299BD666C1DD5C0DB7343D26EB7DFDA /* FloatOptional.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2521660EE10E01F259AC87F51E7A65C1 /* RCTDevLoadingViewSetEnabled.h in Headers */ = {isa = PBXBuildFile; fileRef = 166D6C41B0081CEA737676E813606B04 /* RCTDevLoadingViewSetEnabled.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2522833611E2F1484E7EDF975387F2B2 /* YGValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 30DD3B64FEFD7A1AB8A1EC8B9D52D87F /* YGValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 253A354FA00DA7358AB288F68EC5437C /* SysResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A063D0B84A8706BF9D36E052AFDCA4 /* SysResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 25D9A0F89FE35DB331D48EAEC035EC4D /* RCTRootComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DF3FB6417DB1CED9E5F8CF270DC9F6 /* RCTRootComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 25E65F9C1D8F402D822044446C5F4D76 /* RCTTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D702ACCFE3931509F2790C6E153783 /* RCTTouchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2613399F7C428BA43CA183A859DA8F36 /* SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 73F9F5B50A8454106AEB1EAA5892325D /* SRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 261839D1DF68DC4E17AFD60D0E7BEE61 /* Wrap.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA6A0AD322E97D31E8AB398E6F754C1 /* Wrap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2625B35CEAEFA1B0EA467965A3330311 /* RCTUITextView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E3438873735D5FAD55DAADE60C49CACC /* RCTUITextView.mm */; }; 2629FBFD880EC26BC47A0CBDE2C88230 /* ComponentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CB0D3B1D12723CB6F6A4B5A53775B4DC /* ComponentDescriptor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 268887F37656A49D32EE08CF5590DACC /* UIManagerCommitHook.h in Headers */ = {isa = PBXBuildFile; fileRef = 52271E0F8ED452014891F20BD4947CFF /* UIManagerCommitHook.h */; settings = {ATTRIBUTES = (Project, ); }; }; 26C1DCC87DD011BAEDB37B82B115865B /* RCTMultilineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AD43283A6A2C9FC3B3AFE6DCF2E636 /* RCTMultilineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 26D3F78DBA25B5DB3A22E10497AFF723 /* ImageManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A44876BED8E87761881D41D005CCA0E7 /* ImageManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 272FBEB7CB6CF2763CAC1A880569A587 /* NetOps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F671A2A4E4BD8E767A5A396E4793F09 /* NetOps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 27539AB858023E5C2410655150B37627 /* RCTModalHostView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC10C9531C237863B28A6E20B64DC15A /* RCTModalHostView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 27928D50D910F1E6A27AF06B64529EF2 /* RCTAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAE64CF21F806223D54976C43C7CA94B /* RCTAppDelegate.mm */; settings = {COMPILER_FLAGS = "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES"; }; }; 2795ACF267C2F8A23C4534D06B00D110 /* DefaultKeepAliveExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 23C5959A240F9A33D470E539FE162B9D /* DefaultKeepAliveExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27B66BEF2C02E1BF8A8DEFFF921C11B7 /* RCTLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 506E11C60093C5C364DE8F3F2F22AC41 /* RCTLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27BEF09F1B06C91F5C15ABC5294F5A05 /* Conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC611E2FF7C83C727ED3ABB22AE435FC /* Conv.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 28420DE9D152356E2FAB7532421804A5 /* RCTPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = C60F31851CF169CE81AA452AA4663164 /* RCTPlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 28BAA972822F670D348FDBFC73AC77A5 /* RCTMultiplicationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F28A2D4EC3F7FA5178A446213C416F6C /* RCTMultiplicationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 28CA6DD3D240C72630DDA20DEA46F245 /* RCTAppState.mm in Sources */ = {isa = PBXBuildFile; fileRef = D3897A8D57FA7C5B759902F2D3CEA752 /* RCTAppState.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 28DB4C2B675C293F97E5441914BE3302 /* ThreadName.h in Headers */ = {isa = PBXBuildFile; fileRef = 36EDA6F605E6CEF5F9A72D38C0AA3DED /* ThreadName.h */; settings = {ATTRIBUTES = (Project, ); }; }; 28FA21EE52C9E18188C59298BB5C9B23 /* RCTTextSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4162FD06F15F97900434A78640AA96 /* RCTTextSelection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2923AE58E9BBFBF24388EB12E31A6DB3 /* NSRunLoop+SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = DD33EAFFA1FBDE7A2DA696E03388F6CA /* NSRunLoop+SRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2967A53F795C03EF89E6805B44D8D826 /* UnimplementedViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 459B7A62CD1A78C3B1D3BA7499CB76CD /* UnimplementedViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 296D94DA561C3E641394E251DB57CE49 /* RunLoopObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C5E9B3E860020EB74A5A0DCB92E545F /* RunLoopObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 29B62250F780EFA539F4D51E6F2C95F7 /* ViewEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = E55A5082F7AD7430141AC089256155B4 /* ViewEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A190325244F59D848E634FE42885204 /* ImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 51582CF5BC4E40FAA616B6363DF4B4A5 /* ImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A1E984533FFF0761823C77A5EF8C986 /* RCTSurface.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9A909CE9BFF1F0B380221FDEE11D0211 /* RCTSurface.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 2A222BEC97B97591ACBD51C9F00E4921 /* FlexLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C0C34C914DB0E6E56880987BB5F0AC /* FlexLine.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A348AB502AECDE1C672786CC3B55C27 /* RCTTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 289131589CCC21FDAAADD8DA0E1EA4A5 /* RCTTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A3DF91AE6FF101059F589E7310AC371 /* Singleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CD21C661338CF76FD714E4819D0BEF /* Singleton.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A43229C2CBF5932A43C13CAE64EB114 /* RCTTextInputComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7BB8BEE774754AA2ABA4E7FE98E101 /* RCTTextInputComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A4E5E0880C9929B370D1941E5AE5F26 /* RCTInspectorPackagerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CAE7021D6D8066FCD1D39076F4A85C1 /* RCTInspectorPackagerConnection.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 2A63D2E0528E66779F46F18FC17AA6E5 /* RCTPLTag.h in Headers */ = {isa = PBXBuildFile; fileRef = D6AA075D0670043A067B8F82481DEBA1 /* RCTPLTag.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2AD655BCAFC873B439DC03D772B7A36A /* RCTDivisionAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18590B13A8701CBEA8A9383645C889B3 /* RCTDivisionAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 2ADAF88BF204658BFDA47A99DB5763B2 /* React-RCTAppDelegate-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D958FC3ECB59DEF56F7A316CFF3FE5E5 /* React-RCTAppDelegate-dummy.m */; }; 2AF8AFC12AED081CCB827E74F6E3CEC2 /* ConcurrentBitSet.h in Headers */ = {isa = PBXBuildFile; fileRef = EFCF80831E029EAC9ECFEDFA8C0B0BE9 /* ConcurrentBitSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2AFADA9C8F0B22CDC7A0E2963AEC6AA8 /* RCTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = A0F0DECC4F2AEFAABCD0C3A4F368C487 /* RCTVersion.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 2B053AF14B09FFD6105A38AD87C405FD /* RCTInputAccessoryComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = B357588581A44158631A618472611CF2 /* RCTInputAccessoryComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B1BCED5F526FBDAFE483AA8FD111456 /* RCTSafeAreaViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB971ED75CA1674F0FAAC4500BBC50A4 /* RCTSafeAreaViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 2B2385A1AF00F0FDC4EA1268BA76A6AA /* RCTImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6A2A0A084F0C30F0774529E7FC9E72 /* RCTImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2BC999AB42C3CA0A9E306051F16E41CD /* ReactPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = E9D85EEAF42C9AF3CC1666F33CF872DD /* ReactPrimitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2BEBCE047AD0091EBD66305D11F06EFA /* EventLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADB11086CA7355EACB08F3BD428C0A9 /* EventLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C1991F1D309596566A8060D4AA46B58 /* not_null.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FFA741A8EC26DD612783B14F5682ED2 /* not_null.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C292D5C62AC937B09A50BC0EC271A81 /* ParagraphState.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E9BBBEFDC785C048DDEF9EA28FFED5 /* ParagraphState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C4DEC5C31C3B5E06A279A46A34A39F5 /* RCTComponentViewHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F8025E613E68EA6B0C75074A74BB97E4 /* RCTComponentViewHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C6B6C20776A6BA94A3FE6306DBB60C0 /* TurboModuleUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 75F4E00A45E47775648B3C5AE641D5F7 /* TurboModuleUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C7A4437740961E1B2EE201D045F8382 /* LayoutAnimationStatusDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F481D215714FD018CDA8C79540DDC6A8 /* LayoutAnimationStatusDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C9A212BEA5B7429E6A978943ED1DAAF /* zh-Hant-HK.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6F72B3F616F35DD1A397AD34A9471C80 /* zh-Hant-HK.lproj */; }; 2C9BA5A633348EFCD5CA2A7608673BFC /* vlog_is_on.h in Headers */ = {isa = PBXBuildFile; fileRef = FCFD99083FD714E25C32912BE07EEE2F /* vlog_is_on.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2CB63483AD5282D53115DA088A6D936A /* raw_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = B797800645D9DCAD28A63367CF4B5E31 /* raw_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2CD12789B7555CCDC42A8F96829434FD /* RCTMultilineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B1D50AB670D1ED574D945561008297 /* RCTMultilineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2CF8933910674BAB9196E42A6AF7938B /* Thunk.h in Headers */ = {isa = PBXBuildFile; fileRef = ED92914EB3DF6C80AB5B7CF1AF9F3EE4 /* Thunk.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D6D394C37329EFADEA4DD715151AE40 /* StaticConst.h in Headers */ = {isa = PBXBuildFile; fileRef = F8ECC27DA5BDBC6D1C55FD6C21B19E9B /* StaticConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E0021D5DBD9D49FE9F15EF491CCC73E /* RCTAlertManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 59FDF98892BF9744DCB3D5402C366923 /* RCTAlertManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E561E90748578416A9EE5CB139792AF /* RCTMultiplicationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F28A2D4EC3F7FA5178A446213C416F6C /* RCTMultiplicationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E73C529F9D90E24C3A1865022C1349F /* SRRandom.m in Sources */ = {isa = PBXBuildFile; fileRef = CD0C06BAC55CB15F45E71416B7D4DA0E /* SRRandom.m */; }; 2E9BC3BAD893393322285BF3C0382710 /* BatchedEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12C4D9C3A09316945470A899D769DF18 /* BatchedEventQueue.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2EA1CF569CEB1BE9F7565DA20EAA2F3E /* YogaStylableProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C99F752EEC9741F33EED362076074BF /* YogaStylableProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 2EC9DAE8AF8C81A439BBA1420CAA95F3 /* RCTFrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 33FBAF4A2C505DEA7624E5FE6146C7CB /* RCTFrameAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2EF5DEA6EC39762BEF76A15B2340FABD /* ParagraphEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AC1448E3360F6A62DEB6D6BE3EACB26A /* ParagraphEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 2F026ED16EAEA90F157701D8481A9FAB /* HostPlatformColor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 608A42FC636CC123077F86095300FDD8 /* HostPlatformColor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2F4A50C76937BDC8C6EF040478E22619 /* ViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 318D26E55C7F26B32EFB91A5243FBAF8 /* ViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F88D219CCD7E3E739539945E990B622 /* RangeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B4291E3436CE7DD23B4E403E8E8B12D /* RangeCommon.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F92EFDA8334261165D9729751EBCBD2 /* JSExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = C3D78A44188C6EFED4F1A257A66CB85A /* JSExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F97D1B13BB188BE85AE78B1463C1511 /* RCTBlobPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB0389666D3316FBF79F7AA176DAC97 /* RCTBlobPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FA26988350A7C7DDD412B7D17AFAA4F /* RCTBridgeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF790ECD36E6DBEB706E9E072597102 /* RCTBridgeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FA70C774952798EBD8ECDFAAE8D0EF1 /* SynchronousEventBeat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 651A43C1D1C89E7F8CBDD08B496E2160 /* SynchronousEventBeat.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 2FF0092F74C6CF1ABAD0EEE5E9B7DCE2 /* Preprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DD488FCCA9EEDD9B68B8F99D105C44A /* Preprocessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 301CA9266A52873F320B63EF2A8DFB4B /* bignum.h in Headers */ = {isa = PBXBuildFile; fileRef = 555499AEC258DE52284D569572113A79 /* bignum.h */; settings = {ATTRIBUTES = (Project, ); }; }; 301CDABF3FD039547D92DBDB38996953 /* RCTRawTextShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 586843BE182EC40BA0F3E64B3128724F /* RCTRawTextShadowView.mm */; }; 302E01399CB39F9CFCA096F494FD609D /* WeightedEvictingCacheMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB19BE6FA86208CB5F4A61FAACE298E /* WeightedEvictingCacheMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3034E6F4E05DA159043F7E5065071557 /* RCTLocalAssetImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 14631AAC5EAA775CD7C68A1D2E2D51C0 /* RCTLocalAssetImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 30423632D5CB339BCC2AD8432337F83C /* SimdAnyOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 769BAEE9C92AEEA6A5C4C98AE6FFBD88 /* SimdAnyOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; 309E25F08B621B5EBE7BF0494CC68190 /* CpuId.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B548A2C55831264828B2298FF825B1 /* CpuId.h */; settings = {ATTRIBUTES = (Project, ); }; }; 30B45DCAC90068BB83348CA5902B8A53 /* Math.h in Headers */ = {isa = PBXBuildFile; fileRef = E5745DFD5BE516C91A82DD1988970E10 /* Math.h */; settings = {ATTRIBUTES = (Project, ); }; }; 30CA335AA5FDC7D5427E29AE12CB3DA4 /* RCTVirtualTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B0A85C6C1A686DD387938C318B3E03 /* RCTVirtualTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 30E5FD6C28B6DDE9382A00324EB0123E /* ConcurrentSkipList-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DCF6A50893A882EA7E8F44D10AD971D /* ConcurrentSkipList-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3105C7328DF6EBCA7C0B524D18848E9D /* ShadowNodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C48A5DDAEDABFF1B422CC636928EFAD /* ShadowNodes.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 31210B5DC141C8A8CD84829A977225C2 /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE4F352241E750994254CACB3900290C /* Exception.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 314196735F72AAC0DE94ED28828A924B /* RCTFontProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 19853EBFDCA4264503A59B9DBEDB47E4 /* RCTFontProperties.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31519DE72E79DF61D9D2A39A29C69147 /* AtomicRef.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6B8699949BC42E05A2CD3F716AFC65 /* AtomicRef.h */; settings = {ATTRIBUTES = (Project, ); }; }; 317D8B85EE8D4F5553A959EF2A083728 /* ReactInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D82A92B30EAD44574D7D78331C054CBF /* ReactInstance.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 31B704DBFBD9861E5B16E4F568E5463C /* HostPlatformViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E432DBE0F06DDCE804C5D453ED121C3 /* HostPlatformViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31D4FC1E4131A0B940E87016B5558AE4 /* GLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CEDA3FBCCC6D4495CE2BD141F7EA3B2 /* GLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31D8AC65D15BA8248DF32ACB02B0F785 /* TextComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D7520FE4D76AC547890B7D6B4C69894 /* TextComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31E564ED4FF70E455D56A3FE8E642B7E /* Partial.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E851596D4A5EE743DC493671DB9DA3 /* Partial.h */; settings = {ATTRIBUTES = (Project, ); }; }; 32122892A762CA325502454526E788E3 /* SocketRocket.h in Headers */ = {isa = PBXBuildFile; fileRef = C9FA2111792B3263822E75649BD66902 /* SocketRocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3214D80F9DED151E3F561609B66C7646 /* RCTDisplayWeakRefreshable.h in Headers */ = {isa = PBXBuildFile; fileRef = EADB1A8E010B5CA7F0E6C4071A9DDA92 /* RCTDisplayWeakRefreshable.h */; settings = {ATTRIBUTES = (Project, ); }; }; 322902B35752EC592D5B4ED2C00D9393 /* RCTTransformAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5742CED06F824159A9F9C6FCDF8F66EB /* RCTTransformAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 324C443EB256ACB55C212834659DA668 /* RCTNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5181AFE5FC05B015D0F98EAB49991236 /* RCTNullability.h */; settings = {ATTRIBUTES = (Project, ); }; }; 324FCC0FF10B590AF07F730C94CD911D /* RCTUIManagerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = E52A7A09F41E9EADFAE686BE3A607CBD /* RCTUIManagerUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 327DA72CDC89A3215CE65582DE8EC3CE /* cached-powers.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A2D8939F820583ACA4B8154B63050D7 /* cached-powers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 32927DAF25802D1608CD1D24D72A329C /* Util.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD95BCA231BF7294B54BBBE1F7A43A2 /* Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; 32B14C8CE62B0F19D8FA1206C467111D /* YGEnums.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5510FC0409FF02AA7A39E8542D74B323 /* YGEnums.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 32BE4A83D48CA291030133CE99AEF6E2 /* ScrollViewEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E08D0C97050157936C9ACE4FAF61CA /* ScrollViewEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 32BEF79AE336EE5C0463C825D845D74E /* UIView+ComponentViewProtocol.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6ECE543138E064055C9EBCDC09788205 /* UIView+ComponentViewProtocol.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 32CB16366592B859A428ECFEFEEA5072 /* RuntimeAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75527CABA73184F431A0FFA3918A6D5B /* RuntimeAgent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 32D32237A0CEB8E068046F1CF42E4E8B /* WeakFamilyRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5676712895937C4B56B481AD3916DC06 /* WeakFamilyRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 32F2AB6A8644D4D1214F84733E66E464 /* NetOpsDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 07BDDD0C6666F54BB37E72A8F733FB50 /* NetOpsDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 334D66567F979838AB9768E9FAD7DAB5 /* RCTConvert+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 196B06D9D049A05D1552FD603A608719 /* RCTConvert+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 33752EEE3593427DDBA5D62BED59A543 /* RCTMultilineTextInputView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E0004F076A577E394A0CC4F9AEC7F57B /* RCTMultilineTextInputView.mm */; }; 33B60CFA904F8D641ECC43A55E9EAEAD /* SpookyHashV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 856575C5A576BBE72D1C55601F788145 /* SpookyHashV2.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 33B73F67E086D3670224498285D702A2 /* printf.h in Headers */ = {isa = PBXBuildFile; fileRef = 08986599EA9FB16EDB0C58CAC0A405F8 /* printf.h */; settings = {ATTRIBUTES = (Project, ); }; }; 33E2BFCBA5338082F01D9EB37BAA4D29 /* UIView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D5A0BFD941071680CCF747591837C8 /* UIView+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 33E4E54947FB17B702F1DCAFD7B9F03D /* Database-query.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C22873AF49E658011AF710A68003CFF7 /* Database-query.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; 34057EED3E16A361B64AECEADE8125C1 /* SanitizeAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E97DA6EC4EC14E2148BD7844BD1F3A3 /* SanitizeAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; 341E869680CA9F16E5C3EBA6C65F3509 /* UTF8String.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C2C2A0E994E59EC1C51CEF553541EF /* UTF8String.h */; settings = {ATTRIBUTES = (Project, ); }; }; 342D7CD1B93BDB714F8E4B9DFF918CA2 /* SchedulerToolbox.h in Headers */ = {isa = PBXBuildFile; fileRef = F2164B5DB3B104B55F7AEC0D7FC1AF24 /* SchedulerToolbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3438AB92F2ACE84B8CB6A8CFAF423105 /* RCTFrameAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = CADAFD82F38E6E1F5955E921DD980A8C /* RCTFrameAnimation.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 34773F2E8217FAD06A591CA37AA00855 /* RCTModuleData.h in Headers */ = {isa = PBXBuildFile; fileRef = B1F4D64B534E21B5E81E8A4107B004EE /* RCTModuleData.h */; settings = {ATTRIBUTES = (Project, ); }; }; 348A9EF3D088309F5869ABAC68FAF798 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F8D2287EF58ADD156913AF3C0FA5266 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3497C572885DBA4E24B62AC77F10BD16 /* ConstructorCallbackList.h in Headers */ = {isa = PBXBuildFile; fileRef = DD754522EEA5CC221FED5671228D41ED /* ConstructorCallbackList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34AE0A783C5465DB2FA5C2B7D50EECB3 /* RCTVibrationPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8FA3CC41DE47D337EEEC4F2523A5A366 /* RCTVibrationPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 34D59BC36C90C49E573199421B622923 /* RCTPerformanceLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6196FA4E5DE772F34B620947921AB6EF /* RCTPerformanceLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34D9E5CBB49C6023825590C930261A0B /* Value.h in Headers */ = {isa = PBXBuildFile; fileRef = E488A78562494C4DFA18485430C98C6D /* Value.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34DAAFB7B06B65259B6FECDA06AA3387 /* YGConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBD5986BF1B3B3D5B97CC5217DFE41D /* YGConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34E028B5C229E7B80E09BF21AA7F30F5 /* RCTSurfaceHostingProxyRootView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5C07CBA21F57FACAAB67EAB0200D145 /* RCTSurfaceHostingProxyRootView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 3538563AD434CBFA6C3567D5B59E20C3 /* RCTBackedTextInputViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FDD85087D17F29E409E05B785CAEF845 /* RCTBackedTextInputViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 35547761AFCB44BCA094A33F2AA23946 /* BufferedRuntimeExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8D501AFD4360EBEB5A66144AEC1729 /* BufferedRuntimeExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 357660135E7900222582CBEE62180032 /* YGValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E537D35052D701095C980ECF42D55AC4 /* YGValue.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 3593206D0F19D00262870E27E9D13872 /* YGMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ABE82ECFCA457CEA1122532AFFC13E1 /* YGMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; 35C6AD1DDC48BCD69B6A44257803179F /* utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = AA3A3C340B0E34E2DE91A75386812EC9 /* utilities.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 362390F52589F7931C2C6851393C3AF9 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5931C556E2652C0F4090A1106D4FEAD0 /* en.lproj */; }; 363C5BFDFA69F60D5FB8F4739D6D5315 /* RCTI18nUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 70EAB919380BCD43218C8BA42AA15E04 /* RCTI18nUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 36B786CEB46A9C3E458EE781044361D2 /* ScrollViewState.h in Headers */ = {isa = PBXBuildFile; fileRef = 60E4F60D2C2C4C8B7116D0D69FD78717 /* ScrollViewState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 36CBEE8C52A61FE395F052C9B267A290 /* NSRunLoop+SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 8176863C104CD771DDB717C9059C2ADE /* NSRunLoop+SRWebSocket.m */; }; 36F7E7BA67E5C0369DFC89F1ABB6F394 /* RCTLog.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4695EA457448E4B94A1CB1A54D7440C3 /* RCTLog.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 370E2940965694FD29FF3ADFCDE7A953 /* RCTUITextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B8426E288C9F4E8EADBFDB047F2B7941 /* RCTUITextField.h */; settings = {ATTRIBUTES = (Project, ); }; }; 372A6DE5D3A0C8A394F94769C9DDD521 /* RCTDevLoadingViewSetEnabled.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEB093EC638788E1D7EDFEC04D19432 /* RCTDevLoadingViewSetEnabled.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 374104F0C17176257605FDFEC67C537C /* AtomicStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BF4B17D357A3BD3840AF11EBE43257 /* AtomicStruct.h */; settings = {ATTRIBUTES = (Project, ); }; }; 374767F9EA7457BFA37FF3114B4950F9 /* RCTEnhancedScrollView.mm in Sources */ = {isa = PBXBuildFile; fileRef = A349B258597025E561C3C8C773B51674 /* RCTEnhancedScrollView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 375048B5D0D59A4D57806E18C491B74A /* ReactNativeFeatureFlagsAccessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 427B91D65DD3F677FDB0BBC6941F4424 /* ReactNativeFeatureFlagsAccessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3773063F34B6E58F660EAC09788CCB4D /* SurfaceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D14147B88E3AAA44C3CB4E3E9B1D01EE /* SurfaceManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 37F4DCC3A8CA1D1A4D418657FF19733F /* RCTImageResponseDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 12F4585D8579A5039D742D7E3913D0B6 /* RCTImageResponseDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3845DB49D557E86260B40B8530E9CBD6 /* RCTPackagerClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E9F375741E65415151EE9093DC1535E /* RCTPackagerClient.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 3863DCA85A7094A440D5551001AA0CC6 /* AtomicHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7D86572DB2B5C7CF324979D3984A2B /* AtomicHashMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3882ECE408421957CEFD2A0225E9E697 /* LegacyViewManagerInteropState.mm in Sources */ = {isa = PBXBuildFile; fileRef = 05DBC9C72F0FBD718ED0DED3984CE795 /* LegacyViewManagerInteropState.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 38B2E0C490CBF63CB0C7398BF2B7A9A6 /* ImageResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3239428E42490C3045975A1FC6A276 /* ImageResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38D31452260553290B4B6BA24A990899 /* RCTDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = A956484ABC9353D13F5C213DFF6F76A7 /* RCTDecayAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38D845C721547D5C42965B3EAF1E6E66 /* RCTConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1553BA7C531B0C6FB8F13D06F2F39B /* RCTConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38EBCAC6CBD066B63E56309C335B8733 /* RCTImageShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2BAEF360C04D98022913BA78AC8A5A0F /* RCTImageShadowView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 3903DC2E45FF49565FBA6612830040C9 /* RCTLegacyUIManagerConstantsProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 04160B32874923084312A1D40F4703C3 /* RCTLegacyUIManagerConstantsProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39048CB54388C7559E2F723650C145CA /* WMDatabaseDriver.m in Sources */ = {isa = PBXBuildFile; fileRef = 635016B0AE2DF86EDCC11EB4FBB41D5F /* WMDatabaseDriver.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; 3915F70AA612897DAA0B10B81683CAC5 /* RCTTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F7378714B1A2275988B900E389392EE /* RCTTouchEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39830AA65645472F2A472D2F9A8E506C /* Stdio.h in Headers */ = {isa = PBXBuildFile; fileRef = 16BD9C5268EF8F747D73A1B1E9C395CD /* Stdio.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39B02D53EEBFD6F7CEF41BBA45C497AA /* InputAccessoryState.h in Headers */ = {isa = PBXBuildFile; fileRef = BF131B6BFD3FDF6FD3D006300FEC04E3 /* InputAccessoryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39B0694CF79D9D40DA4409C513304D3C /* StubViewTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 507CCE949602395770BDF4CA5A58B07A /* StubViewTree.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 39B7CCC00536E89229DD45DE7FD25D7D /* AString.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9ACDD39D4A14DDC16406CDD0457ED3 /* AString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39CDAA971F3E8A4A08BD53F982886AAD /* React-nativeconfig-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DDF4F26D766FFE558EA52E582A0879 /* React-nativeconfig-dummy.m */; }; 3A0154B9D205F094345A2BA8B30AA58E /* Filesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FD76DB8A83861EF7CD0449CFC4DE097 /* Filesystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3A0218754CAC86A5243E1A54F5D96717 /* NSTextStorage+FontScaling.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFF833F6075C65A5629CFE2099DA2DE /* NSTextStorage+FontScaling.m */; }; 3A10A4EAE244B467148FBBF299D6E668 /* flags.h in Headers */ = {isa = PBXBuildFile; fileRef = F37B91C0C1BDCB74BF74E5D62F1A84B8 /* flags.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3A1DC7244ABEED96A40CF933FC2E60D6 /* ExceptionString.h in Headers */ = {isa = PBXBuildFile; fileRef = 890A2DE43F7CEC807F5D45DD7FD1CE74 /* ExceptionString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3A38547BEC61A65216B7FC203DE719DC /* EventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = C4CDFBC1ECF32EC053DEB342DEE1B1C2 /* EventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3AAA14243A77113026B848ECEA53CF6B /* IPAddressV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 938DC03F8EB05E7BDD33175BF907D170 /* IPAddressV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3AB2BCC50FC4E939FC03FA2CA6D93E7C /* RCTAnimationDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 109F9C2934C9D047C914A988E8DFBBA6 /* RCTAnimationDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B0BCF5D40456442075E087910B65BE1 /* RCTSwitchComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5F4950574A43023D083A3E3731760A1 /* RCTSwitchComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3B19E916E5FEAD382441C2ABD10B7D9B /* SynchronizedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 67610BE7173AD3B20491234782354847 /* SynchronizedPtr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B35DD8BC49B13A3D0EAE82DFF5457B4 /* Geometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 25EBF2FA7FFEDCE7086F43F67F482A2C /* Geometry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B553323908F46C01882B3EC75FD2192 /* Color.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F1A707D6F8DE921DFA42211D2036148 /* Color.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B57A8B697DB83FCA053D4A7A4D17317 /* RCTInspectorPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F5A0CA304F0EDE4723DD50DC013E5A9 /* RCTInspectorPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B61E4B1CE2CA8087C242D41191C5DD7 /* TurboCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = E6AF50262FD901B97155797FE9CCADC0 /* TurboCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BA84270769E9763D410373AA68B4DEE /* UIManagerMountHook.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EBD024CC0AC3DC8897152BE3FB46E12 /* UIManagerMountHook.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BCC36BD3528A06FA613D3F0182969A9 /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E0817B1CB0DBAA45D6A064FE340FD13C /* RCTScrollContentViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 3BD1B9E6E3E5634C671FCEB14161A751 /* RCTScrollContentViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4769F2911766BA548AFD0FFEDF8426 /* RCTScrollContentViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BD8694DF761B2FDC7BECD2BF44B222E /* RCTAnimationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 16ADA7CA003A807781299F67A1578DF4 /* RCTAnimationUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BFD717911ACBB0C75C28B7BA77DAF93 /* RCTStyleAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C409D3D492DAB7368ECE438E121DB5 /* RCTStyleAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3C062861BE19C56482F00235234E3774 /* AttributedString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8E43EE33594D104C5EF3813E34DEAFB /* AttributedString.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 3C1F4BAA6EB4E34AB9A21DBCF42B54C9 /* Singleton-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C17F91E7D084760672DD64B292DF5B5 /* Singleton-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3C38C4F44AE4F93F0E9A51E07978DA24 /* InputAccessoryShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10CFAB7D8A0F2282F1390473E5C37F0A /* InputAccessoryShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 3C7BB8C75F929D8FA314EB26ECE53CDA /* RCTNetworkPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B80393CC9C72D221195616E0DA5B67F /* RCTNetworkPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3CB47200EDBCEECB186D83CC145EEDED /* PlatformRunLoopObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F9A50575BD572DC92EEFE7118DE559 /* PlatformRunLoopObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3CCDDC20E73F5316F844BD418D7FB570 /* CppAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A6A08279C8FADD3D8FF81B1C2112A8F /* CppAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3CEB56248F6859AC3BDED52E5ABB81FD /* ManagedObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B300B21C62B9776F40F71E7688DA14C /* ManagedObjectWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3D3FF2249FEED66F576893A1E61C19FC /* New.h in Headers */ = {isa = PBXBuildFile; fileRef = A6E21B3D9A76F241B93CEF7D2AA19709 /* New.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3D77407A19494090FF57F73616D734D8 /* decorator.h in Headers */ = {isa = PBXBuildFile; fileRef = CC3E8F86C7DCFECB3326885EC3BF91AF /* decorator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3D9A59728E70022027792DBB95213CE3 /* RCTSurfaceTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A1A873A0B3D3C8636143BB6282A12D /* RCTSurfaceTouchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3D9F615303E80F664EF87C36F4258098 /* RCTBridgeModuleDecorator.h in Headers */ = {isa = PBXBuildFile; fileRef = 367ACA1132BAD5F80E6CE0171064F750 /* RCTBridgeModuleDecorator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DE0145BCB2860FB847CCB3BC9C25300 /* SaturatingSemaphore.h in Headers */ = {isa = PBXBuildFile; fileRef = AD601E06293D3A3930BE7C2006B41F2B /* SaturatingSemaphore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DE173A4880B25D444AEB95AA2B085C0 /* SRSIMDHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = BAF67687A73C975DC1D89F35DD7A68A5 /* SRSIMDHelpers.m */; }; 3E19A59E0EC2217267D80A46845BD6AE /* RCTConvertHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 819B22FC019823E75AE6A15AF791911F /* RCTConvertHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E5A9EC165D1D6979F3BD6F253B408B6 /* EventPayloadType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDE07F5836F143CD7857CB2E5B5E136 /* EventPayloadType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E5BDBC0CC3A15341956E99C1006F430 /* SharedFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 797702F6E9E25223D401BD7E13885F76 /* SharedFunction.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E66BF7B000ECEC9F677306A1EC11448 /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5B11863A62393419B2A19ECDD56569 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E7B0F82566D1D91383B364B52BFCBEF /* RCTRootComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 906802F5C01093C45F849B1189752669 /* RCTRootComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3EBA21C27903E9515E2B509B4671A407 /* Instance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FF7AD4797D7F14A650587773DE9EDC89 /* Instance.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3EBDC6385095946F937BD8273B5F255D /* SplitStringSimdImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC21E6203A42D717BE49E8E588CB0D5 /* SplitStringSimdImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3EBE1E69C78277F3AAED44F5C90F5922 /* InspectorInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA56E2973B5F2DA40756B56701FEC9D /* InspectorInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3EC98ADE8058D966A66677C7720BEF1C /* AtomicHashArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C73DEF93EB855958CC048BCB076258B /* AtomicHashArray.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3EE52474DA38D7BC3D6AD0E51F15EBE0 /* Futex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55EADA43B34BE3D62BAE2D869390C842 /* Futex.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 3EF492603A770B0DB5F8A5386D3128F3 /* RCTI18nUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 412F97DED69E29E2A7146162142A9FF5 /* RCTI18nUtil.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 3F0DA3FE9305A3181F7BA27FADB4F9C3 /* RCTBlobManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 181D4079537F9E8B578405C805CEE545 /* RCTBlobManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F344B5BCE4AC351E0E383F5688F37B9 /* AsymmetricThreadFence.h in Headers */ = {isa = PBXBuildFile; fileRef = DC2247332E34E9A5EEAC651BFE23CE54 /* AsymmetricThreadFence.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F41C3029A1001872EA78923FEC6B96B /* AbsoluteLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C0913180FEC5C605ACD33BB9E09CDAD /* AbsoluteLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FB693C6A8F96970DB7439677E46487F /* PointerEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FBF294CE17585A6CEAE66F34026AA0C /* PointerEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FC78F29079C2C32E0662B9734092AA1 /* FallbackRuntimeAgentDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 488ADD85E24689EBD7862B0D4E7CA547 /* FallbackRuntimeAgentDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FC9FEE72E60365C856B578EF2B5F616 /* HostPlatformViewEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C95BBE34A199CF72BBFBFC172AC6E71 /* HostPlatformViewEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FD08618BB317EDD1F8E5F2C2CFB3AB4 /* RCTAttributedTextUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 53F62FE9FCA2DB3B3BA9F838F5513256 /* RCTAttributedTextUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FE61AC2BB3C11616328F6F3C70CC9F7 /* SizingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA86F8B69827747B651178FB5B21A21 /* SizingMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 402C44DF036C52575614FBD787E15482 /* EventDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E46F0129DD1A6A967F2580EB63011DB /* EventDispatcher.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 403D51CE5F2689BA36F4629C3C5059B1 /* PropsParserContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E2250F8ED2A809808FB295A155DA713 /* PropsParserContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; 407C77D329B19C296DD48705A6D7B7EE /* RCTSubtractionAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = A07442CD10380BE0C2F7C19CA5D62FB6 /* RCTSubtractionAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 4092C517F13E60D6D9C673E3530CDC84 /* RCTLayoutAnimationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EC212BC4905E428935BED6DA109744 /* RCTLayoutAnimationGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4094BC9DAC269411141A9BF211A0C1C1 /* RCTImageCache.mm in Sources */ = {isa = PBXBuildFile; fileRef = 57BBCC84BCDB23D6ADA72EA6128CE796 /* RCTImageCache.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 409697D416E1EC0B0559AA517ECADA7E /* JsErrorHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 12A7093733E6C2A1819EAFD7B6275C0B /* JsErrorHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 40A9D1F054503F770F54FB569C86A77F /* Log.h in Headers */ = {isa = PBXBuildFile; fileRef = 45D864901AF697040097CE5D0FCD717F /* Log.h */; settings = {ATTRIBUTES = (Project, ); }; }; 40B51C9BE008F034A16C81420F0DA4A0 /* ComponentDescriptorProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7761A07D372FD8689FEED3327D1DA8FD /* ComponentDescriptorProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 40D2A11491175D755AC117B88BEA9CE2 /* LayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B84580A87121CAF61CB478AB93D9261B /* LayoutContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; 40F28A3F4BF66C4EF68B3035DDACDBAA /* DebugStringConvertibleItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B95AB0EF143A97263C1017EABE0E073 /* DebugStringConvertibleItem.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 410A73DC736F237F5938D8093AA213C6 /* RCTProfileTrampoline-x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = CCC91F4882F9AD8CBAA5347E76589517 /* RCTProfileTrampoline-x86_64.S */; }; 412A5B7AE081C52FB806EE8584903C7A /* TokenBucket.h in Headers */ = {isa = PBXBuildFile; fileRef = 47AD1D90749E8B75D93FDBB70F9F6ABA /* TokenBucket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 412F8240ACB84265E0864A13B5C9F222 /* ReactInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = D50E86E9CDA03CB5CEA275C7EE896DD2 /* ReactInstance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 414311FDDDBD44A12AB564123ABFDE7B /* RCTRawTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF8192C1B7013E06F84C24D2B1110B0 /* RCTRawTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 418AFE7E951FD4B006662D619F4BC0D9 /* RCTStyleAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = A613E889F5C29F0DAC3CCA3F322423D6 /* RCTStyleAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 418D8178CC19322DA87BCD5B98D11D5F /* RCTAnimationPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AE808F4B51B3F24D61558A014CF22A5 /* RCTAnimationPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 424148B9D17806EB7F48FBB0D2FAD14A /* RCTFrameUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 53B4E188053652EA7D2E30691509AA9F /* RCTFrameUpdate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4241ADF61CF1F176813006CE278344D8 /* RCTCxxInspectorWebSocketAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B17F4F65DD01BD81E40664BAFB61F37 /* RCTCxxInspectorWebSocketAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 425A1E0E35945FDF6A30686F549465E1 /* RCTInterpolationAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9EED1EEAD5AA1DD78D49501ECED7AB7D /* RCTInterpolationAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 426DB0CBF495DD7166EBDC0A188B3F68 /* IPAddressSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DFC8EAF78BE0F070D18753D61D9C59 /* IPAddressSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 429C7D697593A320F8A70F5357D97BB7 /* ParagraphProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 343040AFE22D6B494755190C0C2FC6FF /* ParagraphProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 42AA225751C052683DFAFDE8325C2990 /* glog-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 459822FB423F933D32F755CA3A5D55CC /* glog-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 42DF6A9D9D4AD244EA20DFAE81933530 /* RCTDebuggingOverlay.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FF99AA51CC63F9D02051442963EEB0E /* RCTDebuggingOverlay.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 42F55F8D487C777A6A8C180E4DAB0BEE /* RCTSurfaceRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = 258F35FF5ABDDEBA091F066B015EE1D9 /* RCTSurfaceRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 43120C286CDDA8285535926A403AA30B /* ReactCommon-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FB10906EE52FB99A63183406F2DFD2AC /* ReactCommon-dummy.m */; }; 431B8E3910D7948C5ABD4D2EE021E854 /* args.h in Headers */ = {isa = PBXBuildFile; fileRef = 1731535F9FF01DC7DE5758D88594F0CD /* args.h */; settings = {ATTRIBUTES = (Project, ); }; }; 43514E4A7CF3EE6B921317D17245C4E6 /* double-conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4D4C35312AE9ACB8D59A46D0D6051A /* double-conversion.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4383BE16C5EE46F875BF5D8A39EDBC44 /* RawPropsKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C867898C76A4282B23A18DB01393712 /* RawPropsKey.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 43BBB6BB48AD003AAB4B6F1A58B97B52 /* SafeAreaViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D1CC2D4F8A104E3B6F891431E7ECE1B /* SafeAreaViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 43CE6254997AD06649D76B1421C8250C /* View.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CBCEC21A3A50591C487CAFD8DCF2CED /* View.h */; settings = {ATTRIBUTES = (Project, ); }; }; 43DC243F1208440A4C70A92FAAFBAFB5 /* RawTextShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = AE55EB0D8F0641B6A3B9BC048B6A5DF7 /* RawTextShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 43E016CA6E6F77F9C2291E94022B6221 /* stubs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B56A61B8E70277D187E3D37BFBF7897 /* stubs.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4448631AF617AC7BFAE71481DEAE4867 /* RCTLinkingManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 12BBC4125F0A832B58555EA01B639783 /* RCTLinkingManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 4475E12EB41862981DF3C41487CCB246 /* fixed-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 555C8E2826D8F277B972F2B66D34F22B /* fixed-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 45000A8D184E659305EBC4F052FE22DA /* RCTSinglelineTextInputViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 28F712315F7CD5B5F84A557475518AF3 /* RCTSinglelineTextInputViewManager.mm */; }; 452DCBF029A6FB3A779606D57EFD699F /* RawPropsParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CCB913EB7EC2FFF2A1F039FCAFFF3042 /* RawPropsParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; 454C26722FF0D6D11DA74C5228AA2085 /* RCTVirtualTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 447C966873650F5BE0F53C20B5B181AD /* RCTVirtualTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 454DEEF08195B90C4524D609D9FC08E7 /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 522269B8DAFA9F8734D95340BC29600A /* diy-fp.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 457301E7532DE95F70DB8794A5EE9BCE /* RCTAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B488F05847F4968004034A803BA1EE /* RCTAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 458B7CF17D4089008BC4D91F61BF11AD /* RCTImageDataDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 163349EF8EF0ABE776CEB5D5A72C377A /* RCTImageDataDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 45C8EF8702AA503775656087A507733F /* RCTLayoutAnimationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9617B1637CABEDDB4A95483334CB93 /* RCTLayoutAnimationGroup.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 45D9ECFD2F6AE5C476BF788B807F3F71 /* RawValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C1705E9B13860E1A5ED501BF5D9BD4 /* RawValue.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 45DD2B4B19A1543D0AA2E492728F9112 /* Database.h in Headers */ = {isa = PBXBuildFile; fileRef = 0991F79F05F020ABEA8DE3AFD72A7B08 /* Database.h */; settings = {ATTRIBUTES = (Project, ); }; }; 45E5CEDEBDBDB3272D62BF52105789CD /* CoreModulesPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79F8EC97641C2D3B51B87DB668615513 /* CoreModulesPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 45F785E501BFD13E844D382A1F001EB9 /* RCTComponentViewFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6EADDB0E9C832143081D058CA7259028 /* RCTComponentViewFactory.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 461CBD4EA7E870FBB406BE1A44D15A6E /* RCTAnimationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 16ADA7CA003A807781299F67A1578DF4 /* RCTAnimationUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 463357058D1F85D874C7B62913D0FB51 /* IndexedMemPool.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A56339A525A7972D16108E1C573FA7 /* IndexedMemPool.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4655F7C1059E59B736603130DB2FA22A /* RCTViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = B06BDA64A8C366F85CA16B5D0E328839 /* RCTViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46661E9599B2C3FFCC3382FB3A5FFE2D /* MemoryMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C08820B4F8B692940FAF14B621C83F /* MemoryMapping.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46F7ED9516919044D6FD2A226838DF0A /* RCTSourceCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A72E0FF2CF1B17D479A7069A5C1123 /* RCTSourceCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46FA87EE5D65CF288E704019C05581E6 /* RCTFontUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 68F513FA3A624FF445C0F9B1A615E3A2 /* RCTFontUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46FEBA35C6BCC1DA359FA4818280E7C1 /* GroupVarint.h in Headers */ = {isa = PBXBuildFile; fileRef = B46136D54F40F23675446372805B6B0D /* GroupVarint.h */; settings = {ATTRIBUTES = (Project, ); }; }; 470C6E55CF2E2DCD6E21DADFFA475E9B /* RAMBundleRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B6F9E5C10CE8D8B1931589BD93D12D7 /* RAMBundleRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 477ED6A28D3CD8F41F2E96F5D3C98904 /* Bool.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF4EAA32AB91B28A1ACBB7030CB8484 /* Bool.h */; settings = {ATTRIBUTES = (Project, ); }; }; 47828A13815F5A9030308D806C348B57 /* RCTConvert+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C1ECDE3D239B5524C2DD16740B8B8C /* RCTConvert+Transform.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 47A21E1BEF0354D40449C04B19F8573E /* RCTDynamicTypeRamp.mm in Sources */ = {isa = PBXBuildFile; fileRef = FB2A143E4389164E0F2CCDB7122BD9F1 /* RCTDynamicTypeRamp.mm */; }; 47AD3056CBE40003DCC7F044CE31549B /* RCTDebuggingOverlayManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E8855C5F693E52309BAEA8C716104F71 /* RCTDebuggingOverlayManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 47B3B0B341756FE46A9E04CFE10D470A /* RCTUITextView.h in Headers */ = {isa = PBXBuildFile; fileRef = F6312EB0499C783D68B98C5D0AFAB4A7 /* RCTUITextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 47BCF82C2C44E89BAC2425744C56BD8A /* RCTRedBoxSetEnabled.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAB4DE45806E1FB41C909B6AE2B53C2 /* RCTRedBoxSetEnabled.h */; settings = {ATTRIBUTES = (Project, ); }; }; 48089FEC790CC6100CF69630720FDFAC /* RuntimeSchedulerBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F3E458396D3574B4ADE0076519B87B9 /* RuntimeSchedulerBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 482FA3433C45953974AC26E96444DCD6 /* TextInputEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71B4D481359E1DC4C88FF4956C3F95BC /* TextInputEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 486006AF8D114F257E87351B3C8A5E03 /* PageTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = E7ADD63BE36BD61FB54992AEEC51FACC /* PageTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; 48BBB73DC78C42C1BD39CC241869299B /* HermesExecutorFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7AEC733FC3F4650B9340E574530161 /* HermesExecutorFactory.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 48E2241DFAEE52BEE4D2F3D2C44C5ABD /* InstanceAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 102110A5E77C7808CB1EAFF9A4489E0B /* InstanceAgent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 49164C701172F6D49BDA9C836C294A82 /* ReactNativeFeatureFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49B8EB5E3B6498FDDA1A80E45FA97979 /* ReactNativeFeatureFlags.cpp */; }; 491734DC36D5DA5B7188251B61658CA3 /* pt.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 80F9DAC31E738BCDB2481B8D0EFF7D4D /* pt.lproj */; }; 492D93F6A4D1DB5878AEB8AAC86F52F8 /* ScrollViewShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E2FD3C024F95AA7EF9D1ECD43A5E807 /* ScrollViewShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4935A609FC34FA352D3C5B22EE93C6D9 /* RCTPerformanceLoggerUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BC40B6E05AAAA8B1786166F41BD0EBF /* RCTPerformanceLoggerUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 49409B9EED2B261372CC7135F2429D67 /* SRIOConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 969D216DADA9AF02B0339E42E569D42B /* SRIOConsumer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4986BE8FF75971161CE4825DE3E4F07B /* UIManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 271F7075A09B7F53F77295612BE17BE8 /* UIManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4995E35BC80E4A934B323776BFE95BF3 /* NSRunLoop+SRWebSocketPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D526144725A1A4158A2B28A0B914E5 /* NSRunLoop+SRWebSocketPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 49991F7761C3338772084CD9A784B437 /* RCTAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = 32208C8C13E5E8750C70406B6FADABA1 /* RCTAssert.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 49D3466638B3E08EDC8AD67760E4DFF7 /* SanitizeThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9862B8B78362BC8D98438DB2C5675196 /* SanitizeThread.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 49DE6AADE6DD8D3EF3EB0555A271672D /* MessageQueueThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 3615AC64FDF6640D810E405776FA9A03 /* MessageQueueThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4A81228C0507B6999A9DD504323C1BA1 /* RCTAutoInsetsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 26055A5589650C9F928DD1BFF922B86B /* RCTAutoInsetsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4ABFE864F920B579C3AADCD9165F0346 /* TextMeasureCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97A95308B6D47ED59BD75934355ADDF6 /* TextMeasureCache.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4AC55AF43A4C075565677B3718D2FB32 /* RCTScrollViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 63BFBBE25C646A1C221EEA23F4224C1D /* RCTScrollViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4AD9029E8839583D77C01D0769BFE50D /* MallctlHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 701DA5EF2C35D3F8011D186617366218 /* MallctlHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4AF659E6D81AA3230AF3CC577A664469 /* RCTLegacyViewManagerInteropCoordinatorAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DDD563C6ADBEC41164125E51B67EE77 /* RCTLegacyViewManagerInteropCoordinatorAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B22A24065B251775C2B4FF3C3B511CC /* BaseViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 19006C0042936BC7BC14B717FB85308A /* BaseViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B28898B17974A51B867C8CCFC44489A /* NetOps.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D0F55A1CBF2A5D8A9F6B0B49A152959 /* NetOps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B5056B4B0F54339419F82CB235D9B50 /* ParagraphEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 804154B57731765E15D5EEACEF594E8F /* ParagraphEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B7FB9FFC77C456D1D957E910DBCE93D /* ObjCTimerRegistry.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6B15808FE6325BFE9D87ECA96CA3A11 /* ObjCTimerRegistry.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4BAC222710598CFEF8986092D6631F49 /* BridgeNativeModulePerfLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0264569A1DCA41D8267A2DEC02B3043 /* BridgeNativeModulePerfLogger.cpp */; }; 4BC3A1BE0555EFFE479D514DE9D87F02 /* RCTRawTextViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 63646CDACE649B0945C14C4A4A8DB7A3 /* RCTRawTextViewManager.mm */; }; 4BCCDB6CEDB655B51D4EAA168B46A458 /* TextInputState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF1753017BD4FC4A6370681CBE48C79 /* TextInputState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4BD0C3A0B27003C1E207962093B4CA8C /* componentNameByReactViewName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4B7F151F4E0EB1DCE46AA538CDA20CE /* componentNameByReactViewName.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4BD9752E8ECC57A539310794E73FE821 /* Differentiator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57094883E054C3166427AC3CFF403965 /* Differentiator.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4BDBFE1061C5C8DB2356FEC255512FC5 /* RCTSubtractionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D837D755183ED658A920B4FD642A3F16 /* RCTSubtractionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4BF3BD19BA78CB09A0B90727F60C8EBC /* RCTDebuggingOverlayComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = D24AD310EE0E5FC9562D150864F26033 /* RCTDebuggingOverlayComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4C28C822685226ADDBE66EBDFDD58EB8 /* JSIDynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E06A966DFD16239C4A4825D8200F89D /* JSIDynamic.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4C3D5B6DE1DFE5EC71F9EDAB80BBA2CA /* hu.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 411B0CC2295DAA5FACED75F6D4BA67ED /* hu.lproj */; }; 4C441C36AC4132DB0BA4367F9AAF3781 /* UnbatchedEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B14B05F1E3FA960A779224B96DBB041 /* UnbatchedEventQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4C476F90D14D11D54E3B5C1CDCECB6EC /* RCTMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = E927497A3701D0E6AEB8ED2AF83B915B /* RCTMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4C94BF7B2D691369F2AC39B151E3E3DE /* React-RCTAppDelegate-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 401A553AA0753FF3548A286F009A8820 /* React-RCTAppDelegate-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4C9DAD28404CD20D00F4F363C2B46ADC /* SplitStringSimd.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A7E0B4304900884F1F7552E271BAE80 /* SplitStringSimd.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4CAE60F3D1B8ADE26E3B2CA80D13BEE6 /* DatabasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A190A345B19C93427A45B7A6CC52FDF /* DatabasePlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D3C636E570049880C8AAC77CFDD2948 /* ParagraphAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 732337B1201688C67D6881C87C976B08 /* ParagraphAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D3D91877333B2A899B1D1318D8CAB28 /* Dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = F4116A5CF0A3EC97879DE8D115EB9AC5 /* Dynamic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D40B9DC8342119ECA0695AE455E248A /* hash_combine.h in Headers */ = {isa = PBXBuildFile; fileRef = 10CFD843724D42F53E4373E441FD4EBB /* hash_combine.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D4222A8B9F471CE399280E884966659 /* CxxNativeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B9E96DFFC840B1E714C6D186A6B41717 /* CxxNativeModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4D50B5E65DC561AF8C8A0C625A261512 /* GroupVarintDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 962AA8023E519A1F58D71BC1F73C95D0 /* GroupVarintDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D5FEE7A0F5B1E878C3F4042BB635FD1 /* TypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BFECF146A1165D167989F92AE6C0CC /* TypeInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D7E5F546791BFFE2D74F66BE63512DE /* ms.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E606EFA2C4D098DAEBD8DFD0734E2535 /* ms.lproj */; }; 4D9164B681F2EA242314F90B395F768B /* MountingTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5710B431788CFA607B0F39F45EC6E64 /* MountingTransaction.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 4DD05C5A058E1A60C86F8009B6D91B0E /* RCTWrapperViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C0BE36B9FBC218A7F9944F9E03ABC9 /* RCTWrapperViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 4DD93443D6B7F7732D024E85E90D06E9 /* Builtin.h in Headers */ = {isa = PBXBuildFile; fileRef = F59815A7A4241A59BAFADEAB6160D7C8 /* Builtin.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4DEEB3F59D5A65A8C1DA3BAA6B1BD2EC /* RCTImageURLLoaderWithAttribution.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F7639A56DEF6356718C6D5EC6AF3F7F /* RCTImageURLLoaderWithAttribution.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 4E26F7421AFC7CCBA8B969FA05F45C3F /* RCTHermesInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB451B2BE52BDDEC46C0D989282A4A7 /* RCTHermesInstance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4E75BA9FAFC8ACCCE5587D6145228C93 /* TurboModulePerfLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 522819EFAF89C9070CB50445ACD48721 /* TurboModulePerfLogger.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4E995A62CBE562B414C48A4D96830F4E /* RuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 45E05ACB5D6C411D85AD9B6A40C2DD2E /* RuntimeAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EBF8CAAE3B17B65F2D10529F0D236FF /* PolyException.h in Headers */ = {isa = PBXBuildFile; fileRef = 207D72871056994F29476846F29AF947 /* PolyException.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4ED180A39A38A5F8D12F8A4DD4E0B5F2 /* ConstexprMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F2BCB43F2D90CA90AFD57677AF6013E /* ConstexprMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EE2A2F1C282DD56E3EACAD3D5B911F6 /* Replaceable.h in Headers */ = {isa = PBXBuildFile; fileRef = B41CA2872B3100D34E5916BD9747FFA2 /* Replaceable.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EF0F1BF78B522ABDB1A343A8EAC534D /* CustomizationPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = CA86A71648C8045BF8A96B225E26E40D /* CustomizationPoint.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EF5C191311E7EF4E4D90D6254B58369 /* RectangleCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = F59674BB4A1D0F323148B07D7D682AC2 /* RectangleCorners.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F4D04EE2C06684AA7268737AAE9B6C3 /* Number.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B9822B49D137DD1BBFAE4C9206C7F97 /* Number.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F65A3489B98C0252B66084467E96729 /* RCTBaseTextInputViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD4677A9809440AF9F9498F2E0115B /* RCTBaseTextInputViewManager.mm */; }; 4FD4897BB7E463BD4B8545A8DDEB8278 /* RCTRedBox.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB226E4AB2DF48BAF6AC83AC49AC1CD /* RCTRedBox.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4FD8523C00E419DA64417797EDC77A42 /* RCTBorderStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D8FEE5EFC0D5C3452E4502887D2D780 /* RCTBorderStyle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4FE0D611C9C858B39AEEA98E2FEC1677 /* ExperimentalFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = 2462C72B87ED90695E43B971F24B8FCF /* ExperimentalFeature.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4FEAE94C64B4E7C4982BD2CB545711B1 /* Hazptr.h in Headers */ = {isa = PBXBuildFile; fileRef = 91E5E966C9BA06A775879A6EFFEF786D /* Hazptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4FF26431AB9C13B861E5BF2CAEA82330 /* RCTRedBox.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93802254A23BD2E21FC5B6FC137CB7EE /* RCTRedBox.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 50506943625219009602B94281736940 /* RCTSurfaceHostingProxyRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = E22E7E12AEEE2122E9587F6CBE60EC1A /* RCTSurfaceHostingProxyRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 506691E4775474A330411B90500F4307 /* RCTInputAccessoryViewContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 48151421313275AE47A1F36C49F1AC43 /* RCTInputAccessoryViewContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 508F6D748C3E70A9EEB8197CF7A2F71C /* RCTViewUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED025FBB53B0B481493FAFFAED14F5E6 /* RCTViewUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 5093844A96D536399D02C2EC5DE8B829 /* GTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9848E5EDA897DF122EF07B42AF3EEB86 /* GTest.h */; settings = {ATTRIBUTES = (Project, ); }; }; 50AA780906EDCC9F6292E6EC33FE9AF0 /* MPMCQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 28134A7E3E4CF5A0D60FE5E683407AAC /* MPMCQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5141D72D38376A7357634EA7BED7B529 /* RCTVibration.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E465757376E937D199FB1ED68BB46C /* RCTVibration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51922B9088FE0CD8C342E96B18E38630 /* LayoutAnimationKeyFrameManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BA7531AA0EDD6697C7D87500F8EFA087 /* LayoutAnimationKeyFrameManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5192D6CBCA9DEBBB6D2D1CB8BB8042BC /* ScrollViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7A0F200C7B88BDC44875E323134B8D /* ScrollViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51B6F7E94F3EE06D36CB1D658A88AC5C /* ImageResponseObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = F7D701E7AA313B498D488AA43D416F3F /* ImageResponseObserverCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51D4FB82F519866F1B77D4DF5EB83ED6 /* RCTPerformanceLoggerLabels.h in Headers */ = {isa = PBXBuildFile; fileRef = 25CB321AD79DD7DE8F00445FA9998552 /* RCTPerformanceLoggerLabels.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5223C8643C9453C6B98DFE69DCC9196B /* RCTImageView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06A12441B1C3D7A2CB937C85CAF45CCE /* RCTImageView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 52450E118C5E9BED82AD4E105DE8E4FD /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 33BB544E228494D0AF9CB4E5A11EF94D /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 526A2D421E98B760D469D7DFF25AC8E4 /* MountingOverrideDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 77C83209E6AE78202FC38E3CDF6E4666 /* MountingOverrideDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5290B35633031393762B3BE3DD7B6BB2 /* BridgeNativeModulePerfLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 76B9170886E7F923EC5E35A34EEF7A2E /* BridgeNativeModulePerfLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5338EF2CBC1AB903457F1E2A9430FEAA /* Justify.h in Headers */ = {isa = PBXBuildFile; fileRef = CA736D745963DE632943D6EE6AE51217 /* Justify.h */; settings = {ATTRIBUTES = (Project, ); }; }; 535E4E67E1D010242C7EF421F212EEC3 /* ParagraphState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1D124CF8B584CB0F39373CE1FD657A6 /* ParagraphState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5361BA153A940D1856498F41B988E292 /* RCTSurfaceHostingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4200922C77CCA406FFAC67124F437 /* RCTSurfaceHostingView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 536BA5E6F1BDEBF1509C5E230951E959 /* HazptrThreadPoolExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = D802137E8093DB1F0B0848206D7FCB8E /* HazptrThreadPoolExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 536E2F0CD05BB0CA231C990AC198EC81 /* RCTLegacyViewManagerInteropCoordinator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 77FD8EC2BDFA965A8B3238C611476897 /* RCTLegacyViewManagerInteropCoordinator.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 53B4AE3B6F2DD428F69FCE1829438257 /* WebSocketInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D3D07411F82B089A181E94AD1F54DF7 /* WebSocketInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; 540362B438D8F765E484CAD9A99213E1 /* RCTReloadCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 87D33A3159E4827D6FAE051C897E7019 /* RCTReloadCommand.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 54203B03046FBB5E67F2A914914F1F44 /* RCTHost.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74F0A4078D35270995DBAA54BA83A8B7 /* RCTHost.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5424ED4EE723B69262C7BA8F229423CC /* RCTScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4013A3D961F88A9A042C082ECAEB35E8 /* RCTScheduler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 546A1106CD03E7BD183BB275B5577D63 /* PointerEventsProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0A85939544D109BFA4572C401B51D9E /* PointerEventsProcessor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 54881BD4940AE80A54AFA4A41A9ACE01 /* RCTVirtualTextShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = FF822F0F4BB64652EAD4246D353613C0 /* RCTVirtualTextShadowView.mm */; }; 54B2697DDF8B682EDCF00390B7027AD0 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B87E0987F27CB7E57A4A864D574EC7C /* Node.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 54CA7A9EEECD01C4F6D22243BB6A0AD9 /* RCTSafeAreaView.h in Headers */ = {isa = PBXBuildFile; fileRef = AEE7D821FE2F99E06D93025BCCDE581E /* RCTSafeAreaView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54CC533A473A58B04C39D4F6E221B40F /* Padded.h in Headers */ = {isa = PBXBuildFile; fileRef = D89495ADCC3AEE3B5696CC8A442CC151 /* Padded.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54DE8886E75B8747E97732B29877D05A /* ShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = A7DC83484741B6CEE36700BCB855A982 /* ShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54F90A747FD892839E06E26F8B1DA351 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A511E79FFB4293C0F4E1849EB6DAA5E9 /* FMDatabaseAdditions.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; 550C21D890D7BCD2AF68A2CAF0E32F9D /* SRMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F93EBBC760E206C8883BE32A9915097 /* SRMutex.h */; settings = {ATTRIBUTES = (Project, ); }; }; 551F583D79044D0E633AEC170C210B83 /* RCTUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = EC80A594ED6C17D4D0B191D585BE4089 /* RCTUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 552D684A410FEFD68CFC05695C8A7025 /* RCTInputAccessoryComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 20FCC48835414C2B85BB6A73AECE0309 /* RCTInputAccessoryComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5557EE5C694F55EA80C743211988494B /* SRIOConsumerPool.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D220B48D2758B94E0D0CB1968C018CF /* SRIOConsumerPool.m */; }; 5589627C9AD1572C6B6C6F5993F440F3 /* SchedulerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D97182C50F2513A513AF827227D35D9F /* SchedulerDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 558B2A6974A6F8200C9802FF6F845F60 /* RCTFileReaderModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 91946E0E55C67A006BFC6A09B6757F34 /* RCTFileReaderModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 560154C7130C73C57C3296EBCA35D2AE /* AttributedStringBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA46A7224AD028908740366CEBA9D908 /* AttributedStringBox.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 56279FD90DFD7BF436B971346A2A0B06 /* diy-fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 33E070F404266F952E77980CFA788C4D /* diy-fp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 562A3C7202DCE0DB151CF213B983CEFE /* LongLivedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ACCDC510D9A68B13F2A48E358E2BE26 /* LongLivedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; 563F1EC6EC87919CEDA50FCB4D3C5B98 /* JsArgumentHelpers-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2880387D5A0780F29656704977F6A10D /* JsArgumentHelpers-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56724EB37D2444DF72CF868DD13477FA /* RCTFabricSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = E625C620A161CC1506E07E4C53FC7859 /* RCTFabricSurface.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56FF2146A276A58EBC98A2C187E55DF6 /* Node.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA37D7615C32B1F5B407A5EE086D7F7 /* Node.h */; settings = {ATTRIBUTES = (Project, ); }; }; 570946E17F460217CD71C4222A0380E9 /* DebugStringConvertibleItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E4D8475C8A1839D5568E707455D012D /* DebugStringConvertibleItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5734D611E435214C1564D3BDCD7C5758 /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2D0D22F314D7C2DE88B31A3FC2C571 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5772DF2C067E6A85596FA510298BA4F8 /* Hazptr-fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 672462DC44BB30457BE236484F3C6E87 /* Hazptr-fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5774E5CBA2D497BC21DCD6A7426FD492 /* symbolize.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7A230B7C6D6ECDDCB14F95021BE6FDEB /* symbolize.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 5798BDA11D8CD9E1ABFE915438104A52 /* SingletonThreadLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = 581A1FBA46FBC346F25CDD31C00AE6B9 /* SingletonThreadLocal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 57D605E0D28B9702F02AA9E07913BC5B /* SRRunLoopThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 6117F9BDA4E91FB3D03F3728A914954A /* SRRunLoopThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 57E323C310C3D972940C78AA088CA477 /* RCTMockDef.h in Headers */ = {isa = PBXBuildFile; fileRef = 89BF32B08D57FC97C721EFC866E0143F /* RCTMockDef.h */; settings = {ATTRIBUTES = (Project, ); }; }; 57E8B60FD6E5FA9BF534BDE834453809 /* CxxNativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 7338ABD9F7418479DEDE3C5284F4FF6D /* CxxNativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58150B290E77D2844EC1945D79898DBB /* accessibilityPropsConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = D74ED33694328372E1EA1BA3F0EDD255 /* accessibilityPropsConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 586EC27EA2327C50B996F9ECE3F189EE /* ThreadCachedArena.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFB9A68F41FAA405A3AAE37295C10B3 /* ThreadCachedArena.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58733DF826D51EAEC7CA3324769E06AA /* RCTMountingTransactionObserverCoordinator.mm in Sources */ = {isa = PBXBuildFile; fileRef = F261A91F0724E8B1486A1BC201FD1425 /* RCTMountingTransactionObserverCoordinator.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5873B575B8FE7E9DE3AE028E0C2665E2 /* ViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = A21CEC9ACA2547F2173B743914CC6A16 /* ViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 587F3DEE36D4A28B892F91335A246DC0 /* RCTTextSelection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 75AFE3EB6154E61D88A4F383A81B33F0 /* RCTTextSelection.mm */; }; 588CEDBD51EA57B98878F8E614A4E4C9 /* YGPixelGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D9F600ECC14E962003AAB9F191233A /* YGPixelGrid.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58974F1CDB4BC9CAFBBEA3777F0DFEBD /* HazptrObj.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C9CDB63BA2D2FD4FCD5F884193C864 /* HazptrObj.h */; settings = {ATTRIBUTES = (Project, ); }; }; 589F7F415548D3401ACB27D2FFD63E29 /* RCTParserUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = AD13EA361260D530BA7944F0CFC046E1 /* RCTParserUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 58F393E4C17D34757898EC95342CE376 /* Dirent.h in Headers */ = {isa = PBXBuildFile; fileRef = A3B4504723D37DDB3A1BBB28AE41070F /* Dirent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 59284F057F926EC5DA3ECD28FDEAAD96 /* JSBigString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D666A8452A306A927BD1BED745FC5CB5 /* JSBigString.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5947D88D6B066FB8DEC986C769F42F89 /* F14Defaults.h in Headers */ = {isa = PBXBuildFile; fileRef = FE9C8096CC17775F6B3D7F51F755BF88 /* F14Defaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; 595CFBAE163B26652CF24E4EC2D1CF08 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54977C60EFA8732D452D9D03923B5270 /* Unicode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 596F0520CF8E60E8AD98030F6E71F346 /* Props.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE12A7D304717866DC9F308C7951109 /* Props.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5982D84D71BBA6ABEEA3A813AC63C837 /* ImageEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 996448BB93D8203D8D6C59B2D0B33BDA /* ImageEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5986E5044FACB904AD3636FF14E01EA8 /* RCTNativeAnimatedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 16AFB3F99F57DB5AEF193C3CB1BC1A49 /* RCTNativeAnimatedModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 59917156FF1333C1DBE02BE01BC71BA5 /* WMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 598C51078F81B88ECED26E0192A48207 /* WMDatabase.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; 59979756F484B99D5385635F11BD5882 /* BaseViewProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31E12D3E887518AC0490584345788F27 /* BaseViewProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5A96B83B90FDF9B1DFF02B7907CDC6AD /* RCTTextSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4162FD06F15F97900434A78640AA96 /* RCTTextSelection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5AAC1149A7EFCE52B0C9734F26DE5DFF /* dynamic-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 687B26F2B573590EF9ACE0B564A2A4D8 /* dynamic-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5AACF18D85E08DADE6C9208ED3F6A7D0 /* AtomicUnorderedMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 473969280531057CD249A18AC62DD076 /* AtomicUnorderedMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5AEB23424B59FE64465815AA360C3FA7 /* ShadowTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FFB2C7DB283EB3379974035A76B3B13 /* ShadowTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B05BCA19F4B7C0CAEE8D7E914493F1C /* RCTFPSGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 5732AA2AC0D6C97862F2E84E6A43D27D /* RCTFPSGraph.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B09CFB50E640F8977C0E91123BBF38E /* Task.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCCADF61AA384004BF02F11E1A50B9 /* Task.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B1BDBB882CBF302AE93AF1F4B4A5449 /* MapBufferBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 3954F92E91DCCCD316FC570C39037C55 /* MapBufferBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B413C5370B3C8A5A6CE70D0FDC10BDD /* RCTLinkingPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E93927BD0D92FEB9D950507CCF5E2FF /* RCTLinkingPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B52BA28DECEF4797254071E699E01A3 /* RCTSegmentedControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AD33F21CFF457D719E527B0A4413B4E /* RCTSegmentedControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B54AF84CA742AC586CD4B9A08153940 /* FileUtilVectorDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = F1446E5B5E1E6532A8129EC19A5BC514 /* FileUtilVectorDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B6BF9900C79C4F7623A28977857CB1B /* ErrorUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 06E5E1100A0E21FAB430C3718568BD64 /* ErrorUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B99C5727641114A90831747A6FEBD1F /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 4403122C16D5B003C8984E009EAF54F1 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B9EC322BD0660BBB5BB7EEA03DF27B5 /* RCTInputAccessoryShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D47D15D9888ECC847619622D47F370 /* RCTInputAccessoryShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5BCC3880E6ECD139C026CD443E4DF521 /* NSURLRequest+SRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = AE45D4CB885CACA4B317542378B0D81F /* NSURLRequest+SRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5BCDE01BA0D17F0DAD52430823D76AE3 /* React-Mapbuffer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EEA744CEB6248472C8D4DCFAB2E718C /* React-Mapbuffer-dummy.m */; }; 5BF35C7D201412137E9D7BB5C052F714 /* RCTTypeSafety-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7780098F7787B2514F2C008CC3E13B73 /* RCTTypeSafety-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C19BB5F6F8D75D7F453899B49714925 /* ComponentDescriptorRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64B98B991654E98484D4253805E17035 /* ComponentDescriptorRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5C24DA799B8DE8BE45C1EB910F6465A1 /* YogaStylableProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 27F831318E526AEB0F7F8A65C1891EC5 /* YogaStylableProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C74608D4E02F4D4AF0009F7622CECFC /* simdjson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5E92316DAA53D54019FF1D5E3697030 /* simdjson.cpp */; settings = {COMPILER_FLAGS = "-Os -w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5C8C3D423B3C1790471F00F9BBC248DF /* FMDB.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E4E35B35014E917353983248FC5B53 /* FMDB.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C8E17910713620E360E4C279B7CCE2F /* ScrollViewComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 610A9C5BDF3BEADA074AB1F27B23F1F8 /* ScrollViewComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5CEB688BB02A5D825F1C26B4E8A7DD04 /* ThreadLocalDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 232D444DA9A20C7509F589FFF2D7E4CF /* ThreadLocalDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D153DBD866010FF03F00D7EB90D9361 /* EventQueueProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A4636B3DC5A729E8F40B4860ACEC4B4 /* EventQueueProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D15D3759AEB01EFD4AE2A00A7EE7E6C /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA38E07EBA75420D2E3C5C4B52A3B22 /* Event.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D2030AC19338EA569B5CA75254256FC /* RCTBridge+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E8DBA50CF66D81EB39C5BF3384B3D3 /* RCTBridge+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D2222F04E5E303696BB63978D35DA5A /* RCTImageShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B3256FA995F839DF8DCEEFCF7DD785 /* RCTImageShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D29D817CD0566EC101B3FB3C26BF9C7 /* ScopedExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B40A55CAE96B9EC2411B625D3F58ABD /* ScopedExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D51E24D431131B975A541BE5699EFB4 /* RCTBaseTextShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CC013CC571FE4BC5DEEFD2D0D37B0093 /* RCTBaseTextShadowView.mm */; }; 5D59046CAC4D66AFB8FF14E482B6F799 /* Class.h in Headers */ = {isa = PBXBuildFile; fileRef = 570DABFC32CF97AB28B8269609BAD9F8 /* Class.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5DB693C55C2912ACE4C601D9D4397DB9 /* YGPixelGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB17B662459CE9B65E9A84AF92104DEF /* YGPixelGrid.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 5DDFBA8FE4985DDF178BEB5B73F79F01 /* RCTDevMenu.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A57B42E48BE086DEBC492BDE3BBD3C9 /* RCTDevMenu.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 5E4BA94A4BD1964E50FE99AF6BF0B983 /* CxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 361BB64B7C65C06474C5DFD08FD49799 /* CxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5E57BD5B12A2E5D8A4784FF8838DE6F7 /* AsynchronousEventBeat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EFB5E0D35E76A4F34C8D5195B2051AF6 /* AsynchronousEventBeat.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5E6D160C875DB3935553DD37CF62507F /* AtomicHashMap-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 861717776176D0307718AB2E8E102C67 /* AtomicHashMap-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F0D2CCE2513E3AD3AEFD8B5897BD3C2 /* ImageShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F1014498794A7BE263384E6C973334C /* ImageShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 5F232EC5AAC8B35EBB5427FB1C7EB303 /* TurnSequencer.h in Headers */ = {isa = PBXBuildFile; fileRef = 890E8592B2798AA968BD07CDFB3EDD9A /* TurnSequencer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F37D7E6B6EEB1FCA64D72A039B04E9F /* HazptrHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = BB06B409B4DDC6FA88630157B314F883 /* HazptrHolder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F40E7EA0BF1196D0390F3DD1495FDE8 /* RCTImageEditingManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 761CE3FB688FBACCB93A3B8CE521B969 /* RCTImageEditingManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 5F4C99E3B76689373D2ED7C28927F12D /* RCTTurboModuleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 875E97EA9D0677F39C4C3599772B2F46 /* RCTTurboModuleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F8B639C0CAC522C3057CF9E649534CB /* RCTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AAB3F0857A0C2C40FE99C2A4ED8BB69 /* RCTConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5FCF219B74C2FD233CA9AD48E6970912 /* RCTDebuggingOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = AE3CEE292BC38DDDB735B092E8F32A0D /* RCTDebuggingOverlay.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5FD22DEF7D57A12E857927FC67567E05 /* RCTPerformanceLogger.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5FCFFA906B90C33953D846D226E2DF4B /* RCTPerformanceLogger.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 5FE16776440A3CFC53E25FC6F8F3D8B7 /* DatabaseBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD3A4B3EC7E715CA1E677122514FEFE8 /* DatabaseBridge.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; 5FE63D5DEED1E0D7E9211C479F3DBBC8 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 73058D524065BD36521A8D2FAA24552A /* utils.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 60190426D00C02887698BE0BE510103C /* Sched.h in Headers */ = {isa = PBXBuildFile; fileRef = 326E52CD3C6A37497F8D253F7BACCFB5 /* Sched.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6035F2E5BEC7F02E3206FBCBACE06A55 /* tr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ADB0726235787BE84DE49AC4624711EA /* tr.lproj */; }; 6068983DDD1A40F8FF987CE6E0497CA0 /* React-RuntimeHermes-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76A1CBFC82E23FC317730FE377F95CCB /* React-RuntimeHermes-dummy.m */; }; 60A3E51312E73BB59DFED0E1D0286A79 /* DatabasePlatformIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7FF0FE18123413DA783550212321BE91 /* DatabasePlatformIOS.mm */; settings = {COMPILER_FLAGS = "-Os"; }; }; 60C96C95ADCBADD5869F99A9F1AF8374 /* ComponentDescriptorProviderRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BB02A1AFF68DB9D0E2B844F9E1E8A2F /* ComponentDescriptorProviderRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6110F4F96597CB3D4486AF424FDBC834 /* Database-batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B8C5097DA5EAA46AB4FF88AA6F8D6F5B /* Database-batch.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; 611EACB7C5FFA63323E0F5D4D49E0106 /* PointerEventsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = D11BE31D2BF618CFBCC52352A6567B70 /* PointerEventsProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 611F097A4869D5565DF7C9B9354D8D0B /* PageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF18A646E6EA4CC7C73600700D4BDAF3 /* PageAgent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 614A74B5BD426630D339F25D429EA463 /* Pods-WatermelonTester-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 413649D5C571D8A6170C6A4424CD088F /* Pods-WatermelonTester-dummy.m */; }; 616FF362B4F982F5D81312544F221FA7 /* YGNodeLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9841711B9F3A736014573E0B62D9C1F9 /* YGNodeLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 617C1D1B08BAA6078A2F22FCE63F7826 /* RCTPointerEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 90049B8377428D5B7434F2C8680C87CF /* RCTPointerEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61A92A507431FC4F546B5C86D863FA73 /* fnv1a.h in Headers */ = {isa = PBXBuildFile; fileRef = 6960AF2620CFE6726A4B805D48001166 /* fnv1a.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61C9E79CA790A9EFE30E8C8D0E2B8ACE /* ro.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 75003887015004482CFDA84D733744C1 /* ro.lproj */; }; 61ED3B991EE724C64D6FB1334A0314D3 /* ToAscii.h in Headers */ = {isa = PBXBuildFile; fileRef = D7914657C80BFE4F7E8E537249F07FD6 /* ToAscii.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61EDAC784E6BE6CC11E90819789A6DAE /* MPMCPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = C87FD57CD4AD96B0BBB45FC4FEFA1AE7 /* MPMCPipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61EEB363499D46E2DE3F8E3CC138995E /* RCTObjcExecutor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7BB5D02B327460A7F87EA512F38B2123 /* RCTObjcExecutor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 620070F4FB15245C68AB13C535847EE7 /* RCTFabricModalHostViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = DB2D4AA87F51B33CB9A6EC8B96ED1D23 /* RCTFabricModalHostViewController.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6238DD8BEB29E55D03B1E651157E7B2A /* RCT-Folly-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 315FDA4F573874F2BD0A7F57C70AF3E1 /* RCT-Folly-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 623EB998C85B863F99092DF08C02A46D /* RCTEventDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = D0FF6F026B2F3AD02FA2F0B47E571D6B /* RCTEventDispatcher.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 62444E4A9DF335C2943D6864448533D4 /* RuntimeTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40E5A309579F3C1A9D1F5C45ED9FFA0F /* RuntimeTarget.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6271EFFBCD61B9CE0F00F1B52F46BCB5 /* RCTAccessibilityElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = B868435FC1BB39A3949840802519A500 /* RCTAccessibilityElement.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 62DE40C34FB60729BBE1B86AC6E785F3 /* EventTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84D732F0DC5E41F018DF129A1E36E683 /* EventTarget.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 62ECA5DA07D5580733EDE413CFCAA475 /* RCTAccessibilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D0A9133BF9CECCDCD33D1F4C38B4C8 /* RCTAccessibilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 62F897E5BAC772F7CDDB7952F87C28F3 /* ComponentDescriptorRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 62321BBFBF2E8E88A946FF1C2655F069 /* ComponentDescriptorRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6335D95DB076B946861FDF0B6504F01F /* LayoutAnimationKeyFrameManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F60384F886271F9FE990A1E05F65D620 /* LayoutAnimationKeyFrameManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6354C2A56E1FE6BB514E79F6E1B34BF0 /* RCTUnimplementedNativeComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = DB5A191A4D4CA731E31AFC8EA19625A2 /* RCTUnimplementedNativeComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 638A4F595CD09694A8BFA8C0F00F745C /* Traits.h in Headers */ = {isa = PBXBuildFile; fileRef = BE2252C1E227B6B138921BA745C6ABC7 /* Traits.h */; settings = {ATTRIBUTES = (Project, ); }; }; 63B539B0CE7DE154473F78239B0D3E75 /* Format.h in Headers */ = {isa = PBXBuildFile; fileRef = AD16D5AA10E8416443D8D1FF1460C44B /* Format.h */; settings = {ATTRIBUTES = (Project, ); }; }; 63C8445391E600554A6C3520D8511A50 /* SmallValueBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E8CB40AE7BA0C7EB4EDD1532C9B8FAE8 /* SmallValueBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 63D7C1B01C0D564F59C944A6CD64462E /* RCTSettingsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0696F27878C985C7F2D9DBBD0BA700E5 /* RCTSettingsManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 63E0D62908E04B6775049890FBFAB50C /* EventLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E743DC457E6CABC5B13E68A381C20913 /* EventLogger.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 63F74B9371E02FCFFD3A99BB3244D79D /* InspectorFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BB7FF49C6C69146DEE4B499147BB9B0 /* InspectorFlags.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6401C5A434CA5B6B493B00EA5DB65EE4 /* ComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 52DD466CEB37236E0239E023F92F17AF /* ComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6404467E34C533EC2006A9DB49333661 /* CxxTurboModuleUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3BD8588452A16BCC311A2F90E96B104A /* CxxTurboModuleUtils.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6427E7DD7ABD9B4675A8B29906B1CF26 /* ShadowNodeFragment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3053B3AC995ECECC071744E464935607 /* ShadowNodeFragment.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 644F1B7EDB5ECC21CCBAE8800E7E31B5 /* RCTSinglelineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 609281012AE698DC460A40129D138A06 /* RCTSinglelineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 645D3E41350D979EE998CAC5B0B50030 /* heap_vector_types.h in Headers */ = {isa = PBXBuildFile; fileRef = DB76EBADE7E968B611B89EC60AA71910 /* heap_vector_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 646368EC7C6F2C08EDD65268D7B7A79B /* RCTBaseTextInputShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 33623931DB49F9BE0BB2BEAD565E5AC5 /* RCTBaseTextInputShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 648546E37669DA35243A1A9CB0DD7C59 /* Launder.h in Headers */ = {isa = PBXBuildFile; fileRef = CF9E8353281D1C3DE0C65A3F7643C68B /* Launder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 648CF10E3E4B6BC8F2867E714C8D3315 /* RCTInputAccessoryShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D47D15D9888ECC847619622D47F370 /* RCTInputAccessoryShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64BE95CF8E1CB240B9219A5ED28B0588 /* RCTMultipartStreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = AF67768C4A075A1A0B7A20EF50D517BD /* RCTMultipartStreamReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64CFD3AB2AD6AFAF98EBAA5EDA7912CD /* Rcu.h in Headers */ = {isa = PBXBuildFile; fileRef = A945AE383969D5B4AC29974625C53F64 /* Rcu.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64F832664A431E454316E1AC03746C0D /* RCTBridgeConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E4216CD44D8D54D9837A48C53488FC2E /* RCTBridgeConstants.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 64FF46086B966FC625E4C4032EA159D8 /* BaseTextProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C40F819940022A549E70BECA41B61A /* BaseTextProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6511219B93A0F6722B55F007369CA247 /* RCTRuntimeExecutorModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C292E04485F2E866A8C5507A5B0F9B /* RCTRuntimeExecutorModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 653AD0E981ED5210BF09AFE61A844339 /* Parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = DC79C41D3256C56029659B9591017FCF /* Parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6598CFB917768FDAB38F05A0AC546F14 /* RCTTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEA1EA0BA3625CC695A4E11E09FA24B /* RCTTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 65C80D5494BD3228D2AD6AAF37AD6EDA /* RCTImagePlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8A81DCEC265B36C702B32207D90DA5F9 /* RCTImagePlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 65F3033C93DD7B1EF83673E19BB9EBD8 /* React-Fabric-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 26902E3757E5D682AFC6C628AF7BD7DD /* React-Fabric-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 661031CD49CDEF2BCD5BE6EC9530D7C3 /* EventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED3FB4188B6B018D64337B5E28DF81D /* EventTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6626D2DBEF601EBA88A883827E0295B7 /* PerfScoped.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8EF1F55FE2016CDA7B786F01C8882E /* PerfScoped.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6629AA88CD8BD22CF2067C68C96E0BEE /* SchedulerPriorityUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = BB8A5342B551F92B8A2537BCC6ED51F5 /* SchedulerPriorityUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66954121FFFD6C5C2B418E27FC43B4F7 /* RCTInstance.mm in Sources */ = {isa = PBXBuildFile; fileRef = EADE36F3457E268442D18E096152CF53 /* RCTInstance.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 66F138CEF6DE7733C00C0EDAF107F4E3 /* RCTParagraphComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 704A79E5BDF7B5ECE6197D355854F3A9 /* RCTParagraphComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66F2E613C99822AF10887F865AF5A7D5 /* RCTSafeAreaShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C8572256406ADB7551DFDDCDC585255 /* RCTSafeAreaShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 66F7D45C7DE22886B4121EADD127426E /* RCTSwitchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 39F844696BFB60487E053DE52768656B /* RCTSwitchManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 67721682C2C9B376827FE29F914C2AF6 /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = C981FCFDF37E877B75038B1246411D6A /* Exception.h */; settings = {ATTRIBUTES = (Project, ); }; }; 67745EF2FCD4C0DAFE55F235B9511877 /* MethodCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B01C2C65E7B02816E8148154C56575AF /* MethodCall.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 67D6B0FEE7276ADF5A34F358361A06C3 /* RCTSurfacePresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2DFF23AC104B04562F5A613D62A6E2 /* RCTSurfacePresenter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 67E1C84F832F8DE7A9AACD8F3E679C16 /* RCTInspectorDevServerHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = CF9F9BDD710866E3AB298A535A581739 /* RCTInspectorDevServerHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6803F6AF68CE85F55D315BE81FC01F8D /* DistributedMutex-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 25B4E76DD481D3490220E28604E55673 /* DistributedMutex-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 682AD90FD13AF03CF8AC476D4EC22BA3 /* RCTWebSocketModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 15E1BE174AEA123290CA37B86EFDD5F2 /* RCTWebSocketModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 682BA7F2BE81C4075B446A8A758EC098 /* MoveWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE36ADE7B7AF7E211B4A734D83A30BF /* MoveWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6869C0A56BFE37D366E0622A737744A8 /* React-RCTFabric-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 887027C7FF12FB7338869C776A7CEFBF /* React-RCTFabric-dummy.m */; }; 68AADA5DEBA7F22FBDA95B379E595DB4 /* React-RCTNetwork-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8A9743F92811B06400AED3B4A0C3135 /* React-RCTNetwork-dummy.m */; }; 690D37470240502DB939F1A3D7206454 /* RCTBundleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 86F28687E953C2F68F76CE4BB56DE52A /* RCTBundleManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 690FA340A00937B92D570D6C37F9F0D2 /* RCTJSThreadManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = DB54433DB90DCA8B444031497CC05E80 /* RCTJSThreadManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6918BE63EE0EE0EDEE58BBB12179E846 /* RCTDataRequestHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 976E60D841E3AEC485885E2A36C843AC /* RCTDataRequestHandler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 6931B8611963D0778CA2593797258243 /* TcpInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A32F2995E9FBCA38F66600B356DD02C /* TcpInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 696574E499A1754A5256C14C2130648B /* AccessibilityProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28FF824B4005CDF78CA3A774CFD2549B /* AccessibilityProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6A0F9437521FAB0502857D5DAB6314F4 /* bignum-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EAAC08BE2B9CE538A0D58679E781247 /* bignum-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6AA211002A317FB9EB7047EC3E0B6CAE /* RCTAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EA2794840FA725A97054EE3C4C201C0 /* RCTAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6AAA9F629DBACA51982194772C98C826 /* RCTBaseTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = CC9E0C53D02E49E161CC61AD2E78DD12 /* RCTBaseTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6AEB18995E0DCEE6CCE54BD53AF7B465 /* JSIDynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FC40232E2C55EB617E3DFB087BA95C0 /* JSIDynamic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B4C8962F186CAEBD9C1D8E294C4CBF1 /* Point.h in Headers */ = {isa = PBXBuildFile; fileRef = 75666A7E9DF4B81A7D9C5A782A0BCE03 /* Point.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B4D310DF575EB380CFD8E9008409324 /* Poly.h in Headers */ = {isa = PBXBuildFile; fileRef = 2779D7D33AA6E41DCE7991AF63682C57 /* Poly.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B5291757C966F9ADE1BCEA1803F2FC9 /* TcpInfoTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5776F9A564A106E1D34D8C2B6FB41C78 /* TcpInfoTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B52CF6C070C5E98C528FB32F1D34624 /* RCTTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FEE6ECF7F217445EBD97C857669637 /* RCTTiming.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B8F4AA8DFDA7E810544992C621FB2AC /* MethodCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 3863C406F7D65140B03ADDF3E62B9914 /* MethodCall.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B92459CC6D8AE87C82FD9DA5D8B34B1 /* RCTSurfaceView+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BF78B5D7B2AFC98B3545C8C9DA66D16 /* RCTSurfaceView+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B9B49A3703636ADC90A520068F48C55 /* RCTSafeAreaViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A2407C78B8F357AFB081AF5B1BC953A /* RCTSafeAreaViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BA23844D9DCDD1AEF37DB5060151CAF /* ViewShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9146BC2894F3FC7F11EDB10CB1B6B9B3 /* ViewShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6BC9C5D894D55A6667A506FC47D1F83A /* TouchEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB8033D6D308790A5A46B3BC15DD1BED /* TouchEvent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 6BF410C3D76E672A08E4EB084CFD21BB /* StubViewTree.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8C03F6178FA2682E0DD2D5F53F222E /* StubViewTree.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C014D417DB501CB7E7EC168EEAAD449 /* Errata.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ACDA1105A253290970D63F1EB10F574 /* Errata.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C0DB8EAEB1FCD9CDAA61E9B467F4CF9 /* Benchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF657DA48FE202E91262C142A30C2EA /* Benchmark.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C1392E4CE9C70E81D25ABF34EE9631D /* Registration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBA46B29F3F06B0AEC0E48F4C7C99C23 /* Registration.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6C387AF206A5A29A99340C38D35138DA /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = C8E070E3387DCB006D125024D0D086B2 /* FMDatabase.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; 6C5725243C44011456F42C6A14F7A0A8 /* RCTSegmentedControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CC7171C241F88DC2439CD6C9B3B9BDA /* RCTSegmentedControl.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 6C963BD5A4AF0CBEE113E34A5AD7D0A6 /* Futex.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8652189AEFEC58162855B790CFA15 /* Futex.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C992FA96B61EF3505BD53ACA873BFA8 /* RCTTypeSafety-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 606BAB14D960C896D177B10A3540386B /* RCTTypeSafety-dummy.m */; }; 6C9BA8A8F1B09000220A1C6018049397 /* RCTPropsAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9741807E424A3C28F079A8146D8AF4D /* RCTPropsAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 6CA3161E6FA8BEBED33FD2FE8E1B3DAF /* ReactNativeConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F593DCCC2DAFF6D4243AAD2A5156F10 /* ReactNativeConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CB1E8F84A18475FBACB6C3B62D0AFE5 /* RCTUIManagerObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DACD0189E12C716542A13351B01B317 /* RCTUIManagerObserverCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CFD8AA29F2E9C848CA60CC969FCAB67 /* LayoutConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA7713221A3B353A10E5D4A3E848D96 /* LayoutConstraints.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CFEA0E6658C47D9BF410F09BEEF98CE /* RCTCxxInspectorPackagerConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 53698A773FE28A1702762D414C8FD31B /* RCTCxxInspectorPackagerConnection.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 6D0967A5AFE1B86D8D5B8C084797FA58 /* RCTBundleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CC1AF02076781F56494CFE9B171135BF /* RCTBundleManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D208E676E5ED9C469B15EA9ECE737DD /* F14Policy.h in Headers */ = {isa = PBXBuildFile; fileRef = 130677CC93E00689A413DE1C5D45754D /* F14Policy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D26C8780D61C6AB8EBB3BD7540D9A0B /* ClockGettimeWrappers.h in Headers */ = {isa = PBXBuildFile; fileRef = E416B0C3A1EC58515DEC41DF3D02E01B /* ClockGettimeWrappers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D36A6FFC2488415258EFA1832790E55 /* RCTAlertManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A0CFE0D44D175E1A391C2129A3C3EBEF /* RCTAlertManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 6D47DA4D57A4DCB9E5DE1A5C727BE1FF /* RCTErrorInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A69BE346BCF36781D025E02DA26992E /* RCTErrorInfo.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 6D7AA2A2008AA3CFD3185810516DD2AD /* SRSIMDHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = BBCFDB39D48C37A3AF9AA77A7A2AFE14 /* SRSIMDHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D868A2B81C43D395DCDC4C4B6FC60F6 /* RCTSurfaceRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DB4477408C47E85F683E8ED165D3AB /* RCTSurfaceRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D9019B41C60A4DACDF6D306788014AB /* RCTSurfacePresenterBridgeAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D6E9C9334A02233898F7AD14D17E2C /* RCTSurfacePresenterBridgeAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DA8C2B7DF486142D81AE0FA210DB2DA /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = DFA6EA2550443AA8D5C90B1C550AD342 /* FMDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DDB890790361CB27DE50CD880831B9A /* SystraceSection.h in Headers */ = {isa = PBXBuildFile; fileRef = C7426F344668A4D9141914CE841C3534 /* SystraceSection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DE90170CECE293E1A4F1224606A79BF /* RCTJSThreadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 99706928F57B54531F9949E340BFECB8 /* RCTJSThreadManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DE9B9D9006DC5CA4ECA2D53AACB958C /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E6068776F49102288177FE25869B4F8 /* Demangle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 6E04193FE94D6D98EA1599FE3589B5C5 /* bignum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0BFB85B76F6C2F9809214837BFA1F944 /* bignum.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 6E29FD7F204937BC53BC1010354EC995 /* Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 071916D0DED7AE1D3E16FC6FEF5AEFAD /* Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6EA7026AD8D1F370E0A660F1A4FF7A07 /* RCTBorderDrawing.m in Sources */ = {isa = PBXBuildFile; fileRef = 35D8CF26BB70259E361BDEA1E77D32E1 /* RCTBorderDrawing.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 6EC429788275A10A19015F2048C9AE9F /* RCTDataRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 544A0D0CF86148CB2EF0B78039179444 /* RCTDataRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F63BCBD2B1E7B4CF5D5A7578A70108C /* RCTUITextField.mm in Sources */ = {isa = PBXBuildFile; fileRef = 940919353E8C57E4A2A3101E8CD0FA67 /* RCTUITextField.mm */; }; 6F9E2B385846EC9BB5EFF49C7BCF8AD5 /* Stdlib.h in Headers */ = {isa = PBXBuildFile; fileRef = B4731BEAE5B9F1A65FB492F06B455F7F /* Stdlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6FD855099FE9DD6831F7AA14A8D6F777 /* RCTBridge+Inspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9298A1BC8933244F1905CC7B380EA1 /* RCTBridge+Inspector.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7006296EED73C5539402EABE1BC4F702 /* PlatformColorParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 00D0EC9AE90BED5D79B9CAE98DAE902E /* PlatformColorParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; 701973358846CBEDD827355528F51546 /* RCTThirdPartyFabricComponentsProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = E9AD225EDBC81406F600822BE5CB48E9 /* RCTThirdPartyFabricComponentsProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 702965A08043A7A64AAB09E780D08663 /* CArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B159432A0D462B5E94046B7320846BC4 /* CArray.h */; settings = {ATTRIBUTES = (Project, ); }; }; 707CA342CE6A6666CA1D5E537C243D40 /* AtomicLinkedList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E4412A2483337D140CD540D4751F2FB /* AtomicLinkedList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 70ACDD1F376B8B5A7FB1A8F2A0B908A6 /* RCTBorderDrawing.h in Headers */ = {isa = PBXBuildFile; fileRef = 7301D9F85906E2D5E3E899138ED1462A /* RCTBorderDrawing.h */; settings = {ATTRIBUTES = (Project, ); }; }; 70BCDC41D1A0240B3FFE10DEC03C5569 /* RCTDisplayWeakRefreshable.mm in Sources */ = {isa = PBXBuildFile; fileRef = 492E9A2ED4F5B423E522887CB7BCF477 /* RCTDisplayWeakRefreshable.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 70D9A7BB79BC5B0A87CC0B371A49D87B /* RCTPackagerConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 03AD611B7986C5B131631A16A6DD5262 /* RCTPackagerConnection.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 70EDDB0D146F95B1139062781D9309BD /* RCTFont.mm in Sources */ = {isa = PBXBuildFile; fileRef = EDE4A26ED9B011F0E70494EBA45F89FE /* RCTFont.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 70EE94B444ED9B2CA09A5C36DC60E4D0 /* RCTFollyConvert.mm in Sources */ = {isa = PBXBuildFile; fileRef = C2A33F80F6DC091C0F0D9E733BE5F440 /* RCTFollyConvert.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 70F5A59001862BD0B1E8871F16584977 /* RCTMultiplicationAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = AF0447D9E9E638217D6EABE45C7E0632 /* RCTMultiplicationAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 71128E53B471C85A99F88750408B7752 /* RCTModuloAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F146A98AD14FE819BCA98EB3275AD3 /* RCTModuloAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 711E2F00A29C1C7E12B55ED37DB50C58 /* jsilib.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6371A9E6D76C16AD518CC288F335F4 /* jsilib.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7148B8D601E67D9B8727775F7233F7FA /* RCTImageLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB78B415F6A4B0EED05C08EA7A7D03D /* RCTImageLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 71A038ED712C2249A49737A7DF499932 /* HazptrObjLinked.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FFEDA5AF4FED3EB1CC515BC9BAB2760 /* HazptrObjLinked.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71AF7D9527D112BC4D62C7A8A3A7AF60 /* BridgelessNativeMethodCallInvoker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 145565A2AB5DD84BEAFA27EAFA2F4141 /* BridgelessNativeMethodCallInvoker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 71B25172A6FBB06AE6F0AC803A1BB03F /* SurfaceTelemetry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6353D5B2828F0A532FAC374FF901DD8D /* SurfaceTelemetry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 71CC2CB38EF9DAAD4F64835EB538E676 /* ShadowNodeTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF461AA27476D0FDF425B3D2483EBA /* ShadowNodeTraits.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71EC53ECE20B5A8A07D43AB6854CDBFA /* RCTEventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4059CB54B248E9CAF8D2648832EF03C3 /* RCTEventDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71ED29F2A5198E2ECDC85E8A33913487 /* ScopeGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C6F2A8DD916FFABBB7924E8D417B7EC /* ScopeGuard.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71EFB67CDD3BFD1B8FD94E74C72C2164 /* JSIHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = E0D2348E6FB9A55FE8BC6E93389B9432 /* JSIHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; 72294B58C56420DC0B78EABE73A60EC7 /* RCTConvert+Text.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B62C6CE9D343C56E332C5816AC631E6 /* RCTConvert+Text.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7232F323AB9767475B711CD115277385 /* React-perflogger-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB1209D9BF3AC7A5E77178DCA9C126A /* React-perflogger-dummy.m */; }; 725DE6774E7CF785ADEBA7816ED0930A /* RCTTouchableComponentViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 2362BA983B00A2A04C7C991889E743A5 /* RCTTouchableComponentViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 725E303EAE71CABAF946B1516618C4C2 /* MapBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAA3CCBDA9FDF8609E0495A48B080979 /* MapBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 726C35D99D2C6DAD679EDA901EEB9989 /* RCTTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 289131589CCC21FDAAADD8DA0E1EA4A5 /* RCTTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 728B39A23F003D9E9FB6D384C4B8EDBB /* BridgelessJSCallInvoker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1EEF0D5633DA10F123E110EDC4C4947 /* BridgelessJSCallInvoker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 72A0C6D8AACB0161DD9A9B7B9BD3AB0C /* LayoutAnimationDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90666F35881E0B6CF16A7F6D502820C6 /* LayoutAnimationDriver.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 72BC0086E48E7F1B9CD8230A0B5D461E /* RCTBundleURLProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 485B66F0206CCA9ACBE8269CA49B3639 /* RCTBundleURLProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 72BF4275B8B3660B1CBC3F8945E499AD /* LongLivedObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 326FC938C2E12371A877E5FA46F37777 /* LongLivedObject.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 72FD3B8D4EAC12F432DE6B6350A8A52F /* simdjson-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A80A385542A9347C200F57687297EA39 /* simdjson-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 73027B4FD5ADD813B85FBC3D74837FE0 /* React-graphics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BBFA4AD81E9D3D79B1B796B93AE70766 /* React-graphics-dummy.m */; }; 7345128E1576262D321085D0675568A8 /* RCTClipboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2540C4EDDFB7CCCB96D25E31E2F57B8 /* RCTClipboard.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 737485B0EC651803714A2412F1A1EFD5 /* RCTTurboModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41D562BB5F84842F8DF9293C3DEB309C /* RCTTurboModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 73AA961A1CF8EC1B0DDF4D53963928FB /* ThreadId.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82BDE129A63F08D401D705753189D8B0 /* ThreadId.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 7438BEC925296FD9297DD9E7EDA478F0 /* RCTModalHostView.h in Headers */ = {isa = PBXBuildFile; fileRef = C55375F5233C369562ED2EB95C0B34D6 /* RCTModalHostView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 744611E545D70C9024F524DCDE333162 /* DiscriminatedPtrDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8C9FA47D47B64CE6F506ABE68FCF06 /* DiscriminatedPtrDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7446CA132F347A062A8953D8892D48C0 /* AtomicUtil-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = AFE2AC3DE4D98F6A8B6D36ADB8E51F46 /* AtomicUtil-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 744A6AFA4DD1A2C8C42B91DDE1A6F835 /* RCTShadowView+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = A85C9B1C1144724CD503C69AEA9FCD8B /* RCTShadowView+Internal.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 744CFE8EFE8318B6887C7D057FB590D2 /* ReactCdp.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CEDDCFAB391081A6C3EB050DB9303AF /* ReactCdp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7477B4ABF6296B23A00F0D50C65B6E7A /* ShadowTreeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BEE9CFB3C6827C1D888BAFC061BB79A /* ShadowTreeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 748AE618B291F6E05DC17EDB4E4728A6 /* RCTImageLoaderProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C5B05D7AD22B1F14DC12650D34552F69 /* RCTImageLoaderProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74A3831F302B0755566D22D3C30C2B74 /* RCTClipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 890F493171D8B37E354419CA6A05C95A /* RCTClipboard.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74B6269F717A43150AE71628996EC8FA /* RCTI18nManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 735061C18CFE3076A4C204A7CCE1D301 /* RCTI18nManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 74C33EA812E975499F57B54E5A3793CB /* SRProxyConnect.m in Sources */ = {isa = PBXBuildFile; fileRef = CC91FDC94E55938A0F105FCC3D4FE542 /* SRProxyConnect.m */; }; 74C3F6DB467F1523FEA9543EA61B4B46 /* EventPipe.h in Headers */ = {isa = PBXBuildFile; fileRef = CF485BFE7872C54223E057A72A0AB6A3 /* EventPipe.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74FD09866C2EEDF289F2151656259CD2 /* SRError.h in Headers */ = {isa = PBXBuildFile; fileRef = AAF4DA1DA2D688AADC65A0DA9B5471DF /* SRError.h */; settings = {ATTRIBUTES = (Project, ); }; }; 750459F7A6D7BC32515039B696B032DD /* RCTSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9113D58420F951D0F8E7D507C99E9190 /* RCTSpringAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 755282CFA23DBA4E963AE5F9CC11C0FA /* RCTURLRequestDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE4624E81D0E4F7D216C71603A6BB12 /* RCTURLRequestDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 755285DD5B651A2374659E51434CAD11 /* RCTLegacyViewManagerInteropComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC1A3A6597F7D2D59AD0CE67E1A09CD2 /* RCTLegacyViewManagerInteropComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7556CD97341C849DE32E85BAC75540C7 /* EventQueueProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B22A0860FE6BF2F9CC4F24C6A16C02B /* EventQueueProcessor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 756FE581ACE3EDF9F30A05EE811C000A /* RCTStyleAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C409D3D492DAB7368ECE438E121DB5 /* RCTStyleAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 757CFD9FBF0BB53294AB26076C6C3405 /* RCTUnimplementedViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 629C51A688E90B65323CE6CC51796EE5 /* RCTUnimplementedViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 75853200EC17CEE70359BDA55A296152 /* RCTImageResponseObserverProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A50B808D51766F1C0B42436A7163DDD /* RCTImageResponseObserverProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 75893F82D0DC6BC54B04FDA1C9DDBA40 /* React-ImageManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 75BD04A47CB6E45D70FC6CC41F55E9D0 /* React-ImageManager-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 758A73A007DBDEE27DAC1076057CB202 /* RCTJSIExecutorRuntimeInstaller.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79FC786FA7244B7B38C8D7E7D63FD675 /* RCTJSIExecutorRuntimeInstaller.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 75903DCA8665A09EAEEED35654CA466D /* RCTLocalizedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 650E79C6CD8DFAF97DD3E4B49C99A6BB /* RCTLocalizedString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 759763993CBCA407771469574C2A48A5 /* CallOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = F9281ACFABCEF5289629EF6589504A67 /* CallOnce.h */; settings = {ATTRIBUTES = (Project, ); }; }; 75A3370597938CD39071A1E5AE25CAE3 /* Uri.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B62C1AD7CDAE58FE4EF82AB2C29AAA /* Uri.h */; settings = {ATTRIBUTES = (Project, ); }; }; 75EE1CD4734EEA84AB3CEBBFBA8B5141 /* JSINativeModules.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB0EF48E6F6F59EEEBA2E0AB6C7E410 /* JSINativeModules.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7604DFAE9BCFB8918643A00E43A0E326 /* hi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 84C78B3BD305937A8FB7F156B1068561 /* hi.lproj */; }; 7695111DF6B3428C79B8FA67D5C29F49 /* RCTFileReaderModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = C059BACE08D3A4EC8B1895D76B07DFE6 /* RCTFileReaderModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 76AE3689066A97D1B232A3FAB86C2A54 /* LegacyViewManagerInteropViewProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61A6746F63145AAB8BD430D845B4B7F6 /* LegacyViewManagerInteropViewProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 76D4A3EF85DBD86A0692A18E5A499246 /* React-graphics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 34875B2D75347ECF94E81DEA4C80D47A /* React-graphics-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 774D516A59D21EC80472A65BB40B55D0 /* ImageProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B54D8461C2AF60CF1BF611F2D31ED2EB /* ImageProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 775374264170BAD2F2656335D8A3DED8 /* TextMeasureCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A8AFB5F8828D81AB1CE785F5BD4DC61F /* TextMeasureCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 77812A80E72FC40B7CFA752C8D75D2CE /* RootProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 13E6AE2DFCC178D3B20D130A2FA35FAC /* RootProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 77D525A44C69C742FB01F240990E6057 /* MallocImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E424FA9074DD171A4AE55BE52EFAFAB /* MallocImpl.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 77DF418FF614BFB9681632ED6F31C37C /* EventBeat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A50EA432D2B83B1014E46448CA68632 /* EventBeat.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 77E6BC3FDEABA7B418C12B3E6F73A961 /* RCTCxxInspectorWebSocketAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BEF797D469DBDB850A55FFDD493B789 /* RCTCxxInspectorWebSocketAdapter.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 783036467F0C5912B8D4A00B02899B3E /* RCTI18nManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA1F0E80816FE3C537ADE1BE9E97082 /* RCTI18nManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7848F7B01636FD30500F733C3953D042 /* SurfaceHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEB18EBDB42AC349730BA29BCF965FC6 /* SurfaceHandler.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 78606A7D8FE0761B720DD4F0531BB36A /* RCTViewUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EE4437365F516793455723C0F9555B1 /* RCTViewUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 78F3EEC46C002EDAB30A6258F8ECB70E /* React-jsiexecutor-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F83B7067F1043FA268569B56994602 /* React-jsiexecutor-dummy.m */; }; 799DB343D6D2A06C4860A8F11EC37FD1 /* InspectorUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97537A67023F6E33A60145FD2CCD320F /* InspectorUtilities.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 79BC0736343C7F0BB40CF262A7093547 /* RCTTextLayoutManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = BDF4907BCEC9C6B68A50F5CBD6A193CA /* RCTTextLayoutManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 79F498AD66CF7B1E027685FA9B830981 /* RCTConvert+Text.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0096A03750976681A81FDECEB7A7D8BE /* RCTConvert+Text.mm */; }; 7A0ED52CE1695B89D2AC55E1350CE883 /* NativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = E9E1F270CEDFF108574DFFDBE7F91985 /* NativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7A26687146CAE994D2AE94307FE436D7 /* StateUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 27DE3F3B20B7CEFB975091316FFFB6CC /* StateUpdate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7A2DCCD2975741E4941FF2958EF8D600 /* TurboCxxModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2993AE002A77BF7B39AAE55DB661DD31 /* TurboCxxModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7A85844B8ABB2A92B190EC2C45988C25 /* NativeComponentRegistryBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD04C8CE4CFE3A8CBF7FEFC33B333653 /* NativeComponentRegistryBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 7A929745AF8FF896CBFC97801A077941 /* Keep.h in Headers */ = {isa = PBXBuildFile; fileRef = F524D0F42CA29ACE3E6C3098C858C502 /* Keep.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7A94A234E15864DA153E2486D544D8F9 /* ImageComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 846EE9DAE34FA678FA761E65DD2F08E5 /* ImageComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7B23CFE3C52926A8B340594C18E30C48 /* UnstableLegacyViewManagerAutomaticComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 32E0BB05F9F652F49EAE1D3EE8E0714E /* UnstableLegacyViewManagerAutomaticComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7B283574381E52437094359C04A8B040 /* RuntimeScheduler_Modern.h in Headers */ = {isa = PBXBuildFile; fileRef = 45D9999C07AC6FD97A5897196483760E /* RuntimeScheduler_Modern.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7B3EFF70B6BC846F386E9B04B567C87E /* RCTAppSetupUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6FD6F1B6DC37EB6391F042FC9AC7E69F /* RCTAppSetupUtils.mm */; settings = {COMPILER_FLAGS = "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES"; }; }; 7B6DA18AF21228DB00C403D3863B7BA1 /* jsi.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C4F509606F5C64CB085DA2D927CDC93 /* jsi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7BE465B58FA44A71A52E4F29C3CCD68D /* WatermelonDB-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 51396501E3E25FB7DCB5E276B819C556 /* WatermelonDB-dummy.m */; }; 7BF8D2646D1CAF6729DF00B7A59FE017 /* F14MapFallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C230DA31F009BBBB74798CD3CE527F8E /* F14MapFallback.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7C0832F738F3B45D9B194C3729757621 /* dynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 788308AAA58E926CC60655199F7DA6BC /* dynamic.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 7C2C313941BEC63BAA8CC3668B949411 /* FloatComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F2B9390AF33F8E9969AE22B88C8280 /* FloatComparison.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7C3A014118CD31C6C26566E08F64BC3F /* ieee.h in Headers */ = {isa = PBXBuildFile; fileRef = 7777F6D0013ADB2C7FBD5FE217F042EE /* ieee.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7C4B2259B1758C2D9AE4D51C5762E6F1 /* UniqueInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB71E81BC5E30853849F01DE038FCE31 /* UniqueInstance.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 7C563026B579F20E0D207D038BBB1E5E /* AssertFatal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C7956DABB206C95A799C60F678F09BB6 /* AssertFatal.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 7C5E0AA1A0D766AEFDB5C3F5FF6942F9 /* RCTNetworkPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4811CBBB4C46F7C891F1F7E426628CBD /* RCTNetworkPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 7D0D84A0154B18374120BC47B1D87B83 /* PolyDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 982AAB27F58C71E3FA007537ED46BB9D /* PolyDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7D2198ADD1AD7461713B493938D36639 /* Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C12044FAE55F8C0F0F5BC236FA00BFC /* Bridging.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7D741114888D6A8F92CA30DA7938FF9F /* RCTNativeAnimatedNodesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C32C30AB7EF3BB474BC4B4DFD2FC61C0 /* RCTNativeAnimatedNodesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7DAB642F45A486822F115BE0920FB465 /* uk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = AD09CCE53769CA1F7BC1031AEBE1E2CE /* uk.lproj */; }; 7DDC9C325BEBF570103734FD7DBC2EFC /* NSTextStorage+FontScaling.h in Headers */ = {isa = PBXBuildFile; fileRef = FADE4C50E4C03A98702AAB8CE87A3D81 /* NSTextStorage+FontScaling.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7DEA6D0B866F977377D21AFFAD5E2745 /* EventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3F08746919747A6F56A2864E48BDDD3 /* EventQueue.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7DF2C6E7CD4B2614333080F4D18991F9 /* RCTFabricSurface.mm in Sources */ = {isa = PBXBuildFile; fileRef = 56BBA94041D86275E476DAC1DD401197 /* RCTFabricSurface.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7DFF6AA49AB89B1D15BDD142FB5C30E9 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = FB5D34754AD28372AC075C4836BC9BDD /* it.lproj */; }; 7E005F703B871E6F1DCBE37739EB9BA9 /* PackedSyncPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8209264577462872BC1AE7772C476E /* PackedSyncPtr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E4AC7154C2CE9CDF1093FA4152CB996 /* SRIOConsumer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B514510C45046BE196402FD4E82FB33 /* SRIOConsumer.m */; }; 7E683945AA4DE479DE6E7C64E77B9192 /* log_severity.h in Headers */ = {isa = PBXBuildFile; fileRef = F08460D67FAF18E84D6207E257538D64 /* log_severity.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E9D2C1821BA925A94462F2556B7C282 /* RCTAnimationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 42A97962C25A869DDED1914B699BD747 /* RCTAnimationType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7EE0F6B05C54DAF73A25F1901169A318 /* React-rendererdebug-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 654197BBD530E127C270633DB539A166 /* React-rendererdebug-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7EE93CAC8D76887681E9984AC37A9FBF /* FBXXHashUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E76F01C60DFCE85A1C8CB416B3636D3 /* FBXXHashUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7EF0E9E009F1F4EC5CFC8B6A2D6B1217 /* RCTObjectAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F35ECB508AB87E99C735B9A8219E2790 /* RCTObjectAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F0FFA25BF039E3FEC89257156006BB2 /* Assume.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C81656E6394B680E495643EDC27FC6E /* Assume.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F192056513AC45D918FE1AD9A537992 /* RCTRootViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5675EDF737917D753E24442B6327797A /* RCTRootViewDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F25A20E6035D2002292AB1D88D1D35A /* Atomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D2C764374D96A2A95EB7DEDB1AD4B23 /* Atomic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F269E29524C0061896B3C3770C62B83 /* RCTKeyboardObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 840FA9BF8D964570C73D3D561CF489CE /* RCTKeyboardObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F39D856A35CF04F8D6416A5DF528342 /* BitIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A3BCF7F218979C84533F1F242327D9F /* BitIterator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F61C911147722C681DB4FAA34CA76A1 /* ProducerConsumerQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = EF3D0DF483D191D626F907294861A317 /* ProducerConsumerQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F87FA23242BAAC6C75BF03E0C3F1BEA /* RuntimeScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B9CF763D328B9FF7CD87693E3153F680 /* RuntimeScheduler.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 7FC52BE19A4972D6E0EFE5E8C062E78D /* MountingCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 09CACB20A3D99F350BE5A1565F4ACA67 /* MountingCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7FC71456BF079C9BFC3E541399E9AD09 /* RCTJavaScriptExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD62DA0698330C52546D1DD499A6B27 /* RCTJavaScriptExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7FFD7CC9EC841E4667F9683D6DB2A099 /* RCTImageURLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4279CDB721ED8120EB0EF927416392FE /* RCTImageURLLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 800168271BC4625A8BAE356763E5F578 /* React-utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AC69D8640FF5ADCACD89B82CB9E1110 /* React-utils-dummy.m */; }; 8020DC79BC18FE1733F382110AA7F9BC /* RCTJavaScriptLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CBBEDCDAA1BFA365580787F950200AD /* RCTJavaScriptLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 8029584710A456EC5C67D4A4BB9A680B /* React-Core-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D24035ED25B87D45E72A4CFB861C024 /* React-Core-dummy.m */; }; 802DC9139C32DC3C41FBEF4AA8CF4952 /* RCTImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA2D560DF5674F43C2F0CF72BCBF485 /* RCTImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 804AB8115EEB65519BFF4EC3478F17E3 /* RCTContextContainerHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = F8DEF690935571E2BA15F11F274EE883 /* RCTContextContainerHandling.h */; settings = {ATTRIBUTES = (Project, ); }; }; 804D9AADCDC8D1F1632F230EEFA6FBC0 /* RCTModalHostViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 373F105CB4DEE4BDB90F46875B73BFA8 /* RCTModalHostViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 80CF2710C53AA456D9BACA32C9F94242 /* TimeoutQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C0FFE3B52F5FC5B9E85936F71606010 /* TimeoutQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 80F7C5E7A9B1BD9CA80E7AC9692EE98A /* RawPropsParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29069E0EE8AF62E25BA127E3020926FD /* RawPropsParser.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 81313E2CDDE7FC92041DDF94657C35BE /* RCTLegacyViewManagerInteropComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 47BE5F90D494B6D74BB9880F6EBD0D1D /* RCTLegacyViewManagerInteropComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 81A2F9C881DD636F42CEC4CD4A9A60C1 /* LegacyViewManagerInteropComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FD672FEBEC49B42EEBB59B54F5CD143 /* LegacyViewManagerInteropComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 81C6BB24D1610AAA396418710B52389B /* ModalHostViewShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED8BCB98B8CAFA45445802548B32ED28 /* ModalHostViewShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 81D57A8CE92E84FEA69A148D1BA897A5 /* RCTWrapperViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB01DFE83E0C8658D41522C80D2366D /* RCTWrapperViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 81DA215A55827E4BA0DF542A3DB8E001 /* SocketRocket-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0585010DB2257C8B62F3B1BE51449BDA /* SocketRocket-dummy.m */; }; 81DAEA474DC6FF87563B93C13FEB6658 /* RCTLayoutAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E1FB69666F2C09161B2E1A2535CC43A /* RCTLayoutAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 81E86C9D8F20FB2F3B4462F3CCD54294 /* RCTVirtualTextViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = F7CB0C6D6849C6DA8C5BCBFA3B2651ED /* RCTVirtualTextViewManager.mm */; }; 821D1FFAF81B7DEA7FF2DCB766C1E069 /* MallocImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = F7DCF7DBDA1DB363572544D437D1EB4A /* MallocImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82422290D96A134494D0B160434C8A8F /* RCTComponentEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 41E25EEE9BD95F7330BCB968457D0541 /* RCTComponentEvent.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 826104B9BF8174D5B23A6D51AC4A16AF /* RCTSurfaceRootShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 37560CB0B831B9181D0E9FE412A827E5 /* RCTSurfaceRootShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 827D7956B2E401FEEAE0266A95CAD3F0 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = F6649A5E0CB0CD5E9B98CB49FE510D25 /* Hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8295C73E52CD5C12A616EE97FE02478B /* RCTDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 224F3D752D59D26136CB03C3D3C240F2 /* RCTDecayAnimation.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 829CE543BE934D8599926B5A0E2FE109 /* RCTDivisionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = AB89B71C07D924F2DA582CF6A4C3CFA4 /* RCTDivisionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82A49A43173CFB3AAB84B2A4DBFAB89D /* SRRunLoopThread.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9C6B9D5678AE4BC86F7AB978C63029 /* SRRunLoopThread.m */; }; 82A759B463C6E280D1C961F6F71BAB15 /* RCTExceptionsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D078B11D9117F5852F1C821A0DD6E65E /* RCTExceptionsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82B151FA407A5ED82238DE63FD119835 /* FBReactNativeSpecJSI-generated.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AE459B4FB63DF08755386C3B4D759D8 /* FBReactNativeSpecJSI-generated.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -Wno-nullability-completeness -std=c++20"; }; }; 82D8D0292794FEB4B58E14E709CB8E78 /* TouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 611398E0E68366F20ADC93BC5D04C7B0 /* TouchEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82ECAFB8B430AB7AEE8A186E85BB87F2 /* RCTParagraphComponentAccessibilityProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CB48239EFF087F22AC48A83F592D64F /* RCTParagraphComponentAccessibilityProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 83029D9A22030F3A36506286BC43B43C /* TransactionTelemetry.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA659BE9F28613C4D7F98DAC5FD1C4B /* TransactionTelemetry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 83113F39C5BD9864CAF8F3E91D01BD34 /* ConcreteViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C6AF51B4A4EA15B2F122DBA7BA5B2A0 /* ConcreteViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 834FA1181483059D08BB31BF631CB418 /* TextLayoutManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC18F953AA41F612F2CB8153565DB590 /* TextLayoutManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8387B15D94ACE3AB8A57F8580B22D08E /* RCTNativeAnimatedNodesManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C9BD5B613E101C64C2992C9C6D47EAC /* RCTNativeAnimatedNodesManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 838D25B894748FE27FAC7FE3F39AA0FF /* TextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3B7CA09D694AABDB4E6816701346CC /* TextAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 83A0F6143A5339BAEBBCA6EA7A4F5BAF /* format.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BBDCDC9E5BB7D47CB6C63BAD034B4B /* format.h */; settings = {ATTRIBUTES = (Project, ); }; }; 83CAAC66FC6430951815CBCA69937212 /* react_native_expect.h in Headers */ = {isa = PBXBuildFile; fileRef = 641D2E46DE82FDC74711D6550B34BB4B /* react_native_expect.h */; settings = {ATTRIBUTES = (Project, ); }; }; 83CB29BA147169FE17245CC493A65214 /* RCTConvert+CoreLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 40578E9386680C689D002917E383C065 /* RCTConvert+CoreLocation.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 83DEC1E75A0961D67CFAD87A5B6139D7 /* sorted_vector_types.h in Headers */ = {isa = PBXBuildFile; fileRef = F804F0627373E6C63D34AAD65291FD24 /* sorted_vector_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 841FF36838662B6C2789AEED5D6016C8 /* UnimplementedViewComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = E80581A669DE626F703216374FF4C3A1 /* UnimplementedViewComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8446DCAC58446356C7F6D58717A0B41C /* Format.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 869D440DACC02CD2540C4CE6A499116F /* Format.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; 8455F11FC6E87759E2FCDDB9086B9527 /* RCTNativeAnimatedTurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = D4758B7FCDEC2C0806CEE3D106040093 /* RCTNativeAnimatedTurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 846A2D046969DDCC9B62226BB8E71C78 /* RawValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB59CE368BC9400B2ABCD47AFB8C08C /* RawValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8494CFAC6607B7239C90ED77D2427B29 /* RCTDevMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = EDBAAC4C0FEDEB6F19329DEE85E71512 /* RCTDevMenu.h */; settings = {ATTRIBUTES = (Project, ); }; }; 84D3648467DDC6B2AD609FFDC7234AD2 /* RCTLogBox.h in Headers */ = {isa = PBXBuildFile; fileRef = E570952D2C710A3EC6A39040970B220E /* RCTLogBox.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8527C5EC667D2988E0FF5B260187ED15 /* LegacyViewManagerInteropState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7A860D2229C54CBF112DD02B57C926 /* LegacyViewManagerInteropState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8558A61F1FC9DCE311F651F6839AD63A /* Sealable.h in Headers */ = {isa = PBXBuildFile; fileRef = D828B4DBBD448E09A3D7C599F4CEFEF3 /* Sealable.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8569FF4D1B56E1A399877F11FC5E97B7 /* RCTCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D26752B3DE0424E4FA28589D9108BA /* RCTCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 857BDC3DE3F7896BD773F402341D9C8B /* LayoutResults.h in Headers */ = {isa = PBXBuildFile; fileRef = ECC51259933A05380339556B6ABE282E /* LayoutResults.h */; settings = {ATTRIBUTES = (Project, ); }; }; 858CE2E693CE69AF1CDE8933197E0572 /* fixed-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA3C52C76B2C3F5E9BA936CB0B3B9C6 /* fixed-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; 85CE887F8160FAC60A5613E583CD369A /* FBString.h in Headers */ = {isa = PBXBuildFile; fileRef = 313F1FACBDF2947C76A286C8AFC6551D /* FBString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 863865180BA34A40972C40C6A7C8E021 /* ComponentDescriptorFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F74E1220FBDEDB27401F3F98612EC8 /* ComponentDescriptorFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 865103DABCB9C2CA4DA86FE8311B4AFC /* PageTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE6CB0254166C64BB61D724834E284BA /* PageTarget.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 869C6BC97E0783E17A7A32A4CB9C444D /* JSIndexedRAMBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25A6D3EB52D98D8E0A7564596C8CE94A /* JSIndexedRAMBundle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 86A39CCE3B6E3D293E0CE2C67781A81A /* RCTKeyCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = 82667B9482B97C6E5629E4F6381B1965 /* RCTKeyCommands.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 86AE12D8AB4DFCEF8C5413A542FA699F /* RCTMountingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B80D5D0E1943CE661F2F4C200BA7BE9 /* RCTMountingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86B3C2F4E98DEF836BAA645068EC7341 /* simdjson.h in Headers */ = {isa = PBXBuildFile; fileRef = A97083B6B19B7182A30872D4EBFEBE41 /* simdjson.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86C2CD9FB54FB1F2AA9CF4F3D84578E4 /* RCT-Folly-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 729855E0C41B82077DDA2290F0B0BCBD /* RCT-Folly-dummy.m */; }; 86D02F0FB4C9CBB82EC56980E53B40A3 /* ImageRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36C08C7FF3DFACBC39FCE541DCF803B6 /* ImageRequest.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 86E509A8309D2C829F649CA6E17F8856 /* RCTAttributedTextUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = D584937399C1E7BBAE37C4B6480368F6 /* RCTAttributedTextUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 86E83BA3D9D13B74E9375EF5DABEBBFE /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = FF88A9733D935D4DBE027D36D5B591C1 /* RCTScrollContentShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86FE8980695E53A76E1F1E83E07F2AC3 /* RCTURLRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E27D0C1422F9594DB63A196340A1C0E /* RCTURLRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86FFDED80645961F5B0E1C77813A3E3C /* MacAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A732660A46D8B89E811D42131A47E43 /* MacAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; 875518F410236D322133384F93B4EE9B /* React-jsi-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 359B6CEED91D1DF8B883DC40D5E04EEE /* React-jsi-dummy.m */; }; 8757125933F9FB281B0CA8D92413FD2A /* SRHTTPConnectMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 44D41289A83BA05369244074562FCAE8 /* SRHTTPConnectMessage.m */; }; 875A937197A2E17F4FFDCBEF110CD993 /* AtomicIntrusiveLinkedList.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CDF9E97D044762C37CF380DC086899 /* AtomicIntrusiveLinkedList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8778EC34B4FB5DDD57124C18CC26AEEC /* FMDatabaseQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 40B78C2265ACE3B8ACB7A504F9CFA4DE /* FMDatabaseQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 87818F7E72E1C8E3028F461ABBCE56E3 /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E7807D90980DF5E58292BD819D067CCC /* pl.lproj */; }; 880558ACD71010548F8BC00CB06E3F67 /* RCTManagedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3842DDC8C8C33A9D3DB8FB30835698E /* RCTManagedPointer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 882323307508D2F24D0977D0A77F86B5 /* Indestructible.h in Headers */ = {isa = PBXBuildFile; fileRef = 8325F6D78EEBC85AE983E28DE38AD770 /* Indestructible.h */; settings = {ATTRIBUTES = (Project, ); }; }; 882AF9DE6433B759F7BD1EDACDCF0024 /* RCTPerfMonitor.mm in Sources */ = {isa = PBXBuildFile; fileRef = A50AFF02E96B2A9FAD9F4CDF5D05C365 /* RCTPerfMonitor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 886A63B1ED1A16230902FA3A13D84CB7 /* RCTReconnectingWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB455EDDB077C84F1FFD562DFFBA54E /* RCTReconnectingWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88730960BF591557697D68FC435C89D8 /* ParagraphAttributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52332B91843419E05974FD7AA782856B /* ParagraphAttributes.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 88847364C16DA3DF2BC6288012F34BB2 /* CoreModulesPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = F40DA4337071C6A25D759BAE9D00C90A /* CoreModulesPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88882DE62CCC5DDB83D711846353FA43 /* SRRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C2D3D50F94DAC3059E02150AEC13F5F /* SRRandom.h */; settings = {ATTRIBUTES = (Project, ); }; }; 888D80843EE8FCA8A3111C91CA24A999 /* IntrusiveList.h in Headers */ = {isa = PBXBuildFile; fileRef = 866D0225560051A219BEE4D4664348F9 /* IntrusiveList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88C7EA300B0E07376EA1EB2A781FE1C2 /* bindingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AD266EFC19E97B68AB736B2DFAE934E /* bindingUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88C9FAD022478A7E8EF82D42816571C6 /* RCTComponentEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 830AFFE41A7F0C0AA095F4DB57B6BD4D /* RCTComponentEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88FF806A114A17DF66BCADF876DACC04 /* SystraceSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 643840DD64D54B52A2193F98673994AE /* SystraceSection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89061AAC16A9D8755BC29388594191C0 /* TextInputShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F468DC980FF349730A91EAB27AA80749 /* TextInputShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 890821868B6146972E028C6CDCFAFB46 /* RCTAdditionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A801C14BFA125ACB2E474AAFB4B2D03 /* RCTAdditionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8933D7B181697994023E7AAEB3DD9909 /* RCTTrackingAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18E04C8FC9E54D8A00245F3E4B386C0E /* RCTTrackingAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89423B1A952759E81DC0C4287F475231 /* RCTDeprecation.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A78B7CA6B87E3C5B857F9EB9B7AF87 /* RCTDeprecation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8964DA67716421A13752C604BC9590A2 /* SRConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2845C7EA5A46AFE22DC6C82FA344FB15 /* SRConstants.m */; }; 896B5C9C328433F866F22E2C7414673D /* Synchronized.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D4B16C5729900BD0CF675EE898C8327 /* Synchronized.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89838E50A5FAC6006B7986F7130E99C7 /* fast-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6A3EDF523AE8279DAD3E84193359461D /* fast-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 898869098F6FB696AA71D98E461232CA /* RCTComponentViewClassDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7219469EB101610CDE06F56EAFF2F90D /* RCTComponentViewClassDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89B15B8D049992388A6BCF216AF8BE15 /* TurboModuleUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED0263B5DB4AF04BF5391CA51E3AE6F4 /* TurboModuleUtils.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 89CCC3121E6749EC7C4D707AD992C550 /* RCTComponentViewRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 36164B0E9E5609F36A0106D648A0FA8E /* RCTComponentViewRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89D89CF3D8BF72B6526EA0FF4E8FC1F8 /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = B07F73246764E395281393D1BFD73751 /* logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 8A092C05BF760852783B87DB4FDB2AFD /* MaybeManagedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1260781BA130D5E430412D17AA9CF321 /* MaybeManagedPtr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8A61C81F74DF0B4608AAD105548E9921 /* InputAccessoryShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5176B30F1DFC1E15711AA1F63DEFEEE3 /* InputAccessoryShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8A79A8939884686638CEF48F3434E6AE /* RCTNetworkTask.mm in Sources */ = {isa = PBXBuildFile; fileRef = C2CB66217B1E850D02CEDC8E10195C8A /* RCTNetworkTask.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 8A819DCA8AD6D57C2222DBE0B7FE7190 /* RCTActivityIndicatorViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21E277EB0A609214CBB931D344238A64 /* RCTActivityIndicatorViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8A8DA15355CE0296C45E81D47DE94307 /* TcpInfoDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EAB5C076EC5BA3D8E0D48CBF9F38DC1 /* TcpInfoDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8AADCF981A3C5BFC9A728A4807F1FD57 /* RCTProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C00DC34CBF0C27CE15A57901CFE39D1 /* RCTProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B3013D13CA5D7852BCEC3F9A0A0D22E /* RCTSurfaceRegistry.mm in Sources */ = {isa = PBXBuildFile; fileRef = 32D1CC8F0E612A18C597E5BDCD724B17 /* RCTSurfaceRegistry.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 8B3A0DE1411F63948C1B7328AC4DC664 /* RCTSafeAreaShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B75886BB83AA90D3B2DEFB75224490C /* RCTSafeAreaShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B6D7EFAE33ACDC84C5716F89DB43685 /* CoreFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 132132CB707C71FA5E68A7BB06EE4804 /* CoreFeatures.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8B8982906FFDDCD41E210EA5727548EF /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA8FFB264289551FCCAE29495EBE650 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B8AC90BDB270B8F075B58F2BC966E3E /* RCTBaseTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = CC9E0C53D02E49E161CC61AD2E78DD12 /* RCTBaseTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B9FA606ADA138041A461B1A45CC47BC /* RCTConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A6371CE2CB24DC0532ACC93642CC48 /* RCTConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8BAF82EA2FC8B67DBAE9B4A39E32ED85 /* ShadowViewMutation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BB2E2D07807B6BB7451133707BC5FF03 /* ShadowViewMutation.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8BE990F2C07DD454945949C7EF8FBBE1 /* RCTLogBoxView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 498AA16C83135C6DAEFCEAE97628D0D5 /* RCTLogBoxView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 8BF6DF9CF222FB4CA16C9FDF00D1A4BB /* RCTModalManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A9951E633F11568F42B8CA2DB0EAAE73 /* RCTModalManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 8C6CD8EF00A7B2AA432B528185A21005 /* RCTIdentifierPool.h in Headers */ = {isa = PBXBuildFile; fileRef = AD69277D74C06C01F9C13CD77A13038E /* RCTIdentifierPool.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8C7240FF4EDFF6B9A2A5E7802D6A8976 /* Singleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B799169876F75C6B694791908FAA1EB /* Singleton.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8CB06AE99C65D0CB47B460E9715D2447 /* hr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 91392F3C2B6C40DD319492604906C7B0 /* hr.lproj */; }; 8CB4AD3BD8F8733099DBD330A38BF9BD /* LegacyViewManagerInteropShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7FB105B5F150706FC7A1068544C1C16 /* LegacyViewManagerInteropShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8CB5FB6855789B1CF6C224E66DBC0DD1 /* Telemetry.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF1FDBD6E5C45FE24CB4F2C3B228AF2 /* Telemetry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D2E0D17D455244D4DADB8163EE9C146 /* RCTMountingManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C2130B95F426EC491603E0487645BCAC /* RCTMountingManagerDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D3920B60E2117BEE3BD89D4270299B3 /* JSIInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 240A841CE45A01661CD44D4EE8B91BC5 /* JSIInstaller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D3CBE78A64B90795160670F9FABFF09 /* ViewComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = F03D40C105C0F07D9C18AE34F3B494A0 /* ViewComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D594C2325978C5D20EE6C5C2824342E /* RCTImageStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7672883E0F8241100C66C2D877FCFDC7 /* RCTImageStoreManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D6641689CE7A4839A8B823EA727C1AA /* FlexDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = D042C4DD00523E4DF1235E10F891754B /* FlexDirection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D71047A3D5C9E1F408B1BD91EE59484 /* ShadowNodeFamily.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E4274F08E4BBF0B6491769157BBB91F /* ShadowNodeFamily.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D8BBF7A84CBAE7584B4D446F86A2086 /* zu.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F04C97A51C7A3AE18D87F7881C39DC76 /* zu.lproj */; }; 8DB2904D172809FA82F53D6DACB6770C /* TextProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF8779EB6F6185F6C461B3A8E5F7DD3D /* TextProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8DBD42E153C1E210DD2D91CBE300795A /* compile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F172D220F95765CFA361637BAAAA417 /* compile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8DD704A7DFB3E7DB7CA5CF748EC11878 /* Edge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A5F0251C69A9CCF2DB3222CE170671E /* Edge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8DDC6079A4374C5B0D4B59CAABF373C0 /* RCTPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = FC938492EE25EDBA884D42C17EE1E89B /* RCTPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E1B5E2097D0875A90955BF49D724F19 /* ComponentDescriptors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE1B2934FABC52774A42A595531E4F6A /* ComponentDescriptors.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 8E6752CB584D97C2A86519B83B482227 /* UIView+React.h in Headers */ = {isa = PBXBuildFile; fileRef = 32680615BD888084B01D830F2196A3C7 /* UIView+React.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E729B5904B3B5667E973370219CDEF4 /* React-Core-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AD9E5C254F43B4A3AC4E7A6452D879C /* React-Core-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E85CB53CC69D87235AB1A5051D02DA5 /* RCTTextInputComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = D015441B32F30C25792A1C654C1FD49B /* RCTTextInputComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 8E8EBCCDD1F8861EE6CA56DDED1D958F /* PropagateConst.h in Headers */ = {isa = PBXBuildFile; fileRef = C844508F5FF5CB3FE66B8F8DF7302612 /* PropagateConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8ED21B7AC493FE347E9E83369F9352CC /* Promise.h in Headers */ = {isa = PBXBuildFile; fileRef = 883F3E36A905B70FC2C8B78E92AC740A /* Promise.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8EE03FCDF67F4EE3290B517CFA87A7E8 /* RCTModuleMethod.mm in Sources */ = {isa = PBXBuildFile; fileRef = CB62AF8BE005DE4640777FBFF95866BF /* RCTModuleMethod.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 8EE950B8A3384D574B426B5A85C62D4D /* RuntimeSchedulerCallInvoker.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D66D180322220310B33E06C2A6650D3 /* RuntimeSchedulerCallInvoker.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8F323E2F2DA6F55192388F26F0C24927 /* RCTSurfacePresenterStub.h in Headers */ = {isa = PBXBuildFile; fileRef = 034CBF9A353EFD13BB30389694CD06AF /* RCTSurfacePresenterStub.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8F8C308FB213101092DF89E03DF5D3F2 /* ObjCTimerRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = F275B31E7A8AAE45DABF741983B8C743 /* ObjCTimerRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8F981C056361D8BEB7739CC67BC494B4 /* RCTTypedModuleConstants.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4E54C446AD8887C61105DE1F1011BC2F /* RCTTypedModuleConstants.mm */; }; 8FADB205FCA25F99038ED124EC0587A4 /* RWSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3F30A04837205FCBA040E0445525A6 /* RWSpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8FCD1C8218809FF67978B99120C99DC9 /* React-logger-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 77BAB7AB8A4B785443BC2813FC1B32C6 /* React-logger-dummy.m */; }; 903DB9FA0A5B63EEC2030D326152B6FA /* RCTDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 69B9588066B95155E4417D77327555CD /* RCTDisplayLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90429B015B1A484B8D95A975975DC51A /* SysSyscall.h in Headers */ = {isa = PBXBuildFile; fileRef = BB2D4F3D9EA6B428CD822160742EC53F /* SysSyscall.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9068BB732F9B931880C0F8BFE1133112 /* Random.h in Headers */ = {isa = PBXBuildFile; fileRef = 94D87B59FEAC0DBA4F9A7E928431AAAE /* Random.h */; settings = {ATTRIBUTES = (Project, ); }; }; 907AF22D8F8271E5F977F25DFA0F73A6 /* React-RCTImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 45FA7F5F8B8980E56D777737778E2381 /* React-RCTImage-dummy.m */; }; 907EB0B80C8BE1DA8C300AA92CB364A0 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37F9065181BD972C82D47E7F46FFBBAA /* Log.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 908691D6E6A6240D9BC651336C71B697 /* ImageTelemetry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 340097AC9A9BF4BAD1E542E436217620 /* ImageTelemetry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 908DF962421BEACE0D0EEAC2BEB84A30 /* RCTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 30162323761B1AB1D7A828CC5D1BE36F /* RCTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90BBE9AC94E874862E831FE5AE51A577 /* RCTLegacyUIManagerConstantsProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0575009F97CFBDB1867FBAA80648479B /* RCTLegacyUIManagerConstantsProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 90C0ED4C25BBE5201770D4FF695A81A6 /* Style.h in Headers */ = {isa = PBXBuildFile; fileRef = 5545A49E67978F2CEF8C77F63D7368FF /* Style.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90ED9323F40C70F953900BEDF86C83CF /* ReactMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = D3779D2E5E9D11A2A28A3B557D2841F9 /* ReactMarker.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90F713B356228BE688BACF56AF55ACF2 /* SysUio.h in Headers */ = {isa = PBXBuildFile; fileRef = 79CC003D3F5205C371DC8BCBE46FD022 /* SysUio.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90FE9EE300AD62DD80F8ACBEB966A72A /* RCTValueAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D968F1CAEE31B74111F5F45D24E694BA /* RCTValueAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9111482AEA47A273F54C6A45660C17F8 /* RCTBorderCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = E0246A845D54C7B635C77FFDE88894B9 /* RCTBorderCurve.h */; settings = {ATTRIBUTES = (Project, ); }; }; 91261AA9EF204EAA4F865018549E8476 /* RCTTrackingAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18E04C8FC9E54D8A00245F3E4B386C0E /* RCTTrackingAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9129BAF1A295E5BA2BFA9D27E0DD8B30 /* YogaEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = 229E898FFA1C9E93F86539379E9096C3 /* YogaEnums.h */; settings = {ATTRIBUTES = (Project, ); }; }; 914C439C1D26D04E388C679710CB249B /* CallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = E99066C5DDF65197FF753C23E54313CC /* CallbackWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9178CD20BCFCB0BC939BC7561FCB33FB /* InspectorPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = E40225EFF83BFF372E2ACB0DEB6152DB /* InspectorPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 919E20B121E45FB70B18B13A38BD4371 /* RCTImageComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 012CC3CCEDDC11E02851DBC088F9B7A2 /* RCTImageComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 91A571775E906D836350ADADEC849A4A /* File.h in Headers */ = {isa = PBXBuildFile; fileRef = CBC8B43C8992F34DF7CD32D7923EDE53 /* File.h */; settings = {ATTRIBUTES = (Project, ); }; }; 91FE7C0592A4570B5BDEF0B5BD337FEA /* GFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 58591CA75671A3724AEF97FE040632D7 /* GFlags.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92048C77172BB4D1D55779CEE7BA8F5C /* propsConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = F83C31C20E032D387D9A04D68DAC8265 /* propsConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9242F0F9E52CCA157276B60C7717847C /* RCTUtilsUIOverride.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D239EA1163C5886418BBB97A80CD68C /* RCTUtilsUIOverride.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 9271349E8FDF5329205E712797561D1D /* TurboModuleBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD2B5192F4D25A120B9FBA56082E1498 /* TurboModuleBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 927C8D7BB3740323066FE2E8CD53F02D /* threadsafe.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E3111070B2202E4E59A2EB4AAF55A9 /* threadsafe.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92F9C861E9C7D42BF5CBED7EBFC77D72 /* ValueFactoryEventPayload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CA71A360B05CFB72B96ACD04FA7ADB6 /* ValueFactoryEventPayload.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 9307396B4ADA5CC798FF0884900FC572 /* HermesInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B640A9964EA3E8305895667CD6375FAB /* HermesInstance.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 930BA86D8E612AC22708E752E4A61383 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = DF63E196F2D472D716CD1CFF8D29C2EF /* small_vector.h */; settings = {ATTRIBUTES = (Project, ); }; }; 932C4B72A39D5E4B28B11735AEC65689 /* React-featureflags-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E390D39B5438A34CB65883263516478C /* React-featureflags-dummy.m */; }; 936A9AB6C986409BCEFF9F365015DD61 /* Subprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = D1802F9C2D3A26DFED67D9A4805852E1 /* Subprocess.h */; settings = {ATTRIBUTES = (Project, ); }; }; 93728BE1C4A407884F562ADACEAC71F2 /* LayoutAnimationCallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 20D52A5CA3FEAAB624DD5FABD5F70EF4 /* LayoutAnimationCallbackWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9376001A5415EA17C8FE5D79C03B3E05 /* React-debug-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 55399075C21EA2F4687C29DEBD4F00E7 /* React-debug-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 93917AFA25B6646D3B4C8B89C923372C /* RCTEventAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = CF04A0BE220BED59F7AEB367A64FB457 /* RCTEventAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 93ECDFFA540B3E946DAF9907951CCEFB /* NSDataBigString.h in Headers */ = {isa = PBXBuildFile; fileRef = F278184653BF83F13E9A2484D2F4F8C1 /* NSDataBigString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9411CDA895F502CF9BAFEC71B6EB2D75 /* RCTFollyConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3894240F9F245719EDB8B1ADBE0FC7 /* RCTFollyConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9435ABFC3D2347D3C2FA4178AD8363B1 /* ImageResponseObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8229FB82BEAE5318CC636C3963FFF6F8 /* ImageResponseObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94596CFFB0AF1EAE8EABCCF8ABA45AB8 /* ConcurrentLazy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FFF51245D8A86EAC0CA600E287ED6AD /* ConcurrentLazy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 948EF6B8544D6C95F6864DB1E234052A /* ScrollViewProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F1758BCE0D6DB0A37CD1E35331999A52 /* ScrollViewProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 94B9DAD9D6E6079306AAA42C6D3B711B /* RCTSettingsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 159A07D2F149809ABC30E5FCBB89938F /* RCTSettingsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94CD80C023E882B4DA9D02927CDA9327 /* RCTSwitchComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C150EC730101E36E8725C466227757 /* RCTSwitchComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94E79DD64E0788BB7AD3BD1210CB6EB0 /* Memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 39A5BABF355F1FCE0AB1D652C33D7B9C /* Memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 950BAD90B56D30A54EBF43AF215D0C8D /* zh-Hant.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8B0995DAA2C152F8B2BBE8B2BD71EB56 /* zh-Hant.lproj */; }; 9517335C8F1CE70427B5E0AF6F87FD29 /* react_native_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D634D9C7371357029E41D29AD89E979 /* react_native_assert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 951D58A9E7D698B929AF899C28E57034 /* RCTModalHostViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C4B697D1793E966C34C78BD44F6D02 /* RCTModalHostViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 95218D9E435AD62306483383FCAD7BC6 /* graphicsConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8516ED23F91BAC902B146A3BDA21B3AB /* graphicsConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 956D860AD7C9DC24AA722E80D15E4D6B /* ReactNativeConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D709C81D0C07E31A08F46AA3AAB09FD /* ReactNativeConfig.cpp */; }; 9593D619EFB09CA84DE565FF4D96EB48 /* LifoSem.h in Headers */ = {isa = PBXBuildFile; fileRef = C57BEDEC1840FD8209B8FAD43401C99D /* LifoSem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9597882525C617A0252792A1542DEB7E /* RCTImageManagerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC7B5A86B19E285F310EB16BDE027DE /* RCTImageManagerProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96234A6DD5EC92E93D8ECEDD53210730 /* RCTImageViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6678C1864A2A92768BBDC1C215172196 /* RCTImageViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 963D64DBA5EFD7B49E439C0B7207E7AF /* RCTProfileTrampoline-arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = 4340CE46967CD10BEFC7859B55898A6D /* RCTProfileTrampoline-arm64.S */; }; 9697A6B4D46C8A478177B8A7BBC5087A /* State.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A923BB7F15C4A2B32DDE64B8D827632 /* State.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96CC92BF70F2531207DA2C1317DE05BD /* BridgelessJSCallInvoker.h in Headers */ = {isa = PBXBuildFile; fileRef = E9B0012D9AC4C6EE1721D712922AF216 /* BridgelessJSCallInvoker.h */; settings = {ATTRIBUTES = (Project, ); }; }; 970B747DD08085BB38AA2CBE4015C91B /* Props.h in Headers */ = {isa = PBXBuildFile; fileRef = 327A412C03B8D29F20508FBD60D4EAD2 /* Props.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97215F497B2ED4601FCA816AC3DA2375 /* RCTBaseTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7155EA3AC352921BE68F7BD76C6F36 /* RCTBaseTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9766FC44D73330BFAAB4E4350CCCC6A5 /* RCTMultilineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B1D50AB670D1ED574D945561008297 /* RCTMultilineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97787CD6E0C072679EE338808F2F63AF /* DoubleConversion-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F852C98DD1BF5640292AF6AAF675EA58 /* DoubleConversion-dummy.m */; }; 97B2A42B5817C59F462248A075991C5E /* RCTAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 5627C2F1A2A3B2FFA118B0BD3069A5B9 /* RCTAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97DECF6E711E8B315123A6811DF80EC4 /* RCTPerformanceLoggerLabels.m in Sources */ = {isa = PBXBuildFile; fileRef = DFA83A2FCE36D7B3F4FF4946AC4AA3C5 /* RCTPerformanceLoggerLabels.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 97F384488C52BE0D4A9D53D345D00BC8 /* RCTResizeMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = D73FC5BE76F5CED5EE11722EB194C596 /* RCTResizeMode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 980093FFA08606F31FCD65609A47C09E /* StyleValuePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F35EF9396775F51CA6146B0C7D16351 /* StyleValuePool.h */; settings = {ATTRIBUTES = (Project, ); }; }; 981417644439C651547814EC3FEA4928 /* RCTCxxInspectorPackagerConnectionDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69DAF065EE01F48CB5FBAC10F00EDE0 /* RCTCxxInspectorPackagerConnectionDelegate.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 98645489B7C5F09DCAA5CDE2C2D33D32 /* JSIInstaller.mm in Sources */ = {isa = PBXBuildFile; fileRef = 126C5DD1D6213610884F84302374D19F /* JSIInstaller.mm */; settings = {COMPILER_FLAGS = "-Os"; }; }; 988804049A0E839CEE4F97680EA6F030 /* BitIteratorDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 20FF0CE1BB1AB7D514D968DD961923FA /* BitIteratorDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98EA24E215B825D7E404CD8B1B3A6C3C /* RawTextProps.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FDDD56EA9FAE7E380A57693269B4F0 /* RawTextProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98FAF118BA6AC3B0B0BF4D1DA3521E51 /* RCTTurboModuleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CA6E5A23C938EF530325403BEB5ABB /* RCTTurboModuleManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98FF24FCA7950C2F975BB4096B9B26E7 /* UnimplementedViewComponentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA13FC9D0FEA58079E338182B1BAE1B2 /* UnimplementedViewComponentDescriptor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; 9939A9054B27EC267D364A8B16FB9959 /* AtomicHashArray-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C581B89704C6C579DD637F11045901A /* AtomicHashArray-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 993B010DAB0C47A19FF3C8CB5F18F3BB /* RCTDiffClampAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B93F350B7CEAA9026208326081EA41 /* RCTDiffClampAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 996659F42631C1F1EF1EB37666EBEC84 /* RCTAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A658922FD40E29EEAB7D23E4D3A2BD /* RCTAppearance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9979B172D36F3FD1E5835B9D990C0603 /* JSBundleType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DF430B965D7F43DCCD92803B07AD0F7 /* JSBundleType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 998341B6CC0A0AD55671B6F0F1535978 /* RCTImageURLLoaderWithAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 4133EE63EDE34BEA9FC63C4BB4801169 /* RCTImageURLLoaderWithAttribution.h */; settings = {ATTRIBUTES = (Project, ); }; }; 998B42D1DD666A96EF1B6DE78167C70B /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 37D820D975698FCA99C86CE71EF22A97 /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 99CC5B420D64ACDD783109436516FD04 /* RCTSinglelineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 609281012AE698DC460A40129D138A06 /* RCTSinglelineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9A24531C4E6DA4D2A91036A2F8C0BF4A /* Time.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BB0E5875A31D5E8CDCEA86F5A67276E /* Time.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9A35D386A3459053D8A2240EF17E13F4 /* RCTModulesConformingToProtocolsProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = B286D2E443FD0AC7BDE2FA335AE099A9 /* RCTModulesConformingToProtocolsProvider.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -Wno-nullability-completeness -std=c++20"; }; }; 9A3A4D10C9D413158BC724A194B154E9 /* da.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 825AFF4407B94619036B3195D86313D2 /* da.lproj */; }; 9A4EE65B2E9B67E48FEA687692C36F66 /* RCTSurfacePointerHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E0402A818FA8A0C89E390D0D4EC00165 /* RCTSurfacePointerHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9A9022C47549BD26B9F45A7BFFB8A6BF /* RawPropsKeyMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF730E6145C9D42DEB5C32702BE8C74 /* RawPropsKeyMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9AD21A8C1FB12C6F69D2E07588A0B966 /* ScrollViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D85F064A48142714688A62D0169A8F /* ScrollViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9AE0B339D38F4BDCFD54AF8B4B74B9AD /* RCTDebuggingOverlayComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA175D69859A3FE955C27E8F8107960 /* RCTDebuggingOverlayComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9B29E7A144668C69B88E17DF3445B0C8 /* RCTErrorInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 735E5FCEACBC787C7FF33D2B0A5F3CAD /* RCTErrorInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9B4920B859EB68134633DC1B38607162 /* RCTSurfaceRootShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4343AD60D13A26A3F11E942DA9C12580 /* RCTSurfaceRootShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 9B71EE8ECFF2BAFFC391738C754A5A7B /* RCTPullToRefreshViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E82D575C7FB3C2A029BADE7276472510 /* RCTPullToRefreshViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 9B7A6544F9E9805452DAC23861BEC337 /* RCTUIManagerObserverCoordinator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B9B081A11AD725344E711226D80CA4B /* RCTUIManagerObserverCoordinator.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 9B87B7263006E8E400822B725E60FFBE /* WatermelonDB.h in Headers */ = {isa = PBXBuildFile; fileRef = DB9466A46A68BC525A64AAAB5F5C1F6C /* WatermelonDB.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9BCC683CA550E64EE67D93F93BFFBD60 /* React-NativeModulesApple-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A59848A45BE0F5FCEF4561B500527CB /* React-NativeModulesApple-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9BCE5725306ABEC6584FCB1239B9CA22 /* RCTCxxBridgeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F07D525DF93C69AEC8946C90CEB695C1 /* RCTCxxBridgeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9BE6267DB05B71DBB27C01E25769CBDA /* RCTTextShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0A05EEA6DE2EF6E728D7085041633AFA /* RCTTextShadowView.mm */; }; 9C187D694BC2F39668C0730FF0BECF50 /* Optional.h in Headers */ = {isa = PBXBuildFile; fileRef = C02156579770C940D02208439EF989EE /* Optional.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9C1A1AD1616249A784D388BDF0097A98 /* Iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = E29A2CBF054A73452FE72177DE2FDF83 /* Iterator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9C213142A14C7405ADC9288D76B1290C /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 72F4E61BD474BE602AFFC71C43FD918B /* sk.lproj */; }; 9C2375A58F12149DA1970C56AC0D8633 /* RCTEventDispatcherProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5216E04A7C94A5B08BF8F3BD20CDAAD7 /* RCTEventDispatcherProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9C380E9FAFBB1F19957EED6469446B92 /* InspectorFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 704C76032CCE295710F90FEE18E4B95F /* InspectorFlags.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9CA0EAF6DDBF255B903EB6F6FC52E0D4 /* FmtCompile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D107AF1088C433FC9328FB083C1609A /* FmtCompile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9D28E53E71CE7B1B576FC946E8E18383 /* th.lproj in Resources */ = {isa = PBXBuildFile; fileRef = D23D4785660627F3CD0959228AD79333 /* th.lproj */; }; 9D2C4B6C64188ADED9A1A5F54328072A /* RCTMountingTransactionObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FA6B9156408ED84AEE6F56B8BB6FC8D /* RCTMountingTransactionObserverCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9D2D3C5051C69BC67410C4758F73B91B /* ShadowNodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 21EF07FFD2345957804DF019878563CF /* ShadowNodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9D4EC18EDF8D39C00319EDCBF1F79BFE /* Random-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3762263B39103B7107F61608F0B0E2D8 /* Random-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9D5BB979650E52C9D6EDC21113C22E8C /* RCTInputAccessoryShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = A846AD31825FC26747481C82D51B3091 /* RCTInputAccessoryShadowView.mm */; }; 9D724EF3BBE139FA8C05D4528A894F0E /* RCTView.m in Sources */ = {isa = PBXBuildFile; fileRef = A29983597DBADCA7A69A6EAE6BBED3C3 /* RCTView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 9D92D08729B4FAAF303182FEBC7434D2 /* Builtins.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C3134B4FA97F946996018EB76D6F2B /* Builtins.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9DA7609D0CA7E74EC3DD6F2ECE3B75D6 /* RCTVirtualTextView.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5868FE71D3976986B3E0F19F4316F71 /* RCTVirtualTextView.mm */; }; 9DEB120143CCAE9182A2D84A8E9E6FBC /* NSURLRequest+SRWebSocketPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F65B8FCE4C82DE06C4DC544668252210 /* NSURLRequest+SRWebSocketPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9DF893D515B79F5D02C027EF78786C88 /* RCTImageBlurUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 019948FE306C2A476268E8F263EA2122 /* RCTImageBlurUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E5B5F823216896E6318DB55C9616AC9 /* RCTParagraphComponentAccessibilityProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 68EE2EFB5FD67165CD0BE5CB10F52DDD /* RCTParagraphComponentAccessibilityProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E62546DD0C89254100F01FB1C6313E9 /* ScrollViewEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = C0BA0D275A8C8269E34CE4A1AD5CCF35 /* ScrollViewEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E6C43BA1F53691CB152B48B736A70B2 /* MeasureMode.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FD51AD36118D278A13D28B6A1C0F24 /* MeasureMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E7BF4EF40C60244E247C1623968BDDF /* RCTModuloAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F146A98AD14FE819BCA98EB3275AD3 /* RCTModuloAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9EA31CC73780B94F35D97F87C4FB001C /* NSDataBigString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6D624E232F1781DF596D0A786D21944C /* NSDataBigString.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; 9EAD4F18278E7EB2645F6DEA5C454695 /* RCTRootViewFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = FCAE6D5FA62309B748866975B6AA85DC /* RCTRootViewFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9F22899D6776281D1CD11358A63C7D31 /* CalculateLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1C2DDC7533E6E8B4EB9893DC9F6FDB1 /* CalculateLayout.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; 9F3A392095C5D5039ACB1A0B07BF9CA6 /* SRProxyConnect.h in Headers */ = {isa = PBXBuildFile; fileRef = C09D1BCC94FFE3C6143459C161E5ACEF /* SRProxyConnect.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9F77598A23E6FC5C8F7267848FA42DD7 /* React-RCTLinking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0105FEC655FAF723FA2D179AFF610513 /* React-RCTLinking-dummy.m */; }; 9FDC7DCF86B38C6B6DC5A4653928D9DE /* CString.h in Headers */ = {isa = PBXBuildFile; fileRef = DF05023F7AE354185DE71C9D43F11B9D /* CString.h */; settings = {ATTRIBUTES = (Project, ); }; }; A01DF6EC80AEF728DCC406662A246C8C /* F14Table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5B3F15E7911D3E6C9DE70A968B0F80 /* F14Table.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; A0414AFF72685EFA608465FD6F3C0855 /* RCTBlobCollector.mm in Sources */ = {isa = PBXBuildFile; fileRef = CC14D6144DA3CBC86D616E08D6D726E8 /* RCTBlobCollector.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A04D9EB219FF8B977B41D229BE877CE8 /* LayoutAnimationDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 860A6C48F7BFB2F514BB891173FD0D7E /* LayoutAnimationDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0BA02788E52121E2D2839A9778AF779 /* RCTModalManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8203B91D615D3D818C75D20CC7EECACE /* RCTModalManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0C26C8A77986A3E4CF105BC5A8DB603 /* ThrottledLifoSem.h in Headers */ = {isa = PBXBuildFile; fileRef = 1841AD95444E2505711CA1DEE133B7F8 /* ThrottledLifoSem.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0CFCD0F7E1ACC5734A328D7956729AA /* RCTBridgeProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA6445F1F3582CD4A38F23C8E688A65 /* RCTBridgeProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0FE61561DE7D4E63D766ED6280A7766 /* F14Mask.h in Headers */ = {isa = PBXBuildFile; fileRef = 5671AD120864F71635B5C5BD07138E67 /* F14Mask.h */; settings = {ATTRIBUTES = (Project, ); }; }; A1394038D409340FD789C018BBC1889B /* Pretty.h in Headers */ = {isa = PBXBuildFile; fileRef = CCCCA85307C7F5CAA6F8F137DC8860BE /* Pretty.h */; settings = {ATTRIBUTES = (Project, ); }; }; A19075D535E90DCF7736BF70C4512C46 /* RCTRedBoxExtraDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A24606F72343E19E228B3000540EC8FD /* RCTRedBoxExtraDataViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A1972E1E435534713DA2AFD946DD0856 /* RCTSurfaceStage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7215C1FD70511C10EB945E8681577C16 /* RCTSurfaceStage.h */; settings = {ATTRIBUTES = (Project, ); }; }; A1F8338949D8668927E275528CCCC3B4 /* RCTEventDispatcher.mm in Sources */ = {isa = PBXBuildFile; fileRef = FBC65E4ADA0C93CAF6F0857E1767393E /* RCTEventDispatcher.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A21AB41F6F340F2D09106811A1702842 /* RCTBackedTextInputViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FDD85087D17F29E409E05B785CAEF845 /* RCTBackedTextInputViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2373B0F99A1174A8D32C95900769A04 /* Varint.h in Headers */ = {isa = PBXBuildFile; fileRef = 493BF367283D552EA0719F4472FB1C1E /* Varint.h */; settings = {ATTRIBUTES = (Project, ); }; }; A23B1493A362B7B10AC587B3F3D79B5F /* ConcreteShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C7A0603C70B03A5BAB896F01F15E47 /* ConcreteShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A254132978ABCE50DAD9D233D0F89E0B /* AtomicNotification-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 96489235CABA0BF8A10434FC133718C8 /* AtomicNotification-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; A26AD378981A03977F8B5859FC2E3520 /* RCTBaseTextInputView.mm in Sources */ = {isa = PBXBuildFile; fileRef = EB9567C0DEFF8F845D6478F3CFDBD1AF /* RCTBaseTextInputView.mm */; }; A27584A1C4F237F91F194CC4258F5294 /* SpookyHashV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 182071DF4FF23AD36C90547CC9C960E3 /* SpookyHashV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; A276C17FE51EEC55219F3A15FC9278A1 /* React-jsinspector-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F2BC9F716D9565E236295A6DE40D75C /* React-jsinspector-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; A28FA7E22D3A80A9EA98A5EA1DE6FF7C /* RCTSurfaceStage.m in Sources */ = {isa = PBXBuildFile; fileRef = BFE0C7F1527F398A2A69185EBFCF677F /* RCTSurfaceStage.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A29A68DEAEAEA7CE6917E095DC77395F /* stl_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = B222607BD79B79EA46BBA68F606016E7 /* stl_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2D2289CC073BE7056299A54E1245ED8 /* BenchmarkUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 79935ABC77CDB209D63CDB2A5C8B0F40 /* BenchmarkUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2DABF69571289A07D4949D5B6B732B1 /* YGNodeLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5B62D2EDAEE105EA46E50A51A6DCC4FB /* YGNodeLayout.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; A2E1B929FDB6C978EE68D7A8DAE051EC /* React-rendererdebug-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 137A31E381AB4AA534731ED6AF105636 /* React-rendererdebug-dummy.m */; }; A2E51C7BD2FFC062C48C10167934CCAC /* RCTSettingsPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C8F91F7CAFA9A5744781FD95C2E01DA /* RCTSettingsPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2EFB06C6482D772F8442F4C783752E5 /* react_native_log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BD7AC8D29513BC50E69DFF8F4FD5522 /* react_native_log.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A2F8AC56D5A31FAA851EA309CAB094CF /* ReactMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE03DA74B3DF71926399B020ADB5C3CC /* ReactMarker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A32D15308F27ECE2391DA0E67E184553 /* RCTSettingsPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = E0839F609F20832C1729CED5ADCA18C9 /* RCTSettingsPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A38A237FA362893EFF6CA7A3CE4E9F4E /* RCTModuleData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13A1EDC09A69ED3292AAE26A206851F9 /* RCTModuleData.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A3C138B2295C7FA333A37D6504296970 /* RCTEventAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 404C04FF5A5FFA2678597943F9B2C076 /* RCTEventAnimation.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A3CD7C4D744038936727F5BBE64375AC /* ModalHostViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FAB647D0F4DBFEAA683CD3AFF2F587 /* ModalHostViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A3CE4C1EAD893E3451AB41D1E13069C2 /* RCTCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 492C01ACF6D4D924E6561FCD33DB914D /* RCTCursor.h */; settings = {ATTRIBUTES = (Project, ); }; }; A3EE983F94C4B475C21E8F62825FB9A0 /* BindingsInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = F310EF16EE5EAA4714DFD2F1713D1B73 /* BindingsInstaller.h */; settings = {ATTRIBUTES = (Project, ); }; }; A42C6A17F4D0042FBC3D655E31C73C15 /* SRSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D95650F41F3CE76BC04B5619B09B95 /* SRSecurityPolicy.m */; }; A45DC96FB186B370BEE808C18E1862F0 /* TextInputShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E5E136EE3CB9AD65C230069245AFE89E /* TextInputShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A4A4022B861D7CB000B2E7AD4ADAF9CA /* FileUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC8AE4B19CE176574DF457505E2B9CF /* FileUtil.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; A4B4874755DEF120B2A86C12140EE4D5 /* ShadowTreeRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43F384C21F24B355DE771A761C765E4B /* ShadowTreeRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; A51151FF17D9D07646B188DFD75A0AE1 /* RCTAdditionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A801C14BFA125ACB2E474AAFB4B2D03 /* RCTAdditionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A526E4E88DA34AF0F88D9F32C1A60C19 /* RCTImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB28E8C209A78E622C0305EEB0B8A19 /* RCTImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5376CA99127C041CA004A648022C1C5 /* ReactEventPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F8C4243A150FEDAB173B67E50BC9174 /* ReactEventPriority.h */; settings = {ATTRIBUTES = (Project, ); }; }; A55A7FDB0ED4E2B992421280DE3DF1D2 /* FarmHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 531B578A8FF205619BD8E526C7C60930 /* FarmHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; A55C66E5656D2B2D10BA7A72BF99EC50 /* NativeToJsBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 865BCA647C0A650C5EADD1CCF31CFA14 /* NativeToJsBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; A56D6EAD62CADD0537EB486ADFDCFA82 /* RCTDeprecation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E105C5D9C4A539112084489DC235CAB /* RCTDeprecation.m */; settings = {COMPILER_FLAGS = "-Wnullable-to-nonnull-conversion -Wnullability-completeness -DOS_OBJECT_USE_OBJC=0"; }; }; A58560BE133410AEDF2DB9DB58DC3CEC /* RCTBundleAssetImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6968091853F8202BC5D47745810C4DC4 /* RCTBundleAssetImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; A59FCD183BF94129D76323D85738AA5F /* RectangleEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = 60DAB499CFAAD9EB49E01C7C8B9A5F15 /* RectangleEdges.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5A30B2AF3B84C88541ABF6329E44CF7 /* PropsMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = AD945009ED5CD2E57F93715472E7BAAC /* PropsMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5E697E3D36B4DEB0134CD065243FDDF /* RCTAnimationPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 222FC254D773A0163299A97B210F3B1A /* RCTAnimationPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A61B1E1D334158CF2ED3116CC21C3F33 /* fi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A71AF6D224DB5B45B4A632DC900459A4 /* fi.lproj */; }; A62607B1613E845DC2045E01320BCFBE /* BaseViewEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A04DC956EC28B16DDE9F446048074A0D /* BaseViewEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; A64C2E2436921D1072D8A53C3DF89C6F /* Invoke.h in Headers */ = {isa = PBXBuildFile; fileRef = 7433BC11862172106E2F5C35B6657339 /* Invoke.h */; settings = {ATTRIBUTES = (Project, ); }; }; A64F035654CB2B7DCBC8F8724356C82E /* ImageEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D9EFC947AA0C68DCA4C6DD6EB901DE /* ImageEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; A64FF4152676B429D3E3359E14BFD5B2 /* WMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBC85A59D1771FEE07769D206EDEC9B /* WMDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; A67253AF093EFDC09F0995BC70346F69 /* LayoutConstraints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 349041093547AE8E438BDD4E8A829CB7 /* LayoutConstraints.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A691FFBD5381A9F24D87CE66F8F5F81A /* Gutter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAE4B2A9C96F883E85714C869494F81 /* Gutter.h */; settings = {ATTRIBUTES = (Project, ); }; }; A6A14B5D2532DF9B9CC2BA83095FC9A9 /* RCTCxxMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 080F0694AFBEBB45493A735532A9B8F8 /* RCTCxxMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; A6A384ACF91A0F0532A09484483AE49C /* SanitizeLeak.h in Headers */ = {isa = PBXBuildFile; fileRef = C128E32800DBBBE7BD73B0DB2EA50A53 /* SanitizeLeak.h */; settings = {ATTRIBUTES = (Project, ); }; }; A6B176A4E944BC9B06A1C03CD10681A0 /* glog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D886821B444D6CB88E03807915CB1608 /* glog-dummy.m */; }; A6F760D3AECEDF09C3CCA0D126B07C7E /* Overload.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F9A7D467E30F1383A11DE8EA731A421 /* Overload.h */; settings = {ATTRIBUTES = (Project, ); }; }; A72514BC4A3B50129690364CE05BB754 /* RCTObjcExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 96C45D3F8919F8B19727DA09E333BFE6 /* RCTObjcExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; A764E2968F6CD32CEE6C509E2845BDC7 /* RCTDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E253CA8AF57F182CDA110861DF421A77 /* RCTDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; A77D12B428F49DBEC035E05EEAF4289C /* ModalHostViewComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 337FF88F1B3B7E14D22211EF9A8C01DC /* ModalHostViewComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; A7C3F262E0817389B32853B800C6AB71 /* React-jsi-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 125AE03965ABF8E4C157E9FE3A55D187 /* React-jsi-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; A7CD6D2F66EA3F1BF1E4E1A3D82CDA24 /* RCTTiming.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0C8E237AA818FABF9B7C6CDB03FA448A /* RCTTiming.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A7D30D7B1B80839FB303F4681082D409 /* RCTAppDelegate+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC8FAF53DD63A22F83D735BBEC79C48 /* RCTAppDelegate+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; A7F1FBD3434006B07373E5777C0EC0EB /* RCTModalHostViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E08FAB111E604490074792C7CFAC9084 /* RCTModalHostViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A82CCE9C3F6E085AF4F6CC7A71DFC0A6 /* RCTModuloAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 375DFEFC5E87FCB287285426D6DAA812 /* RCTModuloAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; A82FB98C2DC7B85649063C88C00725A8 /* RCTVirtualTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C37722D87F8B49DE9B83ACFE1C0A286A /* RCTVirtualTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; A841E4574588119BFAC4C1ABBE42E3EC /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = B17C5DF58EBCAD0079663296EFB0D99F /* FMResultSet.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; A84C6C6ECCA510D53447DE2A92670783 /* RCTScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 314C4322103426F9256B2FBA495DB607 /* RCTScrollView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A867C1C27059E5551EBA984D27CDF4FF /* RCTSurfaceHostingView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DFB701655BF99400D13CDA6EFDCC1AC7 /* RCTSurfaceHostingView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A8B268A6AD50300155466F4EBFE5220B /* SysUio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AC266D9F2BEB6CAC0650EC2695A1C7 /* SysUio.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; A938E595D257EC2A792136FF03B1B030 /* event.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6D5DD14D9959F1BCDA9EEF40E8671E /* event.h */; settings = {ATTRIBUTES = (Project, ); }; }; A93939302F504E8A673D78DE89013DAA /* NSTextStorage+FontScaling.h in Headers */ = {isa = PBXBuildFile; fileRef = FADE4C50E4C03A98702AAB8CE87A3D81 /* NSTextStorage+FontScaling.h */; settings = {ATTRIBUTES = (Project, ); }; }; A93FB3B91CE02A0B704D2A989C363E9C /* es-ES.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 95FE5AE8E711BF2C04047FE31AFA930A /* es-ES.lproj */; }; A95970C4A74B1F4378A0406E2484D32C /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EFDD8B247497E208D149C9C12E8045C7 /* Hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; A95DE42763202885855D7D06BC84D1C7 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB42AC0EB19257BDB4CB23DD77110E6 /* base64.h */; settings = {ATTRIBUTES = (Project, ); }; }; A987774A31FA59F2A5D311C15EEF222D /* fmt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 267039C69B6ECCDE54B5EF1AD931D1C0 /* fmt-dummy.m */; }; A99DAE5BCBF57C5FF1C418A9CE856DAA /* RCTActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DA86D744EE0EE17E265BBB90390A23 /* RCTActivityIndicatorView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; A9A0682AC82CE2B25A2E0EEC1330EE68 /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79BAE705D4C5DDF1F3222FC86D3DC110 /* Database.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; A9DBFF6662EFD601FDEC3789C5796033 /* ValueFactoryEventPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = F1AB976E1A25C3A525A7919E63A9BA92 /* ValueFactoryEventPayload.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9E1748FA1E9E944CF1BCE7376E7B033 /* UIView+ComponentViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 6368583633FFD741EE844FFC0D7DEA92 /* UIView+ComponentViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; AA62F32250BD7CC4CEFB9F7804B905E7 /* RCTModuleRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = F969DDD826E4A83C1AAE180C9E9DB314 /* RCTModuleRegistry.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; AA6CA9CE331D388BD5FE8AA5DA240A90 /* EventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 520B63F372380D55B40793B5BB10A39F /* EventDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; AA91C034F80AC8439B59BE80A30E96CB /* RCTGIFImageDecoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 092DBE2F0CE18725FF1B0C8D08B1147C /* RCTGIFImageDecoder.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; AA9C529959EA98EB49C28EE11BD7137B /* RuntimeSchedulerBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 949C0E997EA3B7239902690DA5D564D5 /* RuntimeSchedulerBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; AB2A762779BA1CEB0922D08C0677AD46 /* RCTDiffClampAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0314883711F418F964E23FC8DC255846 /* RCTDiffClampAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; AB4EFCE36686D94BCDFA88932177E82D /* FileUtilDetail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4757A98E1495E6C3DBC232D9872AE2 /* FileUtilDetail.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; AB5EF33E0FF9C59C98CC579067194B5F /* RCTSyncImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 52E49CCBB965394C8B3C6525BA37644D /* RCTSyncImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; AB68948AE78A34C68EFB0AB1BC2C387B /* AccessibilityProps.h in Headers */ = {isa = PBXBuildFile; fileRef = EC88B7FD82BE95C8547982311739D454 /* AccessibilityProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; AB87442CD013BE84D9211A77BE390F9D /* RCTSurfaceTouchHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1D68855FFC5514B5F5A3FD7EF50735D4 /* RCTSurfaceTouchHandler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; AB88C2DEBE20FD6CE62478DBA925FE6E /* RCTBaseTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7155EA3AC352921BE68F7BD76C6F36 /* RCTBaseTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; AB95787F449828E3C56FC5A5B502F056 /* UnstableLegacyViewManagerInteropComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3312F4682C3B648C87FBD7755CC0CE73 /* UnstableLegacyViewManagerInteropComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABA6E5E90611005CDA352D8179B5C97F /* RCTBlobCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = FBC79A9C5A60A939EF7BBEFBE8449906 /* RCTBlobCollector.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABBD121FC3379E6C4E0DB69D6C223F28 /* RCTFrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 33FBAF4A2C505DEA7624E5FE6146C7CB /* RCTFrameAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABC708190BDCBD59B0B4A86CE919BA1D /* UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C638A35CBFBC692CA7A2C5870600E066 /* UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; ABD6B1BFDA57AF34F462F5D6BFA170C5 /* String.h in Headers */ = {isa = PBXBuildFile; fileRef = B6577792B784C0F015CBBC9C2A12DDEC /* String.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABDAE92094104A99B62D530A783B8446 /* RCTSurfaceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A6297972EED0526BCBF5B221AE18AC /* RCTSurfaceProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC022ED4B280CBF9CC05FD81E941DF74 /* RCTTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC04D4366699171D90B6E14F8947CBD /* RCTTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC0456506411E770DAE78BB6A370A69D /* RCTJavaScriptLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F488B5803551A7C6E8D0B3F34C4823D0 /* RCTJavaScriptLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC74571D81AF9246D9A46B8B069B9BB5 /* RCTRuntimeExecutor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8E11E2044A1B7194DE5069CCBE8DD5AF /* RCTRuntimeExecutor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; ACDD1A69BD4842832E7BA0BB94F2DD32 /* InspectorPackagerConnectionImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = B02F47D538066B1D13C474E20A59039A /* InspectorPackagerConnectionImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; ACE0A69608D1407DA250057C17E7281A /* RCTAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = C7CB9D39DA448A9F742A4B023B065E17 /* RCTAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; AD0E3792C51B0E55F49C3558785D6863 /* RCTDebuggingOverlayManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FA7D9A20F443352B3F132A2348CEAF5 /* RCTDebuggingOverlayManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; AD4645BBE5F1978FE1062D8DF27003AF /* RCTBackedTextInputDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 415370226876D731C7B97EFB54012940 /* RCTBackedTextInputDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD579D452B17FA300A0513A780D080DC /* RawTextComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = C3828F219A5F2BBBA5BAAA63512AB034 /* RawTextComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD7532D08452F1A565E555D61945FB51 /* SRConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B87A884215B67C149F379E4B4E20F8A /* SRConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD7A74E9D7AA2FEB89FCB880F9D08C56 /* SurfaceTelemetry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C260B39655A7EBBA430142A5FAC7288 /* SurfaceTelemetry.h */; settings = {ATTRIBUTES = (Project, ); }; }; ADABCA286A349FD925529339BD32B6D0 /* RCTLinkingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F40435B6D082BD6480C723A692DFB94D /* RCTLinkingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; ADB44688E69516386D389D1DFD996878 /* EventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4DDB397BCB393ACDDF3EB861945B730 /* EventListener.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; ADFE734C91C7A833AE41533BDB4B479C /* NativeToJsBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 723CB5670ECFFB16F7B8F339EE9DB637 /* NativeToJsBridge.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; AE0B4659152C1B6CE26DA56940540CCE /* en-GB.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 66808C29ABD639B3D916CDB9C1A33496 /* en-GB.lproj */; }; AE0DB91FEF11CE1FD97DE6B1A300E697 /* RCTComponentViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC0B393EEF985A3E4643B20F6754757 /* RCTComponentViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE4FCD234B012BE65C7CA496861FDEAE /* RCTVirtualTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C37722D87F8B49DE9B83ACFE1C0A286A /* RCTVirtualTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE53F4F8AE46955F8D5F913F84AE9ACE /* Bits.h in Headers */ = {isa = PBXBuildFile; fileRef = E743BFAD7A14315554014A32748265E1 /* Bits.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE5CCCBE05510A4562480531D6A64515 /* ShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE8331A8B19DE05088A3AF1C06D9599D /* ShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; AEA87805AEDC2CFC5CA3BC87F67DE795 /* RCTKeyCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EA652E4CB7DDC6698F42743A59CB48F /* RCTKeyCommands.h */; settings = {ATTRIBUTES = (Project, ); }; }; AEB70F3808CB6E0D00B663DA7FC98512 /* ReactNativeVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DA258A2CCF7FAA7A20EA853EAEA18AE /* ReactNativeVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; AEC4C05B01303751276918D1FA20961D /* StatePipe.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D889D31C2B9F054FBB9309C335FCD66 /* StatePipe.h */; settings = {ATTRIBUTES = (Project, ); }; }; AEE9B28ADA2F2437AA2DF260FEA3B558 /* RCTCxxConvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 182B0C702A35C8585E02CD20E58ABF79 /* RCTCxxConvert.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; AF2E44664A31AFFE67DE6C1AB58A1709 /* RCTEventAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = CF04A0BE220BED59F7AEB367A64FB457 /* RCTEventAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF31D319038A2C77960FC990CE634F65 /* CacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A1643BF71DE16FFA228713DA55E535 /* CacheLocality.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF3E68485FEF1859CC6B9FF8DA2B65B7 /* SysTime.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F312C3D9605D22499AC7486B1AB866 /* SysTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF405027DF88096366B45A503349F101 /* RCTSafeAreaViewLocalData.h in Headers */ = {isa = PBXBuildFile; fileRef = E38561935D0A79B947D909F1708ADA95 /* RCTSafeAreaViewLocalData.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF530C0F30401EA5E02563DB0FD3431B /* States.h in Headers */ = {isa = PBXBuildFile; fileRef = 80C9F8ECC69EABDD6B34127E2C1EBAB4 /* States.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF63E872921CA837B9532CC5211FD6BC /* RCTReactTaggedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E197DCEAC19B139D61338F626D0ECE /* RCTReactTaggedView.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF8A57DD74A29F065EC08C1171432681 /* RCTGenericDelegateSplitter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 48C37A67E9B9AEBECBFDBF2939F0F488 /* RCTGenericDelegateSplitter.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; AFA07FBAE0CAEE001E4CD63FE6F716FA /* SysStat.h in Headers */ = {isa = PBXBuildFile; fileRef = 8627871C188DC96A2A53FD17E0445367 /* SysStat.h */; settings = {ATTRIBUTES = (Project, ); }; }; AFB5AD9523C803DB448766320C6E2C73 /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFC3D5FFBC3735586FEBA16EF9D8157 /* Exception.h */; settings = {ATTRIBUTES = (Project, ); }; }; B05F1E0A450430FCFB47781C9C7B7E7C /* YGConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C5BE15D5F354DA98A5ADA415D1FDB03 /* YGConfig.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; B08FDA2BE608A087E4B93A5394734E2C /* HermesRuntimeAgentDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B81B76C387972027C9B1637E2E6A612 /* HermesRuntimeAgentDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B09BA4F1254FE042646506FF2C79AE14 /* RCTSurfaceSizeMeasureMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6D84B0A7F1A70E6E9ABEEEB14CB6C80C /* RCTSurfaceSizeMeasureMode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B0EB53E50359F579A7E205E8370A5906 /* CancellationToken-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 91B53126F00778E3792F8BDC9EF291DA /* CancellationToken-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; B10E4CBE3CC25EEDBB00CDBDA2464C7D /* RCTTextInputNativeCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = 71871CA5216D720E9BCA31F7ED7CC373 /* RCTTextInputNativeCommands.h */; settings = {ATTRIBUTES = (Project, ); }; }; B15D6D1F87DDE02BFCC6766FFCD7218F /* RCTTextLayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0FCEB123126F6E7439D8ABC6DB35A1 /* RCTTextLayoutManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; B1822AAA5CD811D59978BE7D8B57A8B1 /* RCTUITextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B8426E288C9F4E8EADBFDB047F2B7941 /* RCTUITextField.h */; settings = {ATTRIBUTES = (Project, ); }; }; B1B19038EAA3237411A3B68C9A696A59 /* RCTParserUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 002E6C786A97F7958FC7E860BB5B4D1D /* RCTParserUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; B1E3D66107E149510D1AF628543FED56 /* SurfaceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D77858FA2EBA20F1263AC750FC03FE38 /* SurfaceManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B1ED7A7AD7852A7431686CD7CA9D7587 /* Instance.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D0F263D9FACBEBBE1FBF1918CE0445 /* Instance.h */; settings = {ATTRIBUTES = (Project, ); }; }; B1FB31DE01AF8497EA404D2EA2B380EB /* RCTInputAccessoryContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DE9453C0D97B2C7CCEC65A7D9965FF8 /* RCTInputAccessoryContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; B20853E1492882F9DFBA5AEE732230CC /* UnstableLegacyViewManagerAutomaticShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B4341AA7547FF0A90E6BC28D6C448F /* UnstableLegacyViewManagerAutomaticShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B21738D0170767FAB849DD08A62EBA80 /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 558ED3C1B5F36FE5842EBF04C4FC985C /* nb.lproj */; }; B244559D2113F144FDF39CD9D1E1A47C /* WeakFamilyRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BACC1D6F0CF3D0892CC092113C7FD1BA /* WeakFamilyRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; B247DC209221D5988107ED3546ED7B5D /* Sockets.h in Headers */ = {isa = PBXBuildFile; fileRef = E96C6053E99BB795AC55280C6C0B918F /* Sockets.h */; settings = {ATTRIBUTES = (Project, ); }; }; B27A11C4410553392C96AA713C78C35F /* RCTNativeAnimatedTurboModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9652157178DCF97B039AEF273CD86695 /* RCTNativeAnimatedTurboModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; B2912AFCB904C759106782657EFDC5C9 /* LayoutResults.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48B75222BE84998C3999916E6084DAD4 /* LayoutResults.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; B2DC64D7C3CD066F1671B9F4D25DAB6D /* Range.h in Headers */ = {isa = PBXBuildFile; fileRef = 036EB421B5324C4C8F2FEE1BF08B8194 /* Range.h */; settings = {ATTRIBUTES = (Project, ); }; }; B3032B5AE72FAEF31190CBBC5B0CE62D /* ExceptionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 977FB42CD545522302B7AEA55376D2F7 /* ExceptionWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; B329882D9D9CC156F9C8F664B466BA4A /* InspectorData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4167445C410188AABBBB4C4E2721565F /* InspectorData.h */; settings = {ATTRIBUTES = (Project, ); }; }; B32A5364142E8C32D36579A8084F970C /* MountingCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 308183F96466CA2C23FC665AD164BFD4 /* MountingCoordinator.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B337848370ED5CE208F7515930D400E1 /* MoveWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C1D370414FE653DCC9FAE636F19160 /* MoveWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; B33ADB9AA3945A5FBE3DA6B5CBD94CCF /* RCTSegmentedControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AEF17D14D0B0DF8A55346CEFDBEA3396 /* RCTSegmentedControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; B37C611FC0371BA16C13DF36D8DCB479 /* Unistd.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D2546E47F2D90167BFD3A489746A6E9 /* Unistd.h */; settings = {ATTRIBUTES = (Project, ); }; }; B38B9B77CEE53F8B3F021D142B3B4E89 /* ApplyTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = C91E89106F76162BEA0A7DF8511D586A /* ApplyTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; B3A3E3277EB3013588EAD596B1F050CC /* RCTScrollViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD0288743440505A088DDFA69CE73173 /* RCTScrollViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B3ABAB986361D498B16189ACBD3E9EA5 /* RuntimeScheduler_Modern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D12F92E6DE4195516C44922291730FB /* RuntimeScheduler_Modern.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B3B5414D5E629029A44A3318840D674B /* SparseByteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 97C17BDCBCF48F7FE1E2CE59E0B17252 /* SparseByteSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; B3D418B8ABCCAC66082A0DD9C03B9628 /* SRLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA37501D46115DDABA4571FDD025BD2 /* SRLog.m */; }; B3D5EF797853D7097172DEF9E94C0146 /* SurfaceRegistryBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3D2F20B2620B37412790BDD9F15C17 /* SurfaceRegistryBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; B3D6AA3293A885840D24CA060CC25456 /* RCTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DF8D4CCED43409861DD2CA66CD7733F /* RCTConstants.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B40152986DF0C62D2E28E405141D7CBE /* RCTTrackingAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DE4D8C3CE090B2BA0138B08B60165BFD /* RCTTrackingAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; B42F97FAE85B0CA99A1BB0B32E53A135 /* RCTNativeAnimatedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 16AFB3F99F57DB5AEF193C3CB1BC1A49 /* RCTNativeAnimatedModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; B440D0AFCA4156431037F2FB84B63972 /* VirtualExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 066367DE103F744E9A009FA7A06E7F87 /* VirtualExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; B466FFB8D8540FE239690E867F3DE68A /* SpookyHashV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FDD74A51002058B82FB55AE5D657564 /* SpookyHashV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; B482C575F5108FE43A5093BD905ED34C /* ReactCommon-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E7531C53649FE630D622444E87454709 /* ReactCommon-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; B484D7DD1C2D947F0F986688389D0E3C /* Utility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD6F27078A03BF0ED7DCF3591290691 /* Utility.h */; settings = {ATTRIBUTES = (Project, ); }; }; B511DC7B0492C9D9D0A58F080612F4D7 /* CoreFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB17360845E700286BDE806E67E8AA0 /* CoreFeatures.h */; settings = {ATTRIBUTES = (Project, ); }; }; B55B0004A9EC9C4A80588C16C8570BE3 /* RCTFont.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B995B84A38F911427A6A5E55661B60 /* RCTFont.h */; settings = {ATTRIBUTES = (Project, ); }; }; B56044159ED68D13ED80B3251BF4C71D /* Yoga-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EE65A27409B6614EB4E7E08374FDCA8 /* Yoga-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; B566B0A2794716116031E71BC440EA2A /* RCTReconnectingWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = A7E2525A0E66EF3136FD4342856314BC /* RCTReconnectingWebSocket.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B58A2402967EDAD0B86779DF77DEA32F /* BufferedRuntimeExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FE6AAB9CCD62E8CE2B1E03FA145C8B8 /* BufferedRuntimeExecutor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; B594B10156EF39FBB4350BFA868A2CC3 /* RCTRootViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D51CB71E6C720763C7DFC73A256D9796 /* RCTRootViewInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; B5B21BBAC4214172C7C33720A5960FCC /* UIManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EA35A760668D0586965F521A3B21B4B /* UIManagerDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B5F96EFACDBA7885CA0B125F4D0030E5 /* TelemetryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 194D194CCB89C075CEA29192C47A2A33 /* TelemetryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; B62B1C3E71BEAC7656E3F16525E73238 /* ReactNativeFeatureFlagsAccessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 39499A61681F432C3F011D0926E7DAA4 /* ReactNativeFeatureFlagsAccessor.cpp */; }; B648D871BBC7EBA6B48D239A116FF6B6 /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 289BDFFAEE5965ED8E6B54755E485A66 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; B69C081CE535E0CE9BFBC9566B1259E8 /* Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 792014C5B5CC53C6A4E7C3EAFA69D6ED /* Array.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6A677D259948AA6850E60654D2CA6CB /* UniqueInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = F51332CA416FB0997A5A9763AC54075F /* UniqueInstance.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6ACD468C9A12D4E2D4177AE940172B9 /* TurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D4E8D2C968BF398ABDE0E66D90AA405 /* TurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6DD615DFD63F8AA04F5EA15845F24B5 /* BaseTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 86DFAB05E161B696DFC1057DB247CBE3 /* BaseTouch.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6ED23A64D2504CDB6B64CF944092AED /* Yoga-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73301DA76E70E83388C9A33BCF56CEE5 /* Yoga-dummy.m */; }; B6F880D22BC0E73B97487B747513ABEA /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 94463E432EBBF80182004B420404987D /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; B778958B3420C110829CAB8F36FD7C2C /* RCTUIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = B597F21D264FDF22B451D67257AA9EF7 /* RCTUIUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B792854DB1139F6C4839DDC23FFE87CD /* RCTGenericDelegateSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB4D9ABDCA5AC8FCD10C726DD32E01C /* RCTGenericDelegateSplitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; B79CBEB0DF0D5B2BB1CA370C45ED444B /* BaseTextProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB964356FC077875C6D5B2218AF31AE /* BaseTextProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B7A0E11FB2F78019300E8AA5E82299B3 /* PackTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BD6398C6C92DF26317E3DC8E027D927 /* PackTraits.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7B95F233F6AFFC68E4B9CD4F18E0EAF /* RCTAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2BC45457F7B7889204A04BE2584DDE /* RCTAppDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7CE41DF964F198D03359FD16C29AD66 /* RuntimeTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBD26F4D9278DAF3DEA356BE83D84C2B /* RuntimeTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7D7841ABF9F0411A5E5307D1DA2C3F6 /* ColorComponents.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A48CF42426D1757E19F5E0283D958A0 /* ColorComponents.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7D7A68F6F82595F6811546D3F5FBE1F /* RCTImageSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 06AB36FC020F2569C74A4684B6B4CD49 /* RCTImageSource.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B7E1E22D704AE6B45D5CE7493F1DD3F6 /* ReactNativeFeatureFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 75FB185880821A181DA77737EA85AF83 /* ReactNativeFeatureFlags.h */; settings = {ATTRIBUTES = (Project, ); }; }; B853DD690352D47747E1C0F628B2F965 /* RCTScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = DD3ED969E30456E3100D106C5E71ED9E /* RCTScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; B85768B4335CC10A4A576DAC90A71D93 /* RCTSurfacePresenterStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 051EC8684B270AADB5DFA351ABA355C2 /* RCTSurfacePresenterStub.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B87B2669F479637ABFED52ED65EF2313 /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = AA78032AF49201693A01E81C17C66EA3 /* RCTShadowView+Layout.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; B88A2040ECB1F70E8F25F03E8F33187E /* Portability.h in Headers */ = {isa = PBXBuildFile; fileRef = DF4F0BE954C36F42882AC304D011030F /* Portability.h */; settings = {ATTRIBUTES = (Project, ); }; }; B88D6486C89EAA9B8FA7B9BBAA935016 /* RCTBaseTextInputShadowView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 857ABB199F3E6193128196415203918E /* RCTBaseTextInputShadowView.mm */; }; B89B95DC19D784FF1D918EF174F7304C /* Hint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DBAD76DF0AA6D7A788B0D3674035677 /* Hint.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8C3FEE7D7B3755A0BF1C463308725ED /* TelemetryController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5823607D77DE3B854886CBA748F1433 /* TelemetryController.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B8C5AC5B7DA9B2A06BA64F5A4293A1EE /* SharedMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = AC04A5C67B4CC06104E1FAC9CDF58712 /* SharedMutex.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8DC5312262AA5FA9C450ABC35A99FC3 /* IPAddressException.h in Headers */ = {isa = PBXBuildFile; fileRef = 789B5746A1B28065E10E29579DC6FE8F /* IPAddressException.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8E0926005F78632DECE3D0E7A6B853F /* Database-sqlite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79E82AE02BC6B9CCABF7C62D230F794F /* Database-sqlite.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; B8E580ED62C6E906A4E12DF1A29A578A /* EventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C2F40D8790521504B9C05E652B31DE /* EventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; B9059E18CB874DB0187746AD8FC588DD /* RCTSurfaceSizeMeasureMode.h in Headers */ = {isa = PBXBuildFile; fileRef = CF40503F32A96F47168359F16F99FC55 /* RCTSurfaceSizeMeasureMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; B93CE3FE617101FFA26C79EF78C145C4 /* UIManagerBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF7790CCA0F33012360CF9BA24706CF9 /* UIManagerBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B945ECC66F0C651040D88DB13B191014 /* signalhandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7706A182348778EF9482CF0A0A02DC41 /* signalhandler.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; B94D8534EACBCA2D52D42FE0F7EC7B6A /* Fcntl.h in Headers */ = {isa = PBXBuildFile; fileRef = A09332652A2DA7B2F95FDC212274928B /* Fcntl.h */; settings = {ATTRIBUTES = (Project, ); }; }; B950ACC5E104B59E5EED2084C222FE73 /* AssertFatal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBA55B04BADD1F4ABB709051EF06C89 /* AssertFatal.h */; settings = {ATTRIBUTES = (Project, ); }; }; B95535EB465D0577E50655E252780F7C /* RCTSurfaceRootShadowViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F8E66FF737E243487DFC9781A2605FE /* RCTSurfaceRootShadowViewDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B95B3FEA85BF956F4A5CA3D0C820BC43 /* RCTComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = DCDAB8C1A8AF49504419868DFB5EE19B /* RCTComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; B965CFA26A338B7BF3BDE4F541A7ADE9 /* DebugStringConvertible.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE0D3D7FDED11B0BBBDD597E67E6E5CD /* DebugStringConvertible.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; B9680AACE3CB0C78BD9987E51E119F54 /* SurfaceHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 92308B330D7A43F94B4AD41D0FEB8214 /* SurfaceHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9CD8F8C81F90DDB41B08F0B005D2FD2 /* RCTTextDecorationLineType.h in Headers */ = {isa = PBXBuildFile; fileRef = C3701203D3AD5D881037196F72FD8BB7 /* RCTTextDecorationLineType.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9D6695B46C1A7889F7039E360A604F6 /* Vector.h in Headers */ = {isa = PBXBuildFile; fileRef = CFB81BB75D1D9BE93AA436949526503C /* Vector.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9E1C9D4A16FFAF1560A278D0104CB8B /* HermesInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 019F5B5B17C82713C4D6098E01A6E634 /* HermesInstance.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9FD8BF287FCE73CDD7100E5A2CA7E24 /* DispatchMessageQueueThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 824AF1EEC669FDA2DBC78CB48CBC86B4 /* DispatchMessageQueueThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; BA2CD9347081FBACC0B91878B7B5E2B6 /* RCTConvert.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5CA3E3C33E4FE87189CA5272539AA13 /* RCTConvert.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; BA3ADF4A8E40C8AB0FBC1B0A393B3891 /* vlog_is_on.cc in Sources */ = {isa = PBXBuildFile; fileRef = AF297E87957501039602459E49565C20 /* vlog_is_on.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; BA4ECD7D27EEB764E12B599F80C19150 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E745C18EFA47BE9828C298066E9F6F5 /* core.h */; settings = {ATTRIBUTES = (Project, ); }; }; BA893830D9B18AEF81EDECAEECF9F495 /* SRMutex.m in Sources */ = {isa = PBXBuildFile; fileRef = BBAA6714B59FDAB63CB3D51FFFAB5E9F /* SRMutex.m */; }; BACA247E7575A79D1D48E553058B2976 /* FollyMemset.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A9D298DB1C62EA7C25E8F85CFF52F8 /* FollyMemset.h */; settings = {ATTRIBUTES = (Project, ); }; }; BAE41AC37444F16DC1364FC327A7C38B /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B38F5BBD25E489CA1BCFF0B8B34AD39 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB1ED891A520B5065A5DED3E37ACA7F0 /* ar.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 2633DC101FF0E08FE241777B60154AEF /* ar.lproj */; }; BB290E6063D0D517A3C83B1DDA4BF000 /* RCTBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CDDE02E3DE33048B69564671CBA6D96 /* RCTBridge.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; BB31575F6CB94C521F193DD6091B43C1 /* RCTModuleMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB9D50DBC3A7605124A8AC121341CFF /* RCTModuleMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB4F1FA68DADFBABA5CDF3C1D7045F38 /* Arena-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 466A8EAE41785C3EA08D830470EABB6B /* Arena-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB715F4BA27FE3E850E271F2F75C37A6 /* Malloc.h in Headers */ = {isa = PBXBuildFile; fileRef = BD52A822E13E3FBE427F01FAFF774941 /* Malloc.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB7454F5C1251EBA25AB7F058CB59A20 /* EnableSharedFromThis.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A2008DB4CB2932C0392674068ED82A6 /* EnableSharedFromThis.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB894D03D378CDA7DED9870ADC869E5F /* TextLayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 04308B32F6B6A66B18A8BFB8D050CD14 /* TextLayoutManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB9B6DC3BA3E623DC5E09A9D554CA3D6 /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F9A9F41C8712A5EA89926F9E34BB317 /* FMDatabaseAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBB7CD52BA8A4BD1CA13E8607E69D734 /* RCTTextInputUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39F4D12A0547EEA463DA17C682F69B34 /* RCTTextInputUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; BBF174BA4A0B11366F598742295D97FC /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1528B7D498ED533635A7109CF11814AC /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC62BEBADDC0DF99B2626677E09F4224 /* RCTSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = 762588AD3F68541107FA36AF37D053F9 /* RCTSurface.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC6A9D036DE803C84DFC46F74C1B54DC /* RCTLocalizationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D7883FA7052AFA06DF3F841FBBB33EF /* RCTLocalizationProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC6F9DEE2138A6B67A96F83FBFEFD5A5 /* Size.h in Headers */ = {isa = PBXBuildFile; fileRef = 9130DC48E60A16B3033E4C4648557B52 /* Size.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC6FBBC737C9E7B5B1DFA21DF4EB9A0B /* RootProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD77E6961ACDBD3730EC6702236118AC /* RootProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; BC7F8E1CBD8D713846A0BBFB5CACCFEF /* RCTDeprecation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1147DF7D7F05EA4A85F3A1FF854A3B85 /* RCTDeprecation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC8F3B887DB5312669D79FBBED471C90 /* IPAddressV6.h in Headers */ = {isa = PBXBuildFile; fileRef = 662EDB351806ACAF98C186A204C9A85E /* IPAddressV6.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC9D1F143856CC6872D6C3559711EDAF /* Enumerate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9052E26FF92020AFAA064B27532BDD02 /* Enumerate.h */; settings = {ATTRIBUTES = (Project, ); }; }; BCAF65D4FF616E0657166D728E13A11C /* DistributedMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C93DB36FA986D128CB97DE275C7A0B4 /* DistributedMutex.h */; settings = {ATTRIBUTES = (Project, ); }; }; BCF538F2334EA778995D5BC9776E8110 /* RCTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 39650BDAA0AACD5B404A81046E1DC6C8 /* RCTLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD01F6099618E01DA2E418D865E8560C /* RCTTurboModuleManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 446FE57F2A972700F005CD2CC41F8710 /* RCTTurboModuleManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; BD19A05C58B1EC18B47AAF026E4DC966 /* Hint-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = BF031C91FD312DC63FF16FE7D183B230 /* Hint-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD2AFB55C0FB4463B222D2413DD85C73 /* SysTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B9509822D0A4EC87A2AA3BC68342DF3 /* SysTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD6827747579EA86DBDAAA32D9084BE3 /* ModuleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E855C72DB65E8045F7D611DB8E0AC7 /* ModuleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD69072959AE8E10FB9E6B91DE1FE1FB /* RCTImageBlurUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CFB7A8BE97081BCC80D943BAD260E5A /* RCTImageBlurUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; BD99C2863EFA1867E4CC53CF50951B2F /* NativeComponentRegistryBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = D6270B25D28322D56823F16246CD7C57 /* NativeComponentRegistryBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD9F5BFFA46041D4E554AC866B630F26 /* PixelGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D9123036D19728374029B1BD6567BA8 /* PixelGrid.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; BDA63FE5A587CF5C5ED9DD8BCE0B4244 /* ostream.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D826D3061A245096B1C382B690FA981 /* ostream.h */; settings = {ATTRIBUTES = (Project, ); }; }; BDB5B6E32C9C64AAC0AF0F3D37F137F9 /* WeakList.h in Headers */ = {isa = PBXBuildFile; fileRef = 963CB6F0F1E28EA98A2EED61461AC386 /* WeakList.h */; settings = {ATTRIBUTES = (Project, ); }; }; BDE6C06ADC0B7FE944334E2321297371 /* Checksum.h in Headers */ = {isa = PBXBuildFile; fileRef = AB1459102548D6C97BDF32F7673BD1DC /* Checksum.h */; settings = {ATTRIBUTES = (Project, ); }; }; BDEFFBF8EF6DDBC1114CD89E77DDD2B4 /* Aligned.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AE62E3EA1E11A2011DFB36206854AB4 /* Aligned.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE32F467ADEA0C6CC8C6AB51E53C8360 /* React-RCTFabric-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F1662929364AF9AB1F5EFD515C39CA /* React-RCTFabric-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE3E5B126114B81C72E7C74D3ECFBE63 /* BoundAxis.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C8906A6C460D393729CA02A57186E7 /* BoundAxis.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE55E4FD3612515277281F56F4DCBBE3 /* HostPlatformViewTraitsInitializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A64B900827AD880DCA0F0CDC3BDA727 /* HostPlatformViewTraitsInitializer.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE72B86093B43341E6E66A17E39FC367 /* Float.h in Headers */ = {isa = PBXBuildFile; fileRef = A67702A5BB9FE81CBF2BBE1340D12764 /* Float.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE78B704D8C638CDE420A05430C23402 /* HeterogeneousAccess-fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = B32CE247FEEC1814744A3421CB654796 /* HeterogeneousAccess-fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE89C52B16C25B11A806A9C95D163AC9 /* RCTSwitch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4168B7BDC6AE9FC9B5C87C96C641EA8E /* RCTSwitch.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE9378E4048139E2434CD8416D014949 /* Rect.h in Headers */ = {isa = PBXBuildFile; fileRef = FC391A89C7D8499E264ADBDD9F59F736 /* Rect.h */; settings = {ATTRIBUTES = (Project, ); }; }; BEB43DD0A82C63C5DA77BDEBF27EAB11 /* RawProps.h in Headers */ = {isa = PBXBuildFile; fileRef = CC381BCFEEAC649BB62889E972FAD4E3 /* RawProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; BECF0A8247DDD53567BC16E3F7F7FBA5 /* RCTPullToRefreshViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B45045020F47D86FEF4BD034627881 /* RCTPullToRefreshViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; BEE20927650F0E34B770955423009032 /* FallbackRuntimeAgentDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9849504D06A58E365E3512F08D8AD6DF /* FallbackRuntimeAgentDelegate.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; BF50613A6236144CFC64B76482D8604A /* RCTUtilsUIOverride.h in Headers */ = {isa = PBXBuildFile; fileRef = F9317E9FDB1763149AA85D21D664A706 /* RCTUtilsUIOverride.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF7F76D1757734E5AA71B29C9225ED2C /* SysMman.h in Headers */ = {isa = PBXBuildFile; fileRef = 506A5EB970B15ADBF0D61002534BC9B1 /* SysMman.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF8E3A91D5B558AB51CEE906B5AD877E /* jsi.h in Headers */ = {isa = PBXBuildFile; fileRef = 469194BAB9EE78B8BC1A3877E5EB169C /* jsi.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF95BCE7DEEBE179C23F8F6D13EB1A5C /* react_native_log.h in Headers */ = {isa = PBXBuildFile; fileRef = 944561AB0FA2778925F3B3BD1ACD8B3C /* react_native_log.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF998BBFB68ECD47CD96ED1B92D5A9A4 /* traits.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CE3815AC95E2E19EFA825C26B6DD16A /* traits.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF99D3180B889F62B09F91350E7C662B /* RCTSinglelineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 70FD25025D88D2C467D14135D309D155 /* RCTSinglelineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; BFBCF7EE822DE23E5F13DB60A08EE12A /* RCTDivisionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = AB89B71C07D924F2DA582CF6A4C3CFA4 /* RCTDivisionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; BFCA21C2893743BB4DA5287E067E2CE8 /* Sealable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCAC25D53F76C3CA7747058E179BEC03 /* Sealable.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; BFCCDE2C5A4302237A973BB40482C84A /* RCTJSStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = FF16234911D787047083140DEC397AC5 /* RCTJSStackFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; BFDD5C42EECE46A1E9056A6A35207FA5 /* ParagraphShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11F2C5264D76056FDC6FDCEE75FEEE82 /* ParagraphShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C016F3769390ED58641BA2886319108C /* RCTComponentViewFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = FFA331C6B5744B16007B95A0D3EA96D8 /* RCTComponentViewFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; C032E5BB08569C501D19399A5F42C999 /* CPortability.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DC4F893B0788A2E9A80A4BD69265922 /* CPortability.h */; settings = {ATTRIBUTES = (Project, ); }; }; C08677D33FB9E6187D04980860872F5B /* YGNodeStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 91C4877BD9BE873DF4DF6B5DCC0CC740 /* YGNodeStyle.h */; settings = {ATTRIBUTES = (Project, ); }; }; C0897BC0137C74A33DD2883F8E433ECE /* FileUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = FF88C9A8B1E0A79468C40F286C239533 /* FileUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; C0AA8E5DC19580CD56E6741BA43B2836 /* Database-turboSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C508463B95043E7E700C0414CB55E23A /* Database-turboSync.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; C0ACAA415557A9541189F735338188F6 /* RCTRefreshControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C6CA880F0AD8CC31C1BF775228C3EF /* RCTRefreshControl.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; C0AE938053DA32A5D3A7BBFE90F6B81A /* RCTErrorCustomizer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAB8070C18EDCE8B518A4AD6B7ABA7D4 /* RCTErrorCustomizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; C0C35A59710DB7C0E344E402A71E326A /* Futex-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0101C2B932AED7971A900220D55C0B86 /* Futex-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; C11C62BF75D485758FE41A15F556D6A6 /* ParagraphProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C7A8CC093D61D93FAFE2A423F9CE0B7 /* ParagraphProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; C14128969BE1C6AB075A68A94478FEA9 /* RCTRefreshControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F14EDE5F666391049AE8B82BFE391E88 /* RCTRefreshControlManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; C183B242623BA337D3C0F828AD6BA9AD /* UniqueMonostate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A474E2B602BF03DC7153DA54029EFCD /* UniqueMonostate.h */; settings = {ATTRIBUTES = (Project, ); }; }; C1A8B83142B9F3C7DC02D5E53BA45AF8 /* strtod.cc in Sources */ = {isa = PBXBuildFile; fileRef = 43EB5BDEB4E6A695F071E994CDEDF34A /* strtod.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; C1B26D9A55F1A2C8CDE164527BF69595 /* RCTMultilineTextInputViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = D9C558B0DD5120E2A4ED354C91A0A581 /* RCTMultilineTextInputViewManager.mm */; }; C1EB13FC1F8A6376FE9200436FEF08B6 /* Windows.h in Headers */ = {isa = PBXBuildFile; fileRef = B8EE883969234B8D43CEA19B78B08828 /* Windows.h */; settings = {ATTRIBUTES = (Project, ); }; }; C20E436D91DA5203A47F3D6F3E562C6D /* RCTActionSheetManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27D5B6E7F5A0D017C0081BAF95A9E8AF /* RCTActionSheetManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C214AD1E1FFAAD2EBCA4A756CCA4A07D /* NSURLRequest+SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = F8AFFDB6E319041377C5799A85CD2848 /* NSURLRequest+SRWebSocket.m */; }; C2619EDFD44B3B235FB459A25B4A72B7 /* Bits.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B0A8E8F61759E910B9953C7FF640925 /* Bits.h */; settings = {ATTRIBUTES = (Project, ); }; }; C27DC9FF99360274DA538C421B4F71C1 /* RCTAppSetupUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E5972A9C9EBA5B3038586A11E0FCF5 /* RCTAppSetupUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2812E54502D0AE67E89826DF1F68331 /* RCTBundleAssetImageLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 307CE5CEEA4E06A6A255CA72344E783B /* RCTBundleAssetImageLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C28578E54BCAC6BAD431CC47C0D837DB /* RCTTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC04D4366699171D90B6E14F8947CBD /* RCTTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C28EBE70902BCE47AB96EDB66AE8C397 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = EA92D2D183344B3DA53FE9FC7B307DE6 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2AF2A840E1928C9F60C0AA90B705BFA /* F14IntrinsicsAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 173353D36092C2DD008D22FDEA5C21AC /* F14IntrinsicsAvailability.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2DF30B6DE01B7D903B28E6013811564 /* RCTTextAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8980AF1403E1F2A16DA44CAC4004F1E9 /* RCTTextAttributes.mm */; }; C324ED09ACD63780DE0215EED2E91E81 /* SimpleSimdStringUtilsImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 696D9C59C6F80DB952F1142DBCBBF620 /* SimpleSimdStringUtilsImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; C38870EFB4A053C9D2A3C9C2988AD348 /* SocketAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AAE8CC35982681A17144AA7022C354D /* SocketAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; C38C0624ADE70CC7A4721C78981D8051 /* RCTNativeAnimatedNodesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C32C30AB7EF3BB474BC4B4DFD2FC61C0 /* RCTNativeAnimatedNodesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C39630188B797485BDB7AE5D8FC4B7CC /* fast-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 28D7BEABBC1EB38780017A5D14CC2E0F /* fast-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; C3A9C328C82327A71B8E84B9D9953642 /* bindingUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33A82E15C4F5EEC134A1C086B421B62D /* bindingUtils.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C3FC726B41D7E5C3AE7913D10FCA7710 /* RCTStatusBarManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A53C026A38554E36070D5FF7477DE9BD /* RCTStatusBarManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C429AED5A28ED5CED26E118A328A138C /* ModalHostViewState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABCCB9297D8973E3EB46EEFEDDEDCB4 /* ModalHostViewState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C4730E88D130D0B7B7B6AD61C046C45D /* PlatformRunLoopObserver.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6075D4D4439E8587250CA17C18029EFE /* PlatformRunLoopObserver.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; C518D5794D6157C417922E2E4B2B82A6 /* RCTImageViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26E19B9D750F023C6ABA23E46C660990 /* RCTImageViewManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C536D1DF09153CABFB88C9BDA95EAA1E /* json_pointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E02117FB47D5E097A2FE278E42ED7D2A /* json_pointer.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; C53735A70163AB0A8E31BD1F52A5225B /* StyleValueHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = B9F029DADA46B18ADF047508F6813174 /* StyleValueHandle.h */; settings = {ATTRIBUTES = (Project, ); }; }; C53B4E78EE7B685B08EADB598B3D73C0 /* TimerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8273DFC8BCEB15B1ACE7AA5FB60DFA /* TimerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C54B8565B5FFD71C349912AF08E0CE61 /* ExecutionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = F9FB962222C7D13D456DA7490A882D10 /* ExecutionContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; C55E12D16DFC55B05F20AC48CC367A4D /* NativeModulePerfLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BE67D2E5B439024289DCAE23AB7DFE4 /* NativeModulePerfLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; C5683D8CE70A467CD760436F464EBF07 /* RCTActionSheetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FFD4B861CCFBFBB3B9059A2DCEDE8D24 /* RCTActionSheetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C5875E99005BE017DE24E9F217EA362F /* RCTHTTPRequestHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 445199601546E45056A827DFB23F4148 /* RCTHTTPRequestHandler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C59BF33E43C2399EA30FEAB9463C27AC /* RCTDevLoadingViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 25984569AD3852F629F09301282C7769 /* RCTDevLoadingViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; C5C73190B9AE8ECC8D69A6B28FEE407F /* RCTScrollContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF44B022CA9C008F36C080D66685928C /* RCTScrollContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6747C938C8A8C6E92C0590D74661B76 /* React-featureflags-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E8BF57389A0D82185746D63D05645956 /* React-featureflags-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; C684EF50FF0928A3EB0D633FAD9CFF31 /* RCTFileRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC9CA0EA4B12AEE132FF43037AE8E00 /* RCTFileRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6928A6A1531FA166407A1A84E0D76D8 /* ComponentDescriptorProviderRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 081F794580583CC4DFEB6D2CF2DF3D3D /* ComponentDescriptorProviderRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C6CDF82E4F1DB6694DC892F9E734C059 /* RCTSubtractionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D837D755183ED658A920B4FD642A3F16 /* RCTSubtractionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6EDCB116DA4E5DF0B2208B9D1F6AEF3 /* Function.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB326307140B9D4967E5C75EE4D451D /* Function.h */; settings = {ATTRIBUTES = (Project, ); }; }; C722DB4057046A629115CE023B7A47D6 /* LongLivedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B862E1391D01BF787FE43136140D8C85 /* LongLivedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; C77CB2DD8FD053075C9A2178F2617423 /* RCTEnhancedScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E169D2216CF9E719B147E7377742BBD /* RCTEnhancedScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C786F85A5EF2AC362596E13AA803CEBA /* HardwareConcurrency.h in Headers */ = {isa = PBXBuildFile; fileRef = 8980B7C2D6023D0EC77EF277C17227D1 /* HardwareConcurrency.h */; settings = {ATTRIBUTES = (Project, ); }; }; C7871DFEB70AFC8C34E686E281A6A237 /* ParagraphLayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 92EE42BB2B8D888B92EDD257DA21325E /* ParagraphLayoutManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C791DDB6F088C6A6850CA660286643E4 /* stubs.h in Headers */ = {isa = PBXBuildFile; fileRef = AEBD60021620778CF66B52B3BB90BDF5 /* stubs.h */; settings = {ATTRIBUTES = (Project, ); }; }; C7C573418A056B8AB963F9493EA16B0E /* React-RuntimeCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E0295F5F6E41D3C5358AC3BC796E1F70 /* React-RuntimeCore-dummy.m */; }; C8036C771D671E36BEDD71CB224AE037 /* ImageProps.h in Headers */ = {isa = PBXBuildFile; fileRef = C6326DF244B84C66EDAF7AB7E2A7C98C /* ImageProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8116CD6D7885B9BF76539C205568E78 /* AtomicHashUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = BBE2B529666092F7DEC3C687F33200F0 /* AtomicHashUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; C82241B63061787791128A1EC9E9F5B7 /* TrailingPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FB8DB4CA6FB75873D74FF57CA59968C /* TrailingPosition.h */; settings = {ATTRIBUTES = (Project, ); }; }; C828B700D5250C25780C5E58917B34B4 /* Parsing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE123FC7D80F16C162FBB579CF5DBD81 /* Parsing.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C838669A2A7E0BED3B5A3636674F8736 /* WMDatabaseBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = FB687C9F11521E5B9F74197C09608F8E /* WMDatabaseBridge.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; C85AF2DA0E711B6D8061354E44155F49 /* RCTInputAccessoryViewContent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85234EF8449BC006516D4A6A62B9F438 /* RCTInputAccessoryViewContent.mm */; }; C85DCBF8B4568557FFDC434149051C1D /* LogLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 795A0388C8652FBA4A957C30BE9222F8 /* LogLevel.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8600F63A7EF1DE7EE7E9303EC941496 /* React-Codegen-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 739F5A9F956FCC84E8E36F6798EA859B /* React-Codegen-dummy.m */; }; C872CAE403B0D04BB730CC1DE6247C69 /* stop_watch.h in Headers */ = {isa = PBXBuildFile; fileRef = 035C4CAE603317412DE18DE1D8300A94 /* stop_watch.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8809AF5166285F86569DF60E9E4588B /* Format-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 48D1454DD898A877C683DE012FCE946E /* Format-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8FA2EB937D2445F1741FAA0ACBA9FD7 /* RawTextProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E66752688584187D6864081ED411C01F /* RawTextProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C9218E0506DC81BD1B8759BFFC4C0D17 /* NodeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4D1C251906CB5D9F8086B2747C1522 /* NodeType.h */; settings = {ATTRIBUTES = (Project, ); }; }; C92E995FC44274E6EB6B58EB6B6E5A71 /* RCTBackedTextInputDelegateAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1530C1A41641E337C100090EDB4CD24 /* RCTBackedTextInputDelegateAdapter.mm */; }; C93A122778F03045ED2729B67D3D3E9F /* RCTDevSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE42F9FEE2CC91F9B2D0CD06DCFA3B4 /* RCTDevSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; C94ACD989BE1642BD08003091B0B9A6A /* RCTScrollViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 68F7A0C0E60467EF299D038EF39D12DD /* RCTScrollViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C95402DE1ECEBACD3DDE1B93F5D50453 /* SRError.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DFF996F36C36E3B8BE3131F1026090F /* SRError.m */; }; C9673DD1A700BA1297C0EEF20E6F1F51 /* RuntimeScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E78187A78E9550C8C47E82A7E0800C4 /* RuntimeScheduler.h */; settings = {ATTRIBUTES = (Project, ); }; }; C96741C72BE65B64A4AEAB8481F58285 /* zh-Hans.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A8FBD27727A3838365F69F39FCE1378C /* zh-Hans.lproj */; }; C96B7502400A4B3C2BF51868F40533CA /* jsi-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D24D1273C6645B9F73FB2F6C0A44A1D /* jsi-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; C9763A53EB913A90DDFD3B05F894F445 /* RCTImageUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B5078EBA4D2CDB62D5B9977620515C /* RCTImageUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C9778BE281C609F2FD4ED0209BB020AD /* YGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B7333F82E7D58CECA09AB6ABF206727 /* YGNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; C9CB9FE580283AD17838DF762300199B /* TransactionTelemetry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6FBDF0EE578C484F397C21E43F49F7E7 /* TransactionTelemetry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; C9D61E8CE5FBF6840501CFF665CEE31A /* RCTInspector.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0349E57AC52849B1E2956F92F2F74D82 /* RCTInspector.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; C9DF4C4D56788006D3E45A2D743D5670 /* RCTBlobManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1371AFE6C3E17A03757544B99B0C563C /* RCTBlobManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; C9F6E53C80C424F26ABFB545F428ADC8 /* SRDelegateController.h in Headers */ = {isa = PBXBuildFile; fileRef = DD1FD8F5FBF34CB4BF85DC2E8496E125 /* SRDelegateController.h */; settings = {ATTRIBUTES = (Project, ); }; }; CA684AA0DA0CFE870A28282C20B5585D /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2433055CA015DE51A8A13B2AAAE5155 /* Config.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; CA842D589D81256002BBC46FAEDD0DC2 /* LayoutableShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C95BE4329B2B85F46818C25087E9147A /* LayoutableShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; CA84E75F9218D17F7CDAED715D619E5D /* PageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF560A03C559A77C9107C87619CB4E7 /* PageAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; CAA34B58E886CD7FFEA08D44224E647C /* ReentrantAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 31842C0B4263119B5232CF1827757893 /* ReentrantAllocator.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB16BF4D09FCFAD2BA7261CBE4357028 /* RootShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5607E93C1618AA4B1B9A7B366EA9EB0F /* RootShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; CB354C58134A502F6190E3C3C1BE2672 /* Align.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C322EC9FEFA80208EF7FC20F8E76803 /* Align.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB360F4117FB09CBC5BE701D8FC23832 /* BridgelessNativeMethodCallInvoker.h in Headers */ = {isa = PBXBuildFile; fileRef = 77660F5EBDC0FC5CF88F31395F69A2D6 /* BridgelessNativeMethodCallInvoker.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB3C2589382123E2648E2EE15DCD7717 /* UnimplementedViewShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A6AF9D5AAC8F547507F26CAC3BE8EA /* UnimplementedViewShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; CBAE1BAD49EE72A5219F0810B2E2285A /* RCTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C090425A0AC38F41F277453CBF5B235 /* RCTVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; CBAFAA32CD193D8766E0AA81E5043296 /* MemoryIdler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F8E6E55AFFCF9BD68B2B5B508CCEC75 /* MemoryIdler.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC03051DBCACE8B77F865DD060DAFA03 /* RCTCxxInspectorPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EEEE05EBCE258D71886371521451AF3 /* RCTCxxInspectorPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC0CADD2F0F0E0729FE5F9C9605CBCC1 /* xchar.h in Headers */ = {isa = PBXBuildFile; fileRef = D181C872FF8059D494F78C6BAF4765FA /* xchar.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC1068FC78F21AC9E9DC34700188D70A /* RCTImageUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C96A892BD79DFF4E7AD6082E8D7F4F /* RCTImageUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC1A997B5C11BC4868D250FBBF8B0C1E /* Unicode.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B1804846FC5FA7ACBFC82E7F5B9746 /* Unicode.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC21D14AE3380035230F2E4D94C48724 /* RCTSourceCode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 959BD66DF33D8DD073B3E7135B2954F7 /* RCTSourceCode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; CC4CE15B64E3D6123467FE8E3BB099BF /* RCTBridgeProxy+Cxx.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1561C46AF8A258D7CDA8942E5C9828 /* RCTBridgeProxy+Cxx.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC5BCB4CA3A1336C2B736EC0C18BDF49 /* React-FabricImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 926F478934D57018C94BFB51AF5970C8 /* React-FabricImage-dummy.m */; }; CC6A3584C37F8AAF1DB1E24E2879A29F /* RCTVibrationPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 0829B215BF56AF5014B3A1F4D600D8D5 /* RCTVibrationPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC6E3938A4EF0A6DB2B0D56ED41F4976 /* RCTAnimationUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FA9E0C5DE547662B3285AAE677F1CBF /* RCTAnimationUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; CC9050FCD05014AE5E216B89B1760808 /* RCTModalHostViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = C56554BC73CCF6D61610A28081393A2A /* RCTModalHostViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCA37D065218C0C45FDDF8CC70E835B7 /* WMDatabaseBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = C5B6D34CEC3C6CE2295EEDA15E8B7DD0 /* WMDatabaseBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCD0BF1B78D5A69D873D2841DBA1869C /* RCTSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9113D58420F951D0F8E7D507C99E9190 /* RCTSpringAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCE0086EBD30F01C080E3B021727B3FA /* RCTRawTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF8192C1B7013E06F84C24D2B1110B0 /* RCTRawTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCE444B1936ACA47326F4959A4A1172B /* ShadowTreeRevision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D6DBF11CFCFF077F1E73E67C1B435B6 /* ShadowTreeRevision.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; CCE6526143D52DD765D5B173B8EFB74D /* TextInputState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A6A3F0A2B90931BC1EC1C3E21381C797 /* TextInputState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; CCE7ED5BBA97D0A5598471FC277F8AB6 /* RCTVibration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4F21E8185A97B7403E0532DBCEAE20ED /* RCTVibration.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; CD639A6F3B9AC7F773C16CF14E65FFE0 /* Iterators.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CA3417ED0B8CDE1906D3202E80B148D /* Iterators.h */; settings = {ATTRIBUTES = (Project, ); }; }; CDA9AA0D1528A162879E3E394100DE76 /* ConcreteState.h in Headers */ = {isa = PBXBuildFile; fileRef = 46F019BC62AF7DC88D7C7732C66B0216 /* ConcreteState.h */; settings = {ATTRIBUTES = (Project, ); }; }; CDB8B07A16C926213D3894D3C27A65E4 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = A4EB08646CC21410C4622CEE62B7DC51 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; CDE3F42EA3A73ED13A9096434E7A1599 /* SRHTTPConnectMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 90C01A0B4DB17D752D3BDD87C1B4D35E /* SRHTTPConnectMessage.h */; settings = {ATTRIBUTES = (Project, ); }; }; CE24A9E32AA34B04A30BB385163BE369 /* FollyMemcpy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7350D90D235F0E829948F766094A036B /* FollyMemcpy.h */; settings = {ATTRIBUTES = (Project, ); }; }; CE297BDDD210CFFECB76D3DDE5F79D3F /* F14Map.h in Headers */ = {isa = PBXBuildFile; fileRef = D96F738CE283D062C54E36FE7D38A7AF /* F14Map.h */; settings = {ATTRIBUTES = (Project, ); }; }; CE6B34445994B4A63A62A2E845DC3979 /* RCTValueAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D968F1CAEE31B74111F5F45D24E694BA /* RCTValueAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEA7FB8A9AF33E5A6299B7AC9F1F3018 /* RCTJSThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E43D1F91E0AD0BD2B3B8127C452C9D /* RCTJSThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEA8A8F5218290D21CA3D0F9FBE73D05 /* ContextContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B644FFAD498B469A3633A360744C403 /* ContextContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEBDF609628A96683A1298905EB10E39 /* StateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AEA8A2506861840BC63D873CC2961A /* StateData.h */; settings = {ATTRIBUTES = (Project, ); }; }; CED9A3245D7A70EDF4C68CBD7962505D /* SimdCharPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B3B00A3AAC44C23D4F7E237FE0D5C5 /* SimdCharPlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEECA36CB4ECD4DB8650B1C0AFD35463 /* json_patch.h in Headers */ = {isa = PBXBuildFile; fileRef = 917B25EF0D073A826D0E80F0B81BFB26 /* json_patch.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEEF5F179C75EB5D8C84E49E94F90BBF /* YGEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = D70B1BA1E566B78E8FFA9FDB20C45D1D /* YGEnums.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF09FB6845E2AC4E839B337CAB546E51 /* DynamicConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 582D8ADF4BEE51D724800E05D34ACDCA /* DynamicConverter.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF16D91D0F7C3653BAFCDC818A70F695 /* ImageTelemetry.h in Headers */ = {isa = PBXBuildFile; fileRef = C3A0E653F207D8208760F39D89431669 /* ImageTelemetry.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF5119F6D4E8A0C521F7D0158B43D1E1 /* LayoutableShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D40F2678A9E0D12E6FEE80ED9004E5BE /* LayoutableShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF64AFCC6883E96BF7808D1467D18514 /* LayoutMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = A35672FA86AA809C95DB1AD01D1F4E30 /* LayoutMetrics.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF679B941190DB17482EAAB2423482B4 /* Access.h in Headers */ = {isa = PBXBuildFile; fileRef = 6629455746E57DAB397BA5E289A81B37 /* Access.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF9190469C904527AF29EE59E32447EC /* RCTSurfacePointerHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44356704310DCCAB77D9F8693D62FE0B /* RCTSurfacePointerHandler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; CF92DE7237153EF5E90B30A3682BF1C8 /* HostPlatformTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = CB960EC9C47A40C34C5B59FF58A14FCF /* HostPlatformTouch.h */; settings = {ATTRIBUTES = (Project, ); }; }; CFCE4649CD6C9EDC4A1E1798B4D609E3 /* Baseline.h in Headers */ = {isa = PBXBuildFile; fileRef = EEAA1C4C0F827F9E5B0E9A8A96B8B9D7 /* Baseline.h */; settings = {ATTRIBUTES = (Project, ); }; }; CFCF9B04CFF0ED4C5A05E5BB8CB7949D /* LegacyViewManagerInteropShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ED447FF7E9E303F98B593502FAA8151 /* LegacyViewManagerInteropShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; D003AF5F1E96BB49180B4461CFD27434 /* RCTModalHostViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6641C8CC47F08AA0D3136808CBCB811D /* RCTModalHostViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; D011BB8962CE2E4274EB53AA1B967D44 /* SanitizeThread.h in Headers */ = {isa = PBXBuildFile; fileRef = CA69419C699C779F51EC2294FE37593C /* SanitizeThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; D029A199B240E746CD4A89367F3888FE /* RCTBridgeProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = AEC06D85B7F38501A5719E0618BBDCB6 /* RCTBridgeProxy.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D0515E6C90A79FC61FA6AA4547A22242 /* Function.h in Headers */ = {isa = PBXBuildFile; fileRef = 56AAE7ABD3415795FAEEE07A449DD7AE /* Function.h */; settings = {ATTRIBUTES = (Project, ); }; }; D0521A5D06CA09FFB9EB9EDB701566C0 /* el.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 0F403305468DF1F3BDD4EB48076E71DC /* el.lproj */; }; D06694D3AD50DB51D293984A9018A124 /* CancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = FC43226FF6ADEAB1549A1CDD67BEC74A /* CancellationToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; D08C6F38B916C0B5EC43E9CFA026685D /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 02AB5D40CC6820F70D656AA73BEA1C64 /* logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; D0940A21900A9EE7EAEA223B36E1FB73 /* ThreadLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4478194C75B2D184014614829944D5CC /* ThreadLocal.h */; settings = {ATTRIBUTES = (Project, ); }; }; D09944151640950A50227FED4D33D066 /* F14Map-fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 4873FC718C30FB33CE887064BF8E5DE8 /* F14Map-fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; D0AABA0B25ED1795CF662870AD7F0EC9 /* HermesRuntimeAgentDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80CD944FB88B23807F5AAAF7CB21069 /* HermesRuntimeAgentDelegate.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D0EFDBC75FA87E68439E6A39448AC532 /* JSRuntimeFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6536CE777152C1FAFBE3DC240DF67324 /* JSRuntimeFactory.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D0F6F87BD68C9516D0D0142646B8C905 /* ParagraphLayoutManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46EA19D378721E8E4D853840E6430E2C /* ParagraphLayoutManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D115801DD61F22629F88BCF5BCBA5E36 /* React-hermes-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1363975620BCD9B8C433172AE2F17F0F /* React-hermes-dummy.m */; }; D118BCB36B5A104E9E977BADC0B7C9A0 /* CallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C3160ABF695152C97A85E56B140C4B /* CallbackWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; D18A57DE0C2C135355388DF5C2EB6C7E /* fromRawValueShared.h in Headers */ = {isa = PBXBuildFile; fileRef = 296F41E25D51A2758C6CBFAB3A8B8FAD /* fromRawValueShared.h */; settings = {ATTRIBUTES = (Project, ); }; }; D19E93538E81D1EA6110AB9D09F8CBB5 /* HazptrThrLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7891A1695A92EF0EE3D79FC7792120E /* HazptrThrLocal.h */; settings = {ATTRIBUTES = (Project, ); }; }; D1BBFFF4257883AE32ED7139FD296BE6 /* ImageResponse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06E34251980A9A80A1D27297F3B60B98 /* ImageResponse.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D1C4AA3D4A4063C85BF05DF7F95FDAB5 /* RCTUnimplementedNativeComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 431DEF836033B057B6067879CB291040 /* RCTUnimplementedNativeComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D1FA44DE7190AAFE62E2857974D5BE69 /* SafeAreaViewShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8332BB1363344A31DAAB30F13244873B /* SafeAreaViewShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D21B7BB8606BF188823CB4024222D8C7 /* he.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 46E1F838DD66034E7F76591680E8F0F6 /* he.lproj */; }; D21E8439B7C2A9FA86AB82CBAD4FECD9 /* Memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A1CFA157156B29C57AF9F7AACA682D /* Memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; D244559AE36BD566F5DFFDBAFCFFE2BF /* AttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = AE414480637A9BC7CFC2B70C16C12024 /* AttributedString.h */; settings = {ATTRIBUTES = (Project, ); }; }; D277B419655B9919F8FF7DA23CDAA69A /* FBReactNativeSpecJSI.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F8788C15B11DF4D16CE2A85BE243AA0 /* FBReactNativeSpecJSI.h */; settings = {ATTRIBUTES = (Project, ); }; }; D298D5529CA5B29208077A481AE2BF38 /* conversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F46D9F3383D17EBE93722534A1D68D4 /* conversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2AA4B00D9EB36E405C793FA585D476A /* ViewPropsInterpolation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DEAC3AED56C9C3D215091D714CEC25C /* ViewPropsInterpolation.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2D6709D8BE4016F130D13598CECF0D4 /* RCTMultilineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AD43283A6A2C9FC3B3AFE6DCF2E636 /* RCTMultilineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2EED5D51C2C3C5AA6414C428BB9C234 /* ShadowTreeRevision.h in Headers */ = {isa = PBXBuildFile; fileRef = E78F20D79CCC9323B970100544DF75D4 /* ShadowTreeRevision.h */; settings = {ATTRIBUTES = (Project, ); }; }; D307D309F89DA135DDA8A239255D00ED /* StubView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BEF5A191F5C9D7D1C8386FB298882BE /* StubView.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D319199F318F9F518DF028E18D8052F2 /* RCTRootView.m in Sources */ = {isa = PBXBuildFile; fileRef = FDAA60177E608D75C530E2C86C1BD33A /* RCTRootView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D31B9E80DB2BF39407F507F3B5723506 /* RawTextShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C3154BBEBE29BF292E5169F75CBD889 /* RawTextShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D384DF0C480D44CCBCA312A430085AE7 /* Props.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80C73D05140B68E7E4D8EC8138AABF5 /* Props.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D39ABFBBDFD1585768162153F9F8DA53 /* RCTDiffClampAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B93F350B7CEAA9026208326081EA41 /* RCTDiffClampAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; D39F47151D6CAFF00BA7EA53C31DEFA8 /* React-jsinspector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E0FE53778FF8DB18F69972C1000366F /* React-jsinspector-dummy.m */; }; D3A424FD85699ECAA4514C62046BCD9C /* ConnectionDemux.h in Headers */ = {isa = PBXBuildFile; fileRef = 281DE643AC3EC1BC9357383486F2FB11 /* ConnectionDemux.h */; settings = {ATTRIBUTES = (Project, ); }; }; D3EBECC8D67FF3FC5EAA9C674B0E118A /* SimdForEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 12BF91C85904FD8BA917DDBF03ECCC1D /* SimdForEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; D403CB498CF79EC0939F733B153D0057 /* RCTTextView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 394174FFAD60F61AE02F3A5C011D30BC /* RCTTextView.mm */; }; D4176277B387E1C890B5D11845DEB224 /* SourceLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0834C175FB5FEC893A25F29A77A057B6 /* SourceLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; D473DD75F33B177EDD13C68DE02D058B /* id.lproj in Resources */ = {isa = PBXBuildFile; fileRef = DE0FDA05FBBF20ED1DD8039C9EF483D2 /* id.lproj */; }; D47AF34FA46EDE8475273445306B7937 /* Fingerprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 163CDA479246FA5F4CF5C7949B3FC9F7 /* Fingerprint.h */; settings = {ATTRIBUTES = (Project, ); }; }; D48E92175A87C0C0244115F10ACB1E08 /* RCTVirtualTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 447C966873650F5BE0F53C20B5B181AD /* RCTVirtualTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D49827B0FAC4BD22AB3B08E10FC71051 /* FingerprintPolynomial.h in Headers */ = {isa = PBXBuildFile; fileRef = 55BB048CB3ED0500BC5E984EC4283580 /* FingerprintPolynomial.h */; settings = {ATTRIBUTES = (Project, ); }; }; D4A9A5DE800574D5EA3FBAF7A3FCE239 /* PixelGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = EF112ACF0D0F90B1AAF3D112F650FA09 /* PixelGrid.h */; settings = {ATTRIBUTES = (Project, ); }; }; D59713A7BC16D46A1359CFB93E730D3C /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ED0D60F3F216448664954D0D5A35FECE /* ja.lproj */; }; D5A493A2DC6BB01DCF68C20D070211F1 /* HazptrRec.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CDEC81B1AACA4065BD3385AB630454 /* HazptrRec.h */; settings = {ATTRIBUTES = (Project, ); }; }; D5CCF9F221CFF9B657B72954E2ECD096 /* AttributedStringBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 2415A1FAF902321B20BE9690DAF25F46 /* AttributedStringBox.h */; settings = {ATTRIBUTES = (Project, ); }; }; D612BC5C887E6996DDC550FE55D73EEE /* AsyncTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D024556120FC57697C2ECE69C53D36B /* AsyncTrace.h */; settings = {ATTRIBUTES = (Project, ); }; }; D62F1180412478ECE031FBB09BB2415F /* RCTFrameUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF931EFC80EAFDA3EA6E9A6F62665B8 /* RCTFrameUpdate.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D68E9C9482F92F4500306D7CA38AFE5A /* flags.h in Headers */ = {isa = PBXBuildFile; fileRef = 94ED4B520996293EF041391736BBBA24 /* flags.h */; settings = {ATTRIBUTES = (Project, ); }; }; D6914F306266D61018820AF2CBABBA72 /* RCTNativeAnimatedModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = F1455C7DE425F051F50E3E27295C794D /* RCTNativeAnimatedModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; D6F3E2B8FE24B7FB165754CD936DDEC4 /* RCTSwitchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E53A2DCCFA3939F1CADE98C7ADABB2F1 /* RCTSwitchManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D7A16B0C6D721716F7C5A70A6433C529 /* FMResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 6189337A90AFF99D9CD0BDCCA472E2B3 /* FMResultSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; D7A16D49963032254D9E148DAE6AEFC7 /* RCTSurfaceDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E72FB672688243BE5F6E35ABA1E42F /* RCTSurfaceDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; D7C2C28BD650E3478980431139788E33 /* SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A22970BA931D4D5E31AD98D11E9EAC /* SRWebSocket.m */; }; D7C36B197E1986F1A8811387DD9A2200 /* RCTUnimplementedViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 509A9FBAE4B5971C315FA3AB4924204D /* RCTUnimplementedViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D8447913DFCF5B46D25A9E40632A51A0 /* IOVec.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F85C8CC15CDC85E857260E4CDDF9817 /* IOVec.h */; settings = {ATTRIBUTES = (Project, ); }; }; D851A600C947B91F7DB5B09DD6367D2B /* React-RuntimeApple-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DEABC445C02152DF5E8A3B39AF9F9162 /* React-RuntimeApple-dummy.m */; }; D874563FB7B3E2324F5D62A96A1D66FB /* Lock.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E606A9762AB8D4C06B74BC1924936FF /* Lock.h */; settings = {ATTRIBUTES = (Project, ); }; }; D87EFE084AEE4FEB4474C02F2E3AC1DF /* StubView.h in Headers */ = {isa = PBXBuildFile; fileRef = A341E5DC44E63AA9B8DFF0E0E059A5F4 /* StubView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8AAC2DE2E3EA0008B8B5555BF2E3524 /* EventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BB8379D1CD88BE60A5A0D33D8572A2 /* EventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8B93E14456B42603AE3567F8E2A37E0 /* SafeAreaViewState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C25232818C41EA94B5E01D6E8903AC74 /* SafeAreaViewState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; D8C3D24EF338C7C89FD89FB0366AD660 /* RCTDefaultCxxLogFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC64A671E937AD1149E00BF8AAC2F08 /* RCTDefaultCxxLogFunction.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8D7FDEC5BB612E2631EE13379B9CF71 /* RCTDefaultCxxLogFunction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1D4F51217F7A23436A551FB1BF267D5C /* RCTDefaultCxxLogFunction.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D9243AC9718468197B02FE4EAA191680 /* TurboModulePerfLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A858627701B92C8E35A54D44F1CDF1B /* TurboModulePerfLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; D924621A02EA0FCD7E776A06D2AA64C9 /* RCTJSStackFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B71C59B43EE3845C93BBDBA007C75CA /* RCTJSStackFrame.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; D92EE1301D88213094E73A53FB12CC7A /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = A43C1B14F1018F4B603503BF2E6E2524 /* strtod.h */; settings = {ATTRIBUTES = (Project, ); }; }; D93DE7406180B3F14BFB6494C9C55978 /* RCTInterpolationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F78A76F0BB8E6B3D92D46FB8C08FF72B /* RCTInterpolationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9C64AA891BD63910BE6D918867618E2 /* RCTBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9472948FA5D6097F7AAF46BA5247C4C0 /* RCTBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9C6BE55D798E8A52E85D425CD9294FB /* CachedMeasurement.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F08F17DB62670269DC70CC1F4817168 /* CachedMeasurement.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9D6B9A1B8A9324BA41626AE691533BA /* FileUtilDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = FC3E576BEEE24C22BAB754F8BDA7D822 /* FileUtilDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9ED192F400D44DC02D98A20B123F16C /* RCTScrollableProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = CC8769294DD05CF0DEF8259E34DE9AAC /* RCTScrollableProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; DA23FF23D0B832AD6C6CC5A1C07D5A6A /* String-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FAF051F6D95F34219F912CE1C6F2F4 /* String-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; DA550251907D606E20F2DED4C4EE56AC /* Pods-WatermelonTester-WatermelonTesterTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 00F247CF24ECD2EFFF35AC12E91E6FE7 /* Pods-WatermelonTester-WatermelonTesterTests-dummy.m */; }; DA7BD6553D0FB0F62E5C8DCFF0AACDE2 /* AccessibilityPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 92427655A24DF879C52D7AA18EBFF83E /* AccessibilityPrimitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; DA7F88713B1145113DA6A418AA6A57B1 /* React-jserrorhandler-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F3EC6BC861DA61263020A86CB2DDC307 /* React-jserrorhandler-dummy.m */; }; DA8147A7DA1E5F9AB6671763701F2FEF /* LegacyViewManagerInteropComponentDescriptor.mm in Sources */ = {isa = PBXBuildFile; fileRef = CAAD19E5409FDE0BA4AE1A1A0483BA00 /* LegacyViewManagerInteropComponentDescriptor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; DAA86EAE8591A539EC9709B9AC8E4881 /* RCTMountingManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 32A7462E31DA20BFC4BF96677609574A /* RCTMountingManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; DAC9300F3F4F2080C390F9E5913E3586 /* SysFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 60B6FDAEA7F1F74C6155EF59EFCCA58E /* SysFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; DAEBA537EB67618319D0FC4583FF7A6B /* TurboModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9D4809815C39CA6793B26579FDDA54 /* TurboModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; DB1C77BB649348CF505F9311A4D9BB98 /* YogaLayoutableShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3B2DE0E7759775141A6DD8F1ACA6DE /* YogaLayoutableShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB330BA756D9108372BB5C51B9BA73D7 /* RCTCustomPullToRefreshViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5466515A64A57AE3158EEA66741CDABC /* RCTCustomPullToRefreshViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB423C91AD697AC50ED1D8717786DB82 /* MPMCPipelineDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 40B6CCC5214ADD7CDAC59A0304AB0B44 /* MPMCPipelineDetail.h */; settings = {ATTRIBUTES = (Project, ); }; }; DBAB9A747E25B02895BCC957ADD16902 /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 61074D38D23CB60AF7788D75C0DEFE73 /* fr.lproj */; }; DBD56004083F156CFDCC1D9EDCB75C1A /* GMock.h in Headers */ = {isa = PBXBuildFile; fileRef = D83B4FAAFD8B9F4100D6F3F2AAF2598F /* GMock.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC004696A79087E85BD8B4ACCD0AEBCC /* F14Table.h in Headers */ = {isa = PBXBuildFile; fileRef = 59164B030AA6BE9DC3304EDD7E90FEEE /* F14Table.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC0175AB5F97BE5219331D7156CE1659 /* Poly-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F37D13CE5A1DE0E74413865B70883A /* Poly-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC04153187DA66719B11FFBCED9AEA12 /* Cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 374717629E05164C820F2052E54AAA91 /* Cache.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; DC28F68C0796FB7F8337CAFA89BA23CF /* React-utils-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AE729B821BDA784B45AFF8A65039D05F /* React-utils-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC5A073E59515BBFB3FBAA977043E3AF /* React-Codegen-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941C8C17A58C26823E12140D3831D05 /* React-Codegen-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC63013E20DCE2ADE76BE9407831C26C /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7F16F5E30C11527357DD52C8CB2954 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; DC6986A6AC95089763A68D148457F484 /* RCTBridgeModuleDecorator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DEEED6BBD30D6FA84E9F8A0F6D3BFB9 /* RCTBridgeModuleDecorator.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; DC9E608807384B1F9324A5A88FF2AF45 /* RCTSurfaceView.mm in Sources */ = {isa = PBXBuildFile; fileRef = CCF757AC8F0183D61E1DA8706776938C /* RCTSurfaceView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; DCDB89602CC48D42D8A5F52640A92C54 /* RCTProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABE2E714C1175CCFDB7C0F72CE4B611 /* RCTProfile.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; DCFBA2EB42ADCB16CD0529E175BC6AA4 /* RCTEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FA0467104A3E0506B07D0F4D83C94A /* RCTEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; DD10FCD5C9B98144C6806F70FC9B7C6A /* UIManagerAnimationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 46F5E5B9B1380E064D67E9508C78BACF /* UIManagerAnimationDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; DD34249033E690DE83215ADFB07FC012 /* Demangle.h in Headers */ = {isa = PBXBuildFile; fileRef = 95F4490C7C830CE7EDFD1E7F79557E18 /* Demangle.h */; settings = {ATTRIBUTES = (Project, ); }; }; DD368E98EC732E72C2F1A4E3DAD73864 /* ShadowNodeFamily.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2782757DC9A193842FF73CDFEC4F5F65 /* ShadowNodeFamily.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; DDB0B0190141D436ABDA58404D1499A8 /* Try.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CAC01452155CC5956412107FDEDDAD /* Try.h */; settings = {ATTRIBUTES = (Project, ); }; }; DDB67DC583A9C49F0D3A01592065F391 /* ReactNativeFeatureFlagsProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E7A75689694710ACECFF3C8C79D55E6D /* ReactNativeFeatureFlagsProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; DDEB4462BF2B783F42E8EB99035624D7 /* RCTColorAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 991E213D38BB44AE5C3367DDE4A4D4D8 /* RCTColorAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; DDEB7BAACD5EDCC03E4CC411477A9161 /* EventEmitters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B18233FA84BEC01AFCB96FC16BD3B983 /* EventEmitters.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; DDED52C98E3DB3DE7B916FFA6E38389E /* RCTFabricComponentsPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CEFC84AD6E69D2E073A1A739700477 /* RCTFabricComponentsPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE170A39631C63A89F2286B7AFBF7E16 /* RCTDevLoadingView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F277FEF63DB910E42C66936C8592693A /* RCTDevLoadingView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; DE170A419A4F9680E64D24A8098D12E8 /* EvictingCacheMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 119AE002F412B1467B684F7738048356 /* EvictingCacheMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE3E9A5EC28083C37C4F79EB720E4C84 /* TimerManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C178BA891B154BE1B7A5B0CF16AFD27D /* TimerManager.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; DE4BD4F32114191405334654FC2E18AF /* RCTSafeAreaViewLocalData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B65B6162E9749D1E3F3D1232D886392 /* RCTSafeAreaViewLocalData.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; DE66748432F9109389013EC8F90A07FE /* ImageRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D006447B5017B8009E226E6E0AACE40 /* ImageRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE6D3EF512445AED97626F2FD2C6E144 /* RCTInteropTurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = DBF242B856D15CC59A314DC9A8B2701B /* RCTInteropTurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE92F90C06BC1B8BF2FC386891260157 /* Convert.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2EDFEA3A7670F7D6AB0267AFA7E2F1 /* Convert.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE955502F25186EF5AD32CC67482739B /* AbsoluteLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BB96EF13B6D928DBB3A8D90C1ADF57D5 /* AbsoluteLayout.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; DECBCF943B2007810250A795467B4DB6 /* FlexLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D3BD65E387AF4A8FE10216CABF03885 /* FlexLine.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; DEE25205878E37681E37F7C8F3B2929F /* ShadowNodeFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1598F75BEAFDD5C3F7AD8DCDD6D5D2C4 /* ShadowNodeFragment.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF036DC6537C4E015C97F52AFCFD32FC /* RCTActivityIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FB7F5153FEFAD2FCC98DA600D4A18B3 /* RCTActivityIndicatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF410589C0140F902BB7B8E4C1C38CA0 /* AtomicUnorderedMapUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 13DDAD72F9C7DC4D814F4D340784ECEB /* AtomicUnorderedMapUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF52659D4B342F45BCDFC299BB9F3176 /* RCTTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = EC17C0D5E26D47755381DCEAE6861774 /* RCTTouchEvent.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; DF58E8CF0A1D74B0B1D6582660B33A6B /* RCTAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B488F05847F4968004034A803BA1EE /* RCTAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF670DA3ED5334665E6359FE60D70590 /* Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 3859A11BD5B175A2E7059AE9B7A747F3 /* Merge.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF6D6AE3A41D68BBB6934A6215CF0543 /* RCTHermesInstance.mm in Sources */ = {isa = PBXBuildFile; fileRef = 32854BF47BB04F74CF858BD8BDE66C35 /* RCTHermesInstance.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; DF91D11B9CE5FCD990B5344711241E38 /* Database-jsi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C339EF963613DD1C7090A3FB6A1FE530 /* Database-jsi.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; DFE0FDDAB89D558D7E5C4FE84CE8A831 /* RCTFontUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0B38F938F0F9868A60309B113ECB3CAA /* RCTFontUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; DFF18CB9F6E9C5DBC1794BC83CEE2B40 /* LeakChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6E474235C8459CDC4689EE8FA90735 /* LeakChecker.h */; settings = {ATTRIBUTES = (Project, ); }; }; E01BFDB73F70CBCB2CFC52444346AF77 /* format-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 808C3DF73EDCFD47A21FDB81992E3ADB /* format-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; E03DA0EF491E76A7B522F8AA29B6F505 /* RCTSurfaceView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE3CC89AB9CCAD959EA3B472BA6F99A /* RCTSurfaceView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0616E92063B1D7177AD59E30BF80474 /* RCTAccessibilityManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB7DBF3AC428AEC78260C9DC4CA49106 /* RCTAccessibilityManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; E0B886B9E9EDFC2C6DC982BD03453490 /* RCTInputAccessoryViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA23E868E68363495BB8DE9AA165F77 /* RCTInputAccessoryViewManager.mm */; }; E0E7AA9F8861860CFB84E20C9489E5DB /* simdjson-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D1B033752AE5FACB195379C2792DA4 /* simdjson-dummy.m */; }; E10A1CA856FB54018BD7A8F30AE09540 /* RCTInputAccessoryViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 11F7F6FA2445CB7E109866B0BE0CC3E6 /* RCTInputAccessoryViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; E11ADB7262AFE9B01BE2A4D975123EAA /* RelaxedAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 6551222A25B1F6FAF1575662C8BDA2AB /* RelaxedAtomic.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1398CF744BD639B09992EA62651FA74 /* PicoSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BBB556BC44275845C988BDF27E10880 /* PicoSpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1549E411581F07CCF13356092963823 /* Math.h in Headers */ = {isa = PBXBuildFile; fileRef = 72188071CCFD3B99269572936DAC43DD /* Math.h */; settings = {ATTRIBUTES = (Project, ); }; }; E15E8C2E4FA6E09EBE76FB1CFD27499C /* React-Fabric-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FC0DBFC356D08CBF5C195717E58618A /* React-Fabric-dummy.m */; }; E187EF2A89D79C4FB2ADBF3CC9206292 /* Executor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5433FC0C0EE55FB7FA9D9BCA99A39650 /* Executor.h */; settings = {ATTRIBUTES = (Project, ); }; }; E18F8DA28CD01BA27291E774755C9EC6 /* Registration.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CA5F6EB56C2B8E096CBC6A7B9532E76 /* Registration.h */; settings = {ATTRIBUTES = (Project, ); }; }; E19474B280DFA77E434C1C2048E81937 /* RAMBundleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A7C0933E0C4119F5E32E5A260746A2F /* RAMBundleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; E19D4347CEDC9DE18C2B12A42F2ED1EA /* SafeAreaViewState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6344807426DBEA83083B947671B91C7D /* SafeAreaViewState.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1AD7A00786590B1156FD21A44BB9D94 /* EventEmitters.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA7D4069EAB7AD175067D9475F75335 /* EventEmitters.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1B6548D2CF64C426F0BF369865FBD90 /* RCTUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 203BEC3028800526EBC07D8825427B33 /* RCTUIManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; E1DB2693E8C7C7187DA8BA2D5C7B2F11 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = FA397527B29CC2470176B423C005BEE9 /* ru.lproj */; }; E200A4AE1E40E3119E83786F9B9EE687 /* RCTBaseTextInputShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 33623931DB49F9BE0BB2BEAD565E5AC5 /* RCTBaseTextInputShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E22FDC89AEB18B28B58FE9516DCDEA07 /* AtFork.h in Headers */ = {isa = PBXBuildFile; fileRef = 84861068E0BD421B437C1FB5C00F434D /* AtFork.h */; settings = {ATTRIBUTES = (Project, ); }; }; E28AB3E3CA812DEDE441BBD946498138 /* FBVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D66CDE2F1E5ADE815D245C01F720E05 /* FBVector.h */; settings = {ATTRIBUTES = (Project, ); }; }; E298A4C07A8B16A83998C5FFCCD88905 /* PointerEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4997893AEC6DB585E2DB2AC06E6557FD /* PointerEvent.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; E2B0F3FEA364E0821B7A190C31E16462 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = 25A59FDE9D2F710EAEE9BF60F424C713 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; E2EEB36768E7218D47E9C3CCDC290138 /* json_pointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5435E25ABF1C803D1D8B6ADE22E2664D /* json_pointer.h */; settings = {ATTRIBUTES = (Project, ); }; }; E30137F6C7AA4B42A4E8B0069F36DD63 /* RCTReactTaggedView.mm in Sources */ = {isa = PBXBuildFile; fileRef = C1C38809AFDAD38F285E4E8EF2CAC4E6 /* RCTReactTaggedView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E306E120D9274E1261E24B71BDEC3F9D /* RCTRootShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40070AAA8193578B4B19218FCBD1F506 /* RCTRootShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E31A87C273F43A0F04ED6AE8C2C562ED /* Sqlite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBC2C48E868D4877BF151ED8DFB3604A /* Sqlite.cpp */; settings = {COMPILER_FLAGS = "-Os"; }; }; E31E02EC62FF9E9E089267079E217636 /* Latch.h in Headers */ = {isa = PBXBuildFile; fileRef = 256EFD340D35D7E450AACBE294E874A8 /* Latch.h */; settings = {ATTRIBUTES = (Project, ); }; }; E339752BDF80501597F6B9FA4BDF020B /* format.cc in Sources */ = {isa = PBXBuildFile; fileRef = 52FAACC98D9676B0C965D8484DF9C51E /* format.cc */; }; E344034251B2B0C79981FBE2659E2ADC /* React-RCTVibration-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A870B9A0F18A8C3F9075851CE67E22B /* React-RCTVibration-dummy.m */; }; E36699C263918D6CD3CC8D53D29B1CC0 /* TextInputProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C461F175EB336FD8750A4B7A86919F1 /* TextInputProps.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; E38C5A95C3B86DE8DF5D85ECE0855055 /* RCTScheduler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 619ABD655227A08759F91622DF2A1E18 /* RCTScheduler.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E3A121600E7E1AF0BAD4F458FB4F3BA8 /* RCTNativeAnimatedTurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = D4758B7FCDEC2C0806CEE3D106040093 /* RCTNativeAnimatedTurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3A1C4B353CA38F45A94333BF57BC185 /* MicroLock.h in Headers */ = {isa = PBXBuildFile; fileRef = B02E6E730A273BCBAAB434BD6D2576E3 /* MicroLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3BF65D170B30D844332C8C4223E8E85 /* InspectorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 434BDC67E1145AE964DB9AA3C0D4F3AE /* InspectorUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3D5DDDC6A93D60C763C6DADA4FD722B /* RCTModalHostViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4738F10785BD68311DE222F91337CB33 /* RCTModalHostViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; E47925115CBFC067E6C815ADAE6A56DB /* RCTBaseTextViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = E13EF6E51F9F10FBD304A4FADDBB25A8 /* RCTBaseTextViewManager.mm */; }; E4D2C49797D59B2052F4B053076FE96E /* Likely.h in Headers */ = {isa = PBXBuildFile; fileRef = CBED11019ED3BE2CD4C26A2FD21B24C1 /* Likely.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4DBCAA513C14C66C493FA72587F87BC /* RCTTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEA1EA0BA3625CC695A4E11E09FA24B /* RCTTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4DED56A63CBA885B68CE8ACB532234C /* FormatTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 375B4BBE3235F1250E48C6F479A52A01 /* FormatTraits.h */; settings = {ATTRIBUTES = (Project, ); }; }; E5073F2F6330149725DFF68FF2754A20 /* Scheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = BD52E6EAC24FFDEAD05FA9425D5C5A03 /* Scheduler.h */; settings = {ATTRIBUTES = (Project, ); }; }; E51D79B40AF3291F91E6759876CA3EFB /* RCTTransformAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BD826EA734516D956DB671826DED506 /* RCTTransformAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; E54B039781E19ECACF0DD70219DBD68A /* RCTConvert+CoreLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7BCA4D8FBC217D22B4EEB15EB03957 /* RCTConvert+CoreLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; E59E696DBBF7EBAE641CF83E785ACDA3 /* ImageState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 285EDB99AD277EB30467D34D174D268F /* ImageState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; E5BA12AB6988A4F766D4BE419C785092 /* PlatformColorParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0622E264BBCF6697F9CA2A6775362A8F /* PlatformColorParser.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E5CA44114FBA3754AF18B7499FF88E10 /* RCTTurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 631FE1EE541BDAE0AFB75102923ACDCC /* RCTTurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; E5E55BF988954948EFE319F6580A5DD2 /* RCTPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = C1A69366D6E38FE28ED9651968AA7CF6 /* RCTPrimitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; E5E6E25B9472F6F0AF1255623F14E6A3 /* RCTColorAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5825A770C846E9DE0D37D57F8AE02E36 /* RCTColorAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; E6018F88579345128C47ABB20076E368 /* BaseTouch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCA65CA4802405E6B52F20951F6A6E74 /* BaseTouch.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; E60661F419313219CAB90AAA4BC569CF /* Asm.h in Headers */ = {isa = PBXBuildFile; fileRef = C5691B7E1407E2A5D9208B3CCFBC6BDF /* Asm.h */; settings = {ATTRIBUTES = (Project, ); }; }; E62F21693DF34EBFBE00D49D4DF19B1C /* InputAccessoryComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 12C530B1088E418C923CD9F26CBCAB6F /* InputAccessoryComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; E651055717D4190079F013D6D6062009 /* JSIExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AFDFA1B816E14B8A48D630F83DC6574 /* JSIExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; E66AD268C60422D082BEE54709653AA9 /* json.h in Headers */ = {isa = PBXBuildFile; fileRef = C047105E3027DC4381475187A7547D3D /* json.h */; settings = {ATTRIBUTES = (Project, ); }; }; E66C0C4875358F85C28B08F431A9A93B /* raw_logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = EF33D80102A84702AA2E2212D875E506 /* raw_logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; E6B3C3E594F4BF128654E22C4B19807C /* RCTComponentViewRegistry.mm in Sources */ = {isa = PBXBuildFile; fileRef = 723B1846FB58ABF6C06939E1199945A2 /* RCTComponentViewRegistry.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E6BFEF471AFCFF63E7C2D7BA1F89621E /* RCTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = BC3E9A24F4A8A5F217C0B3D7CA9EBAEB /* RCTEventEmitter.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; E6C45A4D06FD310A02A987816341A5F8 /* chrono.h in Headers */ = {isa = PBXBuildFile; fileRef = C00CAED0C07FE50074D84727D68C0B0A /* chrono.h */; settings = {ATTRIBUTES = (Project, ); }; }; E6EB7B76986AE0D3873CA9441B399E76 /* RCTActivityIndicatorViewComponentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7B1A1BCA9AF04E480CF3A0F15DC4277A /* RCTActivityIndicatorViewComponentView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E71D9D6FB89A2C9AE52FE7C5A3C475C5 /* double-conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1E7B7C0191645527408193552D9E40CF /* double-conversion.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; E743F863A0F857A5DA6A7F1E5D813BCC /* LegacyUIManagerConstantsProviderBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 906C0BC7CCCBAF7E35B934CFD17FC44F /* LegacyUIManagerConstantsProviderBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E7AB4FF7D66E7FFC299A8E48497DE691 /* SpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 3605A12CF33B3DFBE0B5DD2DE36994C3 /* SpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; E80A175FF7F506B78BD9376B8D68EB2F /* RCTWebSocketExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EC34A00D8B5E0E79B1DFEF7D2D5651B /* RCTWebSocketExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; E8143FF13D3DFB1BFDFD7F666A80CBBB /* LegacyViewManagerInteropViewEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDEC6CF7899D39C510AF9B96223825C0 /* LegacyViewManagerInteropViewEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; E820B7A84455768483923BE4CB7E895C /* YGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98C9E5135E046EC50D915DC1941F6D87 /* YGNode.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; E8246C3EF8CEB14A7575546B4C5CECD7 /* ParkingLot.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D1AF6F139CF74E2FE8BDA319FFEE74E /* ParkingLot.h */; settings = {ATTRIBUTES = (Project, ); }; }; E838D80FCB87FDDD82E7D2764D8C2E8A /* RCTInputAccessoryView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1DC27EF5E8E8BA5F9132B0790BA1C022 /* RCTInputAccessoryView.mm */; }; E895EC817D4A74A7BB7F47CBAEEF4D70 /* RCTLegacyViewManagerInteropCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 32DC15B6A3F5954F7FA2FF42937538A5 /* RCTLegacyViewManagerInteropCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; E8C5BA1F6806B8ADC9B77E0D87BE6426 /* DiscriminatedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 584180DC3B2C183B2687C5F1857403FF /* DiscriminatedPtr.h */; settings = {ATTRIBUTES = (Project, ); }; }; E8F692582B234462685FB7967E14E8F9 /* ConnectionDemux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A11628FF9D522105C68BD01BB4D05697 /* ConnectionDemux.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E8FD4F2B225C52C7C56487D34692AEB8 /* SessionState.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FDC94B0FAFD47D454687DEABE33319 /* SessionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; E936778E2B61A9184F53E9FC6CF0D106 /* Scheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4F24837075E70019E647A6DFDD4EB4B /* Scheduler.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; E94921804AC15DB216F286A5109E560A /* Conv.h in Headers */ = {isa = PBXBuildFile; fileRef = 2837BF8ABDA1EC92282A5DF6381E0A27 /* Conv.h */; settings = {ATTRIBUTES = (Project, ); }; }; E964DAEBFF053EC3DE9B68C14E78DEA7 /* RCTViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A294F9716939BAB7421C72EE8DE2D3C2 /* RCTViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; E99B6103EBDB6840C784DAD2CED495E7 /* bignum-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = B1492BA96B69489FCA50F4BBFD32CDD2 /* bignum-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; E9A31945402EA221C68AC46BD4839F8F /* RCTImageLoaderLoggable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0467EB815B94E64E6883C328F1F0F5BA /* RCTImageLoaderLoggable.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9BD0DCBBEC08FEA24C2D8CEBC731832 /* RCTInputAccessoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B510656AC02DF313FD0F8F0C11489FC /* RCTInputAccessoryView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9BE847CB39266616A343D766185AE45 /* RWSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E1E7FDCE905C0071E5B85EDEE735B7 /* RWSpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9D2FF0ECEDFA4C76E42992CE55EAFDF /* RCTInputAccessoryViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 11F7F6FA2445CB7E109866B0BE0CC3E6 /* RCTInputAccessoryViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9D7B312A5C84965CD84BD92FB62B13C /* RCTImagePrimitivesConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0E7A0629DD1A33991E0281C1D7EA6F /* RCTImagePrimitivesConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9E9BC877650CF84F4905AEA78C32B8A /* RCTBackedTextInputDelegateAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6316526F1CBE0396E9767EDFD35C9870 /* RCTBackedTextInputDelegateAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; EA2E47AC9688F7DBDE75EC611BC68334 /* RCTCxxBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = DC46EBB3ED4F2E3ADA6C2752DF776F59 /* RCTCxxBridge.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; EA48224CDE82427964F18FAEB2358A26 /* PointerHoverTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A623EC312D3BCD944313E099426740F /* PointerHoverTracker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; EA50617F174E74906FE903B0D0FA3DFD /* RawEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B389CA633B6575A2FA37718B19A4756 /* RawEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; EA64CBFA402C1BC6683F8FD457F438B4 /* RCTTextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6501460FCAA027C674AB185B605DE1E /* RCTTextAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; EA929F09DE084CC45B3450DC9D78B195 /* SRHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B292553D4F61C21C058393BBC5C292F /* SRHash.m */; }; EAA499218101102AB5F773BF2B50EF87 /* React-cxxreact-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 003FB8B8AF1CBB8E2E7A70E7564183A5 /* React-cxxreact-dummy.m */; }; EABC36AD3C5E7A062DD1E648173390BD /* RCTMountingTransactionObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = F1FA54C72A9856CD3D0A6B6E24B06E7E /* RCTMountingTransactionObserving.h */; settings = {ATTRIBUTES = (Project, ); }; }; EACBE1A3AD0FFB544227FAA98CB212AA /* RCTHTTPRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 23DDF8148799041A2BF94450407CEBD2 /* RCTHTTPRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; EB135E9D630C14745D6176C4C75F6E68 /* LeakChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 550DDF0017EBD296665C75C459009C19 /* LeakChecker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; EB3E3453EFB9D515C27B942DBC8CA533 /* RCTScrollViewComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 671925498D3BA63FE33CF36268979415 /* RCTScrollViewComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; EB47B8FFFB73B9925CF7F1B1E30AC084 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = A0E2B3DDC742F701942096E520561398 /* RCTShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; EB8D31492F4B85D40BA5EA1861C0742B /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41CF2183FB0C77CBF6E075298A85E705 /* String.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; EBA1024BBBA34339B28107E04BE06DDD /* RCTWebSocketModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 78BE41CF03440AB09080B75960AF8455 /* RCTWebSocketModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; EBFA2EC449CC7806AD2DFD54A9840763 /* RootShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 489E69C87D3FBB7418B3000B710B6899 /* RootShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBFBA6DE22BAD2C406C2392366EC51BB /* RCTValueAnimatedNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 62B08039C2AE783CAF032BCB76890355 /* RCTValueAnimatedNode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; EC2759F6A364F02C68F0BD622AFA6DC5 /* primitives.h in Headers */ = {isa = PBXBuildFile; fileRef = D469751A218330A8AA5F4F551ED6F9A5 /* primitives.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC366E71583207A1FF0C46AE4BB7C276 /* MemoryResource.h in Headers */ = {isa = PBXBuildFile; fileRef = F89AC6E92A39CCDDE8DAD6BE98D3C4D1 /* MemoryResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC459A986FF283D828DC0709F40EA216 /* Cast.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB23B7557FA39253FE65A599E922ED6 /* Cast.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC6ACE9F6F6F8AF98C952D03A7071FAA /* HostPlatformColor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7237AA79C8E933F1CAB9DE0BDD0B0A5 /* HostPlatformColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC8695E06B4FF360C0D7764B5419727F /* RCTPlatformColorUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C46ED3EA004CAAFEB6FEF89B7AF2F0C /* RCTPlatformColorUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; EC92E4BFA408ADBD17CCB1BB91FAD18D /* RCTMultipartDataTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 416D956A2968ACC6583A761D4976F6FF /* RCTMultipartDataTask.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; EC997A618F6AB5D3076F860176E66314 /* Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 774B7D8E1CE74C04CEDEC68A34DAC344 /* Array.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC9F0699E5A4CF55F21FAFE6057B6640 /* Dimension.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F64B0C65747B5007B92D204D69F6EFC /* Dimension.h */; settings = {ATTRIBUTES = (Project, ); }; }; ECAEA2A0100A0AE72A3E437FD005881E /* RCTSafeAreaViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 285863D5864C49AC3FDF1567E1986DDB /* RCTSafeAreaViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; ED0D26A030DA133A07D84696D9FD9623 /* RCTSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 513728BBF69F10E478D203C24AE89494 /* RCTSpringAnimation.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; ED0E6B99D524187706AC30E2B53F55D4 /* RCTRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = E54B7595EDCA1E1302CD4C135A4612AA /* RCTRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; ED158AE6B16238DA0174AC1F4CC24510 /* RCTCallableJSModules.m in Sources */ = {isa = PBXBuildFile; fileRef = F275D02F7C84889FF25195DE592C2875 /* RCTCallableJSModules.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; ED1E9F472F169CCBA252A035D6B4AAB5 /* RCTProfileTrampoline-i386.S in Sources */ = {isa = PBXBuildFile; fileRef = 45BE03CDBA0ACF037784CA42392A374F /* RCTProfileTrampoline-i386.S */; }; ED39B921713470029BD17D4E33380B52 /* Malloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E956492B6B4F762B69C00A6496D5AD0 /* Malloc.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; ED40B12F85AFF22FE31122D1ED1D2FC6 /* React-RCTText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A063348780E28C80CDFC691EE7F2C78D /* React-RCTText-dummy.m */; }; ED92DB0641F90C061852E17704C6A69B /* RCTTextTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 169BFFC72EEA61E28D560B57CD831CD0 /* RCTTextTransform.h */; settings = {ATTRIBUTES = (Project, ); }; }; ED9BAECED6D57D15B8680D8A9F1FC645 /* Differentiator.h in Headers */ = {isa = PBXBuildFile; fileRef = 881BC753A7C248050EC65DCFDF4A1F50 /* Differentiator.h */; settings = {ATTRIBUTES = (Project, ); }; }; EDE01A5FA2DF59BC41E22117D6B82708 /* ShadowView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7B7E0E20673111D75C477804554AF /* ShadowView.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; EDFC9B54A30EA3B68823A2511866FD00 /* RuntimeScheduler_Legacy.h in Headers */ = {isa = PBXBuildFile; fileRef = BF9077AF110CAC64D90AC1EDA3F0B610 /* RuntimeScheduler_Legacy.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE0C008A89AB0B833235FE60CBDFD831 /* Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D67413975CF3DA436729109845A30A9F /* Transform.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; EE442608008693F4732B90E3E929F104 /* RCTImageComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 475E63C49DABE072747B2ACDE9DE0BA5 /* RCTImageComponentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE5FC9431E2D8B9E8E29AE277727E9FA /* Constexpr.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CAB10F1ADF33F5BF62A774463140259 /* Constexpr.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE7A0A4956CB8103954A69F4355C44A9 /* RCTAppearance.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4DA4CDB70B04DEA86A7EA3B9F6B6C060 /* RCTAppearance.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; EE907C353DD8D1953A2994C57CBFE26C /* RCTShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 070773F376061291576F78B4FAA81792 /* RCTShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE9B9C393116AD263A9A4FAF44923FCC /* RCTCxxMethod.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37689F6A0CBD1039206E7D3A8E8E6C68 /* RCTCxxMethod.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; EE9C939880E3A056DAC25A4A496399E4 /* InstanceTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAC8D0807F88C47E4DFD9F7C7859B82 /* InstanceTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; EEC7964460506D85D5B80B2CDEF357FD /* RCTView.h in Headers */ = {isa = PBXBuildFile; fileRef = 191255608BFC29BB27805F33B002132B /* RCTView.h */; settings = {ATTRIBUTES = (Project, ); }; }; EEDE418A860EF1BD9051813C5FAF85F5 /* RCTInvalidating.h in Headers */ = {isa = PBXBuildFile; fileRef = BD57ADA2122AD9C7A9EA86F634218B28 /* RCTInvalidating.h */; settings = {ATTRIBUTES = (Project, ); }; }; EF146B59AE948C6C6364E8EA84B78330 /* Shell.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C54A77AACDC4EFCA476CD638F5287E1 /* Shell.h */; settings = {ATTRIBUTES = (Project, ); }; }; EF4DDB2FEB551BD01E6F56CEB268451E /* to_underlying.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5CA98B839AFCD15AE40CBB92C32436 /* to_underlying.h */; settings = {ATTRIBUTES = (Project, ); }; }; EF4FE23B38609E50DF2186EAA3475E5A /* ScrollViewState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11B65C1CE4591582924CEE6C134FDC1D /* ScrollViewState.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; EFC8646A57CDAB8216B48B40855D4C6F /* UncaughtExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC9D5FE940DF4FC829E173DF00483AB /* UncaughtExceptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; EFDA386A564A1209D1F07193AE52EE6A /* UnbatchedEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A50DCAB2950F79811B921C5568362684 /* UnbatchedEventQueue.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; EFF65D240F771DB091184AAF4242F8ED /* RCTAlertController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B0D676D74E69A0350EF5A4FE2794335 /* RCTAlertController.h */; settings = {ATTRIBUTES = (Project, ); }; }; F03496F8445E3AACE9451043A837CADE /* DynamicPropsUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44C17CFBA5F0AAEEAA6587B65BBD9539 /* DynamicPropsUtilities.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F0380AC81B8D35CAB3F13DB5217E64AD /* RCTManagedPointer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 032ED6B89EEB973216298316E5766563 /* RCTManagedPointer.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F05DECC41DE2DA7BAE020C3C695C3179 /* RCTSurfacePresenter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 456E948706116C0DD64555FF6BF85B08 /* RCTSurfacePresenter.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F071C60F210B522606D5581D12975A4B /* RCTCxxInspectorPackagerConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D5BA68A42EABFFF8C42BAFF6B32E74 /* RCTCxxInspectorPackagerConnectionDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; F08150A3F6B8849BBBF47FFFE171DD70 /* Sse.h in Headers */ = {isa = PBXBuildFile; fileRef = D33BF9E42E6E5CEF3647C99A049FDCA1 /* Sse.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0ADB8F0BFF669D9F7C16579DA584E6E /* TextProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D75BA444F9A4BBB02531A804E2707A /* TextProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0BAC6D2EB66EF5AF8CB77C031595704 /* pt-PT.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 65814B713B9CD521A09E7AF980ECF508 /* pt-PT.lproj */; }; F0D13FA0AEDD0027AD18A56E95626A3A /* RCTFabricModalHostViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 34A2168F62C5C8BB1DEEA7D485022A12 /* RCTFabricModalHostViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0D80CAC8195D04EC5ACCB34AFA9E62C /* RCTRawTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A90696C4EB8690ED661E5470ECC1C5 /* RCTRawTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0EA77CE762E75EE68A7E59C4BC05275 /* ImageState.h in Headers */ = {isa = PBXBuildFile; fileRef = A602AFB5786A8427B22008771FA2A005 /* ImageState.h */; settings = {ATTRIBUTES = (Project, ); }; }; F102B4B1F081DCBE8CC11C5CCA367B77 /* RCTJSThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4CB2CD0399561C3717DBAB197899E7 /* RCTJSThread.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F124B4C3977784DC8F6C302D4772EF51 /* TextInputEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = B00F5D1C6554CAE9A8E6D6AE4ECFE335 /* TextInputEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; F130698EEF950DE0175BC6B9190FF988 /* CxxTurboModuleUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 13EBFD759F626BF0B8380604322D2E84 /* CxxTurboModuleUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; F133C4AD67CB54836E98512AEA7655A8 /* RCTUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DDE9E8B67A4B7CFB8776B906B7C48F53 /* RCTUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; F140F9B4A685AE28A89CA9D9752DA6F4 /* React-runtimescheduler-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 90E8031BF4BBAA174907FCBE801328F4 /* React-runtimescheduler-dummy.m */; }; F1E2974DDB47A364980F1BE4690F2775 /* RCTBackedTextInputDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 415370226876D731C7B97EFB54012940 /* RCTBackedTextInputDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1F4420804BCE4EC9ECF3A3B61CB6FB4 /* RCTThirdPartyFabricComponentsProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC15E29682C912628AE02FBF18DB8D6 /* RCTThirdPartyFabricComponentsProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; F239D21943CA530CFE4BFA2B5453635C /* RCTImageLoaderWithAttributionProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F4AFE806278086D88DF7F801882C7B /* RCTImageLoaderWithAttributionProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; F242AC86651355EE9C81409CB11CF29E /* SurfaceRegistryBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E71733432C7AC618E5FB1B2C20C71F3 /* SurfaceRegistryBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; F248056FE6F3501E0F531C786FD64037 /* RCTBaseTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FD3BEF6FF2E1CB963FD11F173D53D /* RCTBaseTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; F24F01675337F85C3D9AF5949695F0AC /* InstanceHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DD6B4C58B299EAE1A3E500A3EDE0002 /* InstanceHandle.h */; settings = {ATTRIBUTES = (Project, ); }; }; F250802327640CC520B809636DE1F35E /* RecoverableError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2552D17D22931F4E3F05CF400B52A72D /* RecoverableError.h */; settings = {ATTRIBUTES = (Project, ); }; }; F25611B54DD87B0B21C8E273CC2BDA9A /* SRSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F3CE6C5B501D1E1D2852C705DEDDBC7 /* SRSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; F25917F0AB2EE892D61580D25F0F5090 /* EventPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D3D4E731B1EF9C93FC2A49ABDAD388 /* EventPayload.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2708B41187A44B25530C27BCB5DAE44 /* RawPropsKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA93F3F56F84CCD73CC13AB0A744B8A /* RawPropsKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2743CD8B2B3A444BB0D76A7C0FC860C /* propsConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 713D582F6B367593E27B9841A06592D1 /* propsConversions.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2B68B0957E8649F575BCACD150607B8 /* RCTTextInputUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0838EA9EBC4E14FB79309CD7604BB3EE /* RCTTextInputUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2CF697CCA0405E54F78738FCE93A2F9 /* AsynchronousEventBeat.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C9C239F8FE3A38880888D537B1808F /* AsynchronousEventBeat.h */; settings = {ATTRIBUTES = (Project, ); }; }; F3175308C1003660267E09A833D010FB /* TouchEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98BB183E94BA72BD56983DB14089B952 /* TouchEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; F369A2BE769607CE5EBCEEAF694E2DCC /* RCTCxxModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3E8E0103E022F0A7BE670C99DDEC11FE /* RCTCxxModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F39A7B4D3EA94DBC9F0D8A5266ED5CEA /* JsErrorHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7962560BAE3A465763EDEF2274FEB730 /* JsErrorHandler.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F3EE1091BDCEE12DBFD1B540E651C997 /* RCTRootShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8817E84E8D2A30EF3D7C5A9EFE82A593 /* RCTRootShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F45F8C649B66BE9FEBADCE67FEF12833 /* SysMembarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = DF804855D1456E2DC29B632585EFE659 /* SysMembarrier.h */; settings = {ATTRIBUTES = (Project, ); }; }; F4CA5518B31E3A44A9E41DC637347B7D /* RootComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 19CE4DC4612BEAACFA7B4D6EA7464CC4 /* RootComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; F4D5FD12FAB7BDC8710108C11EE0B292 /* BatchedEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BBF469B26873251B537670801999C9B /* BatchedEventQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; F5005D6D96BF20979717A1CF0017BC64 /* ModalHostViewState.h in Headers */ = {isa = PBXBuildFile; fileRef = 26799F85A2F48699DF73E4A5B1EE067A /* ModalHostViewState.h */; settings = {ATTRIBUTES = (Project, ); }; }; F52BD1C855995DB98A32185DB7BE9145 /* ImageResponseObserverCoordinator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4929D6CBAA4CA6E284FE157B1BD57DA0 /* ImageResponseObserverCoordinator.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; F54989E7C3ECBAA533AB0403B431A6DD /* YogaLayoutableShadowNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652305363535478E0661CB82413687EB /* YogaLayoutableShadowNode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; F54F56CC1E8D4C92243DDFCC50ADF87B /* SplitStringSimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C106E727DA66F2360E99B166ED1F9FBC /* SplitStringSimd.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; F599678CBCE5FA3A056E96545DB7916D /* rounding.h in Headers */ = {isa = PBXBuildFile; fileRef = 22B331FFC962649EE96FA4C6FF47CC23 /* rounding.h */; settings = {ATTRIBUTES = (Project, ); }; }; F62F7C9B6B3D4C75CA27889AF8F5D099 /* NetworkSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = BE5A44A54B39A676EB8ECEF3D4CF8E3D /* NetworkSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; F6510C9AC9E136A7463F72A71254AD5E /* UIManagerBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 79BC7FAFCA2807334B0B7E151993C6FC /* UIManagerBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; F65B7A2D7B9A82CCB314BB9D9A79B142 /* RCTNativeModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = AAD779B1757E51874AD3E315AE0911BF /* RCTNativeModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F674F6349A05690574BC66CFB35B60D6 /* Cache.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FC6C39FE3AE33F288AB26DDA6BD6C4 /* Cache.h */; settings = {ATTRIBUTES = (Project, ); }; }; F689FBD38D86423A5C0CA8860800DB03 /* CacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47ECF5C97B3CE613ADC79EB219369BD2 /* CacheLocality.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; F6A7E8738C0E504937CBF3B8B193D026 /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A3A1C115325E8DCA58106218ADDBA397 /* nl.lproj */; }; F736A3086A24F89EC27986F4F5DFE62D /* JSINativeModules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F89962533E4FDDA2F999DA26DF69D135 /* JSINativeModules.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F76E0AB3B56CF65826F916918C8E3B05 /* demangle.cc in Sources */ = {isa = PBXBuildFile; fileRef = BCA4B995FCA633E532EC78345A862CC7 /* demangle.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; F7C692B78A07D122735D336A834ED83B /* SlowFingerprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 985183EC5FB028AC6A6FCC26CC91696A /* SlowFingerprint.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7CCD35E242791EAD335DBA830CAF627 /* RCTUITextView.h in Headers */ = {isa = PBXBuildFile; fileRef = F6312EB0499C783D68B98C5D0AFAB4A7 /* RCTUITextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7E4395AE1128CA640E2737A237DA346 /* RCTLegacyViewManagerInteropCoordinatorAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51CBEFF89517A9EE045E0A3F9D3939B5 /* RCTLegacyViewManagerInteropCoordinatorAdapter.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F8097A05D32126DC5E6019E1759235FF /* RCTMultipartStreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 65125E07440A02A058E96A2DAE8C8438 /* RCTMultipartStreamReader.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F81C865E5B5533C436995EC5E52A4B02 /* HeterogeneousAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = D8C79C91A7FCAF5C973C5E74CCAC73C5 /* HeterogeneousAccess.h */; settings = {ATTRIBUTES = (Project, ); }; }; F863DC654B26CC6295C8F8D909B5C229 /* RCTInitializing.h in Headers */ = {isa = PBXBuildFile; fileRef = F65EDF84A53562B923789233A6319309 /* RCTInitializing.h */; settings = {ATTRIBUTES = (Project, ); }; }; F8C937BE0952BA6404982198BF2D4323 /* RCTLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FC7D25DF3E8899A55391A2FBA5740 /* RCTLayout.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; F8E1AB2A19BB2FCCD643BFF425B2DA3A /* ExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8231A4F6131F749AEA92BF670465B6DD /* ExecutionContext.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; F8F6918DEA2269A706DB0786EA73D733 /* Base.h in Headers */ = {isa = PBXBuildFile; fileRef = 3018115A5F8C04479A8AE64B102BE2C5 /* Base.h */; settings = {ATTRIBUTES = (Project, ); }; }; F901B09A64206BD8481364EF79C7D52B /* RCTAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B0AF45BF7087251B0C904F885ED8178D /* RCTAccessibilityElement.h */; settings = {ATTRIBUTES = (Project, ); }; }; F92D7374EFCC337E0153EF9BF6E660A5 /* FormatArg.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F8E380C0D44C30A7EB64835C56687EA /* FormatArg.h */; settings = {ATTRIBUTES = (Project, ); }; }; F97D444DBAEAF3A5C876EEFA7FBA1A44 /* ScopeGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A6BB42C32564D7C067A75160B7457050 /* ScopeGuard.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new"; }; }; F9A183D9BEA7E6725F4DD901F0583A00 /* FMDatabasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = FFA2A883F42A90CB3B4B86BA995A7239 /* FMDatabasePool.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9E214AD4CE39C95F7CB3A7DF2521A86 /* RCTModulesConformingToProtocolsProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 033B1F5C19B781492F29A47DA4EFD3A4 /* RCTModulesConformingToProtocolsProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9E6052152BB44E91B62957A180638AB /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = AD18C7CE1E7A5577FEB2D0F7000A7E5F /* ko.lproj */; }; F9E8743FF34708E334614F893FBF83B1 /* RCTMultipartDataTask.h in Headers */ = {isa = PBXBuildFile; fileRef = AFB08F045558C6DADC89C84CC798C71B /* RCTMultipartDataTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9FBD5F032C5E741A03EB97EB74867A9 /* RCTSyncImageManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34310C6EE4D078D016C21151602FCF90 /* RCTSyncImageManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FA31953D65A12B9338B2363FCC9CC4C9 /* RCTProfileTrampoline-arm.S in Sources */ = {isa = PBXBuildFile; fileRef = 942322E848A28FE125A1C9A84F16D548 /* RCTProfileTrampoline-arm.S */; }; FA3876E333033226CDF04768A947C7EC /* UIManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AF94AB49F3DFCBD87BA7862CC44A3D1D /* UIManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA441FA915776C369C08804D23D7DA51 /* Lazy.h in Headers */ = {isa = PBXBuildFile; fileRef = F07A956888DB0839EE8710AF70182297 /* Lazy.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA517A5F883F194823AC6289673A6563 /* MicroSpinLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7404AB8D8964BFE0531C56682163D1 /* MicroSpinLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA7F0D692EE1B5D551494F3059D5F30E /* MountingTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = A23EC0B053A41A76F8AE3B595FF6B87A /* MountingTransaction.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA80E10B2923469227CEB02B29ABD5E1 /* UIView+React.m in Sources */ = {isa = PBXBuildFile; fileRef = A5B22DA0749C539DAE387FAB7E1507FC /* UIView+React.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; FA97A04B1279EB33668144798ED22447 /* Ordering.h in Headers */ = {isa = PBXBuildFile; fileRef = C4EC4C02AFACADF949E7010ACACF4B85 /* Ordering.h */; settings = {ATTRIBUTES = (Project, ); }; }; FAA0D40E6EB5DA76CA69A3F12F7705E2 /* ThreadId.h in Headers */ = {isa = PBXBuildFile; fileRef = F69D2C7C3E6181971A1F8D04108BC7D4 /* ThreadId.h */; settings = {ATTRIBUTES = (Project, ); }; }; FAB9F94A3091F4A570F19CB366F46516 /* RuntimeSchedulerCallInvoker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEF49BE28E7D87B31F7411604BFADC49 /* RuntimeSchedulerCallInvoker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; FACA8109B0EC6154E355B2B3F3CE7F17 /* InstanceAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 766F8957B06DFCFCD48D2426262EFF74 /* InstanceAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB26DBB9C1BDDF94A43349306AFBFEC5 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D384B56D16CD122C5BFFBD16EFEF46 /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB51B40685C9A6010A007BE6CA582655 /* RCTInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D16D5EC0CC9F855658FDAD755B9B8F7 /* RCTInspector.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB9F5AADA3A6FAA282D800FC90BD863C /* RCTRootContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8C1858F1B1566DD6C1B389057F984F /* RCTRootContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBAC357014D2034EA5D2C9B1B17E5E32 /* Baton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F4BF0D6B00930EFF4155DC9B790AFDD /* Baton.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBC28207A3782629D8ECB7F7D22E1FA6 /* RCTRefreshControl.h in Headers */ = {isa = PBXBuildFile; fileRef = CD16933416FD2EC375DDCB34E3995C89 /* RCTRefreshControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBD08445396B14C26414793EBE1D352D /* InstanceTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6FD88D73CEF39AD0A723267614B20B6 /* InstanceTarget.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; FBD75089B4755555A82486ACFDC1F103 /* FMDatabaseQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = A45E1BB2ACE5150BEF6C4801CE86896C /* FMDatabaseQueue.m */; settings = {COMPILER_FLAGS = "-Os"; }; }; FBD79427FC052DF19357B1FE491B6D93 /* Task.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 750B7BB6414518C2A827B8877B15A353 /* Task.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; FBDD186A5D7B5E12FB15B56B23F595A5 /* UnstableLegacyViewManagerAutomaticShadowNode.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB46ABA9CC235068ECA4A848DB17EE8 /* UnstableLegacyViewManagerAutomaticShadowNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBF16827FFCE880C6C9310D61C773760 /* SimpleSimdStringUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = AB6B32F88010B897C8CBEDA90F51EF81 /* SimpleSimdStringUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC40472096744F71321EB900227DBDCF /* RCTNativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4489977C9B5B35F7F5A112139189B7E0 /* RCTNativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC4BA81798FA9C1FB1C0064280A6D8FA /* RCTInputAccessoryViewContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 48151421313275AE47A1F36C49F1AC43 /* RCTInputAccessoryViewContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC73229D9DC21849A4BF5E101EF69154 /* RCTDynamicTypeRamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C5791AD6F4A42E6F15A4AE3E13672C9 /* RCTDynamicTypeRamp.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC894BAE1C98F8C86943904E2C83A368 /* JsArgumentHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A74ED5352ACAC24B76D223C19F8C62F3 /* JsArgumentHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; FCFBAB68412C83F9EC2FB13D4130D695 /* Object.h in Headers */ = {isa = PBXBuildFile; fileRef = 342244AFF6DAC97CF99A001A770A5E4F /* Object.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD1412F7EA27E8EC3820F7587AE22248 /* RCTRawTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A90696C4EB8690ED661E5470ECC1C5 /* RCTRawTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD2289F6888F0B2154D3A3018727535B /* RCTTextTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 169BFFC72EEA61E28D560B57CD831CD0 /* RCTTextTransform.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD2E98D9CB060B5341099B9ADB7B098D /* Foreach-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = A6072D5AD4221696B9DE9D90F1EB0439 /* Foreach-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD39522D224A22B7B91E3BFB6D598CB4 /* RuntimeSchedulerClock.h in Headers */ = {isa = PBXBuildFile; fileRef = D7139195D968D34865DEE54652AEED4C /* RuntimeSchedulerClock.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD3EB3EB8AB44B1B40F04D32CCAD4388 /* ranges.h in Headers */ = {isa = PBXBuildFile; fileRef = 75A1EC0889B2FF4178C4B15A8C8EAE88 /* ranges.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD6C993EEC7B56C5CD8F3E8DDDE62EA4 /* RCTVirtualTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B0A85C6C1A686DD387938C318B3E03 /* RCTVirtualTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; FDA9294EC4CF28A1AE0E07DD15E8A938 /* TextInputComponentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 63CBEBB4485380F9D7F6FBA437DF4E46 /* TextInputComponentDescriptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; FDACFB7A65FFD5270F807735B27D1DBA /* RCTLocalizedString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4181C0A4A1994121AF233A5C57DEC990 /* RCTLocalizedString.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; FDDF426085594202FFB84A5A244FF421 /* RCTLayoutAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F5C6F9D16A1A659B8CB769DDEC445DE /* RCTLayoutAnimation.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -DUSE_HERMES=1"; }; }; FE12A07411DA6DBDF3D79CB4FB59C8AD /* RCTBundleURLProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E3339D6705C5DCAD1A55DFC2EA80C646 /* RCTBundleURLProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE246A8CBD588F3885A9F3746184B7A7 /* debugStringConvertibleUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 77F3BA61BC36947AE25324E0B86A12E5 /* debugStringConvertibleUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE2957561C5BA3A18683A03C5EDC995C /* Libgen.h in Headers */ = {isa = PBXBuildFile; fileRef = EF23890C4D36D03EA1DD037AFEFF15C6 /* Libgen.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE3962EC610FE961F8B6C1D916E9C04A /* SRHash.h in Headers */ = {isa = PBXBuildFile; fileRef = BC384C199B1347B14BCE2CC3091CC47B /* SRHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE80AB3F468FEBAF4F9FD0883C9C3FBA /* TextInputProps.h in Headers */ = {isa = PBXBuildFile; fileRef = A5419C82AB201A4405D35E3F97C867FB /* TextInputProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE877895E55021546425F770C014D9F8 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 70D50FBA71B5522FC8324C5638AAABC4 /* es.lproj */; }; FE9A7BCB54E09D6B3715DF452B959454 /* InstanceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A29138DBA1381888F4701360BF91338 /* InstanceHandle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FEC88C9D9E42428AEBEA8C790889E70D /* RCTInterpolationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F78A76F0BB8E6B3D92D46FB8C08FF72B /* RCTInterpolationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; FECF2B95FB337E11258FC827F97C5516 /* Libunwind.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C46B7B386338A3CF2226940A341403E /* Libunwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; FEEC6DC9DB1C67C87F3FAAA274B199CC /* Baseline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD47E6AE7775E09A0E4B2548E31BD9A8 /* Baseline.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++20 -fPIC -fno-objc-arc"; }; }; FEF9BDB3467FE72D2EE093812C803692 /* LegacyViewManagerInteropViewProps.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D7CB8AC94086CDE9ABBF0A55442AE9F /* LegacyViewManagerInteropViewProps.h */; settings = {ATTRIBUTES = (Project, ); }; }; FF172C3FABCC4E7394876885F64E36D4 /* RawPropsKeyMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8BA983DC0304E53A494B8BC8368D3C /* RawPropsKeyMap.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FF2681C5F344F1C15BB22CAB3D37600B /* IntrusiveHeap.h in Headers */ = {isa = PBXBuildFile; fileRef = B9FF361F61B7A378542F02A30393DF63 /* IntrusiveHeap.h */; settings = {ATTRIBUTES = (Project, ); }; }; FF3BCD88224B32B38359A33CA2787889 /* jsi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1340E22099179F463C3487BAB8420980 /* jsi.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; FF54B55BA08CEBF4015B4B981EEB17F2 /* LegacyViewManagerInteropViewEventEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 938D7993FE352F22F90BB01751E733E9 /* LegacyViewManagerInteropViewEventEmitter.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; FF76D3A832ADFED4BFA28BED56073394 /* SocketFileDescriptorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = E6362057149C3EE30EE5985649A70E12 /* SocketFileDescriptorMap.h */; settings = {ATTRIBUTES = (Project, ); }; }; FF9D0574D3726083613F591EB3EB608E /* RCTImageEditingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4242FEAF60FC3ACE3D98A5A77B65D724 /* RCTImageEditingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; FFB0AD6EF400000E5DB3695E6D232D13 /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C66234F6FC8A3E3EADCA342B130FB54 /* Color.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FFED29E1CC4B6F3236B8A5D380AC3447 /* MapUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D6609F1FFDAA711D16BE1CBBFCEF19C /* MapUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; FFFD58B8888202E20B594C6DEDBCBA07 /* RCTAnimationPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AE808F4B51B3F24D61558A014CF22A5 /* RCTAnimationPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 0289B273CF2E170BB6BE507F5FFA82D0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 032B7BB6E4D024DB5071E49DEDDDAC9C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; 03E24E6D4CF66A0B6865B7EA2B2BCDD4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 04672A342746A9D23A216E3D51356039 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; 04F2717E51D21D9611B67F123B87B7E7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 0557F03CE366CCC0279E44D78CF0BEF8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; 056D3BFB7D1D8A7D376FAFA2B66FB8C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 05D52A397C8C50527687630B5436F9CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 0661428190F98F0AEA09E706F72C0E14 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 06708061FBD54D734CD69C96FF4BC80B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 072B6EE4F36C319A81BD03E2D2FD3B6C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 0743DC1CCDBCCF6C3ECD3224DB5EF4B7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 07FEE5CA0F570179CD895CC0EBCEF25A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 0841A812345E34F753B65CB24CDDECE4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 08479658374D8A84889129BFF1758177 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; 08DDB51BD53715626AC1CFA447E04B23 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 0934208EB4E70167C10A41B542FE527B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 099FD4302E1571C43E7CC5DABCE768E9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 09E19762D2B4D46BC3E1439FDA65CFFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 0A67297851E496410FDCA56C2F856355 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 0B1EB341796A0626399359C3ED0B7588 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; 0BBE9531017E2DAF1FE8803E7ECD8206 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 0BD3FE504C29567775D9641CEBB9B2B5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 0C03E6CB4D11169816C5B19652383FE6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 0C2AF7FB43C100B3E1DB0861160AA83D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8DED5282246ABFC24F4460D3066C84A0; remoteInfo = "React-RCTFabric"; }; 0C7EAE61CE963E0C8DB1A375BF29D31F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 0C825C2B1718A18CE8B22578116AD9D9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 0D062956D3247F5A6F2348C5E96A2381 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B69D68A280EC3E60655BD2C715ACB004; remoteInfo = "React-nativeconfig"; }; 0DF13E7D33E4641BF3808510F4CD10FD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 0DF9EB235A025A0E7225BD3835E9A8CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; 0EF26FFCE4BA23EC50BD19A5D1FEBBEA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 0F6F6C6360E16A9A1264290F55453760 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 0FE34725473963448614574DB7872734 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 091003D98BDA80B01B9E35CADE3947F0; remoteInfo = "React-Mapbuffer"; }; 1135D39403406304B5E3DE1CC9D85673 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 118C58C79101D96E6FC10ED86A908701 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; 11F2156C55352C7A4376481AC963683D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 1250E130FB93020268E26EB59677362A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 12CBD29BC4AA7FCAC2191790822A8408 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 091003D98BDA80B01B9E35CADE3947F0; remoteInfo = "React-Mapbuffer"; }; 135C6D27FB0B505651E80CFC705195AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; 13788842E11AC14A80C18C631F34DD4B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 20F066A71CEA5EECC7463413442F2B77; remoteInfo = "React-hermes"; }; 139B8D68D2E558E28083C605874A0BD6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 14CA7990CDEB12D4182EC6BF39D5E9D3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7F600C052808C7C987C26EC74B3A290; remoteInfo = "React-RuntimeCore"; }; 15CBA2BD8EF64756C0767A60F7567316 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 15FC817CF5576B0F64C53F4746531CBE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; 18DAF4BB014890F9475879A59FA277D5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 18FF611EE7F2DCFF095EE41573494D81 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 1970E63906E04E6F5CC4059A6A594441 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B69D68A280EC3E60655BD2C715ACB004; remoteInfo = "React-nativeconfig"; }; 1A02A3242E08B500151ABD06A45B91A0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 1A311E894E75265D572441282B7479A6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; 1A4CA94B561EE5E2CA5F1A7FEA2624BA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 1A500E4E5049684BC5D74DB12E6823B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 1AC57A05EB292291B8BBEB18785A89FD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 1B6912BA8E189A53A0F2DFB318AD1DB8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; 1C26555D9AAE15CA4E6E78862CB2F8D7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5E1D7706FCB7EC5FF39F8CDA49A5653; remoteInfo = "React-ImageManager"; }; 1C2EB609658547D5066D047531E2E9CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 1C9ACB0F83A2D9C2A753C9B8B7CE9AAD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 1E121B19C6FC0D95DB4FD3A9D9DFF81B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 1E43F670654169F733EBF0224B62C200 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 1F19152BF279C2350CFF110149351FCA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 1F447B67D4490096D87F14FD5876C024 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 20F066A71CEA5EECC7463413442F2B77; remoteInfo = "React-hermes"; }; 1F710C3EC863E54A48B767BB86D76737 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B41E34C6B259B9994C513BE178912491; remoteInfo = "React-rncore"; }; 1FBDF52E2B645612778A2C4BCAF5EEC0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 21E5AFABF1F1B440FA387F63E1ECDAE1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; remoteInfo = "React-RCTSettings"; }; 2218ADE51E9ABC2171A5F0151EFD97C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; 2289B5373AAC50ECC91CFE1B2F2350BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 22A5E21755926CF3126E545874B29A8B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 230B69802ADF4E4DE0EC880F086EDF62 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 235EEBD6BE88E5969BC95CCFAE81FDDD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; remoteInfo = "React-RCTVibration"; }; 23A81CB39D9D41819B69211A5E314A35 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 24F856B5ACF07FE391D964E89D193522 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 25F35441911D6EBBD57C36461F4A2942 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 718331030FAA6D88E74D4B2240BB4AC8; remoteInfo = "React-jsitracing"; }; 2602E2C102AE096CF1AB67655B312CC2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; 264D33E2CA9CA59026ACCC8C30F173A1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 45B79B0C60C74716DCD2AD7BE782A719; remoteInfo = simdjson; }; 26D71B5A7F452CFB83A0E25D8921B661 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 26E8C064D0C350303EC25814160E5507 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 27227816A0AC9C79094F475A7E539F7D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 2787D1BB90BE7254AF9CAA44E76EDF74 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; 27BE5FAC5CF6C00EE6638453367C29EA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; remoteInfo = "React-RCTBlob"; }; 283F65F4310F568BCD5E39DD9008F1A3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 285E1159FDF1A7A09F6A29288FE2D2C3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; 287546B862BA34A1C2963EFC525D4BB6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; remoteInfo = SocketRocket; }; 28996E64427C63ECE41813C12F1D9F45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0EF07AE1AD53436E8D2B9B0086EA0163; remoteInfo = "React-RuntimeHermes"; }; 28B7BD8A9C0D88C589EF663047A7D58E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5211B5AB7B81060AA8E78614DD75D3AB; remoteInfo = RCTDeprecation; }; 29D99B6382EC442BC3E615262B0BCBED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; remoteInfo = "React-RCTVibration"; }; 2A2CA8F5135943250F0EF215F952D316 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 2B40EAAE1015F3040D2BFC3B84B8C0A2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 2C70C777E30B0F495E6558B96A5DEC57 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 2C77EA8CB35EF7DA9E933C9A98AC198E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 2CABC33625B79BE358899318EC118B55 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 2D200046FECD427C246D4E124454B60A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 2D8279F103F61BD0E0316515B2A4FE66 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 2DD25C6A74A6A39833B87AE38122594D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 2F14569C24AAF9E98FAFC248465DC9E5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; remoteInfo = "React-RCTText"; }; 2F88905B01E2F8DF3A2DA844E7BC7E4E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 2FEFCC000DB45DE8C15B1E1827963871 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 30052770A781E8047C3AB8E1C984E45A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 3096A1AE919BEDEEAA93EBC59209A823 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 3121C4A5AF5E102C5C18BC41E9B82EF6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 31F652266E48E74C758B9C69EF3CD90F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 3249A44E515B7313CDC9965DDD33667F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; 336517C4087738649F1E1F4AB8F8519E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; 338D244FA8653B3233AA255D4D1925CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 33DBC0FBD8A36E91BF0D798BC0FD460F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 34B293D00EA654992B64C623FB73669A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 34CA178C3014A040FF0B0E0EC2D01AC5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 3550D2C7B73010DD94B2507B76857F52 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B69D68A280EC3E60655BD2C715ACB004; remoteInfo = "React-nativeconfig"; }; 35C37DC0ECDD2A729AC821C38BB059FB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 364D2CA644CE7284EB0D9AA88411CBF4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; 36D6711AE32882ED3092979037CC3405 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7F600C052808C7C987C26EC74B3A290; remoteInfo = "React-RuntimeCore"; }; 37BFECCBE92D5B1175C2BF3EEA9DB4A8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 3890C233A2B634142790E17AFC8D817D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EFEA55B1B776B6EB4B16F363BFE64D1A; remoteInfo = boost; }; 392CD5DB7A14441675CAE5C1C2F2476E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 39783E66536947564F9D020A74569042 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 3A88FFAE788BA5C7005A06203E2D5B09 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 3AB1A2D14D238F5E0D710BD34D8999D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; remoteInfo = SocketRocket; }; 3B60C2EC4FC7EADBFC082C9611FE195C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 3B755BC14CE1029B5A4285D2C338D848 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 3B8A3FBDB20D3A657E89E7BDB7525ED8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; 3BDB96421767BAAB9AE9DC3CE9603198 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 3D499367E58E5470425EDA61A0B51FBE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 3D8C75E02193D4335F7C8480891CA121 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; 3F15F1D48A07466A9F8B095CCA36826C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B41E34C6B259B9994C513BE178912491; remoteInfo = "React-rncore"; }; 3F8E945B2CF235F1E5DF37577F4BD617 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; 3FA3F4824D892562720F7C1FE88A3FA3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 402D782A605F7C3F6A1DF1E51ADD1ACB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 413B66FC8CA959FDE6EE3BD8E75010EF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 41514EC3994603CBBAC966997FF940DE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 417228EA0C0EED361BDA2C73B4EAEDD7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; 41DB73748AA04BD6E5CD07130AAFD267 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; 427FF6CB1456A5DB2E43054C10D407AF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 27F648AD269E94404D6A7547C4F9C683; remoteInfo = "React-jserrorhandler"; }; 42E337250953477C0425F2B20469DB03 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 42FB8544361ABBF9AD8C4C00BE603100 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 437ECCE96742319D859D14A7A0DCC529 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; remoteInfo = "React-RCTAnimation"; }; 44520E623CF92B2AE884CEB68AC7F3C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 447510A29A4CA824A55F4762DE64486E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 448906A26AA70E7B13E7A1279A5D8B2B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 45058A3929052B17227F15D8771739C3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 45B79B0C60C74716DCD2AD7BE782A719; remoteInfo = simdjson; }; 45BBA5E24DF3E98A1E33D5F7099F04C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 46052FF3D71EC89028E59421AD272DCF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 46618F284AA8BA31B4AFA45A8E9F507B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 46F60D279BF0CC26216ED024A0D81294 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; remoteInfo = "React-RCTAnimation"; }; 470C26614128A65CB3DFE45361C557CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 489C8E3E3F5C65782BA9904E88317584 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 91D38B18A4E42B1622B83F450706C2F5; remoteInfo = "React-RuntimeApple"; }; 496FB04383EBFF21B0C7DD179C13F5C7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; 4A785EB5F5F23DD60E8AF051ECB80951 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 4ADC4B7DC0EDA1567BEF58C181AD6FD5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 4B134C8FBCBB969A1215D405FA8F1A10 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 4BD82DCEA208F83CDCBFE4428A843743 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 4BF37A59C4356B532FE3C0348A090A3F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 4C00808CD01965B91DB4DE20301AE79A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 4CE094B8C5B23C55458F418C324291C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; remoteInfo = "React-RCTActionSheet"; }; 4EB019076F5C4DBB606BC5E48F450D01 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 718331030FAA6D88E74D4B2240BB4AC8; remoteInfo = "React-jsitracing"; }; 4F625582906102063209333EE277CEDC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 4F93A5639AC8DE235E8468EB71917E7A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 50664CD9ED7985A1E90103A79BE4B4CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 50EB5FDA61EF17A3F3258D62A351B614 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 51059926E149D7D7A46AD514913F4BA7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 514032619C079D0613FD26B75A133435 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 51590C4C9586B9EBD9EB9276CDA00E78 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 51D23F496B041E29ECBBBB9469B006F7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 523986A4CBA0A9B854F1B1F504672E41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 528B726925AA1576C46D6FAB03891176 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 20F066A71CEA5EECC7463413442F2B77; remoteInfo = "React-hermes"; }; 531F38502E184028FEC2387DBD9F5A3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 5330B576E39CDDCC6D01B0513A2C8F64 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 55742B771D95D2D70CE4E7DF35415F5B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 57B24B86E8BC2DC4B873AFA4728A28F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 5858410DB9604D764DDB1D8DBF572A73 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; 58D01897CD4E2D764437DA0038900ACE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; remoteInfo = "React-RCTAnimation"; }; 58D8334E9B16E13EB96FE3FE0FDCF10F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 593B340C65DA8AEF21E6D8AC52660544 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 5A2F2307A099C28BD6575DF53A5FE136 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 5A66969F2F26AF689BBE09506F583E5E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 5A8596426591472EAFCA3DA6207F0A23 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 5E1475973708794027FA6EF77468A061 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 5E1C8506319413FB7230B196CCEC1DD5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 5F9ECC8664AEFB7D24B15E1ABEBDCD7F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 610DAF4DFC508DEF059AAF2D6327FB30 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 6192A6F195A09747939210F1954336E5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 61A7088DDA0CCE984A0F70AEFF5F251B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; 645CCB35B56EBAFA23B7777FA9A688EF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 64B026DA708A8DEF22DD19ACC82A7D53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 667B3C248D30D99BF4AB387DA12EF8B7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 6682A5C614DCD26B5D7B0DE8C3DEB7C0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 696C092D7D2F0C8C73C9FD35C3516D5F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 6978B0EF9BF761495B5E4F97D979BEB2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 69F28387CD69BA9EB00ECC48BBE04334 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 6AB1F4BFD6B96C93DA1B7CD8F20A79C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 6C63CA93F2CEB17BE0AB630B55D93DF7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 6CA22A265B4F5BEDA7386E7D1A288083 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 6CB5A0DC349F027AC1A42CECDA2717AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 6D203869C95F377D019F57240B097418 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 6EB4F5AD2509B4497784B3A8CBBC25D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; 6EE56E372692932C8B3E2285CB2D30EA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 6F59DF752512991C7BB5D7117332E2B8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; remoteInfo = "React-RCTSettings"; }; 6FA0C82671E5EDF5C2E8608E281E5574 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 7089361FEE21B329190B5FB28FA6C854 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 708E537269B7F5B976508E358B90ACD8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 7158D0B64E400178ECFE8BDBAD235DA5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 45B79B0C60C74716DCD2AD7BE782A719; remoteInfo = simdjson; }; 7199A02DB198016F4957677CAFD37169 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 72691AD3B737BB0E261D6450E7CC91BF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 72F15D17342DFAFB7E374C97225B301A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 7324B3C23CC2660EE8AB34F268610F69 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 7396E7BB1E1E864764B1A04E411A22AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5211B5AB7B81060AA8E78614DD75D3AB; remoteInfo = RCTDeprecation; }; 73E1F467A179064813358CA300786586 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 761B75C34BB1B42FA942F96540E4BC15 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; 768701873B0599D6AC08259EE1D5EC9B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; 77392EDC06BFD0919392085F508634CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 773DAF3A7CD1AD560A4E58D7260D2A72 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 77B61E545D3EE505689E5A88FB34006D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 77BB51BE51B9062B6A3C86AB77078D7C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5E1D7706FCB7EC5FF39F8CDA49A5653; remoteInfo = "React-ImageManager"; }; 77E927E30D46B85E76EB2A6BC7C528FC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 788F525F7864E34BCFE6BA0BC508EAA7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 7891D6AA1F6DB7DF67CCDC6B30B255ED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; 792C4CE9FB1431C17A2D5C379D689D80 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 7931E9AD775D7BC33B55B25BE876C6CE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 79DB034638266C6FDC5132A84FA94A15 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B69D68A280EC3E60655BD2C715ACB004; remoteInfo = "React-nativeconfig"; }; 79F6D476FC0E744BD4FCC435BDAD2B7D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; 7A705528BECC75FF15B9B5472224FFF2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 7AF4C2BA2D63C5F0125DB0C240A10756 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 7AF7CA4C4F7DB433479DC151414ECC52 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 27F648AD269E94404D6A7547C4F9C683; remoteInfo = "React-jserrorhandler"; }; 7B2A662A0484D478867544ECF561FF26 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; 7C40A37CAC285B68DA5664FAD4BE3490 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; 7E2AE44A3348102D3E4ACF43FE59A494 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EFEA55B1B776B6EB4B16F363BFE64D1A; remoteInfo = boost; }; 7E51A5346FA1F405D4A2D9A3CD02A15B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; 7F45F83A2EAD4093F12D40375946D470 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 7F9ADB115EE8B656B0A4D9610F64585F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; 7FA15A1437F7473F4EBF6CD2EA187A28 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0EF07AE1AD53436E8D2B9B0086EA0163; remoteInfo = "React-RuntimeHermes"; }; 814E75E2466186389C470A40FABEFBD9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 718331030FAA6D88E74D4B2240BB4AC8; remoteInfo = "React-jsitracing"; }; 818B8E1B916E53B3B8B415FF901A52E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; 8469D13E4B9BE29DE37C00B9952D6926 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; remoteInfo = "React-RCTLinking"; }; 8642894287941BD14F9F24B434B84BFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 869A59EE24894AED06764354C10A5F69 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 86A2C6528D2E3ACA552AD500A9049C6B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; 86B5CD38F12BDE8F478A7604F2D1F3CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; remoteInfo = FBLazyVector; }; 87161657935B5B7DF31A7B031AA1BD08 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7F600C052808C7C987C26EC74B3A290; remoteInfo = "React-RuntimeCore"; }; 87DFC9D147D55C9822337F8738882886 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; remoteInfo = "React-RCTText"; }; 883C9E9E5FF6809D00655B5826DB4507 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; 883DE70A71CAD81F2E1643C8AE798850 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; 88F22E372111C3D44383E8AD8F2A1EB3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; 8A01A6A20F4A040DA3724AB2B41C4904 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; 8A0C1EFB40903E64193D071D4DEEF627 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; 8AAB6C3E51B1E70B078CFD8A4025514F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 27F648AD269E94404D6A7547C4F9C683; remoteInfo = "React-jserrorhandler"; }; 8AF54EC1E32237AFABA09EB72FE50F7B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 8AFA4A6B9474BF388393B2BBB377418A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 8B89516148A1AC15EE488B8C02430723 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 8B9623D05D47EDD8969CEB97507656FA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 8BAC0CA3123950377D2AA004B741EE09 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; remoteInfo = SocketRocket; }; 8BE4793AB705B3DB8FC95B2A3022A7FA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 8CAFE184AE4C9DD706ECA03373F2C811 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; 8E103A8D0B29AC65D37AF2C9C3397C3F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; 8E227252A1A04992FDE9D414D398EA61 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; remoteInfo = "React-RCTActionSheet"; }; 8F3EDB0170BE68F1914E876834457955 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 8F4D9EF766DC665762826021BF5B3634 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7F600C052808C7C987C26EC74B3A290; remoteInfo = "React-RuntimeCore"; }; 90A4F01A4656FD0ECCE693D3DCFE4357 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 9115D774EC904629CCFA0383996AEA60 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; 91973EF9B88BD3433821DE7E02BCCE66 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; 92FD7911CF88661BEC8C53326ACD95D0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 930D2D66F0FBD7D28F5478091197C541 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 933D10BF42FEB63C8C84E9E62A6B915F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 944A26AFF7616415AC12303FFE76129E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EFEA55B1B776B6EB4B16F363BFE64D1A; remoteInfo = boost; }; 959FC78A558AA1E2398AF55E20BC5287 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; remoteInfo = "React-RCTBlob"; }; 96889FED11AA7E66812D490878B97588 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; 96A265B0FD2164A7B4764841E73AB8AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 96C05CE8F4A9CD43357BA06485F8994A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 97012073F5E77B63FDFB697A4A57C498 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; 9716285D0C3617CC9DDE2D786CDB6197 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 971D502A30449EA83A63979D19F07B5F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; remoteInfo = FBLazyVector; }; 9731399883802412C950BE25D7336D43 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 98690A3B0D01A5936AEB8B172475F68E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 988C8AFF6DCF1A105E13A420302F1153 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; 995ED0C60B49D159FBA98BBF575252AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 998BEC830E92ED33C97E6586736FB998 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; remoteInfo = "React-RCTLinking"; }; 9A147EEF518A7ED1EA0464E07F6906DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; 9A59483D3DD8007F31406C2A1D52E8EB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; 9A63F0A7EC65A8B4E2442C2C924DAD9C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 9AEF32BD5E0F56B926EBB7614301D7E3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; 9B17177FFD8673933D9AE3E550401161 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; 9B1FF7A4C16CAF1E413DCF4BF011434F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; 9B4885D4819D4BD1CF3E930B405AAB10 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; 9B7B281009C520D53B98B8EAFC1D496D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; 9BD7E734058A20C28CFAD01F1663879C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; 9CB9DF07CCF04684461C49FDB7B2E465 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; 9CBBC8352CBACE024F392C5D07EFB01A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 091003D98BDA80B01B9E35CADE3947F0; remoteInfo = "React-Mapbuffer"; }; 9D4B5C2351B1CA9FA4CE976414BF39CB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; 9DB104CB96E00AE543CF960D565F4C47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; 9DD0DFC1F39DAB437E177EB09A8FD48D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; 9E867B5A451015DC03204207736A9926 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 27F648AD269E94404D6A7547C4F9C683; remoteInfo = "React-jserrorhandler"; }; 9EA4F6BD0A3AE917E71F8807C80DB748 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; A01FB08457ECBD7EE89F447BFC03E9C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; A16731871E95A4B80332D99A82AEAB81 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C7F600C052808C7C987C26EC74B3A290; remoteInfo = "React-RuntimeCore"; }; A1B6243BC985420127EDB25166DBB848 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; A1EE308B2938947861CD549712D6075F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E16E206437995280D349D4B67695C894; remoteInfo = "React-CoreModules"; }; A1F1CFBE1F81137945063038F1DAA104 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; A2DB2A457F35677E14332209CA3AB475 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5E1D7706FCB7EC5FF39F8CDA49A5653; remoteInfo = "React-ImageManager"; }; A2EB194373B9393B3358E1E1FA0EBD05 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E16E206437995280D349D4B67695C894; remoteInfo = "React-CoreModules"; }; A3265F4A2E09A773944413294B402BBA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; A33E41C8F72330ECDE20BF394124C97B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; A3F6FC01C2191DE3CE03D589BC558A96 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; A4E91955EC6E6D3061E9510D936E61FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; A4EAB72AACA2C806DE0C40C49536CDD2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; A57A1E5DA1CF9F45264F198239F502CD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5211B5AB7B81060AA8E78614DD75D3AB; remoteInfo = RCTDeprecation; }; A5B19FE633CD3598242AF5724C8D0208 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; A6398B134777D879B1B01FAAF9E7312A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; A677F1A562B3A7E3375C13B645B0298A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; A6BA9A6BD8EA1A3C362C27947713ED7A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; A842D588D7B9637FFFA8197AD63B597C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; A92361FFAA6D27AFF02987D72B991DE4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; AA28726CD41308E7D4C6D49AF678D9CD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 54EB12219122432FA744088BC5A680D2; remoteInfo = "React-runtimeexecutor"; }; AA7D7226734A644480DC2905FB4F0756 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; AC0EFE9849C86BC9EEE3998C75BF7E59 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; AD65D943B25FB162F127D788B3B7414F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; AD88ADDC23C72D9E68F949E2F6392A9C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E16E206437995280D349D4B67695C894; remoteInfo = "React-CoreModules"; }; ADD9114A2BFC1CBDFC55DD169FA98452 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; remoteInfo = "React-RCTBlob"; }; AE45C8D28B14130F12EC5C170DA2B7AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; AE96CA5B7DA7C75729EC0BEF7C0FFE9D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; AF0A642DD817CD7C29D4688D8B28274A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; B050846017362E483E884DFA743A5521 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; B08201482F085FFB7749B3B3BFA4755C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; B0FBC836348A84E5E4A688B8A910CE45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; B122FEC78343AAB6003C5DAA20FF12A8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; B1E7A179678B5CAAFE7D32BEB902FE50 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; B20E23EC66F22E90033D795BDB740B4E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 91D38B18A4E42B1622B83F450706C2F5; remoteInfo = "React-RuntimeApple"; }; B23E152C21979D346C6142DA964C43C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; B24AA1E618A3ECA98448662282BBE973 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; B389764894DEAE9026600EDBCD8A4763 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; B3A65B874F5E1F12E1BEE7077B201AF2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; B4449874149D49635F8A5CCEFA2B7B71 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; B455D622235FFAB0ECAD084D352B56F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1948D0B63D2CF6A48E18B0B292BC6091; remoteInfo = SocketRocket; }; B46597F4B2FF6D8BBB0FCAC80B136EDB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; B49957FEA3DBA79C960C4BF33FB89693 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C2B1B75CCC326124F29FE703CC59BFB7; remoteInfo = "React-RCTAppDelegate"; }; B4AB08DEA37CE87C1E80287F854825E6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; B55F062B69D12DE3FB7C6C27877E9D6C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; B5C49ED7C22908993DA03524268054A1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; B6DD8966E1DDD9372FDA125F3D9731FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; B833B6E10AB7E3C290E1FEF08CB30A4D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; B875F5E8A9737CADD56F2D32A8D43A6C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; B8FAF58B12747184E841D23CA71CB990 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; B91FF145DD7C0FE0686A53DB45FF39BA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5E1D7706FCB7EC5FF39F8CDA49A5653; remoteInfo = "React-ImageManager"; }; B96395E64F84E570087610FC9A4A1AE7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; remoteInfo = "React-RCTActionSheet"; }; B9A089006BD78E0587595CAB4CA1C15D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; BB5387DCE059C87AA11AECE4CE628A71 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; BB57699D36CDF102FB4067D36F1B26F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; BC0528EBC67F7BABF5B54EF212893752 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; BCB974246F67E3F682F23D3000A7BC16 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; BD62BAA4B5FFFEAA64CF2EE7B03345C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; BF7B3AA185D91BA8D010D8A33C7CB137 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; remoteInfo = "React-RCTLinking"; }; BF9E600B486A8F752CFBCEC2CC0B1A5A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0EF07AE1AD53436E8D2B9B0086EA0163; remoteInfo = "React-RuntimeHermes"; }; C0833537177F0AC13EEDE7B7CADA02A2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; remoteInfo = "React-RCTText"; }; C0C3D74CFBF3E116388373D57BE4F7BA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; C1DD7823D300707FC9C52212F93B32DA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; C23661E7B14F7FAC97B8196253811D53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; C295D62C015F11982CF4D6A807934AF9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; C2A4DC273F4357B0C430FAA2E640C336 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EFEA55B1B776B6EB4B16F363BFE64D1A; remoteInfo = boost; }; C339D19AFB5425F4ACFF222B89E642C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E16E206437995280D349D4B67695C894; remoteInfo = "React-CoreModules"; }; C342240C879F110F98B32A6586138BAC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; C442623A96CC4090A6637148EE99E00E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; C47BEEA64665700E66E269BE0C90CEF9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; C4A085BD4076C29C8993F50E76C4AACA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 20F066A71CEA5EECC7463413442F2B77; remoteInfo = "React-hermes"; }; C4B664DF5B07F01FA8E61FD0BD39255D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; C4C8A76B4B78C8FC91DE8EA0A599DDC7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; C4DAD2BFEDB2B46B30A4918334C3C155 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; C5168006894FB43521F0A0CBECEBD219 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; C539F15154AF65EF5205178A0B981D18 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; C5B2D41028C0D910182768F522988D50 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; C6175853BCA38145859D6574962C8592 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8DED5282246ABFC24F4460D3066C84A0; remoteInfo = "React-RCTFabric"; }; C66D90E52EFB399DB604AC9B7394D4BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; C73838D3F0AFD4D6E76EA1E846E47074 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; C79A04F3B768DBE6A492AE991E3C6729 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; C85A7AAACB052BE3D7FC7D52B64204D5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; remoteInfo = "React-RCTVibration"; }; C92744C875EAA3E6A25003782211CED0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; C933D0F25D6C20C3379299E2CB42F4FC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; C9E7B9CABFA8CCAEC5A1E5899E48575E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; CAF6538D653E2F4593BDD6FB47ABD0D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; CB02A6F103714BDDE795941B4C8F0F1C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0EF07AE1AD53436E8D2B9B0086EA0163; remoteInfo = "React-RuntimeHermes"; }; CBA1639E79B6F6752FA0776C8012648E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; CBBEE84629A720F7DD2A47F106239061 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EF554722D0D580AC702A6DAB8FDBB2B5; remoteInfo = WatermelonDB; }; CBE3C92A7423E48BDE15756DF5F7D413 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; CD5EB770BFF7AE41F049E4F510CDA6C9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; CDB9A6A5720EBE3436BD3F35A6AD8D51 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; CE32EDC6F22FAF26BF32FF9864DBF404 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; CEA49CA159329299D1916EE8ABEDB910 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; CF674C4E3255977E4A866B743B5F5753 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; CFA19FA3F85DE79CCD37BCCD68515599 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; D075EC87D0910DE9AA411C7752F01529 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; D13160E9F6A39A4293D2FE5667F854E0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; D16A2BB3F9D5A639C2B53437E64AF9DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; D27EDB53457EAF10C145163B90FDE993 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; D3E449977C2F1B93649FE5935155E48B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EF554722D0D580AC702A6DAB8FDBB2B5; remoteInfo = WatermelonDB; }; D42DE5667CC9F955711A2DF1BE3A0849 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; D45B03393137D2E267BC703865B2BC4D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 20F066A71CEA5EECC7463413442F2B77; remoteInfo = "React-hermes"; }; D468F98852D61A99CD42F174A928E8DA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; D8DE127140187183B98BE7DF5DAB9829 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; D90130736CF11060AA5F3044DC0B78F5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; D93CC2B32B540A9EB1BD1841FD97DF47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; D96E678A5C6F642E7B0A7E9DC29CF465 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; DA4C32AA37270D436CCA7DDE5E8265E4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; DABD0E6D1231888CF69153902DD90A4D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9F96BF8B7FC28F5CF47242D7A73B11DA; remoteInfo = "React-rendererdebug"; }; DB0DED4E98D854FD7FE257842C962DEC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; DB4AC6BAFB227C3B7803DC6E4A2F3FFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; DBFC4C49A506639725CD60B7FBF76663 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; DC87078558AE74568DA001162E941EDB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52C3F83DB80E5D527EDA54FA1DE5470A; remoteInfo = "React-runtimescheduler"; }; DF22E5AEB4E3571295EA7B3334BC0393 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 02B79DFED924FA19CA90EC69614733E1; remoteInfo = fmt; }; DFA19DBEE7782E6D2AC285DEDEC6A394 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; remoteInfo = FBLazyVector; }; E02813002DF6996D9EA968D5DABFD914 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; E13F53BC3F75A136CF62B889D823DA98 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; E30707A046BC4EB23766FDCF95E28060 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; E328FF71A41B524BF24AFE31D600C8BE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; E32D9D5625622F59A4E891AB2F0BBE8F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; E3DB328B666D52096C8CDE6E0757E653 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8DED5282246ABFC24F4460D3066C84A0; remoteInfo = "React-RCTFabric"; }; E442B4B6A2F8AA2C693319580C2AF969 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; E4E5A824873AA8676EF52F2A30A1CFF4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2681CB7EF647E61F4F9A43029C235607; remoteInfo = "React-callinvoker"; }; E562BBB8918D279CDB88A2BF9C9269F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; E59433E2F97541C6CE25FB34745C0597 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; E643492F477E73D73B4DBB1DB06BC7D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; E77D75EB8A5E3950C1D5870DC0615F3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; E805BB9AA384D87FA227760D8A9A9768 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; E813DFDA85C90877A292688B397709DC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 091003D98BDA80B01B9E35CADE3947F0; remoteInfo = "React-Mapbuffer"; }; E84A9F4D561E1111D32BA3A2B52CDAE0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; E8F7C167F6E0596B97FAF940464F2AAD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; E9109ED22CA9A2A178B56EA9072F0E53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A5E93F38E96B3A37575BEC88AD69AE85; remoteInfo = "React-FabricImage"; }; E99784687BF13C6C13BFDF77C9349E3B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A5E93F38E96B3A37575BEC88AD69AE85; remoteInfo = "React-FabricImage"; }; EACA86167645B5C3ADBDA0097D75461F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; EB6C649F337A405031F9117FA5BA3422 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; remoteInfo = "React-RCTText"; }; EC57A96C51CBD5A348B2228A7A2873D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EFEA55B1B776B6EB4B16F363BFE64D1A; remoteInfo = boost; }; EC85AE697848BE48B6F09210FF86EC9D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8DED5282246ABFC24F4460D3066C84A0; remoteInfo = "React-RCTFabric"; }; EDA92014437974EDFA693F292BA3683B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 91D38B18A4E42B1622B83F450706C2F5; remoteInfo = "React-RuntimeApple"; }; EDE299B0E0E532AF35E34DAD285C0EDE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C2B1B75CCC326124F29FE703CC59BFB7; remoteInfo = "React-RCTAppDelegate"; }; EE1123BB0790B159E0219DC27196EAAD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; remoteInfo = "React-RCTBlob"; }; EEA71226533D5815064A1C73FDC18AD0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B69D68A280EC3E60655BD2C715ACB004; remoteInfo = "React-nativeconfig"; }; EFB0F809D1F6A97E2AACC5F39FBBDE3A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; EFEA2A4D8B63216CE096FFA9CD177CB8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A5E93F38E96B3A37575BEC88AD69AE85; remoteInfo = "React-FabricImage"; }; F0E873B663A5E11DCE0F94915EB97DBA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0DD0961119C95E188122B13F3BF4380; remoteInfo = "React-Core-RCTI18nStrings"; }; F1A51BC2544543B9EA596410040D2824 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; remoteInfo = "React-RCTSettings"; }; F211E267308F7BC87A3AE4BDF64731B9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5807741745EB757C97C09F2D56726BE0; remoteInfo = "React-NativeModulesApple"; }; F36DB966C710B5B333317F75182AED2F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; F3C88D21EC8227A4B6BD15269AD29503 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 50DBAF155FAFB994E067BA8820221EDF; remoteInfo = "React-Fabric"; }; F50B829B9F8783D3CD5445F9A714C6AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; F56BDF2AF7A7909B3FD7EA17263A86AE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; F57A6DB070CE213FEBA51D9C1BC21F64 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 985FEA01F314F3C00F0C1E1181E6C4A5; remoteInfo = "hermes-engine"; }; F5A41D11AE2DF6500E1139FE35DBF1C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; F5E042F5B280EE727999F2C1B0962307 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; F63BA3F544EFE63F8DF41943535FD194 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; F6E4CB08E98088B45C9D01C8C23CD322 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; F716144FE8AF405D0ED3829E084D2D2D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 66B8F5758E6F90E16807A85C003CE61F; remoteInfo = "React-Codegen"; }; F82661C856CFC4537BC562D480B0745F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C050E11C4409D3BFAE9CC219C4D6195; remoteInfo = "React-debug"; }; F9EAF1F1FB5D7937A895952B6DC44E2C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; FA61B1CBE12C5E6B493717A35DCAC02E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EC55D52694092A9D0E6A78EB01207EB5; remoteInfo = "RCT-Folly"; }; FB5D5685F38BF27A4A50D156889136B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; FC6FA740B07F549C508BFDF59462093D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; FCFB21480542CCDF3413834C2D79C0C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 083B602EA19B4AD50EC53C0602F29A7D; remoteInfo = "React-logger"; }; FE1420DC552A75EB281D3E84CA466A96 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1E2583679398CB5F4D2B3272E9B198F; remoteInfo = "React-perflogger"; }; FE15B6EE25FDCF10BE7095256D053D75 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A5E93F38E96B3A37575BEC88AD69AE85; remoteInfo = "React-FabricImage"; }; FE3B276DC9F6BE63ACFEBDDE0FC16DEA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4BDD270EACFE5730793AEF0B9BCCBA31; remoteInfo = "React-graphics"; }; FE8F2CB304E07FDAD18F6B92924C58C0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; FED80D2E46769763C5739E2DA56C4340 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 28CE447E6F9C5F0EECC0CDD607D06A24; remoteInfo = "React-featureflags"; }; FEEBE7070BF647FB6130AFBC699EDA46 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; FEFEC4A876DE93DA3E16A9AB06227889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; FEFEF086D7B146B96B992081E8C52CA3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; FF35B4A5726139AAB006E9EE7C4A644B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; FF6DE5A6963902391657FC083B9682A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; FFFED8AC52E33B03563EFCEEEFF2513C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 30621D5A9764AC0BD9D02E87B2EA6665; remoteInfo = "React-utils"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 002E6C786A97F7958FC7E860BB5B4D1D /* RCTParserUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTParserUtils.h; sourceTree = ""; }; 003FB8B8AF1CBB8E2E7A70E7564183A5 /* React-cxxreact-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-cxxreact-dummy.m"; sourceTree = ""; }; 005EE10ECBC2C2E6ED007588CF1B3163 /* JSIndexedRAMBundle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSIndexedRAMBundle.h; sourceTree = ""; }; 0096A03750976681A81FDECEB7A7D8BE /* RCTConvert+Text.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTConvert+Text.mm"; sourceTree = ""; }; 00A22970BA931D4D5E31AD98D11E9EAC /* SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRWebSocket.m; path = SocketRocket/SRWebSocket.m; sourceTree = ""; }; 00C9C239F8FE3A38880888D537B1808F /* AsynchronousEventBeat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AsynchronousEventBeat.h; path = react/renderer/scheduler/AsynchronousEventBeat.h; sourceTree = ""; }; 00D0EC9AE90BED5D79B9CAE98DAE902E /* PlatformColorParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PlatformColorParser.h; sourceTree = ""; }; 00F247CF24ECD2EFFF35AC12E91E6FE7 /* Pods-WatermelonTester-WatermelonTesterTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-WatermelonTester-WatermelonTesterTests-dummy.m"; sourceTree = ""; }; 0101C2B932AED7971A900220D55C0B86 /* Futex-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Futex-inl.h"; path = "folly/detail/Futex-inl.h"; sourceTree = ""; }; 0105FEC655FAF723FA2D179AFF610513 /* React-RCTLinking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTLinking-dummy.m"; sourceTree = ""; }; 012CC3CCEDDC11E02851DBC088F9B7A2 /* RCTImageComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageComponentView.mm; sourceTree = ""; }; 012EABDBEA471F999B6DA0663BE3C7BC /* React-Core.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-Core.modulemap"; sourceTree = ""; }; 0146BE1DD8D87E794B0CFD58725CC02C /* glog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = glog.debug.xcconfig; sourceTree = ""; }; 017AAA982C6D59AF8E6BE61915541DEC /* RCTActivityIndicatorViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorViewManager.h; sourceTree = ""; }; 019948FE306C2A476268E8F263EA2122 /* RCTImageBlurUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageBlurUtils.h; path = Libraries/Image/RCTImageBlurUtils.h; sourceTree = ""; }; 019F5B5B17C82713C4D6098E01A6E634 /* HermesInstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HermesInstance.h; path = hermes/HermesInstance.h; sourceTree = ""; }; 020982AF78C5E396F3E5F3B1DAB98A95 /* MapBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = MapBuffer.cpp; path = react/renderer/mapbuffer/MapBuffer.cpp; sourceTree = ""; }; 026CCB0609AA0FC063D3220DE6C274D7 /* React-featureflags.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-featureflags.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 02AB5D40CC6820F70D656AA73BEA1C64 /* logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = logging.h; path = src/glog/logging.h; sourceTree = ""; }; 02E1E7FDCE905C0071E5B85EDEE735B7 /* RWSpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RWSpinLock.h; path = folly/RWSpinLock.h; sourceTree = ""; }; 0314883711F418F964E23FC8DC255846 /* RCTDiffClampAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDiffClampAnimatedNode.mm; sourceTree = ""; }; 032ED6B89EEB973216298316E5766563 /* RCTManagedPointer.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTManagedPointer.mm; sourceTree = ""; }; 033B1F5C19B781492F29A47DA4EFD3A4 /* RCTModulesConformingToProtocolsProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModulesConformingToProtocolsProvider.h; sourceTree = ""; }; 0349E57AC52849B1E2956F92F2F74D82 /* RCTInspector.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInspector.mm; sourceTree = ""; }; 034CBF9A353EFD13BB30389694CD06AF /* RCTSurfacePresenterStub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfacePresenterStub.h; sourceTree = ""; }; 035C4CAE603317412DE18DE1D8300A94 /* stop_watch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stop_watch.h; path = folly/stop_watch.h; sourceTree = ""; }; 036EB421B5324C4C8F2FEE1BF08B8194 /* Range.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Range.h; path = folly/Range.h; sourceTree = ""; }; 03AD611B7986C5B131631A16A6DD5262 /* RCTPackagerConnection.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPackagerConnection.mm; sourceTree = ""; }; 03C08820B4F8B692940FAF14B621C83F /* MemoryMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MemoryMapping.h; path = folly/system/MemoryMapping.h; sourceTree = ""; }; 03DD688F3EE201B455FF2DD77C7D1A1E /* RCTLinkingPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLinkingPlugins.mm; sourceTree = ""; }; 03ED5FB48027087AD3888234008E8F67 /* Pods-WatermelonTester-WatermelonTesterTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-WatermelonTester-WatermelonTesterTests-resources.sh"; sourceTree = ""; }; 04160B32874923084312A1D40F4703C3 /* RCTLegacyUIManagerConstantsProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLegacyUIManagerConstantsProvider.h; path = ReactCommon/RCTLegacyUIManagerConstantsProvider.h; sourceTree = ""; }; 04308B32F6B6A66B18A8BFB8D050CD14 /* TextLayoutManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextLayoutManager.h; sourceTree = ""; }; 0467EB815B94E64E6883C328F1F0F5BA /* RCTImageLoaderLoggable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoaderLoggable.h; path = Libraries/Image/RCTImageLoaderLoggable.h; sourceTree = ""; }; 047508626E4450B1D2FB80B3358F97F6 /* React-ImageManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-ImageManager.release.xcconfig"; sourceTree = ""; }; 051EC8684B270AADB5DFA351ABA355C2 /* RCTSurfacePresenterStub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfacePresenterStub.m; sourceTree = ""; }; 0575009F97CFBDB1867FBAA80648479B /* RCTLegacyUIManagerConstantsProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTLegacyUIManagerConstantsProvider.mm; path = ReactCommon/RCTLegacyUIManagerConstantsProvider.mm; sourceTree = ""; }; 0585010DB2257C8B62F3B1BE51449BDA /* SocketRocket-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SocketRocket-dummy.m"; sourceTree = ""; }; 05A8338A74887E54877E3B5E2360A93D /* ConcreteComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcreteComponentDescriptor.h; path = react/renderer/core/ConcreteComponentDescriptor.h; sourceTree = ""; }; 05CAC01452155CC5956412107FDEDDAD /* Try.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Try.h; path = folly/Try.h; sourceTree = ""; }; 05CEFC84AD6E69D2E073A1A739700477 /* RCTFabricComponentsPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFabricComponentsPlugins.h; sourceTree = ""; }; 05DBC9C72F0FBD718ED0DED3984CE795 /* LegacyViewManagerInteropState.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = LegacyViewManagerInteropState.mm; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.mm; sourceTree = ""; }; 05E7D2C113326591CAF18117371EEF7E /* LayoutMetrics.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LayoutMetrics.cpp; path = react/renderer/core/LayoutMetrics.cpp; sourceTree = ""; }; 0622E264BBCF6697F9CA2A6775362A8F /* PlatformColorParser.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = PlatformColorParser.mm; sourceTree = ""; }; 066367DE103F744E9A009FA7A06E7F87 /* VirtualExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VirtualExecutor.h; path = folly/VirtualExecutor.h; sourceTree = ""; }; 068DB205A59C74E3480D49B43B734439 /* protocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = protocol.h; path = folly/functional/protocol.h; sourceTree = ""; }; 0696F27878C985C7F2D9DBBD0BA700E5 /* RCTSettingsManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSettingsManager.mm; sourceTree = ""; }; 06A12441B1C3D7A2CB937C85CAF45CCE /* RCTImageView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageView.mm; sourceTree = ""; }; 06AB36FC020F2569C74A4684B6B4CD49 /* RCTImageSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageSource.m; sourceTree = ""; }; 06E34251980A9A80A1D27297F3B60B98 /* ImageResponse.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageResponse.cpp; path = react/renderer/imagemanager/ImageResponse.cpp; sourceTree = ""; }; 06E5E1100A0E21FAB430C3718568BD64 /* ErrorUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ErrorUtils.h; sourceTree = ""; }; 070773F376061291576F78B4FAA81792 /* RCTShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTShadowView.h; sourceTree = ""; }; 071916D0DED7AE1D3E16FC6FEF5AEFAD /* Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Transform.h; sourceTree = ""; }; 07248FECF4EA760047A9A71945D1E7E2 /* RCTPropsAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPropsAnimatedNode.h; sourceTree = ""; }; 07319E2772F29181135D234449AFFC14 /* React-featureflags.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-featureflags.modulemap"; sourceTree = ""; }; 0741545417754F6F394479EDADE0B5F6 /* RCTTypedModuleConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTypedModuleConstants.h; sourceTree = ""; }; 07A90696C4EB8690ED661E5470ECC1C5 /* RCTRawTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRawTextViewManager.h; sourceTree = ""; }; 07AE3DB6F5EB2B92FE81A1B8A4CE6BE8 /* RCTDeprecation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTDeprecation.release.xcconfig; sourceTree = ""; }; 07BDDD0C6666F54BB37E72A8F733FB50 /* NetOpsDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NetOpsDispatcher.h; path = folly/net/NetOpsDispatcher.h; sourceTree = ""; }; 07C2F40D8790521504B9C05E652B31DE /* EventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventEmitter.cpp; path = react/renderer/core/EventEmitter.cpp; sourceTree = ""; }; 080F0694AFBEBB45493A735532A9B8F8 /* RCTCxxMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxMethod.h; sourceTree = ""; }; 0810AA4CE6F716164879BBA08BF3EDCC /* ReactCommon-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactCommon-prefix.pch"; sourceTree = ""; }; 081F794580583CC4DFEB6D2CF2DF3D3D /* ComponentDescriptorProviderRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentDescriptorProviderRegistry.cpp; path = react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp; sourceTree = ""; }; 0829B215BF56AF5014B3A1F4D600D8D5 /* RCTVibrationPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVibrationPlugins.h; path = Libraries/Vibration/RCTVibrationPlugins.h; sourceTree = ""; }; 0834C175FB5FEC893A25F29A77A057B6 /* SourceLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SourceLocation.h; path = folly/portability/SourceLocation.h; sourceTree = ""; }; 0838EA9EBC4E14FB79309CD7604BB3EE /* RCTTextInputUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextInputUtils.h; sourceTree = ""; }; 08986599EA9FB16EDB0C58CAC0A405F8 /* printf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = printf.h; path = include/fmt/printf.h; sourceTree = ""; }; 089961A4AC420F0D1B51AF0717493120 /* React-RCTAnimation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTAnimation-dummy.m"; sourceTree = ""; }; 08A72E0FF2CF1B17D479A7069A5C1123 /* RCTSourceCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSourceCode.h; path = React/CoreModules/RCTSourceCode.h; sourceTree = ""; }; 090C56DE791731685F76F2010E681C1E /* LegacyUIManagerConstantsProviderBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LegacyUIManagerConstantsProviderBinding.h; sourceTree = ""; }; 092DBE2F0CE18725FF1B0C8D08B1147C /* RCTGIFImageDecoder.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTGIFImageDecoder.mm; sourceTree = ""; }; 0991F79F05F020ABEA8DE3AFD72A7B08 /* Database.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Database.h; sourceTree = ""; }; 099CB5926F7A7C10C82306F50F31CAE7 /* HazptrDomain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrDomain.h; path = folly/synchronization/HazptrDomain.h; sourceTree = ""; }; 09CACB20A3D99F350BE5A1565F4ACA67 /* MountingCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MountingCoordinator.h; path = react/renderer/mounting/MountingCoordinator.h; sourceTree = ""; }; 09E3B1D3DA53A6062C5B417F4010FF1D /* React-RCTActionSheet.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTActionSheet.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 0A05EEA6DE2EF6E728D7085041633AFA /* RCTTextShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextShadowView.mm; sourceTree = ""; }; 0A190A345B19C93427A45B7A6CC52FDF /* DatabasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DatabasePlatform.h; sourceTree = ""; }; 0A801C14BFA125ACB2E474AAFB4B2D03 /* RCTAdditionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAdditionAnimatedNode.h; sourceTree = ""; }; 0AA655BCC979429F0F18E3B0FA7422BD /* ParagraphShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphShadowNode.h; path = react/renderer/components/text/ParagraphShadowNode.h; sourceTree = ""; }; 0AB45FDFADEB5035DFD513D71DB737DC /* React-featureflags.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-featureflags.debug.xcconfig"; sourceTree = ""; }; 0ACDA1105A253290970D63F1EB10F574 /* Errata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Errata.h; sourceTree = ""; }; 0AD8F1840702844270F2F2AB1CEEAE08 /* React-RCTLinking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTLinking-prefix.pch"; sourceTree = ""; }; 0B38F938F0F9868A60309B113ECB3CAA /* RCTFontUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFontUtils.mm; sourceTree = ""; }; 0B87A884215B67C149F379E4B4E20F8A /* SRConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRConstants.h; path = SocketRocket/Internal/SRConstants.h; sourceTree = ""; }; 0BB0E5875A31D5E8CDCEA86F5A67276E /* Time.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Time.h; path = folly/portability/Time.h; sourceTree = ""; }; 0BD79853D3326455B2119D890DC49815 /* MapBufferBuilder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = MapBufferBuilder.cpp; path = react/renderer/mapbuffer/MapBufferBuilder.cpp; sourceTree = ""; }; 0BD7AC8D29513BC50E69DFF8F4FD5522 /* react_native_log.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = react_native_log.cpp; sourceTree = ""; }; 0BE37755D7657BED9301FBB569B8B3F9 /* AsyncDebuggerAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AsyncDebuggerAPI.h; path = destroot/include/hermes/AsyncDebuggerAPI.h; sourceTree = ""; }; 0BEE9CFB3C6827C1D888BAFC061BB79A /* ShadowTreeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowTreeDelegate.h; path = react/renderer/mounting/ShadowTreeDelegate.h; sourceTree = ""; }; 0BFAD875BDFCB017A45CCF7A1AD8AE34 /* boost.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = boost.debug.xcconfig; sourceTree = ""; }; 0BFB85B76F6C2F9809214837BFA1F944 /* bignum.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = bignum.cc; path = "double-conversion/bignum.cc"; sourceTree = ""; }; 0C0FFE3B52F5FC5B9E85936F71606010 /* TimeoutQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TimeoutQueue.h; path = folly/TimeoutQueue.h; sourceTree = ""; }; 0C2BC45457F7B7889204A04BE2584DDE /* RCTAppDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAppDelegate.h; sourceTree = ""; }; 0C4FC7D25DF3E8899A55391A2FBA5740 /* RCTLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayout.m; sourceTree = ""; }; 0C6723FFC2422C5B1BE0FFFF1B17CC36 /* RCT-Folly.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "RCT-Folly.modulemap"; sourceTree = ""; }; 0C73DEF93EB855958CC048BCB076258B /* AtomicHashArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicHashArray.h; path = folly/AtomicHashArray.h; sourceTree = ""; }; 0C81656E6394B680E495643EDC27FC6E /* Assume.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Assume.h; path = folly/lang/Assume.h; sourceTree = ""; }; 0C867898C76A4282B23A18DB01393712 /* RawPropsKey.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawPropsKey.cpp; path = react/renderer/core/RawPropsKey.cpp; sourceTree = ""; }; 0C8868803CE5E240AD3BBEBB15555C0F /* UnrollUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnrollUtils.h; path = folly/detail/UnrollUtils.h; sourceTree = ""; }; 0C897CCFDE4BF7130CDDA0286B966FDB /* SafeAreaViewComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SafeAreaViewComponentDescriptor.h; path = react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h; sourceTree = ""; }; 0C8E237AA818FABF9B7C6CDB03FA448A /* RCTTiming.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTiming.mm; sourceTree = ""; }; 0CBCEC21A3A50591C487CAFD8DCF2CED /* View.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = View.h; path = folly/container/View.h; sourceTree = ""; }; 0CD4200922C77CCA406FFAC67124F437 /* RCTSurfaceHostingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingView.h; sourceTree = ""; }; 0D01E2CE505FD137C83D5A00A839D8B9 /* React-jsitracing.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsitracing.debug.xcconfig"; sourceTree = ""; }; 0D107AF1088C433FC9328FB083C1609A /* FmtCompile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FmtCompile.h; path = folly/portability/FmtCompile.h; sourceTree = ""; }; 0D1AF6F139CF74E2FE8BDA319FFEE74E /* ParkingLot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParkingLot.h; path = folly/synchronization/ParkingLot.h; sourceTree = ""; }; 0D6609F1FFDAA711D16BE1CBBFCEF19C /* MapUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MapUtil.h; path = folly/MapUtil.h; sourceTree = ""; }; 0D6775356C3C08E3F8AEEA4E5D9A9A05 /* BaseTextShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BaseTextShadowNode.h; path = react/renderer/components/text/BaseTextShadowNode.h; sourceTree = ""; }; 0D7CB8AC94086CDE9ABBF0A55442AE9F /* LegacyViewManagerInteropViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LegacyViewManagerInteropViewProps.h; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h; sourceTree = ""; }; 0D8FEE5EFC0D5C3452E4502887D2D780 /* RCTBorderStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderStyle.h; sourceTree = ""; }; 0D9123036D19728374029B1BD6567BA8 /* PixelGrid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PixelGrid.cpp; sourceTree = ""; }; 0DE9029B11C02C40098A6D686789D830 /* RCTRefreshControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControlManager.h; sourceTree = ""; }; 0DE9453C0D97B2C7CCEC65A7D9965FF8 /* RCTInputAccessoryContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryContentView.h; sourceTree = ""; }; 0DF430B965D7F43DCCD92803B07AD0F7 /* JSBundleType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSBundleType.h; sourceTree = ""; }; 0DFF996F36C36E3B8BE3131F1026090F /* SRError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRError.m; path = SocketRocket/Internal/Utilities/SRError.m; sourceTree = ""; }; 0E07224933F2530B0ADD76E3867C3FA8 /* React-Codegen-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Codegen-prefix.pch"; sourceTree = ""; }; 0E27D0C1422F9594DB63A196340A1C0E /* RCTURLRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestHandler.h; sourceTree = ""; }; 0E432DBE0F06DDCE804C5D453ED121C3 /* HostPlatformViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HostPlatformViewProps.h; sourceTree = ""; }; 0E4412A2483337D140CD540D4751F2FB /* AtomicLinkedList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicLinkedList.h; path = folly/AtomicLinkedList.h; sourceTree = ""; }; 0E46F0129DD1A6A967F2580EB63011DB /* EventDispatcher.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventDispatcher.cpp; path = react/renderer/core/EventDispatcher.cpp; sourceTree = ""; }; 0E8EF1F55FE2016CDA7B786F01C8882E /* PerfScoped.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PerfScoped.h; path = folly/detail/PerfScoped.h; sourceTree = ""; }; 0E956492B6B4F762B69C00A6496D5AD0 /* Malloc.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Malloc.cpp; path = folly/portability/Malloc.cpp; sourceTree = ""; }; 0E9B6C8F56601C7A8963DC42032FDCD4 /* RCTRootContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = ""; }; 0EAB4DE45806E1FB41C909B6AE2B53C2 /* RCTRedBoxSetEnabled.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRedBoxSetEnabled.h; sourceTree = ""; }; 0EAE4B2A9C96F883E85714C869494F81 /* Gutter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Gutter.h; sourceTree = ""; }; 0EB25BDE8A306950B650A09F1A8ED625 /* React-logger.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-logger.debug.xcconfig"; sourceTree = ""; }; 0EBD024CC0AC3DC8897152BE3FB46E12 /* UIManagerMountHook.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManagerMountHook.h; path = react/renderer/uimanager/UIManagerMountHook.h; sourceTree = ""; }; 0EE4437365F516793455723C0F9555B1 /* RCTViewUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTViewUtils.h; sourceTree = ""; }; 0EE92B6EF155BE970721A6B2647F4AF4 /* F14Set-fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "F14Set-fwd.h"; path = "folly/container/F14Set-fwd.h"; sourceTree = ""; }; 0EEA744CEB6248472C8D4DCFAB2E718C /* React-Mapbuffer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-Mapbuffer-dummy.m"; sourceTree = ""; }; 0F403305468DF1F3BDD4EB48076E71DC /* el.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = el.lproj; path = React/I18n/strings/el.lproj; sourceTree = ""; }; 0F4162FD06F15F97900434A78640AA96 /* RCTTextSelection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextSelection.h; sourceTree = ""; }; 0F5B11863A62393419B2A19ECDD56569 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h; sourceTree = ""; }; 0F6E474235C8459CDC4689EE8FA90735 /* LeakChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LeakChecker.h; path = react/renderer/leakchecker/LeakChecker.h; sourceTree = ""; }; 0F8273DFC8BCEB15B1ACE7AA5FB60DFA /* TimerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TimerManager.h; sourceTree = ""; }; 0F9298A1BC8933244F1905CC7B380EA1 /* RCTBridge+Inspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTBridge+Inspector.h"; sourceTree = ""; }; 0FB451B2BE52BDDEC46C0D989282A4A7 /* RCTHermesInstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTHermesInstance.h; path = ReactCommon/RCTHermesInstance.h; sourceTree = ""; }; 0FD37A9A693B3CEB099DDA9955E3C67F /* ValueUnit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ValueUnit.h; sourceTree = ""; }; 0FE5FBB2B14D4BC374CECD01A71C50C3 /* WatermelonDB.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = WatermelonDB.debug.xcconfig; sourceTree = ""; }; 102110A5E77C7808CB1EAFF9A4489E0B /* InstanceAgent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InstanceAgent.cpp; sourceTree = ""; }; 106A05F0520EFBA0E22815812BDA18F5 /* ReactCommon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ReactCommon.debug.xcconfig; sourceTree = ""; }; 108A53F43BD5185295474605F7659C5C /* React-RCTNetwork-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTNetwork-prefix.pch"; sourceTree = ""; }; 109F9C2934C9D047C914A988E8DFBBA6 /* RCTAnimationDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimationDriver.h; sourceTree = ""; }; 10CFAB7D8A0F2282F1390473E5C37F0A /* InputAccessoryShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = InputAccessoryShadowNode.cpp; path = react/renderer/components/inputaccessory/InputAccessoryShadowNode.cpp; sourceTree = ""; }; 10CFD843724D42F53E4373E441FD4EBB /* hash_combine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hash_combine.h; sourceTree = ""; }; 10F169E67E9F6AF9D77C49B765487E70 /* Arena.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Arena.h; path = folly/memory/Arena.h; sourceTree = ""; }; 11168BD52EB1FA983258A217EBF918E9 /* SRURLUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRURLUtilities.h; path = SocketRocket/Internal/Utilities/SRURLUtilities.h; sourceTree = ""; }; 1147DF7D7F05EA4A85F3A1FF854A3B85 /* RCTDeprecation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTDeprecation-umbrella.h"; sourceTree = ""; }; 11570ADC72BE55D73F846D94EDF7C249 /* React-NativeModulesApple-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-NativeModulesApple-prefix.pch"; sourceTree = ""; }; 119AE002F412B1467B684F7738048356 /* EvictingCacheMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EvictingCacheMap.h; path = folly/container/EvictingCacheMap.h; sourceTree = ""; }; 11B65C1CE4591582924CEE6C134FDC1D /* ScrollViewState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollViewState.cpp; path = react/renderer/components/scrollview/ScrollViewState.cpp; sourceTree = ""; }; 11C43FEC006F4FB4810E35B57EDCC84B /* SharedMutex.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SharedMutex.cpp; path = folly/SharedMutex.cpp; sourceTree = ""; }; 11F2C5264D76056FDC6FDCEE75FEEE82 /* ParagraphShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphShadowNode.cpp; path = react/renderer/components/text/ParagraphShadowNode.cpp; sourceTree = ""; }; 11F7F6FA2445CB7E109866B0BE0CC3E6 /* RCTInputAccessoryViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewManager.h; sourceTree = ""; }; 11FCAB3F234C2F7A1E00B43655EF0707 /* React-RCTVibration.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTVibration.release.xcconfig"; sourceTree = ""; }; 125AE03965ABF8E4C157E9FE3A55D187 /* React-jsi-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsi-umbrella.h"; sourceTree = ""; }; 1260781BA130D5E430412D17AA9CF321 /* MaybeManagedPtr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MaybeManagedPtr.h; path = folly/MaybeManagedPtr.h; sourceTree = ""; }; 126C5DD1D6213610884F84302374D19F /* JSIInstaller.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = JSIInstaller.mm; sourceTree = ""; }; 128F50FE92E188CCCF4F6F5CFB09C64F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 12A7093733E6C2A1819EAFD7B6275C0B /* JsErrorHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JsErrorHandler.h; sourceTree = ""; }; 12B4501A9455AFB01AA0089214B8A38D /* React-jsi.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsi.release.xcconfig"; sourceTree = ""; }; 12BBC4125F0A832B58555EA01B639783 /* RCTLinkingManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLinkingManager.mm; sourceTree = ""; }; 12BF91C85904FD8BA917DDBF03ECCC1D /* SimdForEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SimdForEach.h; path = folly/detail/SimdForEach.h; sourceTree = ""; }; 12C4D9C3A09316945470A899D769DF18 /* BatchedEventQueue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BatchedEventQueue.cpp; path = react/renderer/core/BatchedEventQueue.cpp; sourceTree = ""; }; 12C530B1088E418C923CD9F26CBCAB6F /* InputAccessoryComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = InputAccessoryComponentDescriptor.h; path = react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h; sourceTree = ""; }; 12F4585D8579A5039D742D7E3913D0B6 /* RCTImageResponseDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageResponseDelegate.h; path = Fabric/RCTImageResponseDelegate.h; sourceTree = ""; }; 130677CC93E00689A413DE1C5D45754D /* F14Policy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Policy.h; path = folly/container/detail/F14Policy.h; sourceTree = ""; }; 132132CB707C71FA5E68A7BB06EE4804 /* CoreFeatures.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CoreFeatures.cpp; sourceTree = ""; }; 1338B219849CEDF7FE7D3407E9663E27 /* React-ImageManager.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-ImageManager.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 1340E22099179F463C3487BAB8420980 /* jsi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = jsi.cpp; sourceTree = ""; }; 1363975620BCD9B8C433172AE2F17F0F /* React-hermes-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-hermes-dummy.m"; sourceTree = ""; }; 1371AFE6C3E17A03757544B99B0C563C /* RCTBlobManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBlobManager.mm; sourceTree = ""; }; 137A31E381AB4AA534731ED6AF105636 /* React-rendererdebug-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-rendererdebug-dummy.m"; sourceTree = ""; }; 1381503C42FFF460E946860A32A6F981 /* React-RuntimeApple */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RuntimeApple"; path = "libReact-RuntimeApple.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 13A1EDC09A69ED3292AAE26A206851F9 /* RCTModuleData.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModuleData.mm; sourceTree = ""; }; 13A658922FD40E29EEAB7D23E4D3A2BD /* RCTAppearance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAppearance.h; path = React/CoreModules/RCTAppearance.h; sourceTree = ""; }; 13DDAD72F9C7DC4D814F4D340784ECEB /* AtomicUnorderedMapUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicUnorderedMapUtils.h; path = folly/detail/AtomicUnorderedMapUtils.h; sourceTree = ""; }; 13E6AE2DFCC178D3B20D130A2FA35FAC /* RootProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RootProps.h; path = react/renderer/components/root/RootProps.h; sourceTree = ""; }; 13EBFD759F626BF0B8380604322D2E84 /* CxxTurboModuleUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CxxTurboModuleUtils.h; path = react/nativemodule/core/ReactCommon/CxxTurboModuleUtils.h; sourceTree = ""; }; 13EEFF365502DE9E6776D22ADDDCE4A5 /* React-RCTImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTImage-prefix.pch"; sourceTree = ""; }; 145565A2AB5DD84BEAFA27EAFA2F4141 /* BridgelessNativeMethodCallInvoker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = BridgelessNativeMethodCallInvoker.cpp; sourceTree = ""; }; 14631AAC5EAA775CD7C68A1D2E2D51C0 /* RCTLocalAssetImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLocalAssetImageLoader.h; path = Libraries/Image/RCTLocalAssetImageLoader.h; sourceTree = ""; }; 14D9F600ECC14E962003AAB9F191233A /* YGPixelGrid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGPixelGrid.h; path = yoga/YGPixelGrid.h; sourceTree = ""; }; 1528B7D498ED533635A7109CF11814AC /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/components/view/conversions.h; sourceTree = ""; }; 1544C565704FC17B15EBCF4F926F4C60 /* React-jsiexecutor.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsiexecutor.debug.xcconfig"; sourceTree = ""; }; 157BEE76ABB5FC023F974602BC587B8A /* React-Fabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Fabric.debug.xcconfig"; sourceTree = ""; }; 1598F75BEAFDD5C3F7AD8DCDD6D5D2C4 /* ShadowNodeFragment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowNodeFragment.h; path = react/renderer/core/ShadowNodeFragment.h; sourceTree = ""; }; 159A07D2F149809ABC30E5FCBB89938F /* RCTSettingsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSettingsManager.h; path = Libraries/Settings/RCTSettingsManager.h; sourceTree = ""; }; 15AD43283A6A2C9FC3B3AFE6DCF2E636 /* RCTMultilineTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultilineTextInputView.h; sourceTree = ""; }; 15D526144725A1A4158A2B28A0B914E5 /* NSRunLoop+SRWebSocketPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSRunLoop+SRWebSocketPrivate.h"; path = "SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h"; sourceTree = ""; }; 15D5A0BFD941071680CCF747591837C8 /* UIView+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+Private.h"; sourceTree = ""; }; 15E1BE174AEA123290CA37B86EFDD5F2 /* RCTWebSocketModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTWebSocketModule.h; path = React/CoreModules/RCTWebSocketModule.h; sourceTree = ""; }; 15E1FB248EB6C077E99CE7C0E381D4FC /* React-debug-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-debug-prefix.pch"; sourceTree = ""; }; 163349EF8EF0ABE776CEB5D5A72C377A /* RCTImageDataDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageDataDecoder.h; path = Libraries/Image/RCTImageDataDecoder.h; sourceTree = ""; }; 163CDA479246FA5F4CF5C7949B3FC9F7 /* Fingerprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fingerprint.h; path = folly/Fingerprint.h; sourceTree = ""; }; 166D6C41B0081CEA737676E813606B04 /* RCTDevLoadingViewSetEnabled.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDevLoadingViewSetEnabled.h; sourceTree = ""; }; 169BFFC72EEA61E28D560B57CD831CD0 /* RCTTextTransform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTextTransform.h; path = Libraries/Text/RCTTextTransform.h; sourceTree = ""; }; 16ADA7CA003A807781299F67A1578DF4 /* RCTAnimationUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAnimationUtils.h; path = Libraries/NativeAnimation/RCTAnimationUtils.h; sourceTree = ""; }; 16AFB3F99F57DB5AEF193C3CB1BC1A49 /* RCTNativeAnimatedModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNativeAnimatedModule.h; path = Libraries/NativeAnimation/RCTNativeAnimatedModule.h; sourceTree = ""; }; 16BD9C5268EF8F747D73A1B1E9C395CD /* Stdio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Stdio.h; path = folly/portability/Stdio.h; sourceTree = ""; }; 16E3111070B2202E4E59A2EB4AAF55A9 /* threadsafe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = threadsafe.h; path = jsi/threadsafe.h; sourceTree = ""; }; 16F3181ABDCFFB13D360DA6C3047FC89 /* RCTInstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTInstance.h; path = ReactCommon/RCTInstance.h; sourceTree = ""; }; 1731535F9FF01DC7DE5758D88594F0CD /* args.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = args.h; path = include/fmt/args.h; sourceTree = ""; }; 173353D36092C2DD008D22FDEA5C21AC /* F14IntrinsicsAvailability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14IntrinsicsAvailability.h; path = folly/container/detail/F14IntrinsicsAvailability.h; sourceTree = ""; }; 1749F4295539F83F4BA4637FE2C39F34 /* RCTUIManagerUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerUtils.m; sourceTree = ""; }; 17A0B50A888B86A9F608EBDAB0EA9B29 /* React-callinvoker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-callinvoker.debug.xcconfig"; sourceTree = ""; }; 17E08D0C97050157936C9ACE4FAF61CA /* ScrollViewEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollViewEventEmitter.cpp; path = react/renderer/components/scrollview/ScrollViewEventEmitter.cpp; sourceTree = ""; }; 181D4079537F9E8B578405C805CEE545 /* RCTBlobManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTBlobManager.h; path = Libraries/Blob/RCTBlobManager.h; sourceTree = ""; }; 182071DF4FF23AD36C90547CC9C960E3 /* SpookyHashV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpookyHashV1.h; path = folly/hash/SpookyHashV1.h; sourceTree = ""; }; 182B0C702A35C8585E02CD20E58ABF79 /* RCTCxxConvert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTCxxConvert.m; sourceTree = ""; }; 1841AD95444E2505711CA1DEE133B7F8 /* ThrottledLifoSem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThrottledLifoSem.h; path = folly/synchronization/ThrottledLifoSem.h; sourceTree = ""; }; 18590B13A8701CBEA8A9383645C889B3 /* RCTDivisionAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDivisionAnimatedNode.mm; sourceTree = ""; }; 189A7A88790E4B177BFC5728470F1A12 /* React-RCTText.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTText.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 18B4341AA7547FF0A90E6BC28D6C448F /* UnstableLegacyViewManagerAutomaticShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnstableLegacyViewManagerAutomaticShadowNode.cpp; path = react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.cpp; sourceTree = ""; }; 18DA86D744EE0EE17E265BBB90390A23 /* RCTActivityIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorView.m; sourceTree = ""; }; 18E04C8FC9E54D8A00245F3E4B386C0E /* RCTTrackingAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTrackingAnimatedNode.h; sourceTree = ""; }; 18EF461AA27476D0FDF425B3D2483EBA /* ShadowNodeTraits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowNodeTraits.h; path = react/renderer/core/ShadowNodeTraits.h; sourceTree = ""; }; 19006C0042936BC7BC14B717FB85308A /* BaseViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BaseViewProps.h; path = react/renderer/components/view/BaseViewProps.h; sourceTree = ""; }; 191255608BFC29BB27805F33B002132B /* RCTView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTView.h; sourceTree = ""; }; 1936453FF2A7E3A13063C4917C4D5598 /* RCT-Folly */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "RCT-Folly"; path = "libRCT-Folly.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 193D60EE177645F7547D71A2810D872F /* ThreadSafetyAnalysis.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadSafetyAnalysis.h; path = destroot/include/hermes/ThreadSafetyAnalysis.h; sourceTree = ""; }; 194D194CCB89C075CEA29192C47A2A33 /* TelemetryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TelemetryController.h; path = react/renderer/mounting/TelemetryController.h; sourceTree = ""; }; 196B06D9D049A05D1552FD603A608719 /* RCTConvert+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+Transform.h"; sourceTree = ""; }; 19853EBFDCA4264503A59B9DBEDB47E4 /* RCTFontProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFontProperties.h; sourceTree = ""; }; 19CE4DC4612BEAACFA7B4D6EA7464CC4 /* RootComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RootComponentDescriptor.h; path = react/renderer/components/root/RootComponentDescriptor.h; sourceTree = ""; }; 19D4CF0857B96FBEA270CC2CD46B424F /* RawProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawProps.cpp; path = react/renderer/core/RawProps.cpp; sourceTree = ""; }; 1A2E8DDEAB65BA26685A7F1CE66A6C2B /* ThreadCachedInt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadCachedInt.h; path = folly/ThreadCachedInt.h; sourceTree = ""; }; 1A57B42E48BE086DEBC492BDE3BBD3C9 /* RCTDevMenu.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDevMenu.mm; sourceTree = ""; }; 1AA86F8B69827747B651178FB5B21A21 /* SizingMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SizingMode.h; sourceTree = ""; }; 1AB59CE368BC9400B2ABCD47AFB8C08C /* RawValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawValue.h; path = react/renderer/core/RawValue.h; sourceTree = ""; }; 1AB864487EEC16CB2CBD3A5CA275FCA1 /* Foreach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Foreach.h; path = folly/container/Foreach.h; sourceTree = ""; }; 1AD8831E19FF419852060A20EFC9943A /* React-nativeconfig.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-nativeconfig.debug.xcconfig"; sourceTree = ""; }; 1ADB11086CA7355EACB08F3BD428C0A9 /* EventLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventLogger.h; path = react/renderer/core/EventLogger.h; sourceTree = ""; }; 1AFB9A68F41FAA405A3AAE37295C10B3 /* ThreadCachedArena.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadCachedArena.h; path = folly/memory/ThreadCachedArena.h; sourceTree = ""; }; 1B14B05F1E3FA960A779224B96DBB041 /* UnbatchedEventQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnbatchedEventQueue.h; path = react/renderer/core/UnbatchedEventQueue.h; sourceTree = ""; }; 1B389CA633B6575A2FA37718B19A4756 /* RawEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawEvent.h; path = react/renderer/core/RawEvent.h; sourceTree = ""; }; 1B6371A9E6D76C16AD518CC288F335F4 /* jsilib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = jsilib.h; path = jsi/jsilib.h; sourceTree = ""; }; 1B644FFAD498B469A3633A360744C403 /* ContextContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ContextContainer.h; sourceTree = ""; }; 1B95AB0EF143A97263C1017EABE0E073 /* DebugStringConvertibleItem.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DebugStringConvertibleItem.cpp; sourceTree = ""; }; 1B9B081A11AD725344E711226D80CA4B /* RCTUIManagerObserverCoordinator.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUIManagerObserverCoordinator.mm; sourceTree = ""; }; 1BBB556BC44275845C988BDF27E10880 /* PicoSpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PicoSpinLock.h; path = folly/synchronization/PicoSpinLock.h; sourceTree = ""; }; 1BF78B5D7B2AFC98B3545C8C9DA66D16 /* RCTSurfaceView+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTSurfaceView+Internal.h"; sourceTree = ""; }; 1C2D3D50F94DAC3059E02150AEC13F5F /* SRRandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRandom.h; path = SocketRocket/Internal/Utilities/SRRandom.h; sourceTree = ""; }; 1C48A5DDAEDABFF1B422CC636928EFAD /* ShadowNodes.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowNodes.cpp; path = react/renderer/components/rncore/ShadowNodes.cpp; sourceTree = ""; }; 1C5225A85D60908066F79256FD961B24 /* YGNodeStyle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGNodeStyle.cpp; path = yoga/YGNodeStyle.cpp; sourceTree = ""; }; 1C6F2A8DD916FFABBB7924E8D417B7EC /* ScopeGuard.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScopeGuard.h; path = folly/ScopeGuard.h; sourceTree = ""; }; 1C7F9675F0DDF7D607F4527AEEA7CE9A /* PlatformTimerRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PlatformTimerRegistry.h; sourceTree = ""; }; 1C93DB36FA986D128CB97DE275C7A0B4 /* DistributedMutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DistributedMutex.h; path = folly/synchronization/DistributedMutex.h; sourceTree = ""; }; 1C9CA7D5550AD1D94A7AA763FBA17534 /* DoubleConversion.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DoubleConversion.release.xcconfig; sourceTree = ""; }; 1CB19BE6FA86208CB5F4A61FAACE298E /* WeightedEvictingCacheMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = WeightedEvictingCacheMap.h; path = folly/container/WeightedEvictingCacheMap.h; sourceTree = ""; }; 1CBBEDCDAA1BFA365580787F950200AD /* RCTJavaScriptLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTJavaScriptLoader.mm; sourceTree = ""; }; 1CEDA3FBCCC6D4495CE2BD141F7EA3B2 /* GLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GLog.h; path = folly/GLog.h; sourceTree = ""; }; 1D0F55A1CBF2A5D8A9F6B0B49A152959 /* NetOps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NetOps.h; path = folly/net/NetOps.h; sourceTree = ""; }; 1D12F92E6DE4195516C44922291730FB /* RuntimeScheduler_Modern.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeScheduler_Modern.cpp; sourceTree = ""; }; 1D239EA1163C5886418BBB97A80CD68C /* RCTUtilsUIOverride.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUtilsUIOverride.m; sourceTree = ""; }; 1D3B27D8E985D0BA1FD18A34437498E8 /* React-utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-utils-prefix.pch"; sourceTree = ""; }; 1D4F51217F7A23436A551FB1BF267D5C /* RCTDefaultCxxLogFunction.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDefaultCxxLogFunction.mm; sourceTree = ""; }; 1D68855FFC5514B5F5A3FD7EF50735D4 /* RCTSurfaceTouchHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSurfaceTouchHandler.mm; path = Fabric/RCTSurfaceTouchHandler.mm; sourceTree = ""; }; 1DA258A2CCF7FAA7A20EA853EAEA18AE /* ReactNativeVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactNativeVersion.h; sourceTree = ""; }; 1DC27EF5E8E8BA5F9132B0790BA1C022 /* RCTInputAccessoryView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryView.mm; sourceTree = ""; }; 1DC4F893B0788A2E9A80A4BD69265922 /* CPortability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CPortability.h; path = folly/CPortability.h; sourceTree = ""; }; 1DD6F27078A03BF0ED7DCF3591290691 /* Utility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Utility.h; path = folly/synchronization/Utility.h; sourceTree = ""; }; 1DEAC3AED56C9C3D215091D714CEC25C /* ViewPropsInterpolation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ViewPropsInterpolation.h; path = react/renderer/components/view/ViewPropsInterpolation.h; sourceTree = ""; }; 1E04881EDF02715BD6AC2C6ED3FBB37E /* React-rendererdebug */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-rendererdebug"; path = "libReact-rendererdebug.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E2EDFEA3A7670F7D6AB0267AFA7E2F1 /* Convert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Convert.h; path = react/bridging/Convert.h; sourceTree = ""; }; 1E649614D7644BF68C2F5D4CB3FBF8DC /* React-NativeModulesApple */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-NativeModulesApple"; path = "libReact-NativeModulesApple.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E7B7C0191645527408193552D9E40CF /* double-conversion.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "double-conversion.cc"; path = "double-conversion/double-conversion.cc"; sourceTree = ""; }; 1E8D7F44C4927699FE5FFB25997A96F8 /* React-RuntimeApple.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeApple.release.xcconfig"; sourceTree = ""; }; 1E9ACDD39D4A14DDC16406CDD0457ED3 /* AString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AString.h; path = react/bridging/AString.h; sourceTree = ""; }; 1EB0389666D3316FBF79F7AA176DAC97 /* RCTBlobPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBlobPlugins.h; sourceTree = ""; }; 1F2594C363D96114D88D6D3996A6AD08 /* ShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowNode.h; path = react/renderer/core/ShadowNode.h; sourceTree = ""; }; 1F4BF0D6B00930EFF4155DC9B790AFDD /* Baton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Baton.h; path = folly/synchronization/Baton.h; sourceTree = ""; }; 1FBF294CE17585A6CEAE66F34026AA0C /* PointerEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PointerEvent.h; path = react/renderer/components/view/PointerEvent.h; sourceTree = ""; }; 1FC9D5FE940DF4FC829E173DF00483AB /* UncaughtExceptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UncaughtExceptions.h; path = folly/lang/UncaughtExceptions.h; sourceTree = ""; }; 1FD672FEBEC49B42EEBB59B54F5CD143 /* LegacyViewManagerInteropComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LegacyViewManagerInteropComponentDescriptor.h; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h; sourceTree = ""; }; 2002DD4A0F6B3EB4DD29785216A66D9B /* Utility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Utility.h; path = folly/Utility.h; sourceTree = ""; }; 203BEC3028800526EBC07D8825427B33 /* RCTUIManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIManager.m; sourceTree = ""; }; 203F90BE1C271A4963AF8779D2AA90AE /* React-RuntimeHermes-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RuntimeHermes-prefix.pch"; sourceTree = ""; }; 207D72871056994F29476846F29AF947 /* PolyException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PolyException.h; path = folly/PolyException.h; sourceTree = ""; }; 20A766A5111A8B644D96FABB67848743 /* React-graphics-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-graphics-prefix.pch"; sourceTree = ""; }; 20D52A5CA3FEAAB624DD5FABD5F70EF4 /* LayoutAnimationCallbackWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutAnimationCallbackWrapper.h; path = react/renderer/animations/LayoutAnimationCallbackWrapper.h; sourceTree = ""; }; 20DB7A7891E6EF51C69DA252EF43EE25 /* SimpleThreadSafeCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SimpleThreadSafeCache.h; sourceTree = ""; }; 20FCC48835414C2B85BB6A73AECE0309 /* RCTInputAccessoryComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryComponentView.mm; sourceTree = ""; }; 20FF0CE1BB1AB7D514D968DD961923FA /* BitIteratorDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BitIteratorDetail.h; path = folly/container/detail/BitIteratorDetail.h; sourceTree = ""; }; 210ED618EB38145265ACDB75A78B11AB /* React-jsiexecutor.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsiexecutor.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 21754846DD83D3794B287A3D6BB4DA9C /* RCTBaseTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputViewManager.h; sourceTree = ""; }; 21CDEC81B1AACA4065BD3385AB630454 /* HazptrRec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrRec.h; path = folly/synchronization/HazptrRec.h; sourceTree = ""; }; 21E277EB0A609214CBB931D344238A64 /* RCTActivityIndicatorViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorViewComponentView.h; sourceTree = ""; }; 21EF07FFD2345957804DF019878563CF /* ShadowNodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowNodes.h; path = react/renderer/components/rncore/ShadowNodes.h; sourceTree = ""; }; 222FC254D773A0163299A97B210F3B1A /* RCTAnimationPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAnimationPlugins.mm; sourceTree = ""; }; 224F3D752D59D26136CB03C3D3C240F2 /* RCTDecayAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDecayAnimation.mm; sourceTree = ""; }; 229E898FFA1C9E93F86539379E9096C3 /* YogaEnums.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = YogaEnums.h; sourceTree = ""; }; 22A6AF9D5AAC8F547507F26CAC3BE8EA /* UnimplementedViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnimplementedViewShadowNode.h; path = react/renderer/components/unimplementedview/UnimplementedViewShadowNode.h; sourceTree = ""; }; 22B331FFC962649EE96FA4C6FF47CC23 /* rounding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rounding.h; sourceTree = ""; }; 22BBDCDC9E5BB7D47CB6C63BAD034B4B /* format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format.h; path = include/fmt/format.h; sourceTree = ""; }; 22BF4B17D357A3BD3840AF11EBE43257 /* AtomicStruct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicStruct.h; path = folly/synchronization/AtomicStruct.h; sourceTree = ""; }; 22F665521DA4A7B91AD3CDC51E8779D6 /* React-RuntimeCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeCore.debug.xcconfig"; sourceTree = ""; }; 232D444DA9A20C7509F589FFF2D7E4CF /* ThreadLocalDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadLocalDetail.h; path = folly/detail/ThreadLocalDetail.h; sourceTree = ""; }; 2362BA983B00A2A04C7C991889E743A5 /* RCTTouchableComponentViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTouchableComponentViewProtocol.h; path = Fabric/RCTTouchableComponentViewProtocol.h; sourceTree = ""; }; 23C5959A240F9A33D470E539FE162B9D /* DefaultKeepAliveExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DefaultKeepAliveExecutor.h; path = folly/DefaultKeepAliveExecutor.h; sourceTree = ""; }; 23DDF8148799041A2BF94450407CEBD2 /* RCTHTTPRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTHTTPRequestHandler.h; path = Libraries/Network/RCTHTTPRequestHandler.h; sourceTree = ""; }; 23F1171EF1ED7FAD36769DFA9AE002FD /* RCTUIImageViewAnimated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTUIImageViewAnimated.h; path = Libraries/Image/RCTUIImageViewAnimated.h; sourceTree = ""; }; 240A841CE45A01661CD44D4EE8B91BC5 /* JSIInstaller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSIInstaller.h; sourceTree = ""; }; 2415A1FAF902321B20BE9690DAF25F46 /* AttributedStringBox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AttributedStringBox.h; path = react/renderer/attributedstring/AttributedStringBox.h; sourceTree = ""; }; 2462C72B87ED90695E43B971F24B8FCF /* ExperimentalFeature.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ExperimentalFeature.h; sourceTree = ""; }; 2552D17D22931F4E3F05CF400B52A72D /* RecoverableError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RecoverableError.h; sourceTree = ""; }; 256EFD340D35D7E450AACBE294E874A8 /* Latch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Latch.h; path = folly/synchronization/Latch.h; sourceTree = ""; }; 2577F299FCB0A19824FE989BE77B8E8F /* React-jsinspector */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-jsinspector"; path = "libReact-jsinspector.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 258F35FF5ABDDEBA091F066B015EE1D9 /* RCTSurfaceRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootView.h; sourceTree = ""; }; 25984569AD3852F629F09301282C7769 /* RCTDevLoadingViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDevLoadingViewProtocol.h; sourceTree = ""; }; 25A59FDE9D2F710EAEE9BF60F424C713 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/components/scrollview/primitives.h; sourceTree = ""; }; 25A6D3EB52D98D8E0A7564596C8CE94A /* JSIndexedRAMBundle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JSIndexedRAMBundle.cpp; sourceTree = ""; }; 25B4E76DD481D3490220E28604E55673 /* DistributedMutex-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DistributedMutex-inl.h"; path = "folly/synchronization/DistributedMutex-inl.h"; sourceTree = ""; }; 25CB321AD79DD7DE8F00445FA9998552 /* RCTPerformanceLoggerLabels.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPerformanceLoggerLabels.h; sourceTree = ""; }; 25EBF2FA7FFEDCE7086F43F67F482A2C /* Geometry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Geometry.h; sourceTree = ""; }; 26055A5589650C9F928DD1BFF922B86B /* RCTAutoInsetsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAutoInsetsProtocol.h; sourceTree = ""; }; 2633DC101FF0E08FE241777B60154AEF /* ar.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ar.lproj; path = React/I18n/strings/ar.lproj; sourceTree = ""; }; 267039C69B6ECCDE54B5EF1AD931D1C0 /* fmt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "fmt-dummy.m"; sourceTree = ""; }; 26799F85A2F48699DF73E4A5B1EE067A /* ModalHostViewState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ModalHostViewState.h; path = react/renderer/components/modal/ModalHostViewState.h; sourceTree = ""; }; 26902E3757E5D682AFC6C628AF7BD7DD /* React-Fabric-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Fabric-umbrella.h"; sourceTree = ""; }; 269BE773C9482484B70949A40F4EA525 /* React-RCTSettings */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTSettings"; path = "libReact-RCTSettings.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 26A39561F9B37AA0AFE252734CC8891B /* React-Fabric.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-Fabric.modulemap"; sourceTree = ""; }; 26E19B9D750F023C6ABA23E46C660990 /* RCTImageViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageViewManager.mm; sourceTree = ""; }; 26F81C8DE0CC3E7649EDDFE8DFDED895 /* React-RCTFabric-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTFabric-prefix.pch"; sourceTree = ""; }; 271F7075A09B7F53F77295612BE17BE8 /* UIManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UIManager.cpp; path = react/renderer/uimanager/UIManager.cpp; sourceTree = ""; }; 2726901F064D66A4F014D07BB986BF67 /* React-RCTSettings-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTSettings-dummy.m"; sourceTree = ""; }; 2779D7D33AA6E41DCE7991AF63682C57 /* Poly.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Poly.h; path = folly/Poly.h; sourceTree = ""; }; 2782757DC9A193842FF73CDFEC4F5F65 /* ShadowNodeFamily.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowNodeFamily.cpp; path = react/renderer/core/ShadowNodeFamily.cpp; sourceTree = ""; }; 27D5B6E7F5A0D017C0081BAF95A9E8AF /* RCTActionSheetManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTActionSheetManager.mm; sourceTree = ""; }; 27DB05F6CB39113BE10AD3A747787E40 /* F14Set.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Set.h; path = folly/container/F14Set.h; sourceTree = ""; }; 27DE3F3B20B7CEFB975091316FFFB6CC /* StateUpdate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StateUpdate.h; path = react/renderer/core/StateUpdate.h; sourceTree = ""; }; 27F831318E526AEB0F7F8A65C1891EC5 /* YogaStylableProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YogaStylableProps.h; path = react/renderer/components/view/YogaStylableProps.h; sourceTree = ""; }; 28134A7E3E4CF5A0D60FE5E683407AAC /* MPMCQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MPMCQueue.h; path = folly/MPMCQueue.h; sourceTree = ""; }; 281DE643AC3EC1BC9357383486F2FB11 /* ConnectionDemux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ConnectionDemux.h; sourceTree = ""; }; 2837BF8ABDA1EC92282A5DF6381E0A27 /* Conv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Conv.h; path = folly/Conv.h; sourceTree = ""; }; 2845C7EA5A46AFE22DC6C82FA344FB15 /* SRConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRConstants.m; path = SocketRocket/Internal/SRConstants.m; sourceTree = ""; }; 285863D5864C49AC3FDF1567E1986DDB /* RCTSafeAreaViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewManager.h; sourceTree = ""; }; 285EDB99AD277EB30467D34D174D268F /* ImageState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageState.cpp; path = react/renderer/components/image/ImageState.cpp; sourceTree = ""; }; 287D6D149E8F946A10D3DCE0418FB1FC /* RCTComponentViewHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTComponentViewHelpers.h; path = react/renderer/components/scrollview/RCTComponentViewHelpers.h; sourceTree = ""; }; 2880387D5A0780F29656704977F6A10D /* JsArgumentHelpers-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JsArgumentHelpers-inl.h"; sourceTree = ""; }; 289131589CCC21FDAAADD8DA0E1EA4A5 /* RCTTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextViewManager.h; sourceTree = ""; }; 28992A73B6E2E3C1194912C0730023B1 /* RCTSinglelineTextInputView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSinglelineTextInputView.mm; sourceTree = ""; }; 289BDFFAEE5965ED8E6B54755E485A66 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/animations/conversions.h; sourceTree = ""; }; 28D7BEABBC1EB38780017A5D14CC2E0F /* fast-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fast-dtoa.h"; path = "double-conversion/fast-dtoa.h"; sourceTree = ""; }; 28F712315F7CD5B5F84A557475518AF3 /* RCTSinglelineTextInputViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSinglelineTextInputViewManager.mm; sourceTree = ""; }; 28FF824B4005CDF78CA3A774CFD2549B /* AccessibilityProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = AccessibilityProps.cpp; path = react/renderer/components/view/AccessibilityProps.cpp; sourceTree = ""; }; 29069E0EE8AF62E25BA127E3020926FD /* RawPropsParser.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawPropsParser.cpp; path = react/renderer/core/RawPropsParser.cpp; sourceTree = ""; }; 292CA568BD4ABB3A490EAADD2CA64FB7 /* React-cxxreact.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-cxxreact.release.xcconfig"; sourceTree = ""; }; 296D3832DB6A00F26BCB4D9A491A88E6 /* TextAttributes.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextAttributes.cpp; path = react/renderer/attributedstring/TextAttributes.cpp; sourceTree = ""; }; 296F41E25D51A2758C6CBFAB3A8B8FAD /* fromRawValueShared.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fromRawValueShared.h; sourceTree = ""; }; 2993AE002A77BF7B39AAE55DB661DD31 /* TurboCxxModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TurboCxxModule.cpp; path = react/nativemodule/core/ReactCommon/TurboCxxModule.cpp; sourceTree = ""; }; 29A9D298DB1C62EA7C25E8F85CFF52F8 /* FollyMemset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FollyMemset.h; path = folly/FollyMemset.h; sourceTree = ""; }; 29B488F05847F4968004034A803BA1EE /* RCTAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimatedNode.h; sourceTree = ""; }; 2A29138DBA1381888F4701360BF91338 /* InstanceHandle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = InstanceHandle.cpp; path = react/renderer/core/InstanceHandle.cpp; sourceTree = ""; }; 2A474E2B602BF03DC7153DA54029EFCD /* UniqueMonostate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UniqueMonostate.h; sourceTree = ""; }; 2A64B900827AD880DCA0F0CDC3BDA727 /* HostPlatformViewTraitsInitializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HostPlatformViewTraitsInitializer.h; sourceTree = ""; }; 2A6A08279C8FADD3D8FF81B1C2112A8F /* CppAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CppAttributes.h; path = folly/CppAttributes.h; sourceTree = ""; }; 2A7AEC733FC3F4650B9340E574530161 /* HermesExecutorFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = HermesExecutorFactory.cpp; sourceTree = ""; }; 2AE808F4B51B3F24D61558A014CF22A5 /* RCTAnimationPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAnimationPlugins.h; path = Libraries/NativeAnimation/RCTAnimationPlugins.h; sourceTree = ""; }; 2AEA71EA50563CCA7CAD2D0EA99BC4C3 /* React-RuntimeHermes.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RuntimeHermes.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 2AF4509521B4076AA29D6287EFE1BE14 /* React-CoreModules.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-CoreModules.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 2AF790ECD36E6DBEB706E9E072597102 /* RCTBridgeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeDelegate.h; sourceTree = ""; }; 2AFDFA1B816E14B8A48D630F83DC6574 /* JSIExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSIExecutor.h; path = jsireact/JSIExecutor.h; sourceTree = ""; }; 2B044C64ECD89051E79887F2F8FE57D5 /* React-RCTNetwork.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTNetwork.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 2B38F5BBD25E489CA1BCFF0B8B34AD39 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/components/scrollview/conversions.h; sourceTree = ""; }; 2B7A860D2229C54CBF112DD02B57C926 /* LegacyViewManagerInteropState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LegacyViewManagerInteropState.h; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h; sourceTree = ""; }; 2B7BCA4D8FBC217D22B4EEB15EB03957 /* RCTConvert+CoreLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+CoreLocation.h"; sourceTree = ""; }; 2BAEF360C04D98022913BA78AC8A5A0F /* RCTImageShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageShadowView.mm; sourceTree = ""; }; 2C090425A0AC38F41F277453CBF5B235 /* RCTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVersion.h; sourceTree = ""; }; 2C17F91E7D084760672DD64B292DF5B5 /* Singleton-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Singleton-inl.h"; path = "folly/Singleton-inl.h"; sourceTree = ""; }; 2C4F509606F5C64CB085DA2D927CDC93 /* jsi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = jsi.h; sourceTree = ""; }; 2C5887CFA052BA4652642CE173F3C2F4 /* RCTScrollEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollEvent.h; sourceTree = ""; }; 2C795DB945B2C3AA8C9DB7C2065D7C38 /* RCTMessageThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMessageThread.h; sourceTree = ""; }; 2CA71A360B05CFB72B96ACD04FA7ADB6 /* ValueFactoryEventPayload.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ValueFactoryEventPayload.cpp; path = react/renderer/core/ValueFactoryEventPayload.cpp; sourceTree = ""; }; 2CCBE13D47A90960E21168709D81A256 /* SmallLocks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SmallLocks.h; path = folly/synchronization/SmallLocks.h; sourceTree = ""; }; 2CE3815AC95E2E19EFA825C26B6DD16A /* traits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = traits.h; path = folly/functional/traits.h; sourceTree = ""; }; 2D006447B5017B8009E226E6E0AACE40 /* ImageRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageRequest.h; path = react/renderer/imagemanager/ImageRequest.h; sourceTree = ""; }; 2D3B7CA09D694AABDB4E6816701346CC /* TextAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextAttributes.h; path = react/renderer/attributedstring/TextAttributes.h; sourceTree = ""; }; 2D50029B232140A61A9034E9BCCA51BB /* FBReactNativeSpec-generated.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = "FBReactNativeSpec-generated.mm"; sourceTree = ""; }; 2D889D31C2B9F054FBB9309C335FCD66 /* StatePipe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StatePipe.h; path = react/renderer/core/StatePipe.h; sourceTree = ""; }; 2DACD0189E12C716542A13351B01B317 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = ""; }; 2DEEED6BBD30D6FA84E9F8A0F6D3BFB9 /* RCTBridgeModuleDecorator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBridgeModuleDecorator.m; sourceTree = ""; }; 2DF730E6145C9D42DEB5C32702BE8C74 /* RawPropsKeyMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawPropsKeyMap.h; path = react/renderer/core/RawPropsKeyMap.h; sourceTree = ""; }; 2E12202A59E36B86AFC6D2CB7CC7B1A2 /* React-CoreModules.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-CoreModules.debug.xcconfig"; sourceTree = ""; }; 2E2A892270F483593BF828FD99446809 /* React-RCTBlob.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTBlob.release.xcconfig"; sourceTree = ""; }; 2E89F76541853DEFE4E1B570E724F503 /* RCT-Folly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RCT-Folly.debug.xcconfig"; sourceTree = ""; }; 2EA911281D978CB40351D59D5598FC9B /* MicroSpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MicroSpinLock.h; path = folly/MicroSpinLock.h; sourceTree = ""; }; 2EAAC08BE2B9CE538A0D58679E781247 /* bignum-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "bignum-dtoa.h"; path = "double-conversion/bignum-dtoa.h"; sourceTree = ""; }; 2EC34A00D8B5E0E79B1DFEF7D2D5651B /* RCTWebSocketExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTWebSocketExecutor.h; path = React/CoreModules/RCTWebSocketExecutor.h; sourceTree = ""; }; 2ED447FF7E9E303F98B593502FAA8151 /* LegacyViewManagerInteropShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LegacyViewManagerInteropShadowNode.h; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h; sourceTree = ""; }; 2EDE07F5836F143CD7857CB2E5B5E136 /* EventPayloadType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventPayloadType.h; path = react/renderer/core/EventPayloadType.h; sourceTree = ""; }; 2F2BC9F716D9565E236295A6DE40D75C /* React-jsinspector-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsinspector-umbrella.h"; sourceTree = ""; }; 2F8E66FF737E243487DFC9781A2605FE /* RCTSurfaceRootShadowViewDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowViewDelegate.h; sourceTree = ""; }; 2F8E6E55AFFCF9BD68B2B5B508CCEC75 /* MemoryIdler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MemoryIdler.h; path = folly/detail/MemoryIdler.h; sourceTree = ""; }; 2FA6B9156408ED84AEE6F56B8BB6FC8D /* RCTMountingTransactionObserverCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMountingTransactionObserverCoordinator.h; sourceTree = ""; }; 30162323761B1AB1D7A828CC5D1BE36F /* RCTDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDefines.h; sourceTree = ""; }; 3018115A5F8C04479A8AE64B102BE2C5 /* Base.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Base.h; path = react/bridging/Base.h; sourceTree = ""; }; 3053B3AC995ECECC071744E464935607 /* ShadowNodeFragment.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowNodeFragment.cpp; path = react/renderer/core/ShadowNodeFragment.cpp; sourceTree = ""; }; 307CE5CEEA4E06A6A255CA72344E783B /* RCTBundleAssetImageLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBundleAssetImageLoader.mm; sourceTree = ""; }; 30800F41E56952F66104FBA05648D6FB /* React-jsinspector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsinspector.release.xcconfig"; sourceTree = ""; }; 308183F96466CA2C23FC665AD164BFD4 /* MountingCoordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = MountingCoordinator.cpp; path = react/renderer/mounting/MountingCoordinator.cpp; sourceTree = ""; }; 30DD3B64FEFD7A1AB8A1EC8B9D52D87F /* YGValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGValue.h; path = yoga/YGValue.h; sourceTree = ""; }; 3109CDF60BA119DB536601600983564B /* simdjson.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = simdjson.modulemap; sourceTree = ""; }; 313F1FACBDF2947C76A286C8AFC6551D /* FBString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBString.h; path = folly/FBString.h; sourceTree = ""; }; 314C4322103426F9256B2FBA495DB607 /* RCTScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollView.m; sourceTree = ""; }; 315FDA4F573874F2BD0A7F57C70AF3E1 /* RCT-Folly-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCT-Folly-umbrella.h"; sourceTree = ""; }; 31660B4E9DCE9F8ABCACB98B2176D664 /* React-NativeModulesApple.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-NativeModulesApple.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 316C9C14CDBDF9673A95F2B8F066A5FF /* React-graphics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-graphics.modulemap"; sourceTree = ""; }; 31842C0B4263119B5232CF1827757893 /* ReentrantAllocator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ReentrantAllocator.h; path = folly/memory/ReentrantAllocator.h; sourceTree = ""; }; 318D26E55C7F26B32EFB91A5243FBAF8 /* ViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ViewShadowNode.h; path = react/renderer/components/view/ViewShadowNode.h; sourceTree = ""; }; 31E12D3E887518AC0490584345788F27 /* BaseViewProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BaseViewProps.cpp; path = react/renderer/components/view/BaseViewProps.cpp; sourceTree = ""; }; 31FAF051F6D95F34219F912CE1C6F2F4 /* String-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "String-inl.h"; path = "folly/String-inl.h"; sourceTree = ""; }; 32208C8C13E5E8750C70406B6FADABA1 /* RCTAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAssert.m; sourceTree = ""; }; 325477957D7D1B6F9F9C72D859C2E8BE /* React-perflogger.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-perflogger.release.xcconfig"; sourceTree = ""; }; 32680615BD888084B01D830F2196A3C7 /* UIView+React.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+React.h"; sourceTree = ""; }; 326E52CD3C6A37497F8D253F7BACCFB5 /* Sched.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sched.h; path = folly/portability/Sched.h; sourceTree = ""; }; 326FC938C2E12371A877E5FA46F37777 /* LongLivedObject.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LongLivedObject.cpp; path = react/bridging/LongLivedObject.cpp; sourceTree = ""; }; 327A412C03B8D29F20508FBD60D4EAD2 /* Props.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Props.h; path = react/renderer/core/Props.h; sourceTree = ""; }; 32854BF47BB04F74CF858BD8BDE66C35 /* RCTHermesInstance.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTHermesInstance.mm; path = ReactCommon/RCTHermesInstance.mm; sourceTree = ""; }; 32A7462E31DA20BFC4BF96677609574A /* RCTMountingManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMountingManager.mm; sourceTree = ""; }; 32AC266D9F2BEB6CAC0650EC2695A1C7 /* SysUio.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SysUio.cpp; path = folly/portability/SysUio.cpp; sourceTree = ""; }; 32B62C1AD7CDAE58FE4EF82AB2C29AAA /* Uri.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Uri.h; path = folly/Uri.h; sourceTree = ""; }; 32C612DD10C738AA24310145376A8756 /* DebuggerTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DebuggerTypes.h; path = destroot/include/hermes/Public/DebuggerTypes.h; sourceTree = ""; }; 32D1CC8F0E612A18C597E5BDCD724B17 /* RCTSurfaceRegistry.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSurfaceRegistry.mm; path = Fabric/RCTSurfaceRegistry.mm; sourceTree = ""; }; 32DC15B6A3F5954F7FA2FF42937538A5 /* RCTLegacyViewManagerInteropCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLegacyViewManagerInteropCoordinator.h; path = react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h; sourceTree = ""; }; 32E0BB05F9F652F49EAE1D3EE8E0714E /* UnstableLegacyViewManagerAutomaticComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnstableLegacyViewManagerAutomaticComponentDescriptor.h; path = react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h; sourceTree = ""; }; 3312F4682C3B648C87FBD7755CC0CE73 /* UnstableLegacyViewManagerInteropComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnstableLegacyViewManagerInteropComponentDescriptor.h; path = react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h; sourceTree = ""; }; 3329F3B4064042B4C1D4BDA08241A80B /* JSOutOfMemoryError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSOutOfMemoryError.h; path = destroot/include/hermes/Public/JSOutOfMemoryError.h; sourceTree = ""; }; 33623931DB49F9BE0BB2BEAD565E5AC5 /* RCTBaseTextInputShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputShadowView.h; sourceTree = ""; }; 337FF88F1B3B7E14D22211EF9A8C01DC /* ModalHostViewComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ModalHostViewComponentDescriptor.h; path = react/renderer/components/modal/ModalHostViewComponentDescriptor.h; sourceTree = ""; }; 33A82E15C4F5EEC134A1C086B421B62D /* bindingUtils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = bindingUtils.cpp; path = react/renderer/uimanager/bindingUtils.cpp; sourceTree = ""; }; 33AFE6C6C66107B924778D5E609CBE54 /* React-RCTActionSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTActionSheet.release.xcconfig"; sourceTree = ""; }; 33BB544E228494D0AF9CB4E5A11EF94D /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = conversions.h; sourceTree = ""; }; 33C0BE36B9FBC218A7F9944F9E03ABC9 /* RCTWrapperViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTWrapperViewController.m; sourceTree = ""; }; 33E070F404266F952E77980CFA788C4D /* diy-fp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "diy-fp.h"; path = "double-conversion/diy-fp.h"; sourceTree = ""; }; 33EEBF1D210254B5452CE560F81C9D38 /* RCTDeprecation */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = RCTDeprecation; path = libRCTDeprecation.a; sourceTree = BUILT_PRODUCTS_DIR; }; 33FBAF4A2C505DEA7624E5FE6146C7CB /* RCTFrameAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFrameAnimation.h; sourceTree = ""; }; 340097AC9A9BF4BAD1E542E436217620 /* ImageTelemetry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageTelemetry.cpp; path = react/renderer/imagemanager/ImageTelemetry.cpp; sourceTree = ""; }; 341947EF5C4F684C9D99E78AEFE835DC /* TimerStats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TimerStats.h; path = destroot/include/hermes/TimerStats.h; sourceTree = ""; }; 342244AFF6DAC97CF99A001A770A5E4F /* Object.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Object.h; path = react/bridging/Object.h; sourceTree = ""; }; 343040AFE22D6B494755190C0C2FC6FF /* ParagraphProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphProps.cpp; path = react/renderer/components/text/ParagraphProps.cpp; sourceTree = ""; }; 34310C6EE4D078D016C21151602FCF90 /* RCTSyncImageManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSyncImageManager.mm; path = react/renderer/imagemanager/RCTSyncImageManager.mm; sourceTree = ""; }; 34875B2D75347ECF94E81DEA4C80D47A /* React-graphics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-graphics-umbrella.h"; sourceTree = ""; }; 349041093547AE8E438BDD4E8A829CB7 /* LayoutConstraints.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LayoutConstraints.cpp; path = react/renderer/core/LayoutConstraints.cpp; sourceTree = ""; }; 34A2168F62C5C8BB1DEEA7D485022A12 /* RCTFabricModalHostViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFabricModalHostViewController.h; sourceTree = ""; }; 34DB7C7BB2A350937253113F587A18E4 /* TextShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextShadowNode.h; path = react/renderer/components/text/TextShadowNode.h; sourceTree = ""; }; 350583A27DECF7088A05CC2259BE2E98 /* RCTParagraphComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTParagraphComponentView.mm; sourceTree = ""; }; 354A705EB660FEBF388788D956A9E58A /* ToAscii.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ToAscii.cpp; path = folly/lang/ToAscii.cpp; sourceTree = ""; }; 35645CAF1F9339B964422D6014D3FB62 /* InspectorInterfaces.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorInterfaces.cpp; sourceTree = ""; }; 357C89461C2B2C6319BF4ADE3900971C /* AtomicNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicNotification.h; path = folly/synchronization/AtomicNotification.h; sourceTree = ""; }; 359747BC6AC4881D3081F8B6AA532321 /* TouchEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TouchEventEmitter.h; path = react/renderer/components/view/TouchEventEmitter.h; sourceTree = ""; }; 359B6CEED91D1DF8B883DC40D5E04EEE /* React-jsi-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsi-dummy.m"; sourceTree = ""; }; 35B3256FA995F839DF8DCEEFCF7DD785 /* RCTImageShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageShadowView.h; path = Libraries/Image/RCTImageShadowView.h; sourceTree = ""; }; 35D8CF26BB70259E361BDEA1E77D32E1 /* RCTBorderDrawing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBorderDrawing.m; sourceTree = ""; }; 3605A12CF33B3DFBE0B5DD2DE36994C3 /* SpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpinLock.h; path = folly/SpinLock.h; sourceTree = ""; }; 3615AC64FDF6640D810E405776FA9A03 /* MessageQueueThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MessageQueueThread.h; sourceTree = ""; }; 36164B0E9E5609F36A0106D648A0FA8E /* RCTComponentViewRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewRegistry.h; sourceTree = ""; }; 361BB64B7C65C06474C5DFD08FD49799 /* CxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CxxModule.h; sourceTree = ""; }; 367ACA1132BAD5F80E6CE0171064F750 /* RCTBridgeModuleDecorator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeModuleDecorator.h; sourceTree = ""; }; 36C08C7FF3DFACBC39FCE541DCF803B6 /* ImageRequest.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageRequest.cpp; path = react/renderer/imagemanager/ImageRequest.cpp; sourceTree = ""; }; 36EDA6F605E6CEF5F9A72D38C0AA3DED /* ThreadName.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadName.h; path = folly/system/ThreadName.h; sourceTree = ""; }; 373F105CB4DEE4BDB90F46875B73BFA8 /* RCTModalHostViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewController.m; sourceTree = ""; }; 374717629E05164C820F2052E54AAA91 /* Cache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Cache.cpp; sourceTree = ""; }; 37560CB0B831B9181D0E9FE412A827E5 /* RCTSurfaceRootShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowView.h; sourceTree = ""; }; 37592FDAD45752511010F4B06AC57355 /* React-cxxreact */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-cxxreact"; path = "libReact-cxxreact.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 375B4BBE3235F1250E48C6F479A52A01 /* FormatTraits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FormatTraits.h; path = folly/FormatTraits.h; sourceTree = ""; }; 375DFEFC5E87FCB287285426D6DAA812 /* RCTModuloAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModuloAnimatedNode.mm; sourceTree = ""; }; 3762263B39103B7107F61608F0B0E2D8 /* Random-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Random-inl.h"; path = "folly/Random-inl.h"; sourceTree = ""; }; 37689F6A0CBD1039206E7D3A8E8E6C68 /* RCTCxxMethod.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxMethod.mm; sourceTree = ""; }; 37CF653BFF872793202265BF76118EAA /* DoubleConversion-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DoubleConversion-prefix.pch"; sourceTree = ""; }; 37D820D975698FCA99C86CE71EF22A97 /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = "double-conversion/utils.h"; sourceTree = ""; }; 37DFC8EAF78BE0F070D18753D61D9C59 /* IPAddressSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddressSource.h; path = folly/detail/IPAddressSource.h; sourceTree = ""; }; 37F9065181BD972C82D47E7F46FFBBAA /* Log.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Log.cpp; sourceTree = ""; }; 3859A11BD5B175A2E7059AE9B7A747F3 /* Merge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Merge.h; path = folly/container/Merge.h; sourceTree = ""; }; 3863C406F7D65140B03ADDF3E62B9914 /* MethodCall.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MethodCall.h; sourceTree = ""; }; 38D95650F41F3CE76BC04B5619B09B95 /* SRSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRSecurityPolicy.m; path = SocketRocket/SRSecurityPolicy.m; sourceTree = ""; }; 394174FFAD60F61AE02F3A5C011D30BC /* RCTTextView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextView.mm; sourceTree = ""; }; 3948308FBBC9426B8AAFA7391786B0E8 /* React-Codegen.podspec.json */ = {isa = PBXFileReference; includeInIndex = 1; path = "React-Codegen.podspec.json"; sourceTree = ""; }; 39499A61681F432C3F011D0926E7DAA4 /* ReactNativeFeatureFlagsAccessor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ReactNativeFeatureFlagsAccessor.cpp; sourceTree = ""; }; 3954F92E91DCCCD316FC570C39037C55 /* MapBufferBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MapBufferBuilder.h; path = react/renderer/mapbuffer/MapBufferBuilder.h; sourceTree = ""; }; 39650BDAA0AACD5B404A81046E1DC6C8 /* RCTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLog.h; sourceTree = ""; }; 39A5BABF355F1FCE0AB1D652C33D7B9C /* Memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Memory.h; path = folly/portability/Memory.h; sourceTree = ""; }; 39D0105B481E5FB78C661496BD63B8A5 /* React-RCTAppDelegate */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTAppDelegate"; path = "libReact-RCTAppDelegate.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 39F4D12A0547EEA463DA17C682F69B34 /* RCTTextInputUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextInputUtils.mm; sourceTree = ""; }; 39F844696BFB60487E053DE52768656B /* RCTSwitchManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitchManager.h; sourceTree = ""; }; 3A32F2995E9FBCA38F66600B356DD02C /* TcpInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TcpInfo.h; path = folly/net/TcpInfo.h; sourceTree = ""; }; 3A48CF42426D1757E19F5E0283D958A0 /* ColorComponents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorComponents.h; sourceTree = ""; }; 3A50B808D51766F1C0B42436A7163DDD /* RCTImageResponseObserverProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageResponseObserverProxy.h; path = Fabric/RCTImageResponseObserverProxy.h; sourceTree = ""; }; 3A6A2A0A084F0C30F0774529E7FC9E72 /* RCTImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageCache.h; path = Libraries/Image/RCTImageCache.h; sourceTree = ""; }; 3A75958C7177C6CC36B895D30E732E64 /* RCTRuntimeExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTRuntimeExecutor.h; path = ReactCommon/RCTRuntimeExecutor.h; sourceTree = ""; }; 3A7C0933E0C4119F5E32E5A260746A2F /* RAMBundleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RAMBundleRegistry.h; sourceTree = ""; }; 3AD266EFC19E97B68AB736B2DFAE934E /* bindingUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bindingUtils.h; path = react/renderer/uimanager/bindingUtils.h; sourceTree = ""; }; 3AD33F21CFF457D719E527B0A4413B4E /* RCTSegmentedControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControl.h; sourceTree = ""; }; 3AD9E5C254F43B4A3AC4E7A6452D879C /* React-Core-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Core-umbrella.h"; sourceTree = ""; }; 3B03D90250BBDC20A58910E9BAE12F13 /* RCTDeviceInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDeviceInfo.mm; sourceTree = ""; }; 3B0D676D74E69A0350EF5A4FE2794335 /* RCTAlertController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAlertController.h; path = React/CoreModules/RCTAlertController.h; sourceTree = ""; }; 3B4291E3436CE7DD23B4E403E8E8B12D /* RangeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RangeCommon.h; path = folly/detail/RangeCommon.h; sourceTree = ""; }; 3B7CA49DCCF91C74062D35600488A355 /* React-jsi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsi.debug.xcconfig"; sourceTree = ""; }; 3B80393CC9C72D221195616E0DA5B67F /* RCTNetworkPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworkPlugins.h; path = Libraries/Network/RCTNetworkPlugins.h; sourceTree = ""; }; 3B9822B49D137DD1BBFAE4C9206C7F97 /* Number.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Number.h; path = react/bridging/Number.h; sourceTree = ""; }; 3BD8588452A16BCC311A2F90E96B104A /* CxxTurboModuleUtils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = CxxTurboModuleUtils.cpp; path = react/nativemodule/core/ReactCommon/CxxTurboModuleUtils.cpp; sourceTree = ""; }; 3BFC3D5FFBC3735586FEBA16EF9D8157 /* Exception.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Exception.h; path = folly/lang/Exception.h; sourceTree = ""; }; 3C0913180FEC5C605ACD33BB9E09CDAD /* AbsoluteLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AbsoluteLayout.h; sourceTree = ""; }; 3C3877360CD1523AEBF6A0B3BECBB8D6 /* React-rendererdebug.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-rendererdebug.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3C3F05EDE07B5034C963F9F6CE67E5A9 /* TraceInterpreter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TraceInterpreter.h; path = destroot/include/hermes/TraceInterpreter.h; sourceTree = ""; }; 3C581B89704C6C579DD637F11045901A /* AtomicHashArray-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AtomicHashArray-inl.h"; path = "folly/AtomicHashArray-inl.h"; sourceTree = ""; }; 3C6D5DD14D9959F1BCDA9EEF40E8671E /* event.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = ""; }; 3C7A8CC093D61D93FAFE2A423F9CE0B7 /* ParagraphProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphProps.h; path = react/renderer/components/text/ParagraphProps.h; sourceTree = ""; }; 3C987DB1C26CAE3839EA088A41B167DF /* RCTNetworking.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNetworking.mm; sourceTree = ""; }; 3CA7A9404CCDD6BA22C97F8348CE3209 /* glog */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = glog; path = libglog.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3CAE7021D6D8066FCD1D39076F4A85C1 /* RCTInspectorPackagerConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInspectorPackagerConnection.m; sourceTree = ""; }; 3CC7171C241F88DC2439CD6C9B3B9BDA /* RCTSegmentedControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControl.m; sourceTree = ""; }; 3D158DF7B71452128F42AE32CD1FB9F8 /* MessageInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MessageInterfaces.h; path = destroot/include/hermes/inspector/chrome/MessageInterfaces.h; sourceTree = ""; }; 3D16D5EC0CC9F855658FDAD755B9B8F7 /* RCTInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspector.h; sourceTree = ""; }; 3D2546E47F2D90167BFD3A489746A6E9 /* Unistd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Unistd.h; path = folly/portability/Unistd.h; sourceTree = ""; }; 3D4E8D2C968BF398ABDE0E66D90AA405 /* TurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModule.h; path = react/nativemodule/core/ReactCommon/TurboModule.h; sourceTree = ""; }; 3D66CDE2F1E5ADE815D245C01F720E05 /* FBVector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBVector.h; path = folly/FBVector.h; sourceTree = ""; }; 3D6DBF11CFCFF077F1E73E67C1B435B6 /* ShadowTreeRevision.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowTreeRevision.cpp; path = react/renderer/mounting/ShadowTreeRevision.cpp; sourceTree = ""; }; 3D7F16F5E30C11527357DD52C8CB2954 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/components/view/primitives.h; sourceTree = ""; }; 3D85474333A22BB675B886226092484B /* GCConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCConfig.h; path = destroot/include/hermes/Public/GCConfig.h; sourceTree = ""; }; 3DDD563C6ADBEC41164125E51B67EE77 /* RCTLegacyViewManagerInteropCoordinatorAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLegacyViewManagerInteropCoordinatorAdapter.h; sourceTree = ""; }; 3E169D2216CF9E719B147E7377742BBD /* RCTEnhancedScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEnhancedScrollView.h; sourceTree = ""; }; 3E71733432C7AC618E5FB1B2C20C71F3 /* SurfaceRegistryBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SurfaceRegistryBinding.cpp; path = react/renderer/uimanager/SurfaceRegistryBinding.cpp; sourceTree = ""; }; 3E8E0103E022F0A7BE670C99DDEC11FE /* RCTCxxModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxModule.mm; sourceTree = ""; }; 3EA37501D46115DDABA4571FDD025BD2 /* SRLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRLog.m; path = SocketRocket/Internal/Utilities/SRLog.m; sourceTree = ""; }; 3EA47022B15AB1C45235DBA9B57DA776 /* DoubleConversion.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DoubleConversion.debug.xcconfig; sourceTree = ""; }; 3EA8CBF160B60CE7141E34124CD98495 /* React-runtimescheduler.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-runtimescheduler.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3F3E458396D3574B4ADE0076519B87B9 /* RuntimeSchedulerBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeSchedulerBinding.cpp; sourceTree = ""; }; 3F5A0CA304F0EDE4723DD50DC013E5A9 /* RCTInspectorPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspectorPackagerConnection.h; sourceTree = ""; }; 3F5C6F9D16A1A659B8CB769DDEC445DE /* RCTLayoutAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimation.m; sourceTree = ""; }; 3F64B0C65747B5007B92D204D69F6EFC /* Dimension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Dimension.h; sourceTree = ""; }; 3F8788C15B11DF4D16CE2A85BE243AA0 /* FBReactNativeSpecJSI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FBReactNativeSpecJSI.h; sourceTree = ""; }; 3F93EBBC760E206C8883BE32A9915097 /* SRMutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRMutex.h; path = SocketRocket/Internal/Utilities/SRMutex.h; sourceTree = ""; }; 3FA9E0C5DE547662B3285AAE677F1CBF /* RCTAnimationUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAnimationUtils.mm; sourceTree = ""; }; 3FB252110B7F6302C421C46ADF22A0BD /* RCTDeprecation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTDeprecation-dummy.m"; sourceTree = ""; }; 3FE4624E81D0E4F7D216C71603A6BB12 /* RCTURLRequestDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestDelegate.h; sourceTree = ""; }; 3FF99AA51CC63F9D02051442963EEB0E /* RCTDebuggingOverlay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDebuggingOverlay.m; sourceTree = ""; }; 3FFEDA5AF4FED3EB1CC515BC9BAB2760 /* HazptrObjLinked.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrObjLinked.h; path = folly/synchronization/HazptrObjLinked.h; sourceTree = ""; }; 40070AAA8193578B4B19218FCBD1F506 /* RCTRootShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootShadowView.h; sourceTree = ""; }; 4013A3D961F88A9A042C082ECAEB35E8 /* RCTScheduler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTScheduler.h; path = Fabric/RCTScheduler.h; sourceTree = ""; }; 401A553AA0753FF3548A286F009A8820 /* React-RCTAppDelegate-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTAppDelegate-umbrella.h"; sourceTree = ""; }; 404C04FF5A5FFA2678597943F9B2C076 /* RCTEventAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTEventAnimation.mm; sourceTree = ""; }; 40578E9386680C689D002917E383C065 /* RCTConvert+CoreLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+CoreLocation.m"; sourceTree = ""; }; 4059CB54B248E9CAF8D2648832EF03C3 /* RCTEventDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTEventDispatcher.h; path = React/CoreModules/RCTEventDispatcher.h; sourceTree = ""; }; 40B6CCC5214ADD7CDAC59A0304AB0B44 /* MPMCPipelineDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MPMCPipelineDetail.h; path = folly/detail/MPMCPipelineDetail.h; sourceTree = ""; }; 40B78C2265ACE3B8ACB7A504F9CFA4DE /* FMDatabaseQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMDatabaseQueue.h; sourceTree = ""; }; 40CFEC8038EA506FF0CAC998C27E80BF /* RCTScrollContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentView.m; sourceTree = ""; }; 40E5A309579F3C1A9D1F5C45ED9FFA0F /* RuntimeTarget.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeTarget.cpp; sourceTree = ""; }; 411B0CC2295DAA5FACED75F6D4BA67ED /* hu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = hu.lproj; path = React/I18n/strings/hu.lproj; sourceTree = ""; }; 411C75B9AC2022189E60C99722CAFE94 /* React-jsitracing.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsitracing.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 41232C04153D6B0482F696CC52538B79 /* React-NativeModulesApple.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-NativeModulesApple.modulemap"; sourceTree = ""; }; 412F97DED69E29E2A7146162142A9FF5 /* RCTI18nUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTI18nUtil.m; sourceTree = ""; }; 4133EE63EDE34BEA9FC63C4BB4801169 /* RCTImageURLLoaderWithAttribution.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageURLLoaderWithAttribution.h; path = Libraries/Image/RCTImageURLLoaderWithAttribution.h; sourceTree = ""; }; 413649D5C571D8A6170C6A4424CD088F /* Pods-WatermelonTester-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-WatermelonTester-dummy.m"; sourceTree = ""; }; 4148047344F184B4D856D414B9B4349D /* hermes-engine.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "hermes-engine.release.xcconfig"; sourceTree = ""; }; 415370226876D731C7B97EFB54012940 /* RCTBackedTextInputDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputDelegate.h; sourceTree = ""; }; 4167445C410188AABBBB4C4E2721565F /* InspectorData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = InspectorData.h; path = react/renderer/scheduler/InspectorData.h; sourceTree = ""; }; 4168B7BDC6AE9FC9B5C87C96C641EA8E /* RCTSwitch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitch.h; sourceTree = ""; }; 416D956A2968ACC6583A761D4976F6FF /* RCTMultipartDataTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartDataTask.m; sourceTree = ""; }; 4181C0A4A1994121AF233A5C57DEC990 /* RCTLocalizedString.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLocalizedString.mm; sourceTree = ""; }; 41CA6E5A23C938EF530325403BEB5ABB /* RCTTurboModuleManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTurboModuleManager.h; path = ReactCommon/RCTTurboModuleManager.h; sourceTree = ""; }; 41CF2183FB0C77CBF6E075298A85E705 /* String.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = String.cpp; path = folly/String.cpp; sourceTree = ""; }; 41D562BB5F84842F8DF9293C3DEB309C /* RCTTurboModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTTurboModule.mm; path = ReactCommon/RCTTurboModule.mm; sourceTree = ""; }; 41E25EEE9BD95F7330BCB968457D0541 /* RCTComponentEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTComponentEvent.m; sourceTree = ""; }; 41EC212BC4905E428935BED6DA109744 /* RCTLayoutAnimationGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimationGroup.h; sourceTree = ""; }; 42069F17D0B92E1DCE65D62807AAC0E8 /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = ""; }; 4242FEAF60FC3ACE3D98A5A77B65D724 /* RCTImageEditingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageEditingManager.h; path = Libraries/Image/RCTImageEditingManager.h; sourceTree = ""; }; 4279CDB721ED8120EB0EF927416392FE /* RCTImageURLLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageURLLoader.h; path = Libraries/Image/RCTImageURLLoader.h; sourceTree = ""; }; 427B91D65DD3F677FDB0BBC6941F4424 /* ReactNativeFeatureFlagsAccessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactNativeFeatureFlagsAccessor.h; sourceTree = ""; }; 42A97962C25A869DDED1914B699BD747 /* RCTAnimationType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimationType.h; sourceTree = ""; }; 42E6807903C30860853913241D16DBE5 /* FMDatabasePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = FMDatabasePool.m; sourceTree = ""; }; 42F83B7067F1043FA268569B56994602 /* React-jsiexecutor-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsiexecutor-dummy.m"; sourceTree = ""; }; 4319E1967E8F6E050D8E035D7E5D4598 /* FlexDirection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FlexDirection.h; sourceTree = ""; }; 431DEF836033B057B6067879CB291040 /* RCTUnimplementedNativeComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUnimplementedNativeComponentView.mm; sourceTree = ""; }; 4340CE46967CD10BEFC7859B55898A6D /* RCTProfileTrampoline-arm64.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-arm64.S"; sourceTree = ""; }; 4343AD60D13A26A3F11E942DA9C12580 /* RCTSurfaceRootShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceRootShadowView.m; sourceTree = ""; }; 434BDC67E1145AE964DB9AA3C0D4F3AE /* InspectorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorUtilities.h; sourceTree = ""; }; 43E01084CFFDCD00B181AAEBF7F6EC46 /* RCTBridgeConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeConstants.h; sourceTree = ""; }; 43EB5BDEB4E6A695F071E994CDEDF34A /* strtod.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = strtod.cc; path = "double-conversion/strtod.cc"; sourceTree = ""; }; 43F384C21F24B355DE771A761C765E4B /* ShadowTreeRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowTreeRegistry.cpp; path = react/renderer/mounting/ShadowTreeRegistry.cpp; sourceTree = ""; }; 4403122C16D5B003C8984E009EAF54F1 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/uimanager/primitives.h; sourceTree = ""; }; 441AA6664650EC12BAF8937E4A882741 /* React-Codegen.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Codegen.release.xcconfig"; sourceTree = ""; }; 44356704310DCCAB77D9F8693D62FE0B /* RCTSurfacePointerHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSurfacePointerHandler.mm; path = Fabric/RCTSurfacePointerHandler.mm; sourceTree = ""; }; 445199601546E45056A827DFB23F4148 /* RCTHTTPRequestHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTHTTPRequestHandler.mm; sourceTree = ""; }; 446FE57F2A972700F005CD2CC41F8710 /* RCTTurboModuleManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTTurboModuleManager.mm; path = ReactCommon/RCTTurboModuleManager.mm; sourceTree = ""; }; 4478194C75B2D184014614829944D5CC /* ThreadLocal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadLocal.h; path = folly/ThreadLocal.h; sourceTree = ""; }; 447C966873650F5BE0F53C20B5B181AD /* RCTVirtualTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextView.h; sourceTree = ""; }; 4489977C9B5B35F7F5A112139189B7E0 /* RCTNativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTNativeModule.h; sourceTree = ""; }; 44C17CFBA5F0AAEEAA6587B65BBD9539 /* DynamicPropsUtilities.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = DynamicPropsUtilities.cpp; path = react/renderer/core/DynamicPropsUtilities.cpp; sourceTree = ""; }; 44D41289A83BA05369244074562FCAE8 /* SRHTTPConnectMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRHTTPConnectMessage.m; path = SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m; sourceTree = ""; }; 456E948706116C0DD64555FF6BF85B08 /* RCTSurfacePresenter.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSurfacePresenter.mm; path = Fabric/RCTSurfacePresenter.mm; sourceTree = ""; }; 459822FB423F933D32F755CA3A5D55CC /* glog-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "glog-umbrella.h"; sourceTree = ""; }; 459B7A62CD1A78C3B1D3BA7499CB76CD /* UnimplementedViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnimplementedViewProps.h; path = react/renderer/components/unimplementedview/UnimplementedViewProps.h; sourceTree = ""; }; 45A5B3AB48BF8E29430504561E8566AA /* React-jsinspector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsinspector-prefix.pch"; sourceTree = ""; }; 45BE03CDBA0ACF037784CA42392A374F /* RCTProfileTrampoline-i386.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-i386.S"; sourceTree = ""; }; 45C6CA880F0AD8CC31C1BF775228C3EF /* RCTRefreshControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControl.m; sourceTree = ""; }; 45D864901AF697040097CE5D0FCD717F /* Log.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; 45D9999C07AC6FD97A5897196483760E /* RuntimeScheduler_Modern.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeScheduler_Modern.h; sourceTree = ""; }; 45E05ACB5D6C411D85AD9B6A40C2DD2E /* RuntimeAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeAgent.h; sourceTree = ""; }; 45FA7F5F8B8980E56D777737778E2381 /* React-RCTImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTImage-dummy.m"; sourceTree = ""; }; 464776232CDC5618B023B03B587FF834 /* simdjson-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "simdjson-prefix.pch"; sourceTree = ""; }; 466A8EAE41785C3EA08D830470EABB6B /* Arena-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Arena-inl.h"; path = "folly/memory/Arena-inl.h"; sourceTree = ""; }; 468E6DDCB31D801D029C02EF35D5C24C /* React-runtimeexecutor.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-runtimeexecutor.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 469194BAB9EE78B8BC1A3877E5EB169C /* jsi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = jsi.h; path = jsi/jsi.h; sourceTree = ""; }; 4695EA457448E4B94A1CB1A54D7440C3 /* RCTLog.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLog.mm; sourceTree = ""; }; 46E1F838DD66034E7F76591680E8F0F6 /* he.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = he.lproj; path = React/I18n/strings/he.lproj; sourceTree = ""; }; 46EA19D378721E8E4D853840E6430E2C /* ParagraphLayoutManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphLayoutManager.cpp; path = react/renderer/components/text/ParagraphLayoutManager.cpp; sourceTree = ""; }; 46EDCFA392F4FA15E1D6087289E0B88B /* fmt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "fmt-prefix.pch"; sourceTree = ""; }; 46F019BC62AF7DC88D7C7732C66B0216 /* ConcreteState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcreteState.h; path = react/renderer/core/ConcreteState.h; sourceTree = ""; }; 46F5E5B9B1380E064D67E9508C78BACF /* UIManagerAnimationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManagerAnimationDelegate.h; path = react/renderer/uimanager/UIManagerAnimationDelegate.h; sourceTree = ""; }; 4738F10785BD68311DE222F91337CB33 /* RCTModalHostViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewManager.m; sourceTree = ""; }; 473969280531057CD249A18AC62DD076 /* AtomicUnorderedMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicUnorderedMap.h; path = folly/AtomicUnorderedMap.h; sourceTree = ""; }; 475E63C49DABE072747B2ACDE9DE0BA5 /* RCTImageComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTImageComponentView.h; sourceTree = ""; }; 479CC64ABABA112D0CD8C3AF4C19786C /* Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.plist"; sourceTree = ""; }; 47AD1D90749E8B75D93FDBB70F9F6ABA /* TokenBucket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TokenBucket.h; path = folly/TokenBucket.h; sourceTree = ""; }; 47BE5F90D494B6D74BB9880F6EBD0D1D /* RCTLegacyViewManagerInteropComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLegacyViewManagerInteropComponentView.h; sourceTree = ""; }; 47ECF5C97B3CE613ADC79EB219369BD2 /* CacheLocality.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = CacheLocality.cpp; path = folly/concurrency/CacheLocality.cpp; sourceTree = ""; }; 4811CBBB4C46F7C891F1F7E426628CBD /* RCTNetworkPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNetworkPlugins.mm; sourceTree = ""; }; 48151421313275AE47A1F36C49F1AC43 /* RCTInputAccessoryViewContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewContent.h; sourceTree = ""; }; 4815C38AF6C2FD23A9E98263CAFC071E /* Unit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Unit.h; path = folly/Unit.h; sourceTree = ""; }; 481D4593ECDD5D02E193B28FEF265A45 /* simdjson.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = simdjson.release.xcconfig; sourceTree = ""; }; 482077692C71BA225ECEBBE9626B7C22 /* ReactCommon.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = ReactCommon.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 485B66F0206CCA9ACBE8269CA49B3639 /* RCTBundleURLProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBundleURLProvider.mm; sourceTree = ""; }; 4873FC718C30FB33CE887064BF8E5DE8 /* F14Map-fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "F14Map-fwd.h"; path = "folly/container/F14Map-fwd.h"; sourceTree = ""; }; 488ADD85E24689EBD7862B0D4E7CA547 /* FallbackRuntimeAgentDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FallbackRuntimeAgentDelegate.h; sourceTree = ""; }; 489E69C87D3FBB7418B3000B710B6899 /* RootShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RootShadowNode.h; path = react/renderer/components/root/RootShadowNode.h; sourceTree = ""; }; 48A56339A525A7972D16108E1C573FA7 /* IndexedMemPool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IndexedMemPool.h; path = folly/IndexedMemPool.h; sourceTree = ""; }; 48B75222BE84998C3999916E6084DAD4 /* LayoutResults.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutResults.cpp; sourceTree = ""; }; 48B93F350B7CEAA9026208326081EA41 /* RCTDiffClampAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDiffClampAnimatedNode.h; sourceTree = ""; }; 48C37A67E9B9AEBECBFDBF2939F0F488 /* RCTGenericDelegateSplitter.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTGenericDelegateSplitter.mm; sourceTree = ""; }; 48D1454DD898A877C683DE012FCE946E /* Format-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Format-inl.h"; path = "folly/Format-inl.h"; sourceTree = ""; }; 48D442CA49CE18D23E61AE09E67355CC /* React-jsinspector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsinspector.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 4929D6CBAA4CA6E284FE157B1BD57DA0 /* ImageResponseObserverCoordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageResponseObserverCoordinator.cpp; path = react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp; sourceTree = ""; }; 492BFB87D3FC79B8A5E5053209507E96 /* RCTInspectorDevServerHelper.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInspectorDevServerHelper.mm; sourceTree = ""; }; 492C01ACF6D4D924E6561FCD33DB914D /* RCTCursor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCursor.h; sourceTree = ""; }; 492E9A2ED4F5B423E522887CB7BCF477 /* RCTDisplayWeakRefreshable.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDisplayWeakRefreshable.mm; sourceTree = ""; }; 493BF367283D552EA0719F4472FB1C1E /* Varint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Varint.h; path = folly/Varint.h; sourceTree = ""; }; 49549BCF8744CE247C53A44E2598E79D /* React-RuntimeCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RuntimeCore-prefix.pch"; sourceTree = ""; }; 498AA16C83135C6DAEFCEAE97628D0D5 /* RCTLogBoxView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLogBoxView.mm; sourceTree = ""; }; 4997893AEC6DB585E2DB2AC06E6557FD /* PointerEvent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = PointerEvent.cpp; path = react/renderer/components/view/PointerEvent.cpp; sourceTree = ""; }; 49B8EB5E3B6498FDDA1A80E45FA97979 /* ReactNativeFeatureFlags.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ReactNativeFeatureFlags.cpp; sourceTree = ""; }; 49C7723A5D97C7404CB0972A1F44276F /* Yoga.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Yoga.debug.xcconfig; sourceTree = ""; }; 49C8ED14DB40A8E3E597CC83FDA19B4B /* RCTComponentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTComponentData.m; sourceTree = ""; }; 4A1561C46AF8A258D7CDA8942E5C9828 /* RCTBridgeProxy+Cxx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTBridgeProxy+Cxx.h"; sourceTree = ""; }; 4A3E59A3CCA7D3024E30ACFBCE006065 /* DebuggerAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DebuggerAPI.h; path = destroot/include/hermes/DebuggerAPI.h; sourceTree = ""; }; 4ABE2E714C1175CCFDB7C0F72CE4B611 /* RCTProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTProfile.m; sourceTree = ""; }; 4AE459B4FB63DF08755386C3B4D759D8 /* FBReactNativeSpecJSI-generated.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "FBReactNativeSpecJSI-generated.cpp"; sourceTree = ""; }; 4B22A0860FE6BF2F9CC4F24C6A16C02B /* EventQueueProcessor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventQueueProcessor.cpp; path = react/renderer/core/EventQueueProcessor.cpp; sourceTree = ""; }; 4B2CA6BADDBABE04EA3FC848D2DFBA7C /* React-RCTFabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTFabric.debug.xcconfig"; sourceTree = ""; }; 4B2DFF23AC104B04562F5A613D62A6E2 /* RCTSurfacePresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSurfacePresenter.h; path = Fabric/RCTSurfacePresenter.h; sourceTree = ""; }; 4B3894240F9F245719EDB8B1ADBE0FC7 /* RCTFollyConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFollyConvert.h; sourceTree = ""; }; 4B56A61B8E70277D187E3D37BFBF7897 /* stubs.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = stubs.cpp; path = react/renderer/mounting/stubs.cpp; sourceTree = ""; }; 4B62C6CE9D343C56E332C5816AC631E6 /* RCTConvert+Text.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTConvert+Text.h"; path = "Libraries/Text/RCTConvert+Text.h"; sourceTree = ""; }; 4BA4FB0F0557FD723CB5B38C308FCE50 /* Yoga.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Yoga.h; path = yoga/Yoga.h; sourceTree = ""; }; 4BAC8D0807F88C47E4DFD9F7C7859B82 /* InstanceTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InstanceTarget.h; sourceTree = ""; }; 4BB78B415F6A4B0EED05C08EA7A7D03D /* RCTImageLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageLoader.mm; sourceTree = ""; }; 4BB7FF49C6C69146DEE4B499147BB9B0 /* InspectorFlags.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFlags.cpp; sourceTree = ""; }; 4BC7B5A86B19E285F310EB16BDE027DE /* RCTImageManagerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageManagerProtocol.h; path = react/renderer/imagemanager/RCTImageManagerProtocol.h; sourceTree = ""; }; 4BEF5A191F5C9D7D1C8386FB298882BE /* StubView.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = StubView.cpp; path = react/renderer/mounting/StubView.cpp; sourceTree = ""; }; 4BEF797D469DBDB850A55FFDD493B789 /* RCTCxxInspectorWebSocketAdapter.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxInspectorWebSocketAdapter.mm; sourceTree = ""; }; 4C0E7A0629DD1A33991E0281C1D7EA6F /* RCTImagePrimitivesConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImagePrimitivesConversions.h; path = react/renderer/imagemanager/RCTImagePrimitivesConversions.h; sourceTree = ""; }; 4C138289B336DA780427BF289634EA74 /* RCTRequired.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTRequired.debug.xcconfig; sourceTree = ""; }; 4C260B39655A7EBBA430142A5FAC7288 /* SurfaceTelemetry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SurfaceTelemetry.h; path = react/renderer/telemetry/SurfaceTelemetry.h; sourceTree = ""; }; 4C46B7B386338A3CF2226940A341403E /* Libunwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Libunwind.h; path = folly/portability/Libunwind.h; sourceTree = ""; }; 4C4CB2CD0399561C3717DBAB197899E7 /* RCTJSThread.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTJSThread.m; sourceTree = ""; }; 4C4D1C251906CB5D9F8086B2747C1522 /* NodeType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NodeType.h; sourceTree = ""; }; 4C4D4C35312AE9ACB8D59A46D0D6051A /* double-conversion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "double-conversion.h"; path = "double-conversion/double-conversion.h"; sourceTree = ""; }; 4C5E9B3E860020EB74A5A0DCB92E545F /* RunLoopObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RunLoopObserver.h; sourceTree = ""; }; 4C664E2A68FE1D2FA0458ED4485088A9 /* React-RCTText.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTText.debug.xcconfig"; sourceTree = ""; }; 4C8F91F7CAFA9A5744781FD95C2E01DA /* RCTSettingsPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSettingsPlugins.h; path = Libraries/Settings/RCTSettingsPlugins.h; sourceTree = ""; }; 4CAB10F1ADF33F5BF62A774463140259 /* Constexpr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Constexpr.h; path = folly/portability/Constexpr.h; sourceTree = ""; }; 4CC04D4366699171D90B6E14F8947CBD /* RCTTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextView.h; sourceTree = ""; }; 4CE7D7393D013F61BE78DD0E2CDA786F /* EventBeat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventBeat.h; path = react/renderer/core/EventBeat.h; sourceTree = ""; }; 4D0CA4B3C631CF1CCBBF61F2587F57B7 /* BaseTextShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BaseTextShadowNode.cpp; path = react/renderer/components/text/BaseTextShadowNode.cpp; sourceTree = ""; }; 4D27045A96C63465EC6F9A1AED2DED9D /* React-jsiexecutor.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsiexecutor.release.xcconfig"; sourceTree = ""; }; 4DA4CDB70B04DEA86A7EA3B9F6B6C060 /* RCTAppearance.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAppearance.mm; sourceTree = ""; }; 4DC0B393EEF985A3E4643B20F6754757 /* RCTComponentViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewProtocol.h; sourceTree = ""; }; 4DD488FCCA9EEDD9B68B8F99D105C44A /* Preprocessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Preprocessor.h; path = folly/Preprocessor.h; sourceTree = ""; }; 4DD6B4C58B299EAE1A3E500A3EDE0002 /* InstanceHandle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = InstanceHandle.h; path = react/renderer/core/InstanceHandle.h; sourceTree = ""; }; 4DE72A397551E705994E98D86904430A /* React-RuntimeHermes.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeHermes.release.xcconfig"; sourceTree = ""; }; 4E105C5D9C4A539112084489DC235CAB /* RCTDeprecation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDeprecation.m; sourceTree = ""; }; 4E54C446AD8887C61105DE1F1011BC2F /* RCTTypedModuleConstants.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTypedModuleConstants.mm; sourceTree = ""; }; 4E606A9762AB8D4C06B74BC1924936FF /* Lock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lock.h; path = folly/synchronization/Lock.h; sourceTree = ""; }; 4E97DA6EC4EC14E2148BD7844BD1F3A3 /* SanitizeAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SanitizeAddress.h; path = folly/memory/SanitizeAddress.h; sourceTree = ""; }; 4ECA42F97FBA48C55D95F16BEB240CE4 /* CtorConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CtorConfig.h; path = destroot/include/hermes/Public/CtorConfig.h; sourceTree = ""; }; 4EE65A27409B6614EB4E7E08374FDCA8 /* Yoga-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Yoga-umbrella.h"; sourceTree = ""; }; 4EEB093EC638788E1D7EDFEC04D19432 /* RCTDevLoadingViewSetEnabled.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDevLoadingViewSetEnabled.m; sourceTree = ""; }; 4F1014498794A7BE263384E6C973334C /* ImageShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageShadowNode.cpp; path = react/renderer/components/image/ImageShadowNode.cpp; sourceTree = ""; }; 4F21E8185A97B7403E0532DBCEAE20ED /* RCTVibration.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTVibration.mm; sourceTree = ""; }; 4F2D0D22F314D7C2DE88B31A3FC2C571 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/attributedstring/conversions.h; sourceTree = ""; }; 4F3E9C98444FA55E416B857143C48013 /* React-RuntimeHermes */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RuntimeHermes"; path = "libReact-RuntimeHermes.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 4F3F30A04837205FCBA040E0445525A6 /* RWSpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RWSpinLock.h; path = folly/synchronization/RWSpinLock.h; sourceTree = ""; }; 4F46D9F3383D17EBE93722534A1D68D4 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/components/text/conversions.h; sourceTree = ""; }; 4FE6AAB9CCD62E8CE2B1E03FA145C8B8 /* BufferedRuntimeExecutor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = BufferedRuntimeExecutor.cpp; sourceTree = ""; }; 500E0FB005F00271DB2A0C68724900DA /* RCTShadowView+Layout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Layout.h"; sourceTree = ""; }; 506A5EB970B15ADBF0D61002534BC9B1 /* SysMman.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysMman.h; path = folly/portability/SysMman.h; sourceTree = ""; }; 506E11C60093C5C364DE8F3F2F22AC41 /* RCTLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayout.h; sourceTree = ""; }; 507CCE949602395770BDF4CA5A58B07A /* StubViewTree.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = StubViewTree.cpp; path = react/renderer/mounting/StubViewTree.cpp; sourceTree = ""; }; 509A9FBAE4B5971C315FA3AB4924204D /* RCTUnimplementedViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUnimplementedViewComponentView.mm; sourceTree = ""; }; 50A063D0B84A8706BF9D36E052AFDCA4 /* SysResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysResource.h; path = folly/portability/SysResource.h; sourceTree = ""; }; 50CCFCC93BE3FD24C09BEB499BEACA7B /* React-cxxreact.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-cxxreact.debug.xcconfig"; sourceTree = ""; }; 50DAB08AF16996E1B2836D9927C3D32A /* React-RCTImage.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTImage.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 50E197DCEAC19B139D61338F626D0ECE /* RCTReactTaggedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTReactTaggedView.h; sourceTree = ""; }; 513728BBF69F10E478D203C24AE89494 /* RCTSpringAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSpringAnimation.mm; sourceTree = ""; }; 51396501E3E25FB7DCB5E276B819C556 /* WatermelonDB-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "WatermelonDB-dummy.m"; sourceTree = ""; }; 51582CF5BC4E40FAA616B6363DF4B4A5 /* ImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageManager.h; path = react/renderer/imagemanager/ImageManager.h; sourceTree = ""; }; 5176B30F1DFC1E15711AA1F63DEFEEE3 /* InputAccessoryShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = InputAccessoryShadowNode.h; path = react/renderer/components/inputaccessory/InputAccessoryShadowNode.h; sourceTree = ""; }; 5181AFE5FC05B015D0F98EAB49991236 /* RCTNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTNullability.h; sourceTree = ""; }; 51B45045020F47D86FEF4BD034627881 /* RCTPullToRefreshViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPullToRefreshViewComponentView.h; sourceTree = ""; }; 51B5078EBA4D2CDB62D5B9977620515C /* RCTImageUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageUtils.mm; sourceTree = ""; }; 51BFECF146A1165D167989F92AE6C0CC /* TypeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TypeInfo.h; path = folly/lang/TypeInfo.h; sourceTree = ""; }; 51C1705E9B13860E1A5ED501BF5D9BD4 /* RawValue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawValue.cpp; path = react/renderer/core/RawValue.cpp; sourceTree = ""; }; 51CBEFF89517A9EE045E0A3F9D3939B5 /* RCTLegacyViewManagerInteropCoordinatorAdapter.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLegacyViewManagerInteropCoordinatorAdapter.mm; sourceTree = ""; }; 51F1662929364AF9AB1F5EFD515C39CA /* React-RCTFabric-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTFabric-umbrella.h"; sourceTree = ""; }; 51FCC6E2D2922D4288A83D114839FF83 /* React-CoreModules-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-CoreModules-dummy.m"; sourceTree = ""; }; 520B63F372380D55B40793B5BB10A39F /* EventDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventDispatcher.h; path = react/renderer/core/EventDispatcher.h; sourceTree = ""; }; 5216E04A7C94A5B08BF8F3BD20CDAAD7 /* RCTEventDispatcherProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventDispatcherProtocol.h; sourceTree = ""; }; 522269B8DAFA9F8734D95340BC29600A /* diy-fp.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "diy-fp.cc"; path = "double-conversion/diy-fp.cc"; sourceTree = ""; }; 52271E0F8ED452014891F20BD4947CFF /* UIManagerCommitHook.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManagerCommitHook.h; path = react/renderer/uimanager/UIManagerCommitHook.h; sourceTree = ""; }; 522819EFAF89C9070CB50445ACD48721 /* TurboModulePerfLogger.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TurboModulePerfLogger.cpp; path = react/nativemodule/core/ReactCommon/TurboModulePerfLogger.cpp; sourceTree = ""; }; 52332B91843419E05974FD7AA782856B /* ParagraphAttributes.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphAttributes.cpp; path = react/renderer/attributedstring/ParagraphAttributes.cpp; sourceTree = ""; }; 52350E9ADA2301F7191C925F1DCDD5BE /* RCTTouchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchHandler.m; sourceTree = ""; }; 52DD466CEB37236E0239E023F92F17AF /* ComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptor.h; path = react/renderer/core/ComponentDescriptor.h; sourceTree = ""; }; 52DFAF9CB84CA1E1BDC56A3F71A3C404 /* FBLazyVector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBLazyVector.release.xcconfig; sourceTree = ""; }; 52E49CCBB965394C8B3C6525BA37644D /* RCTSyncImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSyncImageManager.h; path = react/renderer/imagemanager/RCTSyncImageManager.h; sourceTree = ""; }; 52FA0467104A3E0506B07D0F4D83C94A /* RCTEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventEmitter.h; sourceTree = ""; }; 52FAACC98D9676B0C965D8484DF9C51E /* format.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = format.cc; path = src/format.cc; sourceTree = ""; }; 52FB16E6F0925BA9FE8A9E2D77086C08 /* RuntimeConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RuntimeConfig.h; path = destroot/include/hermes/Public/RuntimeConfig.h; sourceTree = ""; }; 531B578A8FF205619BD8E526C7C60930 /* FarmHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FarmHash.h; path = folly/hash/FarmHash.h; sourceTree = ""; }; 5366D59A6C60853DE6216206318AD290 /* React-perflogger-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-perflogger-prefix.pch"; sourceTree = ""; }; 53698A773FE28A1702762D414C8FD31B /* RCTCxxInspectorPackagerConnection.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxInspectorPackagerConnection.mm; sourceTree = ""; }; 53B4E188053652EA7D2E30691509AA9F /* RCTFrameUpdate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFrameUpdate.h; sourceTree = ""; }; 53C4B697D1793E966C34C78BD44F6D02 /* RCTModalHostViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewComponentView.h; sourceTree = ""; }; 53F62FE9FCA2DB3B3BA9F838F5513256 /* RCTAttributedTextUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAttributedTextUtils.h; sourceTree = ""; }; 5424951447BE1FD64194B009E9504B50 /* RCTScrollEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollEvent.m; sourceTree = ""; }; 5433FC0C0EE55FB7FA9D9BCA99A39650 /* Executor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Executor.h; path = folly/Executor.h; sourceTree = ""; }; 5435E25ABF1C803D1D8B6ADE22E2664D /* json_pointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = json_pointer.h; path = folly/json_pointer.h; sourceTree = ""; }; 543D873E1BAD025BDD864DB650682C5D /* React-RCTSettings.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTSettings.release.xcconfig"; sourceTree = ""; }; 544A0D0CF86148CB2EF0B78039179444 /* RCTDataRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDataRequestHandler.h; path = Libraries/Network/RCTDataRequestHandler.h; sourceTree = ""; }; 5466515A64A57AE3158EEA66741CDABC /* RCTCustomPullToRefreshViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCustomPullToRefreshViewProtocol.h; sourceTree = ""; }; 54977C60EFA8732D452D9D03923B5270 /* Unicode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Unicode.cpp; path = folly/Unicode.cpp; sourceTree = ""; }; 54B9E0DF52755792E0D7A095A1592309 /* React-RCTBlob.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTBlob.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 54C3134B4FA97F946996018EB76D6F2B /* Builtins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Builtins.h; path = folly/portability/Builtins.h; sourceTree = ""; }; 54CED87C8170B13841D92A0113192459 /* WMDatabaseDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WMDatabaseDriver.h; sourceTree = ""; }; 550DDF0017EBD296665C75C459009C19 /* LeakChecker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LeakChecker.cpp; path = react/renderer/leakchecker/LeakChecker.cpp; sourceTree = ""; }; 5510FC0409FF02AA7A39E8542D74B323 /* YGEnums.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGEnums.cpp; path = yoga/YGEnums.cpp; sourceTree = ""; }; 553967D7C1E460B2FF3E819215A2EC75 /* CrashManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CrashManager.h; path = destroot/include/hermes/Public/CrashManager.h; sourceTree = ""; }; 55399075C21EA2F4687C29DEBD4F00E7 /* React-debug-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-debug-umbrella.h"; sourceTree = ""; }; 5545A49E67978F2CEF8C77F63D7368FF /* Style.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Style.h; sourceTree = ""; }; 555499AEC258DE52284D569572113A79 /* bignum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bignum.h; path = "double-conversion/bignum.h"; sourceTree = ""; }; 555C8E2826D8F277B972F2B66D34F22B /* fixed-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fixed-dtoa.cc"; path = "double-conversion/fixed-dtoa.cc"; sourceTree = ""; }; 558A2EBBB9500DC131AEC7C0A404E3B9 /* TracingRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TracingRuntime.h; path = destroot/include/hermes/TracingRuntime.h; sourceTree = ""; }; 558ED3C1B5F36FE5842EBF04C4FC985C /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nb.lproj; path = React/I18n/strings/nb.lproj; sourceTree = ""; }; 55B1D50AB670D1ED574D945561008297 /* RCTMultilineTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultilineTextInputViewManager.h; sourceTree = ""; }; 55BB048CB3ED0500BC5E984EC4283580 /* FingerprintPolynomial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FingerprintPolynomial.h; path = folly/detail/FingerprintPolynomial.h; sourceTree = ""; }; 55EADA43B34BE3D62BAE2D869390C842 /* Futex.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Futex.cpp; path = folly/detail/Futex.cpp; sourceTree = ""; }; 55F26557222F60DEF94D6A5C8A9D24F9 /* React-RCTNetwork.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTNetwork.debug.xcconfig"; sourceTree = ""; }; 5601EFF66A7656BA9E668AE17351D360 /* React.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = React.debug.xcconfig; sourceTree = ""; }; 5607E93C1618AA4B1B9A7B366EA9EB0F /* RootShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RootShadowNode.cpp; path = react/renderer/components/root/RootShadowNode.cpp; sourceTree = ""; }; 561201E4162AB6CB05D4F749A565AFCC /* Align.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Align.h; sourceTree = ""; }; 56124900DA31ECD2F222CD4A72DBF2BC /* React-jsinspector.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-jsinspector.modulemap"; sourceTree = ""; }; 561C2BF4C1B754CC987BD95FC0FA1F37 /* hermes-engine-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "hermes-engine-xcframeworks.sh"; sourceTree = ""; }; 5627C2F1A2A3B2FFA118B0BD3069A5B9 /* RCTAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAssert.h; sourceTree = ""; }; 5648100E641B6682FAC595B66FFBC6B5 /* Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh"; sourceTree = ""; }; 5660D2686BFA4493932307298F162071 /* ExecutionContextManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ExecutionContextManager.h; sourceTree = ""; }; 5671AD120864F71635B5C5BD07138E67 /* F14Mask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Mask.h; path = folly/container/detail/F14Mask.h; sourceTree = ""; }; 5675EDF737917D753E24442B6327797A /* RCTRootViewDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewDelegate.h; sourceTree = ""; }; 5676712895937C4B56B481AD3916DC06 /* WeakFamilyRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = WeakFamilyRegistry.cpp; path = react/renderer/leakchecker/WeakFamilyRegistry.cpp; sourceTree = ""; }; 568619787B3509509A5FFEA27285F968 /* RCTUIUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIUtils.h; sourceTree = ""; }; 56909D6C087AAA9D6C77D684FEC0C328 /* simdjson.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = simdjson.debug.xcconfig; sourceTree = ""; }; 56AAE7ABD3415795FAEEE07A449DD7AE /* Function.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Function.h; path = folly/Function.h; sourceTree = ""; }; 56B4C070CA7B93A1F321D02E003223BA /* glog.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = glog.modulemap; sourceTree = ""; }; 56BBA94041D86275E476DAC1DD401197 /* RCTFabricSurface.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFabricSurface.mm; sourceTree = ""; }; 56D34A45C0AD73CC42339EC6A2CA028E /* StateUpdate.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = StateUpdate.cpp; path = react/renderer/core/StateUpdate.cpp; sourceTree = ""; }; 57094883E054C3166427AC3CFF403965 /* Differentiator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Differentiator.cpp; path = react/renderer/mounting/Differentiator.cpp; sourceTree = ""; }; 570DABFC32CF97AB28B8269609BAD9F8 /* Class.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Class.h; path = react/bridging/Class.h; sourceTree = ""; }; 5732AA2AC0D6C97862F2E84E6A43D27D /* RCTFPSGraph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFPSGraph.h; path = React/CoreModules/RCTFPSGraph.h; sourceTree = ""; }; 5742CED06F824159A9F9C6FCDF8F66EB /* RCTTransformAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTransformAnimatedNode.mm; sourceTree = ""; }; 5744FF8972259231F82207B5D2C1B114 /* vi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = vi.lproj; path = React/I18n/strings/vi.lproj; sourceTree = ""; }; 5776F9A564A106E1D34D8C2B6FB41C78 /* TcpInfoTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TcpInfoTypes.h; path = folly/net/TcpInfoTypes.h; sourceTree = ""; }; 57BBCC84BCDB23D6ADA72EA6128CE796 /* RCTImageCache.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageCache.mm; sourceTree = ""; }; 57C409D3D492DAB7368ECE438E121DB5 /* RCTStyleAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTStyleAnimatedNode.h; sourceTree = ""; }; 58025C2DBA6481310CDDD6E2AF2341E3 /* React-utils.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-utils.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 581A1FBA46FBC346F25CDD31C00AE6B9 /* SingletonThreadLocal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SingletonThreadLocal.h; path = folly/SingletonThreadLocal.h; sourceTree = ""; }; 581AB95CD00868534D40A89FC7298A36 /* RCTPlatform.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPlatform.mm; sourceTree = ""; }; 5825A770C846E9DE0D37D57F8AE02E36 /* RCTColorAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTColorAnimatedNode.mm; sourceTree = ""; }; 582D8ADF4BEE51D724800E05D34ACDCA /* DynamicConverter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DynamicConverter.h; path = folly/DynamicConverter.h; sourceTree = ""; }; 584180DC3B2C183B2687C5F1857403FF /* DiscriminatedPtr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DiscriminatedPtr.h; path = folly/DiscriminatedPtr.h; sourceTree = ""; }; 58591CA75671A3724AEF97FE040632D7 /* GFlags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GFlags.h; path = folly/portability/GFlags.h; sourceTree = ""; }; 586843BE182EC40BA0F3E64B3128724F /* RCTRawTextShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTRawTextShadowView.mm; sourceTree = ""; }; 586BE0D668A4FAAEE338C3991530ACC0 /* PThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PThread.h; path = folly/portability/PThread.h; sourceTree = ""; }; 5883D7A51536D3FB292BBC1FEF7C6C1C /* React.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = React.release.xcconfig; sourceTree = ""; }; 58B548A2C55831264828B2298FF825B1 /* CpuId.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CpuId.h; path = folly/CpuId.h; sourceTree = ""; }; 58C1E8B779C42177C4AE37F87FA08B90 /* React-CoreModules.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-CoreModules.release.xcconfig"; sourceTree = ""; }; 59164B030AA6BE9DC3304EDD7E90FEEE /* F14Table.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Table.h; path = folly/container/detail/F14Table.h; sourceTree = ""; }; 5931C556E2652C0F4090A1106D4FEAD0 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = React/I18n/strings/en.lproj; sourceTree = ""; }; 598C51078F81B88ECED26E0192A48207 /* WMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = WMDatabase.m; sourceTree = ""; }; 59FDF98892BF9744DCB3D5402C366923 /* RCTAlertManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAlertManager.h; path = React/CoreModules/RCTAlertManager.h; sourceTree = ""; }; 5A0B5D9D59E5E269C5427D81B4D4CF05 /* Pods-WatermelonTester-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-WatermelonTester-frameworks.sh"; sourceTree = ""; }; 5A5CA98B839AFCD15AE40CBB92C32436 /* to_underlying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = to_underlying.h; sourceTree = ""; }; 5A623EC312D3BCD944313E099426740F /* PointerHoverTracker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = PointerHoverTracker.cpp; path = react/renderer/uimanager/PointerHoverTracker.cpp; sourceTree = ""; }; 5AA54A19E2135E09B9C8C0767385FD3A /* React-graphics */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-graphics"; path = "libReact-graphics.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 5AC69D8640FF5ADCACD89B82CB9E1110 /* React-utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-utils-dummy.m"; sourceTree = ""; }; 5AE62E3EA1E11A2011DFB36206854AB4 /* Aligned.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Aligned.h; path = folly/lang/Aligned.h; sourceTree = ""; }; 5AEA1EA0BA3625CC695A4E11E09FA24B /* RCTTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextShadowView.h; sourceTree = ""; }; 5B47FFA4BCF0EC2E8F7A7330A0B625F7 /* RCTViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTViewManager.h; sourceTree = ""; }; 5B62D2EDAEE105EA46E50A51A6DCC4FB /* YGNodeLayout.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGNodeLayout.cpp; path = yoga/YGNodeLayout.cpp; sourceTree = ""; }; 5B81B76C387972027C9B1637E2E6A612 /* HermesRuntimeAgentDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HermesRuntimeAgentDelegate.h; sourceTree = ""; }; 5BD6398C6C92DF26317E3DC8E027D927 /* PackTraits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PackTraits.h; sourceTree = ""; }; 5BD78C8466D2DAC22B989C5EFC592BAD /* Badge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Badge.h; path = folly/lang/Badge.h; sourceTree = ""; }; 5C02361943CFC4D43BDE38DB0C69F197 /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Config.h; path = folly/portability/Config.h; sourceTree = ""; }; 5C3154BBEBE29BF292E5169F75CBD889 /* RawTextShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawTextShadowNode.cpp; path = react/renderer/components/text/RawTextShadowNode.cpp; sourceTree = ""; }; 5C54A77AACDC4EFCA476CD638F5287E1 /* Shell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Shell.h; path = folly/system/Shell.h; sourceTree = ""; }; 5C6AF51B4A4EA15B2F122DBA7BA5B2A0 /* ConcreteViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcreteViewShadowNode.h; path = react/renderer/components/view/ConcreteViewShadowNode.h; sourceTree = ""; }; 5CA8FFB264289551FCCAE29495EBE650 /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/core/conversions.h; sourceTree = ""; }; 5CD701537B4A3BB9EB36F3D0373E62EC /* React-Mapbuffer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-Mapbuffer.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 5D024556120FC57697C2ECE69C53D36B /* AsyncTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AsyncTrace.h; path = folly/detail/AsyncTrace.h; sourceTree = ""; }; 5D1C0A821BD026A9A939C64687CBD024 /* Pods-WatermelonTester-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-WatermelonTester-resources.sh"; sourceTree = ""; }; 5D24035ED25B87D45E72A4CFB861C024 /* React-Core-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-Core-dummy.m"; sourceTree = ""; }; 5D826D3061A245096B1C382B690FA981 /* ostream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ostream.h; path = include/fmt/ostream.h; sourceTree = ""; }; 5D8D501AFD4360EBEB5A66144AEC1729 /* BufferedRuntimeExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BufferedRuntimeExecutor.h; sourceTree = ""; }; 5DA7D4069EAB7AD175067D9475F75335 /* EventEmitters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventEmitters.h; path = react/renderer/components/rncore/EventEmitters.h; sourceTree = ""; }; 5DC5AD5C90390C13DD621B5A02EEE993 /* Chrono.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chrono.h; path = folly/Chrono.h; sourceTree = ""; }; 5E08C1229511DE5F11A5D0235BB42789 /* MessageTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MessageTypes.h; path = destroot/include/hermes/inspector/chrome/MessageTypes.h; sourceTree = ""; }; 5E2250F8ED2A809808FB295A155DA713 /* PropsParserContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PropsParserContext.h; path = react/renderer/core/PropsParserContext.h; sourceTree = ""; }; 5E4D8475C8A1839D5568E707455D012D /* DebugStringConvertibleItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DebugStringConvertibleItem.h; sourceTree = ""; }; 5E745C18EFA47BE9828C298066E9F6F5 /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = include/fmt/core.h; sourceTree = ""; }; 5E78187A78E9550C8C47E82A7E0800C4 /* RuntimeScheduler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeScheduler.h; sourceTree = ""; }; 5E9F375741E65415151EE9093DC1535E /* RCTPackagerClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPackagerClient.m; sourceTree = ""; }; 5EA1F0E80816FE3C537ADE1BE9E97082 /* RCTI18nManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTI18nManager.h; path = React/CoreModules/RCTI18nManager.h; sourceTree = ""; }; 5ED53EC43FC74FD8B1F3A1C21AF5D357 /* DoubleConversion.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DoubleConversion.modulemap; sourceTree = ""; }; 5F7413AEE06FEB42B977D20F6A6C5D5E /* MessageTypesInlines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MessageTypesInlines.h; path = destroot/include/hermes/inspector/chrome/MessageTypesInlines.h; sourceTree = ""; }; 5F85C8CC15CDC85E857260E4CDDF9817 /* IOVec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IOVec.h; path = folly/portability/IOVec.h; sourceTree = ""; }; 5F8810FFDF257E41E57C7103FDC6A5BB /* SRDelegateController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRDelegateController.m; path = SocketRocket/Internal/Delegate/SRDelegateController.m; sourceTree = ""; }; 5F8E380C0D44C30A7EB64835C56687EA /* FormatArg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FormatArg.h; path = folly/FormatArg.h; sourceTree = ""; }; 5FA7D9A20F443352B3F132A2348CEAF5 /* RCTDebuggingOverlayManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDebuggingOverlayManager.m; sourceTree = ""; }; 5FAC834F5ADBD6F3EEF6BE67C8BE5F06 /* FixedString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FixedString.h; path = folly/FixedString.h; sourceTree = ""; }; 5FB7F5153FEFAD2FCC98DA600D4A18B3 /* RCTActivityIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorView.h; sourceTree = ""; }; 5FCFFA906B90C33953D846D226E2DF4B /* RCTPerformanceLogger.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPerformanceLogger.mm; sourceTree = ""; }; 5FD76DB8A83861EF7CD0449CFC4DE097 /* Filesystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Filesystem.h; path = folly/portability/Filesystem.h; sourceTree = ""; }; 5FFB2C7DB283EB3379974035A76B3B13 /* ShadowTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowTree.h; path = react/renderer/mounting/ShadowTree.h; sourceTree = ""; }; 606BAB14D960C896D177B10A3540386B /* RCTTypeSafety-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTTypeSafety-dummy.m"; sourceTree = ""; }; 6075D4D4439E8587250CA17C18029EFE /* PlatformRunLoopObserver.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = PlatformRunLoopObserver.mm; sourceTree = ""; }; 608A42FC636CC123077F86095300FDD8 /* HostPlatformColor.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = HostPlatformColor.mm; sourceTree = ""; }; 609281012AE698DC460A40129D138A06 /* RCTSinglelineTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSinglelineTextInputView.h; sourceTree = ""; }; 60B6FDAEA7F1F74C6155EF59EFCCA58E /* SysFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysFile.h; path = folly/portability/SysFile.h; sourceTree = ""; }; 60D5A56E763D6E7C4FBE797565062EEA /* React-nativeconfig */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-nativeconfig"; path = "libReact-nativeconfig.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 60DAB499CFAAD9EB49E01C7C8B9A5F15 /* RectangleEdges.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RectangleEdges.h; sourceTree = ""; }; 60E4F60D2C2C4C8B7116D0D69FD78717 /* ScrollViewState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScrollViewState.h; path = react/renderer/components/scrollview/ScrollViewState.h; sourceTree = ""; }; 61074D38D23CB60AF7788D75C0DEFE73 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fr.lproj; path = React/I18n/strings/fr.lproj; sourceTree = ""; }; 610A9C5BDF3BEADA074AB1F27B23F1F8 /* ScrollViewComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScrollViewComponentDescriptor.h; path = react/renderer/components/scrollview/ScrollViewComponentDescriptor.h; sourceTree = ""; }; 611398E0E68366F20ADC93BC5D04C7B0 /* TouchEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TouchEvent.h; path = react/renderer/components/view/TouchEvent.h; sourceTree = ""; }; 6117F9BDA4E91FB3D03F3728A914954A /* SRRunLoopThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRunLoopThread.h; path = SocketRocket/Internal/RunLoop/SRRunLoopThread.h; sourceTree = ""; }; 615E52518F5B3DD85052695A2414331A /* React-CoreModules-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-CoreModules-prefix.pch"; sourceTree = ""; }; 6189337A90AFF99D9CD0BDCCA472E2B3 /* FMResultSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMResultSet.h; sourceTree = ""; }; 6196FA4E5DE772F34B620947921AB6EF /* RCTPerformanceLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPerformanceLogger.h; sourceTree = ""; }; 619ABD655227A08759F91622DF2A1E18 /* RCTScheduler.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTScheduler.mm; path = Fabric/RCTScheduler.mm; sourceTree = ""; }; 61A6746F63145AAB8BD430D845B4B7F6 /* LegacyViewManagerInteropViewProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyViewManagerInteropViewProps.cpp; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp; sourceTree = ""; }; 61A80F68AE163B384B7D7A9E76B6046C /* React-FabricImage */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-FabricImage"; path = "libReact-FabricImage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 62321BBFBF2E8E88A946FF1C2655F069 /* ComponentDescriptorRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptorRegistry.h; path = react/renderer/componentregistry/ComponentDescriptorRegistry.h; sourceTree = ""; }; 629C51A688E90B65323CE6CC51796EE5 /* RCTUnimplementedViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUnimplementedViewComponentView.h; sourceTree = ""; }; 62B08039C2AE783CAF032BCB76890355 /* RCTValueAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTValueAnimatedNode.mm; sourceTree = ""; }; 62BB6D3A4CA3201C55AA818B8A0753A0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 62DB4477408C47E85F683E8ED165D3AB /* RCTSurfaceRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSurfaceRegistry.h; path = Fabric/RCTSurfaceRegistry.h; sourceTree = ""; }; 62F2B8A9CA2FD124CEED393804E7351A /* RCTImagePlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImagePlugins.h; path = Libraries/Image/RCTImagePlugins.h; sourceTree = ""; }; 6316526F1CBE0396E9767EDFD35C9870 /* RCTBackedTextInputDelegateAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputDelegateAdapter.h; sourceTree = ""; }; 631FE1EE541BDAE0AFB75102923ACDCC /* RCTTurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTurboModule.h; path = ReactCommon/RCTTurboModule.h; sourceTree = ""; }; 6344807426DBEA83083B947671B91C7D /* SafeAreaViewState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SafeAreaViewState.h; path = react/renderer/components/safeareaview/SafeAreaViewState.h; sourceTree = ""; }; 635016B0AE2DF86EDCC11EB4FBB41D5F /* WMDatabaseDriver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = WMDatabaseDriver.m; sourceTree = ""; }; 6353D5B2828F0A532FAC374FF901DD8D /* SurfaceTelemetry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SurfaceTelemetry.cpp; path = react/renderer/telemetry/SurfaceTelemetry.cpp; sourceTree = ""; }; 63646CDACE649B0945C14C4A4A8DB7A3 /* RCTRawTextViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTRawTextViewManager.mm; sourceTree = ""; }; 6368583633FFD741EE844FFC0D7DEA92 /* UIView+ComponentViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+ComponentViewProtocol.h"; sourceTree = ""; }; 6387BDDE6369AEDABBA8E222A92D7DDE /* WatermelonDB.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = WatermelonDB.release.xcconfig; sourceTree = ""; }; 63B3B00A3AAC44C23D4F7E237FE0D5C5 /* SimdCharPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SimdCharPlatform.h; path = folly/detail/SimdCharPlatform.h; sourceTree = ""; }; 63BFBBE25C646A1C221EEA23F4224C1D /* RCTScrollViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTScrollViewComponentView.mm; sourceTree = ""; }; 63CBEBB4485380F9D7F6FBA437DF4E46 /* TextInputComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextInputComponentDescriptor.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h; sourceTree = ""; }; 63DB097D064EEC088A4DDB9A0F3030F8 /* SRPinningSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRPinningSecurityPolicy.m; path = SocketRocket/Internal/Security/SRPinningSecurityPolicy.m; sourceTree = ""; }; 63F5F0571EA83996B53E596BF37008E4 /* Byte.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Byte.h; path = folly/lang/Byte.h; sourceTree = ""; }; 641D2E46DE82FDC74711D6550B34BB4B /* react_native_expect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = react_native_expect.h; sourceTree = ""; }; 6424FC955FE5FD23D675EE7BA5D86749 /* RCTFileRequestHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFileRequestHandler.mm; sourceTree = ""; }; 643840DD64D54B52A2193F98673994AE /* SystraceSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SystraceSection.h; sourceTree = ""; }; 6456B7E29C4C1FE96FE03B584C20AFD9 /* SchedulerPriority.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SchedulerPriority.h; path = ReactCommon/SchedulerPriority.h; sourceTree = ""; }; 645F364C7D0579436F0E777A3156F8C5 /* RCTImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageManager.h; path = react/renderer/imagemanager/RCTImageManager.h; sourceTree = ""; }; 64B98B991654E98484D4253805E17035 /* ComponentDescriptorRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentDescriptorRegistry.cpp; path = react/renderer/componentregistry/ComponentDescriptorRegistry.cpp; sourceTree = ""; }; 64E2EBE04E636B603A934FE6A23B5CFA /* React-logger-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-logger-prefix.pch"; sourceTree = ""; }; 650E79C6CD8DFAF97DD3E4B49C99A6BB /* RCTLocalizedString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLocalizedString.h; sourceTree = ""; }; 65125E07440A02A058E96A2DAE8C8438 /* RCTMultipartStreamReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartStreamReader.m; sourceTree = ""; }; 651A43C1D1C89E7F8CBDD08B496E2160 /* SynchronousEventBeat.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SynchronousEventBeat.cpp; path = react/renderer/scheduler/SynchronousEventBeat.cpp; sourceTree = ""; }; 652305363535478E0661CB82413687EB /* YogaLayoutableShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YogaLayoutableShadowNode.cpp; path = react/renderer/components/view/YogaLayoutableShadowNode.cpp; sourceTree = ""; }; 6536CE777152C1FAFBE3DC240DF67324 /* JSRuntimeFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JSRuntimeFactory.cpp; sourceTree = ""; }; 654197BBD530E127C270633DB539A166 /* React-rendererdebug-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-rendererdebug-umbrella.h"; sourceTree = ""; }; 6551222A25B1F6FAF1575662C8BDA2AB /* RelaxedAtomic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RelaxedAtomic.h; path = folly/synchronization/RelaxedAtomic.h; sourceTree = ""; }; 65814B713B9CD521A09E7AF980ECF508 /* pt-PT.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "pt-PT.lproj"; path = "React/I18n/strings/pt-PT.lproj"; sourceTree = ""; }; 65D0A19C165FA1126B1360680FE6DB12 /* Yoga */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = Yoga; path = libYoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 65D4FD7CDCA49048491D835A28092DCC /* React-rendererdebug.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-rendererdebug.release.xcconfig"; sourceTree = ""; }; 6629455746E57DAB397BA5E289A81B37 /* Access.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Access.h; path = folly/lang/Access.h; sourceTree = ""; }; 662EDB351806ACAF98C186A204C9A85E /* IPAddressV6.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddressV6.h; path = folly/IPAddressV6.h; sourceTree = ""; }; 6641C8CC47F08AA0D3136808CBCB811D /* RCTModalHostViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewManager.h; sourceTree = ""; }; 666E72807891C591E025A75410CD2A26 /* React-perflogger */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-perflogger"; path = "libReact-perflogger.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6678C1864A2A92768BBDC1C215172196 /* RCTImageViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageViewManager.h; path = Libraries/Image/RCTImageViewManager.h; sourceTree = ""; }; 66808C29ABD639B3D916CDB9C1A33496 /* en-GB.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "en-GB.lproj"; path = "React/I18n/strings/en-GB.lproj"; sourceTree = ""; }; 66C9CDB63BA2D2FD4FCD5F884193C864 /* HazptrObj.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrObj.h; path = folly/synchronization/HazptrObj.h; sourceTree = ""; }; 66E1BAC6CC436F67ACD51B9211A14858 /* Pods-WatermelonTester-WatermelonTesterTests */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-WatermelonTester-WatermelonTesterTests"; path = "libPods-WatermelonTester-WatermelonTesterTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 671925498D3BA63FE33CF36268979415 /* RCTScrollViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewComponentView.h; sourceTree = ""; }; 672462DC44BB30457BE236484F3C6E87 /* Hazptr-fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Hazptr-fwd.h"; path = "folly/synchronization/Hazptr-fwd.h"; sourceTree = ""; }; 673B55D5784B9139A1BB1AEE5F4945A2 /* simdjson.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = simdjson.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 67610BE7173AD3B20491234782354847 /* SynchronizedPtr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SynchronizedPtr.h; path = folly/SynchronizedPtr.h; sourceTree = ""; }; 67659C3BADBA7BF553069160A417E2A0 /* FBReactNativeSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FBReactNativeSpec.h; sourceTree = ""; }; 6771D231F4C8C5976470A369C474B32E /* React-CoreModules */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-CoreModules"; path = "libReact-CoreModules.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 682FB404BC26FD7A5CE7722DC28CA1D9 /* RCTImageStoreManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageStoreManager.mm; sourceTree = ""; }; 686FA922FDC06D95A33307B2DFE9C50E /* Extern.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Extern.h; path = folly/lang/Extern.h; sourceTree = ""; }; 687B26F2B573590EF9ACE0B564A2A4D8 /* dynamic-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "dynamic-inl.h"; path = "folly/dynamic-inl.h"; sourceTree = ""; }; 68A69845486F5D6ABF2D33019902E0E4 /* MessageConverters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MessageConverters.h; path = destroot/include/hermes/inspector/chrome/MessageConverters.h; sourceTree = ""; }; 68EE2EFB5FD67165CD0BE5CB10F52DDD /* RCTParagraphComponentAccessibilityProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTParagraphComponentAccessibilityProvider.h; sourceTree = ""; }; 68F513FA3A624FF445C0F9B1A615E3A2 /* RCTFontUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFontUtils.h; sourceTree = ""; }; 68F7A0C0E60467EF299D038EF39D12DD /* RCTScrollViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewManager.h; sourceTree = ""; }; 69063AD95BA07DF28A18417CF3A1B53C /* React-callinvoker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-callinvoker.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 69377A3F74E51E3872AC1F550123E373 /* React-RCTActionSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTActionSheet.debug.xcconfig"; sourceTree = ""; }; 6941C8C17A58C26823E12140D3831D05 /* React-Codegen-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Codegen-umbrella.h"; sourceTree = ""; }; 69486EEF399C8CC4D8DAE942C37D23FD /* React-RCTLinking.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTLinking.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6960AF2620CFE6726A4B805D48001166 /* fnv1a.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fnv1a.h; sourceTree = ""; }; 6968091853F8202BC5D47745810C4DC4 /* RCTBundleAssetImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTBundleAssetImageLoader.h; path = Libraries/Image/RCTBundleAssetImageLoader.h; sourceTree = ""; }; 696D9C59C6F80DB952F1142DBCBBF620 /* SimpleSimdStringUtilsImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SimpleSimdStringUtilsImpl.h; path = folly/detail/SimpleSimdStringUtilsImpl.h; sourceTree = ""; }; 697110B0CEDE98EAA089612835E9E5AF /* Pods-WatermelonTester-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-WatermelonTester-acknowledgements.plist"; sourceTree = ""; }; 69B9588066B95155E4417D77327555CD /* RCTDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDisplayLink.h; sourceTree = ""; }; 69E632279F0013ADFF7F6ECDE2FAF2E7 /* RCTFabricComponentsPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFabricComponentsPlugins.mm; sourceTree = ""; }; 6A2008DB4CB2932C0392674068ED82A6 /* EnableSharedFromThis.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EnableSharedFromThis.h; path = folly/memory/EnableSharedFromThis.h; sourceTree = ""; }; 6A3EDF523AE8279DAD3E84193359461D /* fast-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fast-dtoa.cc"; path = "double-conversion/fast-dtoa.cc"; sourceTree = ""; }; 6A49FC170B2F422E9973F529DFC94316 /* RCTLogBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLogBoxView.h; path = React/CoreModules/RCTLogBoxView.h; sourceTree = ""; }; 6A69BE346BCF36781D025E02DA26992E /* RCTErrorInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTErrorInfo.m; sourceTree = ""; }; 6A732660A46D8B89E811D42131A47E43 /* MacAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MacAddress.h; path = folly/MacAddress.h; sourceTree = ""; }; 6A923BB7F15C4A2B32DDE64B8D827632 /* State.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = State.h; path = react/renderer/core/State.h; sourceTree = ""; }; 6AAB3F0857A0C2C40FE99C2A4ED8BB69 /* RCTConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTConstants.h; sourceTree = ""; }; 6ABE82ECFCA457CEA1122532AFFC13E1 /* YGMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGMacros.h; path = yoga/YGMacros.h; sourceTree = ""; }; 6ACCDC510D9A68B13F2A48E358E2BE26 /* LongLivedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LongLivedObject.h; path = react/nativemodule/core/ReactCommon/LongLivedObject.h; sourceTree = ""; }; 6B17F4F65DD01BD81E40664BAFB61F37 /* RCTCxxInspectorWebSocketAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxInspectorWebSocketAdapter.h; sourceTree = ""; }; 6B9509822D0A4EC87A2AA3BC68342DF3 /* SysTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysTypes.h; path = folly/portability/SysTypes.h; sourceTree = ""; }; 6BB02A1AFF68DB9D0E2B844F9E1E8A2F /* ComponentDescriptorProviderRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptorProviderRegistry.h; path = react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h; sourceTree = ""; }; 6BE67D2E5B439024289DCAE23AB7DFE4 /* NativeModulePerfLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NativeModulePerfLogger.h; path = reactperflogger/NativeModulePerfLogger.h; sourceTree = ""; }; 6C00DC34CBF0C27CE15A57901CFE39D1 /* RCTProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTProfile.h; sourceTree = ""; }; 6C8572256406ADB7551DFDDCDC585255 /* RCTSafeAreaShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaShadowView.m; sourceTree = ""; }; 6CA38E07EBA75420D2E3C5C4B52A3B22 /* Event.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Event.h; path = folly/portability/Event.h; sourceTree = ""; }; 6CD702447664E9814FDF64C2521FE0A8 /* glog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = glog.release.xcconfig; sourceTree = ""; }; 6CEDDCFAB391081A6C3EB050DB9303AF /* ReactCdp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactCdp.h; sourceTree = ""; }; 6CEE94FB9A70376F30A45C598232AD61 /* event.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = event.cpp; sourceTree = ""; }; 6CFB318332DD9F15BA0F4E2A1CB54F41 /* React-jsi.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsi.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6D220B48D2758B94E0D0CB1968C018CF /* SRIOConsumerPool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRIOConsumerPool.m; path = SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m; sourceTree = ""; }; 6D2C764374D96A2A95EB7DEDB1AD4B23 /* Atomic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Atomic.h; path = folly/portability/Atomic.h; sourceTree = ""; }; 6D3BD65E387AF4A8FE10216CABF03885 /* FlexLine.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = FlexLine.cpp; sourceTree = ""; }; 6D3D07411F82B089A181E94AD1F54DF7 /* WebSocketInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WebSocketInterfaces.h; sourceTree = ""; }; 6D624E232F1781DF596D0A786D21944C /* NSDataBigString.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = NSDataBigString.mm; sourceTree = ""; }; 6D66D180322220310B33E06C2A6650D3 /* RuntimeSchedulerCallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeSchedulerCallInvoker.h; sourceTree = ""; }; 6D7520FE4D76AC547890B7D6B4C69894 /* TextComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextComponentDescriptor.h; path = react/renderer/components/text/TextComponentDescriptor.h; sourceTree = ""; }; 6D84B0A7F1A70E6E9ABEEEB14CB6C80C /* RCTSurfaceSizeMeasureMode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceSizeMeasureMode.mm; sourceTree = ""; }; 6D899FAEC06F009C28975CC142A41EC9 /* React-RuntimeCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RuntimeCore.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6DB0EF48E6F6F59EEEBA2E0AB6C7E410 /* JSINativeModules.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSINativeModules.h; path = jsireact/JSINativeModules.h; sourceTree = ""; }; 6DB23B7557FA39253FE65A599E922ED6 /* Cast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cast.h; path = folly/lang/Cast.h; sourceTree = ""; }; 6DCF6A50893A882EA7E8F44D10AD971D /* ConcurrentSkipList-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ConcurrentSkipList-inl.h"; path = "folly/ConcurrentSkipList-inl.h"; sourceTree = ""; }; 6DF638889DD6D88E1694A065C0A27BC6 /* React-rendererdebug.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-rendererdebug.debug.xcconfig"; sourceTree = ""; }; 6E3D2F20B2620B37412790BDD9F15C17 /* SurfaceRegistryBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SurfaceRegistryBinding.h; path = react/renderer/uimanager/SurfaceRegistryBinding.h; sourceTree = ""; }; 6E4274F08E4BBF0B6491769157BBB91F /* ShadowNodeFamily.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowNodeFamily.h; path = react/renderer/core/ShadowNodeFamily.h; sourceTree = ""; }; 6EADDB0E9C832143081D058CA7259028 /* RCTComponentViewFactory.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTComponentViewFactory.mm; sourceTree = ""; }; 6EBA55B04BADD1F4ABB709051EF06C89 /* AssertFatal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AssertFatal.h; sourceTree = ""; }; 6ECE543138E064055C9EBCDC09788205 /* UIView+ComponentViewProtocol.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = "UIView+ComponentViewProtocol.mm"; sourceTree = ""; }; 6ED2C07E6AE77BBD9A6856E523EF6A06 /* React-debug */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-debug"; path = "libReact-debug.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6ED440A6B8C1D4FBA39CD54ECE8D51F3 /* RCTComponentViewDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewDescriptor.h; sourceTree = ""; }; 6EEEE05EBCE258D71886371521451AF3 /* RCTCxxInspectorPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxInspectorPackagerConnection.h; sourceTree = ""; }; 6F004C69796236836B1136C0778862F1 /* React-jsi.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-jsi.modulemap"; sourceTree = ""; }; 6F03806CF8FEA9AE1097FB463956AAD4 /* React-nativeconfig.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-nativeconfig.release.xcconfig"; sourceTree = ""; }; 6F2BCB43F2D90CA90AFD57677AF6013E /* ConstexprMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConstexprMath.h; path = folly/ConstexprMath.h; sourceTree = ""; }; 6F3CE6C5B501D1E1D2852C705DEDDBC7 /* SRSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRSecurityPolicy.h; path = SocketRocket/SRSecurityPolicy.h; sourceTree = ""; }; 6F72B3F616F35DD1A397AD34A9471C80 /* zh-Hant-HK.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hant-HK.lproj"; path = "React/I18n/strings/zh-Hant-HK.lproj"; sourceTree = ""; }; 6F8D2287EF58ADD156913AF3C0FA5266 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/imagemanager/primitives.h; sourceTree = ""; }; 6F9A7D467E30F1383A11DE8EA731A421 /* Overload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Overload.h; path = folly/Overload.h; sourceTree = ""; }; 6F9A9F41C8712A5EA89926F9E34BB317 /* FMDatabaseAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMDatabaseAdditions.h; sourceTree = ""; }; 6FA175D69859A3FE955C27E8F8107960 /* RCTDebuggingOverlayComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDebuggingOverlayComponentView.h; sourceTree = ""; }; 6FA659BE9F28613C4D7F98DAC5FD1C4B /* TransactionTelemetry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransactionTelemetry.h; path = react/renderer/telemetry/TransactionTelemetry.h; sourceTree = ""; }; 6FBDF0EE578C484F397C21E43F49F7E7 /* TransactionTelemetry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TransactionTelemetry.cpp; path = react/renderer/telemetry/TransactionTelemetry.cpp; sourceTree = ""; }; 6FC0DBFC356D08CBF5C195717E58618A /* React-Fabric-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-Fabric-dummy.m"; sourceTree = ""; }; 6FC40232E2C55EB617E3DFB087BA95C0 /* JSIDynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSIDynamic.h; path = jsi/JSIDynamic.h; sourceTree = ""; }; 6FD6F1B6DC37EB6391F042FC9AC7E69F /* RCTAppSetupUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAppSetupUtils.mm; sourceTree = ""; }; 6FFB7B2992BB53405E6B771A5BA1E97D /* DoubleConversion */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = DoubleConversion; path = libDoubleConversion.a; sourceTree = BUILT_PRODUCTS_DIR; }; 701DA5EF2C35D3F8011D186617366218 /* MallctlHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MallctlHelper.h; path = folly/memory/MallctlHelper.h; sourceTree = ""; }; 704A79E5BDF7B5ECE6197D355854F3A9 /* RCTParagraphComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTParagraphComponentView.h; sourceTree = ""; }; 704C76032CCE295710F90FEE18E4B95F /* InspectorFlags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorFlags.h; sourceTree = ""; }; 70D50FBA71B5522FC8324C5638AAABC4 /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = es.lproj; path = React/I18n/strings/es.lproj; sourceTree = ""; }; 70E1E31923E3DCF47FC3FD8EA049C063 /* React-RuntimeApple.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RuntimeApple.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 70EAB919380BCD43218C8BA42AA15E04 /* RCTI18nUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTI18nUtil.h; sourceTree = ""; }; 70FD25025D88D2C467D14135D309D155 /* RCTSinglelineTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSinglelineTextInputViewManager.h; sourceTree = ""; }; 7125A220ACBD1ACDAEC0A33004BF401B /* React-jserrorhandler.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jserrorhandler.debug.xcconfig"; sourceTree = ""; }; 713D582F6B367593E27B9841A06592D1 /* propsConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = propsConversions.h; path = react/renderer/core/propsConversions.h; sourceTree = ""; }; 7157DE4FF39A888005019A6919C6304D /* boost.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = boost.release.xcconfig; sourceTree = ""; }; 717D5148DA07668AC04A61F52407FF5A /* RCTObjectAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTObjectAnimatedNode.mm; sourceTree = ""; }; 71871CA5216D720E9BCA31F7ED7CC373 /* RCTTextInputNativeCommands.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextInputNativeCommands.h; sourceTree = ""; }; 718D4D78E0BAE0CC2A7AE58A6FBEA36A /* SafeAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SafeAssert.h; path = folly/lang/SafeAssert.h; sourceTree = ""; }; 71B4D481359E1DC4C88FF4956C3F95BC /* TextInputEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextInputEventEmitter.cpp; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp; sourceTree = ""; }; 7215C1FD70511C10EB945E8681577C16 /* RCTSurfaceStage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceStage.h; sourceTree = ""; }; 72188071CCFD3B99269572936DAC43DD /* Math.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Math.h; path = folly/Math.h; sourceTree = ""; }; 7219469EB101610CDE06F56EAFF2F90D /* RCTComponentViewClassDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewClassDescriptor.h; sourceTree = ""; }; 723B1846FB58ABF6C06939E1199945A2 /* RCTComponentViewRegistry.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTComponentViewRegistry.mm; sourceTree = ""; }; 723CB5670ECFFB16F7B8F339EE9DB637 /* NativeToJsBridge.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NativeToJsBridge.cpp; sourceTree = ""; }; 7291DE7A0A52B6E6CFC50DAF5E4DE540 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 729855E0C41B82077DDA2290F0B0BCBD /* RCT-Folly-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCT-Folly-dummy.m"; sourceTree = ""; }; 7299BD666C1DD5C0DB7343D26EB7DFDA /* FloatOptional.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FloatOptional.h; sourceTree = ""; }; 72F4E61BD474BE602AFFC71C43FD918B /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sk.lproj; path = React/I18n/strings/sk.lproj; sourceTree = ""; }; 7301D9F85906E2D5E3E899138ED1462A /* RCTBorderDrawing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderDrawing.h; sourceTree = ""; }; 73058D524065BD36521A8D2FAA24552A /* utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = react/renderer/animations/utils.cpp; sourceTree = ""; }; 732337B1201688C67D6881C87C976B08 /* ParagraphAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphAttributes.h; path = react/renderer/attributedstring/ParagraphAttributes.h; sourceTree = ""; }; 732688D92C1058B4D3B68B3EF5CB178C /* dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dynamic.h; path = folly/dynamic.h; sourceTree = ""; }; 73301DA76E70E83388C9A33BCF56CEE5 /* Yoga-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Yoga-dummy.m"; sourceTree = ""; }; 7338ABD9F7418479DEDE3C5284F4FF6D /* CxxNativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CxxNativeModule.h; sourceTree = ""; }; 734BE1C2E4FE1B7AA7823A95F6F55FB4 /* React-runtimescheduler.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-runtimescheduler.release.xcconfig"; sourceTree = ""; }; 735061C18CFE3076A4C204A7CCE1D301 /* RCTI18nManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTI18nManager.mm; sourceTree = ""; }; 7350D90D235F0E829948F766094A036B /* FollyMemcpy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FollyMemcpy.h; path = folly/FollyMemcpy.h; sourceTree = ""; }; 735E5FCEACBC787C7FF33D2B0A5F3CAD /* RCTErrorInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTErrorInfo.h; sourceTree = ""; }; 739F5A9F956FCC84E8E36F6798EA859B /* React-Codegen-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-Codegen-dummy.m"; sourceTree = ""; }; 73AB6FD4B3DF99EC222564D6743427C3 /* ManagedObjectWrapper.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = ManagedObjectWrapper.mm; sourceTree = ""; }; 73B3A96DAB49C42270A59966B121F1A7 /* Pods-WatermelonTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-WatermelonTester.release.xcconfig"; sourceTree = ""; }; 73F9F5B50A8454106AEB1EAA5892325D /* SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRWebSocket.h; path = SocketRocket/SRWebSocket.h; sourceTree = ""; }; 7433BC11862172106E2F5C35B6657339 /* Invoke.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Invoke.h; path = folly/functional/Invoke.h; sourceTree = ""; }; 74634074E7E5AADD54F61ACB94B63759 /* RCTDeprecation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTDeprecation-prefix.pch"; sourceTree = ""; }; 74C292E04485F2E866A8C5507A5B0F9B /* RCTRuntimeExecutorModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRuntimeExecutorModule.h; sourceTree = ""; }; 74C2C2A0E994E59EC1C51CEF553541EF /* UTF8String.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UTF8String.h; path = folly/UTF8String.h; sourceTree = ""; }; 74F0A4078D35270995DBAA54BA83A8B7 /* RCTHost.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTHost.mm; path = ReactCommon/RCTHost.mm; sourceTree = ""; }; 74F2B9390AF33F8E9969AE22B88C8280 /* FloatComparison.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FloatComparison.h; sourceTree = ""; }; 75003887015004482CFDA84D733744C1 /* ro.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ro.lproj; path = React/I18n/strings/ro.lproj; sourceTree = ""; }; 750B7BB6414518C2A827B8877B15A353 /* Task.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Task.cpp; sourceTree = ""; }; 751490A9CC81CC3D1FD6DE9D1A2309B0 /* React-debug-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-debug-dummy.m"; sourceTree = ""; }; 75527CABA73184F431A0FFA3918A6D5B /* RuntimeAgent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeAgent.cpp; sourceTree = ""; }; 75666A7E9DF4B81A7D9C5A782A0BCE03 /* Point.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Point.h; sourceTree = ""; }; 7568E7B5AE849AB3EBC22558FB87A3A0 /* React-jsitracing.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsitracing.release.xcconfig"; sourceTree = ""; }; 75A1EC0889B2FF4178C4B15A8C8EAE88 /* ranges.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ranges.h; path = include/fmt/ranges.h; sourceTree = ""; }; 75AFE3EB6154E61D88A4F383A81B33F0 /* RCTTextSelection.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextSelection.mm; sourceTree = ""; }; 75BD04A47CB6E45D70FC6CC41F55E9D0 /* React-ImageManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-ImageManager-umbrella.h"; sourceTree = ""; }; 75F4E00A45E47775648B3C5AE641D5F7 /* TurboModuleUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModuleUtils.h; path = react/nativemodule/core/ReactCommon/TurboModuleUtils.h; sourceTree = ""; }; 75FB185880821A181DA77737EA85AF83 /* ReactNativeFeatureFlags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactNativeFeatureFlags.h; sourceTree = ""; }; 761CE3FB688FBACCB93A3B8CE521B969 /* RCTImageEditingManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageEditingManager.mm; sourceTree = ""; }; 762588AD3F68541107FA36AF37D053F9 /* RCTSurface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurface.h; sourceTree = ""; }; 766F8957B06DFCFCD48D2426262EFF74 /* InstanceAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InstanceAgent.h; sourceTree = ""; }; 7672883E0F8241100C66C2D877FCFDC7 /* RCTImageStoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageStoreManager.h; path = Libraries/Image/RCTImageStoreManager.h; sourceTree = ""; }; 769BAEE9C92AEEA6A5C4C98AE6FFBD88 /* SimdAnyOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SimdAnyOf.h; path = folly/detail/SimdAnyOf.h; sourceTree = ""; }; 76A1CBFC82E23FC317730FE377F95CCB /* React-RuntimeHermes-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RuntimeHermes-dummy.m"; sourceTree = ""; }; 76B9170886E7F923EC5E35A34EEF7A2E /* BridgeNativeModulePerfLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BridgeNativeModulePerfLogger.h; path = reactperflogger/BridgeNativeModulePerfLogger.h; sourceTree = ""; }; 76E0CAC8E63CBC0B9C2BA14BB8864475 /* React-RCTSettings-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTSettings-prefix.pch"; sourceTree = ""; }; 7706A182348778EF9482CF0A0A02DC41 /* signalhandler.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = signalhandler.cc; path = src/signalhandler.cc; sourceTree = ""; }; 774B7D8E1CE74C04CEDEC68A34DAC344 /* Array.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Array.h; path = react/bridging/Array.h; sourceTree = ""; }; 7761A07D372FD8689FEED3327D1DA8FD /* ComponentDescriptorProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptorProvider.h; path = react/renderer/componentregistry/ComponentDescriptorProvider.h; sourceTree = ""; }; 77660F5EBDC0FC5CF88F31395F69A2D6 /* BridgelessNativeMethodCallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BridgelessNativeMethodCallInvoker.h; sourceTree = ""; }; 776825034C674A4EB458170D6BBB3139 /* React-RuntimeCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeCore.release.xcconfig"; sourceTree = ""; }; 776D1F938E2ED7503BB26ACB324E4DF9 /* State.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = react/renderer/core/State.cpp; sourceTree = ""; }; 777152D60FDE62FB7858028E0F494386 /* DynamicPropsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DynamicPropsUtilities.h; path = react/renderer/core/DynamicPropsUtilities.h; sourceTree = ""; }; 7777F6D0013ADB2C7FBD5FE217F042EE /* ieee.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ieee.h; path = "double-conversion/ieee.h"; sourceTree = ""; }; 7780098F7787B2514F2C008CC3E13B73 /* RCTTypeSafety-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTTypeSafety-umbrella.h"; sourceTree = ""; }; 77A1CFA157156B29C57AF9F7AACA682D /* Memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Memory.h; path = folly/Memory.h; sourceTree = ""; }; 77B6947FB86A59093DFA118F372E24B2 /* React-hermes-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-hermes-prefix.pch"; sourceTree = ""; }; 77B99168E6021298797F07B5B41C5A77 /* Try-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Try-inl.h"; path = "folly/Try-inl.h"; sourceTree = ""; }; 77BAB7AB8A4B785443BC2813FC1B32C6 /* React-logger-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-logger-dummy.m"; sourceTree = ""; }; 77C83209E6AE78202FC38E3CDF6E4666 /* MountingOverrideDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MountingOverrideDelegate.h; path = react/renderer/mounting/MountingOverrideDelegate.h; sourceTree = ""; }; 77CE993F9446B711B336A9AF061A5504 /* fmt.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = fmt.release.xcconfig; sourceTree = ""; }; 77F3BA61BC36947AE25324E0B86A12E5 /* debugStringConvertibleUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugStringConvertibleUtils.h; sourceTree = ""; }; 77FD8EC2BDFA965A8B3238C611476897 /* RCTLegacyViewManagerInteropCoordinator.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTLegacyViewManagerInteropCoordinator.mm; path = react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm; sourceTree = ""; }; 780886372A0B2B7809DF714CB50EBA56 /* React-cxxreact.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-cxxreact.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 7841C02BBC8782E7B8D3EF2815A6026C /* RawEvent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawEvent.cpp; path = react/renderer/core/RawEvent.cpp; sourceTree = ""; }; 788308AAA58E926CC60655199F7DA6BC /* dynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = dynamic.cpp; path = folly/dynamic.cpp; sourceTree = ""; }; 789B5746A1B28065E10E29579DC6FE8F /* IPAddressException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddressException.h; path = folly/IPAddressException.h; sourceTree = ""; }; 78B7DDD1D6B4E8239B45FF43C990D36E /* RCTMessageThread.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMessageThread.mm; sourceTree = ""; }; 78BE41CF03440AB09080B75960AF8455 /* RCTWebSocketModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTWebSocketModule.mm; sourceTree = ""; }; 78D72FC8CF42B31C8EDAD6F8657F610F /* React-RCTAnimation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTAnimation.release.xcconfig"; sourceTree = ""; }; 792014C5B5CC53C6A4E7C3EAFA69D6ED /* Array.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Array.h; path = folly/container/Array.h; sourceTree = ""; }; 795A0388C8652FBA4A957C30BE9222F8 /* LogLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LogLevel.h; sourceTree = ""; }; 7962560BAE3A465763EDEF2274FEB730 /* JsErrorHandler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JsErrorHandler.cpp; sourceTree = ""; }; 797702F6E9E25223D401BD7E13885F76 /* SharedFunction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SharedFunction.h; sourceTree = ""; }; 79935ABC77CDB209D63CDB2A5C8B0F40 /* BenchmarkUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BenchmarkUtil.h; path = folly/BenchmarkUtil.h; sourceTree = ""; }; 79BAE705D4C5DDF1F3222FC86D3DC110 /* Database.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Database.cpp; sourceTree = ""; }; 79BC7FAFCA2807334B0B7E151993C6FC /* UIManagerBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManagerBinding.h; path = react/renderer/uimanager/UIManagerBinding.h; sourceTree = ""; }; 79CC003D3F5205C371DC8BCBE46FD022 /* SysUio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysUio.h; path = folly/portability/SysUio.h; sourceTree = ""; }; 79E82AE02BC6B9CCABF7C62D230F794F /* Database-sqlite.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "Database-sqlite.cpp"; sourceTree = ""; }; 79F230CA43B3923BA705770F29C504C6 /* glog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "glog-prefix.pch"; sourceTree = ""; }; 79F8EC97641C2D3B51B87DB668615513 /* CoreModulesPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = CoreModulesPlugins.mm; sourceTree = ""; }; 79FC786FA7244B7B38C8D7E7D63FD675 /* RCTJSIExecutorRuntimeInstaller.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTJSIExecutorRuntimeInstaller.mm; sourceTree = ""; }; 7A230B7C6D6ECDDCB14F95021BE6FDEB /* symbolize.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = symbolize.cc; path = src/symbolize.cc; sourceTree = ""; }; 7A3BCF7F218979C84533F1F242327D9F /* BitIterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BitIterator.h; path = folly/container/BitIterator.h; sourceTree = ""; }; 7A4636B3DC5A729E8F40B4860ACEC4B4 /* EventQueueProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventQueueProcessor.h; path = react/renderer/core/EventQueueProcessor.h; sourceTree = ""; }; 7A4D45A1805126ED1CD25C84B4FFE9C2 /* SRPinningSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRPinningSecurityPolicy.h; path = SocketRocket/Internal/Security/SRPinningSecurityPolicy.h; sourceTree = ""; }; 7A59848A45BE0F5FCEF4561B500527CB /* React-NativeModulesApple-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-NativeModulesApple-umbrella.h"; sourceTree = ""; }; 7A7404AB8D8964BFE0531C56682163D1 /* MicroSpinLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MicroSpinLock.h; path = folly/synchronization/MicroSpinLock.h; sourceTree = ""; }; 7A7A0F200C7B88BDC44875E323134B8D /* ScrollViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScrollViewShadowNode.h; path = react/renderer/components/scrollview/ScrollViewShadowNode.h; sourceTree = ""; }; 7AB42AC0EB19257BDB4CB23DD77110E6 /* base64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base64.h; path = folly/base64.h; sourceTree = ""; }; 7AB9D50DBC3A7605124A8AC121341CFF /* RCTModuleMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuleMethod.h; sourceTree = ""; }; 7ACDCCE812E169B5C2EE32A4A130D907 /* RCTImageResponseObserverProxy.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTImageResponseObserverProxy.mm; path = Fabric/RCTImageResponseObserverProxy.mm; sourceTree = ""; }; 7AE90B08B12F40EABE9BDF5B888E8832 /* ShadowNodeTraits.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowNodeTraits.cpp; path = react/renderer/core/ShadowNodeTraits.cpp; sourceTree = ""; }; 7AEAEA20EE165C0C9C90A2B2BDD3C21A /* ShadowViewMutation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowViewMutation.h; path = react/renderer/mounting/ShadowViewMutation.h; sourceTree = ""; }; 7B0A8E8F61759E910B9953C7FF640925 /* Bits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bits.h; path = folly/lang/Bits.h; sourceTree = ""; }; 7B1A1BCA9AF04E480CF3A0F15DC4277A /* RCTActivityIndicatorViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTActivityIndicatorViewComponentView.mm; sourceTree = ""; }; 7B292553D4F61C21C058393BBC5C292F /* SRHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRHash.m; path = SocketRocket/Internal/Utilities/SRHash.m; sourceTree = ""; }; 7B300B21C62B9776F40F71E7688DA14C /* ManagedObjectWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ManagedObjectWrapper.h; sourceTree = ""; }; 7B514510C45046BE196402FD4E82FB33 /* SRIOConsumer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRIOConsumer.m; path = SocketRocket/Internal/IOConsumer/SRIOConsumer.m; sourceTree = ""; }; 7B51B43D6B45FB260FFA0B15BFED390E /* React-jsinspector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsinspector.debug.xcconfig"; sourceTree = ""; }; 7B5B3F15E7911D3E6C9DE70A968B0F80 /* F14Table.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = F14Table.cpp; path = folly/container/detail/F14Table.cpp; sourceTree = ""; }; 7B65B6162E9749D1E3F3D1232D886392 /* RCTSafeAreaViewLocalData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewLocalData.m; sourceTree = ""; }; 7B6F9E5C10CE8D8B1931589BD93D12D7 /* RAMBundleRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RAMBundleRegistry.cpp; sourceTree = ""; }; 7B71C59B43EE3845C93BBDBA007C75CA /* RCTJSStackFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTJSStackFrame.m; sourceTree = ""; }; 7B7333F82E7D58CECA09AB6ABF206727 /* YGNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNode.h; path = yoga/YGNode.h; sourceTree = ""; }; 7B799169876F75C6B694791908FAA1EB /* Singleton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Singleton.h; path = folly/Singleton.h; sourceTree = ""; }; 7B80D5D0E1943CE661F2F4C200BA7BE9 /* RCTMountingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMountingManager.h; sourceTree = ""; }; 7B87E0987F27CB7E57A4A864D574EC7C /* Node.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Node.cpp; sourceTree = ""; }; 7BB5D02B327460A7F87EA512F38B2123 /* RCTObjcExecutor.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTObjcExecutor.mm; sourceTree = ""; }; 7BBF469B26873251B537670801999C9B /* BatchedEventQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BatchedEventQueue.h; path = react/renderer/core/BatchedEventQueue.h; sourceTree = ""; }; 7BE42F9FEE2CC91F9B2D0CD06DCFA3B4 /* RCTDevSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDevSettings.h; path = React/CoreModules/RCTDevSettings.h; sourceTree = ""; }; 7C12044FAE55F8C0F0F5BC236FA00BFC /* Bridging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bridging.h; path = react/bridging/Bridging.h; sourceTree = ""; }; 7C322EC9FEFA80208EF7FC20F8E76803 /* Align.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Align.h; sourceTree = ""; }; 7C461F175EB336FD8750A4B7A86919F1 /* TextInputProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextInputProps.cpp; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp; sourceTree = ""; }; 7C5BE15D5F354DA98A5ADA415D1FDB03 /* YGConfig.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGConfig.cpp; path = yoga/YGConfig.cpp; sourceTree = ""; }; 7C910125B6ECED6233B803D062331A90 /* React-RCTNetwork.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTNetwork.release.xcconfig"; sourceTree = ""; }; 7C95BBE34A199CF72BBFBFC172AC6E71 /* HostPlatformViewEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HostPlatformViewEventEmitter.h; sourceTree = ""; }; 7CA5F6EB56C2B8E096CBC6A7B9532E76 /* Registration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Registration.h; sourceTree = ""; }; 7CC64A671E937AD1149E00BF8AAC2F08 /* RCTDefaultCxxLogFunction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDefaultCxxLogFunction.h; sourceTree = ""; }; 7CE12A7D304717866DC9F308C7951109 /* Props.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Props.h; path = react/renderer/components/rncore/Props.h; sourceTree = ""; }; 7CF233AD4BB7085F76873B35632274C6 /* React-RCTText-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTText-prefix.pch"; sourceTree = ""; }; 7D0C7E3FC36DCB52EB03EDF13AE747FE /* TextShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextShadowNode.cpp; path = react/renderer/components/text/TextShadowNode.cpp; sourceTree = ""; }; 7D4B16C5729900BD0CF675EE898C8327 /* Synchronized.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Synchronized.h; path = folly/Synchronized.h; sourceTree = ""; }; 7D709C81D0C07E31A08F46AA3AAB09FD /* ReactNativeConfig.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ReactNativeConfig.cpp; path = react/config/ReactNativeConfig.cpp; sourceTree = ""; }; 7DB6E20FB18E511B8C98C3656B364612 /* RCTDevSettings.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDevSettings.mm; sourceTree = ""; }; 7DF60B1D14EECCD8446FC1A15E8766B4 /* RCTReloadCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTReloadCommand.h; sourceTree = ""; }; 7E0FE53778FF8DB18F69972C1000366F /* React-jsinspector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsinspector-dummy.m"; sourceTree = ""; }; 7E424FA9074DD171A4AE55BE52EFAFAB /* MallocImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = MallocImpl.cpp; path = folly/memory/detail/MallocImpl.cpp; sourceTree = ""; }; 7E589066D508A38B86B7F0F4BC726DB0 /* RCTBridgeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeModule.h; sourceTree = ""; }; 7E7B0E688C2DE7016DCA160FE81176F4 /* React-cxxreact-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-cxxreact-prefix.pch"; sourceTree = ""; }; 7E8209264577462872BC1AE7772C476E /* PackedSyncPtr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PackedSyncPtr.h; path = folly/PackedSyncPtr.h; sourceTree = ""; }; 7EA35A760668D0586965F521A3B21B4B /* UIManagerDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManagerDelegate.h; path = react/renderer/uimanager/UIManagerDelegate.h; sourceTree = ""; }; 7EAB5C076EC5BA3D8E0D48CBF9F38DC1 /* TcpInfoDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TcpInfoDispatcher.h; path = folly/net/TcpInfoDispatcher.h; sourceTree = ""; }; 7ED3FB4188B6B018D64337B5E28DF81D /* EventTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventTarget.h; path = react/renderer/core/EventTarget.h; sourceTree = ""; }; 7F08F17DB62670269DC70CC1F4817168 /* CachedMeasurement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CachedMeasurement.h; sourceTree = ""; }; 7F1A707D6F8DE921DFA42211D2036148 /* Color.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = ""; }; 7F7639A56DEF6356718C6D5EC6AF3F7F /* RCTImageURLLoaderWithAttribution.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageURLLoaderWithAttribution.mm; sourceTree = ""; }; 7F7D564B2A15203C1BFCF6B38C70A0CF /* RCTTypeSafety.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RCTTypeSafety.modulemap; sourceTree = ""; }; 7FF0FE18123413DA783550212321BE91 /* DatabasePlatformIOS.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = DatabasePlatformIOS.mm; sourceTree = ""; }; 7FFA741A8EC26DD612783B14F5682ED2 /* not_null.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = not_null.h; path = folly/memory/not_null.h; sourceTree = ""; }; 7FFF51245D8A86EAC0CA600E287ED6AD /* ConcurrentLazy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcurrentLazy.h; path = folly/ConcurrentLazy.h; sourceTree = ""; }; 802121F5B756ACBFDD6D08C36246DADD /* React-RCTLinking */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTLinking"; path = "libReact-RCTLinking.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 804154B57731765E15D5EEACEF594E8F /* ParagraphEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphEventEmitter.h; path = react/renderer/components/text/ParagraphEventEmitter.h; sourceTree = ""; }; 808C3DF73EDCFD47A21FDB81992E3ADB /* format-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "format-inl.h"; path = "include/fmt/format-inl.h"; sourceTree = ""; }; 80C0E79E7C53BAA868A44B3B53AEDC66 /* JSIExecutor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = JSIExecutor.cpp; path = jsireact/JSIExecutor.cpp; sourceTree = ""; }; 80C9F8ECC69EABDD6B34127E2C1EBAB4 /* States.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = States.h; path = react/renderer/components/rncore/States.h; sourceTree = ""; }; 80D64042B21EA7CEEB535422CBABD3F1 /* ModuleRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleRegistry.cpp; sourceTree = ""; }; 80F9DAC31E738BCDB2481B8D0EFF7D4D /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pt.lproj; path = React/I18n/strings/pt.lproj; sourceTree = ""; }; 81460E74A5068268C47A7DAC94730797 /* React-jsi-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsi-prefix.pch"; sourceTree = ""; }; 816B94D26D0966A297B8BFCB1F24039B /* SharedProxyCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SharedProxyCxxModule.h; sourceTree = ""; }; 8176863C104CD771DDB717C9059C2ADE /* NSRunLoop+SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSRunLoop+SRWebSocket.m"; path = "SocketRocket/NSRunLoop+SRWebSocket.m"; sourceTree = ""; }; 819B22FC019823E75AE6A15AF791911F /* RCTConvertHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTConvertHelpers.h; sourceTree = ""; }; 8203B91D615D3D818C75D20CC7EECACE /* RCTModalManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalManager.h; sourceTree = ""; }; 8229FB82BEAE5318CC636C3963FFF6F8 /* ImageResponseObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageResponseObserver.h; path = react/renderer/imagemanager/ImageResponseObserver.h; sourceTree = ""; }; 8231A4F6131F749AEA92BF670465B6DD /* ExecutionContext.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutionContext.cpp; sourceTree = ""; }; 824AF1EEC669FDA2DBC78CB48CBC86B4 /* DispatchMessageQueueThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DispatchMessageQueueThread.h; sourceTree = ""; }; 82552A36AF98B4CFE12CF35D745DFEBA /* RCTConvertHelpers.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTConvertHelpers.mm; sourceTree = ""; }; 825AFF4407B94619036B3195D86313D2 /* da.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = da.lproj; path = React/I18n/strings/da.lproj; sourceTree = ""; }; 82667B9482B97C6E5629E4F6381B1965 /* RCTKeyCommands.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTKeyCommands.m; sourceTree = ""; }; 82BDE129A63F08D401D705753189D8B0 /* ThreadId.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadId.cpp; path = folly/system/ThreadId.cpp; sourceTree = ""; }; 82C0C34C914DB0E6E56880987BB5F0AC /* FlexLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FlexLine.h; sourceTree = ""; }; 830AFFE41A7F0C0AA095F4DB57B6BD4D /* RCTComponentEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentEvent.h; sourceTree = ""; }; 8325F6D78EEBC85AE983E28DE38AD770 /* Indestructible.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Indestructible.h; path = folly/Indestructible.h; sourceTree = ""; }; 832DCF641540319B774328DFB00B9620 /* IPAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddress.h; path = folly/IPAddress.h; sourceTree = ""; }; 8332BB1363344A31DAAB30F13244873B /* SafeAreaViewShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SafeAreaViewShadowNode.cpp; path = react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp; sourceTree = ""; }; 8399C3FD21BCD992B7C6EF8E65D7C561 /* JSONValueInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONValueInterfaces.h; path = destroot/include/hermes/inspector/chrome/JSONValueInterfaces.h; sourceTree = ""; }; 83B1804846FC5FA7ACBFC82E7F5B9746 /* Unicode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Unicode.h; path = folly/Unicode.h; sourceTree = ""; }; 83D60FC0472C44AE0EB307C8EBC943AA /* SynthTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SynthTrace.h; path = destroot/include/hermes/SynthTrace.h; sourceTree = ""; }; 83E8DBA50CF66D81EB39C5BF3384B3D3 /* RCTBridge+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTBridge+Private.h"; sourceTree = ""; }; 840FA9BF8D964570C73D3D561CF489CE /* RCTKeyboardObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTKeyboardObserver.h; path = React/CoreModules/RCTKeyboardObserver.h; sourceTree = ""; }; 846735472D63BEB4DB75ECD903ECD756 /* React-hermes.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-hermes.release.xcconfig"; sourceTree = ""; }; 846EE9DAE34FA678FA761E65DD2F08E5 /* ImageComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageComponentDescriptor.h; path = react/renderer/components/image/ImageComponentDescriptor.h; sourceTree = ""; }; 84861068E0BD421B437C1FB5C00F434D /* AtFork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtFork.h; path = folly/system/AtFork.h; sourceTree = ""; }; 84C69750863FB2783C4C3DA5FBF5A671 /* ImageShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageShadowNode.h; path = react/renderer/components/image/ImageShadowNode.h; sourceTree = ""; }; 84C78B3BD305937A8FB7F156B1068561 /* hi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = hi.lproj; path = React/I18n/strings/hi.lproj; sourceTree = ""; }; 84D47D15D9888ECC847619622D47F370 /* RCTInputAccessoryShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryShadowView.h; sourceTree = ""; }; 84D732F0DC5E41F018DF129A1E36E683 /* EventTarget.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventTarget.cpp; path = react/renderer/core/EventTarget.cpp; sourceTree = ""; }; 84E154DAD162F4A18EEEA3624CF6A532 /* Pods-WatermelonTester-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-WatermelonTester-acknowledgements.markdown"; sourceTree = ""; }; 8516ED23F91BAC902B146A3BDA21B3AB /* graphicsConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = graphicsConversions.h; path = react/renderer/core/graphicsConversions.h; sourceTree = ""; }; 85234EF8449BC006516D4A6A62B9F438 /* RCTInputAccessoryViewContent.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryViewContent.mm; sourceTree = ""; }; 854FD3BEF6FF2E1CB963FD11F173D53D /* RCTBaseTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextViewManager.h; sourceTree = ""; }; 856575C5A576BBE72D1C55601F788145 /* SpookyHashV2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SpookyHashV2.cpp; path = folly/hash/SpookyHashV2.cpp; sourceTree = ""; }; 857ABB199F3E6193128196415203918E /* RCTBaseTextInputShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBaseTextInputShadowView.mm; sourceTree = ""; }; 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SocketRocket; path = libSocketRocket.a; sourceTree = BUILT_PRODUCTS_DIR; }; 860A6C48F7BFB2F514BB891173FD0D7E /* LayoutAnimationDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutAnimationDriver.h; path = react/renderer/animations/LayoutAnimationDriver.h; sourceTree = ""; }; 8612AE35A990235C979983FD304D7330 /* RCTAnimatedImage.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAnimatedImage.mm; sourceTree = ""; }; 861717776176D0307718AB2E8E102C67 /* AtomicHashMap-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AtomicHashMap-inl.h"; path = "folly/AtomicHashMap-inl.h"; sourceTree = ""; }; 8627871C188DC96A2A53FD17E0445367 /* SysStat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysStat.h; path = folly/portability/SysStat.h; sourceTree = ""; }; 865BCA647C0A650C5EADD1CCF31CFA14 /* NativeToJsBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NativeToJsBridge.h; sourceTree = ""; }; 866D0225560051A219BEE4D4664348F9 /* IntrusiveList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IntrusiveList.h; path = folly/IntrusiveList.h; sourceTree = ""; }; 869D440DACC02CD2540C4CE6A499116F /* Format.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Format.cpp; path = folly/Format.cpp; sourceTree = ""; }; 86C40F819940022A549E70BECA41B61A /* BaseTextProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BaseTextProps.h; path = react/renderer/components/text/BaseTextProps.h; sourceTree = ""; }; 86C8906A6C460D393729CA02A57186E7 /* BoundAxis.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BoundAxis.h; sourceTree = ""; }; 86CD21C661338CF76FD714E4819D0BEF /* Singleton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Singleton.h; path = folly/detail/Singleton.h; sourceTree = ""; }; 86DFAB05E161B696DFC1057DB247CBE3 /* BaseTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BaseTouch.h; path = react/renderer/components/view/BaseTouch.h; sourceTree = ""; }; 86F28687E953C2F68F76CE4BB56DE52A /* RCTBundleManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBundleManager.m; sourceTree = ""; }; 86FBADB1ADE032495E4DC6B80BC37BFB /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 875E97EA9D0677F39C4C3599772B2F46 /* RCTTurboModuleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTurboModuleRegistry.h; sourceTree = ""; }; 87D33A3159E4827D6FAE051C897E7019 /* RCTReloadCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTReloadCommand.m; sourceTree = ""; }; 8817E84E8D2A30EF3D7C5A9EFE82A593 /* RCTRootShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootShadowView.m; sourceTree = ""; }; 881BC753A7C248050EC65DCFDF4A1F50 /* Differentiator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Differentiator.h; path = react/renderer/mounting/Differentiator.h; sourceTree = ""; }; 883F3E36A905B70FC2C8B78E92AC740A /* Promise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Promise.h; path = react/bridging/Promise.h; sourceTree = ""; }; 887027C7FF12FB7338869C776A7CEFBF /* React-RCTFabric-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTFabric-dummy.m"; sourceTree = ""; }; 88B840D20BFE171BE3DD9DFE4EC33AC0 /* LayoutPrimitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutPrimitives.h; path = react/renderer/core/LayoutPrimitives.h; sourceTree = ""; }; 88DDF4F26D766FFE558EA52E582A0879 /* React-nativeconfig-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-nativeconfig-dummy.m"; sourceTree = ""; }; 88F146A98AD14FE819BCA98EB3275AD3 /* RCTModuloAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuloAnimatedNode.h; sourceTree = ""; }; 88FE98CEA078C7FBF78F8FA3A02093CE /* RCTRefreshableProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshableProtocol.h; sourceTree = ""; }; 890A2DE43F7CEC807F5D45DD7FD1CE74 /* ExceptionString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExceptionString.h; path = folly/ExceptionString.h; sourceTree = ""; }; 890E8592B2798AA968BD07CDFB3EDD9A /* TurnSequencer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurnSequencer.h; path = folly/detail/TurnSequencer.h; sourceTree = ""; }; 890F493171D8B37E354419CA6A05C95A /* RCTClipboard.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTClipboard.h; path = React/CoreModules/RCTClipboard.h; sourceTree = ""; }; 8980AF1403E1F2A16DA44CAC4004F1E9 /* RCTTextAttributes.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextAttributes.mm; sourceTree = ""; }; 8980B7C2D6023D0EC77EF277C17227D1 /* HardwareConcurrency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HardwareConcurrency.h; path = folly/system/HardwareConcurrency.h; sourceTree = ""; }; 89BF32B08D57FC97C721EFC866E0143F /* RCTMockDef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMockDef.h; sourceTree = ""; }; 89D75BA444F9A4BBB02531A804E2707A /* TextProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextProps.h; path = react/renderer/components/text/TextProps.h; sourceTree = ""; }; 8A50EA432D2B83B1014E46448CA68632 /* EventBeat.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventBeat.cpp; path = react/renderer/core/EventBeat.cpp; sourceTree = ""; }; 8A7155EA3AC352921BE68F7BD76C6F36 /* RCTBaseTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputView.h; sourceTree = ""; }; 8A80985843E4723FCDE8D548AB93AC54 /* React-Mapbuffer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Mapbuffer.release.xcconfig"; sourceTree = ""; }; 8A81DCEC265B36C702B32207D90DA5F9 /* RCTImagePlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImagePlugins.mm; sourceTree = ""; }; 8A858627701B92C8E35A54D44F1CDF1B /* TurboModulePerfLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModulePerfLogger.h; path = react/nativemodule/core/ReactCommon/TurboModulePerfLogger.h; sourceTree = ""; }; 8AAE8CC35982681A17144AA7022C354D /* SocketAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SocketAddress.h; path = folly/SocketAddress.h; sourceTree = ""; }; 8AFE8F048924F7A8798499375AA68271 /* CString.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = CString.cpp; path = folly/lang/CString.cpp; sourceTree = ""; }; 8B0995DAA2C152F8B2BBE8B2BD71EB56 /* zh-Hant.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hant.lproj"; path = "React/I18n/strings/zh-Hant.lproj"; sourceTree = ""; }; 8B510656AC02DF313FD0F8F0C11489FC /* RCTInputAccessoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryView.h; sourceTree = ""; }; 8B75886BB83AA90D3B2DEFB75224490C /* RCTSafeAreaShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaShadowView.h; sourceTree = ""; }; 8B7D86572DB2B5C7CF324979D3984A2B /* AtomicHashMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicHashMap.h; path = folly/AtomicHashMap.h; sourceTree = ""; }; 8B8BA983DC0304E53A494B8BC8368D3C /* RawPropsKeyMap.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawPropsKeyMap.cpp; path = react/renderer/core/RawPropsKeyMap.cpp; sourceTree = ""; }; 8BE3CC89AB9CCAD959EA3B472BA6F99A /* RCTSurfaceView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceView.h; sourceTree = ""; }; 8C190024D996EF72661EA3DECD88FD76 /* React-RCTLinking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTLinking.release.xcconfig"; sourceTree = ""; }; 8C5791AD6F4A42E6F15A4AE3E13672C9 /* RCTDynamicTypeRamp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDynamicTypeRamp.h; sourceTree = ""; }; 8C66234F6FC8A3E3EADCA342B130FB54 /* Color.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Color.cpp; sourceTree = ""; }; 8CB48239EFF087F22AC48A83F592D64F /* RCTParagraphComponentAccessibilityProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTParagraphComponentAccessibilityProvider.mm; sourceTree = ""; }; 8CC0120933FC3F3C92122A211D47CC57 /* React-graphics.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-graphics.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8CD6649A7EC8CDD2CF31FCF0EBBD4501 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = cs.lproj; path = React/I18n/strings/cs.lproj; sourceTree = ""; }; 8CDDE02E3DE33048B69564671CBA6D96 /* RCTBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBridge.mm; sourceTree = ""; }; 8CFB7A8BE97081BCC80D943BAD260E5A /* RCTImageBlurUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageBlurUtils.mm; sourceTree = ""; }; 8D07443F9F8CE58F73EE39187877455E /* hermes-engine.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "hermes-engine.debug.xcconfig"; sourceTree = ""; }; 8D1CC2D4F8A104E3B6F891431E7ECE1B /* SafeAreaViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SafeAreaViewShadowNode.h; path = react/renderer/components/safeareaview/SafeAreaViewShadowNode.h; sourceTree = ""; }; 8D7883FA7052AFA06DF3F841FBBB33EF /* RCTLocalizationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLocalizationProvider.h; path = Fabric/RCTLocalizationProvider.h; sourceTree = ""; }; 8D7C4A3E62FB0FF7DF9D127631B944B1 /* RCTAccessibilityManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTAccessibilityManager+Internal.h"; path = "React/CoreModules/RCTAccessibilityManager+Internal.h"; sourceTree = ""; }; 8DF8D4CCED43409861DD2CA66CD7733F /* RCTConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTConstants.m; sourceTree = ""; }; 8E06A966DFD16239C4A4825D8200F89D /* JSIDynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = JSIDynamic.cpp; path = jsi/JSIDynamic.cpp; sourceTree = ""; }; 8E11E2044A1B7194DE5069CCBE8DD5AF /* RCTRuntimeExecutor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTRuntimeExecutor.mm; path = ReactCommon/RCTRuntimeExecutor.mm; sourceTree = ""; }; 8E2FD3C024F95AA7EF9D1ECD43A5E807 /* ScrollViewShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollViewShadowNode.cpp; path = react/renderer/components/scrollview/ScrollViewShadowNode.cpp; sourceTree = ""; }; 8E38DDBA8B3F295D182A2E60FC4F968B /* Sqlite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Sqlite.h; sourceTree = ""; }; 8E748C5FBED7C0C756FC4C4A6B5C2E8C /* OpenSSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OpenSSL.h; path = folly/portability/OpenSSL.h; sourceTree = ""; }; 8E76F01C60DFCE85A1C8CB416B3636D3 /* FBXXHashUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FBXXHashUtils.h; sourceTree = ""; }; 8E93927BD0D92FEB9D950507CCF5E2FF /* RCTLinkingPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLinkingPlugins.h; path = Libraries/LinkingIOS/RCTLinkingPlugins.h; sourceTree = ""; }; 8F172D220F95765CFA361637BAAAA417 /* compile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = compile.h; path = include/fmt/compile.h; sourceTree = ""; }; 8F35EF9396775F51CA6146B0C7D16351 /* StyleValuePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = StyleValuePool.h; sourceTree = ""; }; 8F517BDFB455C4400751998134FC0B9E /* FBLazyVector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FBLazyVector.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8F593DCCC2DAFF6D4243AAD2A5156F10 /* ReactNativeConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ReactNativeConfig.h; path = react/config/ReactNativeConfig.h; sourceTree = ""; }; 8F671A2A4E4BD8E767A5A396E4793F09 /* NetOps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = NetOps.cpp; path = folly/net/NetOps.cpp; sourceTree = ""; }; 8FA3CC41DE47D337EEEC4F2523A5A366 /* RCTVibrationPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTVibrationPlugins.mm; sourceTree = ""; }; 8FA93F3F56F84CCD73CC13AB0A744B8A /* RawPropsKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawPropsKey.h; path = react/renderer/core/RawPropsKey.h; sourceTree = ""; }; 8FC5170482B4001507331897446093A4 /* React-RCTBlob.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTBlob.debug.xcconfig"; sourceTree = ""; }; 8FDD74A51002058B82FB55AE5D657564 /* SpookyHashV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpookyHashV2.h; path = folly/hash/SpookyHashV2.h; sourceTree = ""; }; 90049B8377428D5B7434F2C8680C87CF /* RCTPointerEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPointerEvents.h; sourceTree = ""; }; 902581D4E30B461C86B20B03CC2F5AA6 /* React-RCTAppDelegate.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTAppDelegate.debug.xcconfig"; sourceTree = ""; }; 9033A744B6DD1EB398DCC4DEC2188393 /* React-debug.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-debug.debug.xcconfig"; sourceTree = ""; }; 9046E45D1CA4C4109F20975FE05769E0 /* FBLazyVector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBLazyVector.debug.xcconfig; sourceTree = ""; }; 9052E26FF92020AFAA064B27532BDD02 /* Enumerate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Enumerate.h; path = folly/container/Enumerate.h; sourceTree = ""; }; 90666F35881E0B6CF16A7F6D502820C6 /* LayoutAnimationDriver.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LayoutAnimationDriver.cpp; path = react/renderer/animations/LayoutAnimationDriver.cpp; sourceTree = ""; }; 906802F5C01093C45F849B1189752669 /* RCTRootComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTRootComponentView.mm; sourceTree = ""; }; 906C0BC7CCCBAF7E35B934CFD17FC44F /* LegacyUIManagerConstantsProviderBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyUIManagerConstantsProviderBinding.cpp; sourceTree = ""; }; 908D006CABFC90D4BADBF7B0C2544818 /* Access.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Access.h; path = folly/container/Access.h; sourceTree = ""; }; 90C01A0B4DB17D752D3BDD87C1B4D35E /* SRHTTPConnectMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRHTTPConnectMessage.h; path = SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h; sourceTree = ""; }; 90CE57248719DB1AD38AECFB8A66AF11 /* ExecutionContextManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutionContextManager.cpp; sourceTree = ""; }; 90D9EFC947AA0C68DCA4C6DD6EB901DE /* ImageEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageEventEmitter.h; path = react/renderer/components/image/ImageEventEmitter.h; sourceTree = ""; }; 90E8031BF4BBAA174907FCBE801328F4 /* React-runtimescheduler-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-runtimescheduler-dummy.m"; sourceTree = ""; }; 9103371D49F49FB8704F83F623604846 /* RCTTextPrimitivesConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextPrimitivesConversions.h; sourceTree = ""; }; 9113D58420F951D0F8E7D507C99E9190 /* RCTSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSpringAnimation.h; sourceTree = ""; }; 9130DC48E60A16B3033E4C4648557B52 /* Size.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Size.h; sourceTree = ""; }; 91392F3C2B6C40DD319492604906C7B0 /* hr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = hr.lproj; path = React/I18n/strings/hr.lproj; sourceTree = ""; }; 9146BC2894F3FC7F11EDB10CB1B6B9B3 /* ViewShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ViewShadowNode.cpp; path = react/renderer/components/view/ViewShadowNode.cpp; sourceTree = ""; }; 917B25EF0D073A826D0E80F0B81BFB26 /* json_patch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = json_patch.h; path = folly/json_patch.h; sourceTree = ""; }; 91946E0E55C67A006BFC6A09B6757F34 /* RCTFileReaderModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFileReaderModule.h; path = Libraries/Blob/RCTFileReaderModule.h; sourceTree = ""; }; 91B53126F00778E3792F8BDC9EF291DA /* CancellationToken-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CancellationToken-inl.h"; path = "folly/CancellationToken-inl.h"; sourceTree = ""; }; 91C4877BD9BE873DF4DF6B5DCC0CC740 /* YGNodeStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNodeStyle.h; path = yoga/YGNodeStyle.h; sourceTree = ""; }; 91CE745FCDC2F917FBFE8E7C44B21638 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sv.lproj; path = React/I18n/strings/sv.lproj; sourceTree = ""; }; 91DEEA05C7FC3B3FE85F51D16F0060A1 /* RCTNetworkTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworkTask.h; path = Libraries/Network/RCTNetworkTask.h; sourceTree = ""; }; 91E5E966C9BA06A775879A6EFFEF786D /* Hazptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Hazptr.h; path = folly/synchronization/Hazptr.h; sourceTree = ""; }; 92308B330D7A43F94B4AD41D0FEB8214 /* SurfaceHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SurfaceHandler.h; path = react/renderer/scheduler/SurfaceHandler.h; sourceTree = ""; }; 92427655A24DF879C52D7AA18EBFF83E /* AccessibilityPrimitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AccessibilityPrimitives.h; path = react/renderer/components/view/AccessibilityPrimitives.h; sourceTree = ""; }; 925A2297E6EEF7197A415C4C41AE8027 /* RCTBlobPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBlobPlugins.mm; sourceTree = ""; }; 926F478934D57018C94BFB51AF5970C8 /* React-FabricImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-FabricImage-dummy.m"; sourceTree = ""; }; 92EE42BB2B8D888B92EDD257DA21325E /* ParagraphLayoutManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphLayoutManager.h; path = react/renderer/components/text/ParagraphLayoutManager.h; sourceTree = ""; }; 92F7C8691D5DED9946359E1BF469148A /* React-RuntimeApple-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RuntimeApple-prefix.pch"; sourceTree = ""; }; 937EF872F9B051F189B72F49D8D54CAD /* RangeSse42.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RangeSse42.h; path = folly/detail/RangeSse42.h; sourceTree = ""; }; 93802254A23BD2E21FC5B6FC137CB7EE /* RCTRedBox.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTRedBox.mm; sourceTree = ""; }; 938D7993FE352F22F90BB01751E733E9 /* LegacyViewManagerInteropViewEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyViewManagerInteropViewEventEmitter.cpp; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.cpp; sourceTree = ""; }; 938DC03F8EB05E7BDD33175BF907D170 /* IPAddressV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddressV4.h; path = folly/IPAddressV4.h; sourceTree = ""; }; 93C1BA5C7F7A59628950008F9375BF82 /* RCTDevLoadingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDevLoadingView.h; path = React/CoreModules/RCTDevLoadingView.h; sourceTree = ""; }; 93E43D1F91E0AD0BD2B3B8127C452C9D /* RCTJSThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJSThread.h; sourceTree = ""; }; 93E465757376E937D199FB1ED68BB46C /* RCTVibration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVibration.h; path = Libraries/Vibration/RCTVibration.h; sourceTree = ""; }; 940919353E8C57E4A2A3101E8CD0FA67 /* RCTUITextField.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUITextField.mm; sourceTree = ""; }; 9414F0292C4CA9913CEEC7F61F3E32B3 /* React-jserrorhandler.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jserrorhandler.release.xcconfig"; sourceTree = ""; }; 942322E848A28FE125A1C9A84F16D548 /* RCTProfileTrampoline-arm.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-arm.S"; sourceTree = ""; }; 944561AB0FA2778925F3B3BD1ACD8B3C /* react_native_log.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = react_native_log.h; sourceTree = ""; }; 94463E432EBBF80182004B420404987D /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; 946B80B815D8B4AF5B32C1A04E7E061B /* React-perflogger.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-perflogger.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9472948FA5D6097F7AAF46BA5247C4C0 /* RCTBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridge.h; sourceTree = ""; }; 949C0E997EA3B7239902690DA5D564D5 /* RuntimeSchedulerBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeSchedulerBinding.h; sourceTree = ""; }; 94D87B59FEAC0DBA4F9A7E928431AAAE /* Random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Random.h; path = folly/Random.h; sourceTree = ""; }; 94ED4B520996293EF041391736BBBA24 /* flags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = flags.h; sourceTree = ""; }; 959BD66DF33D8DD073B3E7135B2954F7 /* RCTSourceCode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSourceCode.mm; sourceTree = ""; }; 95D17842EC6B842F72D0A2E4DA506E78 /* ShadowTree.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowTree.cpp; path = react/renderer/mounting/ShadowTree.cpp; sourceTree = ""; }; 95F4490C7C830CE7EDFD1E7F79557E18 /* Demangle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Demangle.h; path = folly/Demangle.h; sourceTree = ""; }; 95FAFB9E62426C075E9E5E41D65333EB /* RCTSurfaceRootView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceRootView.mm; sourceTree = ""; }; 95FE5AE8E711BF2C04047FE31AFA930A /* es-ES.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "es-ES.lproj"; path = "React/I18n/strings/es-ES.lproj"; sourceTree = ""; }; 9621CF80D2D681568C8BCAB003EA22F2 /* ShadowTreeRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowTreeRegistry.h; path = react/renderer/mounting/ShadowTreeRegistry.h; sourceTree = ""; }; 9628B2A1454DADB30631AE9787FC337F /* React-rendererdebug-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-rendererdebug-prefix.pch"; sourceTree = ""; }; 962AA8023E519A1F58D71BC1F73C95D0 /* GroupVarintDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GroupVarintDetail.h; path = folly/detail/GroupVarintDetail.h; sourceTree = ""; }; 963A0C06992A9D8797E0E1BA9A14DB04 /* RCTFPSGraph.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFPSGraph.mm; sourceTree = ""; }; 963CB6F0F1E28EA98A2EED61461AC386 /* WeakList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WeakList.h; sourceTree = ""; }; 963DAA4960B3974FFBB8DE571F07B048 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 96489235CABA0BF8A10434FC133718C8 /* AtomicNotification-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AtomicNotification-inl.h"; path = "folly/synchronization/AtomicNotification-inl.h"; sourceTree = ""; }; 9652157178DCF97B039AEF273CD86695 /* RCTNativeAnimatedTurboModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNativeAnimatedTurboModule.mm; sourceTree = ""; }; 9668F22AD81B720182D9C7F1133935F2 /* hermes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hermes.h; path = destroot/include/hermes/hermes.h; sourceTree = ""; }; 967DBD838FB53E8907C105802E22ECCA /* React-Codegen.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Codegen.debug.xcconfig"; sourceTree = ""; }; 969D216DADA9AF02B0339E42E569D42B /* SRIOConsumer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRIOConsumer.h; path = SocketRocket/Internal/IOConsumer/SRIOConsumer.h; sourceTree = ""; }; 96AEA8A2506861840BC63D873CC2961A /* StateData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StateData.h; path = react/renderer/core/StateData.h; sourceTree = ""; }; 96C1ECDE3D239B5524C2DD16740B8B8C /* RCTConvert+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+Transform.m"; sourceTree = ""; }; 96C45D3F8919F8B19727DA09E333BFE6 /* RCTObjcExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTObjcExecutor.h; sourceTree = ""; }; 96F9A50575BD572DC92EEFE7118DE559 /* PlatformRunLoopObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PlatformRunLoopObserver.h; sourceTree = ""; }; 96FCCADF61AA384004BF02F11E1A50B9 /* Task.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Task.h; sourceTree = ""; }; 971F6C319DDD4BD078954A5EF77B5BA7 /* React-featureflags */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-featureflags"; path = "libReact-featureflags.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 97537A67023F6E33A60145FD2CCD320F /* InspectorUtilities.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorUtilities.cpp; sourceTree = ""; }; 976E60D841E3AEC485885E2A36C843AC /* RCTDataRequestHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDataRequestHandler.mm; sourceTree = ""; }; 977FB42CD545522302B7AEA55376D2F7 /* ExceptionWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExceptionWrapper.h; path = folly/ExceptionWrapper.h; sourceTree = ""; }; 9788F37552AF8A0A123A07FA7D080CFA /* ValueFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ValueFactory.h; path = react/renderer/core/ValueFactory.h; sourceTree = ""; }; 97A95308B6D47ED59BD75934355ADDF6 /* TextMeasureCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextMeasureCache.cpp; path = react/renderer/textlayoutmanager/TextMeasureCache.cpp; sourceTree = ""; }; 97BEF627FC626AA3E7E8CA75193664A3 /* RCT-Folly-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCT-Folly-prefix.pch"; sourceTree = ""; }; 97C17BDCBCF48F7FE1E2CE59E0B17252 /* SparseByteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SparseByteSet.h; path = folly/container/SparseByteSet.h; sourceTree = ""; }; 982AAB27F58C71E3FA007537ED46BB9D /* PolyDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PolyDetail.h; path = folly/detail/PolyDetail.h; sourceTree = ""; }; 9833AD993B14B7CEE86ECA66FA7A7B7A /* React-RCTAppDelegate.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-RCTAppDelegate.modulemap"; sourceTree = ""; }; 9841711B9F3A736014573E0B62D9C1F9 /* YGNodeLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNodeLayout.h; path = yoga/YGNodeLayout.h; sourceTree = ""; }; 9848E5EDA897DF122EF07B42AF3EEB86 /* GTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTest.h; path = folly/portability/GTest.h; sourceTree = ""; }; 9849504D06A58E365E3512F08D8AD6DF /* FallbackRuntimeAgentDelegate.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = FallbackRuntimeAgentDelegate.cpp; sourceTree = ""; }; 985183EC5FB028AC6A6FCC26CC91696A /* SlowFingerprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SlowFingerprint.h; path = folly/detail/SlowFingerprint.h; sourceTree = ""; }; 9862B8B78362BC8D98438DB2C5675196 /* SanitizeThread.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SanitizeThread.cpp; path = folly/synchronization/SanitizeThread.cpp; sourceTree = ""; }; 98BB183E94BA72BD56983DB14089B952 /* TouchEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TouchEventEmitter.cpp; path = react/renderer/components/view/TouchEventEmitter.cpp; sourceTree = ""; }; 98C9E5135E046EC50D915DC1941F6D87 /* YGNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGNode.cpp; path = yoga/YGNode.cpp; sourceTree = ""; }; 98CDD541D0DC28ECF520BEE664E58AEC /* RCTActivityIndicatorViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorViewManager.m; sourceTree = ""; }; 98D0A9133BF9CECCDCD33D1F4C38B4C8 /* RCTAccessibilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAccessibilityManager.h; path = React/CoreModules/RCTAccessibilityManager.h; sourceTree = ""; }; 991E213D38BB44AE5C3367DDE4A4D4D8 /* RCTColorAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTColorAnimatedNode.h; sourceTree = ""; }; 9934CD5B42C888E8A4F1D3552AEE6B13 /* React-Fabric.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-Fabric.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 996448BB93D8203D8D6C59B2D0B33BDA /* ImageEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageEventEmitter.cpp; path = react/renderer/components/image/ImageEventEmitter.cpp; sourceTree = ""; }; 99706928F57B54531F9949E340BFECB8 /* RCTJSThreadManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTJSThreadManager.h; path = ReactCommon/RCTJSThreadManager.h; sourceTree = ""; }; 997842162A2D57DA5A2636E554A28F19 /* React-utils.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-utils.debug.xcconfig"; sourceTree = ""; }; 997B7B2A3CC26B9D704D7CB940D7E4C6 /* Align.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Align.h; path = folly/lang/Align.h; sourceTree = ""; }; 99E222D0C7D14CFBD1BC586704C58A9D /* React-runtimeexecutor.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-runtimeexecutor.release.xcconfig"; sourceTree = ""; }; 99E72FB672688243BE5F6E35ABA1E42F /* RCTSurfaceDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceDelegate.h; sourceTree = ""; }; 99E851596D4A5EE743DC493671DB9DA3 /* Partial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Partial.h; path = folly/functional/Partial.h; sourceTree = ""; }; 99F1158A135CC58252D861686496E8DE /* RCTStatusBarManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTStatusBarManager.mm; sourceTree = ""; }; 9A2407C78B8F357AFB081AF5B1BC953A /* RCTSafeAreaViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewComponentView.h; sourceTree = ""; }; 9A2D8939F820583ACA4B8154B63050D7 /* cached-powers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "cached-powers.h"; path = "double-conversion/cached-powers.h"; sourceTree = ""; }; 9A5F0251C69A9CCF2DB3222CE170671E /* Edge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Edge.h; sourceTree = ""; }; 9A62D11BB82CB6A24A13CAE4D0F6632A /* GCTripwireContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCTripwireContext.h; path = destroot/include/hermes/Public/GCTripwireContext.h; sourceTree = ""; }; 9A6F7F2DCBC2D9334AE0C6DE812A653E /* RCTDeprecation.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RCTDeprecation.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9A7E0B4304900884F1F7552E271BAE80 /* SplitStringSimd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SplitStringSimd.h; path = folly/detail/SplitStringSimd.h; sourceTree = ""; }; 9A870B9A0F18A8C3F9075851CE67E22B /* React-RCTVibration-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTVibration-dummy.m"; sourceTree = ""; }; 9A909CE9BFF1F0B380221FDEE11D0211 /* RCTSurface.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurface.mm; sourceTree = ""; }; 9A9617B1637CABEDDB4A95483334CB93 /* RCTLayoutAnimationGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimationGroup.m; sourceTree = ""; }; 9B36F42640063CCA329D93AC8F874A56 /* DebugStringConvertible.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DebugStringConvertible.h; sourceTree = ""; }; 9B40A55CAE96B9EC2411B625D3F58ABD /* ScopedExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ScopedExecutor.h; sourceTree = ""; }; 9BC40B6E05AAAA8B1786166F41BD0EBF /* RCTPerformanceLoggerUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTPerformanceLoggerUtils.mm; path = ReactCommon/RCTPerformanceLoggerUtils.mm; sourceTree = ""; }; 9BD826EA734516D956DB671826DED506 /* RCTTransformAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTransformAnimatedNode.h; sourceTree = ""; }; 9BE7B7E0E20673111D75C477804554AF /* ShadowView.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowView.cpp; path = react/renderer/mounting/ShadowView.cpp; sourceTree = ""; }; 9C0FAA307377663772FDCD8EEA4D9752 /* SRLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRLog.h; path = SocketRocket/Internal/Utilities/SRLog.h; sourceTree = ""; }; 9C46ED3EA004CAAFEB6FEF89B7AF2F0C /* RCTPlatformColorUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPlatformColorUtils.mm; sourceTree = ""; }; 9C99F752EEC9741F33EED362076074BF /* YogaStylableProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YogaStylableProps.cpp; path = react/renderer/components/view/YogaStylableProps.cpp; sourceTree = ""; }; 9C9BD5B613E101C64C2992C9C6D47EAC /* RCTNativeAnimatedNodesManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNativeAnimatedNodesManager.mm; sourceTree = ""; }; 9CA3417ED0B8CDE1906D3202E80B148D /* Iterators.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Iterators.h; path = folly/detail/Iterators.h; sourceTree = ""; }; 9D0FCEB123126F6E7439D8ABC6DB35A1 /* RCTTextLayoutManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextLayoutManager.h; sourceTree = ""; }; 9D24D1273C6645B9F73FB2F6C0A44A1D /* jsi-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "jsi-inl.h"; path = "jsi/jsi-inl.h"; sourceTree = ""; }; 9D5CD2B433F8011D807EABA3442374E7 /* RCTRedBoxExtraDataViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRedBoxExtraDataViewController.h; sourceTree = ""; }; 9D634D9C7371357029E41D29AD89E979 /* react_native_assert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = react_native_assert.h; sourceTree = ""; }; 9D7DA62E7DF50F0A454C529AA78EA7E5 /* Display.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Display.h; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9DB28E8C209A78E622C0305EEB0B8A19 /* RCTImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageView.h; path = Libraries/Image/RCTImageView.h; sourceTree = ""; }; 9DB326307140B9D4967E5C75EE4D451D /* Function.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Function.h; path = react/bridging/Function.h; sourceTree = ""; }; 9DBAD76DF0AA6D7A788B0D3674035677 /* Hint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Hint.h; path = folly/lang/Hint.h; sourceTree = ""; }; 9DD30C23A0277639DFBEA7BDEC6DFEE3 /* UninitializedMemoryHacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UninitializedMemoryHacks.h; path = folly/memory/UninitializedMemoryHacks.h; sourceTree = ""; }; 9DF1753017BD4FC4A6370681CBE48C79 /* TextInputState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextInputState.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.h; sourceTree = ""; }; 9E177524AAB858045AD52E1FFD4C991A /* PointerHoverTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PointerHoverTracker.h; path = react/renderer/uimanager/PointerHoverTracker.h; sourceTree = ""; }; 9E1FB69666F2C09161B2E1A2535CC43A /* RCTLayoutAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimation.h; sourceTree = ""; }; 9E6068776F49102288177FE25869B4F8 /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Demangle.cpp; path = folly/Demangle.cpp; sourceTree = ""; }; 9E725BADB6EC401BE33F493BD4BE2793 /* ParagraphComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphComponentDescriptor.h; path = react/renderer/components/text/ParagraphComponentDescriptor.h; sourceTree = ""; }; 9EA2794840FA725A97054EE3C4C201C0 /* RCTAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAnimatedImage.h; path = Libraries/Image/RCTAnimatedImage.h; sourceTree = ""; }; 9EA652E4CB7DDC6698F42743A59CB48F /* RCTKeyCommands.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTKeyCommands.h; sourceTree = ""; }; 9EB5D5242D476B50F6A84EA6ECF95DAF /* React-FabricImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-FabricImage.debug.xcconfig"; sourceTree = ""; }; 9EED1EEAD5AA1DD78D49501ECED7AB7D /* RCTInterpolationAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInterpolationAnimatedNode.mm; sourceTree = ""; }; 9F03A2E19DD75677633924F1B93787D1 /* React-RCTAppDelegate.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTAppDelegate.release.xcconfig"; sourceTree = ""; }; 9F4B2863206A2795EDD2B67B16FAC91C /* RCTNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworking.h; path = Libraries/Network/RCTNetworking.h; sourceTree = ""; }; 9F5340BCCBE419D365ECF7F577F67C2B /* React-NativeModulesApple-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-NativeModulesApple-dummy.m"; sourceTree = ""; }; 9F7378714B1A2275988B900E389392EE /* RCTTouchEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTouchEvent.h; sourceTree = ""; }; 9F8C4243A150FEDAB173B67E50BC9174 /* ReactEventPriority.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ReactEventPriority.h; path = react/renderer/core/ReactEventPriority.h; sourceTree = ""; }; 9FB8DB4CA6FB75873D74FF57CA59968C /* TrailingPosition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TrailingPosition.h; sourceTree = ""; }; 9FBD5986BF1B3B3D5B97CC5217DFE41D /* YGConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGConfig.h; path = yoga/YGConfig.h; sourceTree = ""; }; A04DC956EC28B16DDE9F446048074A0D /* BaseViewEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BaseViewEventEmitter.cpp; path = react/renderer/components/view/BaseViewEventEmitter.cpp; sourceTree = ""; }; A063348780E28C80CDFC691EE7F2C78D /* React-RCTText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTText-dummy.m"; sourceTree = ""; }; A07442CD10380BE0C2F7C19CA5D62FB6 /* RCTSubtractionAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSubtractionAnimatedNode.mm; sourceTree = ""; }; A07A822153FEC0A3E902A56BD0450957 /* React-RuntimeHermes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeHermes.debug.xcconfig"; sourceTree = ""; }; A09332652A2DA7B2F95FDC212274928B /* Fcntl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fcntl.h; path = folly/portability/Fcntl.h; sourceTree = ""; }; A0A2F69D09350A6A5AFA9864BBB84FFE /* React-Codegen.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-Codegen.modulemap"; sourceTree = ""; }; A0C9633F0AEEFB533D94C4D5B1D9CFDE /* React-perflogger.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-perflogger.debug.xcconfig"; sourceTree = ""; }; A0CFE0D44D175E1A391C2129A3C3EBEF /* RCTAlertManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAlertManager.mm; sourceTree = ""; }; A0DF3FB6417DB1CED9E5F8CF270DC9F6 /* RCTRootComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootComponentView.h; sourceTree = ""; }; A0E2B3DDC742F701942096E520561398 /* RCTShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = ""; }; A0E5972A9C9EBA5B3038586A11E0FCF5 /* RCTAppSetupUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAppSetupUtils.h; sourceTree = ""; }; A0F0DECC4F2AEFAABCD0C3A4F368C487 /* RCTVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVersion.m; sourceTree = ""; }; A11628FF9D522105C68BD01BB4D05697 /* ConnectionDemux.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ConnectionDemux.cpp; sourceTree = ""; }; A1EEF0D5633DA10F123E110EDC4C4947 /* BridgelessJSCallInvoker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = BridgelessJSCallInvoker.cpp; sourceTree = ""; }; A213D84A5E7EB977D2213B29DCE12629 /* React-nativeconfig.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-nativeconfig.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; A21CEC9ACA2547F2173B743914CC6A16 /* ViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ViewProps.h; path = react/renderer/components/view/ViewProps.h; sourceTree = ""; }; A2237CD09A4316F9776CDCDA5907FAF5 /* RCTViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTViewComponentView.mm; sourceTree = ""; }; A23EC0B053A41A76F8AE3B595FF6B87A /* MountingTransaction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MountingTransaction.h; path = react/renderer/mounting/MountingTransaction.h; sourceTree = ""; }; A2433055CA015DE51A8A13B2AAAE5155 /* Config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; A24606F72343E19E228B3000540EC8FD /* RCTRedBoxExtraDataViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRedBoxExtraDataViewController.m; sourceTree = ""; }; A275DD42FB75440C81B2F60BD6B23196 /* fmt.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = fmt.debug.xcconfig; sourceTree = ""; }; A27676D6AF709B183CC889284CE2B3D1 /* Direction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Direction.h; sourceTree = ""; }; A294F9716939BAB7421C72EE8DE2D3C2 /* RCTViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTViewManager.m; sourceTree = ""; }; A29983597DBADCA7A69A6EAE6BBED3C3 /* RCTView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTView.m; sourceTree = ""; }; A2E8652189AEFEC58162855B790CFA15 /* Futex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Futex.h; path = folly/detail/Futex.h; sourceTree = ""; }; A31AB8CE7A0BE03B38908CD5083FD09A /* React-debug.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-debug.modulemap"; sourceTree = ""; }; A322F1AA7B7D88649BEF8224A0A6AC08 /* RCTViewRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTViewRegistry.m; sourceTree = ""; }; A341E5DC44E63AA9B8DFF0E0E059A5F4 /* StubView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StubView.h; path = react/renderer/mounting/StubView.h; sourceTree = ""; }; A349B258597025E561C3C8C773B51674 /* RCTEnhancedScrollView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTEnhancedScrollView.mm; sourceTree = ""; }; A35672FA86AA809C95DB1AD01D1F4E30 /* LayoutMetrics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutMetrics.h; path = react/renderer/core/LayoutMetrics.h; sourceTree = ""; }; A3A1C115325E8DCA58106218ADDBA397 /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nl.lproj; path = React/I18n/strings/nl.lproj; sourceTree = ""; }; A3B4504723D37DDB3A1BBB28AE41070F /* Dirent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Dirent.h; path = folly/portability/Dirent.h; sourceTree = ""; }; A3F08746919747A6F56A2864E48BDDD3 /* EventQueue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventQueue.cpp; path = react/renderer/core/EventQueue.cpp; sourceTree = ""; }; A43C1B14F1018F4B603503BF2E6E2524 /* strtod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = strtod.h; path = "double-conversion/strtod.h"; sourceTree = ""; }; A44876BED8E87761881D41D005CCA0E7 /* ImageManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = ImageManager.mm; path = react/renderer/imagemanager/ImageManager.mm; sourceTree = ""; }; A45E1BB2ACE5150BEF6C4801CE86896C /* FMDatabaseQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = FMDatabaseQueue.m; sourceTree = ""; }; A46EE0867CB9E92996C6DE17ED0EE3DB /* RCTSafeAreaViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSafeAreaViewComponentView.mm; sourceTree = ""; }; A4841C02742AC28A86287DBC07806A0E /* RCTInteropTurboModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTInteropTurboModule.mm; path = ReactCommon/RCTInteropTurboModule.mm; sourceTree = ""; }; A4AFB126642929BDB526E70B71748879 /* EventQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventQueue.h; path = react/renderer/core/EventQueue.h; sourceTree = ""; }; A4D384B56D16CD122C5BFFBD16EFEF46 /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = react/renderer/animations/utils.h; sourceTree = ""; }; A4DBF56470408F62F5CFC5811EC41C55 /* ParkingLot.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParkingLot.cpp; path = folly/synchronization/ParkingLot.cpp; sourceTree = ""; }; A4DDB397BCB393ACDDF3EB861945B730 /* EventListener.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventListener.cpp; path = react/renderer/core/EventListener.cpp; sourceTree = ""; }; A4EB08646CC21410C4622CEE62B7DC51 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h; sourceTree = ""; }; A50AFF02E96B2A9FAD9F4CDF5D05C365 /* RCTPerfMonitor.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPerfMonitor.mm; sourceTree = ""; }; A50DCAB2950F79811B921C5568362684 /* UnbatchedEventQueue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnbatchedEventQueue.cpp; path = react/renderer/core/UnbatchedEventQueue.cpp; sourceTree = ""; }; A511E79FFB4293C0F4E1849EB6DAA5E9 /* FMDatabaseAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = FMDatabaseAdditions.m; sourceTree = ""; }; A53C026A38554E36070D5FF7477DE9BD /* RCTStatusBarManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTStatusBarManager.h; path = React/CoreModules/RCTStatusBarManager.h; sourceTree = ""; }; A5419C82AB201A4405D35E3F97C867FB /* TextInputProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextInputProps.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h; sourceTree = ""; }; A5823607D77DE3B854886CBA748F1433 /* TelemetryController.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TelemetryController.cpp; path = react/renderer/mounting/TelemetryController.cpp; sourceTree = ""; }; A5B22DA0749C539DAE387FAB7E1507FC /* UIView+React.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIView+React.m"; sourceTree = ""; }; A5B49761F8D1EB12585DD45CAA2E489F /* React-logger */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-logger"; path = "libReact-logger.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A5E92316DAA53D54019FF1D5E3697030 /* simdjson.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = simdjson.cpp; path = src/simdjson.cpp; sourceTree = ""; }; A5FAB647D0F4DBFEAA683CD3AFF2F587 /* ModalHostViewShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ModalHostViewShadowNode.h; path = react/renderer/components/modal/ModalHostViewShadowNode.h; sourceTree = ""; }; A5FD51AD36118D278A13D28B6A1C0F24 /* MeasureMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MeasureMode.h; sourceTree = ""; }; A602AFB5786A8427B22008771FA2A005 /* ImageState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageState.h; path = react/renderer/components/image/ImageState.h; sourceTree = ""; }; A6072D5AD4221696B9DE9D90F1EB0439 /* Foreach-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Foreach-inl.h"; path = "folly/container/Foreach-inl.h"; sourceTree = ""; }; A613E889F5C29F0DAC3CCA3F322423D6 /* RCTStyleAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTStyleAnimatedNode.mm; sourceTree = ""; }; A616744A9B894FE3A9A3A1E53EA13CA3 /* React-Fabric-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Fabric-prefix.pch"; sourceTree = ""; }; A67702A5BB9FE81CBF2BBE1340D12764 /* Float.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Float.h; sourceTree = ""; }; A67E85E5F06FDA406D3A1B378BDF0C5C /* React-runtimescheduler */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-runtimescheduler"; path = "libReact-runtimescheduler.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A68E5A9B69A3BA0FD52CAF7A354EC93B /* React-RCTNetwork */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTNetwork"; path = "libReact-RCTNetwork.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A6A3F0A2B90931BC1EC1C3E21381C797 /* TextInputState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextInputState.cpp; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp; sourceTree = ""; }; A6BB42C32564D7C067A75160B7457050 /* ScopeGuard.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ScopeGuard.cpp; path = folly/ScopeGuard.cpp; sourceTree = ""; }; A6D5BA68A42EABFFF8C42BAFF6B32E74 /* RCTCxxInspectorPackagerConnectionDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxInspectorPackagerConnectionDelegate.h; sourceTree = ""; }; A6D702ACCFE3931509F2790C6E153783 /* RCTTouchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTouchHandler.h; sourceTree = ""; }; A6E21B3D9A76F241B93CEF7D2AA19709 /* New.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = New.h; path = folly/lang/New.h; sourceTree = ""; }; A71AF6D224DB5B45B4A632DC900459A4 /* fi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fi.lproj; path = React/I18n/strings/fi.lproj; sourceTree = ""; }; A7237AA79C8E933F1CAB9DE0BDD0B0A5 /* HostPlatformColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HostPlatformColor.h; sourceTree = ""; }; A73C90F6C769770D58136250FCF48CCC /* React-hermes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-hermes.debug.xcconfig"; sourceTree = ""; }; A74ED5352ACAC24B76D223C19F8C62F3 /* JsArgumentHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JsArgumentHelpers.h; sourceTree = ""; }; A75D554108476D6BB8046C09E3577B9C /* RuntimeExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RuntimeExecutor.h; path = ReactCommon/RuntimeExecutor.h; sourceTree = ""; }; A7BB8379D1CD88BE60A5A0D33D8572A2 /* EventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventEmitter.h; path = react/renderer/core/EventEmitter.h; sourceTree = ""; }; A7C3FA3DEC4092F63BB39E1F2566D4BC /* React-runtimeexecutor.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-runtimeexecutor.debug.xcconfig"; sourceTree = ""; }; A7C7A0603C70B03A5BAB896F01F15E47 /* ConcreteShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcreteShadowNode.h; path = react/renderer/core/ConcreteShadowNode.h; sourceTree = ""; }; A7CDF9E97D044762C37CF380DC086899 /* AtomicIntrusiveLinkedList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicIntrusiveLinkedList.h; path = folly/AtomicIntrusiveLinkedList.h; sourceTree = ""; }; A7DC83484741B6CEE36700BCB855A982 /* ShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowView.h; path = react/renderer/mounting/ShadowView.h; sourceTree = ""; }; A7E2525A0E66EF3136FD4342856314BC /* RCTReconnectingWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTReconnectingWebSocket.m; path = Libraries/WebSocket/RCTReconnectingWebSocket.m; sourceTree = ""; }; A7FEE6ECF7F217445EBD97C857669637 /* RCTTiming.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTiming.h; path = React/CoreModules/RCTTiming.h; sourceTree = ""; }; A807F600D199623AAC1E47F99AD43C8F /* WatermelonDB-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "WatermelonDB-prefix.pch"; sourceTree = ""; }; A80A385542A9347C200F57687297EA39 /* simdjson-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "simdjson-umbrella.h"; sourceTree = ""; }; A846AD31825FC26747481C82D51B3091 /* RCTInputAccessoryShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryShadowView.mm; sourceTree = ""; }; A854CDECEC563F33590796054B7822E0 /* not_null-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "not_null-inl.h"; path = "folly/memory/not_null-inl.h"; sourceTree = ""; }; A85C9B1C1144724CD503C69AEA9FCD8B /* RCTShadowView+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Internal.m"; sourceTree = ""; }; A8AFB5F8828D81AB1CE785F5BD4DC61F /* TextMeasureCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextMeasureCache.h; path = react/renderer/textlayoutmanager/TextMeasureCache.h; sourceTree = ""; }; A8CB248587D48F0A957641CB162717A4 /* React-nativeconfig-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-nativeconfig-prefix.pch"; sourceTree = ""; }; A8FBD27727A3838365F69F39FCE1378C /* zh-Hans.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hans.lproj"; path = "React/I18n/strings/zh-Hans.lproj"; sourceTree = ""; }; A945AE383969D5B4AC29974625C53F64 /* Rcu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Rcu.h; path = folly/synchronization/Rcu.h; sourceTree = ""; }; A956484ABC9353D13F5C213DFF6F76A7 /* RCTDecayAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDecayAnimation.h; sourceTree = ""; }; A97083B6B19B7182A30872D4EBFEBE41 /* simdjson.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = simdjson.h; path = src/simdjson.h; sourceTree = ""; }; A9951E633F11568F42B8CA2DB0EAAE73 /* RCTModalManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalManager.m; sourceTree = ""; }; A9C67AC080A782225408DA978D1DA4CA /* conversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conversions.h; path = react/renderer/components/image/conversions.h; sourceTree = ""; }; AA1553BA7C531B0C6FB8F13D06F2F39B /* RCTConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTConvert.h; sourceTree = ""; }; AA29C6591A2E715C33B132EAC7AF7008 /* RCTJSIExecutorRuntimeInstaller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJSIExecutorRuntimeInstaller.h; sourceTree = ""; }; AA3A3C340B0E34E2DE91A75386812EC9 /* utilities.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = utilities.cc; path = src/utilities.cc; sourceTree = ""; }; AA78032AF49201693A01E81C17C66EA3 /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Layout.m"; sourceTree = ""; }; AAB226E4AB2DF48BAF6AC83AC49AC1CD /* RCTRedBox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTRedBox.h; path = React/CoreModules/RCTRedBox.h; sourceTree = ""; }; AAD779B1757E51874AD3E315AE0911BF /* RCTNativeModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNativeModule.mm; sourceTree = ""; }; AAE64CF21F806223D54976C43C7CA94B /* RCTAppDelegate.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAppDelegate.mm; sourceTree = ""; }; AAF4DA1DA2D688AADC65A0DA9B5471DF /* SRError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRError.h; path = SocketRocket/Internal/Utilities/SRError.h; sourceTree = ""; }; AB1459102548D6C97BDF32F7673BD1DC /* Checksum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Checksum.h; path = folly/hash/Checksum.h; sourceTree = ""; }; AB17B662459CE9B65E9A84AF92104DEF /* YGPixelGrid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGPixelGrid.cpp; path = yoga/YGPixelGrid.cpp; sourceTree = ""; }; AB3065BC1723E238FF985D2A37F0A542 /* RCT-Folly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RCT-Folly.release.xcconfig"; sourceTree = ""; }; AB6B32F88010B897C8CBEDA90F51EF81 /* SimpleSimdStringUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SimpleSimdStringUtils.h; path = folly/detail/SimpleSimdStringUtils.h; sourceTree = ""; }; AB89B71C07D924F2DA582CF6A4C3CFA4 /* RCTDivisionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDivisionAnimatedNode.h; sourceTree = ""; }; ABA37D7615C32B1F5B407A5EE086D7F7 /* Node.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Node.h; sourceTree = ""; }; ABA56E2973B5F2DA40756B56701FEC9D /* InspectorInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorInterfaces.h; sourceTree = ""; }; AC04A5C67B4CC06104E1FAC9CDF58712 /* SharedMutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SharedMutex.h; path = folly/SharedMutex.h; sourceTree = ""; }; AC1448E3360F6A62DEB6D6BE3EACB26A /* ParagraphEventEmitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphEventEmitter.cpp; path = react/renderer/components/text/ParagraphEventEmitter.cpp; sourceTree = ""; }; AC18E26348C64BD7E409DF012EC8FD1E /* ComponentDescriptors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptors.h; path = react/renderer/components/rncore/ComponentDescriptors.h; sourceTree = ""; }; AC18F953AA41F612F2CB8153565DB590 /* TextLayoutManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = TextLayoutManager.mm; sourceTree = ""; }; AC1A3A6597F7D2D59AD0CE67E1A09CD2 /* RCTLegacyViewManagerInteropComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLegacyViewManagerInteropComponentView.mm; sourceTree = ""; }; ACA2D560DF5674F43C2F0CF72BCBF485 /* RCTImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoader.h; path = Libraries/Image/RCTImageLoader.h; sourceTree = ""; }; ACE440831164AF324B22178CA5BE40D0 /* FBLazyVector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLazyVector.h; path = FBLazyVector/FBLazyVector.h; sourceTree = ""; }; AD0288743440505A088DDFA69CE73173 /* RCTScrollViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollViewManager.m; sourceTree = ""; }; AD09CCE53769CA1F7BC1031AEBE1E2CE /* uk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = uk.lproj; path = React/I18n/strings/uk.lproj; sourceTree = ""; }; AD13EA361260D530BA7944F0CFC046E1 /* RCTParserUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTParserUtils.m; sourceTree = ""; }; AD16D5AA10E8416443D8D1FF1460C44B /* Format.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Format.h; path = folly/Format.h; sourceTree = ""; }; AD18C7CE1E7A5577FEB2D0F7000A7E5F /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ko.lproj; path = React/I18n/strings/ko.lproj; sourceTree = ""; }; AD2710EC72C624EB87F820405512AA45 /* React-Fabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Fabric.release.xcconfig"; sourceTree = ""; }; AD29B45C17572843FBF6146FD5BF87E6 /* SRIOConsumerPool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRIOConsumerPool.h; path = SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h; sourceTree = ""; }; AD4769F2911766BA548AFD0FFEDF8426 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = ""; }; AD4FFB5F1B30B5584201585D67221D38 /* RCTLogBox.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLogBox.mm; sourceTree = ""; }; AD601E06293D3A3930BE7C2006B41F2B /* SaturatingSemaphore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SaturatingSemaphore.h; path = folly/synchronization/SaturatingSemaphore.h; sourceTree = ""; }; AD69277D74C06C01F9C13CD77A13038E /* RCTIdentifierPool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTIdentifierPool.h; sourceTree = ""; }; AD77E6961ACDBD3730EC6702236118AC /* RootProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RootProps.cpp; path = react/renderer/components/root/RootProps.cpp; sourceTree = ""; }; AD945009ED5CD2E57F93715472E7BAAC /* PropsMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PropsMacros.h; path = react/renderer/core/PropsMacros.h; sourceTree = ""; }; ADB0726235787BE84DE49AC4624711EA /* tr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = tr.lproj; path = React/I18n/strings/tr.lproj; sourceTree = ""; }; ADC21E6203A42D717BE49E8E588CB0D5 /* SplitStringSimdImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SplitStringSimdImpl.h; path = folly/detail/SplitStringSimdImpl.h; sourceTree = ""; }; ADD320EC4221CCC1B76BB433ED455CEC /* React-debug.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-debug.release.xcconfig"; sourceTree = ""; }; ADF560A03C559A77C9107C87619CB4E7 /* PageAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PageAgent.h; sourceTree = ""; }; AE1B2934FABC52774A42A595531E4F6A /* ComponentDescriptors.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentDescriptors.cpp; path = react/renderer/components/rncore/ComponentDescriptors.cpp; sourceTree = ""; }; AE3CEE292BC38DDDB735B092E8F32A0D /* RCTDebuggingOverlay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDebuggingOverlay.h; sourceTree = ""; }; AE414480637A9BC7CFC2B70C16C12024 /* AttributedString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AttributedString.h; path = react/renderer/attributedstring/AttributedString.h; sourceTree = ""; }; AE45D4CB885CACA4B317542378B0D81F /* NSURLRequest+SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+SRWebSocket.h"; path = "SocketRocket/NSURLRequest+SRWebSocket.h"; sourceTree = ""; }; AE55EB0D8F0641B6A3B9BC048B6A5DF7 /* RawTextShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawTextShadowNode.h; path = react/renderer/components/text/RawTextShadowNode.h; sourceTree = ""; }; AE729B821BDA784B45AFF8A65039D05F /* React-utils-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-utils-umbrella.h"; sourceTree = ""; }; AE8331A8B19DE05088A3AF1C06D9599D /* ShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowNode.cpp; path = react/renderer/core/ShadowNode.cpp; sourceTree = ""; }; AE85DC12DF3E30AE258ACC3C9861E350 /* JSBigString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSBigString.h; sourceTree = ""; }; AE8C9FA47D47B64CE6F506ABE68FCF06 /* DiscriminatedPtrDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DiscriminatedPtrDetail.h; path = folly/detail/DiscriminatedPtrDetail.h; sourceTree = ""; }; AEA7713221A3B353A10E5D4A3E848D96 /* LayoutConstraints.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutConstraints.h; path = react/renderer/core/LayoutConstraints.h; sourceTree = ""; }; AEB455EDDB077C84F1FFD562DFFBA54E /* RCTReconnectingWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTReconnectingWebSocket.h; path = Libraries/WebSocket/RCTReconnectingWebSocket.h; sourceTree = ""; }; AEBD60021620778CF66B52B3BB90BDF5 /* stubs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stubs.h; path = react/renderer/mounting/stubs.h; sourceTree = ""; }; AEC06D85B7F38501A5719E0618BBDCB6 /* RCTBridgeProxy.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBridgeProxy.mm; sourceTree = ""; }; AEC9AF86778FE1E50193C715FFD9DE49 /* React-debug.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-debug.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; AEE7D821FE2F99E06D93025BCCDE581E /* RCTSafeAreaView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaView.h; sourceTree = ""; }; AEF17D14D0B0DF8A55346CEFDBEA3396 /* RCTSegmentedControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControlManager.h; sourceTree = ""; }; AEF49BE28E7D87B31F7411604BFADC49 /* RuntimeSchedulerCallInvoker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeSchedulerCallInvoker.cpp; sourceTree = ""; }; AF0447D9E9E638217D6EABE45C7E0632 /* RCTMultiplicationAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMultiplicationAnimatedNode.mm; sourceTree = ""; }; AF18A646E6EA4CC7C73600700D4BDAF3 /* PageAgent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PageAgent.cpp; sourceTree = ""; }; AF297E87957501039602459E49565C20 /* vlog_is_on.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = vlog_is_on.cc; path = src/vlog_is_on.cc; sourceTree = ""; }; AF67768C4A075A1A0B7A20EF50D517BD /* RCTMultipartStreamReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultipartStreamReader.h; sourceTree = ""; }; AF7E566A1E46C435965177310C115248 /* UnimplementedViewShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnimplementedViewShadowNode.cpp; path = react/renderer/components/unimplementedview/UnimplementedViewShadowNode.cpp; sourceTree = ""; }; AF94AB49F3DFCBD87BA7862CC44A3D1D /* UIManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UIManager.h; path = react/renderer/uimanager/UIManager.h; sourceTree = ""; }; AF9D4809815C39CA6793B26579FDDA54 /* TurboModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TurboModule.cpp; path = react/nativemodule/core/ReactCommon/TurboModule.cpp; sourceTree = ""; }; AFAEF578C155F412D05E26AF9E63C602 /* AtFork.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = AtFork.cpp; path = folly/system/AtFork.cpp; sourceTree = ""; }; AFB08F045558C6DADC89C84CC798C71B /* RCTMultipartDataTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultipartDataTask.h; sourceTree = ""; }; AFC58F8C987D57066ED35DEFA2DA396E /* React.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = React.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; AFE2AC3DE4D98F6A8B6D36ADB8E51F46 /* AtomicUtil-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AtomicUtil-inl.h"; path = "folly/synchronization/AtomicUtil-inl.h"; sourceTree = ""; }; B00F5D1C6554CAE9A8E6D6AE4ECFE335 /* TextInputEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextInputEventEmitter.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.h; sourceTree = ""; }; B01C2C65E7B02816E8148154C56575AF /* MethodCall.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = MethodCall.cpp; sourceTree = ""; }; B02E6E730A273BCBAAB434BD6D2576E3 /* MicroLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MicroLock.h; path = folly/MicroLock.h; sourceTree = ""; }; B02F47D538066B1D13C474E20A59039A /* InspectorPackagerConnectionImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorPackagerConnectionImpl.h; sourceTree = ""; }; B041282BB6E0CD0755E03B990F035982 /* React-RCTBlob-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTBlob-dummy.m"; sourceTree = ""; }; B06BDA64A8C366F85CA16B5D0E328839 /* RCTViewComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTViewComponentView.h; sourceTree = ""; }; B07F73246764E395281393D1BFD73751 /* logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = logging.cc; path = src/logging.cc; sourceTree = ""; }; B0846154EC35111B28426222762CF880 /* React-RCTFabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTFabric.release.xcconfig"; sourceTree = ""; }; B0A1643BF71DE16FFA228713DA55E535 /* CacheLocality.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CacheLocality.h; path = folly/concurrency/CacheLocality.h; sourceTree = ""; }; B0AF45BF7087251B0C904F885ED8178D /* RCTAccessibilityElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAccessibilityElement.h; sourceTree = ""; }; B0F4AFE806278086D88DF7F801882C7B /* RCTImageLoaderWithAttributionProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoaderWithAttributionProtocol.h; path = Libraries/Image/RCTImageLoaderWithAttributionProtocol.h; sourceTree = ""; }; B10A2905CFE3A22DA9F68FED8B2A937E /* RCTTypeSafety.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RCTTypeSafety.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B10FA4019F5C607FA08931E27E127784 /* React-RCTVibration.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTVibration.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B1492BA96B69489FCA50F4BBFD32CDD2 /* bignum-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "bignum-dtoa.cc"; path = "double-conversion/bignum-dtoa.cc"; sourceTree = ""; }; B159432A0D462B5E94046B7320846BC4 /* CArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CArray.h; path = folly/lang/CArray.h; sourceTree = ""; }; B17B5D76BCAC42472B55462BAE850852 /* React-graphics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-graphics.debug.xcconfig"; sourceTree = ""; }; B17C5DF58EBCAD0079663296EFB0D99F /* FMResultSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = FMResultSet.m; sourceTree = ""; }; B18233FA84BEC01AFCB96FC16BD3B983 /* EventEmitters.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventEmitters.cpp; path = react/renderer/components/rncore/EventEmitters.cpp; sourceTree = ""; }; B1BC0D650AD4A6CB2A62DB5D7C94556A /* WatermelonDB */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = WatermelonDB; path = libWatermelonDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; B1C2DDC7533E6E8B4EB9893DC9F6FDB1 /* CalculateLayout.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CalculateLayout.cpp; sourceTree = ""; }; B1D124CF8B584CB0F39373CE1FD657A6 /* ParagraphState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ParagraphState.cpp; path = react/renderer/components/text/ParagraphState.cpp; sourceTree = ""; }; B1E12CAD2C6FB4F2DF64F7CCC6D15E3F /* EventPriority.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventPriority.h; path = react/renderer/core/EventPriority.h; sourceTree = ""; }; B1F4D64B534E21B5E81E8A4107B004EE /* RCTModuleData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuleData.h; sourceTree = ""; }; B222607BD79B79EA46BBA68F606016E7 /* stl_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stl_logging.h; path = src/glog/stl_logging.h; sourceTree = ""; }; B286D2E443FD0AC7BDE2FA335AE099A9 /* RCTModulesConformingToProtocolsProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModulesConformingToProtocolsProvider.mm; sourceTree = ""; }; B2912664908CB6F78177A7A284D257A7 /* RCTLocalAssetImageLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLocalAssetImageLoader.mm; sourceTree = ""; }; B2A78B7CA6B87E3C5B857F9EB9B7AF87 /* RCTDeprecation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDeprecation.h; sourceTree = ""; }; B2DA18CEB3A1B39D6DEFDA830C70B7AE /* SafeAssert.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SafeAssert.cpp; path = folly/lang/SafeAssert.cpp; sourceTree = ""; }; B32465A7B304C55D416657F5078DC373 /* color.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = color.h; path = include/fmt/color.h; sourceTree = ""; }; B32CE247FEEC1814744A3421CB654796 /* HeterogeneousAccess-fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "HeterogeneousAccess-fwd.h"; path = "folly/container/HeterogeneousAccess-fwd.h"; sourceTree = ""; }; B357588581A44158631A618472611CF2 /* RCTInputAccessoryComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryComponentView.h; sourceTree = ""; }; B3842DDC8C8C33A9D3DB8FB30835698E /* RCTManagedPointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTManagedPointer.h; sourceTree = ""; }; B3A27AAA848CC83E397DC39A9E46B682 /* RCTWebSocketExecutor.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTWebSocketExecutor.mm; sourceTree = ""; }; B41CA2872B3100D34E5916BD9747FFA2 /* Replaceable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Replaceable.h; path = folly/Replaceable.h; sourceTree = ""; }; B46136D54F40F23675446372805B6B0D /* GroupVarint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GroupVarint.h; path = folly/GroupVarint.h; sourceTree = ""; }; B4731BEAE5B9F1A65FB492F06B455F7F /* Stdlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Stdlib.h; path = folly/portability/Stdlib.h; sourceTree = ""; }; B49E927D98F0202C6C5CD21E1077E16E /* ReactCommon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ReactCommon.release.xcconfig; sourceTree = ""; }; B54D8461C2AF60CF1BF611F2D31ED2EB /* ImageProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ImageProps.cpp; path = react/renderer/components/image/ImageProps.cpp; sourceTree = ""; }; B597F21D264FDF22B451D67257AA9EF7 /* RCTUIUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIUtils.m; sourceTree = ""; }; B5C07CBA21F57FACAAB67EAB0200D145 /* RCTSurfaceHostingProxyRootView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceHostingProxyRootView.mm; sourceTree = ""; }; B5CA3E3C33E4FE87189CA5272539AA13 /* RCTConvert.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTConvert.mm; sourceTree = ""; }; B5F4950574A43023D083A3E3731760A1 /* RCTSwitchComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSwitchComponentView.mm; sourceTree = ""; }; B640A9964EA3E8305895667CD6375FAB /* HermesInstance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = HermesInstance.cpp; path = hermes/HermesInstance.cpp; sourceTree = ""; }; B6501460FCAA027C674AB185B605DE1E /* RCTTextAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTextAttributes.h; path = Libraries/Text/RCTTextAttributes.h; sourceTree = ""; }; B6577792B784C0F015CBBC9C2A12DDEC /* String.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = String.h; path = folly/portability/String.h; sourceTree = ""; }; B69DAF065EE01F48CB5FBAC10F00EDE0 /* RCTCxxInspectorPackagerConnectionDelegate.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxInspectorPackagerConnectionDelegate.mm; sourceTree = ""; }; B6A866CA3EE1ADEEDF264EFCEC0F0F57 /* std.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = std.h; path = include/fmt/std.h; sourceTree = ""; }; B6B15808FE6325BFE9D87ECA96CA3A11 /* ObjCTimerRegistry.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = ObjCTimerRegistry.mm; path = ReactCommon/ObjCTimerRegistry.mm; sourceTree = ""; }; B6F37D13CE5A1DE0E74413865B70883A /* Poly-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Poly-inl.h"; path = "folly/Poly-inl.h"; sourceTree = ""; }; B70C6129736E666B55CAAA7398C8E6CF /* React-RCTAnimation.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTAnimation.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B711337B1DBE8FDF8CF854026E0D14C1 /* Touch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Touch.h; path = react/renderer/components/view/Touch.h; sourceTree = ""; }; B7610E9FDE749C16C0B1CDAAF3B2DDC2 /* React-utils */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-utils"; path = "libReact-utils.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B77DA9E6D8A90D0BDB388D5130CFD6A5 /* React-FabricImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-FabricImage-prefix.pch"; sourceTree = ""; }; B797800645D9DCAD28A63367CF4B5E31 /* raw_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = raw_logging.h; path = src/glog/raw_logging.h; sourceTree = ""; }; B7DAE91AFA1AEC4FD04392E412D1D4CE /* RCTExceptionsManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTExceptionsManager.mm; sourceTree = ""; }; B83DFBC0279E4DF8CFA602D622946926 /* CheckedMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CheckedMath.h; path = folly/lang/CheckedMath.h; sourceTree = ""; }; B8426E288C9F4E8EADBFDB047F2B7941 /* RCTUITextField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUITextField.h; sourceTree = ""; }; B84580A87121CAF61CB478AB93D9261B /* LayoutContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutContext.h; path = react/renderer/core/LayoutContext.h; sourceTree = ""; }; B862E1391D01BF787FE43136140D8C85 /* LongLivedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LongLivedObject.h; path = react/bridging/LongLivedObject.h; sourceTree = ""; }; B868435FC1BB39A3949840802519A500 /* RCTAccessibilityElement.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAccessibilityElement.mm; sourceTree = ""; }; B86E6473CEA7651AF56AB4A0DE22037C /* RCTGIFImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTGIFImageDecoder.h; path = Libraries/Image/RCTGIFImageDecoder.h; sourceTree = ""; }; B87758E567704381060EF12FB7B025AB /* instrumentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = instrumentation.h; path = jsi/instrumentation.h; sourceTree = ""; }; B8BDA25E90049F9C70AA8B349A93426F /* React-graphics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-graphics.release.xcconfig"; sourceTree = ""; }; B8C5097DA5EAA46AB4FF88AA6F8D6F5B /* Database-batch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "Database-batch.cpp"; sourceTree = ""; }; B8E9BBBEFDC785C048DDEF9EA28FFED5 /* ParagraphState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParagraphState.h; path = react/renderer/components/text/ParagraphState.h; sourceTree = ""; }; B8EE883969234B8D43CEA19B78B08828 /* Windows.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Windows.h; path = folly/portability/Windows.h; sourceTree = ""; }; B96DBA623627412849117547371D9FEC /* RCTCxxUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxUtils.mm; sourceTree = ""; }; B97F33E9BF0E6E5FD86B0667D950EEC9 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = de.lproj; path = React/I18n/strings/de.lproj; sourceTree = ""; }; B9CC2B87AA979A0CE226E57B8BE306A7 /* Malloc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Malloc.h; path = folly/memory/Malloc.h; sourceTree = ""; }; B9CF763D328B9FF7CD87693E3153F680 /* RuntimeScheduler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeScheduler.cpp; sourceTree = ""; }; B9E96DFFC840B1E714C6D186A6B41717 /* CxxNativeModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CxxNativeModule.cpp; sourceTree = ""; }; B9F029DADA46B18ADF047508F6813174 /* StyleValueHandle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = StyleValueHandle.h; sourceTree = ""; }; B9FF361F61B7A378542F02A30393DF63 /* IntrusiveHeap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IntrusiveHeap.h; path = folly/container/IntrusiveHeap.h; sourceTree = ""; }; BA4DC46A209C68A22450F45E72C9E535 /* SRURLUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRURLUtilities.m; path = SocketRocket/Internal/Utilities/SRURLUtilities.m; sourceTree = ""; }; BA7531AA0EDD6697C7D87500F8EFA087 /* LayoutAnimationKeyFrameManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutAnimationKeyFrameManager.h; path = react/renderer/animations/LayoutAnimationKeyFrameManager.h; sourceTree = ""; }; BA8E2E00FBECFA8789E6D5D77E043D32 /* hermes_tracing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hermes_tracing.h; path = destroot/include/hermes/hermes_tracing.h; sourceTree = ""; }; BA9901F19F900300AC2E7122D5AC01A6 /* RCTHost+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTHost+Internal.h"; path = "ReactCommon/RCTHost+Internal.h"; sourceTree = ""; }; BAA3CCBDA9FDF8609E0495A48B080979 /* MapBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MapBuffer.h; path = react/renderer/mapbuffer/MapBuffer.h; sourceTree = ""; }; BAB8070C18EDCE8B518A4AD6B7ABA7D4 /* RCTErrorCustomizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTErrorCustomizer.h; sourceTree = ""; }; BACC1D6F0CF3D0892CC092113C7FD1BA /* WeakFamilyRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = WeakFamilyRegistry.h; path = react/renderer/leakchecker/WeakFamilyRegistry.h; sourceTree = ""; }; BAD62DA0698330C52546D1DD499A6B27 /* RCTJavaScriptExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptExecutor.h; sourceTree = ""; }; BAF67687A73C975DC1D89F35DD7A68A5 /* SRSIMDHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRSIMDHelpers.m; path = SocketRocket/Internal/Utilities/SRSIMDHelpers.m; sourceTree = ""; }; BB06B409B4DDC6FA88630157B314F883 /* HazptrHolder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrHolder.h; path = folly/synchronization/HazptrHolder.h; sourceTree = ""; }; BB2D4F3D9EA6B428CD822160742EC53F /* SysSyscall.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysSyscall.h; path = folly/portability/SysSyscall.h; sourceTree = ""; }; BB2E2D07807B6BB7451133707BC5FF03 /* ShadowViewMutation.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ShadowViewMutation.cpp; path = react/renderer/mounting/ShadowViewMutation.cpp; sourceTree = ""; }; BB7DBF3AC428AEC78260C9DC4CA49106 /* RCTAccessibilityManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAccessibilityManager.mm; sourceTree = ""; }; BB8765CFA285D06EB4EA1DE8DE702634 /* React-hermes.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-hermes.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; BB8A5342B551F92B8A2537BCC6ED51F5 /* SchedulerPriorityUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SchedulerPriorityUtils.h; sourceTree = ""; }; BB8ABBAD57F26EF6E656FCE9B68DB2F2 /* RCTUIImageViewAnimated.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUIImageViewAnimated.mm; sourceTree = ""; }; BB96EF13B6D928DBB3A8D90C1ADF57D5 /* AbsoluteLayout.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = AbsoluteLayout.cpp; sourceTree = ""; }; BB971ED75CA1674F0FAAC4500BBC50A4 /* RCTSafeAreaViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewManager.m; sourceTree = ""; }; BBA46B29F3F06B0AEC0E48F4C7C99C23 /* Registration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Registration.cpp; sourceTree = ""; }; BBAA6714B59FDAB63CB3D51FFFAB5E9F /* SRMutex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRMutex.m; path = SocketRocket/Internal/Utilities/SRMutex.m; sourceTree = ""; }; BBC2C48E868D4877BF151ED8DFB3604A /* Sqlite.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Sqlite.cpp; sourceTree = ""; }; BBCFDB39D48C37A3AF9AA77A7A2AFE14 /* SRSIMDHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRSIMDHelpers.h; path = SocketRocket/Internal/Utilities/SRSIMDHelpers.h; sourceTree = ""; }; BBDAB2AA9EAB8FF0DA4637A65C5425B5 /* RCTRequired.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RCTRequired.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; BBE2B529666092F7DEC3C687F33200F0 /* AtomicHashUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicHashUtils.h; path = folly/detail/AtomicHashUtils.h; sourceTree = ""; }; BBFA4AD81E9D3D79B1B796B93AE70766 /* React-graphics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-graphics-dummy.m"; sourceTree = ""; }; BC22B5A34F36A3E0B23AF08AE83EE25D /* RCTPerformanceLoggerUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTPerformanceLoggerUtils.h; path = ReactCommon/RCTPerformanceLoggerUtils.h; sourceTree = ""; }; BC384C199B1347B14BCE2CC3091CC47B /* SRHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRHash.h; path = SocketRocket/Internal/Utilities/SRHash.h; sourceTree = ""; }; BC3E9A24F4A8A5F217C0B3D7CA9EBAEB /* RCTEventEmitter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventEmitter.m; sourceTree = ""; }; BC611E2FF7C83C727ED3ABB22AE435FC /* Conv.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Conv.cpp; path = folly/Conv.cpp; sourceTree = ""; }; BC6B8699949BC42E05A2CD3F716AFC65 /* AtomicRef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicRef.h; path = folly/synchronization/AtomicRef.h; sourceTree = ""; }; BC8A1AA2067618E92E2DC37877060EA1 /* StaticSingletonManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StaticSingletonManager.h; path = folly/detail/StaticSingletonManager.h; sourceTree = ""; }; BCA23E868E68363495BB8DE9AA165F77 /* RCTInputAccessoryViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryViewManager.mm; sourceTree = ""; }; BCA4B995FCA633E532EC78345A862CC7 /* demangle.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = demangle.cc; path = src/demangle.cc; sourceTree = ""; }; BCA65CA4802405E6B52F20951F6A6E74 /* BaseTouch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BaseTouch.cpp; path = react/renderer/components/view/BaseTouch.cpp; sourceTree = ""; }; BCA6A0AD322E97D31E8AB398E6F754C1 /* Wrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Wrap.h; sourceTree = ""; }; BCAC25D53F76C3CA7747058E179BEC03 /* Sealable.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Sealable.cpp; path = react/renderer/core/Sealable.cpp; sourceTree = ""; }; BCB964356FC077875C6D5B2218AF31AE /* BaseTextProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BaseTextProps.cpp; path = react/renderer/components/text/BaseTextProps.cpp; sourceTree = ""; }; BCE80CF8B841672C3A200AF86984A1ED /* SocketRocket-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SocketRocket-prefix.pch"; sourceTree = ""; }; BD47E6AE7775E09A0E4B2548E31BD9A8 /* Baseline.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Baseline.cpp; sourceTree = ""; }; BD485A11989B9D9DA494C47A98A5F09D /* TextLayoutContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextLayoutContext.h; path = react/renderer/textlayoutmanager/TextLayoutContext.h; sourceTree = ""; }; BD52A822E13E3FBE427F01FAFF774941 /* Malloc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Malloc.h; path = folly/portability/Malloc.h; sourceTree = ""; }; BD52E6EAC24FFDEAD05FA9425D5C5A03 /* Scheduler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Scheduler.h; path = react/renderer/scheduler/Scheduler.h; sourceTree = ""; }; BD57ADA2122AD9C7A9EA86F634218B28 /* RCTInvalidating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInvalidating.h; sourceTree = ""; }; BD71E2539823621820F84384064C253A /* React-Core */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-Core"; path = "libReact-Core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD845FCB6E8D03B954E98CC67262C224 /* React-ImageManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-ImageManager-prefix.pch"; sourceTree = ""; }; BD8C1858F1B1566DD6C1B389057F984F /* RCTRootContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = ""; }; BD916666DA53F0458FF557DC851A7FEA /* ReactCommon.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ReactCommon.modulemap; sourceTree = ""; }; BDA3C52C76B2C3F5E9BA936CB0B3B9C6 /* fixed-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fixed-dtoa.h"; path = "double-conversion/fixed-dtoa.h"; sourceTree = ""; }; BDC8FAF53DD63A22F83D735BBEC79C48 /* RCTAppDelegate+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTAppDelegate+Protected.h"; sourceTree = ""; }; BDC9CA0EA4B12AEE132FF43037AE8E00 /* RCTFileRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFileRequestHandler.h; path = Libraries/Network/RCTFileRequestHandler.h; sourceTree = ""; }; BDED2FDDA75EFFC4F049DF04CA2B0B69 /* React-ImageManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-ImageManager-dummy.m"; sourceTree = ""; }; BDF4907BCEC9C6B68A50F5CBD6A193CA /* RCTTextLayoutManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextLayoutManager.mm; sourceTree = ""; }; BE03DA74B3DF71926399B020ADB5C3CC /* ReactMarker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ReactMarker.cpp; sourceTree = ""; }; BE2252C1E227B6B138921BA745C6ABC7 /* Traits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Traits.h; path = folly/Traits.h; sourceTree = ""; }; BE5A44A54B39A676EB8ECEF3D4CF8E3D /* NetworkSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NetworkSocket.h; path = folly/net/NetworkSocket.h; sourceTree = ""; }; BEC2935F7CAC9628D23D98B726129B8A /* React-ImageManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-ImageManager.debug.xcconfig"; sourceTree = ""; }; BEFECA4F48E22E7225529497330DEB8B /* RValueReferenceWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RValueReferenceWrapper.h; path = folly/lang/RValueReferenceWrapper.h; sourceTree = ""; }; BF031C91FD312DC63FF16FE7D183B230 /* Hint-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Hint-inl.h"; path = "folly/lang/Hint-inl.h"; sourceTree = ""; }; BF131B6BFD3FDF6FD3D006300FEC04E3 /* InputAccessoryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = InputAccessoryState.h; path = react/renderer/components/inputaccessory/InputAccessoryState.h; sourceTree = ""; }; BF2A098BFA676BEB807B64FA44567B00 /* Props.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Props.cpp; path = react/renderer/core/Props.cpp; sourceTree = ""; }; BF9077AF110CAC64D90AC1EDA3F0B610 /* RuntimeScheduler_Legacy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeScheduler_Legacy.h; sourceTree = ""; }; BFE0C7F1527F398A2A69185EBFCF677F /* RCTSurfaceStage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceStage.m; sourceTree = ""; }; C00CAED0C07FE50074D84727D68C0B0A /* chrono.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = chrono.h; path = include/fmt/chrono.h; sourceTree = ""; }; C02156579770C940D02208439EF989EE /* Optional.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Optional.h; path = folly/Optional.h; sourceTree = ""; }; C02EAF482D8B4DE45E3A58A25AE1FA91 /* React-jserrorhandler */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-jserrorhandler"; path = "libReact-jserrorhandler.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C042000B32A98F9B8FE68F105D95B8D4 /* SocketFastOpen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SocketFastOpen.h; path = folly/detail/SocketFastOpen.h; sourceTree = ""; }; C047105E3027DC4381475187A7547D3D /* json.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = json.h; path = folly/json.h; sourceTree = ""; }; C04C2CB4CB7F9503B14959FFE4F63EC3 /* ResourceBundle-RCTI18nStrings-React-Core-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RCTI18nStrings-React-Core-Info.plist"; sourceTree = ""; }; C059BACE08D3A4EC8B1895D76B07DFE6 /* RCTFileReaderModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFileReaderModule.mm; sourceTree = ""; }; C089C57BC7269AC9D829D12FB382C87C /* React-RCTBlob-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTBlob-prefix.pch"; sourceTree = ""; }; C08BAC1C65562A0491860C45DF8E309A /* React-ImageManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-ImageManager.modulemap"; sourceTree = ""; }; C09D1BCC94FFE3C6143459C161E5ACEF /* SRProxyConnect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRProxyConnect.h; path = SocketRocket/Internal/Proxy/SRProxyConnect.h; sourceTree = ""; }; C0BA0D275A8C8269E34CE4A1AD5CCF35 /* ScrollViewEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScrollViewEventEmitter.h; path = react/renderer/components/scrollview/ScrollViewEventEmitter.h; sourceTree = ""; }; C0C96A892BD79DFF4E7AD6082E8D7F4F /* RCTImageUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageUtils.h; path = Libraries/Image/RCTImageUtils.h; sourceTree = ""; }; C106E727DA66F2360E99B166ED1F9FBC /* SplitStringSimd.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SplitStringSimd.cpp; path = folly/detail/SplitStringSimd.cpp; sourceTree = ""; }; C128E32800DBBBE7BD73B0DB2EA50A53 /* SanitizeLeak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SanitizeLeak.h; path = folly/memory/SanitizeLeak.h; sourceTree = ""; }; C1761C0EF012288CCBB296F26485316A /* StyleLength.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = StyleLength.h; sourceTree = ""; }; C178BA891B154BE1B7A5B0CF16AFD27D /* TimerManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TimerManager.cpp; sourceTree = ""; }; C1A69366D6E38FE28ED9651968AA7CF6 /* RCTPrimitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTPrimitives.h; path = Fabric/RCTPrimitives.h; sourceTree = ""; }; C1A919103EAC9813D236486C34FC0A21 /* React-RCTVibration */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTVibration"; path = "libReact-RCTVibration.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C1C38809AFDAD38F285E4E8EF2CAC4E6 /* RCTReactTaggedView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTReactTaggedView.mm; sourceTree = ""; }; C2130B95F426EC491603E0487645BCAC /* RCTMountingManagerDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMountingManagerDelegate.h; sourceTree = ""; }; C22873AF49E658011AF710A68003CFF7 /* Database-query.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "Database-query.cpp"; sourceTree = ""; }; C230DA31F009BBBB74798CD3CE527F8E /* F14MapFallback.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14MapFallback.h; path = folly/container/detail/F14MapFallback.h; sourceTree = ""; }; C25232818C41EA94B5E01D6E8903AC74 /* SafeAreaViewState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SafeAreaViewState.cpp; path = react/renderer/components/safeareaview/SafeAreaViewState.cpp; sourceTree = ""; }; C2A33F80F6DC091C0F0D9E733BE5F440 /* RCTFollyConvert.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFollyConvert.mm; sourceTree = ""; }; C2CB66217B1E850D02CEDC8E10195C8A /* RCTNetworkTask.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNetworkTask.mm; sourceTree = ""; }; C31DDCFAF4110E35C011007CE400A3D4 /* RCTRequired.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTRequired.release.xcconfig; sourceTree = ""; }; C32920036DAE3C20F1840181BC975BDA /* DoubleConversion-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DoubleConversion-umbrella.h"; sourceTree = ""; }; C32C30AB7EF3BB474BC4B4DFD2FC61C0 /* RCTNativeAnimatedNodesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNativeAnimatedNodesManager.h; path = Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h; sourceTree = ""; }; C339EF963613DD1C7090A3FB6A1FE530 /* Database-jsi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "Database-jsi.cpp"; sourceTree = ""; }; C3701203D3AD5D881037196F72FD8BB7 /* RCTTextDecorationLineType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextDecorationLineType.h; sourceTree = ""; }; C37722D87F8B49DE9B83ACFE1C0A286A /* RCTVirtualTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextViewManager.h; sourceTree = ""; }; C3828F219A5F2BBBA5BAAA63512AB034 /* RawTextComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawTextComponentDescriptor.h; path = react/renderer/components/text/RawTextComponentDescriptor.h; sourceTree = ""; }; C3A0E653F207D8208760F39D89431669 /* ImageTelemetry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageTelemetry.h; path = react/renderer/imagemanager/ImageTelemetry.h; sourceTree = ""; }; C3A48141C5DA78A08DB8A2E1D30AB6D9 /* Syslog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Syslog.h; path = folly/portability/Syslog.h; sourceTree = ""; }; C3BDBA3AD30FF77F76488476893F6023 /* Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.markdown"; sourceTree = ""; }; C3D78A44188C6EFED4F1A257A66CB85A /* JSExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSExecutor.h; sourceTree = ""; }; C488747CC15D138B30ADB8E498B04FF4 /* RCTLocalizationProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTLocalizationProvider.mm; path = Fabric/RCTLocalizationProvider.mm; sourceTree = ""; }; C4B995B84A38F911427A6A5E55661B60 /* RCTFont.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFont.h; sourceTree = ""; }; C4BD888172BAA8E70F8568E61F2FAEC1 /* React-Core.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-Core.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; C4CDFBC1ECF32EC053DEB342DEE1B1C2 /* EventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventListener.h; path = react/renderer/core/EventListener.h; sourceTree = ""; }; C4EC4C02AFACADF949E7010ACACF4B85 /* Ordering.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Ordering.h; path = folly/lang/Ordering.h; sourceTree = ""; }; C4F24837075E70019E647A6DFDD4EB4B /* Scheduler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Scheduler.cpp; path = react/renderer/scheduler/Scheduler.cpp; sourceTree = ""; }; C508463B95043E7E700C0414CB55E23A /* Database-turboSync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = "Database-turboSync.cpp"; sourceTree = ""; }; C51C4243A2C445225C52EAD81BE81D66 /* JSExecutor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JSExecutor.cpp; sourceTree = ""; }; C53D999F11FC29298A3B8D1AA6A8120E /* React-RCTAnimation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTAnimation-prefix.pch"; sourceTree = ""; }; C55375F5233C369562ED2EB95C0B34D6 /* RCTModalHostView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostView.h; sourceTree = ""; }; C56554BC73CCF6D61610A28081393A2A /* RCTModalHostViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewController.h; sourceTree = ""; }; C5691B7E1407E2A5D9208B3CCFBC6BDF /* Asm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Asm.h; path = folly/portability/Asm.h; sourceTree = ""; }; C57BEDEC1840FD8209B8FAD43401C99D /* LifoSem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LifoSem.h; path = folly/synchronization/LifoSem.h; sourceTree = ""; }; C5868FE71D3976986B3E0F19F4316F71 /* RCTVirtualTextView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTVirtualTextView.mm; sourceTree = ""; }; C5B05D7AD22B1F14DC12650D34552F69 /* RCTImageLoaderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoaderProtocol.h; path = Libraries/Image/RCTImageLoaderProtocol.h; sourceTree = ""; }; C5B6D34CEC3C6CE2295EEDA15E8B7DD0 /* WMDatabaseBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WMDatabaseBridge.h; sourceTree = ""; }; C609BD215F18E3B6ACB3641DBF1B200C /* React-rncore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-rncore.debug.xcconfig"; sourceTree = ""; }; C60F31851CF169CE81AA452AA4663164 /* RCTPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTPlatform.h; path = React/CoreModules/RCTPlatform.h; sourceTree = ""; }; C6326DF244B84C66EDAF7AB7E2A7C98C /* ImageProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageProps.h; path = react/renderer/components/image/ImageProps.h; sourceTree = ""; }; C638A35CBFBC692CA7A2C5870600E066 /* UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp; path = react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp; sourceTree = ""; }; C6ADA6DF7563BCB106FC1DEC13D21F53 /* React-jsiexecutor-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsiexecutor-prefix.pch"; sourceTree = ""; }; C6CD5E1D0A40A3BD51F58A9904E1EF53 /* HermesExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HermesExport.h; path = destroot/include/hermes/Public/HermesExport.h; sourceTree = ""; }; C6D26752B3DE0424E4FA28589D9108BA /* RCTCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxModule.h; sourceTree = ""; }; C7426F344668A4D9141914CE841C3534 /* SystraceSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SystraceSection.h; sourceTree = ""; }; C7891A1695A92EF0EE3D79FC7792120E /* HazptrThrLocal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrThrLocal.h; path = folly/synchronization/HazptrThrLocal.h; sourceTree = ""; }; C7956DABB206C95A799C60F678F09BB6 /* AssertFatal.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = AssertFatal.cpp; sourceTree = ""; }; C7C5E5529D9183D4DA7499E3C615C519 /* Yoga.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Yoga.modulemap; sourceTree = ""; }; C7CB9D39DA448A9F742A4B023B065E17 /* RCTAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAnimatedNode.mm; sourceTree = ""; }; C80C73D05140B68E7E4D8EC8138AABF5 /* Props.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Props.cpp; path = react/renderer/components/rncore/Props.cpp; sourceTree = ""; }; C80CD944FB88B23807F5AAAF7CB21069 /* HermesRuntimeAgentDelegate.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = HermesRuntimeAgentDelegate.cpp; sourceTree = ""; }; C844508F5FF5CB3FE66B8F8DF7302612 /* PropagateConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PropagateConst.h; path = folly/lang/PropagateConst.h; sourceTree = ""; }; C87FD57CD4AD96B0BBB45FC4FEFA1AE7 /* MPMCPipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MPMCPipeline.h; path = folly/MPMCPipeline.h; sourceTree = ""; }; C8980F597D1A97A167ACA46B54A4BC70 /* React-RCTAnimation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTAnimation.debug.xcconfig"; sourceTree = ""; }; C8D1859AA4CE974FEC530D5684F25E81 /* React-FabricImage.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-FabricImage.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; C8E070E3387DCB006D125024D0D086B2 /* FMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = FMDatabase.m; sourceTree = ""; }; C91E89106F76162BEA0A7DF8511D586A /* ApplyTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ApplyTuple.h; path = folly/functional/ApplyTuple.h; sourceTree = ""; }; C941106D9D54AE237C5110F5638389AC /* React-Mapbuffer */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-Mapbuffer"; path = "libReact-Mapbuffer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C95BE4329B2B85F46818C25087E9147A /* LayoutableShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LayoutableShadowNode.cpp; path = react/renderer/core/LayoutableShadowNode.cpp; sourceTree = ""; }; C981FCFDF37E877B75038B1246411D6A /* Exception.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Exception.h; path = folly/Exception.h; sourceTree = ""; }; C9BBAB8DD3A07A56FC902CC374E80A3B /* AtomicUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AtomicUtil.h; path = folly/synchronization/AtomicUtil.h; sourceTree = ""; }; C9D9E5911728E23B08C57B041A401477 /* RCTSegmentedControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControlManager.m; sourceTree = ""; }; C9E855C72DB65E8045F7D611DB8E0AC7 /* ModuleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ModuleRegistry.h; sourceTree = ""; }; C9FA2111792B3263822E75649BD66902 /* SocketRocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SocketRocket.h; path = SocketRocket/SocketRocket.h; sourceTree = ""; }; CA2B21403EE25DB9893B6E8891C8E2DD /* Yoga-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Yoga-prefix.pch"; sourceTree = ""; }; CA69419C699C779F51EC2294FE37593C /* SanitizeThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SanitizeThread.h; path = folly/synchronization/SanitizeThread.h; sourceTree = ""; }; CA736D745963DE632943D6EE6AE51217 /* Justify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Justify.h; sourceTree = ""; }; CA86A71648C8045BF8A96B225E26E40D /* CustomizationPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CustomizationPoint.h; path = folly/lang/CustomizationPoint.h; sourceTree = ""; }; CA9B104BA2C9A1DDE13179A64BD014B9 /* WatermelonDB.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = WatermelonDB.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; CAACD991F2CF50067B4447D8419F5B05 /* RuntimeAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RuntimeAdapter.h; path = destroot/include/hermes/inspector/RuntimeAdapter.h; sourceTree = ""; }; CAAD19E5409FDE0BA4AE1A1A0483BA00 /* LegacyViewManagerInteropComponentDescriptor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = LegacyViewManagerInteropComponentDescriptor.mm; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm; sourceTree = ""; }; CADAFD82F38E6E1F5955E921DD980A8C /* RCTFrameAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFrameAnimation.mm; sourceTree = ""; }; CB027A92361F7CF889CAB836E490C149 /* ConcurrentSkipList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcurrentSkipList.h; path = folly/ConcurrentSkipList.h; sourceTree = ""; }; CB0D3B1D12723CB6F6A4B5A53775B4DC /* ComponentDescriptor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentDescriptor.cpp; path = react/renderer/core/ComponentDescriptor.cpp; sourceTree = ""; }; CB62AF8BE005DE4640777FBFF95866BF /* RCTModuleMethod.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModuleMethod.mm; sourceTree = ""; }; CB960EC9C47A40C34C5B59FF58A14FCF /* HostPlatformTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HostPlatformTouch.h; sourceTree = ""; }; CBB1209D9BF3AC7A5E77178DCA9C126A /* React-perflogger-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-perflogger-dummy.m"; sourceTree = ""; }; CBC8B43C8992F34DF7CD32D7923EDE53 /* File.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = File.h; path = folly/File.h; sourceTree = ""; }; CBED11019ED3BE2CD4C26A2FD21B24C1 /* Likely.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Likely.h; path = folly/Likely.h; sourceTree = ""; }; CC013CC571FE4BC5DEEFD2D0D37B0093 /* RCTBaseTextShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBaseTextShadowView.mm; sourceTree = ""; }; CC0F7AC9D01EB889E5370F93AB275754 /* React-jserrorhandler.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jserrorhandler.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; CC14D6144DA3CBC86D616E08D6D726E8 /* RCTBlobCollector.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBlobCollector.mm; sourceTree = ""; }; CC1AF02076781F56494CFE9B171135BF /* RCTBundleManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBundleManager.h; sourceTree = ""; }; CC381BCFEEAC649BB62889E972FAD4E3 /* RawProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawProps.h; path = react/renderer/core/RawProps.h; sourceTree = ""; }; CC3E8F86C7DCFECB3326885EC3BF91AF /* decorator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = decorator.h; path = jsi/decorator.h; sourceTree = ""; }; CC8769294DD05CF0DEF8259E34DE9AAC /* RCTScrollableProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollableProtocol.h; sourceTree = ""; }; CC91FDC94E55938A0F105FCC3D4FE542 /* SRProxyConnect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRProxyConnect.m; path = SocketRocket/Internal/Proxy/SRProxyConnect.m; sourceTree = ""; }; CC9E0C53D02E49E161CC61AD2E78DD12 /* RCTBaseTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextShadowView.h; sourceTree = ""; }; CCB913EB7EC2FFF2A1F039FCAFFF3042 /* RawPropsParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawPropsParser.h; path = react/renderer/core/RawPropsParser.h; sourceTree = ""; }; CCC91F4882F9AD8CBAA5347E76589517 /* RCTProfileTrampoline-x86_64.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-x86_64.S"; sourceTree = ""; }; CCCCA85307C7F5CAA6F8F137DC8860BE /* Pretty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Pretty.h; path = folly/lang/Pretty.h; sourceTree = ""; }; CCF757AC8F0183D61E1DA8706776938C /* RCTSurfaceView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceView.mm; sourceTree = ""; }; CD0C06BAC55CB15F45E71416B7D4DA0E /* SRRandom.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRandom.m; path = SocketRocket/Internal/Utilities/SRRandom.m; sourceTree = ""; }; CD16933416FD2EC375DDCB34E3995C89 /* RCTRefreshControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControl.h; sourceTree = ""; }; CE02C2175E3E663763ADD7A4613D0103 /* RunLoopObserver.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RunLoopObserver.cpp; sourceTree = ""; }; CE4F352241E750994254CACB3900290C /* Exception.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = Exception.cpp; path = folly/lang/Exception.cpp; sourceTree = ""; }; CEA45A2349847B8CEAC9ABF565A04BD0 /* React-ImageManager */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-ImageManager"; path = "libReact-ImageManager.a"; sourceTree = BUILT_PRODUCTS_DIR; }; CEC15E29682C912628AE02FBF18DB8D6 /* RCTThirdPartyFabricComponentsProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTThirdPartyFabricComponentsProvider.h; path = Fabric/RCTThirdPartyFabricComponentsProvider.h; sourceTree = ""; }; CF04A0BE220BED59F7AEB367A64FB457 /* RCTEventAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventAnimation.h; sourceTree = ""; }; CF0CC535988C4C141BA1AF044FA0790A /* Buffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Buffer.h; path = destroot/include/hermes/Public/Buffer.h; sourceTree = ""; }; CF40503F32A96F47168359F16F99FC55 /* RCTSurfaceSizeMeasureMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceSizeMeasureMode.h; sourceTree = ""; }; CF44B022CA9C008F36C080D66685928C /* RCTScrollContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentView.h; sourceTree = ""; }; CF485BFE7872C54223E057A72A0AB6A3 /* EventPipe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventPipe.h; path = react/renderer/core/EventPipe.h; sourceTree = ""; }; CF6A928C7A982274E5574B81E88B799B /* RCTShadowView+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Internal.h"; sourceTree = ""; }; CF8779EB6F6185F6C461B3A8E5F7DD3D /* TextProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextProps.cpp; path = react/renderer/components/text/TextProps.cpp; sourceTree = ""; }; CF9E8353281D1C3DE0C65A3F7643C68B /* Launder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Launder.h; path = folly/lang/Launder.h; sourceTree = ""; }; CF9F9BDD710866E3AB298A535A581739 /* RCTInspectorDevServerHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspectorDevServerHelper.h; sourceTree = ""; }; CFB81BB75D1D9BE93AA436949526503C /* Vector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Vector.h; sourceTree = ""; }; CFBAA91154D63D788000A507C872D157 /* IPAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IPAddress.h; path = folly/detail/IPAddress.h; sourceTree = ""; }; CFF243F787BCE91857A23806EAB84741 /* React-Mapbuffer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Mapbuffer-prefix.pch"; sourceTree = ""; }; D015441B32F30C25792A1C654C1FD49B /* RCTTextInputComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextInputComponentView.mm; sourceTree = ""; }; D042C4DD00523E4DF1235E10F891754B /* FlexDirection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FlexDirection.h; sourceTree = ""; }; D078B11D9117F5852F1C821A0DD6E65E /* RCTExceptionsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTExceptionsManager.h; path = React/CoreModules/RCTExceptionsManager.h; sourceTree = ""; }; D095CAA67ED3E639CF404B5BA46489E6 /* React-RCTVibration-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTVibration-prefix.pch"; sourceTree = ""; }; D0D6E9C9334A02233898F7AD14D17E2C /* RCTSurfacePresenterBridgeAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSurfacePresenterBridgeAdapter.h; path = Fabric/RCTSurfacePresenterBridgeAdapter.h; sourceTree = ""; }; D0FF6F026B2F3AD02FA2F0B47E571D6B /* RCTEventDispatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcher.m; sourceTree = ""; }; D11BE31D2BF618CFBCC52352A6567B70 /* PointerEventsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PointerEventsProcessor.h; path = react/renderer/uimanager/PointerEventsProcessor.h; sourceTree = ""; }; D14147B88E3AAA44C3CB4E3E9B1D01EE /* SurfaceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SurfaceManager.h; path = react/renderer/scheduler/SurfaceManager.h; sourceTree = ""; }; D1802F9C2D3A26DFED67D9A4805852E1 /* Subprocess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Subprocess.h; path = folly/Subprocess.h; sourceTree = ""; }; D181C872FF8059D494F78C6BAF4765FA /* xchar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = xchar.h; path = include/fmt/xchar.h; sourceTree = ""; }; D1A2CC54073AD525A26E9DC8CA1044F5 /* React-Core.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Core.release.xcconfig"; sourceTree = ""; }; D1AD68A2EB98FCB1663BE5F5916FA962 /* React-jserrorhandler-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jserrorhandler-prefix.pch"; sourceTree = ""; }; D1C29624546038DCFAE9385CBC490A7F /* WaitOptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = WaitOptions.h; path = folly/synchronization/WaitOptions.h; sourceTree = ""; }; D22EED118A762A7D7BC88A4ADBB7026E /* React-RuntimeCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RuntimeCore"; path = "libReact-RuntimeCore.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D23D4785660627F3CD0959228AD79333 /* th.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = th.lproj; path = React/I18n/strings/th.lproj; sourceTree = ""; }; D24AD310EE0E5FC9562D150864F26033 /* RCTDebuggingOverlayComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDebuggingOverlayComponentView.mm; sourceTree = ""; }; D2540C4EDDFB7CCCB96D25E31E2F57B8 /* RCTClipboard.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTClipboard.mm; sourceTree = ""; }; D2D1B033752AE5FACB195379C2792DA4 /* simdjson-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "simdjson-dummy.m"; sourceTree = ""; }; D2E26EF832C651D9123567DC1E118CA8 /* RuntimeScheduler_Legacy.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeScheduler_Legacy.cpp; sourceTree = ""; }; D2E2734D8657ABDA8E52005D327C59A4 /* JSRuntimeFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSRuntimeFactory.h; sourceTree = ""; }; D2E4E35B35014E917353983248FC5B53 /* FMDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMDB.h; sourceTree = ""; }; D2E639F57C80F20E749E4AAA4336E32B /* ExceptionWrapper-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ExceptionWrapper-inl.h"; path = "folly/ExceptionWrapper-inl.h"; sourceTree = ""; }; D2F955F57435151EED343EB06358A2A7 /* PhysicalEdge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PhysicalEdge.h; sourceTree = ""; }; D325DB74A674890FFA71EB148DA83A39 /* RCTPackagerClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPackagerClient.h; sourceTree = ""; }; D33BF9E42E6E5CEF3647C99A049FDCA1 /* Sse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sse.h; path = folly/detail/Sse.h; sourceTree = ""; }; D3779D2E5E9D11A2A28A3B557D2841F9 /* ReactMarker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactMarker.h; sourceTree = ""; }; D37C2939F3CFD83C906796976DC6425E /* JSModulesUnbundle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSModulesUnbundle.h; sourceTree = ""; }; D3897A8D57FA7C5B759902F2D3CEA752 /* RCTAppState.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAppState.mm; sourceTree = ""; }; D3CD42FBDC4A9051EBFC9BBE6DB02349 /* RCTRootViewFactory.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTRootViewFactory.mm; sourceTree = ""; }; D3F40B6C62C59C16116BE5B43DD2B6E4 /* RCTCxxUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxUtils.h; sourceTree = ""; }; D401F70F6554582A86F6BB451C06116B /* CallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CallInvoker.h; path = ReactCommon/CallInvoker.h; sourceTree = ""; }; D40D2FA9CCC999A6A1985688544C9701 /* Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig"; sourceTree = ""; }; D40F2678A9E0D12E6FEE80ED9004E5BE /* LayoutableShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutableShadowNode.h; path = react/renderer/core/LayoutableShadowNode.h; sourceTree = ""; }; D4586CC35438203A980E60618B09852C /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = primitives.h; sourceTree = ""; }; D469751A218330A8AA5F4F551ED6F9A5 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/attributedstring/primitives.h; sourceTree = ""; }; D4758B7FCDEC2C0806CEE3D106040093 /* RCTNativeAnimatedTurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNativeAnimatedTurboModule.h; path = Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h; sourceTree = ""; }; D47708686F705FA831C439C1F56306F5 /* RCTResizeMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTResizeMode.h; path = Libraries/Image/RCTResizeMode.h; sourceTree = ""; }; D4B7F151F4E0EB1DCE46AA538CDA20CE /* componentNameByReactViewName.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = componentNameByReactViewName.cpp; path = react/renderer/componentregistry/componentNameByReactViewName.cpp; sourceTree = ""; }; D50E86E9CDA03CB5CEA275C7EE896DD2 /* ReactInstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactInstance.h; sourceTree = ""; }; D51CB71E6C720763C7DFC73A256D9796 /* RCTRootViewInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewInternal.h; sourceTree = ""; }; D5266C5C2A1441F787E4EAA90B9166DA /* TypeList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TypeList.h; path = folly/detail/TypeList.h; sourceTree = ""; }; D584937399C1E7BBAE37C4B6480368F6 /* RCTAttributedTextUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAttributedTextUtils.mm; sourceTree = ""; }; D5C775614AC76D44CECB6BE08B022F1F /* ReactCommon */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = ReactCommon; path = libReactCommon.a; sourceTree = BUILT_PRODUCTS_DIR; }; D5D85F064A48142714688A62D0169A8F /* ScrollViewProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ScrollViewProps.h; path = react/renderer/components/scrollview/ScrollViewProps.h; sourceTree = ""; }; D5F538BF3285BAC9B7F01B8E674355D6 /* RCTAlertController.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAlertController.mm; sourceTree = ""; }; D5F81F5AAC387C14EE7017B61CB495EC /* Pods-WatermelonTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-WatermelonTester.debug.xcconfig"; sourceTree = ""; }; D6270B25D28322D56823F16246CD7C57 /* NativeComponentRegistryBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NativeComponentRegistryBinding.h; path = react/renderer/componentregistry/native/NativeComponentRegistryBinding.h; sourceTree = ""; }; D63DB3EEA2658569FE4F58A50743B58C /* RCTSafeAreaView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaView.m; sourceTree = ""; }; D666A8452A306A927BD1BED745FC5CB5 /* JSBigString.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JSBigString.cpp; sourceTree = ""; }; D673246C2C1796D3D74599E1964A310D /* F14SetFallback.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14SetFallback.h; path = folly/container/detail/F14SetFallback.h; sourceTree = ""; }; D67413975CF3DA436729109845A30A9F /* Transform.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Transform.cpp; sourceTree = ""; }; D6A3CF2FDC9D571D60BAB0281B6FA1BD /* Pods-WatermelonTester */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-WatermelonTester"; path = "libPods-WatermelonTester.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D6AA075D0670043A067B8F82481DEBA1 /* RCTPLTag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPLTag.h; sourceTree = ""; }; D6CB644C7E059627F4E16F567D961E18 /* React-logger.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-logger.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; D6E3C9F461BA9508AFA8E2471F36E21F /* React-runtimescheduler-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-runtimescheduler-prefix.pch"; sourceTree = ""; }; D70B1BA1E566B78E8FFA9FDB20C45D1D /* YGEnums.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGEnums.h; path = yoga/YGEnums.h; sourceTree = ""; }; D7139195D968D34865DEE54652AEED4C /* RuntimeSchedulerClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeSchedulerClock.h; sourceTree = ""; }; D73FC5BE76F5CED5EE11722EB194C596 /* RCTResizeMode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTResizeMode.mm; sourceTree = ""; }; D74ED33694328372E1EA1BA3F0EDD255 /* accessibilityPropsConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = accessibilityPropsConversions.h; path = react/renderer/components/view/accessibilityPropsConversions.h; sourceTree = ""; }; D77858FA2EBA20F1263AC750FC03FE38 /* SurfaceManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SurfaceManager.cpp; path = react/renderer/scheduler/SurfaceManager.cpp; sourceTree = ""; }; D7914657C80BFE4F7E8E537249F07FD6 /* ToAscii.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ToAscii.h; path = folly/lang/ToAscii.h; sourceTree = ""; }; D7D198038E6A0A8EAA233D9E57B97AC6 /* RCTComponentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentData.h; sourceTree = ""; }; D7F312C3D9605D22499AC7486B1AB866 /* SysTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysTime.h; path = folly/portability/SysTime.h; sourceTree = ""; }; D802137E8093DB1F0B0848206D7FCB8E /* HazptrThreadPoolExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HazptrThreadPoolExecutor.h; path = folly/synchronization/HazptrThreadPoolExecutor.h; sourceTree = ""; }; D828B4DBBD448E09A3D7C599F4CEFEF3 /* Sealable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sealable.h; path = react/renderer/core/Sealable.h; sourceTree = ""; }; D82A92B30EAD44574D7D78331C054CBF /* ReactInstance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ReactInstance.cpp; sourceTree = ""; }; D837D755183ED658A920B4FD642A3F16 /* RCTSubtractionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSubtractionAnimatedNode.h; sourceTree = ""; }; D83B4FAAFD8B9F4100D6F3F2AAF2598F /* GMock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GMock.h; path = folly/portability/GMock.h; sourceTree = ""; }; D869113E22557F357D518366520103CC /* Expected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expected.h; path = folly/Expected.h; sourceTree = ""; }; D886821B444D6CB88E03807915CB1608 /* glog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "glog-dummy.m"; sourceTree = ""; }; D89495ADCC3AEE3B5696CC8A442CC151 /* Padded.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Padded.h; path = folly/Padded.h; sourceTree = ""; }; D8A9743F92811B06400AED3B4A0C3135 /* React-RCTNetwork-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTNetwork-dummy.m"; sourceTree = ""; }; D8C79C91A7FCAF5C973C5E74CCAC73C5 /* HeterogeneousAccess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HeterogeneousAccess.h; path = folly/container/HeterogeneousAccess.h; sourceTree = ""; }; D8FE00B7A123C71C5F84EA661B962CBE /* propsConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = propsConversions.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/propsConversions.h; sourceTree = ""; }; D958FC3ECB59DEF56F7A316CFF3FE5E5 /* React-RCTAppDelegate-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTAppDelegate-dummy.m"; sourceTree = ""; }; D968F1CAEE31B74111F5F45D24E694BA /* RCTValueAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTValueAnimatedNode.h; sourceTree = ""; }; D96F738CE283D062C54E36FE7D38A7AF /* F14Map.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Map.h; path = folly/container/F14Map.h; sourceTree = ""; }; D97182C50F2513A513AF827227D35D9F /* SchedulerDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SchedulerDelegate.h; path = react/renderer/scheduler/SchedulerDelegate.h; sourceTree = ""; }; D9722AC2B3A09F57A4EF66060A291E1E /* RCTSwitch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSwitch.m; sourceTree = ""; }; D9C558B0DD5120E2A4ED354C91A0A581 /* RCTMultilineTextInputViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMultilineTextInputViewManager.mm; sourceTree = ""; }; D9D0F263D9FACBEBBE1FBF1918CE0445 /* Instance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Instance.h; sourceTree = ""; }; D9F334F2E90E3EE462FC4192AF5C03BD /* React-jsi */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-jsi"; path = "libReact-jsi.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D9F52BE4E914A8BB9CDE60E8D6D9067A /* React-RCTText.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTText.release.xcconfig"; sourceTree = ""; }; D9F8A226925F0E4037D08493438FE44D /* RCTRequired.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRequired.h; sourceTree = ""; }; DA12408D51CF845CE9C49609B11D2C6D /* PositionType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PositionType.h; sourceTree = ""; }; DA13FC9D0FEA58079E338182B1BAE1B2 /* UnimplementedViewComponentDescriptor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnimplementedViewComponentDescriptor.cpp; path = react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp; sourceTree = ""; }; DA3239428E42490C3045975A1FC6A276 /* ImageResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageResponse.h; path = react/renderer/imagemanager/ImageResponse.h; sourceTree = ""; }; DA3B2DE0E7759775141A6DD8F1ACA6DE /* YogaLayoutableShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YogaLayoutableShadowNode.h; path = react/renderer/components/view/YogaLayoutableShadowNode.h; sourceTree = ""; }; DA46A7224AD028908740366CEBA9D908 /* AttributedStringBox.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = AttributedStringBox.cpp; path = react/renderer/attributedstring/AttributedStringBox.cpp; sourceTree = ""; }; DA7ABB6DD8AEACED51D63B2C774E3A63 /* React-RCTFabric */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTFabric"; path = "libReact-RCTFabric.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DAA6445F1F3582CD4A38F23C8E688A65 /* RCTBridgeProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeProxy.h; sourceTree = ""; }; DAA88CD24C578A8D699BEE467905F247 /* TurboModuleBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModuleBinding.h; path = react/nativemodule/core/ReactCommon/TurboModuleBinding.h; sourceTree = ""; }; DAB01DFE83E0C8658D41522C80D2366D /* RCTWrapperViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWrapperViewController.h; sourceTree = ""; }; DABCCB9297D8973E3EB46EEFEDDEDCB4 /* ModalHostViewState.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ModalHostViewState.cpp; path = react/renderer/components/modal/ModalHostViewState.cpp; sourceTree = ""; }; DAD8B71DF2DFCF15AAF98C06D37D5703 /* React-hermes */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-hermes"; path = "libReact-hermes.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DAEB77A1371F2344F999D880C3A90E0B /* React-RuntimeApple.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RuntimeApple.debug.xcconfig"; sourceTree = ""; }; DAEBDA32E972C2DD6BC87FC03C2F7B79 /* RCTAdditionAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTAdditionAnimatedNode.mm; sourceTree = ""; }; DAFF833F6075C65A5629CFE2099DA2DE /* NSTextStorage+FontScaling.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSTextStorage+FontScaling.m"; sourceTree = ""; }; DB05D38A61483D308412FA789EE36CBC /* DelayedInit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DelayedInit.h; path = folly/synchronization/DelayedInit.h; sourceTree = ""; }; DB2D4AA87F51B33CB9A6EC8B96ED1D23 /* RCTFabricModalHostViewController.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFabricModalHostViewController.mm; sourceTree = ""; }; DB54433DB90DCA8B444031497CC05E80 /* RCTJSThreadManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTJSThreadManager.mm; path = ReactCommon/RCTJSThreadManager.mm; sourceTree = ""; }; DB5A191A4D4CA731E31AFC8EA19625A2 /* RCTUnimplementedNativeComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUnimplementedNativeComponentView.h; sourceTree = ""; }; DB76EBADE7E968B611B89EC60AA71910 /* heap_vector_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = heap_vector_types.h; path = folly/container/heap_vector_types.h; sourceTree = ""; }; DB803AD9555BB8D6B00BBA6644681627 /* Yoga.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Yoga.release.xcconfig; sourceTree = ""; }; DB93F82879D24A74491FCA910E31A733 /* React-utils.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-utils.release.xcconfig"; sourceTree = ""; }; DB9466A46A68BC525A64AAAB5F5C1F6C /* WatermelonDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WatermelonDB.h; sourceTree = ""; }; DBD26F4D9278DAF3DEA356BE83D84C2B /* RuntimeTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeTarget.h; sourceTree = ""; }; DBF242B856D15CC59A314DC9A8B2701B /* RCTInteropTurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTInteropTurboModule.h; path = ReactCommon/RCTInteropTurboModule.h; sourceTree = ""; }; DC2247332E34E9A5EEAC651BFE23CE54 /* AsymmetricThreadFence.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AsymmetricThreadFence.h; path = folly/synchronization/AsymmetricThreadFence.h; sourceTree = ""; }; DC24DA11D62A60707D4DA680FD726094 /* ReactNativeFeatureFlagsDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactNativeFeatureFlagsDefaults.h; sourceTree = ""; }; DC46EBB3ED4F2E3ADA6C2752DF776F59 /* RCTCxxBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxBridge.mm; sourceTree = ""; }; DC5E287FACF5FD6F1EC1566E83AC741C /* SynchronousEventBeat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SynchronousEventBeat.h; path = react/renderer/scheduler/SynchronousEventBeat.h; sourceTree = ""; }; DC79C41D3256C56029659B9591017FCF /* Parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Parsing.h; sourceTree = ""; }; DC7BB8BEE774754AA2ABA4E7FE98E101 /* RCTTextInputComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextInputComponentView.h; sourceTree = ""; }; DCDAB8C1A8AF49504419868DFB5EE19B /* RCTComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponent.h; sourceTree = ""; }; DD04C8CE4CFE3A8CBF7FEFC33B333653 /* NativeComponentRegistryBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = NativeComponentRegistryBinding.cpp; path = react/renderer/componentregistry/native/NativeComponentRegistryBinding.cpp; sourceTree = ""; }; DD12CDD757C637C9F44622EFFFFB58B1 /* RCTImageSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTImageSource.h; sourceTree = ""; }; DD1FD8F5FBF34CB4BF85DC2E8496E125 /* SRDelegateController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRDelegateController.h; path = SocketRocket/Internal/Delegate/SRDelegateController.h; sourceTree = ""; }; DD2869F37A6F486F8994AEF1E2A9E0D4 /* RCTSurfacePresenterBridgeAdapter.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTSurfacePresenterBridgeAdapter.mm; path = Fabric/RCTSurfacePresenterBridgeAdapter.mm; sourceTree = ""; }; DD33EAFFA1FBDE7A2DA696E03388F6CA /* NSRunLoop+SRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSRunLoop+SRWebSocket.h"; path = "SocketRocket/NSRunLoop+SRWebSocket.h"; sourceTree = ""; }; DD3A4B3EC7E715CA1E677122514FEFE8 /* DatabaseBridge.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseBridge.cpp; sourceTree = ""; }; DD3ED969E30456E3100D106C5E71ED9E /* RCTScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollView.h; sourceTree = ""; }; DD4757A98E1495E6C3DBC232D9872AE2 /* FileUtilDetail.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = FileUtilDetail.cpp; path = folly/detail/FileUtilDetail.cpp; sourceTree = ""; }; DD754522EEA5CC221FED5671228D41ED /* ConstructorCallbackList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConstructorCallbackList.h; path = folly/ConstructorCallbackList.h; sourceTree = ""; }; DD9C6B9D5678AE4BC86F7AB978C63029 /* SRRunLoopThread.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRunLoopThread.m; path = SocketRocket/Internal/RunLoop/SRRunLoopThread.m; sourceTree = ""; }; DDE9E8B67A4B7CFB8776B906B7C48F53 /* RCTUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUtils.h; sourceTree = ""; }; DDEC6CF7899D39C510AF9B96223825C0 /* LegacyViewManagerInteropViewEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LegacyViewManagerInteropViewEventEmitter.h; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.h; sourceTree = ""; }; DDED685F4B3E6B9AD98CDA1F1594C02B /* String.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = String.h; path = folly/String.h; sourceTree = ""; }; DE0D3D7FDED11B0BBBDD597E67E6E5CD /* DebugStringConvertible.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DebugStringConvertible.cpp; sourceTree = ""; }; DE0FDA05FBBF20ED1DD8039C9EF483D2 /* id.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = id.lproj; path = React/I18n/strings/id.lproj; sourceTree = ""; }; DE4D8C3CE090B2BA0138B08B60165BFD /* RCTTrackingAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTrackingAnimatedNode.mm; sourceTree = ""; }; DE6CB0254166C64BB61D724834E284BA /* PageTarget.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PageTarget.cpp; sourceTree = ""; }; DE73D8A5ECB254D9D3F8C36C8D201F89 /* React-Fabric */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-Fabric"; path = "libReact-Fabric.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DEABC445C02152DF5E8A3B39AF9F9162 /* React-RuntimeApple-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RuntimeApple-dummy.m"; sourceTree = ""; }; DECEAEDC186B345BDAAD789EDD05B9FD /* RCTDeprecation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTDeprecation.debug.xcconfig; sourceTree = ""; }; DEFDBFF0494ECD44CD200BB0D4A18A33 /* react_native_assert.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = react_native_assert.cpp; sourceTree = ""; }; DF05023F7AE354185DE71C9D43F11B9D /* CString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CString.h; path = folly/lang/CString.h; sourceTree = ""; }; DF4F0BE954C36F42882AC304D011030F /* Portability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Portability.h; path = folly/Portability.h; sourceTree = ""; }; DF63E196F2D472D716CD1CFF8D29C2EF /* small_vector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = small_vector.h; path = folly/small_vector.h; sourceTree = ""; }; DF804855D1456E2DC29B632585EFE659 /* SysMembarrier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SysMembarrier.h; path = folly/portability/SysMembarrier.h; sourceTree = ""; }; DFA6EA2550443AA8D5C90B1C550AD342 /* FMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMDatabase.h; sourceTree = ""; }; DFA83A2FCE36D7B3F4FF4946AC4AA3C5 /* RCTPerformanceLoggerLabels.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPerformanceLoggerLabels.m; sourceTree = ""; }; DFB701655BF99400D13CDA6EFDCC1AC7 /* RCTSurfaceHostingView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceHostingView.mm; sourceTree = ""; }; DFD95BCA231BF7294B54BBBE1F7A43A2 /* Util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Util.h; path = folly/container/detail/Util.h; sourceTree = ""; }; DFDFCA220F4E0487D24966099C7AC6BD /* React-rncore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-rncore.release.xcconfig"; sourceTree = ""; }; E0004F076A577E394A0CC4F9AEC7F57B /* RCTMultilineTextInputView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMultilineTextInputView.mm; sourceTree = ""; }; E02117FB47D5E097A2FE278E42ED7D2A /* json_pointer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = json_pointer.cpp; path = folly/json_pointer.cpp; sourceTree = ""; }; E0246A845D54C7B635C77FFDE88894B9 /* RCTBorderCurve.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderCurve.h; sourceTree = ""; }; E0264569A1DCA41D8267A2DEC02B3043 /* BridgeNativeModulePerfLogger.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = BridgeNativeModulePerfLogger.cpp; path = reactperflogger/BridgeNativeModulePerfLogger.cpp; sourceTree = ""; }; E0295F5F6E41D3C5358AC3BC796E1F70 /* React-RuntimeCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RuntimeCore-dummy.m"; sourceTree = ""; }; E0402A818FA8A0C89E390D0D4EC00165 /* RCTSurfacePointerHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSurfacePointerHandler.h; path = Fabric/RCTSurfacePointerHandler.h; sourceTree = ""; }; E0529EAB67BFDD4AEA0A80301D04CE2C /* ObserverContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObserverContainer.h; path = folly/ObserverContainer.h; sourceTree = ""; }; E0817B1CB0DBAA45D6A064FE340FD13C /* RCTScrollContentViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentViewManager.m; sourceTree = ""; }; E0839F609F20832C1729CED5ADCA18C9 /* RCTSettingsPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSettingsPlugins.mm; sourceTree = ""; }; E08FAB111E604490074792C7CFAC9084 /* RCTModalHostViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModalHostViewComponentView.mm; sourceTree = ""; }; E0A2C37B0C4B50C0E4B5366E9B824F12 /* RuntimeTaskRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RuntimeTaskRunner.h; path = destroot/include/hermes/RuntimeTaskRunner.h; sourceTree = ""; }; E0B0A85C6C1A686DD387938C318B3E03 /* RCTVirtualTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextShadowView.h; sourceTree = ""; }; E0C3160ABF695152C97A85E56B140C4B /* CallbackWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CallbackWrapper.h; path = react/bridging/CallbackWrapper.h; sourceTree = ""; }; E0D2348E6FB9A55FE8BC6E93389B9432 /* JSIHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSIHelpers.h; sourceTree = ""; }; E0E6784EF6FD3D1F4FC47BCD8E352359 /* RCTInputAccessoryContentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInputAccessoryContentView.mm; sourceTree = ""; }; E1140A4CC7FEA96D57FF547DA1D75EA0 /* Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig"; sourceTree = ""; }; E13EF6E51F9F10FBD304A4FADDBB25A8 /* RCTBaseTextViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBaseTextViewManager.mm; sourceTree = ""; }; E1530C1A41641E337C100090EDB4CD24 /* RCTBackedTextInputDelegateAdapter.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBackedTextInputDelegateAdapter.mm; sourceTree = ""; }; E1BDFFD718B2082F582FF8627388E098 /* CalculateLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CalculateLayout.h; sourceTree = ""; }; E22E7E12AEEE2122E9587F6CBE60EC1A /* RCTSurfaceHostingProxyRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingProxyRootView.h; sourceTree = ""; }; E253CA8AF57F182CDA110861DF421A77 /* RCTDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDeviceInfo.h; path = React/CoreModules/RCTDeviceInfo.h; sourceTree = ""; }; E29A2CBF054A73452FE72177DE2FDF83 /* Iterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Iterator.h; path = folly/container/Iterator.h; sourceTree = ""; }; E2B590F31CAE0577156C53171FEFEF07 /* React-FabricImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-FabricImage.release.xcconfig"; sourceTree = ""; }; E2F009051F05B8597141D79A5583D4FF /* React-featureflags.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-featureflags.release.xcconfig"; sourceTree = ""; }; E3339D6705C5DCAD1A55DFC2EA80C646 /* RCTBundleURLProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBundleURLProvider.h; sourceTree = ""; }; E3438873735D5FAD55DAADE60C49CACC /* RCTUITextView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUITextView.mm; sourceTree = ""; }; E38250C1621C85BBCC9EA54DCC289145 /* React-RCTAppDelegate-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTAppDelegate-prefix.pch"; sourceTree = ""; }; E38561935D0A79B947D909F1708ADA95 /* RCTSafeAreaViewLocalData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewLocalData.h; sourceTree = ""; }; E390D39B5438A34CB65883263516478C /* React-featureflags-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-featureflags-dummy.m"; sourceTree = ""; }; E39930085671F1947A94AAE3B2EB3580 /* React-NativeModulesApple.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-NativeModulesApple.release.xcconfig"; sourceTree = ""; }; E39F032BC206A3CC16C40890B632D25E /* React-logger.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-logger.release.xcconfig"; sourceTree = ""; }; E3A3132932FB8BCA22D8C2EB34C0BA27 /* RCTAppState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAppState.h; path = React/CoreModules/RCTAppState.h; sourceTree = ""; }; E3C150EC730101E36E8725C466227757 /* RCTSwitchComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitchComponentView.h; sourceTree = ""; }; E40225EFF83BFF372E2ACB0DEB6152DB /* InspectorPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorPackagerConnection.h; sourceTree = ""; }; E416B0C3A1EC58515DEC41DF3D02E01B /* ClockGettimeWrappers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ClockGettimeWrappers.h; path = folly/ClockGettimeWrappers.h; sourceTree = ""; }; E4216CD44D8D54D9837A48C53488FC2E /* RCTBridgeConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBridgeConstants.m; sourceTree = ""; }; E488A78562494C4DFA18485430C98C6D /* Value.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Value.h; path = react/bridging/Value.h; sourceTree = ""; }; E4FDDD56EA9FAE7E380A57693269B4F0 /* RawTextProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawTextProps.h; path = react/renderer/components/text/RawTextProps.h; sourceTree = ""; }; E50E54D57E4CB3E0920119CF69AD9A2D /* React-Core-RCTI18nStrings */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "React-Core-RCTI18nStrings"; path = RCTI18nStrings.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; E52A7A09F41E9EADFAE686BE3A607CBD /* RCTUIManagerUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerUtils.h; sourceTree = ""; }; E537D35052D701095C980ECF42D55AC4 /* YGValue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = YGValue.cpp; path = yoga/YGValue.cpp; sourceTree = ""; }; E53A2DCCFA3939F1CADE98C7ADABB2F1 /* RCTSwitchManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSwitchManager.m; sourceTree = ""; }; E54B7595EDCA1E1302CD4C135A4612AA /* RCTRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootView.h; sourceTree = ""; }; E553A373CAD882BEE4374E43EBAD7556 /* React-RCTImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTImage.debug.xcconfig"; sourceTree = ""; }; E55A5082F7AD7430141AC089256155B4 /* ViewEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ViewEventEmitter.h; path = react/renderer/components/view/ViewEventEmitter.h; sourceTree = ""; }; E570952D2C710A3EC6A39040970B220E /* RCTLogBox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLogBox.h; path = React/CoreModules/RCTLogBox.h; sourceTree = ""; }; E5745DFD5BE516C91A82DD1988970E10 /* Math.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Math.h; path = folly/portability/Math.h; sourceTree = ""; }; E590E42E80DFE90E35C644EC5BA97D77 /* RCTDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDisplayLink.m; sourceTree = ""; }; E5961E4180C070D8C68E4EDF389C0A2C /* React-RCTSettings.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTSettings.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; E598B862EA984799230DF69702BF2488 /* RCTBridgeMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeMethod.h; sourceTree = ""; }; E5CB5398F86031A46AD389FAA73E2323 /* RCTTypeSafety.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTTypeSafety.release.xcconfig; sourceTree = ""; }; E5E136EE3CB9AD65C230069245AFE89E /* TextInputShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TextInputShadowNode.h; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h; sourceTree = ""; }; E606EFA2C4D098DAEBD8DFD0734E2535 /* ms.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ms.lproj; path = React/I18n/strings/ms.lproj; sourceTree = ""; }; E625C620A161CC1506E07E4C53FC7859 /* RCTFabricSurface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFabricSurface.h; sourceTree = ""; }; E6362057149C3EE30EE5985649A70E12 /* SocketFileDescriptorMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SocketFileDescriptorMap.h; path = folly/net/detail/SocketFileDescriptorMap.h; sourceTree = ""; }; E66752688584187D6864081ED411C01F /* RawTextProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = RawTextProps.cpp; path = react/renderer/components/text/RawTextProps.cpp; sourceTree = ""; }; E6A16705C69FC7DE11C2469A4A0F8358 /* React-RCTText */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTText"; path = "libReact-RCTText.a"; sourceTree = BUILT_PRODUCTS_DIR; }; E6AF50262FD901B97155797FE9CCADC0 /* TurboCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboCxxModule.h; path = react/nativemodule/core/ReactCommon/TurboCxxModule.h; sourceTree = ""; }; E6FCE774BCFCEC0A37C02233EE1A6DAF /* Yoga.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Yoga.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; E6FD88D73CEF39AD0A723267614B20B6 /* InstanceTarget.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InstanceTarget.cpp; sourceTree = ""; }; E7178FECB829C9576A3723658B07F087 /* React-Codegen */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-Codegen"; path = "libReact-Codegen.a"; sourceTree = BUILT_PRODUCTS_DIR; }; E727F73300B53155B530D74924AD2BA8 /* RCTCxxConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxConvert.h; sourceTree = ""; }; E743BFAD7A14315554014A32748265E1 /* Bits.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bits.h; path = folly/Bits.h; sourceTree = ""; }; E743DC457E6CABC5B13E68A381C20913 /* EventLogger.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = EventLogger.cpp; path = react/renderer/core/EventLogger.cpp; sourceTree = ""; }; E7531C53649FE630D622444E87454709 /* ReactCommon-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactCommon-umbrella.h"; sourceTree = ""; }; E7807D90980DF5E58292BD819D067CCC /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pl.lproj; path = React/I18n/strings/pl.lproj; sourceTree = ""; }; E78F20D79CCC9323B970100544DF75D4 /* ShadowTreeRevision.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShadowTreeRevision.h; path = react/renderer/mounting/ShadowTreeRevision.h; sourceTree = ""; }; E7A75689694710ACECFF3C8C79D55E6D /* ReactNativeFeatureFlagsProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactNativeFeatureFlagsProvider.h; sourceTree = ""; }; E7ADD63BE36BD61FB54992AEEC51FACC /* PageTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PageTarget.h; sourceTree = ""; }; E7FC6C39FE3AE33F288AB26DDA6BD6C4 /* Cache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Cache.h; sourceTree = ""; }; E80581A669DE626F703216374FF4C3A1 /* UnimplementedViewComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnimplementedViewComponentDescriptor.h; path = react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h; sourceTree = ""; }; E82D575C7FB3C2A029BADE7276472510 /* RCTPullToRefreshViewComponentView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPullToRefreshViewComponentView.mm; sourceTree = ""; }; E8855C5F693E52309BAEA8C716104F71 /* RCTDebuggingOverlayManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDebuggingOverlayManager.h; sourceTree = ""; }; E8A80DDDD78CE9D5045965620EF601A1 /* os.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = os.h; path = include/fmt/os.h; sourceTree = ""; }; E8A93054841794EAD58EB675761B8905 /* SocketRocket.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SocketRocket.release.xcconfig; sourceTree = ""; }; E8BF57389A0D82185746D63D05645956 /* React-featureflags-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-featureflags-umbrella.h"; sourceTree = ""; }; E8C7733DDA1AF4D8C84201C849CE6990 /* React-rncore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-rncore.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; E8CB40AE7BA0C7EB4EDD1532C9B8FAE8 /* SmallValueBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SmallValueBuffer.h; sourceTree = ""; }; E927497A3701D0E6AEB8ED2AF83B915B /* RCTMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMacros.h; sourceTree = ""; }; E951AE3ED64705A1E7CF71EDD854B178 /* React-RCTImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTImage.release.xcconfig"; sourceTree = ""; }; E96C6053E99BB795AC55280C6C0B918F /* Sockets.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sockets.h; path = folly/portability/Sockets.h; sourceTree = ""; }; E99066C5DDF65197FF753C23E54313CC /* CallbackWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CallbackWrapper.h; path = react/nativemodule/core/ReactCommon/CallbackWrapper.h; sourceTree = ""; }; E9AD225EDBC81406F600822BE5CB48E9 /* RCTThirdPartyFabricComponentsProvider.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTThirdPartyFabricComponentsProvider.mm; path = Fabric/RCTThirdPartyFabricComponentsProvider.mm; sourceTree = ""; }; E9B0012D9AC4C6EE1721D712922AF216 /* BridgelessJSCallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BridgelessJSCallInvoker.h; sourceTree = ""; }; E9C1D370414FE653DCC9FAE636F19160 /* MoveWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MoveWrapper.h; path = folly/MoveWrapper.h; sourceTree = ""; }; E9C75E943A657F3153FF32A050DA7592 /* UnimplementedViewProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UnimplementedViewProps.cpp; path = react/renderer/components/unimplementedview/UnimplementedViewProps.cpp; sourceTree = ""; }; E9D85EEAF42C9AF3CC1666F33CF872DD /* ReactPrimitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ReactPrimitives.h; path = react/renderer/core/ReactPrimitives.h; sourceTree = ""; }; E9E1F270CEDFF108574DFFDBE7F91985 /* NativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NativeModule.h; sourceTree = ""; }; EA282133F1BB10E022D47B6CACE22054 /* RCTTypeSafety-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTTypeSafety-prefix.pch"; sourceTree = ""; }; EA4EE4C6FAFA0A824AFDB30A96D0C144 /* Unit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Unit.h; sourceTree = ""; }; EA8C03F6178FA2682E0DD2D5F53F222E /* StubViewTree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StubViewTree.h; path = react/renderer/mounting/StubViewTree.h; sourceTree = ""; }; EA92D2D183344B3DA53FE9FC7B307DE6 /* primitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = primitives.h; path = react/renderer/animations/primitives.h; sourceTree = ""; }; EA980E88736BC513D1E4D3CF3B6A67E8 /* React-runtimescheduler.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-runtimescheduler.debug.xcconfig"; sourceTree = ""; }; EAA2B5EA3356A9C6FCE82CC15F04FDC0 /* React-RCTSettings.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTSettings.debug.xcconfig"; sourceTree = ""; }; EADB1A8E010B5CA7F0E6C4071A9DDA92 /* RCTDisplayWeakRefreshable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDisplayWeakRefreshable.h; path = Libraries/Image/RCTDisplayWeakRefreshable.h; sourceTree = ""; }; EADE36F3457E268442D18E096152CF53 /* RCTInstance.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTInstance.mm; path = ReactCommon/RCTInstance.mm; sourceTree = ""; }; EAF8192C1B7013E06F84C24D2B1110B0 /* RCTRawTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRawTextShadowView.h; sourceTree = ""; }; EB2EBC367DAD012021CB28C5D9106469 /* simdjson */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = simdjson; path = libsimdjson.a; sourceTree = BUILT_PRODUCTS_DIR; }; EB71E81BC5E30853849F01DE038FCE31 /* UniqueInstance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UniqueInstance.cpp; path = folly/detail/UniqueInstance.cpp; sourceTree = ""; }; EB8033D6D308790A5A46B3BC15DD1BED /* TouchEvent.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TouchEvent.cpp; path = react/renderer/components/view/TouchEvent.cpp; sourceTree = ""; }; EB9567C0DEFF8F845D6478F3CFDBD1AF /* RCTBaseTextInputView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBaseTextInputView.mm; sourceTree = ""; }; EBC95FE616AEF3E48E3F113E5BB076C4 /* RCTImageManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTImageManager.mm; path = react/renderer/imagemanager/RCTImageManager.mm; sourceTree = ""; }; EBF0BD1DADF4AA41730BF0DC7AF614AC /* RCTDeprecation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RCTDeprecation.modulemap; sourceTree = ""; }; EC10C9531C237863B28A6E20B64DC15A /* RCTModalHostView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostView.m; sourceTree = ""; }; EC10CD8ABAB17D209CCD5FD3E42F2367 /* React-utils.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-utils.modulemap"; sourceTree = ""; }; EC17C0D5E26D47755381DCEAE6861774 /* RCTTouchEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchEvent.m; sourceTree = ""; }; EC5F5A9DB399E74A3B0F0CDEE200B40E /* Overflow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Overflow.h; sourceTree = ""; }; EC7EC957168B2840A6783186671E89DB /* React-callinvoker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-callinvoker.release.xcconfig"; sourceTree = ""; }; EC80A594ED6C17D4D0B191D585BE4089 /* RCTUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUtils.m; sourceTree = ""; }; EC88B7FD82BE95C8547982311739D454 /* AccessibilityProps.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AccessibilityProps.h; path = react/renderer/components/view/AccessibilityProps.h; sourceTree = ""; }; ECC51259933A05380339556B6ABE282E /* LayoutResults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LayoutResults.h; sourceTree = ""; }; ECF657DA48FE202E91262C142A30C2EA /* Benchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Benchmark.h; path = folly/Benchmark.h; sourceTree = ""; }; ED025FBB53B0B481493FAFFAED14F5E6 /* RCTViewUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTViewUtils.m; sourceTree = ""; }; ED0263B5DB4AF04BF5391CA51E3AE6F4 /* TurboModuleUtils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TurboModuleUtils.cpp; path = react/nativemodule/core/ReactCommon/TurboModuleUtils.cpp; sourceTree = ""; }; ED075D1904D8F2A132AD09A4B59B2BE9 /* RCTKeyboardObserver.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTKeyboardObserver.mm; sourceTree = ""; }; ED0D60F3F216448664954D0D5A35FECE /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ja.lproj; path = React/I18n/strings/ja.lproj; sourceTree = ""; }; ED3AFC07867C7C0F7FA6437AB25AB2C0 /* RCTHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTHost.h; path = ReactCommon/RCTHost.h; sourceTree = ""; }; ED8BCB98B8CAFA45445802548B32ED28 /* ModalHostViewShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ModalHostViewShadowNode.cpp; path = react/renderer/components/modal/ModalHostViewShadowNode.cpp; sourceTree = ""; }; ED92914EB3DF6C80AB5B7CF1AF9F3EE4 /* Thunk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Thunk.h; path = folly/lang/Thunk.h; sourceTree = ""; }; EDB17360845E700286BDE806E67E8AA0 /* CoreFeatures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CoreFeatures.h; sourceTree = ""; }; EDB46ABA9CC235068ECA4A848DB17EE8 /* UnstableLegacyViewManagerAutomaticShadowNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnstableLegacyViewManagerAutomaticShadowNode.h; path = react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h; sourceTree = ""; }; EDBAAC4C0FEDEB6F19329DEE85E71512 /* RCTDevMenu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDevMenu.h; path = React/CoreModules/RCTDevMenu.h; sourceTree = ""; }; EDE4A26ED9B011F0E70494EBA45F89FE /* RCTFont.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFont.mm; sourceTree = ""; }; EDE4EBF1DFE11D301F8A60F2D5B99F29 /* RCTTypeSafety.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTTypeSafety.debug.xcconfig; sourceTree = ""; }; EE85F8AC8EA65010815F0C5ED9826E3F /* React-RCTFabric.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-RCTFabric.modulemap"; sourceTree = ""; }; EEAA1C4C0F827F9E5B0E9A8A96B8B9D7 /* Baseline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Baseline.h; sourceTree = ""; }; EEB4D9ABDCA5AC8FCD10C726DD32E01C /* RCTGenericDelegateSplitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTGenericDelegateSplitter.h; sourceTree = ""; }; EEC8AE4B19CE176574DF457505E2B9CF /* FileUtil.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = FileUtil.cpp; path = folly/FileUtil.cpp; sourceTree = ""; }; EEDBF403E8E0B3885E65C2741B536BC5 /* React-RCTImage */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTImage"; path = "libReact-RCTImage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; EF09FB3371BC4A515D26FC037059DD61 /* React-rendererdebug.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "React-rendererdebug.modulemap"; sourceTree = ""; }; EF112ACF0D0F90B1AAF3D112F650FA09 /* PixelGrid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PixelGrid.h; sourceTree = ""; }; EF23890C4D36D03EA1DD037AFEFF15C6 /* Libgen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Libgen.h; path = folly/portability/Libgen.h; sourceTree = ""; }; EF33D80102A84702AA2E2212D875E506 /* raw_logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = raw_logging.cc; path = src/raw_logging.cc; sourceTree = ""; }; EF3D0DF483D191D626F907294861A317 /* ProducerConsumerQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ProducerConsumerQueue.h; path = folly/ProducerConsumerQueue.h; sourceTree = ""; }; EF7790CCA0F33012360CF9BA24706CF9 /* UIManagerBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = UIManagerBinding.cpp; path = react/renderer/uimanager/UIManagerBinding.cpp; sourceTree = ""; }; EFB5E0D35E76A4F34C8D5195B2051AF6 /* AsynchronousEventBeat.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = AsynchronousEventBeat.cpp; path = react/renderer/scheduler/AsynchronousEventBeat.cpp; sourceTree = ""; }; EFCF80831E029EAC9ECFEDFA8C0B0BE9 /* ConcurrentBitSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ConcurrentBitSet.h; path = folly/ConcurrentBitSet.h; sourceTree = ""; }; EFDD8B247497E208D149C9C12E8045C7 /* Hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Hash.h; path = folly/hash/Hash.h; sourceTree = ""; }; F03D40C105C0F07D9C18AE34F3B494A0 /* ViewComponentDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ViewComponentDescriptor.h; path = react/renderer/components/view/ViewComponentDescriptor.h; sourceTree = ""; }; F03DB7552362CE2CC5261B0ECE866C50 /* React-Core-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Core-prefix.pch"; sourceTree = ""; }; F04C97A51C7A3AE18D87F7881C39DC76 /* zu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = zu.lproj; path = React/I18n/strings/zu.lproj; sourceTree = ""; }; F07A956888DB0839EE8710AF70182297 /* Lazy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lazy.h; path = folly/Lazy.h; sourceTree = ""; }; F07D525DF93C69AEC8946C90CEB695C1 /* RCTCxxBridgeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxBridgeDelegate.h; sourceTree = ""; }; F08460D67FAF18E84D6207E257538D64 /* log_severity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_severity.h; path = src/glog/log_severity.h; sourceTree = ""; }; F0868E477C8DA25C9CE631F4131B2C2F /* CallbackOStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CallbackOStream.h; path = destroot/include/hermes/inspector/chrome/CallbackOStream.h; sourceTree = ""; }; F0A85939544D109BFA4572C401B51D9E /* PointerEventsProcessor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = PointerEventsProcessor.cpp; path = react/renderer/uimanager/PointerEventsProcessor.cpp; sourceTree = ""; }; F0DF8AFAE1CBEF65355E92467584E4A5 /* componentNameByReactViewName.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = componentNameByReactViewName.h; path = react/renderer/componentregistry/componentNameByReactViewName.h; sourceTree = ""; }; F0EA3D90914575269885513BFC07386C /* React-Mapbuffer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Mapbuffer.debug.xcconfig"; sourceTree = ""; }; F138DB447C457AE8D0B432C87AB6D5C2 /* NativeSemaphore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NativeSemaphore.h; path = folly/synchronization/NativeSemaphore.h; sourceTree = ""; }; F1446E5B5E1E6532A8129EC19A5BC514 /* FileUtilVectorDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FileUtilVectorDetail.h; path = folly/detail/FileUtilVectorDetail.h; sourceTree = ""; }; F1455C7DE425F051F50E3E27295C794D /* RCTNativeAnimatedModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNativeAnimatedModule.mm; sourceTree = ""; }; F14EDE5F666391049AE8B82BFE391E88 /* RCTRefreshControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControlManager.m; sourceTree = ""; }; F15F1FDA5B8172C6781AEDF956D65B0C /* Error.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Error.h; path = react/bridging/Error.h; sourceTree = ""; }; F1758BCE0D6DB0A37CD1E35331999A52 /* ScrollViewProps.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollViewProps.cpp; path = react/renderer/components/scrollview/ScrollViewProps.cpp; sourceTree = ""; }; F17EBB71C3E56527394A1105831F5DF5 /* React-featureflags-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-featureflags-prefix.pch"; sourceTree = ""; }; F1A6297972EED0526BCBF5B221AE18AC /* RCTSurfaceProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceProtocol.h; sourceTree = ""; }; F1AB976E1A25C3A525A7919E63A9BA92 /* ValueFactoryEventPayload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ValueFactoryEventPayload.h; path = react/renderer/core/ValueFactoryEventPayload.h; sourceTree = ""; }; F1FA54C72A9856CD3D0A6B6E24B06E7E /* RCTMountingTransactionObserving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMountingTransactionObserving.h; sourceTree = ""; }; F2164B5DB3B104B55F7AEC0D7FC1AF24 /* SchedulerToolbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SchedulerToolbox.h; path = react/renderer/scheduler/SchedulerToolbox.h; sourceTree = ""; }; F21C8B792A111FE6F3696917CC8DD458 /* CDPHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CDPHandler.h; path = destroot/include/hermes/inspector/chrome/CDPHandler.h; sourceTree = ""; }; F261A91F0724E8B1486A1BC201FD1425 /* RCTMountingTransactionObserverCoordinator.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMountingTransactionObserverCoordinator.mm; sourceTree = ""; }; F275B31E7A8AAE45DABF741983B8C743 /* ObjCTimerRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjCTimerRegistry.h; path = ReactCommon/ObjCTimerRegistry.h; sourceTree = ""; }; F275D02F7C84889FF25195DE592C2875 /* RCTCallableJSModules.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTCallableJSModules.m; sourceTree = ""; }; F277FEF63DB910E42C66936C8592693A /* RCTDevLoadingView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDevLoadingView.mm; sourceTree = ""; }; F278184653BF83F13E9A2484D2F4F8C1 /* NSDataBigString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NSDataBigString.h; sourceTree = ""; }; F28A2D4EC3F7FA5178A446213C416F6C /* RCTMultiplicationAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultiplicationAnimatedNode.h; sourceTree = ""; }; F2E7C88DFCD460A4B46B913ADEB8A641 /* React-jsiexecutor */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-jsiexecutor"; path = "libReact-jsiexecutor.a"; sourceTree = BUILT_PRODUCTS_DIR; }; F3070DCC47CC323B0236AAA591CC207A /* InspectorPackagerConnection.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorPackagerConnection.cpp; sourceTree = ""; }; F310EF16EE5EAA4714DFD2F1713D1B73 /* BindingsInstaller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BindingsInstaller.h; sourceTree = ""; }; F336A6F8A52B443F471C3A212D86DC43 /* cached-powers.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "cached-powers.cc"; path = "double-conversion/cached-powers.cc"; sourceTree = ""; }; F35ECB508AB87E99C735B9A8219E2790 /* RCTObjectAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTObjectAnimatedNode.h; sourceTree = ""; }; F37B91C0C1BDCB74BF74E5D62F1A84B8 /* flags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = flags.h; sourceTree = ""; }; F3822D806026A4FCC42B9B6C3AD50045 /* Comparison.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Comparison.h; sourceTree = ""; }; F3EC6BC861DA61263020A86CB2DDC307 /* React-jserrorhandler-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jserrorhandler-dummy.m"; sourceTree = ""; }; F3F5D9E03D596413A96FCC9292384B7D /* States.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = States.cpp; path = react/renderer/components/rncore/States.cpp; sourceTree = ""; }; F40435B6D082BD6480C723A692DFB94D /* RCTLinkingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLinkingManager.h; path = Libraries/LinkingIOS/RCTLinkingManager.h; sourceTree = ""; }; F40DA4337071C6A25D759BAE9D00C90A /* CoreModulesPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CoreModulesPlugins.h; path = React/CoreModules/CoreModulesPlugins.h; sourceTree = ""; }; F4116A5CF0A3EC97879DE8D115EB9AC5 /* Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Dynamic.h; path = react/bridging/Dynamic.h; sourceTree = ""; }; F468DC980FF349730A91EAB27AA80749 /* TextInputShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TextInputShadowNode.cpp; path = react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp; sourceTree = ""; }; F481D215714FD018CDA8C79540DDC6A8 /* LayoutAnimationStatusDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LayoutAnimationStatusDelegate.h; path = react/renderer/uimanager/LayoutAnimationStatusDelegate.h; sourceTree = ""; }; F488B5803551A7C6E8D0B3F34C4823D0 /* RCTJavaScriptLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptLoader.h; sourceTree = ""; }; F4A1A873A0B3D3C8636143BB6282A12D /* RCTSurfaceTouchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSurfaceTouchHandler.h; path = Fabric/RCTSurfaceTouchHandler.h; sourceTree = ""; }; F4BDA69E3BCB0166D49FB679ABADCA00 /* fmt */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = fmt; path = libfmt.a; sourceTree = BUILT_PRODUCTS_DIR; }; F4D03D4133A485BCCB2117CF4DDE2ED6 /* RuntimeAgentDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RuntimeAgentDelegate.h; sourceTree = ""; }; F4FDC94B0FAFD47D454687DEABE33319 /* SessionState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SessionState.h; sourceTree = ""; }; F51332CA416FB0997A5A9763AC54075F /* UniqueInstance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UniqueInstance.h; path = folly/detail/UniqueInstance.h; sourceTree = ""; }; F524D0F42CA29ACE3E6C3098C858C502 /* Keep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Keep.h; path = folly/lang/Keep.h; sourceTree = ""; }; F56A35A5E128A460F52E75B7F79344AC /* RawPropsPrimitives.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RawPropsPrimitives.h; path = react/renderer/core/RawPropsPrimitives.h; sourceTree = ""; }; F5710B431788CFA607B0F39F45EC6E64 /* MountingTransaction.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = MountingTransaction.cpp; path = react/renderer/mounting/MountingTransaction.cpp; sourceTree = ""; }; F59674BB4A1D0F323148B07D7D682AC2 /* RectangleCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RectangleCorners.h; sourceTree = ""; }; F59815A7A4241A59BAFADEAB6160D7C8 /* Builtin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Builtin.h; path = folly/lang/Builtin.h; sourceTree = ""; }; F5A6371CE2CB24DC0532ACC93642CC48 /* RCTConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTConversions.h; path = Fabric/RCTConversions.h; sourceTree = ""; }; F5D3D4E731B1EF9C93FC2A49ABDAD388 /* EventPayload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EventPayload.h; path = react/renderer/core/EventPayload.h; sourceTree = ""; }; F5DE3D6B8F9687E6EC775B55B6F528E4 /* CompileJS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CompileJS.h; path = destroot/include/hermes/CompileJS.h; sourceTree = ""; }; F5F74E1220FBDEDB27401F3F98612EC8 /* ComponentDescriptorFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ComponentDescriptorFactory.h; path = react/renderer/componentregistry/ComponentDescriptorFactory.h; sourceTree = ""; }; F60384F886271F9FE990A1E05F65D620 /* LayoutAnimationKeyFrameManager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LayoutAnimationKeyFrameManager.cpp; path = react/renderer/animations/LayoutAnimationKeyFrameManager.cpp; sourceTree = ""; }; F6312EB0499C783D68B98C5D0AFAB4A7 /* RCTUITextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUITextView.h; sourceTree = ""; }; F65B8FCE4C82DE06C4DC544668252210 /* NSURLRequest+SRWebSocketPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+SRWebSocketPrivate.h"; path = "SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h"; sourceTree = ""; }; F65EDF84A53562B923789233A6319309 /* RCTInitializing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInitializing.h; sourceTree = ""; }; F6649A5E0CB0CD5E9B98CB49FE510D25 /* Hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Hash.h; path = folly/Hash.h; sourceTree = ""; }; F680F8EC8BBE5EFCCD2F2F64A35E6132 /* React-RCTAppDelegate.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTAppDelegate.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; F69D2C7C3E6181971A1F8D04108BC7D4 /* ThreadId.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ThreadId.h; path = folly/system/ThreadId.h; sourceTree = ""; }; F6BD4677A9809440AF9F9498F2E0115B /* RCTBaseTextInputViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBaseTextInputViewManager.mm; sourceTree = ""; }; F713F14C913C9157BF2CDF26BF5F279C /* SynthTraceParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SynthTraceParser.h; path = destroot/include/hermes/SynthTraceParser.h; sourceTree = ""; }; F71EBF73F354B475D465FF6DE9A66707 /* React-RCTBlob */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTBlob"; path = "libReact-RCTBlob.a"; sourceTree = BUILT_PRODUCTS_DIR; }; F78A76F0BB8E6B3D92D46FB8C08FF72B /* RCTInterpolationAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInterpolationAnimatedNode.h; sourceTree = ""; }; F7CA9A9E0677E6E622E8C0C6BFC057B5 /* HermesExecutorFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HermesExecutorFactory.h; sourceTree = ""; }; F7CB0C6D6849C6DA8C5BCBFA3B2651ED /* RCTVirtualTextViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTVirtualTextViewManager.mm; sourceTree = ""; }; F7D701E7AA313B498D488AA43D416F3F /* ImageResponseObserverCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageResponseObserverCoordinator.h; path = react/renderer/imagemanager/ImageResponseObserverCoordinator.h; sourceTree = ""; }; F7DCF7DBDA1DB363572544D437D1EB4A /* MallocImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MallocImpl.h; path = folly/memory/detail/MallocImpl.h; sourceTree = ""; }; F7FB105B5F150706FC7A1068544C1C16 /* LegacyViewManagerInteropShadowNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyViewManagerInteropShadowNode.cpp; path = react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.cpp; sourceTree = ""; }; F8025E613E68EA6B0C75074A74BB97E4 /* RCTComponentViewHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTComponentViewHelpers.h; path = react/renderer/components/rncore/RCTComponentViewHelpers.h; sourceTree = ""; }; F804F0627373E6C63D34AAD65291FD24 /* sorted_vector_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sorted_vector_types.h; path = folly/sorted_vector_types.h; sourceTree = ""; }; F83C31C20E032D387D9A04D68DAC8265 /* propsConversions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = propsConversions.h; path = react/renderer/components/view/propsConversions.h; sourceTree = ""; }; F852C98DD1BF5640292AF6AAF675EA58 /* DoubleConversion-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DoubleConversion-dummy.m"; sourceTree = ""; }; F89962533E4FDDA2F999DA26DF69D135 /* JSINativeModules.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = JSINativeModules.cpp; path = jsireact/JSINativeModules.cpp; sourceTree = ""; }; F89AC6E92A39CCDDE8DAD6BE98D3C4D1 /* MemoryResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MemoryResource.h; path = folly/memory/MemoryResource.h; sourceTree = ""; }; F8AFFDB6E319041377C5799A85CD2848 /* NSURLRequest+SRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLRequest+SRWebSocket.m"; path = "SocketRocket/NSURLRequest+SRWebSocket.m"; sourceTree = ""; }; F8DEF690935571E2BA15F11F274EE883 /* RCTContextContainerHandling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTContextContainerHandling.h; path = ReactCommon/RCTContextContainerHandling.h; sourceTree = ""; }; F8E385BE54CB846981F47BD4BBF298BC /* React-NativeModulesApple.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-NativeModulesApple.debug.xcconfig"; sourceTree = ""; }; F8E43EE33594D104C5EF3813E34DEAFB /* AttributedString.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = AttributedString.cpp; path = react/renderer/attributedstring/AttributedString.cpp; sourceTree = ""; }; F8ECC27DA5BDBC6D1C55FD6C21B19E9B /* StaticConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StaticConst.h; path = folly/lang/StaticConst.h; sourceTree = ""; }; F91CC1CB5BBFE630F1A219C0EDA145B9 /* json.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = json.cpp; path = folly/json.cpp; sourceTree = ""; }; F923F037E88C68DA2463BCD75AA9ED60 /* SocketRocket.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SocketRocket.debug.xcconfig; sourceTree = ""; }; F9281ACFABCEF5289629EF6589504A67 /* CallOnce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CallOnce.h; path = folly/synchronization/CallOnce.h; sourceTree = ""; }; F9317E9FDB1763149AA85D21D664A706 /* RCTUtilsUIOverride.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUtilsUIOverride.h; sourceTree = ""; }; F958876A082BF810B342435CE3FB5AF6 /* RCTTypeSafety */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = RCTTypeSafety; path = libRCTTypeSafety.a; sourceTree = BUILT_PRODUCTS_DIR; }; F969DDD826E4A83C1AAE180C9E9DB314 /* RCTModuleRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModuleRegistry.m; sourceTree = ""; }; F9741807E424A3C28F079A8146D8AF4D /* RCTPropsAnimatedNode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPropsAnimatedNode.mm; sourceTree = ""; }; F97A942E5EB0FD88E4C166A5F5716585 /* React-RCTFabric.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTFabric.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; F98C396019C17AFAC2E6514744534845 /* RCTPlatformColorUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPlatformColorUtils.h; sourceTree = ""; }; F9E3E83E4B4A307A114208C3D1F55BC8 /* RCTUIManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManager.h; sourceTree = ""; }; F9FB962222C7D13D456DA7490A882D10 /* ExecutionContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ExecutionContext.h; sourceTree = ""; }; FA397527B29CC2470176B423C005BEE9 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ru.lproj; path = React/I18n/strings/ru.lproj; sourceTree = ""; }; FA4AEB20C629FD1B5F713C79D99E301D /* FBLazyIterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLazyIterator.h; path = FBLazyVector/FBLazyIterator.h; sourceTree = ""; }; FA6E512F724BFB0B3D270261962078F8 /* React-RCTLinking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTLinking.debug.xcconfig"; sourceTree = ""; }; FAB1A2AAEAD536D71C08D8CE9C14F3D8 /* RemoteObjectConverters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RemoteObjectConverters.h; path = destroot/include/hermes/inspector/chrome/RemoteObjectConverters.h; sourceTree = ""; }; FADAE66E358428988B767C2AAC5E2119 /* Pid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Pid.h; path = folly/system/Pid.h; sourceTree = ""; }; FADE4C50E4C03A98702AAB8CE87A3D81 /* NSTextStorage+FontScaling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSTextStorage+FontScaling.h"; sourceTree = ""; }; FAF931EFC80EAFDA3EA6E9A6F62665B8 /* RCTFrameUpdate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFrameUpdate.m; sourceTree = ""; }; FB0002CFA1F991284A466F64F3CDD670 /* Uri-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Uri-inl.h"; path = "folly/Uri-inl.h"; sourceTree = ""; }; FB10906EE52FB99A63183406F2DFD2AC /* ReactCommon-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ReactCommon-dummy.m"; sourceTree = ""; }; FB2A143E4389164E0F2CCDB7122BD9F1 /* RCTDynamicTypeRamp.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDynamicTypeRamp.mm; sourceTree = ""; }; FB5D34754AD28372AC075C4836BC9BDD /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = it.lproj; path = React/I18n/strings/it.lproj; sourceTree = ""; }; FB687C9F11521E5B9F74197C09608F8E /* WMDatabaseBridge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = WMDatabaseBridge.m; sourceTree = ""; }; FBC253E87364123EF03ADC474B7364C8 /* RCTRedBoxSetEnabled.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRedBoxSetEnabled.m; sourceTree = ""; }; FBC65E4ADA0C93CAF6F0857E1767393E /* RCTEventDispatcher.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTEventDispatcher.mm; sourceTree = ""; }; FBC79A9C5A60A939EF7BBEFBE8449906 /* RCTBlobCollector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBlobCollector.h; sourceTree = ""; }; FBE36ADE7B7AF7E211B4A734D83A30BF /* MoveWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MoveWrapper.h; sourceTree = ""; }; FC28EEFD6B8B7AAEB56E2A041A6DDCB5 /* JSBundleType.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = JSBundleType.cpp; sourceTree = ""; }; FC391A89C7D8499E264ADBDD9F59F736 /* Rect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Rect.h; sourceTree = ""; }; FC3E576BEEE24C22BAB754F8BDA7D822 /* FileUtilDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FileUtilDetail.h; path = folly/detail/FileUtilDetail.h; sourceTree = ""; }; FC43226FF6ADEAB1549A1CDD67BEC74A /* CancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CancellationToken.h; path = folly/CancellationToken.h; sourceTree = ""; }; FC938492EE25EDBA884D42C17EE1E89B /* RCTPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPackagerConnection.h; sourceTree = ""; }; FCAE6D5FA62309B748866975B6AA85DC /* RCTRootViewFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewFactory.h; sourceTree = ""; }; FCFD99083FD714E25C32912BE07EEE2F /* vlog_is_on.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vlog_is_on.h; path = src/glog/vlog_is_on.h; sourceTree = ""; }; FD2AA627BA11571293760EA92516290E /* hermes.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = hermes.xcframework; path = destroot/Library/Frameworks/universal/hermes.xcframework; sourceTree = ""; }; FD2B5192F4D25A120B9FBA56082E1498 /* TurboModuleBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TurboModuleBinding.cpp; path = react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp; sourceTree = ""; }; FD851DC7951B65E103BB27B6706B8EE3 /* BaseViewEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BaseViewEventEmitter.h; path = react/renderer/components/view/BaseViewEventEmitter.h; sourceTree = ""; }; FDAA60177E608D75C530E2C86C1BD33A /* RCTRootView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootView.m; sourceTree = ""; }; FDD85087D17F29E409E05B785CAEF845 /* RCTBackedTextInputViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputViewProtocol.h; sourceTree = ""; }; FDF1FDBD6E5C45FE24CB4F2C3B228AF2 /* Telemetry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Telemetry.h; sourceTree = ""; }; FE123FC7D80F16C162FBB579CF5DBD81 /* Parsing.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Parsing.cpp; sourceTree = ""; }; FE4DF00236D3CFC9333AC4F2536AD07C /* RCTTextViewManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTextViewManager.mm; sourceTree = ""; }; FE7B9294FF05AAFD1653E2104E10844A /* React-RCTAnimation */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "React-RCTAnimation"; path = "libReact-RCTAnimation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; FE9C8096CC17775F6B3D7F51F755BF88 /* F14Defaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = F14Defaults.h; path = folly/container/detail/F14Defaults.h; sourceTree = ""; }; FEB18EBDB42AC349730BA29BCF965FC6 /* SurfaceHandler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = SurfaceHandler.cpp; path = react/renderer/scheduler/SurfaceHandler.cpp; sourceTree = ""; }; FEB255691DB29610BDE1D3938C435B8C /* React-Core.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Core.debug.xcconfig"; sourceTree = ""; }; FEBC85A59D1771FEE07769D206EDEC9B /* WMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WMDatabase.h; sourceTree = ""; }; FF16234911D787047083140DEC397AC5 /* RCTJSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJSStackFrame.h; sourceTree = ""; }; FF7AD4797D7F14A650587773DE9EDC89 /* Instance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Instance.cpp; sourceTree = ""; }; FF822F0F4BB64652EAD4246D353613C0 /* RCTVirtualTextShadowView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTVirtualTextShadowView.mm; sourceTree = ""; }; FF88A9733D935D4DBE027D36D5B591C1 /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = ""; }; FF88C9A8B1E0A79468C40F286C239533 /* FileUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FileUtil.h; path = folly/FileUtil.h; sourceTree = ""; }; FFA2A883F42A90CB3B4B86BA995A7239 /* FMDatabasePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FMDatabasePool.h; sourceTree = ""; }; FFA331C6B5744B16007B95A0D3EA96D8 /* RCTComponentViewFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentViewFactory.h; sourceTree = ""; }; FFD4B861CCFBFBB3B9059A2DCEDE8D24 /* RCTActionSheetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTActionSheetManager.h; path = React/CoreModules/RCTActionSheetManager.h; sourceTree = ""; }; FFE3B6010494BF1759723F25C1271613 /* React-RCTVibration.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTVibration.debug.xcconfig"; sourceTree = ""; }; FFF4EAA32AB91B28A1ACBB7030CB8484 /* Bool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bool.h; path = react/bridging/Bool.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 0139C1ECDC2157867F618C9EA3EB1FFF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 18D45363A5C31117A24DD45090EE585D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 1E96689E45440CA500F1377CF69C3FBD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 20F4275A9630980BAF5F77C0EE302D2D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 303A5D98CB7E8BAC37153C94A9723DB8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 31C42BB3E2E25E43EB019EDC29907F97 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 31DEECC7D9F4687AA05692751E71642F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 32445F0B48FFAD562A3D7EFA997FE471 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 35249E191E5E9A9BCF3C012B7231E4E5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 38A83589C7A3FB59CFE0094947B15535 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 394B09545766677D0A263723DBEE5DD5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 3E93992A6915E912ABBC7FD7BB09ACF2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 401DCA93590F154762BC1D9585CB8A7D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 41E92B86A8DA922F93FB3895A411CD96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 4484CB8C5EC3D4C457E3791F1EDA81A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 4E6BB43FE92C85896EF4652D5008EE41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 53C4D790BC130A50096231A17E5B83B6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 555A04A540081AC49C8E6E99B4A994A8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5D70EF7822C104273D2101F12A77DA2E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 61D9AB3CF28105161B660B3A2569110A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 6B85A179CAD33992F413D8BD3E7F2D36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 6F4E2E05C47567492210B48CF3716282 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 75122507248AC3D88667540F35C80F67 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 7B00CA1FF92C8EE49D682945D65F7919 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 82C4242EC83DE2399BE5CCCAD8D44002 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 87CD4246A6A77E44C9BDD640317549F9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 89ED61ED54C1E87A03D923846D1CCD5D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 917B37A67EC657DE7A1DB7AC71C9BA46 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 953D5F4F2F49FBAA1C7494F06276AA72 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 976D53391EFB92F67FDDDF48FC18C587 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 9BE70249785B143A20B5733C856CB911 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; A9D4B85BB6017441753A3CED16046934 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; ADA95567AC41717C4D2DD30CB60CDA9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; AE7FBB9DE413C21987453291581B80C1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; B069C5D34B9F29495B74E527819ECEE8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; B0F3C1490E731E02547F366CAC459882 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; B490F5C3DE68C34A228783FAAEBE1CCD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; BD2E44394098D59D4216910EB6123099 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; BF9F98FB7155A6900208145875893CA8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; C045B01A5A6B7CCA78D61826BA82820C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; C4687459249DD90C9583CD8F4F17FD73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; C7E0A0DF29622DB6BD97632058301AC7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; CA724DED2831B905A1998F902665A550 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; D532CB49CB8E79A6C3551005CB82786E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; D94BECEDC7E7186443633477224FEDF3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; E6721EB4E54C19B70C3D2E41970D775A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; E8527906ED69AB38F1A6149B0ED3AFB4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F135DDD9CC12F6A1A80D36F03447C5F9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F6D7800EEE85719978FE04577571C010 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F99F6C110F1AB91CEFC1511B3107B904 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 035DBCF1705BBA1D99967CF1081992BA /* Support Files */ = { isa = PBXGroup; children = ( 45FA7F5F8B8980E56D777737778E2381 /* React-RCTImage-dummy.m */, 13EEFF365502DE9E6776D22ADDDCE4A5 /* React-RCTImage-prefix.pch */, E553A373CAD882BEE4374E43EBAD7556 /* React-RCTImage.debug.xcconfig */, E951AE3ED64705A1E7CF71EDD854B178 /* React-RCTImage.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTImage"; sourceTree = ""; }; 04EF134638BEC021D2EE29A5DCDA421C /* Support Files */ = { isa = PBXGroup; children = ( 77BAB7AB8A4B785443BC2813FC1B32C6 /* React-logger-dummy.m */, 64E2EBE04E636B603A934FE6A23B5CFA /* React-logger-prefix.pch */, 0EB25BDE8A306950B650A09F1A8ED625 /* React-logger.debug.xcconfig */, E39F032BC206A3CC16C40890B632D25E /* React-logger.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-logger"; sourceTree = ""; }; 05D208CCDDA721B65483F6B6D4343BF1 /* Singleline */ = { isa = PBXGroup; children = ( 28992A73B6E2E3C1194912C0730023B1 /* RCTSinglelineTextInputView.mm */, 28F712315F7CD5B5F84A557475518AF3 /* RCTSinglelineTextInputViewManager.mm */, 940919353E8C57E4A2A3101E8CD0FA67 /* RCTUITextField.mm */, ); name = Singleline; path = Singleline; sourceTree = ""; }; 07FB6EB17C1139D744295711E31ED459 /* Support Files */ = { isa = PBXGroup; children = ( 41232C04153D6B0482F696CC52538B79 /* React-NativeModulesApple.modulemap */, 9F5340BCCBE419D365ECF7F577F67C2B /* React-NativeModulesApple-dummy.m */, 11570ADC72BE55D73F846D94EDF7C249 /* React-NativeModulesApple-prefix.pch */, 7A59848A45BE0F5FCEF4561B500527CB /* React-NativeModulesApple-umbrella.h */, F8E385BE54CB846981F47BD4BBF298BC /* React-NativeModulesApple.debug.xcconfig */, E39930085671F1947A94AAE3B2EB3580 /* React-NativeModulesApple.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../../../native/iosTest/Pods/Target Support Files/React-NativeModulesApple"; sourceTree = ""; }; 08063C19264EDBC412CBC2513BC4077D /* RCTLinkingHeaders */ = { isa = PBXGroup; children = ( F40435B6D082BD6480C723A692DFB94D /* RCTLinkingManager.h */, 8E93927BD0D92FEB9D950507CCF5E2FF /* RCTLinkingPlugins.h */, ); name = RCTLinkingHeaders; sourceTree = ""; }; 089C4657A87D27FA4637D12E4F163527 /* React-rncore */ = { isa = PBXGroup; children = ( 0B323E3B0720EAB983DCFC52D4EC830A /* Pod */, B4A3BEC460C2E79702F6805C5AEBDE6A /* Support Files */, ); name = "React-rncore"; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; 09B2533288AEB5522A0AC33E92C2A79E /* RawText */ = { isa = PBXGroup; children = ( EAF8192C1B7013E06F84C24D2B1110B0 /* RCTRawTextShadowView.h */, 07A90696C4EB8690ED661E5470ECC1C5 /* RCTRawTextViewManager.h */, ); name = RawText; path = Libraries/Text/RawText; sourceTree = ""; }; 0A60382252AE41051D04DE8A6098AEF1 /* React-utils */ = { isa = PBXGroup; children = ( 1B644FFAD498B469A3633A360744C403 /* ContextContainer.h */, 132132CB707C71FA5E68A7BB06EE4804 /* CoreFeatures.cpp */, EDB17360845E700286BDE806E67E8AA0 /* CoreFeatures.h */, 74F2B9390AF33F8E9969AE22B88C8280 /* FloatComparison.h */, 6960AF2620CFE6726A4B805D48001166 /* fnv1a.h */, 10CFD843724D42F53E4373E441FD4EBB /* hash_combine.h */, 1340E22099179F463C3487BAB8420980 /* jsi.cpp */, 2C4F509606F5C64CB085DA2D927CDC93 /* jsi.h */, 7B300B21C62B9776F40F71E7688DA14C /* ManagedObjectWrapper.h */, 73AB6FD4B3DF99EC222564D6743427C3 /* ManagedObjectWrapper.mm */, 5BD6398C6C92DF26317E3DC8E027D927 /* PackTraits.h */, CE02C2175E3E663763ADD7A4613D0103 /* RunLoopObserver.cpp */, 4C5E9B3E860020EB74A5A0DCB92E545F /* RunLoopObserver.h */, 797702F6E9E25223D401BD7E13885F76 /* SharedFunction.h */, 20DB7A7891E6EF51C69DA252EF43EE25 /* SimpleThreadSafeCache.h */, FDF1FDBD6E5C45FE24CB4F2C3B228AF2 /* Telemetry.h */, 5A5CA98B839AFCD15AE40CBB92C32436 /* to_underlying.h */, C609D0506D4AF74A3EAD5ACBA228FE4B /* Pod */, C92330707FC79B77F1F9F67268D78E99 /* Support Files */, ); name = "React-utils"; path = "../../../node_modules/react-native/ReactCommon/react/utils"; sourceTree = ""; }; 0A7E9FC5FB40769E54A8427CE19F6DA4 /* Pod */ = { isa = PBXGroup; children = ( 9934CD5B42C888E8A4F1D3552AEE6B13 /* React-Fabric.podspec */, ); name = Pod; sourceTree = ""; }; 0B323E3B0720EAB983DCFC52D4EC830A /* Pod */ = { isa = PBXGroup; children = ( E8C7733DDA1AF4D8C84201C849CE6990 /* React-rncore.podspec */, ); name = Pod; sourceTree = ""; }; 0B9435B4A5935D54E7B928CADCAAAAC5 /* React-featureflags */ = { isa = PBXGroup; children = ( 49B8EB5E3B6498FDDA1A80E45FA97979 /* ReactNativeFeatureFlags.cpp */, 75FB185880821A181DA77737EA85AF83 /* ReactNativeFeatureFlags.h */, 39499A61681F432C3F011D0926E7DAA4 /* ReactNativeFeatureFlagsAccessor.cpp */, 427B91D65DD3F677FDB0BBC6941F4424 /* ReactNativeFeatureFlagsAccessor.h */, DC24DA11D62A60707D4DA680FD726094 /* ReactNativeFeatureFlagsDefaults.h */, E7A75689694710ACECFF3C8C79D55E6D /* ReactNativeFeatureFlagsProvider.h */, 4A72E17EC61A8CF846383874B37BEF14 /* Pod */, 642E80121214548255F3E44A3D10908F /* Support Files */, ); name = "React-featureflags"; path = "../../../node_modules/react-native/ReactCommon/react/featureflags"; sourceTree = ""; }; 0DA390F87BBAD21398DF554B46780A15 /* React-Fabric */ = { isa = PBXGroup; children = ( 64397211A15E56518F29A27220C51336 /* animations */, 7D7FC175BD5F32AB7F726B6D215C834E /* attributedstring */, 612A411D79E5AC1A20ABFAED89F0EAA7 /* componentregistry */, EB32039CA10C7E1FEE8133FB3FA9F43E /* componentregistrynative */, 4D18290C9D502ECAFA6AEE43300F5595 /* components */, 154CDABFE25DA7D844CF1882982E060D /* core */, ACE973C74E126DABDE76A70A939FE31F /* imagemanager */, 891A72B2B54F324453B6DF695B8101DD /* leakchecker */, 0E28AE480692E792C2A4ACAD0065A24D /* mounting */, 0A7E9FC5FB40769E54A8427CE19F6DA4 /* Pod */, 71BD988D97F229A87FF011F774714D8D /* scheduler */, B15E0C00053600CFA57B847087372FA8 /* Support Files */, 21A38486AEB483A1DDF3640DB3C9A269 /* telemetry */, BB754E89BE3831E5159A960856345A34 /* textlayoutmanager */, 4C0D529CCAF0EF5D539488BECEBA799A /* uimanager */, ); name = "React-Fabric"; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; 0E28AE480692E792C2A4ACAD0065A24D /* mounting */ = { isa = PBXGroup; children = ( 57094883E054C3166427AC3CFF403965 /* Differentiator.cpp */, 881BC753A7C248050EC65DCFDF4A1F50 /* Differentiator.h */, 308183F96466CA2C23FC665AD164BFD4 /* MountingCoordinator.cpp */, 09CACB20A3D99F350BE5A1565F4ACA67 /* MountingCoordinator.h */, 77C83209E6AE78202FC38E3CDF6E4666 /* MountingOverrideDelegate.h */, F5710B431788CFA607B0F39F45EC6E64 /* MountingTransaction.cpp */, A23EC0B053A41A76F8AE3B595FF6B87A /* MountingTransaction.h */, 95D17842EC6B842F72D0A2E4DA506E78 /* ShadowTree.cpp */, 5FFB2C7DB283EB3379974035A76B3B13 /* ShadowTree.h */, 0BEE9CFB3C6827C1D888BAFC061BB79A /* ShadowTreeDelegate.h */, 43F384C21F24B355DE771A761C765E4B /* ShadowTreeRegistry.cpp */, 9621CF80D2D681568C8BCAB003EA22F2 /* ShadowTreeRegistry.h */, 3D6DBF11CFCFF077F1E73E67C1B435B6 /* ShadowTreeRevision.cpp */, E78F20D79CCC9323B970100544DF75D4 /* ShadowTreeRevision.h */, 9BE7B7E0E20673111D75C477804554AF /* ShadowView.cpp */, A7DC83484741B6CEE36700BCB855A982 /* ShadowView.h */, BB2E2D07807B6BB7451133707BC5FF03 /* ShadowViewMutation.cpp */, 7AEAEA20EE165C0C9C90A2B2BDD3C21A /* ShadowViewMutation.h */, 4B56A61B8E70277D187E3D37BFBF7897 /* stubs.cpp */, AEBD60021620778CF66B52B3BB90BDF5 /* stubs.h */, 4BEF5A191F5C9D7D1C8386FB298882BE /* StubView.cpp */, A341E5DC44E63AA9B8DFF0E0E059A5F4 /* StubView.h */, 507CCE949602395770BDF4CA5A58B07A /* StubViewTree.cpp */, EA8C03F6178FA2682E0DD2D5F53F222E /* StubViewTree.h */, A5823607D77DE3B854886CBA748F1433 /* TelemetryController.cpp */, 194D194CCB89C075CEA29192C47A2A33 /* TelemetryController.h */, ); name = mounting; sourceTree = ""; }; 1004681C3BDF8E5CFC5D030CE39D0CA7 /* platform */ = { isa = PBXGroup; children = ( 5328E121AABC026DD9242F9F14882F7E /* cxx */, ); name = platform; path = react/renderer/components/view/platform; sourceTree = ""; }; 10CB6C85BE8F5695B82D105949AE2B98 /* Pod */ = { isa = PBXGroup; children = ( 780886372A0B2B7809DF714CB50EBA56 /* React-cxxreact.podspec */, ); name = Pod; sourceTree = ""; }; 10FFE0FE0711EED444C4D76DA41F2C38 /* Nodes */ = { isa = PBXGroup; children = ( 0A801C14BFA125ACB2E474AAFB4B2D03 /* RCTAdditionAnimatedNode.h */, 29B488F05847F4968004034A803BA1EE /* RCTAnimatedNode.h */, 991E213D38BB44AE5C3367DDE4A4D4D8 /* RCTColorAnimatedNode.h */, 48B93F350B7CEAA9026208326081EA41 /* RCTDiffClampAnimatedNode.h */, AB89B71C07D924F2DA582CF6A4C3CFA4 /* RCTDivisionAnimatedNode.h */, F78A76F0BB8E6B3D92D46FB8C08FF72B /* RCTInterpolationAnimatedNode.h */, 88F146A98AD14FE819BCA98EB3275AD3 /* RCTModuloAnimatedNode.h */, F28A2D4EC3F7FA5178A446213C416F6C /* RCTMultiplicationAnimatedNode.h */, F35ECB508AB87E99C735B9A8219E2790 /* RCTObjectAnimatedNode.h */, 07248FECF4EA760047A9A71945D1E7E2 /* RCTPropsAnimatedNode.h */, 57C409D3D492DAB7368ECE438E121DB5 /* RCTStyleAnimatedNode.h */, D837D755183ED658A920B4FD642A3F16 /* RCTSubtractionAnimatedNode.h */, 18E04C8FC9E54D8A00245F3E4B386C0E /* RCTTrackingAnimatedNode.h */, 9BD826EA734516D956DB671826DED506 /* RCTTransformAnimatedNode.h */, D968F1CAEE31B74111F5F45D24E694BA /* RCTValueAnimatedNode.h */, ); name = Nodes; path = Libraries/NativeAnimation/Nodes; sourceTree = ""; }; 125A31DA6044B0FE2A4D78722470D750 /* Pod */ = { isa = PBXGroup; children = ( 946B80B815D8B4AF5B32C1A04E7E061B /* React-perflogger.podspec */, ); name = Pod; sourceTree = ""; }; 1428673623694BA3B3A65613421BAAF9 /* Pods-WatermelonTester */ = { isa = PBXGroup; children = ( 84E154DAD162F4A18EEEA3624CF6A532 /* Pods-WatermelonTester-acknowledgements.markdown */, 697110B0CEDE98EAA089612835E9E5AF /* Pods-WatermelonTester-acknowledgements.plist */, 413649D5C571D8A6170C6A4424CD088F /* Pods-WatermelonTester-dummy.m */, 5A0B5D9D59E5E269C5427D81B4D4CF05 /* Pods-WatermelonTester-frameworks.sh */, 5D1C0A821BD026A9A939C64687CBD024 /* Pods-WatermelonTester-resources.sh */, D5F81F5AAC387C14EE7017B61CB495EC /* Pods-WatermelonTester.debug.xcconfig */, 73B3A96DAB49C42270A59966B121F1A7 /* Pods-WatermelonTester.release.xcconfig */, ); name = "Pods-WatermelonTester"; path = "Target Support Files/Pods-WatermelonTester"; sourceTree = ""; }; 14ED68B512C0D79F79479BB0C185ACCD /* scrollview */ = { isa = PBXGroup; children = ( 2B38F5BBD25E489CA1BCFF0B8B34AD39 /* conversions.h */, 25A59FDE9D2F710EAEE9BF60F424C713 /* primitives.h */, 287D6D149E8F946A10D3DCE0418FB1FC /* RCTComponentViewHelpers.h */, 610A9C5BDF3BEADA074AB1F27B23F1F8 /* ScrollViewComponentDescriptor.h */, 17E08D0C97050157936C9ACE4FAF61CA /* ScrollViewEventEmitter.cpp */, C0BA0D275A8C8269E34CE4A1AD5CCF35 /* ScrollViewEventEmitter.h */, F1758BCE0D6DB0A37CD1E35331999A52 /* ScrollViewProps.cpp */, D5D85F064A48142714688A62D0169A8F /* ScrollViewProps.h */, 8E2FD3C024F95AA7EF9D1ECD43A5E807 /* ScrollViewShadowNode.cpp */, 7A7A0F200C7B88BDC44875E323134B8D /* ScrollViewShadowNode.h */, 11B65C1CE4591582924CEE6C134FDC1D /* ScrollViewState.cpp */, 60E4F60D2C2C4C8B7116D0D69FD78717 /* ScrollViewState.h */, ); name = scrollview; sourceTree = ""; }; 154CDABFE25DA7D844CF1882982E060D /* core */ = { isa = PBXGroup; children = ( 12C4D9C3A09316945470A899D769DF18 /* BatchedEventQueue.cpp */, 7BBF469B26873251B537670801999C9B /* BatchedEventQueue.h */, CB0D3B1D12723CB6F6A4B5A53775B4DC /* ComponentDescriptor.cpp */, 52DD466CEB37236E0239E023F92F17AF /* ComponentDescriptor.h */, 05A8338A74887E54877E3B5E2360A93D /* ConcreteComponentDescriptor.h */, A7C7A0603C70B03A5BAB896F01F15E47 /* ConcreteShadowNode.h */, 46F019BC62AF7DC88D7C7732C66B0216 /* ConcreteState.h */, 5CA8FFB264289551FCCAE29495EBE650 /* conversions.h */, 44C17CFBA5F0AAEEAA6587B65BBD9539 /* DynamicPropsUtilities.cpp */, 777152D60FDE62FB7858028E0F494386 /* DynamicPropsUtilities.h */, 8A50EA432D2B83B1014E46448CA68632 /* EventBeat.cpp */, 4CE7D7393D013F61BE78DD0E2CDA786F /* EventBeat.h */, 0E46F0129DD1A6A967F2580EB63011DB /* EventDispatcher.cpp */, 520B63F372380D55B40793B5BB10A39F /* EventDispatcher.h */, 07C2F40D8790521504B9C05E652B31DE /* EventEmitter.cpp */, A7BB8379D1CD88BE60A5A0D33D8572A2 /* EventEmitter.h */, A4DDB397BCB393ACDDF3EB861945B730 /* EventListener.cpp */, C4CDFBC1ECF32EC053DEB342DEE1B1C2 /* EventListener.h */, E743DC457E6CABC5B13E68A381C20913 /* EventLogger.cpp */, 1ADB11086CA7355EACB08F3BD428C0A9 /* EventLogger.h */, F5D3D4E731B1EF9C93FC2A49ABDAD388 /* EventPayload.h */, 2EDE07F5836F143CD7857CB2E5B5E136 /* EventPayloadType.h */, CF485BFE7872C54223E057A72A0AB6A3 /* EventPipe.h */, B1E12CAD2C6FB4F2DF64F7CCC6D15E3F /* EventPriority.h */, A3F08746919747A6F56A2864E48BDDD3 /* EventQueue.cpp */, A4AFB126642929BDB526E70B71748879 /* EventQueue.h */, 4B22A0860FE6BF2F9CC4F24C6A16C02B /* EventQueueProcessor.cpp */, 7A4636B3DC5A729E8F40B4860ACEC4B4 /* EventQueueProcessor.h */, 84D732F0DC5E41F018DF129A1E36E683 /* EventTarget.cpp */, 7ED3FB4188B6B018D64337B5E28DF81D /* EventTarget.h */, 8516ED23F91BAC902B146A3BDA21B3AB /* graphicsConversions.h */, 2A29138DBA1381888F4701360BF91338 /* InstanceHandle.cpp */, 4DD6B4C58B299EAE1A3E500A3EDE0002 /* InstanceHandle.h */, C95BE4329B2B85F46818C25087E9147A /* LayoutableShadowNode.cpp */, D40F2678A9E0D12E6FEE80ED9004E5BE /* LayoutableShadowNode.h */, 349041093547AE8E438BDD4E8A829CB7 /* LayoutConstraints.cpp */, AEA7713221A3B353A10E5D4A3E848D96 /* LayoutConstraints.h */, B84580A87121CAF61CB478AB93D9261B /* LayoutContext.h */, 05E7D2C113326591CAF18117371EEF7E /* LayoutMetrics.cpp */, A35672FA86AA809C95DB1AD01D1F4E30 /* LayoutMetrics.h */, 88B840D20BFE171BE3DD9DFE4EC33AC0 /* LayoutPrimitives.h */, BF2A098BFA676BEB807B64FA44567B00 /* Props.cpp */, 327A412C03B8D29F20508FBD60D4EAD2 /* Props.h */, 713D582F6B367593E27B9841A06592D1 /* propsConversions.h */, AD945009ED5CD2E57F93715472E7BAAC /* PropsMacros.h */, 5E2250F8ED2A809808FB295A155DA713 /* PropsParserContext.h */, 7841C02BBC8782E7B8D3EF2815A6026C /* RawEvent.cpp */, 1B389CA633B6575A2FA37718B19A4756 /* RawEvent.h */, 19D4CF0857B96FBEA270CC2CD46B424F /* RawProps.cpp */, CC381BCFEEAC649BB62889E972FAD4E3 /* RawProps.h */, 0C867898C76A4282B23A18DB01393712 /* RawPropsKey.cpp */, 8FA93F3F56F84CCD73CC13AB0A744B8A /* RawPropsKey.h */, 8B8BA983DC0304E53A494B8BC8368D3C /* RawPropsKeyMap.cpp */, 2DF730E6145C9D42DEB5C32702BE8C74 /* RawPropsKeyMap.h */, 29069E0EE8AF62E25BA127E3020926FD /* RawPropsParser.cpp */, CCB913EB7EC2FFF2A1F039FCAFFF3042 /* RawPropsParser.h */, F56A35A5E128A460F52E75B7F79344AC /* RawPropsPrimitives.h */, 51C1705E9B13860E1A5ED501BF5D9BD4 /* RawValue.cpp */, 1AB59CE368BC9400B2ABCD47AFB8C08C /* RawValue.h */, 9F8C4243A150FEDAB173B67E50BC9174 /* ReactEventPriority.h */, E9D85EEAF42C9AF3CC1666F33CF872DD /* ReactPrimitives.h */, BCAC25D53F76C3CA7747058E179BEC03 /* Sealable.cpp */, D828B4DBBD448E09A3D7C599F4CEFEF3 /* Sealable.h */, AE8331A8B19DE05088A3AF1C06D9599D /* ShadowNode.cpp */, 1F2594C363D96114D88D6D3996A6AD08 /* ShadowNode.h */, 2782757DC9A193842FF73CDFEC4F5F65 /* ShadowNodeFamily.cpp */, 6E4274F08E4BBF0B6491769157BBB91F /* ShadowNodeFamily.h */, 3053B3AC995ECECC071744E464935607 /* ShadowNodeFragment.cpp */, 1598F75BEAFDD5C3F7AD8DCDD6D5D2C4 /* ShadowNodeFragment.h */, 7AE90B08B12F40EABE9BDF5B888E8832 /* ShadowNodeTraits.cpp */, 18EF461AA27476D0FDF425B3D2483EBA /* ShadowNodeTraits.h */, 776D1F938E2ED7503BB26ACB324E4DF9 /* State.cpp */, 6A923BB7F15C4A2B32DDE64B8D827632 /* State.h */, 96AEA8A2506861840BC63D873CC2961A /* StateData.h */, 2D889D31C2B9F054FBB9309C335FCD66 /* StatePipe.h */, 56D34A45C0AD73CC42339EC6A2CA028E /* StateUpdate.cpp */, 27DE3F3B20B7CEFB975091316FFFB6CC /* StateUpdate.h */, A50DCAB2950F79811B921C5568362684 /* UnbatchedEventQueue.cpp */, 1B14B05F1E3FA960A779224B96DBB041 /* UnbatchedEventQueue.h */, 9788F37552AF8A0A123A07FA7D080CFA /* ValueFactory.h */, 2CA71A360B05CFB72B96ACD04FA7ADB6 /* ValueFactoryEventPayload.cpp */, F1AB976E1A25C3A525A7919E63A9BA92 /* ValueFactoryEventPayload.h */, ); name = core; sourceTree = ""; }; 15801941DFE125F4459DBA217046DB1E /* chrome */ = { isa = PBXGroup; children = ( A11628FF9D522105C68BD01BB4D05697 /* ConnectionDemux.cpp */, 281DE643AC3EC1BC9357383486F2FB11 /* ConnectionDemux.h */, C80CD944FB88B23807F5AAAF7CB21069 /* HermesRuntimeAgentDelegate.cpp */, 5B81B76C387972027C9B1637E2E6A612 /* HermesRuntimeAgentDelegate.h */, BBA46B29F3F06B0AEC0E48F4C7C99C23 /* Registration.cpp */, 7CA5F6EB56C2B8E096CBC6A7B9532E76 /* Registration.h */, ); name = chrome; path = chrome; sourceTree = ""; }; 16A4234682C8931240E16166FA4BA7C0 /* React-graphics */ = { isa = PBXGroup; children = ( 8C66234F6FC8A3E3EADCA342B130FB54 /* Color.cpp */, 7F1A707D6F8DE921DFA42211D2036148 /* Color.h */, 3A48CF42426D1757E19F5E0283D958A0 /* ColorComponents.h */, 33BB544E228494D0AF9CB4E5A11EF94D /* conversions.h */, 296F41E25D51A2758C6CBFAB3A8B8FAD /* fromRawValueShared.h */, 25EBF2FA7FFEDCE7086F43F67F482A2C /* Geometry.h */, 75666A7E9DF4B81A7D9C5A782A0BCE03 /* Point.h */, FC391A89C7D8499E264ADBDD9F59F736 /* Rect.h */, F59674BB4A1D0F323148B07D7D682AC2 /* RectangleCorners.h */, 60DAB499CFAAD9EB49E01C7C8B9A5F15 /* RectangleEdges.h */, 22B331FFC962649EE96FA4C6FF47CC23 /* rounding.h */, 9130DC48E60A16B3033E4C4648557B52 /* Size.h */, D67413975CF3DA436729109845A30A9F /* Transform.cpp */, 071916D0DED7AE1D3E16FC6FEF5AEFAD /* Transform.h */, 0FD37A9A693B3CEB099DDA9955E3C67F /* ValueUnit.h */, CFB81BB75D1D9BE93AA436949526503C /* Vector.h */, 77635579615CF1D052BC9DF20B4D023A /* platform */, 734385DF00F869A8A9DCB25F7D0FE59D /* Pod */, EF7F6D8BCCCAF26CB3A0B8AA094C293B /* Support Files */, ); name = "React-graphics"; path = "../../../node_modules/react-native/ReactCommon/react/renderer/graphics"; sourceTree = ""; }; 17004CCFD3DD9375E623A963E13D18C2 /* Mounting */ = { isa = PBXGroup; children = ( 7219469EB101610CDE06F56EAFF2F90D /* RCTComponentViewClassDescriptor.h */, 6ED440A6B8C1D4FBA39CD54ECE8D51F3 /* RCTComponentViewDescriptor.h */, FFA331C6B5744B16007B95A0D3EA96D8 /* RCTComponentViewFactory.h */, 6EADDB0E9C832143081D058CA7259028 /* RCTComponentViewFactory.mm */, 4DC0B393EEF985A3E4643B20F6754757 /* RCTComponentViewProtocol.h */, 36164B0E9E5609F36A0106D648A0FA8E /* RCTComponentViewRegistry.h */, 723B1846FB58ABF6C06939E1199945A2 /* RCTComponentViewRegistry.mm */, 7B80D5D0E1943CE661F2F4C200BA7BE9 /* RCTMountingManager.h */, 32A7462E31DA20BFC4BF96677609574A /* RCTMountingManager.mm */, C2130B95F426EC491603E0487645BCAC /* RCTMountingManagerDelegate.h */, 2FA6B9156408ED84AEE6F56B8BB6FC8D /* RCTMountingTransactionObserverCoordinator.h */, F261A91F0724E8B1486A1BC201FD1425 /* RCTMountingTransactionObserverCoordinator.mm */, F1FA54C72A9856CD3D0A6B6E24B06E7E /* RCTMountingTransactionObserving.h */, 6368583633FFD741EE844FFC0D7DEA92 /* UIView+ComponentViewProtocol.h */, 6ECE543138E064055C9EBCDC09788205 /* UIView+ComponentViewProtocol.mm */, 987A58B283B2E43F2079409981CFB845 /* ComponentViews */, ); name = Mounting; path = Fabric/Mounting; sourceTree = ""; }; 17687E905102CFB96BD9AEFECEF5AE1F /* ios */ = { isa = PBXGroup; children = ( 6DBE07C15CE88F4964445119637334D7 /* react */, ); name = ios; path = ios; sourceTree = ""; }; 18DA155471EE231088B75DA42ACDA74D /* WatermelonDB */ = { isa = PBXGroup; children = ( 7FF0FE18123413DA783550212321BE91 /* DatabasePlatformIOS.mm */, 240A841CE45A01661CD44D4EE8B91BC5 /* JSIInstaller.h */, 126C5DD1D6213610884F84302374D19F /* JSIInstaller.mm */, DB9466A46A68BC525A64AAAB5F5C1F6C /* WatermelonDB.h */, 2A6D3BA3FB491018316327CC752B4B51 /* FMDB */, 4B0961F3A4B3DB15F23AB072C78ED8F0 /* objc */, ); name = WatermelonDB; path = WatermelonDB; sourceTree = ""; }; 1A90064350D1AA1771D19FCF9770AC84 /* bridging */ = { isa = PBXGroup; children = ( 774B7D8E1CE74C04CEDEC68A34DAC344 /* Array.h */, 1E9ACDD39D4A14DDC16406CDD0457ED3 /* AString.h */, 3018115A5F8C04479A8AE64B102BE2C5 /* Base.h */, FFF4EAA32AB91B28A1ACBB7030CB8484 /* Bool.h */, 7C12044FAE55F8C0F0F5BC236FA00BFC /* Bridging.h */, E0C3160ABF695152C97A85E56B140C4B /* CallbackWrapper.h */, 570DABFC32CF97AB28B8269609BAD9F8 /* Class.h */, 1E2EDFEA3A7670F7D6AB0267AFA7E2F1 /* Convert.h */, F4116A5CF0A3EC97879DE8D115EB9AC5 /* Dynamic.h */, F15F1FDA5B8172C6781AEDF956D65B0C /* Error.h */, 9DB326307140B9D4967E5C75EE4D451D /* Function.h */, 326FC938C2E12371A877E5FA46F37777 /* LongLivedObject.cpp */, B862E1391D01BF787FE43136140D8C85 /* LongLivedObject.h */, 3B9822B49D137DD1BBFAE4C9206C7F97 /* Number.h */, 342244AFF6DAC97CF99A001A770A5E4F /* Object.h */, 883F3E36A905B70FC2C8B78E92AC740A /* Promise.h */, E488A78562494C4DFA18485430C98C6D /* Value.h */, ); name = bridging; sourceTree = ""; }; 1A91472BD47D8A01B2F79E1D3BF3F435 /* Pod */ = { isa = PBXGroup; children = ( 3948308FBBC9426B8AAFA7391786B0E8 /* React-Codegen.podspec.json */, ); name = Pod; sourceTree = ""; }; 1B23A6C0F680568EB52BA9BD9526F9D2 /* React-RCTImage */ = { isa = PBXGroup; children = ( 8612AE35A990235C979983FD304D7330 /* RCTAnimatedImage.mm */, 307CE5CEEA4E06A6A255CA72344E783B /* RCTBundleAssetImageLoader.mm */, 492E9A2ED4F5B423E522887CB7BCF477 /* RCTDisplayWeakRefreshable.mm */, 092DBE2F0CE18725FF1B0C8D08B1147C /* RCTGIFImageDecoder.mm */, 8CFB7A8BE97081BCC80D943BAD260E5A /* RCTImageBlurUtils.mm */, 57BBCC84BCDB23D6ADA72EA6128CE796 /* RCTImageCache.mm */, 761CE3FB688FBACCB93A3B8CE521B969 /* RCTImageEditingManager.mm */, 4BB78B415F6A4B0EED05C08EA7A7D03D /* RCTImageLoader.mm */, 8A81DCEC265B36C702B32207D90DA5F9 /* RCTImagePlugins.mm */, 2BAEF360C04D98022913BA78AC8A5A0F /* RCTImageShadowView.mm */, 682FB404BC26FD7A5CE7722DC28CA1D9 /* RCTImageStoreManager.mm */, 7F7639A56DEF6356718C6D5EC6AF3F7F /* RCTImageURLLoaderWithAttribution.mm */, 51B5078EBA4D2CDB62D5B9977620515C /* RCTImageUtils.mm */, 06A12441B1C3D7A2CB937C85CAF45CCE /* RCTImageView.mm */, 26E19B9D750F023C6ABA23E46C660990 /* RCTImageViewManager.mm */, B2912664908CB6F78177A7A284D257A7 /* RCTLocalAssetImageLoader.mm */, D73FC5BE76F5CED5EE11722EB194C596 /* RCTResizeMode.mm */, BB8ABBAD57F26EF6E656FCE9B68DB2F2 /* RCTUIImageViewAnimated.mm */, 6982589FDD1F93DB24C77311374EE474 /* Pod */, 035DBCF1705BBA1D99967CF1081992BA /* Support Files */, ); name = "React-RCTImage"; path = "../../../node_modules/react-native/Libraries/Image"; sourceTree = ""; }; 1BCE377F5B918C589D8C41BFEE151E47 /* Support Files */ = { isa = PBXGroup; children = ( 0D01E2CE505FD137C83D5A00A839D8B9 /* React-jsitracing.debug.xcconfig */, 7568E7B5AE849AB3EBC22558FB87A3A0 /* React-jsitracing.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-jsitracing"; sourceTree = ""; }; 1C5BD8DCB4B8638E0C634F76212A69CB /* Multiline */ = { isa = PBXGroup; children = ( E0004F076A577E394A0CC4F9AEC7F57B /* RCTMultilineTextInputView.mm */, D9C558B0DD5120E2A4ED354C91A0A581 /* RCTMultilineTextInputViewManager.mm */, E3438873735D5FAD55DAADE60C49CACC /* RCTUITextView.mm */, ); name = Multiline; path = Multiline; sourceTree = ""; }; 1CE3AF8F1B957A97D187C362FF34706E /* React-FabricImage */ = { isa = PBXGroup; children = ( A9C67AC080A782225408DA978D1DA4CA /* conversions.h */, 846EE9DAE34FA678FA761E65DD2F08E5 /* ImageComponentDescriptor.h */, 996448BB93D8203D8D6C59B2D0B33BDA /* ImageEventEmitter.cpp */, 90D9EFC947AA0C68DCA4C6DD6EB901DE /* ImageEventEmitter.h */, B54D8461C2AF60CF1BF611F2D31ED2EB /* ImageProps.cpp */, C6326DF244B84C66EDAF7AB7E2A7C98C /* ImageProps.h */, 4F1014498794A7BE263384E6C973334C /* ImageShadowNode.cpp */, 84C69750863FB2783C4C3DA5FBF5A671 /* ImageShadowNode.h */, 285EDB99AD277EB30467D34D174D268F /* ImageState.cpp */, A602AFB5786A8427B22008771FA2A005 /* ImageState.h */, B508D299A713547C4C4004662C7A360E /* Pod */, B129C0FB664B93F4F1F73414EFD96E55 /* Support Files */, ); name = "React-FabricImage"; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; 1DDCCBF023D859DCF237EE249B0F2BAD /* Pod */ = { isa = PBXGroup; children = ( D6CB644C7E059627F4E16F567D961E18 /* React-logger.podspec */, ); name = Pod; sourceTree = ""; }; 1FB41E9CB3764DB5E3A256F2CCB3313C /* Support Files */ = { isa = PBXGroup; children = ( 089961A4AC420F0D1B51AF0717493120 /* React-RCTAnimation-dummy.m */, C53D999F11FC29298A3B8D1AA6A8120E /* React-RCTAnimation-prefix.pch */, C8980F597D1A97A167ACA46B54A4BC70 /* React-RCTAnimation.debug.xcconfig */, 78D72FC8CF42B31C8EDAD6F8657F610F /* React-RCTAnimation.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTAnimation"; sourceTree = ""; }; 1FDC21BFAA89EDFEA43D90A05DE15156 /* Pod */ = { isa = PBXGroup; children = ( B10FA4019F5C607FA08931E27E127784 /* React-RCTVibration.podspec */, ); name = Pod; sourceTree = ""; }; 205065C8C5001FF4D791D75300C3DDAB /* Support Files */ = { isa = PBXGroup; children = ( E0295F5F6E41D3C5358AC3BC796E1F70 /* React-RuntimeCore-dummy.m */, 49549BCF8744CE247C53A44E2598E79D /* React-RuntimeCore-prefix.pch */, 22F665521DA4A7B91AD3CDC51E8779D6 /* React-RuntimeCore.debug.xcconfig */, 776825034C674A4EB458170D6BBB3139 /* React-RuntimeCore.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-RuntimeCore"; sourceTree = ""; }; 21A38486AEB483A1DDF3640DB3C9A269 /* telemetry */ = { isa = PBXGroup; children = ( 6353D5B2828F0A532FAC374FF901DD8D /* SurfaceTelemetry.cpp */, 4C260B39655A7EBBA430142A5FAC7288 /* SurfaceTelemetry.h */, 6FBDF0EE578C484F397C21E43F49F7E7 /* TransactionTelemetry.cpp */, 6FA659BE9F28613C4D7F98DAC5FD1C4B /* TransactionTelemetry.h */, ); name = telemetry; sourceTree = ""; }; 2202615F216E42653F37977999D037B5 /* Support Files */ = { isa = PBXGroup; children = ( A0A2F69D09350A6A5AFA9864BBB84FFE /* React-Codegen.modulemap */, 739F5A9F956FCC84E8E36F6798EA859B /* React-Codegen-dummy.m */, 0E07224933F2530B0ADD76E3867C3FA8 /* React-Codegen-prefix.pch */, 6941C8C17A58C26823E12140D3831D05 /* React-Codegen-umbrella.h */, 967DBD838FB53E8907C105802E22ECCA /* React-Codegen.debug.xcconfig */, 441AA6664650EC12BAF8937E4A882741 /* React-Codegen.release.xcconfig */, ); name = "Support Files"; path = "../../../Pods/Target Support Files/React-Codegen"; sourceTree = ""; }; 22298BAC557AC5B6503AABF5698863DB /* Yoga */ = { isa = PBXGroup; children = ( 7C5BE15D5F354DA98A5ADA415D1FDB03 /* YGConfig.cpp */, 9FBD5986BF1B3B3D5B97CC5217DFE41D /* YGConfig.h */, 5510FC0409FF02AA7A39E8542D74B323 /* YGEnums.cpp */, D70B1BA1E566B78E8FFA9FDB20C45D1D /* YGEnums.h */, 6ABE82ECFCA457CEA1122532AFFC13E1 /* YGMacros.h */, 98C9E5135E046EC50D915DC1941F6D87 /* YGNode.cpp */, 7B7333F82E7D58CECA09AB6ABF206727 /* YGNode.h */, 5B62D2EDAEE105EA46E50A51A6DCC4FB /* YGNodeLayout.cpp */, 9841711B9F3A736014573E0B62D9C1F9 /* YGNodeLayout.h */, 1C5225A85D60908066F79256FD961B24 /* YGNodeStyle.cpp */, 91C4877BD9BE873DF4DF6B5DCC0CC740 /* YGNodeStyle.h */, AB17B662459CE9B65E9A84AF92104DEF /* YGPixelGrid.cpp */, 14D9F600ECC14E962003AAB9F191233A /* YGPixelGrid.h */, E537D35052D701095C980ECF42D55AC4 /* YGValue.cpp */, 30DD3B64FEFD7A1AB8A1EC8B9D52D87F /* YGValue.h */, 4BA4FB0F0557FD723CB5B38C308FCE50 /* Yoga.h */, A0BBD39C71A2FDD8567B42D741ACC89C /* algorithm */, B4B40FE5744EE0430F1085186F5C39EE /* config */, C12F12E3B279B81398C6639DEECE0A6D /* debug */, F8229B1A04A686B9D6A8515E959D405C /* enums */, F8992DC800D868156F55D8C1A840B2EA /* event */, A07FF72E2E9957A32FBB94DD70C049AD /* node */, 90097354ADCBD8E8098AF8B37786ADA1 /* numeric */, 6FB5E78A1219A291FE853E265F906282 /* Pod */, 3261564B236FD10151DB427DF0FE4F25 /* style */, F8E0BC164A267E96DD24FE4A280E7765 /* Support Files */, ); name = Yoga; path = "../../../node_modules/react-native/ReactCommon/yoga"; sourceTree = ""; }; 223AE9EE0D318B68CA58A6D5E7A833FC /* React-rendererdebug */ = { isa = PBXGroup; children = ( DE0D3D7FDED11B0BBBDD597E67E6E5CD /* DebugStringConvertible.cpp */, 9B36F42640063CCA329D93AC8F874A56 /* DebugStringConvertible.h */, 1B95AB0EF143A97263C1017EABE0E073 /* DebugStringConvertibleItem.cpp */, 5E4D8475C8A1839D5568E707455D012D /* DebugStringConvertibleItem.h */, 77F3BA61BC36947AE25324E0B86A12E5 /* debugStringConvertibleUtils.h */, 94ED4B520996293EF041391736BBBA24 /* flags.h */, C7426F344668A4D9141914CE841C3534 /* SystraceSection.h */, 343725706DBD41ACEB61E1FAA40EF492 /* Pod */, AAF010A03BDC3903E9F6EE416F6DB539 /* Support Files */, ); name = "React-rendererdebug"; path = "../../../node_modules/react-native/ReactCommon/react/renderer/debug"; sourceTree = ""; }; 2303A255BD3099EB18229E7A20393511 /* Exported */ = { isa = PBXGroup; children = ( B2A78B7CA6B87E3C5B857F9EB9B7AF87 /* RCTDeprecation.h */, ); name = Exported; path = Exported; sourceTree = ""; }; 2351ACF698FB84D4D4492C2551003B4E /* renderer */ = { isa = PBXGroup; children = ( B11DA0315979959E0AB787938C67B80B /* graphics */, ); name = renderer; path = renderer; sourceTree = ""; }; 23C8C103E25BD58ADE6870DE657D9BA8 /* Support Files */ = { isa = PBXGroup; children = ( 012EABDBEA471F999B6DA0663BE3C7BC /* React-Core.modulemap */, 5D24035ED25B87D45E72A4CFB861C024 /* React-Core-dummy.m */, F03DB7552362CE2CC5261B0ECE866C50 /* React-Core-prefix.pch */, 3AD9E5C254F43B4A3AC4E7A6452D879C /* React-Core-umbrella.h */, FEB255691DB29610BDE1D3938C435B8C /* React-Core.debug.xcconfig */, D1A2CC54073AD525A26E9DC8CA1044F5 /* React-Core.release.xcconfig */, C04C2CB4CB7F9503B14959FFE4F63EC3 /* ResourceBundle-RCTI18nStrings-React-Core-Info.plist */, ); name = "Support Files"; path = "../../native/iosTest/Pods/Target Support Files/React-Core"; sourceTree = ""; }; 23EF42F33260F492F0E1CA6A966BC672 /* Views */ = { isa = PBXGroup; children = ( 5FB7F5153FEFAD2FCC98DA600D4A18B3 /* RCTActivityIndicatorView.h */, 18DA86D744EE0EE17E265BBB90390A23 /* RCTActivityIndicatorView.m */, 017AAA982C6D59AF8E6BE61915541DEC /* RCTActivityIndicatorViewManager.h */, 98CDD541D0DC28ECF520BEE664E58AEC /* RCTActivityIndicatorViewManager.m */, 42A97962C25A869DDED1914B699BD747 /* RCTAnimationType.h */, 26055A5589650C9F928DD1BFF922B86B /* RCTAutoInsetsProtocol.h */, E0246A845D54C7B635C77FFDE88894B9 /* RCTBorderCurve.h */, 7301D9F85906E2D5E3E899138ED1462A /* RCTBorderDrawing.h */, 35D8CF26BB70259E361BDEA1E77D32E1 /* RCTBorderDrawing.m */, 0D8FEE5EFC0D5C3452E4502887D2D780 /* RCTBorderStyle.h */, DCDAB8C1A8AF49504419868DFB5EE19B /* RCTComponent.h */, D7D198038E6A0A8EAA233D9E57B97AC6 /* RCTComponentData.h */, 49C8ED14DB40A8E3E597CC83FDA19B4B /* RCTComponentData.m */, 2B7BCA4D8FBC217D22B4EEB15EB03957 /* RCTConvert+CoreLocation.h */, 40578E9386680C689D002917E383C065 /* RCTConvert+CoreLocation.m */, 196B06D9D049A05D1552FD603A608719 /* RCTConvert+Transform.h */, 96C1ECDE3D239B5524C2DD16740B8B8C /* RCTConvert+Transform.m */, 492C01ACF6D4D924E6561FCD33DB914D /* RCTCursor.h */, AE3CEE292BC38DDDB735B092E8F32A0D /* RCTDebuggingOverlay.h */, 3FF99AA51CC63F9D02051442963EEB0E /* RCTDebuggingOverlay.m */, E8855C5F693E52309BAEA8C716104F71 /* RCTDebuggingOverlayManager.h */, 5FA7D9A20F443352B3F132A2348CEAF5 /* RCTDebuggingOverlayManager.m */, C4B995B84A38F911427A6A5E55661B60 /* RCTFont.h */, EDE4A26ED9B011F0E70494EBA45F89FE /* RCTFont.mm */, 506E11C60093C5C364DE8F3F2F22AC41 /* RCTLayout.h */, 0C4FC7D25DF3E8899A55391A2FBA5740 /* RCTLayout.m */, C55375F5233C369562ED2EB95C0B34D6 /* RCTModalHostView.h */, EC10C9531C237863B28A6E20B64DC15A /* RCTModalHostView.m */, C56554BC73CCF6D61610A28081393A2A /* RCTModalHostViewController.h */, 373F105CB4DEE4BDB90F46875B73BFA8 /* RCTModalHostViewController.m */, 6641C8CC47F08AA0D3136808CBCB811D /* RCTModalHostViewManager.h */, 4738F10785BD68311DE222F91337CB33 /* RCTModalHostViewManager.m */, 8203B91D615D3D818C75D20CC7EECACE /* RCTModalManager.h */, A9951E633F11568F42B8CA2DB0EAAE73 /* RCTModalManager.m */, 90049B8377428D5B7434F2C8680C87CF /* RCTPointerEvents.h */, 40070AAA8193578B4B19218FCBD1F506 /* RCTRootShadowView.h */, 8817E84E8D2A30EF3D7C5A9EFE82A593 /* RCTRootShadowView.m */, 3AD33F21CFF457D719E527B0A4413B4E /* RCTSegmentedControl.h */, 3CC7171C241F88DC2439CD6C9B3B9BDA /* RCTSegmentedControl.m */, AEF17D14D0B0DF8A55346CEFDBEA3396 /* RCTSegmentedControlManager.h */, C9D9E5911728E23B08C57B041A401477 /* RCTSegmentedControlManager.m */, 070773F376061291576F78B4FAA81792 /* RCTShadowView.h */, A0E2B3DDC742F701942096E520561398 /* RCTShadowView.m */, CF6A928C7A982274E5574B81E88B799B /* RCTShadowView+Internal.h */, A85C9B1C1144724CD503C69AEA9FCD8B /* RCTShadowView+Internal.m */, 500E0FB005F00271DB2A0C68724900DA /* RCTShadowView+Layout.h */, AA78032AF49201693A01E81C17C66EA3 /* RCTShadowView+Layout.m */, 4168B7BDC6AE9FC9B5C87C96C641EA8E /* RCTSwitch.h */, D9722AC2B3A09F57A4EF66060A291E1E /* RCTSwitch.m */, 39F844696BFB60487E053DE52768656B /* RCTSwitchManager.h */, E53A2DCCFA3939F1CADE98C7ADABB2F1 /* RCTSwitchManager.m */, C3701203D3AD5D881037196F72FD8BB7 /* RCTTextDecorationLineType.h */, 191255608BFC29BB27805F33B002132B /* RCTView.h */, A29983597DBADCA7A69A6EAE6BBED3C3 /* RCTView.m */, 5B47FFA4BCF0EC2E8F7A7330A0B625F7 /* RCTViewManager.h */, A294F9716939BAB7421C72EE8DE2D3C2 /* RCTViewManager.m */, 0EE4437365F516793455723C0F9555B1 /* RCTViewUtils.h */, ED025FBB53B0B481493FAFFAED14F5E6 /* RCTViewUtils.m */, DAB01DFE83E0C8658D41522C80D2366D /* RCTWrapperViewController.h */, 33C0BE36B9FBC218A7F9944F9E03ABC9 /* RCTWrapperViewController.m */, 15D5A0BFD941071680CCF747591837C8 /* UIView+Private.h */, 32680615BD888084B01D830F2196A3C7 /* UIView+React.h */, A5B22DA0749C539DAE387FAB7E1507FC /* UIView+React.m */, 50AA27881D34215F513B67E035DBFD23 /* RefreshControl */, FD407F481179C9D21976E957BE8A96A5 /* SafeAreaView */, 9FCD78A4E6ED7A67F3059F23B587845A /* ScrollView */, ); name = Views; path = React/Views; sourceTree = ""; }; 242C2C37DBF48E04AB5C45C85164E5C7 /* SafeAreaView */ = { isa = PBXGroup; children = ( 9A2407C78B8F357AFB081AF5B1BC953A /* RCTSafeAreaViewComponentView.h */, A46EE0867CB9E92996C6DE17ED0EE3DB /* RCTSafeAreaViewComponentView.mm */, ); name = SafeAreaView; path = SafeAreaView; sourceTree = ""; }; 247B3D691DCFB870C0BD2599C09375C8 /* Support Files */ = { isa = PBXGroup; children = ( 5601EFF66A7656BA9E668AE17351D360 /* React.debug.xcconfig */, 5883D7A51536D3FB292BBC1FEF7C6C1C /* React.release.xcconfig */, ); name = "Support Files"; path = "../../native/iosTest/Pods/Target Support Files/React"; sourceTree = ""; }; 248120CA5FD7E4114C4F0F62A60B7180 /* hermes-engine */ = { isa = PBXGroup; children = ( BE20CA3BB20E13CB19270700923F126B /* Pre-built */, 724B3DEDFA0F74B3AAB15146C6AE0F75 /* Support Files */, ); name = "hermes-engine"; path = "hermes-engine"; sourceTree = ""; }; 248E0857531D8880B34BAC0B82346D3D /* renderer */ = { isa = PBXGroup; children = ( 25B9384DBCA69E81785D43A83CE546C9 /* components */, ); name = renderer; path = renderer; sourceTree = ""; }; 24F8C12C803A74AF9E18BC10B85299DF /* Support Files */ = { isa = PBXGroup; children = ( 1363975620BCD9B8C433172AE2F17F0F /* React-hermes-dummy.m */, 77B6947FB86A59093DFA118F372E24B2 /* React-hermes-prefix.pch */, A73C90F6C769770D58136250FCF48CCC /* React-hermes.debug.xcconfig */, 846735472D63BEB4DB75ECD903ECD756 /* React-hermes.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-hermes"; sourceTree = ""; }; 25B9384DBCA69E81785D43A83CE546C9 /* components */ = { isa = PBXGroup; children = ( 58BE57C789F8C8396E4F9C36CEA1E3B1 /* view */, ); name = components; path = components; sourceTree = ""; }; 26F1C44700390E55DAC55AF9754E220A /* React-Core */ = { isa = PBXGroup; children = ( 2633DC101FF0E08FE241777B60154AEF /* ar.lproj */, 8CD6649A7EC8CDD2CF31FCF0EBBD4501 /* cs.lproj */, 825AFF4407B94619036B3195D86313D2 /* da.lproj */, B97F33E9BF0E6E5FD86B0667D950EEC9 /* de.lproj */, 0F403305468DF1F3BDD4EB48076E71DC /* el.lproj */, 5931C556E2652C0F4090A1106D4FEAD0 /* en.lproj */, 66808C29ABD639B3D916CDB9C1A33496 /* en-GB.lproj */, 70D50FBA71B5522FC8324C5638AAABC4 /* es.lproj */, 95FE5AE8E711BF2C04047FE31AFA930A /* es-ES.lproj */, A71AF6D224DB5B45B4A632DC900459A4 /* fi.lproj */, 61074D38D23CB60AF7788D75C0DEFE73 /* fr.lproj */, 46E1F838DD66034E7F76591680E8F0F6 /* he.lproj */, 84C78B3BD305937A8FB7F156B1068561 /* hi.lproj */, 91392F3C2B6C40DD319492604906C7B0 /* hr.lproj */, 411B0CC2295DAA5FACED75F6D4BA67ED /* hu.lproj */, DE0FDA05FBBF20ED1DD8039C9EF483D2 /* id.lproj */, FB5D34754AD28372AC075C4836BC9BDD /* it.lproj */, ED0D60F3F216448664954D0D5A35FECE /* ja.lproj */, AD18C7CE1E7A5577FEB2D0F7000A7E5F /* ko.lproj */, E606EFA2C4D098DAEBD8DFD0734E2535 /* ms.lproj */, 558ED3C1B5F36FE5842EBF04C4FC985C /* nb.lproj */, A3A1C115325E8DCA58106218ADDBA397 /* nl.lproj */, E7807D90980DF5E58292BD819D067CCC /* pl.lproj */, 80F9DAC31E738BCDB2481B8D0EFF7D4D /* pt.lproj */, 65814B713B9CD521A09E7AF980ECF508 /* pt-PT.lproj */, 75003887015004482CFDA84D733744C1 /* ro.lproj */, FA397527B29CC2470176B423C005BEE9 /* ru.lproj */, 72F4E61BD474BE602AFFC71C43FD918B /* sk.lproj */, 91CE745FCDC2F917FBFE8E7C44B21638 /* sv.lproj */, D23D4785660627F3CD0959228AD79333 /* th.lproj */, ADB0726235787BE84DE49AC4624711EA /* tr.lproj */, AD09CCE53769CA1F7BC1031AEBE1E2CE /* uk.lproj */, 5744FF8972259231F82207B5D2C1B114 /* vi.lproj */, A8FBD27727A3838365F69F39FCE1378C /* zh-Hans.lproj */, 8B0995DAA2C152F8B2BBE8B2BD71EB56 /* zh-Hant.lproj */, 6F72B3F616F35DD1A397AD34A9471C80 /* zh-Hant-HK.lproj */, F04C97A51C7A3AE18D87F7881C39DC76 /* zu.lproj */, 6CAF12F826A453EF88B2F103280D6381 /* CoreModulesHeaders */, 64518A8E0CF4473016570A6879346C64 /* Default */, 4AE2119A369C0BB17CA29AD269CB3D64 /* DevSupport */, 4DF42A7CD74B7436D63FF2AD52C1F94D /* Pod */, CDF374E5D2600436F59137E53DD04D31 /* RCTAnimationHeaders */, D80B2E04C127C418884E728E8A977978 /* RCTBlobHeaders */, 79E785223D174035A153EE0695AF76AE /* RCTImageHeaders */, 08063C19264EDBC412CBC2513BC4077D /* RCTLinkingHeaders */, 59347770634A6137053C514350BED8BC /* RCTNetworkHeaders */, 93D7502F904C05AAAA56B79ADBFD98ED /* RCTSettingsHeaders */, BBA1DA7B3C252A6F03099451D25F6163 /* RCTTextHeaders */, 79C6C4E31B41E8EA50D9951530679E7E /* RCTVibrationHeaders */, 6CA7A5B3A37A3BD4C4189F7FB0462212 /* RCTWebSocket */, 23C8C103E25BD58ADE6870DE657D9BA8 /* Support Files */, ); name = "React-Core"; path = "../../../node_modules/react-native"; sourceTree = ""; }; 278FF3C375817348A07F1B5488D1F7FF /* React-jsinspector */ = { isa = PBXGroup; children = ( 8231A4F6131F749AEA92BF670465B6DD /* ExecutionContext.cpp */, F9FB962222C7D13D456DA7490A882D10 /* ExecutionContext.h */, 90CE57248719DB1AD38AECFB8A66AF11 /* ExecutionContextManager.cpp */, 5660D2686BFA4493932307298F162071 /* ExecutionContextManager.h */, 9849504D06A58E365E3512F08D8AD6DF /* FallbackRuntimeAgentDelegate.cpp */, 488ADD85E24689EBD7862B0D4E7CA547 /* FallbackRuntimeAgentDelegate.h */, 4BB7FF49C6C69146DEE4B499147BB9B0 /* InspectorFlags.cpp */, 704C76032CCE295710F90FEE18E4B95F /* InspectorFlags.h */, 35645CAF1F9339B964422D6014D3FB62 /* InspectorInterfaces.cpp */, ABA56E2973B5F2DA40756B56701FEC9D /* InspectorInterfaces.h */, F3070DCC47CC323B0236AAA591CC207A /* InspectorPackagerConnection.cpp */, E40225EFF83BFF372E2ACB0DEB6152DB /* InspectorPackagerConnection.h */, B02F47D538066B1D13C474E20A59039A /* InspectorPackagerConnectionImpl.h */, 97537A67023F6E33A60145FD2CCD320F /* InspectorUtilities.cpp */, 434BDC67E1145AE964DB9AA3C0D4F3AE /* InspectorUtilities.h */, 102110A5E77C7808CB1EAFF9A4489E0B /* InstanceAgent.cpp */, 766F8957B06DFCFCD48D2426262EFF74 /* InstanceAgent.h */, E6FD88D73CEF39AD0A723267614B20B6 /* InstanceTarget.cpp */, 4BAC8D0807F88C47E4DFD9F7C7859B82 /* InstanceTarget.h */, AF18A646E6EA4CC7C73600700D4BDAF3 /* PageAgent.cpp */, ADF560A03C559A77C9107C87619CB4E7 /* PageAgent.h */, DE6CB0254166C64BB61D724834E284BA /* PageTarget.cpp */, E7ADD63BE36BD61FB54992AEEC51FACC /* PageTarget.h */, FE123FC7D80F16C162FBB579CF5DBD81 /* Parsing.cpp */, DC79C41D3256C56029659B9591017FCF /* Parsing.h */, 6CEDDCFAB391081A6C3EB050DB9303AF /* ReactCdp.h */, 75527CABA73184F431A0FFA3918A6D5B /* RuntimeAgent.cpp */, 45E05ACB5D6C411D85AD9B6A40C2DD2E /* RuntimeAgent.h */, F4D03D4133A485BCCB2117CF4DDE2ED6 /* RuntimeAgentDelegate.h */, 40E5A309579F3C1A9D1F5C45ED9FFA0F /* RuntimeTarget.cpp */, DBD26F4D9278DAF3DEA356BE83D84C2B /* RuntimeTarget.h */, 9B40A55CAE96B9EC2411B625D3F58ABD /* ScopedExecutor.h */, F4FDC94B0FAFD47D454687DEABE33319 /* SessionState.h */, 2A474E2B602BF03DC7153DA54029EFCD /* UniqueMonostate.h */, 963CB6F0F1E28EA98A2EED61461AC386 /* WeakList.h */, 6D3D07411F82B089A181E94AD1F54DF7 /* WebSocketInterfaces.h */, 4C8E26DD5A220182F8DADC9AA1EBBCC9 /* Pod */, ED9447BEE8DFF868BCF24CC0D1B5B302 /* Support Files */, ); name = "React-jsinspector"; path = "../../../node_modules/react-native/ReactCommon/jsinspector-modern"; sourceTree = ""; }; 27B37E6E4590A097086761DD10791464 /* React */ = { isa = PBXGroup; children = ( 88F775F3830FCCD985633F79D022F25B /* Pod */, 247B3D691DCFB870C0BD2599C09375C8 /* Support Files */, ); name = React; path = "../../../node_modules/react-native"; sourceTree = ""; }; 2870CF1C2308D80731D8890A76D25817 /* Utils */ = { isa = PBXGroup; children = ( 96F9A50575BD572DC92EEFE7118DE559 /* PlatformRunLoopObserver.h */, 6075D4D4439E8587250CA17C18029EFE /* PlatformRunLoopObserver.mm */, EEB4D9ABDCA5AC8FCD10C726DD32E01C /* RCTGenericDelegateSplitter.h */, 48C37A67E9B9AEBECBFDBF2939F0F488 /* RCTGenericDelegateSplitter.mm */, AD69277D74C06C01F9C13CD77A13038E /* RCTIdentifierPool.h */, 50E197DCEAC19B139D61338F626D0ECE /* RCTReactTaggedView.h */, C1C38809AFDAD38F285E4E8EF2CAC4E6 /* RCTReactTaggedView.mm */, ); name = Utils; path = Fabric/Utils; sourceTree = ""; }; 28763FCA9414FF721C7399FFAEF0EB3F /* Pod */ = { isa = PBXGroup; children = ( 189A7A88790E4B177BFC5728470F1A12 /* React-RCTText.podspec */, ); name = Pod; sourceTree = ""; }; 28B32097553A4D29F0613AE45FD6F381 /* VirtualText */ = { isa = PBXGroup; children = ( E0B0A85C6C1A686DD387938C318B3E03 /* RCTVirtualTextShadowView.h */, 447C966873650F5BE0F53C20B5B181AD /* RCTVirtualTextView.h */, C37722D87F8B49DE9B83ACFE1C0A286A /* RCTVirtualTextViewManager.h */, ); name = VirtualText; path = Libraries/Text/VirtualText; sourceTree = ""; }; 2A6D3BA3FB491018316327CC752B4B51 /* FMDB */ = { isa = PBXGroup; children = ( BEC512EF35E614CECC60A855831857E0 /* src */, ); name = FMDB; path = FMDB; sourceTree = ""; }; 2BAC0805E5BEF3B1325B53C8584C41FE /* Pod */ = { isa = PBXGroup; children = ( 2AEA71EA50563CCA7CAD2D0EA99BC4C3 /* React-RuntimeHermes.podspec */, ); name = Pod; sourceTree = ""; }; 2E393EBD7601FECABA80E94DF2D8935A /* DevSupport */ = { isa = PBXGroup; children = ( 25984569AD3852F629F09301282C7769 /* RCTDevLoadingViewProtocol.h */, 166D6C41B0081CEA737676E813606B04 /* RCTDevLoadingViewSetEnabled.h */, 4EEB093EC638788E1D7EDFEC04D19432 /* RCTDevLoadingViewSetEnabled.m */, CF9F9BDD710866E3AB298A535A581739 /* RCTInspectorDevServerHelper.h */, 492BFB87D3FC79B8A5E5053209507E96 /* RCTInspectorDevServerHelper.mm */, D325DB74A674890FFA71EB148DA83A39 /* RCTPackagerClient.h */, 5E9F375741E65415151EE9093DC1535E /* RCTPackagerClient.m */, FC938492EE25EDBA884D42C17EE1E89B /* RCTPackagerConnection.h */, 03AD611B7986C5B131631A16A6DD5262 /* RCTPackagerConnection.mm */, ); name = DevSupport; path = React/DevSupport; sourceTree = ""; }; 2E832F8BE4BE501B7593972F10AC5390 /* Support Files */ = { isa = PBXGroup; children = ( 17A0B50A888B86A9F608EBDAB0EA9B29 /* React-callinvoker.debug.xcconfig */, EC7EC957168B2840A6783186671E89DB /* React-callinvoker.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-callinvoker"; sourceTree = ""; }; 2F777C58C39334C896E57A642E72C935 /* Pod */ = { isa = PBXGroup; children = ( B70C6129736E666B55CAAA7398C8E6CF /* React-RCTAnimation.podspec */, ); name = Pod; sourceTree = ""; }; 3129A0ADE4B97DD3998639F514893B94 /* root */ = { isa = PBXGroup; children = ( 19CE4DC4612BEAACFA7B4D6EA7464CC4 /* RootComponentDescriptor.h */, AD77E6961ACDBD3730EC6702236118AC /* RootProps.cpp */, 13E6AE2DFCC178D3B20D130A2FA35FAC /* RootProps.h */, 5607E93C1618AA4B1B9A7B366EA9EB0F /* RootShadowNode.cpp */, 489E69C87D3FBB7418B3000B710B6899 /* RootShadowNode.h */, ); name = root; sourceTree = ""; }; 3261564B236FD10151DB427DF0FE4F25 /* style */ = { isa = PBXGroup; children = ( E8CB40AE7BA0C7EB4EDD1532C9B8FAE8 /* SmallValueBuffer.h */, 5545A49E67978F2CEF8C77F63D7368FF /* Style.h */, C1761C0EF012288CCBB296F26485316A /* StyleLength.h */, B9F029DADA46B18ADF047508F6813174 /* StyleValueHandle.h */, 8F35EF9396775F51CA6146B0C7D16351 /* StyleValuePool.h */, ); name = style; path = yoga/style; sourceTree = ""; }; 330759EDD479CCC913161F05B0849526 /* RCTTypeSafety */ = { isa = PBXGroup; children = ( 819B22FC019823E75AE6A15AF791911F /* RCTConvertHelpers.h */, 82552A36AF98B4CFE12CF35D745DFEBA /* RCTConvertHelpers.mm */, 0741545417754F6F394479EDADE0B5F6 /* RCTTypedModuleConstants.h */, 4E54C446AD8887C61105DE1F1011BC2F /* RCTTypedModuleConstants.mm */, 37591062ABE85440F02AAD222779CE94 /* Pod */, FB232A0FE04B688B88B0BD685A108283 /* Support Files */, ); name = RCTTypeSafety; path = "../../../node_modules/react-native/Libraries/TypeSafety"; sourceTree = ""; }; 335F15F96FB0EFA61B990DBD29902F91 /* react */ = { isa = PBXGroup; children = ( 248E0857531D8880B34BAC0B82346D3D /* renderer */, ); name = react; path = react; sourceTree = ""; }; 340139964ADFE59B05FAC656AF821E52 /* fmdb */ = { isa = PBXGroup; children = ( DFA6EA2550443AA8D5C90B1C550AD342 /* FMDatabase.h */, C8E070E3387DCB006D125024D0D086B2 /* FMDatabase.m */, 6F9A9F41C8712A5EA89926F9E34BB317 /* FMDatabaseAdditions.h */, A511E79FFB4293C0F4E1849EB6DAA5E9 /* FMDatabaseAdditions.m */, FFA2A883F42A90CB3B4B86BA995A7239 /* FMDatabasePool.h */, 42E6807903C30860853913241D16DBE5 /* FMDatabasePool.m */, 40B78C2265ACE3B8ACB7A504F9CFA4DE /* FMDatabaseQueue.h */, A45E1BB2ACE5150BEF6C4801CE86896C /* FMDatabaseQueue.m */, D2E4E35B35014E917353983248FC5B53 /* FMDB.h */, 6189337A90AFF99D9CD0BDCCA472E2B3 /* FMResultSet.h */, B17C5DF58EBCAD0079663296EFB0D99F /* FMResultSet.m */, ); name = fmdb; path = fmdb; sourceTree = ""; }; 340E82E2438D743D828946C5B70EFC33 /* RawText */ = { isa = PBXGroup; children = ( 586843BE182EC40BA0F3E64B3128724F /* RCTRawTextShadowView.mm */, 63646CDACE649B0945C14C4A4A8DB7A3 /* RCTRawTextViewManager.mm */, ); name = RawText; path = RawText; sourceTree = ""; }; 343725706DBD41ACEB61E1FAA40EF492 /* Pod */ = { isa = PBXGroup; children = ( 3C3877360CD1523AEBF6A0B3BECBB8D6 /* React-rendererdebug.podspec */, ); name = Pod; sourceTree = ""; }; 37591062ABE85440F02AAD222779CE94 /* Pod */ = { isa = PBXGroup; children = ( B10A2905CFE3A22DA9F68FED8B2A937E /* RCTTypeSafety.podspec */, ); name = Pod; sourceTree = ""; }; 39C50CAF7E26A860DBFABBAA3126DF9F /* DebuggingOverlay */ = { isa = PBXGroup; children = ( 6FA175D69859A3FE955C27E8F8107960 /* RCTDebuggingOverlayComponentView.h */, D24AD310EE0E5FC9562D150864F26033 /* RCTDebuggingOverlayComponentView.mm */, ); name = DebuggingOverlay; path = DebuggingOverlay; sourceTree = ""; }; 3A89BBF10BF4CF5D3C418A38D668F587 /* FBReactNativeSpec */ = { isa = PBXGroup; children = ( 67659C3BADBA7BF553069160A417E2A0 /* FBReactNativeSpec.h */, 2D50029B232140A61A9034E9BCCA51BB /* FBReactNativeSpec-generated.mm */, ); name = FBReactNativeSpec; path = FBReactNativeSpec; sourceTree = ""; }; 3B358CA7D370359AADC1873E8C9F0BA1 /* React-RuntimeApple */ = { isa = PBXGroup; children = ( F275B31E7A8AAE45DABF741983B8C743 /* ObjCTimerRegistry.h */, B6B15808FE6325BFE9D87ECA96CA3A11 /* ObjCTimerRegistry.mm */, F8DEF690935571E2BA15F11F274EE883 /* RCTContextContainerHandling.h */, 0FB451B2BE52BDDEC46C0D989282A4A7 /* RCTHermesInstance.h */, 32854BF47BB04F74CF858BD8BDE66C35 /* RCTHermesInstance.mm */, ED3AFC07867C7C0F7FA6437AB25AB2C0 /* RCTHost.h */, 74F0A4078D35270995DBAA54BA83A8B7 /* RCTHost.mm */, BA9901F19F900300AC2E7122D5AC01A6 /* RCTHost+Internal.h */, 16F3181ABDCFFB13D360DA6C3047FC89 /* RCTInstance.h */, EADE36F3457E268442D18E096152CF53 /* RCTInstance.mm */, 99706928F57B54531F9949E340BFECB8 /* RCTJSThreadManager.h */, DB54433DB90DCA8B444031497CC05E80 /* RCTJSThreadManager.mm */, 04160B32874923084312A1D40F4703C3 /* RCTLegacyUIManagerConstantsProvider.h */, 0575009F97CFBDB1867FBAA80648479B /* RCTLegacyUIManagerConstantsProvider.mm */, BC22B5A34F36A3E0B23AF08AE83EE25D /* RCTPerformanceLoggerUtils.h */, 9BC40B6E05AAAA8B1786166F41BD0EBF /* RCTPerformanceLoggerUtils.mm */, C51C39BEFC7949604ADA6AC55E5398EC /* Pod */, B25136050555256BFCFC476D4F2E42A5 /* Support Files */, ); name = "React-RuntimeApple"; path = "../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios"; sourceTree = ""; }; 3B6463C7A136A650C4C0140180398E03 /* Modal */ = { isa = PBXGroup; children = ( 34A2168F62C5C8BB1DEEA7D485022A12 /* RCTFabricModalHostViewController.h */, DB2D4AA87F51B33CB9A6EC8B96ED1D23 /* RCTFabricModalHostViewController.mm */, 53C4B697D1793E966C34C78BD44F6D02 /* RCTModalHostViewComponentView.h */, E08FAB111E604490074792C7CFAC9084 /* RCTModalHostViewComponentView.mm */, ); name = Modal; path = Modal; sourceTree = ""; }; 3BCBFC56764D4C25F88064F72398AA93 /* React-hermes */ = { isa = PBXGroup; children = ( AA829DB19589EE114FF17962F6831B2A /* executor */, B4F2C154142416109FA78F907E5B3547 /* inspector-modern */, DC8EACDE4AF3CC4AF53714C50C9E43B9 /* Pod */, 24F8C12C803A74AF9E18BC10B85299DF /* Support Files */, ); name = "React-hermes"; path = "../../../node_modules/react-native/ReactCommon/hermes"; sourceTree = ""; }; 3C7349976EA80B1057745E6654F5AB2A /* React-runtimeexecutor */ = { isa = PBXGroup; children = ( A75D554108476D6BB8046C09E3577B9C /* RuntimeExecutor.h */, A4517A17CC86213678856402DD6CC7BC /* Pod */, 684A99A16D90DD769294066B2A21E529 /* Support Files */, ); name = "React-runtimeexecutor"; path = "../../../node_modules/react-native/ReactCommon/runtimeexecutor"; sourceTree = ""; }; 3C90C21DA311CB0108B3C31BBC36383B /* Root */ = { isa = PBXGroup; children = ( A0DF3FB6417DB1CED9E5F8CF270DC9F6 /* RCTRootComponentView.h */, 906802F5C01093C45F849B1189752669 /* RCTRootComponentView.mm */, ); name = Root; path = Root; sourceTree = ""; }; 3CF4D8EF547899AF801588608FF767B4 /* WatermelonDB */ = { isa = PBXGroup; children = ( ABE19B1F318E966A4F2624B095AC06CA /* ios */, C5E0AD954B2C8CBF163BFEA23778781C /* Pod */, C5534E19718C643BAE8858AE6BB0FE84 /* shared */, FA71C039003B0E9153109D272FAAA931 /* Support Files */, ); name = WatermelonDB; path = ../../..; sourceTree = ""; }; 3DC2CFD8AB13FB472599D9AEE2CCDCBE /* glog */ = { isa = PBXGroup; children = ( BCA4B995FCA633E532EC78345A862CC7 /* demangle.cc */, F08460D67FAF18E84D6207E257538D64 /* log_severity.h */, B07F73246764E395281393D1BFD73751 /* logging.cc */, 02AB5D40CC6820F70D656AA73BEA1C64 /* logging.h */, EF33D80102A84702AA2E2212D875E506 /* raw_logging.cc */, B797800645D9DCAD28A63367CF4B5E31 /* raw_logging.h */, 7706A182348778EF9482CF0A0A02DC41 /* signalhandler.cc */, B222607BD79B79EA46BBA68F606016E7 /* stl_logging.h */, 7A230B7C6D6ECDDCB14F95021BE6FDEB /* symbolize.cc */, AA3A3C340B0E34E2DE91A75386812EC9 /* utilities.cc */, AF297E87957501039602459E49565C20 /* vlog_is_on.cc */, FCFD99083FD714E25C32912BE07EEE2F /* vlog_is_on.h */, 66248CFBB63ACD60DC5ECBA522E1FCB0 /* Support Files */, ); name = glog; path = glog; sourceTree = ""; }; 3F5A3B98DAA657AE2E2B92F3DD5EF966 /* Singleline */ = { isa = PBXGroup; children = ( 609281012AE698DC460A40129D138A06 /* RCTSinglelineTextInputView.h */, 70FD25025D88D2C467D14135D309D155 /* RCTSinglelineTextInputViewManager.h */, B8426E288C9F4E8EADBFDB047F2B7941 /* RCTUITextField.h */, ); name = Singleline; path = Singleline; sourceTree = ""; }; 405D2A29856880C542E96FFF01AB4D38 /* Support Files */ = { isa = PBXGroup; children = ( 69377A3F74E51E3872AC1F550123E373 /* React-RCTActionSheet.debug.xcconfig */, 33AFE6C6C66107B924778D5E609CBE54 /* React-RCTActionSheet.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTActionSheet"; sourceTree = ""; }; 411AD2DEE636250CEA28E7CD2D46AF64 /* Text */ = { isa = PBXGroup; children = ( DAFF833F6075C65A5629CFE2099DA2DE /* NSTextStorage+FontScaling.m */, FB2A143E4389164E0F2CCDB7122BD9F1 /* RCTDynamicTypeRamp.mm */, 0A05EEA6DE2EF6E728D7085041633AFA /* RCTTextShadowView.mm */, 394174FFAD60F61AE02F3A5C011D30BC /* RCTTextView.mm */, FE4DF00236D3CFC9333AC4F2536AD07C /* RCTTextViewManager.mm */, ); name = Text; path = Text; sourceTree = ""; }; 41853CCBEA5A920B81E37C320F0F8879 /* Support Files */ = { isa = PBXGroup; children = ( CBB1209D9BF3AC7A5E77178DCA9C126A /* React-perflogger-dummy.m */, 5366D59A6C60853DE6216206318AD290 /* React-perflogger-prefix.pch */, A0C9633F0AEEFB533D94C4D5B1D9CFDE /* React-perflogger.debug.xcconfig */, 325477957D7D1B6F9F9C72D859C2E8BE /* React-perflogger.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-perflogger"; sourceTree = ""; }; 4199B976A5C419A1F04918D0722A7C49 /* Support Files */ = { isa = PBXGroup; children = ( 51FCC6E2D2922D4288A83D114839FF83 /* React-CoreModules-dummy.m */, 615E52518F5B3DD85052695A2414331A /* React-CoreModules-prefix.pch */, 2E12202A59E36B86AFC6D2CB7CC7B1A2 /* React-CoreModules.debug.xcconfig */, 58C1E8B779C42177C4AE37F87FA08B90 /* React-CoreModules.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-CoreModules"; sourceTree = ""; }; 428E61796EE85ED2EFE00325BFA5B4BD /* turbomodule */ = { isa = PBXGroup; children = ( 1A90064350D1AA1771D19FCF9770AC84 /* bridging */, 6E7AFD21AE89FB328A42BE75A736DBEE /* core */, ); name = turbomodule; sourceTree = ""; }; 42D7DF2047B869A8F3D547A8C6816953 /* Support Files */ = { isa = PBXGroup; children = ( 0C6723FFC2422C5B1BE0FFFF1B17CC36 /* RCT-Folly.modulemap */, 729855E0C41B82077DDA2290F0B0BCBD /* RCT-Folly-dummy.m */, 97BEF627FC626AA3E7E8CA75193664A3 /* RCT-Folly-prefix.pch */, 315FDA4F573874F2BD0A7F57C70AF3E1 /* RCT-Folly-umbrella.h */, 2E89F76541853DEFE4E1B570E724F503 /* RCT-Folly.debug.xcconfig */, AB3065BC1723E238FF985D2A37F0A542 /* RCT-Folly.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/RCT-Folly"; sourceTree = ""; }; 44743D4355D456613604BEB051E106B2 /* Support Files */ = { isa = PBXGroup; children = ( EBF0BD1DADF4AA41730BF0DC7AF614AC /* RCTDeprecation.modulemap */, 3FB252110B7F6302C421C46ADF22A0BD /* RCTDeprecation-dummy.m */, 74634074E7E5AADD54F61ACB94B63759 /* RCTDeprecation-prefix.pch */, 1147DF7D7F05EA4A85F3A1FF854A3B85 /* RCTDeprecation-umbrella.h */, DECEAEDC186B345BDAAD789EDD05B9FD /* RCTDeprecation.debug.xcconfig */, 07AE3DB6F5EB2B92FE81A1B8A4CE6BE8 /* RCTDeprecation.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../native/iosTest/Pods/Target Support Files/RCTDeprecation"; sourceTree = ""; }; 46AB12B78F8981DAECDCA361493F2B5C /* Pod */ = { isa = PBXGroup; children = ( 6D899FAEC06F009C28975CC142A41EC9 /* React-RuntimeCore.podspec */, ); name = Pod; sourceTree = ""; }; 46BCFE61D7356DAFCE7CBB3B5D38D192 /* React-NativeModulesApple */ = { isa = PBXGroup; children = ( DBF242B856D15CC59A314DC9A8B2701B /* RCTInteropTurboModule.h */, A4841C02742AC28A86287DBC07806A0E /* RCTInteropTurboModule.mm */, 3A75958C7177C6CC36B895D30E732E64 /* RCTRuntimeExecutor.h */, 8E11E2044A1B7194DE5069CCBE8DD5AF /* RCTRuntimeExecutor.mm */, 631FE1EE541BDAE0AFB75102923ACDCC /* RCTTurboModule.h */, 41D562BB5F84842F8DF9293C3DEB309C /* RCTTurboModule.mm */, 41CA6E5A23C938EF530325403BEB5ABB /* RCTTurboModuleManager.h */, 446FE57F2A972700F005CD2CC41F8710 /* RCTTurboModuleManager.mm */, A43ADC5C0EF00658ABBB46CD0A26DCD9 /* Pod */, 07FB6EB17C1139D744295711E31ED459 /* Support Files */, ); name = "React-NativeModulesApple"; path = "../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"; sourceTree = ""; }; 46E47A464150996BC8699D5B01DCF096 /* textinput */ = { isa = PBXGroup; children = ( 0F5B11863A62393419B2A19ECDD56569 /* conversions.h */, A4EB08646CC21410C4622CEE62B7DC51 /* primitives.h */, D8FE00B7A123C71C5F84EA661B962CBE /* propsConversions.h */, 63CBEBB4485380F9D7F6FBA437DF4E46 /* TextInputComponentDescriptor.h */, 71B4D481359E1DC4C88FF4956C3F95BC /* TextInputEventEmitter.cpp */, B00F5D1C6554CAE9A8E6D6AE4ECFE335 /* TextInputEventEmitter.h */, 7C461F175EB336FD8750A4B7A86919F1 /* TextInputProps.cpp */, A5419C82AB201A4405D35E3F97C867FB /* TextInputProps.h */, F468DC980FF349730A91EAB27AA80749 /* TextInputShadowNode.cpp */, E5E136EE3CB9AD65C230069245AFE89E /* TextInputShadowNode.h */, A6A3F0A2B90931BC1EC1C3E21381C797 /* TextInputState.cpp */, 9DF1753017BD4FC4A6370681CBE48C79 /* TextInputState.h */, ); name = textinput; sourceTree = ""; }; 48538C2EC79AB2B8D68E01A0404F681C /* Pod */ = { isa = PBXGroup; children = ( 54B9E0DF52755792E0D7A095A1592309 /* React-RCTBlob.podspec */, ); name = Pod; sourceTree = ""; }; 4883BEA3F82503FF01DCDA5AE443E6DD /* simdjson */ = { isa = PBXGroup; children = ( A5E92316DAA53D54019FF1D5E3697030 /* simdjson.cpp */, A97083B6B19B7182A30872D4EBFEBE41 /* simdjson.h */, D72407561996DAEEB789275205FC335D /* Pod */, 8DC739FB8D8429D8E041D0BC40645906 /* Support Files */, ); name = simdjson; path = "../../../node_modules/@nozbe/simdjson"; sourceTree = ""; }; 489760B7755233A63757DE6C008D9DF1 /* RCTRequired */ = { isa = PBXGroup; children = ( D9F8A226925F0E4037D08493438FE44D /* RCTRequired.h */, B4F53C80BB006D69F1048DEA8ECF9441 /* Pod */, 7E346AB60CB1FC2D6B701E705FA393DF /* Support Files */, ); name = RCTRequired; path = "../../../node_modules/react-native/Libraries/Required"; sourceTree = ""; }; 4938E202647DB9A33EF0A661516C90B1 /* view */ = { isa = PBXGroup; children = ( 92427655A24DF879C52D7AA18EBFF83E /* AccessibilityPrimitives.h */, 28FF824B4005CDF78CA3A774CFD2549B /* AccessibilityProps.cpp */, EC88B7FD82BE95C8547982311739D454 /* AccessibilityProps.h */, D74ED33694328372E1EA1BA3F0EDD255 /* accessibilityPropsConversions.h */, BCA65CA4802405E6B52F20951F6A6E74 /* BaseTouch.cpp */, 86DFAB05E161B696DFC1057DB247CBE3 /* BaseTouch.h */, A04DC956EC28B16DDE9F446048074A0D /* BaseViewEventEmitter.cpp */, FD851DC7951B65E103BB27B6706B8EE3 /* BaseViewEventEmitter.h */, 31E12D3E887518AC0490584345788F27 /* BaseViewProps.cpp */, 19006C0042936BC7BC14B717FB85308A /* BaseViewProps.h */, 5C6AF51B4A4EA15B2F122DBA7BA5B2A0 /* ConcreteViewShadowNode.h */, 1528B7D498ED533635A7109CF11814AC /* conversions.h */, 4997893AEC6DB585E2DB2AC06E6557FD /* PointerEvent.cpp */, 1FBF294CE17585A6CEAE66F34026AA0C /* PointerEvent.h */, 3D7F16F5E30C11527357DD52C8CB2954 /* primitives.h */, F83C31C20E032D387D9A04D68DAC8265 /* propsConversions.h */, B711337B1DBE8FDF8CF854026E0D14C1 /* Touch.h */, EB8033D6D308790A5A46B3BC15DD1BED /* TouchEvent.cpp */, 611398E0E68366F20ADC93BC5D04C7B0 /* TouchEvent.h */, 98BB183E94BA72BD56983DB14089B952 /* TouchEventEmitter.cpp */, 359747BC6AC4881D3081F8B6AA532321 /* TouchEventEmitter.h */, F03D40C105C0F07D9C18AE34F3B494A0 /* ViewComponentDescriptor.h */, E55A5082F7AD7430141AC089256155B4 /* ViewEventEmitter.h */, A21CEC9ACA2547F2173B743914CC6A16 /* ViewProps.h */, 1DEAC3AED56C9C3D215091D714CEC25C /* ViewPropsInterpolation.h */, 9146BC2894F3FC7F11EDB10CB1B6B9B3 /* ViewShadowNode.cpp */, 318D26E55C7F26B32EFB91A5243FBAF8 /* ViewShadowNode.h */, 652305363535478E0661CB82413687EB /* YogaLayoutableShadowNode.cpp */, DA3B2DE0E7759775141A6DD8F1ACA6DE /* YogaLayoutableShadowNode.h */, 9C99F752EEC9741F33EED362076074BF /* YogaStylableProps.cpp */, 27F831318E526AEB0F7F8A65C1891EC5 /* YogaStylableProps.h */, 1004681C3BDF8E5CFC5D030CE39D0CA7 /* platform */, ); name = view; sourceTree = ""; }; 4A43E51CD514F13C00201889AD651875 /* Support Files */ = { isa = PBXGroup; children = ( 003FB8B8AF1CBB8E2E7A70E7564183A5 /* React-cxxreact-dummy.m */, 7E7B0E688C2DE7016DCA160FE81176F4 /* React-cxxreact-prefix.pch */, 50CCFCC93BE3FD24C09BEB499BEACA7B /* React-cxxreact.debug.xcconfig */, 292CA568BD4ABB3A490EAADD2CA64FB7 /* React-cxxreact.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-cxxreact"; sourceTree = ""; }; 4A46F00ADE41243FF50380AFC2AD40BC /* Drivers */ = { isa = PBXGroup; children = ( 109F9C2934C9D047C914A988E8DFBBA6 /* RCTAnimationDriver.h */, A956484ABC9353D13F5C213DFF6F76A7 /* RCTDecayAnimation.h */, CF04A0BE220BED59F7AEB367A64FB457 /* RCTEventAnimation.h */, 33FBAF4A2C505DEA7624E5FE6146C7CB /* RCTFrameAnimation.h */, 9113D58420F951D0F8E7D507C99E9190 /* RCTSpringAnimation.h */, ); name = Drivers; path = Libraries/NativeAnimation/Drivers; sourceTree = ""; }; 4A72E17EC61A8CF846383874B37BEF14 /* Pod */ = { isa = PBXGroup; children = ( 026CCB0609AA0FC063D3220DE6C274D7 /* React-featureflags.podspec */, ); name = Pod; sourceTree = ""; }; 4AE2119A369C0BB17CA29AD269CB3D64 /* DevSupport */ = { isa = PBXGroup; children = ( 2E393EBD7601FECABA80E94DF2D8935A /* DevSupport */, 50938A0B44C0ACC4CD43F21867DDB78D /* Inspector */, ); name = DevSupport; sourceTree = ""; }; 4AFD33C580B9C27DFC196AD23BFED6E7 /* nativeviewconfig */ = { isa = PBXGroup; children = ( 906C0BC7CCCBAF7E35B934CFD17FC44F /* LegacyUIManagerConstantsProviderBinding.cpp */, 090C56DE791731685F76F2010E681C1E /* LegacyUIManagerConstantsProviderBinding.h */, ); name = nativeviewconfig; path = nativeviewconfig; sourceTree = ""; }; 4B0961F3A4B3DB15F23AB072C78ED8F0 /* objc */ = { isa = PBXGroup; children = ( FEBC85A59D1771FEE07769D206EDEC9B /* WMDatabase.h */, 598C51078F81B88ECED26E0192A48207 /* WMDatabase.m */, C5B6D34CEC3C6CE2295EEDA15E8B7DD0 /* WMDatabaseBridge.h */, FB687C9F11521E5B9F74197C09608F8E /* WMDatabaseBridge.m */, 54CED87C8170B13841D92A0113192459 /* WMDatabaseDriver.h */, 635016B0AE2DF86EDCC11EB4FBB41D5F /* WMDatabaseDriver.m */, ); name = objc; path = objc; sourceTree = ""; }; 4C0D529CCAF0EF5D539488BECEBA799A /* uimanager */ = { isa = PBXGroup; children = ( 33A82E15C4F5EEC134A1C086B421B62D /* bindingUtils.cpp */, 3AD266EFC19E97B68AB736B2DFAE934E /* bindingUtils.h */, F481D215714FD018CDA8C79540DDC6A8 /* LayoutAnimationStatusDelegate.h */, F0A85939544D109BFA4572C401B51D9E /* PointerEventsProcessor.cpp */, D11BE31D2BF618CFBCC52352A6567B70 /* PointerEventsProcessor.h */, 5A623EC312D3BCD944313E099426740F /* PointerHoverTracker.cpp */, 9E177524AAB858045AD52E1FFD4C991A /* PointerHoverTracker.h */, 4403122C16D5B003C8984E009EAF54F1 /* primitives.h */, 3E71733432C7AC618E5FB1B2C20C71F3 /* SurfaceRegistryBinding.cpp */, 6E3D2F20B2620B37412790BDD9F15C17 /* SurfaceRegistryBinding.h */, 271F7075A09B7F53F77295612BE17BE8 /* UIManager.cpp */, AF94AB49F3DFCBD87BA7862CC44A3D1D /* UIManager.h */, 46F5E5B9B1380E064D67E9508C78BACF /* UIManagerAnimationDelegate.h */, EF7790CCA0F33012360CF9BA24706CF9 /* UIManagerBinding.cpp */, 79BC7FAFCA2807334B0B7E151993C6FC /* UIManagerBinding.h */, 52271E0F8ED452014891F20BD4947CFF /* UIManagerCommitHook.h */, 7EA35A760668D0586965F521A3B21B4B /* UIManagerDelegate.h */, 0EBD024CC0AC3DC8897152BE3FB46E12 /* UIManagerMountHook.h */, ); name = uimanager; sourceTree = ""; }; 4C8E26DD5A220182F8DADC9AA1EBBCC9 /* Pod */ = { isa = PBXGroup; children = ( 48D442CA49CE18D23E61AE09E67355CC /* React-jsinspector.podspec */, ); name = Pod; sourceTree = ""; }; 4D0B065A8B7D7FCE069E4C6DD9750305 /* UnimplementedComponent */ = { isa = PBXGroup; children = ( DB5A191A4D4CA731E31AFC8EA19625A2 /* RCTUnimplementedNativeComponentView.h */, 431DEF836033B057B6067879CB291040 /* RCTUnimplementedNativeComponentView.mm */, ); name = UnimplementedComponent; path = UnimplementedComponent; sourceTree = ""; }; 4D18290C9D502ECAFA6AEE43300F5595 /* components */ = { isa = PBXGroup; children = ( E435C56675DDB8A410B49F7C7073460A /* inputaccessory */, 5C62B1ABD53ABDAE5DE8AD8244C28230 /* legacyviewmanagerinterop */, F917AFEA46CC0EA11BC6D81EB226EEDE /* modal */, 9AAC841AE519DF450215AC7162CD860D /* rncore */, 3129A0ADE4B97DD3998639F514893B94 /* root */, A87C7F8D00F0CBE2558C9FABDCE778F0 /* safeareaview */, 14ED68B512C0D79F79479BB0C185ACCD /* scrollview */, 7FD492DBED5762ED1C9C9342B5CDF8B1 /* text */, 46E47A464150996BC8699D5B01DCF096 /* textinput */, FB52750D97B167EC630A39D38431B791 /* unimplementedview */, 4938E202647DB9A33EF0A661516C90B1 /* view */, ); name = components; sourceTree = ""; }; 4D73D71DE4243AB0D6C3E31F81E31B26 /* LegacyViewManagerInterop */ = { isa = PBXGroup; children = ( 47BE5F90D494B6D74BB9880F6EBD0D1D /* RCTLegacyViewManagerInteropComponentView.h */, AC1A3A6597F7D2D59AD0CE67E1A09CD2 /* RCTLegacyViewManagerInteropComponentView.mm */, 3DDD563C6ADBEC41164125E51B67EE77 /* RCTLegacyViewManagerInteropCoordinatorAdapter.h */, 51CBEFF89517A9EE045E0A3F9D3939B5 /* RCTLegacyViewManagerInteropCoordinatorAdapter.mm */, ); name = LegacyViewManagerInterop; path = LegacyViewManagerInterop; sourceTree = ""; }; 4DF42A7CD74B7436D63FF2AD52C1F94D /* Pod */ = { isa = PBXGroup; children = ( C4BD888172BAA8E70F8568E61F2FAEC1 /* React-Core.podspec */, ); name = Pod; sourceTree = ""; }; 50078C544CD6EBBBC85C62A86036987D /* Image */ = { isa = PBXGroup; children = ( 475E63C49DABE072747B2ACDE9DE0BA5 /* RCTImageComponentView.h */, 012CC3CCEDDC11E02851DBC088F9B7A2 /* RCTImageComponentView.mm */, ); name = Image; path = Image; sourceTree = ""; }; 50938A0B44C0ACC4CD43F21867DDB78D /* Inspector */ = { isa = PBXGroup; children = ( 6EEEE05EBCE258D71886371521451AF3 /* RCTCxxInspectorPackagerConnection.h */, 53698A773FE28A1702762D414C8FD31B /* RCTCxxInspectorPackagerConnection.mm */, A6D5BA68A42EABFFF8C42BAFF6B32E74 /* RCTCxxInspectorPackagerConnectionDelegate.h */, B69DAF065EE01F48CB5FBAC10F00EDE0 /* RCTCxxInspectorPackagerConnectionDelegate.mm */, 6B17F4F65DD01BD81E40664BAFB61F37 /* RCTCxxInspectorWebSocketAdapter.h */, 4BEF797D469DBDB850A55FFDD493B789 /* RCTCxxInspectorWebSocketAdapter.mm */, 3D16D5EC0CC9F855658FDAD755B9B8F7 /* RCTInspector.h */, 0349E57AC52849B1E2956F92F2F74D82 /* RCTInspector.mm */, 3F5A0CA304F0EDE4723DD50DC013E5A9 /* RCTInspectorPackagerConnection.h */, 3CAE7021D6D8066FCD1D39076F4A85C1 /* RCTInspectorPackagerConnection.m */, ); name = Inspector; path = React/Inspector; sourceTree = ""; }; 50AA27881D34215F513B67E035DBFD23 /* RefreshControl */ = { isa = PBXGroup; children = ( 88FE98CEA078C7FBF78F8FA3A02093CE /* RCTRefreshableProtocol.h */, CD16933416FD2EC375DDCB34E3995C89 /* RCTRefreshControl.h */, 45C6CA880F0AD8CC31C1BF775228C3EF /* RCTRefreshControl.m */, 0DE9029B11C02C40098A6D686789D830 /* RCTRefreshControlManager.h */, F14EDE5F666391049AE8B82BFE391E88 /* RCTRefreshControlManager.m */, ); name = RefreshControl; path = RefreshControl; sourceTree = ""; }; 5158E56B11AEB46872C78D81B8155431 /* React-RCTSettings */ = { isa = PBXGroup; children = ( 0696F27878C985C7F2D9DBBD0BA700E5 /* RCTSettingsManager.mm */, E0839F609F20832C1729CED5ADCA18C9 /* RCTSettingsPlugins.mm */, EA57B66692E93B0A9A9E960BC4CEA037 /* Pod */, A22A03BA16F7B58F55DB6463E7E394B5 /* Support Files */, ); name = "React-RCTSettings"; path = "../../../node_modules/react-native/Libraries/Settings"; sourceTree = ""; }; 52E675060B115456C9D0AA1A71754FD7 /* React-perflogger */ = { isa = PBXGroup; children = ( E0264569A1DCA41D8267A2DEC02B3043 /* BridgeNativeModulePerfLogger.cpp */, 76B9170886E7F923EC5E35A34EEF7A2E /* BridgeNativeModulePerfLogger.h */, 6BE67D2E5B439024289DCAE23AB7DFE4 /* NativeModulePerfLogger.h */, 125A31DA6044B0FE2A4D78722470D750 /* Pod */, 41853CCBEA5A920B81E37C320F0F8879 /* Support Files */, ); name = "React-perflogger"; path = "../../../node_modules/react-native/ReactCommon/reactperflogger"; sourceTree = ""; }; 5328E121AABC026DD9242F9F14882F7E /* cxx */ = { isa = PBXGroup; children = ( 335F15F96FB0EFA61B990DBD29902F91 /* react */, ); name = cxx; path = cxx; sourceTree = ""; }; 5544F7F93E3DBA9D61074A44C08FBD0D /* Drivers */ = { isa = PBXGroup; children = ( 224F3D752D59D26136CB03C3D3C240F2 /* RCTDecayAnimation.mm */, 404C04FF5A5FFA2678597943F9B2C076 /* RCTEventAnimation.mm */, CADAFD82F38E6E1F5955E921DD980A8C /* RCTFrameAnimation.mm */, 513728BBF69F10E478D203C24AE89494 /* RCTSpringAnimation.mm */, ); name = Drivers; path = Drivers; sourceTree = ""; }; 554A823B3048F7FBB354B61BE1133044 /* React-callinvoker */ = { isa = PBXGroup; children = ( D401F70F6554582A86F6BB451C06116B /* CallInvoker.h */, 6456B7E29C4C1FE96FE03B584C20AFD9 /* SchedulerPriority.h */, 6AB929BEE45DFCB38D7F2F05B4D304CB /* Pod */, 2E832F8BE4BE501B7593972F10AC5390 /* Support Files */, ); name = "React-callinvoker"; path = "../../../node_modules/react-native/ReactCommon/callinvoker"; sourceTree = ""; }; 56DE0F982CAB753A2F9DD43EF2A3DE6B /* React-jsi */ = { isa = PBXGroup; children = ( CC3E8F86C7DCFECB3326885EC3BF91AF /* decorator.h */, B87758E567704381060EF12FB7B025AB /* instrumentation.h */, 469194BAB9EE78B8BC1A3877E5EB169C /* jsi.h */, 9D24D1273C6645B9F73FB2F6C0A44A1D /* jsi-inl.h */, 8E06A966DFD16239C4A4825D8200F89D /* JSIDynamic.cpp */, 6FC40232E2C55EB617E3DFB087BA95C0 /* JSIDynamic.h */, 1B6371A9E6D76C16AD518CC288F335F4 /* jsilib.h */, 16E3111070B2202E4E59A2EB4AAF55A9 /* threadsafe.h */, 7958B8E6307DE7DCD2B8642BC29FE308 /* Pod */, 9BAD9866097E10B1FDB703D4D0A97D5A /* Support Files */, ); name = "React-jsi"; path = "../../../node_modules/react-native/ReactCommon/jsi"; sourceTree = ""; }; 58BE57C789F8C8396E4F9C36CEA1E3B1 /* view */ = { isa = PBXGroup; children = ( CB960EC9C47A40C34C5B59FF58A14FCF /* HostPlatformTouch.h */, 7C95BBE34A199CF72BBFBFC172AC6E71 /* HostPlatformViewEventEmitter.h */, 0E432DBE0F06DDCE804C5D453ED121C3 /* HostPlatformViewProps.h */, 2A64B900827AD880DCA0F0CDC3BDA727 /* HostPlatformViewTraitsInitializer.h */, ); name = view; path = view; sourceTree = ""; }; 58CA7196E8751E8894DE84A24929D757 /* Pod */ = { isa = PBXGroup; children = ( CC0F7AC9D01EB889E5370F93AB275754 /* React-jserrorhandler.podspec */, ); name = Pod; sourceTree = ""; }; 59347770634A6137053C514350BED8BC /* RCTNetworkHeaders */ = { isa = PBXGroup; children = ( 544A0D0CF86148CB2EF0B78039179444 /* RCTDataRequestHandler.h */, BDC9CA0EA4B12AEE132FF43037AE8E00 /* RCTFileRequestHandler.h */, 23DDF8148799041A2BF94450407CEBD2 /* RCTHTTPRequestHandler.h */, 9F4B2863206A2795EDD2B67B16FAC91C /* RCTNetworking.h */, 3B80393CC9C72D221195616E0DA5B67F /* RCTNetworkPlugins.h */, 91DEEA05C7FC3B3FE85F51D16F0060A1 /* RCTNetworkTask.h */, ); name = RCTNetworkHeaders; sourceTree = ""; }; 5A4DFC42D5801C6801825A9C1CAD37A6 /* BaseText */ = { isa = PBXGroup; children = ( CC013CC571FE4BC5DEEFD2D0D37B0093 /* RCTBaseTextShadowView.mm */, E13EF6E51F9F10FBD304A4FADDBB25A8 /* RCTBaseTextViewManager.mm */, ); name = BaseText; path = BaseText; sourceTree = ""; }; 5A762D82420F4B4EB73CBB7A080CFF38 /* Support Files */ = { isa = PBXGroup; children = ( 76A1CBFC82E23FC317730FE377F95CCB /* React-RuntimeHermes-dummy.m */, 203F90BE1C271A4963AF8779D2AA90AE /* React-RuntimeHermes-prefix.pch */, A07A822153FEC0A3E902A56BD0450957 /* React-RuntimeHermes.debug.xcconfig */, 4DE72A397551E705994E98D86904430A /* React-RuntimeHermes.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-RuntimeHermes"; sourceTree = ""; }; 5BDBB35F633567D3A31E12423AD9197B /* Support Files */ = { isa = PBXGroup; children = ( 0585010DB2257C8B62F3B1BE51449BDA /* SocketRocket-dummy.m */, BCE80CF8B841672C3A200AF86984A1ED /* SocketRocket-prefix.pch */, F923F037E88C68DA2463BCD75AA9ED60 /* SocketRocket.debug.xcconfig */, E8A93054841794EAD58EB675761B8905 /* SocketRocket.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/SocketRocket"; sourceTree = ""; }; 5C62B1ABD53ABDAE5DE8AD8244C28230 /* legacyviewmanagerinterop */ = { isa = PBXGroup; children = ( 1FD672FEBEC49B42EEBB59B54F5CD143 /* LegacyViewManagerInteropComponentDescriptor.h */, CAAD19E5409FDE0BA4AE1A1A0483BA00 /* LegacyViewManagerInteropComponentDescriptor.mm */, F7FB105B5F150706FC7A1068544C1C16 /* LegacyViewManagerInteropShadowNode.cpp */, 2ED447FF7E9E303F98B593502FAA8151 /* LegacyViewManagerInteropShadowNode.h */, 2B7A860D2229C54CBF112DD02B57C926 /* LegacyViewManagerInteropState.h */, 05DBC9C72F0FBD718ED0DED3984CE795 /* LegacyViewManagerInteropState.mm */, 938D7993FE352F22F90BB01751E733E9 /* LegacyViewManagerInteropViewEventEmitter.cpp */, DDEC6CF7899D39C510AF9B96223825C0 /* LegacyViewManagerInteropViewEventEmitter.h */, 61A6746F63145AAB8BD430D845B4B7F6 /* LegacyViewManagerInteropViewProps.cpp */, 0D7CB8AC94086CDE9ABBF0A55442AE9F /* LegacyViewManagerInteropViewProps.h */, 32DC15B6A3F5954F7FA2FF42937538A5 /* RCTLegacyViewManagerInteropCoordinator.h */, 77FD8EC2BDFA965A8B3238C611476897 /* RCTLegacyViewManagerInteropCoordinator.mm */, C638A35CBFBC692CA7A2C5870600E066 /* UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp */, 32E0BB05F9F652F49EAE1D3EE8E0714E /* UnstableLegacyViewManagerAutomaticComponentDescriptor.h */, 18B4341AA7547FF0A90E6BC28D6C448F /* UnstableLegacyViewManagerAutomaticShadowNode.cpp */, EDB46ABA9CC235068ECA4A848DB17EE8 /* UnstableLegacyViewManagerAutomaticShadowNode.h */, 3312F4682C3B648C87FBD7755CC0CE73 /* UnstableLegacyViewManagerInteropComponentDescriptor.h */, ); name = legacyviewmanagerinterop; sourceTree = ""; }; 5C6B0CD72E8A9F5C6D91CAD1C829C7D8 /* Development Pods */ = { isa = PBXGroup; children = ( 90652DF1414B43CD8ACBE42D8DBC5012 /* FBLazyVector */, 9E4AB614B7BB9122869BB5B29BA374DF /* RCTDeprecation */, 489760B7755233A63757DE6C008D9DF1 /* RCTRequired */, 330759EDD479CCC913161F05B0849526 /* RCTTypeSafety */, 27B37E6E4590A097086761DD10791464 /* React */, 554A823B3048F7FBB354B61BE1133044 /* React-callinvoker */, 67978F3B8E4AE3641FDF6EE4F7550618 /* React-Codegen */, 26F1C44700390E55DAC55AF9754E220A /* React-Core */, C9FCE5218763A0186A2053CC46F95127 /* React-CoreModules */, F15703C1AFFDB1BB579B720667358414 /* React-cxxreact */, F0E4C63621E9D8EECEF8366246B38675 /* React-debug */, 0DA390F87BBAD21398DF554B46780A15 /* React-Fabric */, 1CE3AF8F1B957A97D187C362FF34706E /* React-FabricImage */, 0B9435B4A5935D54E7B928CADCAAAAC5 /* React-featureflags */, 16A4234682C8931240E16166FA4BA7C0 /* React-graphics */, 3BCBFC56764D4C25F88064F72398AA93 /* React-hermes */, EACCDFAE137CB6FCDBAA4DCD752C0EBD /* React-ImageManager */, 7E05F7C425E3CCB8082C8310554F37F8 /* React-jserrorhandler */, 56DE0F982CAB753A2F9DD43EF2A3DE6B /* React-jsi */, EB2153CF68A1D5871553D3223D7F5456 /* React-jsiexecutor */, 278FF3C375817348A07F1B5488D1F7FF /* React-jsinspector */, BAC1F5670DD858B1236132F8639008E3 /* React-jsitracing */, EC087B89F1F6A6A61F86EA18064B2411 /* React-logger */, D0FE7326D90BDBB8817B58F84A343BD0 /* React-Mapbuffer */, A7C4FF2F75EF9D72AA55D62D1EEAE11B /* React-nativeconfig */, 46BCFE61D7356DAFCE7CBB3B5D38D192 /* React-NativeModulesApple */, 52E675060B115456C9D0AA1A71754FD7 /* React-perflogger */, E0A5B121D952F6317F2792EC9958D5E3 /* React-RCTActionSheet */, 9D053F5F3BD82C77E402C42AC8FC9519 /* React-RCTAnimation */, 71AB9505FE56A3AC3DF05BB98FA6F20A /* React-RCTAppDelegate */, 69CE078C9E97757E19F00D341211784B /* React-RCTBlob */, F85781294F189F756291D8B95825B440 /* React-RCTFabric */, 1B23A6C0F680568EB52BA9BD9526F9D2 /* React-RCTImage */, 838544A1D1A3EC2F8C1F335A6B00984D /* React-RCTLinking */, C5B10AF863EC53C54719EC59F9CC650D /* React-RCTNetwork */, 5158E56B11AEB46872C78D81B8155431 /* React-RCTSettings */, E70F21A12A20C6724851C6CD41B425A1 /* React-RCTText */, CF850A691E67115665F695CA710F2E18 /* React-RCTVibration */, 223AE9EE0D318B68CA58A6D5E7A833FC /* React-rendererdebug */, 089C4657A87D27FA4637D12E4F163527 /* React-rncore */, 3B358CA7D370359AADC1873E8C9F0BA1 /* React-RuntimeApple */, D14FDBC87BCB72B38F032D1F010498A1 /* React-RuntimeCore */, 3C7349976EA80B1057745E6654F5AB2A /* React-runtimeexecutor */, F54FF6B14BCA0B94B3F5524E725B995B /* React-RuntimeHermes */, E7362482BFF22AC30709A403B38CB2BE /* React-runtimescheduler */, 0A60382252AE41051D04DE8A6098AEF1 /* React-utils */, A590DD0675D53682B1BC144B81586431 /* ReactCommon */, 4883BEA3F82503FF01DCDA5AE443E6DD /* simdjson */, 3CF4D8EF547899AF801588608FF767B4 /* WatermelonDB */, 22298BAC557AC5B6503AABF5698863DB /* Yoga */, ); name = "Development Pods"; sourceTree = ""; }; 5D505B6D5764926B812EB062BBB9F48F /* SurfaceHostingView */ = { isa = PBXGroup; children = ( E22E7E12AEEE2122E9587F6CBE60EC1A /* RCTSurfaceHostingProxyRootView.h */, B5C07CBA21F57FACAAB67EAB0200D145 /* RCTSurfaceHostingProxyRootView.mm */, 0CD4200922C77CCA406FFAC67124F437 /* RCTSurfaceHostingView.h */, DFB701655BF99400D13CDA6EFDCC1AC7 /* RCTSurfaceHostingView.mm */, CF40503F32A96F47168359F16F99FC55 /* RCTSurfaceSizeMeasureMode.h */, 6D84B0A7F1A70E6E9ABEEEB14CB6C80C /* RCTSurfaceSizeMeasureMode.mm */, ); name = SurfaceHostingView; path = SurfaceHostingView; sourceTree = ""; }; 5FE9DA05C0C0B80D78B3196B44520CCF /* Support Files */ = { isa = PBXGroup; children = ( 5ED53EC43FC74FD8B1F3A1C21AF5D357 /* DoubleConversion.modulemap */, F852C98DD1BF5640292AF6AAF675EA58 /* DoubleConversion-dummy.m */, 37CF653BFF872793202265BF76118EAA /* DoubleConversion-prefix.pch */, C32920036DAE3C20F1840181BC975BDA /* DoubleConversion-umbrella.h */, 3EA47022B15AB1C45235DBA9B57DA776 /* DoubleConversion.debug.xcconfig */, 1C9CA7D5550AD1D94A7AA763FBA17534 /* DoubleConversion.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/DoubleConversion"; sourceTree = ""; }; 608676613D8C48B8B9EA90C52743AB1E /* Support Files */ = { isa = PBXGroup; children = ( BD916666DA53F0458FF557DC851A7FEA /* ReactCommon.modulemap */, FB10906EE52FB99A63183406F2DFD2AC /* ReactCommon-dummy.m */, 0810AA4CE6F716164879BBA08BF3EDCC /* ReactCommon-prefix.pch */, E7531C53649FE630D622444E87454709 /* ReactCommon-umbrella.h */, 106A05F0520EFBA0E22815812BDA18F5 /* ReactCommon.debug.xcconfig */, B49E927D98F0202C6C5CD21E1077E16E /* ReactCommon.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/ReactCommon"; sourceTree = ""; }; 612A411D79E5AC1A20ABFAED89F0EAA7 /* componentregistry */ = { isa = PBXGroup; children = ( F5F74E1220FBDEDB27401F3F98612EC8 /* ComponentDescriptorFactory.h */, 7761A07D372FD8689FEED3327D1DA8FD /* ComponentDescriptorProvider.h */, 081F794580583CC4DFEB6D2CF2DF3D3D /* ComponentDescriptorProviderRegistry.cpp */, 6BB02A1AFF68DB9D0E2B844F9E1E8A2F /* ComponentDescriptorProviderRegistry.h */, 64B98B991654E98484D4253805E17035 /* ComponentDescriptorRegistry.cpp */, 62321BBFBF2E8E88A946FF1C2655F069 /* ComponentDescriptorRegistry.h */, D4B7F151F4E0EB1DCE46AA538CDA20CE /* componentNameByReactViewName.cpp */, F0DF8AFAE1CBEF65355E92467584E4A5 /* componentNameByReactViewName.h */, ); name = componentregistry; sourceTree = ""; }; 642E80121214548255F3E44A3D10908F /* Support Files */ = { isa = PBXGroup; children = ( 07319E2772F29181135D234449AFFC14 /* React-featureflags.modulemap */, E390D39B5438A34CB65883263516478C /* React-featureflags-dummy.m */, F17EBB71C3E56527394A1105831F5DF5 /* React-featureflags-prefix.pch */, E8BF57389A0D82185746D63D05645956 /* React-featureflags-umbrella.h */, 0AB45FDFADEB5035DFD513D71DB737DC /* React-featureflags.debug.xcconfig */, E2F009051F05B8597141D79A5583D4FF /* React-featureflags.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-featureflags"; sourceTree = ""; }; 64397211A15E56518F29A27220C51336 /* animations */ = { isa = PBXGroup; children = ( 289BDFFAEE5965ED8E6B54755E485A66 /* conversions.h */, 20D52A5CA3FEAAB624DD5FABD5F70EF4 /* LayoutAnimationCallbackWrapper.h */, 90666F35881E0B6CF16A7F6D502820C6 /* LayoutAnimationDriver.cpp */, 860A6C48F7BFB2F514BB891173FD0D7E /* LayoutAnimationDriver.h */, F60384F886271F9FE990A1E05F65D620 /* LayoutAnimationKeyFrameManager.cpp */, BA7531AA0EDD6697C7D87500F8EFA087 /* LayoutAnimationKeyFrameManager.h */, EA92D2D183344B3DA53FE9FC7B307DE6 /* primitives.h */, 73058D524065BD36521A8D2FAA24552A /* utils.cpp */, A4D384B56D16CD122C5BFFBD16EFEF46 /* utils.h */, ); name = animations; sourceTree = ""; }; 64518A8E0CF4473016570A6879346C64 /* Default */ = { isa = PBXGroup; children = ( 83D688BAE219AEF357904BE257AF956C /* Base */, 6E2900619FB10AC33BB49D8B6889281F /* CxxBridge */, 77A10B0843654F2C18695FF6C01CF2BC /* CxxLogUtils */, FA5D227825AB5923FACC474B9DB3F384 /* CxxModule */, C62706AD1BF7CA5DF853101FF69F904A /* CxxUtils */, E154B3C37FBBBA22F41876AC4AFD874F /* I18n */, B511BCC300594DF84D6CFDF2B8F5EC1B /* Modules */, C491125B0694A5263BA6D6B79B51B471 /* Profiler */, FC37D3F31B7D90CFC347522DC090973D /* UIUtils */, 23EF42F33260F492F0E1CA6A966BC672 /* Views */, ); name = Default; sourceTree = ""; }; 66248CFBB63ACD60DC5ECBA522E1FCB0 /* Support Files */ = { isa = PBXGroup; children = ( 56B4C070CA7B93A1F321D02E003223BA /* glog.modulemap */, D886821B444D6CB88E03807915CB1608 /* glog-dummy.m */, 79F230CA43B3923BA705770F29C504C6 /* glog-prefix.pch */, 459822FB423F933D32F755CA3A5D55CC /* glog-umbrella.h */, 0146BE1DD8D87E794B0CFD58725CC02C /* glog.debug.xcconfig */, 6CD702447664E9814FDF64C2521FE0A8 /* glog.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/glog"; sourceTree = ""; }; 67978F3B8E4AE3641FDF6EE4F7550618 /* React-Codegen */ = { isa = PBXGroup; children = ( 3F8788C15B11DF4D16CE2A85BE243AA0 /* FBReactNativeSpecJSI.h */, 4AE459B4FB63DF08755386C3B4D759D8 /* FBReactNativeSpecJSI-generated.cpp */, 033B1F5C19B781492F29A47DA4EFD3A4 /* RCTModulesConformingToProtocolsProvider.h */, B286D2E443FD0AC7BDE2FA335AE099A9 /* RCTModulesConformingToProtocolsProvider.mm */, 3A89BBF10BF4CF5D3C418A38D668F587 /* FBReactNativeSpec */, 1A91472BD47D8A01B2F79E1D3BF3F435 /* Pod */, 2202615F216E42653F37977999D037B5 /* Support Files */, ); name = "React-Codegen"; path = ../build/generated/ios; sourceTree = ""; }; 6824F05EE4AE2E8974BD71AAFD1A6F32 /* Support Files */ = { isa = PBXGroup; children = ( C08BAC1C65562A0491860C45DF8E309A /* React-ImageManager.modulemap */, BDED2FDDA75EFFC4F049DF04CA2B0B69 /* React-ImageManager-dummy.m */, BD845FCB6E8D03B954E98CC67262C224 /* React-ImageManager-prefix.pch */, 75BD04A47CB6E45D70FC6CC41F55E9D0 /* React-ImageManager-umbrella.h */, BEC2935F7CAC9628D23D98B726129B8A /* React-ImageManager.debug.xcconfig */, 047508626E4450B1D2FB80B3358F97F6 /* React-ImageManager.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../../../native/iosTest/Pods/Target Support Files/React-ImageManager"; sourceTree = ""; }; 684A99A16D90DD769294066B2A21E529 /* Support Files */ = { isa = PBXGroup; children = ( A7C3FA3DEC4092F63BB39E1F2566D4BC /* React-runtimeexecutor.debug.xcconfig */, 99E222D0C7D14CFBD1BC586704C58A9D /* React-runtimeexecutor.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-runtimeexecutor"; sourceTree = ""; }; 6907CB3169BA7804C5F4E250B8FC6C8D /* Support Files */ = { isa = PBXGroup; children = ( 9833AD993B14B7CEE86ECA66FA7A7B7A /* React-RCTAppDelegate.modulemap */, D958FC3ECB59DEF56F7A316CFF3FE5E5 /* React-RCTAppDelegate-dummy.m */, E38250C1621C85BBCC9EA54DCC289145 /* React-RCTAppDelegate-prefix.pch */, 401A553AA0753FF3548A286F009A8820 /* React-RCTAppDelegate-umbrella.h */, 902581D4E30B461C86B20B03CC2F5AA6 /* React-RCTAppDelegate.debug.xcconfig */, 9F03A2E19DD75677633924F1B93787D1 /* React-RCTAppDelegate.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTAppDelegate"; sourceTree = ""; }; 6982589FDD1F93DB24C77311374EE474 /* Pod */ = { isa = PBXGroup; children = ( 50DAB08AF16996E1B2836D9927C3D32A /* React-RCTImage.podspec */, ); name = Pod; sourceTree = ""; }; 69CE078C9E97757E19F00D341211784B /* React-RCTBlob */ = { isa = PBXGroup; children = ( FBC79A9C5A60A939EF7BBEFBE8449906 /* RCTBlobCollector.h */, CC14D6144DA3CBC86D616E08D6D726E8 /* RCTBlobCollector.mm */, 1371AFE6C3E17A03757544B99B0C563C /* RCTBlobManager.mm */, 1EB0389666D3316FBF79F7AA176DAC97 /* RCTBlobPlugins.h */, 925A2297E6EEF7197A415C4C41AE8027 /* RCTBlobPlugins.mm */, C059BACE08D3A4EC8B1895D76B07DFE6 /* RCTFileReaderModule.mm */, 48538C2EC79AB2B8D68E01A0404F681C /* Pod */, F9CB7550FD5E52C38F904E2F2BA99527 /* Support Files */, ); name = "React-RCTBlob"; path = "../../../node_modules/react-native/Libraries/Blob"; sourceTree = ""; }; 6AB929BEE45DFCB38D7F2F05B4D304CB /* Pod */ = { isa = PBXGroup; children = ( 69063AD95BA07DF28A18417CF3A1B53C /* React-callinvoker.podspec */, ); name = Pod; sourceTree = ""; }; 6BE57199DB090FF99258CF386E542C42 /* Pod */ = { isa = PBXGroup; children = ( 2AF4509521B4076AA29D6287EFE1BE14 /* React-CoreModules.podspec */, ); name = Pod; sourceTree = ""; }; 6C85D2BBAE96BC15F85AA68CEEA5FD5A /* ActivityIndicator */ = { isa = PBXGroup; children = ( 21E277EB0A609214CBB931D344238A64 /* RCTActivityIndicatorViewComponentView.h */, 7B1A1BCA9AF04E480CF3A0F15DC4277A /* RCTActivityIndicatorViewComponentView.mm */, ); name = ActivityIndicator; path = ActivityIndicator; sourceTree = ""; }; 6CA7A5B3A37A3BD4C4189F7FB0462212 /* RCTWebSocket */ = { isa = PBXGroup; children = ( AEB455EDDB077C84F1FFD562DFFBA54E /* RCTReconnectingWebSocket.h */, A7E2525A0E66EF3136FD4342856314BC /* RCTReconnectingWebSocket.m */, ); name = RCTWebSocket; sourceTree = ""; }; 6CAF12F826A453EF88B2F103280D6381 /* CoreModulesHeaders */ = { isa = PBXGroup; children = ( F40DA4337071C6A25D759BAE9D00C90A /* CoreModulesPlugins.h */, 98D0A9133BF9CECCDCD33D1F4C38B4C8 /* RCTAccessibilityManager.h */, 8D7C4A3E62FB0FF7DF9D127631B944B1 /* RCTAccessibilityManager+Internal.h */, FFD4B861CCFBFBB3B9059A2DCEDE8D24 /* RCTActionSheetManager.h */, 3B0D676D74E69A0350EF5A4FE2794335 /* RCTAlertController.h */, 59FDF98892BF9744DCB3D5402C366923 /* RCTAlertManager.h */, 13A658922FD40E29EEAB7D23E4D3A2BD /* RCTAppearance.h */, E3A3132932FB8BCA22D8C2EB34C0BA27 /* RCTAppState.h */, 890F493171D8B37E354419CA6A05C95A /* RCTClipboard.h */, E253CA8AF57F182CDA110861DF421A77 /* RCTDeviceInfo.h */, 93C1BA5C7F7A59628950008F9375BF82 /* RCTDevLoadingView.h */, EDBAAC4C0FEDEB6F19329DEE85E71512 /* RCTDevMenu.h */, 7BE42F9FEE2CC91F9B2D0CD06DCFA3B4 /* RCTDevSettings.h */, 4059CB54B248E9CAF8D2648832EF03C3 /* RCTEventDispatcher.h */, D078B11D9117F5852F1C821A0DD6E65E /* RCTExceptionsManager.h */, 5732AA2AC0D6C97862F2E84E6A43D27D /* RCTFPSGraph.h */, 5EA1F0E80816FE3C537ADE1BE9E97082 /* RCTI18nManager.h */, 840FA9BF8D964570C73D3D561CF489CE /* RCTKeyboardObserver.h */, E570952D2C710A3EC6A39040970B220E /* RCTLogBox.h */, 6A49FC170B2F422E9973F529DFC94316 /* RCTLogBoxView.h */, C60F31851CF169CE81AA452AA4663164 /* RCTPlatform.h */, AAB226E4AB2DF48BAF6AC83AC49AC1CD /* RCTRedBox.h */, 08A72E0FF2CF1B17D479A7069A5C1123 /* RCTSourceCode.h */, A53C026A38554E36070D5FF7477DE9BD /* RCTStatusBarManager.h */, A7FEE6ECF7F217445EBD97C857669637 /* RCTTiming.h */, 2EC34A00D8B5E0E79B1DFEF7D2D5651B /* RCTWebSocketExecutor.h */, 15E1BE174AEA123290CA37B86EFDD5F2 /* RCTWebSocketModule.h */, ); name = CoreModulesHeaders; sourceTree = ""; }; 6DBE07C15CE88F4964445119637334D7 /* react */ = { isa = PBXGroup; children = ( D4EBE8B064BC082A240389166A5EC4F8 /* renderer */, ); name = react; path = react; sourceTree = ""; }; 6DC4EAB150C72B78EF2BB14B3D927D2C /* ios */ = { isa = PBXGroup; children = ( 85FCE44197BB47E90228E37F0C177F77 /* react */, ); name = ios; path = ios; sourceTree = ""; }; 6E2900619FB10AC33BB49D8B6889281F /* CxxBridge */ = { isa = PBXGroup; children = ( F278184653BF83F13E9A2484D2F4F8C1 /* NSDataBigString.h */, 6D624E232F1781DF596D0A786D21944C /* NSDataBigString.mm */, DC46EBB3ED4F2E3ADA6C2752DF776F59 /* RCTCxxBridge.mm */, F07D525DF93C69AEC8946C90CEB695C1 /* RCTCxxBridgeDelegate.h */, AA29C6591A2E715C33B132EAC7AF7008 /* RCTJSIExecutorRuntimeInstaller.h */, 79FC786FA7244B7B38C8D7E7D63FD675 /* RCTJSIExecutorRuntimeInstaller.mm */, 2C795DB945B2C3AA8C9DB7C2065D7C38 /* RCTMessageThread.h */, 78B7DDD1D6B4E8239B45FF43C990D36E /* RCTMessageThread.mm */, 96C45D3F8919F8B19727DA09E333BFE6 /* RCTObjcExecutor.h */, 7BB5D02B327460A7F87EA512F38B2123 /* RCTObjcExecutor.mm */, ); name = CxxBridge; path = React/CxxBridge; sourceTree = ""; }; 6E7AFD21AE89FB328A42BE75A736DBEE /* core */ = { isa = PBXGroup; children = ( E99066C5DDF65197FF753C23E54313CC /* CallbackWrapper.h */, 3BD8588452A16BCC311A2F90E96B104A /* CxxTurboModuleUtils.cpp */, 13EBFD759F626BF0B8380604322D2E84 /* CxxTurboModuleUtils.h */, 6ACCDC510D9A68B13F2A48E358E2BE26 /* LongLivedObject.h */, 2993AE002A77BF7B39AAE55DB661DD31 /* TurboCxxModule.cpp */, E6AF50262FD901B97155797FE9CCADC0 /* TurboCxxModule.h */, AF9D4809815C39CA6793B26579FDDA54 /* TurboModule.cpp */, 3D4E8D2C968BF398ABDE0E66D90AA405 /* TurboModule.h */, FD2B5192F4D25A120B9FBA56082E1498 /* TurboModuleBinding.cpp */, DAA88CD24C578A8D699BEE467905F247 /* TurboModuleBinding.h */, 522819EFAF89C9070CB50445ACD48721 /* TurboModulePerfLogger.cpp */, 8A858627701B92C8E35A54D44F1CDF1B /* TurboModulePerfLogger.h */, ED0263B5DB4AF04BF5391CA51E3AE6F4 /* TurboModuleUtils.cpp */, 75F4E00A45E47775648B3C5AE641D5F7 /* TurboModuleUtils.h */, ); name = core; sourceTree = ""; }; 6ED0E8A627772310985098275F934F04 /* Products */ = { isa = PBXGroup; children = ( 6FFB7B2992BB53405E6B771A5BA1E97D /* DoubleConversion */, F4BDA69E3BCB0166D49FB679ABADCA00 /* fmt */, 3CA7A9404CCDD6BA22C97F8348CE3209 /* glog */, D6A3CF2FDC9D571D60BAB0281B6FA1BD /* Pods-WatermelonTester */, 66E1BAC6CC436F67ACD51B9211A14858 /* Pods-WatermelonTester-WatermelonTesterTests */, 1936453FF2A7E3A13063C4917C4D5598 /* RCT-Folly */, 33EEBF1D210254B5452CE560F81C9D38 /* RCTDeprecation */, F958876A082BF810B342435CE3FB5AF6 /* RCTTypeSafety */, E7178FECB829C9576A3723658B07F087 /* React-Codegen */, BD71E2539823621820F84384064C253A /* React-Core */, E50E54D57E4CB3E0920119CF69AD9A2D /* React-Core-RCTI18nStrings */, 6771D231F4C8C5976470A369C474B32E /* React-CoreModules */, 37592FDAD45752511010F4B06AC57355 /* React-cxxreact */, 6ED2C07E6AE77BBD9A6856E523EF6A06 /* React-debug */, DE73D8A5ECB254D9D3F8C36C8D201F89 /* React-Fabric */, 61A80F68AE163B384B7D7A9E76B6046C /* React-FabricImage */, 971F6C319DDD4BD078954A5EF77B5BA7 /* React-featureflags */, 5AA54A19E2135E09B9C8C0767385FD3A /* React-graphics */, DAD8B71DF2DFCF15AAF98C06D37D5703 /* React-hermes */, CEA45A2349847B8CEAC9ABF565A04BD0 /* React-ImageManager */, C02EAF482D8B4DE45E3A58A25AE1FA91 /* React-jserrorhandler */, D9F334F2E90E3EE462FC4192AF5C03BD /* React-jsi */, F2E7C88DFCD460A4B46B913ADEB8A641 /* React-jsiexecutor */, 2577F299FCB0A19824FE989BE77B8E8F /* React-jsinspector */, A5B49761F8D1EB12585DD45CAA2E489F /* React-logger */, C941106D9D54AE237C5110F5638389AC /* React-Mapbuffer */, 60D5A56E763D6E7C4FBE797565062EEA /* React-nativeconfig */, 1E649614D7644BF68C2F5D4CB3FBF8DC /* React-NativeModulesApple */, 666E72807891C591E025A75410CD2A26 /* React-perflogger */, FE7B9294FF05AAFD1653E2104E10844A /* React-RCTAnimation */, 39D0105B481E5FB78C661496BD63B8A5 /* React-RCTAppDelegate */, F71EBF73F354B475D465FF6DE9A66707 /* React-RCTBlob */, DA7ABB6DD8AEACED51D63B2C774E3A63 /* React-RCTFabric */, EEDBF403E8E0B3885E65C2741B536BC5 /* React-RCTImage */, 802121F5B756ACBFDD6D08C36246DADD /* React-RCTLinking */, A68E5A9B69A3BA0FD52CAF7A354EC93B /* React-RCTNetwork */, 269BE773C9482484B70949A40F4EA525 /* React-RCTSettings */, E6A16705C69FC7DE11C2469A4A0F8358 /* React-RCTText */, C1A919103EAC9813D236486C34FC0A21 /* React-RCTVibration */, 1E04881EDF02715BD6AC2C6ED3FBB37E /* React-rendererdebug */, 1381503C42FFF460E946860A32A6F981 /* React-RuntimeApple */, D22EED118A762A7D7BC88A4ADBB7026E /* React-RuntimeCore */, 4F3E9C98444FA55E416B857143C48013 /* React-RuntimeHermes */, A67E85E5F06FDA406D3A1B378BDF0C5C /* React-runtimescheduler */, B7610E9FDE749C16C0B1CDAAF3B2DDC2 /* React-utils */, D5C775614AC76D44CECB6BE08B022F1F /* ReactCommon */, EB2EBC367DAD012021CB28C5D9106469 /* simdjson */, 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */, B1BC0D650AD4A6CB2A62DB5D7C94556A /* WatermelonDB */, 65D0A19C165FA1126B1360680FE6DB12 /* Yoga */, ); name = Products; sourceTree = ""; }; 6FB5E78A1219A291FE853E265F906282 /* Pod */ = { isa = PBXGroup; children = ( E6FCE774BCFCEC0A37C02233EE1A6DAF /* Yoga.podspec */, ); name = Pod; sourceTree = ""; }; 71AB9505FE56A3AC3DF05BB98FA6F20A /* React-RCTAppDelegate */ = { isa = PBXGroup; children = ( 0C2BC45457F7B7889204A04BE2584DDE /* RCTAppDelegate.h */, AAE64CF21F806223D54976C43C7CA94B /* RCTAppDelegate.mm */, BDC8FAF53DD63A22F83D735BBEC79C48 /* RCTAppDelegate+Protected.h */, A0E5972A9C9EBA5B3038586A11E0FCF5 /* RCTAppSetupUtils.h */, 6FD6F1B6DC37EB6391F042FC9AC7E69F /* RCTAppSetupUtils.mm */, FCAE6D5FA62309B748866975B6AA85DC /* RCTRootViewFactory.h */, D3CD42FBDC4A9051EBFC9BBE6DB02349 /* RCTRootViewFactory.mm */, A00FA18D84D1E9984283141983CB75AC /* Pod */, 6907CB3169BA7804C5F4E250B8FC6C8D /* Support Files */, ); name = "React-RCTAppDelegate"; path = "../../../node_modules/react-native/Libraries/AppDelegate"; sourceTree = ""; }; 71BD988D97F229A87FF011F774714D8D /* scheduler */ = { isa = PBXGroup; children = ( EFB5E0D35E76A4F34C8D5195B2051AF6 /* AsynchronousEventBeat.cpp */, 00C9C239F8FE3A38880888D537B1808F /* AsynchronousEventBeat.h */, 4167445C410188AABBBB4C4E2721565F /* InspectorData.h */, C4F24837075E70019E647A6DFDD4EB4B /* Scheduler.cpp */, BD52E6EAC24FFDEAD05FA9425D5C5A03 /* Scheduler.h */, D97182C50F2513A513AF827227D35D9F /* SchedulerDelegate.h */, F2164B5DB3B104B55F7AEC0D7FC1AF24 /* SchedulerToolbox.h */, FEB18EBDB42AC349730BA29BCF965FC6 /* SurfaceHandler.cpp */, 92308B330D7A43F94B4AD41D0FEB8214 /* SurfaceHandler.h */, D77858FA2EBA20F1263AC750FC03FE38 /* SurfaceManager.cpp */, D14147B88E3AAA44C3CB4E3E9B1D01EE /* SurfaceManager.h */, 651A43C1D1C89E7F8CBDD08B496E2160 /* SynchronousEventBeat.cpp */, DC5E287FACF5FD6F1EC1566E83AC741C /* SynchronousEventBeat.h */, ); name = scheduler; sourceTree = ""; }; 724B3DEDFA0F74B3AAB15146C6AE0F75 /* Support Files */ = { isa = PBXGroup; children = ( 561C2BF4C1B754CC987BD95FC0FA1F37 /* hermes-engine-xcframeworks.sh */, 8D07443F9F8CE58F73EE39187877455E /* hermes-engine.debug.xcconfig */, 4148047344F184B4D856D414B9B4349D /* hermes-engine.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/hermes-engine"; sourceTree = ""; }; 734385DF00F869A8A9DCB25F7D0FE59D /* Pod */ = { isa = PBXGroup; children = ( 8CC0120933FC3F3C92122A211D47CC57 /* React-graphics.podspec */, ); name = Pod; sourceTree = ""; }; 76C3C6B0EB4CDD3ED56DD4DE72642030 /* Support Files */ = { isa = PBXGroup; children = ( 9046E45D1CA4C4109F20975FE05769E0 /* FBLazyVector.debug.xcconfig */, 52DFAF9CB84CA1E1BDC56A3F71A3C404 /* FBLazyVector.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/FBLazyVector"; sourceTree = ""; }; 775DA0B9F25FAA620B6EE242111FCDA5 /* TextInput */ = { isa = PBXGroup; children = ( DC7BB8BEE774754AA2ABA4E7FE98E101 /* RCTTextInputComponentView.h */, D015441B32F30C25792A1C654C1FD49B /* RCTTextInputComponentView.mm */, 71871CA5216D720E9BCA31F7ED7CC373 /* RCTTextInputNativeCommands.h */, 0838EA9EBC4E14FB79309CD7604BB3EE /* RCTTextInputUtils.h */, 39F4D12A0547EEA463DA17C682F69B34 /* RCTTextInputUtils.mm */, ); name = TextInput; path = TextInput; sourceTree = ""; }; 77635579615CF1D052BC9DF20B4D023A /* platform */ = { isa = PBXGroup; children = ( 6DC4EAB150C72B78EF2BB14B3D927D2C /* ios */, ); name = platform; path = platform; sourceTree = ""; }; 77A10B0843654F2C18695FF6C01CF2BC /* CxxLogUtils */ = { isa = PBXGroup; children = ( 7CC64A671E937AD1149E00BF8AAC2F08 /* RCTDefaultCxxLogFunction.h */, 1D4F51217F7A23436A551FB1BF267D5C /* RCTDefaultCxxLogFunction.mm */, ); name = CxxLogUtils; path = React/CxxLogUtils; sourceTree = ""; }; 783EF0CE31D3DCFC7A57A0C0ECD52B61 /* Pods */ = { isa = PBXGroup; children = ( F999F8978D07FB924296B37D54A540C5 /* boost */, 92E7D01CFA258C8C77BA8524A57741FE /* DoubleConversion */, C770325626FBC1F743FBD2F22EC31C72 /* fmt */, 3DC2CFD8AB13FB472599D9AEE2CCDCBE /* glog */, 248120CA5FD7E4114C4F0F62A60B7180 /* hermes-engine */, FE5C1FDF3515727A0670E951FDDE706D /* RCT-Folly */, 8D28CED4153514175A936512DC2F286F /* SocketRocket */, ); name = Pods; sourceTree = ""; }; 793AE592768F2FF4FE8BCFFBD5461C49 /* TextInput */ = { isa = PBXGroup; children = ( 415370226876D731C7B97EFB54012940 /* RCTBackedTextInputDelegate.h */, 6316526F1CBE0396E9767EDFD35C9870 /* RCTBackedTextInputDelegateAdapter.h */, FDD85087D17F29E409E05B785CAEF845 /* RCTBackedTextInputViewProtocol.h */, 33623931DB49F9BE0BB2BEAD565E5AC5 /* RCTBaseTextInputShadowView.h */, 8A7155EA3AC352921BE68F7BD76C6F36 /* RCTBaseTextInputView.h */, 21754846DD83D3794B287A3D6BB4DA9C /* RCTBaseTextInputViewManager.h */, 84D47D15D9888ECC847619622D47F370 /* RCTInputAccessoryShadowView.h */, 8B510656AC02DF313FD0F8F0C11489FC /* RCTInputAccessoryView.h */, 48151421313275AE47A1F36C49F1AC43 /* RCTInputAccessoryViewContent.h */, 11F7F6FA2445CB7E109866B0BE0CC3E6 /* RCTInputAccessoryViewManager.h */, 0F4162FD06F15F97900434A78640AA96 /* RCTTextSelection.h */, DDB3043473A4FC0439CCC1690F6C6C38 /* Multiline */, 3F5A3B98DAA657AE2E2B92F3DD5EF966 /* Singleline */, ); name = TextInput; path = Libraries/Text/TextInput; sourceTree = ""; }; 7958B8E6307DE7DCD2B8642BC29FE308 /* Pod */ = { isa = PBXGroup; children = ( 6CFB318332DD9F15BA0F4E2A1CB54F41 /* React-jsi.podspec */, ); name = Pod; sourceTree = ""; }; 79C6C4E31B41E8EA50D9951530679E7E /* RCTVibrationHeaders */ = { isa = PBXGroup; children = ( 93E465757376E937D199FB1ED68BB46C /* RCTVibration.h */, 0829B215BF56AF5014B3A1F4D600D8D5 /* RCTVibrationPlugins.h */, ); name = RCTVibrationHeaders; sourceTree = ""; }; 79E785223D174035A153EE0695AF76AE /* RCTImageHeaders */ = { isa = PBXGroup; children = ( 9EA2794840FA725A97054EE3C4C201C0 /* RCTAnimatedImage.h */, 6968091853F8202BC5D47745810C4DC4 /* RCTBundleAssetImageLoader.h */, EADB1A8E010B5CA7F0E6C4071A9DDA92 /* RCTDisplayWeakRefreshable.h */, B86E6473CEA7651AF56AB4A0DE22037C /* RCTGIFImageDecoder.h */, 019948FE306C2A476268E8F263EA2122 /* RCTImageBlurUtils.h */, 3A6A2A0A084F0C30F0774529E7FC9E72 /* RCTImageCache.h */, 163349EF8EF0ABE776CEB5D5A72C377A /* RCTImageDataDecoder.h */, 4242FEAF60FC3ACE3D98A5A77B65D724 /* RCTImageEditingManager.h */, ACA2D560DF5674F43C2F0CF72BCBF485 /* RCTImageLoader.h */, 0467EB815B94E64E6883C328F1F0F5BA /* RCTImageLoaderLoggable.h */, C5B05D7AD22B1F14DC12650D34552F69 /* RCTImageLoaderProtocol.h */, B0F4AFE806278086D88DF7F801882C7B /* RCTImageLoaderWithAttributionProtocol.h */, 62F2B8A9CA2FD124CEED393804E7351A /* RCTImagePlugins.h */, 35B3256FA995F839DF8DCEEFCF7DD785 /* RCTImageShadowView.h */, 7672883E0F8241100C66C2D877FCFDC7 /* RCTImageStoreManager.h */, 4279CDB721ED8120EB0EF927416392FE /* RCTImageURLLoader.h */, 4133EE63EDE34BEA9FC63C4BB4801169 /* RCTImageURLLoaderWithAttribution.h */, C0C96A892BD79DFF4E7AD6082E8D7F4F /* RCTImageUtils.h */, 9DB28E8C209A78E622C0305EEB0B8A19 /* RCTImageView.h */, 6678C1864A2A92768BBDC1C215172196 /* RCTImageViewManager.h */, 14631AAC5EAA775CD7C68A1D2E2D51C0 /* RCTLocalAssetImageLoader.h */, D47708686F705FA831C439C1F56306F5 /* RCTResizeMode.h */, 23F1171EF1ED7FAD36769DFA9AE002FD /* RCTUIImageViewAnimated.h */, ); name = RCTImageHeaders; sourceTree = ""; }; 7BD5E4D43BF00F3F339A867FCAD643D8 /* Support Files */ = { isa = PBXGroup; children = ( D8A9743F92811B06400AED3B4A0C3135 /* React-RCTNetwork-dummy.m */, 108A53F43BD5185295474605F7659C5C /* React-RCTNetwork-prefix.pch */, 55F26557222F60DEF94D6A5C8A9D24F9 /* React-RCTNetwork.debug.xcconfig */, 7C910125B6ECED6233B803D062331A90 /* React-RCTNetwork.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTNetwork"; sourceTree = ""; }; 7C1A3D49344E732F8B3C50E94B38EBAC /* Surface */ = { isa = PBXGroup; children = ( E625C620A161CC1506E07E4C53FC7859 /* RCTFabricSurface.h */, 56BBA94041D86275E476DAC1DD401197 /* RCTFabricSurface.mm */, ); name = Surface; path = Fabric/Surface; sourceTree = ""; }; 7D7FC175BD5F32AB7F726B6D215C834E /* attributedstring */ = { isa = PBXGroup; children = ( F8E43EE33594D104C5EF3813E34DEAFB /* AttributedString.cpp */, AE414480637A9BC7CFC2B70C16C12024 /* AttributedString.h */, DA46A7224AD028908740366CEBA9D908 /* AttributedStringBox.cpp */, 2415A1FAF902321B20BE9690DAF25F46 /* AttributedStringBox.h */, 4F2D0D22F314D7C2DE88B31A3FC2C571 /* conversions.h */, 52332B91843419E05974FD7AA782856B /* ParagraphAttributes.cpp */, 732337B1201688C67D6881C87C976B08 /* ParagraphAttributes.h */, D469751A218330A8AA5F4F551ED6F9A5 /* primitives.h */, 296D3832DB6A00F26BCB4D9A491A88E6 /* TextAttributes.cpp */, 2D3B7CA09D694AABDB4E6816701346CC /* TextAttributes.h */, ); name = attributedstring; sourceTree = ""; }; 7D83EBCBEB0E38F249D38F10862CE71D /* Support Files */ = { isa = PBXGroup; children = ( 0EEA744CEB6248472C8D4DCFAB2E718C /* React-Mapbuffer-dummy.m */, CFF243F787BCE91857A23806EAB84741 /* React-Mapbuffer-prefix.pch */, F0EA3D90914575269885513BFC07386C /* React-Mapbuffer.debug.xcconfig */, 8A80985843E4723FCDE8D548AB93AC54 /* React-Mapbuffer.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-Mapbuffer"; sourceTree = ""; }; 7E05F7C425E3CCB8082C8310554F37F8 /* React-jserrorhandler */ = { isa = PBXGroup; children = ( 7962560BAE3A465763EDEF2274FEB730 /* JsErrorHandler.cpp */, 12A7093733E6C2A1819EAFD7B6275C0B /* JsErrorHandler.h */, 58CA7196E8751E8894DE84A24929D757 /* Pod */, C84EDCEBD7C570455A4C055316344D44 /* Support Files */, ); name = "React-jserrorhandler"; path = "../../../node_modules/react-native/ReactCommon/jserrorhandler"; sourceTree = ""; }; 7E346AB60CB1FC2D6B701E705FA393DF /* Support Files */ = { isa = PBXGroup; children = ( 4C138289B336DA780427BF289634EA74 /* RCTRequired.debug.xcconfig */, C31DDCFAF4110E35C011007CE400A3D4 /* RCTRequired.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/RCTRequired"; sourceTree = ""; }; 7FBA2D61D286C0E2919CE63143A0D2AC /* InputAccessory */ = { isa = PBXGroup; children = ( B357588581A44158631A618472611CF2 /* RCTInputAccessoryComponentView.h */, 20FCC48835414C2B85BB6A73AECE0309 /* RCTInputAccessoryComponentView.mm */, 0DE9453C0D97B2C7CCEC65A7D9965FF8 /* RCTInputAccessoryContentView.h */, E0E6784EF6FD3D1F4FC47BCD8E352359 /* RCTInputAccessoryContentView.mm */, ); name = InputAccessory; path = InputAccessory; sourceTree = ""; }; 7FD492DBED5762ED1C9C9342B5CDF8B1 /* text */ = { isa = PBXGroup; children = ( BCB964356FC077875C6D5B2218AF31AE /* BaseTextProps.cpp */, 86C40F819940022A549E70BECA41B61A /* BaseTextProps.h */, 4D0CA4B3C631CF1CCBBF61F2587F57B7 /* BaseTextShadowNode.cpp */, 0D6775356C3C08E3F8AEEA4E5D9A9A05 /* BaseTextShadowNode.h */, 4F46D9F3383D17EBE93722534A1D68D4 /* conversions.h */, 9E725BADB6EC401BE33F493BD4BE2793 /* ParagraphComponentDescriptor.h */, AC1448E3360F6A62DEB6D6BE3EACB26A /* ParagraphEventEmitter.cpp */, 804154B57731765E15D5EEACEF594E8F /* ParagraphEventEmitter.h */, 46EA19D378721E8E4D853840E6430E2C /* ParagraphLayoutManager.cpp */, 92EE42BB2B8D888B92EDD257DA21325E /* ParagraphLayoutManager.h */, 343040AFE22D6B494755190C0C2FC6FF /* ParagraphProps.cpp */, 3C7A8CC093D61D93FAFE2A423F9CE0B7 /* ParagraphProps.h */, 11F2C5264D76056FDC6FDCEE75FEEE82 /* ParagraphShadowNode.cpp */, 0AA655BCC979429F0F18E3B0FA7422BD /* ParagraphShadowNode.h */, B1D124CF8B584CB0F39373CE1FD657A6 /* ParagraphState.cpp */, B8E9BBBEFDC785C048DDEF9EA28FFED5 /* ParagraphState.h */, C3828F219A5F2BBBA5BAAA63512AB034 /* RawTextComponentDescriptor.h */, E66752688584187D6864081ED411C01F /* RawTextProps.cpp */, E4FDDD56EA9FAE7E380A57693269B4F0 /* RawTextProps.h */, 5C3154BBEBE29BF292E5169F75CBD889 /* RawTextShadowNode.cpp */, AE55EB0D8F0641B6A3B9BC048B6A5DF7 /* RawTextShadowNode.h */, 6D7520FE4D76AC547890B7D6B4C69894 /* TextComponentDescriptor.h */, CF8779EB6F6185F6C461B3A8E5F7DD3D /* TextProps.cpp */, 89D75BA444F9A4BBB02531A804E2707A /* TextProps.h */, 7D0C7E3FC36DCB52EB03EDF13AE747FE /* TextShadowNode.cpp */, 34DB7C7BB2A350937253113F587A18E4 /* TextShadowNode.h */, ); name = text; sourceTree = ""; }; 801DF56A3B3444504F8B94B2E6A7BF4C /* Pod */ = { isa = PBXGroup; children = ( AEC9AF86778FE1E50193C715FFD9DE49 /* React-debug.podspec */, ); name = Pod; sourceTree = ""; }; 832F23A26CFB74B21AC27D84BFD847D5 /* VirtualText */ = { isa = PBXGroup; children = ( FF822F0F4BB64652EAD4246D353613C0 /* RCTVirtualTextShadowView.mm */, C5868FE71D3976986B3E0F19F4316F71 /* RCTVirtualTextView.mm */, F7CB0C6D6849C6DA8C5BCBFA3B2651ED /* RCTVirtualTextViewManager.mm */, ); name = VirtualText; path = VirtualText; sourceTree = ""; }; 838544A1D1A3EC2F8C1F335A6B00984D /* React-RCTLinking */ = { isa = PBXGroup; children = ( 12BBC4125F0A832B58555EA01B639783 /* RCTLinkingManager.mm */, 03DD688F3EE201B455FF2DD77C7D1A1E /* RCTLinkingPlugins.mm */, DBAFEAB2E7C7332DA31C98708F3A9637 /* Pod */, 86DDD184A290FDA3E9AD90717E21D65B /* Support Files */, ); name = "React-RCTLinking"; path = "../../../node_modules/react-native/Libraries/LinkingIOS"; sourceTree = ""; }; 83D688BAE219AEF357904BE257AF956C /* Base */ = { isa = PBXGroup; children = ( 5627C2F1A2A3B2FFA118B0BD3069A5B9 /* RCTAssert.h */, 32208C8C13E5E8750C70406B6FADABA1 /* RCTAssert.m */, 9472948FA5D6097F7AAF46BA5247C4C0 /* RCTBridge.h */, 8CDDE02E3DE33048B69564671CBA6D96 /* RCTBridge.mm */, 0F9298A1BC8933244F1905CC7B380EA1 /* RCTBridge+Inspector.h */, 83E8DBA50CF66D81EB39C5BF3384B3D3 /* RCTBridge+Private.h */, 43E01084CFFDCD00B181AAEBF7F6EC46 /* RCTBridgeConstants.h */, E4216CD44D8D54D9837A48C53488FC2E /* RCTBridgeConstants.m */, 2AF790ECD36E6DBEB706E9E072597102 /* RCTBridgeDelegate.h */, E598B862EA984799230DF69702BF2488 /* RCTBridgeMethod.h */, 7E589066D508A38B86B7F0F4BC726DB0 /* RCTBridgeModule.h */, 367ACA1132BAD5F80E6CE0171064F750 /* RCTBridgeModuleDecorator.h */, 2DEEED6BBD30D6FA84E9F8A0F6D3BFB9 /* RCTBridgeModuleDecorator.m */, DAA6445F1F3582CD4A38F23C8E688A65 /* RCTBridgeProxy.h */, AEC06D85B7F38501A5719E0618BBDCB6 /* RCTBridgeProxy.mm */, 4A1561C46AF8A258D7CDA8942E5C9828 /* RCTBridgeProxy+Cxx.h */, CC1AF02076781F56494CFE9B171135BF /* RCTBundleManager.h */, 86F28687E953C2F68F76CE4BB56DE52A /* RCTBundleManager.m */, E3339D6705C5DCAD1A55DFC2EA80C646 /* RCTBundleURLProvider.h */, 485B66F0206CCA9ACBE8269CA49B3639 /* RCTBundleURLProvider.mm */, F275D02F7C84889FF25195DE592C2875 /* RCTCallableJSModules.m */, 830AFFE41A7F0C0AA095F4DB57B6BD4D /* RCTComponentEvent.h */, 41E25EEE9BD95F7330BCB968457D0541 /* RCTComponentEvent.m */, 6AAB3F0857A0C2C40FE99C2A4ED8BB69 /* RCTConstants.h */, 8DF8D4CCED43409861DD2CA66CD7733F /* RCTConstants.m */, AA1553BA7C531B0C6FB8F13D06F2F39B /* RCTConvert.h */, B5CA3E3C33E4FE87189CA5272539AA13 /* RCTConvert.mm */, E727F73300B53155B530D74924AD2BA8 /* RCTCxxConvert.h */, 182B0C702A35C8585E02CD20E58ABF79 /* RCTCxxConvert.m */, 30162323761B1AB1D7A828CC5D1BE36F /* RCTDefines.h */, 69B9588066B95155E4417D77327555CD /* RCTDisplayLink.h */, E590E42E80DFE90E35C644EC5BA97D77 /* RCTDisplayLink.m */, BAB8070C18EDCE8B518A4AD6B7ABA7D4 /* RCTErrorCustomizer.h */, 735E5FCEACBC787C7FF33D2B0A5F3CAD /* RCTErrorInfo.h */, 6A69BE346BCF36781D025E02DA26992E /* RCTErrorInfo.m */, D0FF6F026B2F3AD02FA2F0B47E571D6B /* RCTEventDispatcher.m */, 5216E04A7C94A5B08BF8F3BD20CDAAD7 /* RCTEventDispatcherProtocol.h */, 53B4E188053652EA7D2E30691509AA9F /* RCTFrameUpdate.h */, FAF931EFC80EAFDA3EA6E9A6F62665B8 /* RCTFrameUpdate.m */, DD12CDD757C637C9F44622EFFFFB58B1 /* RCTImageSource.h */, 06AB36FC020F2569C74A4684B6B4CD49 /* RCTImageSource.m */, F65EDF84A53562B923789233A6319309 /* RCTInitializing.h */, BD57ADA2122AD9C7A9EA86F634218B28 /* RCTInvalidating.h */, BAD62DA0698330C52546D1DD499A6B27 /* RCTJavaScriptExecutor.h */, F488B5803551A7C6E8D0B3F34C4823D0 /* RCTJavaScriptLoader.h */, 1CBBEDCDAA1BFA365580787F950200AD /* RCTJavaScriptLoader.mm */, FF16234911D787047083140DEC397AC5 /* RCTJSStackFrame.h */, 7B71C59B43EE3845C93BBDBA007C75CA /* RCTJSStackFrame.m */, 93E43D1F91E0AD0BD2B3B8127C452C9D /* RCTJSThread.h */, 4C4CB2CD0399561C3717DBAB197899E7 /* RCTJSThread.m */, 9EA652E4CB7DDC6698F42743A59CB48F /* RCTKeyCommands.h */, 82667B9482B97C6E5629E4F6381B1965 /* RCTKeyCommands.m */, 39650BDAA0AACD5B404A81046E1DC6C8 /* RCTLog.h */, 4695EA457448E4B94A1CB1A54D7440C3 /* RCTLog.mm */, B3842DDC8C8C33A9D3DB8FB30835698E /* RCTManagedPointer.h */, 032ED6B89EEB973216298316E5766563 /* RCTManagedPointer.mm */, 89BF32B08D57FC97C721EFC866E0143F /* RCTMockDef.h */, B1F4D64B534E21B5E81E8A4107B004EE /* RCTModuleData.h */, 13A1EDC09A69ED3292AAE26A206851F9 /* RCTModuleData.mm */, 7AB9D50DBC3A7605124A8AC121341CFF /* RCTModuleMethod.h */, CB62AF8BE005DE4640777FBFF95866BF /* RCTModuleMethod.mm */, F969DDD826E4A83C1AAE180C9E9DB314 /* RCTModuleRegistry.m */, AFB08F045558C6DADC89C84CC798C71B /* RCTMultipartDataTask.h */, 416D956A2968ACC6583A761D4976F6FF /* RCTMultipartDataTask.m */, AF67768C4A075A1A0B7A20EF50D517BD /* RCTMultipartStreamReader.h */, 65125E07440A02A058E96A2DAE8C8438 /* RCTMultipartStreamReader.m */, 5181AFE5FC05B015D0F98EAB49991236 /* RCTNullability.h */, 002E6C786A97F7958FC7E860BB5B4D1D /* RCTParserUtils.h */, AD13EA361260D530BA7944F0CFC046E1 /* RCTParserUtils.m */, 6196FA4E5DE772F34B620947921AB6EF /* RCTPerformanceLogger.h */, 5FCFFA906B90C33953D846D226E2DF4B /* RCTPerformanceLogger.mm */, 25CB321AD79DD7DE8F00445FA9998552 /* RCTPerformanceLoggerLabels.h */, DFA83A2FCE36D7B3F4FF4946AC4AA3C5 /* RCTPerformanceLoggerLabels.m */, D6AA075D0670043A067B8F82481DEBA1 /* RCTPLTag.h */, 0EAB4DE45806E1FB41C909B6AE2B53C2 /* RCTRedBoxSetEnabled.h */, FBC253E87364123EF03ADC474B7364C8 /* RCTRedBoxSetEnabled.m */, 7DF60B1D14EECCD8446FC1A15E8766B4 /* RCTReloadCommand.h */, 87D33A3159E4827D6FAE051C897E7019 /* RCTReloadCommand.m */, BD8C1858F1B1566DD6C1B389057F984F /* RCTRootContentView.h */, 0E9B6C8F56601C7A8963DC42032FDCD4 /* RCTRootContentView.m */, E54B7595EDCA1E1302CD4C135A4612AA /* RCTRootView.h */, FDAA60177E608D75C530E2C86C1BD33A /* RCTRootView.m */, 5675EDF737917D753E24442B6327797A /* RCTRootViewDelegate.h */, D51CB71E6C720763C7DFC73A256D9796 /* RCTRootViewInternal.h */, 74C292E04485F2E866A8C5507A5B0F9B /* RCTRuntimeExecutorModule.h */, 9F7378714B1A2275988B900E389392EE /* RCTTouchEvent.h */, EC17C0D5E26D47755381DCEAE6861774 /* RCTTouchEvent.m */, A6D702ACCFE3931509F2790C6E153783 /* RCTTouchHandler.h */, 52350E9ADA2301F7191C925F1DCDD5BE /* RCTTouchHandler.m */, 875E97EA9D0677F39C4C3599772B2F46 /* RCTTurboModuleRegistry.h */, 3FE4624E81D0E4F7D216C71603A6BB12 /* RCTURLRequestDelegate.h */, 0E27D0C1422F9594DB63A196340A1C0E /* RCTURLRequestHandler.h */, DDE9E8B67A4B7CFB8776B906B7C48F53 /* RCTUtils.h */, EC80A594ED6C17D4D0B191D585BE4089 /* RCTUtils.m */, F9317E9FDB1763149AA85D21D664A706 /* RCTUtilsUIOverride.h */, 1D239EA1163C5886418BBB97A80CD68C /* RCTUtilsUIOverride.m */, 2C090425A0AC38F41F277453CBF5B235 /* RCTVersion.h */, A0F0DECC4F2AEFAABCD0C3A4F368C487 /* RCTVersion.m */, A322F1AA7B7D88649BEF8224A0A6AC08 /* RCTViewRegistry.m */, AA25987508F4BAE6AA27F3B382C0C89A /* Surface */, ); name = Base; path = React/Base; sourceTree = ""; }; 85FCE44197BB47E90228E37F0C177F77 /* react */ = { isa = PBXGroup; children = ( 2351ACF698FB84D4D4492C2551003B4E /* renderer */, ); name = react; path = react; sourceTree = ""; }; 86DDD184A290FDA3E9AD90717E21D65B /* Support Files */ = { isa = PBXGroup; children = ( 0105FEC655FAF723FA2D179AFF610513 /* React-RCTLinking-dummy.m */, 0AD8F1840702844270F2F2AB1CEEAE08 /* React-RCTLinking-prefix.pch */, FA6E512F724BFB0B3D270261962078F8 /* React-RCTLinking.debug.xcconfig */, 8C190024D996EF72661EA3DECD88FD76 /* React-RCTLinking.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTLinking"; sourceTree = ""; }; 8881F374EF5A07A909ED7FC6E54D4926 /* Pod */ = { isa = PBXGroup; children = ( 09E3B1D3DA53A6062C5B417F4010FF1D /* React-RCTActionSheet.podspec */, ); name = Pod; sourceTree = ""; }; 88F775F3830FCCD985633F79D022F25B /* Pod */ = { isa = PBXGroup; children = ( AFC58F8C987D57066ED35DEFA2DA396E /* React.podspec */, ); name = Pod; sourceTree = ""; }; 891A72B2B54F324453B6DF695B8101DD /* leakchecker */ = { isa = PBXGroup; children = ( 550DDF0017EBD296665C75C459009C19 /* LeakChecker.cpp */, 0F6E474235C8459CDC4689EE8FA90735 /* LeakChecker.h */, 5676712895937C4B56B481AD3916DC06 /* WeakFamilyRegistry.cpp */, BACC1D6F0CF3D0892CC092113C7FD1BA /* WeakFamilyRegistry.h */, ); name = leakchecker; sourceTree = ""; }; 89706D6285C3873597DB28EED7CB7824 /* Pod */ = { isa = PBXGroup; children = ( F97A942E5EB0FD88E4C166A5F5716585 /* React-RCTFabric.podspec */, ); name = Pod; sourceTree = ""; }; 8D28CED4153514175A936512DC2F286F /* SocketRocket */ = { isa = PBXGroup; children = ( DD33EAFFA1FBDE7A2DA696E03388F6CA /* NSRunLoop+SRWebSocket.h */, 8176863C104CD771DDB717C9059C2ADE /* NSRunLoop+SRWebSocket.m */, 15D526144725A1A4158A2B28A0B914E5 /* NSRunLoop+SRWebSocketPrivate.h */, AE45D4CB885CACA4B317542378B0D81F /* NSURLRequest+SRWebSocket.h */, F8AFFDB6E319041377C5799A85CD2848 /* NSURLRequest+SRWebSocket.m */, F65B8FCE4C82DE06C4DC544668252210 /* NSURLRequest+SRWebSocketPrivate.h */, C9FA2111792B3263822E75649BD66902 /* SocketRocket.h */, 0B87A884215B67C149F379E4B4E20F8A /* SRConstants.h */, 2845C7EA5A46AFE22DC6C82FA344FB15 /* SRConstants.m */, DD1FD8F5FBF34CB4BF85DC2E8496E125 /* SRDelegateController.h */, 5F8810FFDF257E41E57C7103FDC6A5BB /* SRDelegateController.m */, AAF4DA1DA2D688AADC65A0DA9B5471DF /* SRError.h */, 0DFF996F36C36E3B8BE3131F1026090F /* SRError.m */, BC384C199B1347B14BCE2CC3091CC47B /* SRHash.h */, 7B292553D4F61C21C058393BBC5C292F /* SRHash.m */, 90C01A0B4DB17D752D3BDD87C1B4D35E /* SRHTTPConnectMessage.h */, 44D41289A83BA05369244074562FCAE8 /* SRHTTPConnectMessage.m */, 969D216DADA9AF02B0339E42E569D42B /* SRIOConsumer.h */, 7B514510C45046BE196402FD4E82FB33 /* SRIOConsumer.m */, AD29B45C17572843FBF6146FD5BF87E6 /* SRIOConsumerPool.h */, 6D220B48D2758B94E0D0CB1968C018CF /* SRIOConsumerPool.m */, 9C0FAA307377663772FDCD8EEA4D9752 /* SRLog.h */, 3EA37501D46115DDABA4571FDD025BD2 /* SRLog.m */, 3F93EBBC760E206C8883BE32A9915097 /* SRMutex.h */, BBAA6714B59FDAB63CB3D51FFFAB5E9F /* SRMutex.m */, 7A4D45A1805126ED1CD25C84B4FFE9C2 /* SRPinningSecurityPolicy.h */, 63DB097D064EEC088A4DDB9A0F3030F8 /* SRPinningSecurityPolicy.m */, C09D1BCC94FFE3C6143459C161E5ACEF /* SRProxyConnect.h */, CC91FDC94E55938A0F105FCC3D4FE542 /* SRProxyConnect.m */, 1C2D3D50F94DAC3059E02150AEC13F5F /* SRRandom.h */, CD0C06BAC55CB15F45E71416B7D4DA0E /* SRRandom.m */, 6117F9BDA4E91FB3D03F3728A914954A /* SRRunLoopThread.h */, DD9C6B9D5678AE4BC86F7AB978C63029 /* SRRunLoopThread.m */, 6F3CE6C5B501D1E1D2852C705DEDDBC7 /* SRSecurityPolicy.h */, 38D95650F41F3CE76BC04B5619B09B95 /* SRSecurityPolicy.m */, BBCFDB39D48C37A3AF9AA77A7A2AFE14 /* SRSIMDHelpers.h */, BAF67687A73C975DC1D89F35DD7A68A5 /* SRSIMDHelpers.m */, 11168BD52EB1FA983258A217EBF918E9 /* SRURLUtilities.h */, BA4DC46A209C68A22450F45E72C9E535 /* SRURLUtilities.m */, 73F9F5B50A8454106AEB1EAA5892325D /* SRWebSocket.h */, 00A22970BA931D4D5E31AD98D11E9EAC /* SRWebSocket.m */, 5BDBB35F633567D3A31E12423AD9197B /* Support Files */, ); name = SocketRocket; path = SocketRocket; sourceTree = ""; }; 8DC739FB8D8429D8E041D0BC40645906 /* Support Files */ = { isa = PBXGroup; children = ( 3109CDF60BA119DB536601600983564B /* simdjson.modulemap */, D2D1B033752AE5FACB195379C2792DA4 /* simdjson-dummy.m */, 464776232CDC5618B023B03B587FF834 /* simdjson-prefix.pch */, A80A385542A9347C200F57687297EA39 /* simdjson-umbrella.h */, 56909D6C087AAA9D6C77D684FEC0C328 /* simdjson.debug.xcconfig */, 481D4593ECDD5D02E193B28FEF265A45 /* simdjson.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/simdjson"; sourceTree = ""; }; 90097354ADCBD8E8098AF8B37786ADA1 /* numeric */ = { isa = PBXGroup; children = ( F3822D806026A4FCC42B9B6C3AD50045 /* Comparison.h */, 7299BD666C1DD5C0DB7343D26EB7DFDA /* FloatOptional.h */, ); name = numeric; path = yoga/numeric; sourceTree = ""; }; 90652DF1414B43CD8ACBE42D8DBC5012 /* FBLazyVector */ = { isa = PBXGroup; children = ( FA4AEB20C629FD1B5F713C79D99E301D /* FBLazyIterator.h */, ACE440831164AF324B22178CA5BE40D0 /* FBLazyVector.h */, 990F8BC877E6A94F476FC5A691AE4A54 /* Pod */, 76C3C6B0EB4CDD3ED56DD4DE72642030 /* Support Files */, ); name = FBLazyVector; path = "../../../node_modules/react-native/Libraries/FBLazyVector"; sourceTree = ""; }; 92018AB7F0340B3EA90BB235642BF56E /* BaseText */ = { isa = PBXGroup; children = ( CC9E0C53D02E49E161CC61AD2E78DD12 /* RCTBaseTextShadowView.h */, 854FD3BEF6FF2E1CB963FD11F173D53D /* RCTBaseTextViewManager.h */, ); name = BaseText; path = Libraries/Text/BaseText; sourceTree = ""; }; 922AD62EA7116A32C0061BE4E0EACDAA /* Targets Support Files */ = { isa = PBXGroup; children = ( 1428673623694BA3B3A65613421BAAF9 /* Pods-WatermelonTester */, A3F4B9A15ADC518C21865331DEFBC3F6 /* Pods-WatermelonTester-WatermelonTesterTests */, ); name = "Targets Support Files"; sourceTree = ""; }; 92E616D44D7824072E698371D7620AB6 /* Text */ = { isa = PBXGroup; children = ( FADE4C50E4C03A98702AAB8CE87A3D81 /* NSTextStorage+FontScaling.h */, 8C5791AD6F4A42E6F15A4AE3E13672C9 /* RCTDynamicTypeRamp.h */, 5AEA1EA0BA3625CC695A4E11E09FA24B /* RCTTextShadowView.h */, 4CC04D4366699171D90B6E14F8947CBD /* RCTTextView.h */, 289131589CCC21FDAAADD8DA0E1EA4A5 /* RCTTextViewManager.h */, ); name = Text; path = Libraries/Text/Text; sourceTree = ""; }; 92E7D01CFA258C8C77BA8524A57741FE /* DoubleConversion */ = { isa = PBXGroup; children = ( 0BFB85B76F6C2F9809214837BFA1F944 /* bignum.cc */, 555499AEC258DE52284D569572113A79 /* bignum.h */, B1492BA96B69489FCA50F4BBFD32CDD2 /* bignum-dtoa.cc */, 2EAAC08BE2B9CE538A0D58679E781247 /* bignum-dtoa.h */, F336A6F8A52B443F471C3A212D86DC43 /* cached-powers.cc */, 9A2D8939F820583ACA4B8154B63050D7 /* cached-powers.h */, 522269B8DAFA9F8734D95340BC29600A /* diy-fp.cc */, 33E070F404266F952E77980CFA788C4D /* diy-fp.h */, 1E7B7C0191645527408193552D9E40CF /* double-conversion.cc */, 4C4D4C35312AE9ACB8D59A46D0D6051A /* double-conversion.h */, 6A3EDF523AE8279DAD3E84193359461D /* fast-dtoa.cc */, 28D7BEABBC1EB38780017A5D14CC2E0F /* fast-dtoa.h */, 555C8E2826D8F277B972F2B66D34F22B /* fixed-dtoa.cc */, BDA3C52C76B2C3F5E9BA936CB0B3B9C6 /* fixed-dtoa.h */, 7777F6D0013ADB2C7FBD5FE217F042EE /* ieee.h */, 43EB5BDEB4E6A695F071E994CDEDF34A /* strtod.cc */, A43C1B14F1018F4B603503BF2E6E2524 /* strtod.h */, 37D820D975698FCA99C86CE71EF22A97 /* utils.h */, 5FE9DA05C0C0B80D78B3196B44520CCF /* Support Files */, ); name = DoubleConversion; path = DoubleConversion; sourceTree = ""; }; 93D7502F904C05AAAA56B79ADBFD98ED /* RCTSettingsHeaders */ = { isa = PBXGroup; children = ( 159A07D2F149809ABC30E5FCBB89938F /* RCTSettingsManager.h */, 4C8F91F7CAFA9A5744781FD95C2E01DA /* RCTSettingsPlugins.h */, ); name = RCTSettingsHeaders; sourceTree = ""; }; 969F416C821F0E4314954435098833B6 /* Support Files */ = { isa = PBXGroup; children = ( A31AB8CE7A0BE03B38908CD5083FD09A /* React-debug.modulemap */, 751490A9CC81CC3D1FD6DE9D1A2309B0 /* React-debug-dummy.m */, 15E1FB248EB6C077E99CE7C0E381D4FC /* React-debug-prefix.pch */, 55399075C21EA2F4687C29DEBD4F00E7 /* React-debug-umbrella.h */, 9033A744B6DD1EB398DCC4DEC2188393 /* React-debug.debug.xcconfig */, ADD320EC4221CCC1B76BB433ED455CEC /* React-debug.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-debug"; sourceTree = ""; }; 987A58B283B2E43F2079409981CFB845 /* ComponentViews */ = { isa = PBXGroup; children = ( 05CEFC84AD6E69D2E073A1A739700477 /* RCTFabricComponentsPlugins.h */, 69E632279F0013ADFF7F6ECDE2FAF2E7 /* RCTFabricComponentsPlugins.mm */, 6C85D2BBAE96BC15F85AA68CEEA5FD5A /* ActivityIndicator */, 39C50CAF7E26A860DBFABBAA3126DF9F /* DebuggingOverlay */, 50078C544CD6EBBBC85C62A86036987D /* Image */, 7FBA2D61D286C0E2919CE63143A0D2AC /* InputAccessory */, 4D73D71DE4243AB0D6C3E31F81E31B26 /* LegacyViewManagerInterop */, 3B6463C7A136A650C4C0140180398E03 /* Modal */, 3C90C21DA311CB0108B3C31BBC36383B /* Root */, 242C2C37DBF48E04AB5C45C85164E5C7 /* SafeAreaView */, E50F59EC71FBF8F64E1CAAD54D71774C /* ScrollView */, CB1C27507F8EEBB9AEC765B36425CCE2 /* Switch */, F7240E677890C70CE51D27DED2D05B60 /* Text */, 775DA0B9F25FAA620B6EE242111FCDA5 /* TextInput */, 4D0B065A8B7D7FCE069E4C6DD9750305 /* UnimplementedComponent */, F377A85A496896B3020FF70A98EE6A07 /* UnimplementedView */, 9DD15119CAE91A5E981F7027685255D0 /* View */, ); name = ComponentViews; path = ComponentViews; sourceTree = ""; }; 990F8BC877E6A94F476FC5A691AE4A54 /* Pod */ = { isa = PBXGroup; children = ( 8F517BDFB455C4400751998134FC0B9E /* FBLazyVector.podspec */, ); name = Pod; sourceTree = ""; }; 9AAC841AE519DF450215AC7162CD860D /* rncore */ = { isa = PBXGroup; children = ( AE1B2934FABC52774A42A595531E4F6A /* ComponentDescriptors.cpp */, AC18E26348C64BD7E409DF012EC8FD1E /* ComponentDescriptors.h */, B18233FA84BEC01AFCB96FC16BD3B983 /* EventEmitters.cpp */, 5DA7D4069EAB7AD175067D9475F75335 /* EventEmitters.h */, C80C73D05140B68E7E4D8EC8138AABF5 /* Props.cpp */, 7CE12A7D304717866DC9F308C7951109 /* Props.h */, F8025E613E68EA6B0C75074A74BB97E4 /* RCTComponentViewHelpers.h */, 1C48A5DDAEDABFF1B422CC636928EFAD /* ShadowNodes.cpp */, 21EF07FFD2345957804DF019878563CF /* ShadowNodes.h */, F3F5D9E03D596413A96FCC9292384B7D /* States.cpp */, 80C9F8ECC69EABDD6B34127E2C1EBAB4 /* States.h */, ); name = rncore; sourceTree = ""; }; 9AE2770F61ACF53CF54F135CA8071A0E /* textlayoutmanager */ = { isa = PBXGroup; children = ( 53F62FE9FCA2DB3B3BA9F838F5513256 /* RCTAttributedTextUtils.h */, D584937399C1E7BBAE37C4B6480368F6 /* RCTAttributedTextUtils.mm */, 19853EBFDCA4264503A59B9DBEDB47E4 /* RCTFontProperties.h */, 68F513FA3A624FF445C0F9B1A615E3A2 /* RCTFontUtils.h */, 0B38F938F0F9868A60309B113ECB3CAA /* RCTFontUtils.mm */, 9D0FCEB123126F6E7439D8ABC6DB35A1 /* RCTTextLayoutManager.h */, BDF4907BCEC9C6B68A50F5CBD6A193CA /* RCTTextLayoutManager.mm */, 9103371D49F49FB8704F83F623604846 /* RCTTextPrimitivesConversions.h */, 04308B32F6B6A66B18A8BFB8D050CD14 /* TextLayoutManager.h */, AC18F953AA41F612F2CB8153565DB590 /* TextLayoutManager.mm */, ); name = textlayoutmanager; path = textlayoutmanager; sourceTree = ""; }; 9BAD9866097E10B1FDB703D4D0A97D5A /* Support Files */ = { isa = PBXGroup; children = ( 6F004C69796236836B1136C0778862F1 /* React-jsi.modulemap */, 359B6CEED91D1DF8B883DC40D5E04EEE /* React-jsi-dummy.m */, 81460E74A5068268C47A7DAC94730797 /* React-jsi-prefix.pch */, 125AE03965ABF8E4C157E9FE3A55D187 /* React-jsi-umbrella.h */, 3B7CA49DCCF91C74062D35600488A355 /* React-jsi.debug.xcconfig */, 12B4501A9455AFB01AA0089214B8A38D /* React-jsi.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-jsi"; sourceTree = ""; }; 9C9762AD0A803BE78CA3EF2499AE4C3A /* Support Files */ = { isa = PBXGroup; children = ( 9A870B9A0F18A8C3F9075851CE67E22B /* React-RCTVibration-dummy.m */, D095CAA67ED3E639CF404B5BA46489E6 /* React-RCTVibration-prefix.pch */, FFE3B6010494BF1759723F25C1271613 /* React-RCTVibration.debug.xcconfig */, 11FCAB3F234C2F7A1E00B43655EF0707 /* React-RCTVibration.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTVibration"; sourceTree = ""; }; 9D053F5F3BD82C77E402C42AC8FC9519 /* React-RCTAnimation */ = { isa = PBXGroup; children = ( 222FC254D773A0163299A97B210F3B1A /* RCTAnimationPlugins.mm */, 3FA9E0C5DE547662B3285AAE677F1CBF /* RCTAnimationUtils.mm */, F1455C7DE425F051F50E3E27295C794D /* RCTNativeAnimatedModule.mm */, 9C9BD5B613E101C64C2992C9C6D47EAC /* RCTNativeAnimatedNodesManager.mm */, 9652157178DCF97B039AEF273CD86695 /* RCTNativeAnimatedTurboModule.mm */, 5544F7F93E3DBA9D61074A44C08FBD0D /* Drivers */, E695D43859938F2F0535DCEEC76C2EA9 /* Nodes */, 2F777C58C39334C896E57A642E72C935 /* Pod */, 1FB41E9CB3764DB5E3A256F2CCB3313C /* Support Files */, ); name = "React-RCTAnimation"; path = "../../../node_modules/react-native/Libraries/NativeAnimation"; sourceTree = ""; }; 9DD15119CAE91A5E981F7027685255D0 /* View */ = { isa = PBXGroup; children = ( B06BDA64A8C366F85CA16B5D0E328839 /* RCTViewComponentView.h */, A2237CD09A4316F9776CDCDA5907FAF5 /* RCTViewComponentView.mm */, ); name = View; path = View; sourceTree = ""; }; 9E4AB614B7BB9122869BB5B29BA374DF /* RCTDeprecation */ = { isa = PBXGroup; children = ( 4E105C5D9C4A539112084489DC235CAB /* RCTDeprecation.m */, 2303A255BD3099EB18229E7A20393511 /* Exported */, EEDC3AEAD2C4BEF60F0534AA24B8C4A8 /* Pod */, 44743D4355D456613604BEB051E106B2 /* Support Files */, ); name = RCTDeprecation; path = "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"; sourceTree = ""; }; 9FCD78A4E6ED7A67F3059F23B587845A /* ScrollView */ = { isa = PBXGroup; children = ( CC8769294DD05CF0DEF8259E34DE9AAC /* RCTScrollableProtocol.h */, FF88A9733D935D4DBE027D36D5B591C1 /* RCTScrollContentShadowView.h */, 42069F17D0B92E1DCE65D62807AAC0E8 /* RCTScrollContentShadowView.m */, CF44B022CA9C008F36C080D66685928C /* RCTScrollContentView.h */, 40CFEC8038EA506FF0CAC998C27E80BF /* RCTScrollContentView.m */, AD4769F2911766BA548AFD0FFEDF8426 /* RCTScrollContentViewManager.h */, E0817B1CB0DBAA45D6A064FE340FD13C /* RCTScrollContentViewManager.m */, 2C5887CFA052BA4652642CE173F3C2F4 /* RCTScrollEvent.h */, 5424951447BE1FD64194B009E9504B50 /* RCTScrollEvent.m */, DD3ED969E30456E3100D106C5E71ED9E /* RCTScrollView.h */, 314C4322103426F9256B2FBA495DB607 /* RCTScrollView.m */, 68F7A0C0E60467EF299D038EF39D12DD /* RCTScrollViewManager.h */, AD0288743440505A088DDFA69CE73173 /* RCTScrollViewManager.m */, ); name = ScrollView; path = ScrollView; sourceTree = ""; }; A00FA18D84D1E9984283141983CB75AC /* Pod */ = { isa = PBXGroup; children = ( F680F8EC8BBE5EFCCD2F2F64A35E6132 /* React-RCTAppDelegate.podspec */, ); name = Pod; sourceTree = ""; }; A07FF72E2E9957A32FBB94DD70C049AD /* node */ = { isa = PBXGroup; children = ( 7F08F17DB62670269DC70CC1F4817168 /* CachedMeasurement.h */, 48B75222BE84998C3999916E6084DAD4 /* LayoutResults.cpp */, ECC51259933A05380339556B6ABE282E /* LayoutResults.h */, 7B87E0987F27CB7E57A4A864D574EC7C /* Node.cpp */, ABA37D7615C32B1F5B407A5EE086D7F7 /* Node.h */, ); name = node; path = yoga/node; sourceTree = ""; }; A0BBD39C71A2FDD8567B42D741ACC89C /* algorithm */ = { isa = PBXGroup; children = ( BB96EF13B6D928DBB3A8D90C1ADF57D5 /* AbsoluteLayout.cpp */, 3C0913180FEC5C605ACD33BB9E09CDAD /* AbsoluteLayout.h */, 561201E4162AB6CB05D4F749A565AFCC /* Align.h */, BD47E6AE7775E09A0E4B2548E31BD9A8 /* Baseline.cpp */, EEAA1C4C0F827F9E5B0E9A8A96B8B9D7 /* Baseline.h */, 86C8906A6C460D393729CA02A57186E7 /* BoundAxis.h */, 374717629E05164C820F2052E54AAA91 /* Cache.cpp */, E7FC6C39FE3AE33F288AB26DDA6BD6C4 /* Cache.h */, B1C2DDC7533E6E8B4EB9893DC9F6FDB1 /* CalculateLayout.cpp */, E1BDFFD718B2082F582FF8627388E098 /* CalculateLayout.h */, 4319E1967E8F6E050D8E035D7E5D4598 /* FlexDirection.h */, 6D3BD65E387AF4A8FE10216CABF03885 /* FlexLine.cpp */, 82C0C34C914DB0E6E56880987BB5F0AC /* FlexLine.h */, 0D9123036D19728374029B1BD6567BA8 /* PixelGrid.cpp */, EF112ACF0D0F90B1AAF3D112F650FA09 /* PixelGrid.h */, 1AA86F8B69827747B651178FB5B21A21 /* SizingMode.h */, 9FB8DB4CA6FB75873D74FF57CA59968C /* TrailingPosition.h */, ); name = algorithm; path = yoga/algorithm; sourceTree = ""; }; A22A03BA16F7B58F55DB6463E7E394B5 /* Support Files */ = { isa = PBXGroup; children = ( 2726901F064D66A4F014D07BB986BF67 /* React-RCTSettings-dummy.m */, 76E0CAC8E63CBC0B9C2BA14BB8864475 /* React-RCTSettings-prefix.pch */, EAA2B5EA3356A9C6FCE82CC15F04FDC0 /* React-RCTSettings.debug.xcconfig */, 543D873E1BAD025BDD864DB650682C5D /* React-RCTSettings.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTSettings"; sourceTree = ""; }; A3E926B6B99537D639A917D6E500FDC1 /* Pod */ = { isa = PBXGroup; children = ( 1338B219849CEDF7FE7D3407E9663E27 /* React-ImageManager.podspec */, ); name = Pod; sourceTree = ""; }; A3F4B9A15ADC518C21865331DEFBC3F6 /* Pods-WatermelonTester-WatermelonTesterTests */ = { isa = PBXGroup; children = ( C3BDBA3AD30FF77F76488476893F6023 /* Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.markdown */, 479CC64ABABA112D0CD8C3AF4C19786C /* Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.plist */, 00F247CF24ECD2EFFF35AC12E91E6FE7 /* Pods-WatermelonTester-WatermelonTesterTests-dummy.m */, 5648100E641B6682FAC595B66FFBC6B5 /* Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh */, 03ED5FB48027087AD3888234008E8F67 /* Pods-WatermelonTester-WatermelonTesterTests-resources.sh */, D40D2FA9CCC999A6A1985688544C9701 /* Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig */, E1140A4CC7FEA96D57FF547DA1D75EA0 /* Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig */, ); name = "Pods-WatermelonTester-WatermelonTesterTests"; path = "Target Support Files/Pods-WatermelonTester-WatermelonTesterTests"; sourceTree = ""; }; A43ADC5C0EF00658ABBB46CD0A26DCD9 /* Pod */ = { isa = PBXGroup; children = ( 31660B4E9DCE9F8ABCACB98B2176D664 /* React-NativeModulesApple.podspec */, ); name = Pod; sourceTree = ""; }; A4517A17CC86213678856402DD6CC7BC /* Pod */ = { isa = PBXGroup; children = ( 468E6DDCB31D801D029C02EF35D5C24C /* React-runtimeexecutor.podspec */, ); name = Pod; sourceTree = ""; }; A590DD0675D53682B1BC144B81586431 /* ReactCommon */ = { isa = PBXGroup; children = ( FC72F8ACA9AA53954F9EF3B8A5C6F5FE /* Pod */, 608676613D8C48B8B9EA90C52743AB1E /* Support Files */, 428E61796EE85ED2EFE00325BFA5B4BD /* turbomodule */, ); name = ReactCommon; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; A7C4FF2F75EF9D72AA55D62D1EEAE11B /* React-nativeconfig */ = { isa = PBXGroup; children = ( 7D709C81D0C07E31A08F46AA3AAB09FD /* ReactNativeConfig.cpp */, 8F593DCCC2DAFF6D4243AAD2A5156F10 /* ReactNativeConfig.h */, ACEE25DEFF1B8FD9509A07B14BD19672 /* Pod */, E9C7F1CEBC634C863FBF22F630470A84 /* Support Files */, ); name = "React-nativeconfig"; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; A87C7F8D00F0CBE2558C9FABDCE778F0 /* safeareaview */ = { isa = PBXGroup; children = ( 0C897CCFDE4BF7130CDDA0286B966FDB /* SafeAreaViewComponentDescriptor.h */, 8332BB1363344A31DAAB30F13244873B /* SafeAreaViewShadowNode.cpp */, 8D1CC2D4F8A104E3B6F891431E7ECE1B /* SafeAreaViewShadowNode.h */, C25232818C41EA94B5E01D6E8903AC74 /* SafeAreaViewState.cpp */, 6344807426DBEA83083B947671B91C7D /* SafeAreaViewState.h */, ); name = safeareaview; sourceTree = ""; }; AA25987508F4BAE6AA27F3B382C0C89A /* Surface */ = { isa = PBXGroup; children = ( 762588AD3F68541107FA36AF37D053F9 /* RCTSurface.h */, 9A909CE9BFF1F0B380221FDEE11D0211 /* RCTSurface.mm */, 99E72FB672688243BE5F6E35ABA1E42F /* RCTSurfaceDelegate.h */, F1A6297972EED0526BCBF5B221AE18AC /* RCTSurfaceProtocol.h */, 37560CB0B831B9181D0E9FE412A827E5 /* RCTSurfaceRootShadowView.h */, 4343AD60D13A26A3F11E942DA9C12580 /* RCTSurfaceRootShadowView.m */, 2F8E66FF737E243487DFC9781A2605FE /* RCTSurfaceRootShadowViewDelegate.h */, 258F35FF5ABDDEBA091F066B015EE1D9 /* RCTSurfaceRootView.h */, 95FAFB9E62426C075E9E5E41D65333EB /* RCTSurfaceRootView.mm */, 7215C1FD70511C10EB945E8681577C16 /* RCTSurfaceStage.h */, BFE0C7F1527F398A2A69185EBFCF677F /* RCTSurfaceStage.m */, 8BE3CC89AB9CCAD959EA3B472BA6F99A /* RCTSurfaceView.h */, CCF757AC8F0183D61E1DA8706776938C /* RCTSurfaceView.mm */, 1BF78B5D7B2AFC98B3545C8C9DA66D16 /* RCTSurfaceView+Internal.h */, 5D505B6D5764926B812EB062BBB9F48F /* SurfaceHostingView */, ); name = Surface; path = Surface; sourceTree = ""; }; AA829DB19589EE114FF17962F6831B2A /* executor */ = { isa = PBXGroup; children = ( 2A7AEC733FC3F4650B9340E574530161 /* HermesExecutorFactory.cpp */, F7CA9A9E0677E6E622E8C0C6BFC057B5 /* HermesExecutorFactory.h */, ); name = executor; path = executor; sourceTree = ""; }; AAF010A03BDC3903E9F6EE416F6DB539 /* Support Files */ = { isa = PBXGroup; children = ( EF09FB3371BC4A515D26FC037059DD61 /* React-rendererdebug.modulemap */, 137A31E381AB4AA534731ED6AF105636 /* React-rendererdebug-dummy.m */, 9628B2A1454DADB30631AE9787FC337F /* React-rendererdebug-prefix.pch */, 654197BBD530E127C270633DB539A166 /* React-rendererdebug-umbrella.h */, 6DF638889DD6D88E1694A065C0A27BC6 /* React-rendererdebug.debug.xcconfig */, 65D4FD7CDCA49048491D835A28092DCC /* React-rendererdebug.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../native/iosTest/Pods/Target Support Files/React-rendererdebug"; sourceTree = ""; }; ABE19B1F318E966A4F2624B095AC06CA /* ios */ = { isa = PBXGroup; children = ( 18DA155471EE231088B75DA42ACDA74D /* WatermelonDB */, ); name = ios; path = native/ios; sourceTree = ""; }; ACE973C74E126DABDE76A70A939FE31F /* imagemanager */ = { isa = PBXGroup; children = ( 51582CF5BC4E40FAA616B6363DF4B4A5 /* ImageManager.h */, 36C08C7FF3DFACBC39FCE541DCF803B6 /* ImageRequest.cpp */, 2D006447B5017B8009E226E6E0AACE40 /* ImageRequest.h */, 06E34251980A9A80A1D27297F3B60B98 /* ImageResponse.cpp */, DA3239428E42490C3045975A1FC6A276 /* ImageResponse.h */, 8229FB82BEAE5318CC636C3963FFF6F8 /* ImageResponseObserver.h */, 4929D6CBAA4CA6E284FE157B1BD57DA0 /* ImageResponseObserverCoordinator.cpp */, F7D701E7AA313B498D488AA43D416F3F /* ImageResponseObserverCoordinator.h */, 340097AC9A9BF4BAD1E542E436217620 /* ImageTelemetry.cpp */, C3A0E653F207D8208760F39D89431669 /* ImageTelemetry.h */, 6F8D2287EF58ADD156913AF3C0FA5266 /* primitives.h */, ); name = imagemanager; sourceTree = ""; }; ACEE25DEFF1B8FD9509A07B14BD19672 /* Pod */ = { isa = PBXGroup; children = ( A213D84A5E7EB977D2213B29DCE12629 /* React-nativeconfig.podspec */, ); name = Pod; sourceTree = ""; }; B11DA0315979959E0AB787938C67B80B /* graphics */ = { isa = PBXGroup; children = ( A67702A5BB9FE81CBF2BBE1340D12764 /* Float.h */, A7237AA79C8E933F1CAB9DE0BDD0B0A5 /* HostPlatformColor.h */, 608A42FC636CC123077F86095300FDD8 /* HostPlatformColor.mm */, 00D0EC9AE90BED5D79B9CAE98DAE902E /* PlatformColorParser.h */, 0622E264BBCF6697F9CA2A6775362A8F /* PlatformColorParser.mm */, F98C396019C17AFAC2E6514744534845 /* RCTPlatformColorUtils.h */, 9C46ED3EA004CAAFEB6FEF89B7AF2F0C /* RCTPlatformColorUtils.mm */, ); name = graphics; path = graphics; sourceTree = ""; }; B129C0FB664B93F4F1F73414EFD96E55 /* Support Files */ = { isa = PBXGroup; children = ( 926F478934D57018C94BFB51AF5970C8 /* React-FabricImage-dummy.m */, B77DA9E6D8A90D0BDB388D5130CFD6A5 /* React-FabricImage-prefix.pch */, 9EB5D5242D476B50F6A84EA6ECF95DAF /* React-FabricImage.debug.xcconfig */, E2B590F31CAE0577156C53171FEFEF07 /* React-FabricImage.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-FabricImage"; sourceTree = ""; }; B15E0C00053600CFA57B847087372FA8 /* Support Files */ = { isa = PBXGroup; children = ( 26A39561F9B37AA0AFE252734CC8891B /* React-Fabric.modulemap */, 6FC0DBFC356D08CBF5C195717E58618A /* React-Fabric-dummy.m */, A616744A9B894FE3A9A3A1E53EA13CA3 /* React-Fabric-prefix.pch */, 26902E3757E5D682AFC6C628AF7BD7DD /* React-Fabric-umbrella.h */, 157BEE76ABB5FC023F974602BC587B8A /* React-Fabric.debug.xcconfig */, AD2710EC72C624EB87F820405512AA45 /* React-Fabric.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-Fabric"; sourceTree = ""; }; B25136050555256BFCFC476D4F2E42A5 /* Support Files */ = { isa = PBXGroup; children = ( DEABC445C02152DF5E8A3B39AF9F9162 /* React-RuntimeApple-dummy.m */, 92F7C8691D5DED9946359E1BF469148A /* React-RuntimeApple-prefix.pch */, DAEB77A1371F2344F999D880C3A90E0B /* React-RuntimeApple.debug.xcconfig */, 1E8D7F44C4927699FE5FFB25997A96F8 /* React-RuntimeApple.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../../native/iosTest/Pods/Target Support Files/React-RuntimeApple"; sourceTree = ""; }; B322D4E234E4C7B133CEB5251E96FFA5 /* Pod */ = { isa = PBXGroup; children = ( 2B044C64ECD89051E79887F2F8FE57D5 /* React-RCTNetwork.podspec */, ); name = Pod; sourceTree = ""; }; B47DE51F7E87E94310FE2E0772666C1F /* Support Files */ = { isa = PBXGroup; children = ( EE85F8AC8EA65010815F0C5ED9826E3F /* React-RCTFabric.modulemap */, 887027C7FF12FB7338869C776A7CEFBF /* React-RCTFabric-dummy.m */, 26F81C8DE0CC3E7649EDDFE8DFDED895 /* React-RCTFabric-prefix.pch */, 51F1662929364AF9AB1F5EFD515C39CA /* React-RCTFabric-umbrella.h */, 4B2CA6BADDBABE04EA3FC848D2DFBA7C /* React-RCTFabric.debug.xcconfig */, B0846154EC35111B28426222762CF880 /* React-RCTFabric.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-RCTFabric"; sourceTree = ""; }; B4A3BEC460C2E79702F6805C5AEBDE6A /* Support Files */ = { isa = PBXGroup; children = ( C609BD215F18E3B6ACB3641DBF1B200C /* React-rncore.debug.xcconfig */, DFDFCA220F4E0487D24966099C7AC6BD /* React-rncore.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-rncore"; sourceTree = ""; }; B4B40FE5744EE0430F1085186F5C39EE /* config */ = { isa = PBXGroup; children = ( A2433055CA015DE51A8A13B2AAAE5155 /* Config.cpp */, 94463E432EBBF80182004B420404987D /* Config.h */, ); name = config; path = yoga/config; sourceTree = ""; }; B4F2C154142416109FA78F907E5B3547 /* inspector-modern */ = { isa = PBXGroup; children = ( 15801941DFE125F4459DBA217046DB1E /* chrome */, ); name = "inspector-modern"; path = "inspector-modern"; sourceTree = ""; }; B4F53C80BB006D69F1048DEA8ECF9441 /* Pod */ = { isa = PBXGroup; children = ( BBDAB2AA9EAB8FF0DA4637A65C5425B5 /* RCTRequired.podspec */, ); name = Pod; sourceTree = ""; }; B508D299A713547C4C4004662C7A360E /* Pod */ = { isa = PBXGroup; children = ( C8D1859AA4CE974FEC530D5684F25E81 /* React-FabricImage.podspec */, ); name = Pod; sourceTree = ""; }; B511BCC300594DF84D6CFDF2B8F5EC1B /* Modules */ = { isa = PBXGroup; children = ( 52FA0467104A3E0506B07D0F4D83C94A /* RCTEventEmitter.h */, BC3E9A24F4A8A5F217C0B3D7CA9EBAEB /* RCTEventEmitter.m */, 70EAB919380BCD43218C8BA42AA15E04 /* RCTI18nUtil.h */, 412F97DED69E29E2A7146162142A9FF5 /* RCTI18nUtil.m */, 9E1FB69666F2C09161B2E1A2535CC43A /* RCTLayoutAnimation.h */, 3F5C6F9D16A1A659B8CB769DDEC445DE /* RCTLayoutAnimation.m */, 41EC212BC4905E428935BED6DA109744 /* RCTLayoutAnimationGroup.h */, 9A9617B1637CABEDDB4A95483334CB93 /* RCTLayoutAnimationGroup.m */, 9D5CD2B433F8011D807EABA3442374E7 /* RCTRedBoxExtraDataViewController.h */, A24606F72343E19E228B3000540EC8FD /* RCTRedBoxExtraDataViewController.m */, 034CBF9A353EFD13BB30389694CD06AF /* RCTSurfacePresenterStub.h */, 051EC8684B270AADB5DFA351ABA355C2 /* RCTSurfacePresenterStub.m */, F9E3E83E4B4A307A114208C3D1F55BC8 /* RCTUIManager.h */, 203BEC3028800526EBC07D8825427B33 /* RCTUIManager.m */, 2DACD0189E12C716542A13351B01B317 /* RCTUIManagerObserverCoordinator.h */, 1B9B081A11AD725344E711226D80CA4B /* RCTUIManagerObserverCoordinator.mm */, E52A7A09F41E9EADFAE686BE3A607CBD /* RCTUIManagerUtils.h */, 1749F4295539F83F4BA4637FE2C39F34 /* RCTUIManagerUtils.m */, ); name = Modules; path = React/Modules; sourceTree = ""; }; B55C8F8258F2B3E9506350BCA4960CD1 /* Support Files */ = { isa = PBXGroup; children = ( A063348780E28C80CDFC691EE7F2C78D /* React-RCTText-dummy.m */, 7CF233AD4BB7085F76873B35632274C6 /* React-RCTText-prefix.pch */, 4C664E2A68FE1D2FA0458ED4485088A9 /* React-RCTText.debug.xcconfig */, D9F52BE4E914A8BB9CDE60E8D6D9067A /* React-RCTText.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTText"; sourceTree = ""; }; B5929053EED1A42988DD52096135D1DF /* platform */ = { isa = PBXGroup; children = ( 17687E905102CFB96BD9AEFECEF5AE1F /* ios */, ); name = platform; path = react/renderer/textlayoutmanager/platform; sourceTree = ""; }; B94E9D8C2704D4246938A5CC85A14EBE /* Support Files */ = { isa = PBXGroup; children = ( 0BFAD875BDFCB017A45CCF7A1AD8AE34 /* boost.debug.xcconfig */, 7157DE4FF39A888005019A6919C6304D /* boost.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/boost"; sourceTree = ""; }; BAC1F5670DD858B1236132F8639008E3 /* React-jsitracing */ = { isa = PBXGroup; children = ( EBFE74400A08332EC438126C9FF15469 /* Pod */, 1BCE377F5B918C589D8C41BFEE151E47 /* Support Files */, ); name = "React-jsitracing"; path = "../../../node_modules/react-native/ReactCommon/hermes/executor"; sourceTree = ""; }; BB754E89BE3831E5159A960856345A34 /* textlayoutmanager */ = { isa = PBXGroup; children = ( BD485A11989B9D9DA494C47A98A5F09D /* TextLayoutContext.h */, 97A95308B6D47ED59BD75934355ADDF6 /* TextMeasureCache.cpp */, A8AFB5F8828D81AB1CE785F5BD4DC61F /* TextMeasureCache.h */, B5929053EED1A42988DD52096135D1DF /* platform */, ); name = textlayoutmanager; sourceTree = ""; }; BBA1DA7B3C252A6F03099451D25F6163 /* RCTTextHeaders */ = { isa = PBXGroup; children = ( 4B62C6CE9D343C56E332C5816AC631E6 /* RCTConvert+Text.h */, B6501460FCAA027C674AB185B605DE1E /* RCTTextAttributes.h */, 169BFFC72EEA61E28D560B57CD831CD0 /* RCTTextTransform.h */, 92018AB7F0340B3EA90BB235642BF56E /* BaseText */, 09B2533288AEB5522A0AC33E92C2A79E /* RawText */, 92E616D44D7824072E698371D7620AB6 /* Text */, 793AE592768F2FF4FE8BCFFBD5461C49 /* TextInput */, 28B32097553A4D29F0613AE45FD6F381 /* VirtualText */, ); name = RCTTextHeaders; sourceTree = ""; }; BE20CA3BB20E13CB19270700923F126B /* Pre-built */ = { isa = PBXGroup; children = ( 0BE37755D7657BED9301FBB569B8B3F9 /* AsyncDebuggerAPI.h */, CF0CC535988C4C141BA1AF044FA0790A /* Buffer.h */, F0868E477C8DA25C9CE631F4131B2C2F /* CallbackOStream.h */, F21C8B792A111FE6F3696917CC8DD458 /* CDPHandler.h */, F5DE3D6B8F9687E6EC775B55B6F528E4 /* CompileJS.h */, 553967D7C1E460B2FF3E819215A2EC75 /* CrashManager.h */, 4ECA42F97FBA48C55D95F16BEB240CE4 /* CtorConfig.h */, 4A3E59A3CCA7D3024E30ACFBCE006065 /* DebuggerAPI.h */, 32C612DD10C738AA24310145376A8756 /* DebuggerTypes.h */, 3D85474333A22BB675B886226092484B /* GCConfig.h */, 9A62D11BB82CB6A24A13CAE4D0F6632A /* GCTripwireContext.h */, 9668F22AD81B720182D9C7F1133935F2 /* hermes.h */, BA8E2E00FBECFA8789E6D5D77E043D32 /* hermes_tracing.h */, C6CD5E1D0A40A3BD51F58A9904E1EF53 /* HermesExport.h */, 8399C3FD21BCD992B7C6EF8E65D7C561 /* JSONValueInterfaces.h */, 3329F3B4064042B4C1D4BDA08241A80B /* JSOutOfMemoryError.h */, 68A69845486F5D6ABF2D33019902E0E4 /* MessageConverters.h */, 3D158DF7B71452128F42AE32CD1FB9F8 /* MessageInterfaces.h */, 5E08C1229511DE5F11A5D0235BB42789 /* MessageTypes.h */, 5F7413AEE06FEB42B977D20F6A6C5D5E /* MessageTypesInlines.h */, FAB1A2AAEAD536D71C08D8CE9C14F3D8 /* RemoteObjectConverters.h */, CAACD991F2CF50067B4447D8419F5B05 /* RuntimeAdapter.h */, 52FB16E6F0925BA9FE8A9E2D77086C08 /* RuntimeConfig.h */, E0A2C37B0C4B50C0E4B5366E9B824F12 /* RuntimeTaskRunner.h */, 83D60FC0472C44AE0EB307C8EBC943AA /* SynthTrace.h */, F713F14C913C9157BF2CDF26BF5F279C /* SynthTraceParser.h */, 193D60EE177645F7547D71A2810D872F /* ThreadSafetyAnalysis.h */, 341947EF5C4F684C9D99E78AEFE835DC /* TimerStats.h */, 3C3F05EDE07B5034C963F9F6CE67E5A9 /* TraceInterpreter.h */, 558A2EBBB9500DC131AEC7C0A404E3B9 /* TracingRuntime.h */, D7F184A9DEEFB2AB2A561E78336A49B5 /* Frameworks */, ); name = "Pre-built"; sourceTree = ""; }; BEC512EF35E614CECC60A855831857E0 /* src */ = { isa = PBXGroup; children = ( 340139964ADFE59B05FAC656AF821E52 /* fmdb */, ); name = src; path = src; sourceTree = ""; }; C12F12E3B279B81398C6639DEECE0A6D /* debug */ = { isa = PBXGroup; children = ( C7956DABB206C95A799C60F678F09BB6 /* AssertFatal.cpp */, 6EBA55B04BADD1F4ABB709051EF06C89 /* AssertFatal.h */, 37F9065181BD972C82D47E7F46FFBBAA /* Log.cpp */, 45D864901AF697040097CE5D0FCD717F /* Log.h */, ); name = debug; path = yoga/debug; sourceTree = ""; }; C491125B0694A5263BA6D6B79B51B471 /* Profiler */ = { isa = PBXGroup; children = ( E927497A3701D0E6AEB8ED2AF83B915B /* RCTMacros.h */, 6C00DC34CBF0C27CE15A57901CFE39D1 /* RCTProfile.h */, 4ABE2E714C1175CCFDB7C0F72CE4B611 /* RCTProfile.m */, 942322E848A28FE125A1C9A84F16D548 /* RCTProfileTrampoline-arm.S */, 4340CE46967CD10BEFC7859B55898A6D /* RCTProfileTrampoline-arm64.S */, 45BE03CDBA0ACF037784CA42392A374F /* RCTProfileTrampoline-i386.S */, CCC91F4882F9AD8CBAA5347E76589517 /* RCTProfileTrampoline-x86_64.S */, ); name = Profiler; path = React/Profiler; sourceTree = ""; }; C51C39BEFC7949604ADA6AC55E5398EC /* Pod */ = { isa = PBXGroup; children = ( 70E1E31923E3DCF47FC3FD8EA049C063 /* React-RuntimeApple.podspec */, ); name = Pod; sourceTree = ""; }; C5534E19718C643BAE8858AE6BB0FE84 /* shared */ = { isa = PBXGroup; children = ( 79BAE705D4C5DDF1F3222FC86D3DC110 /* Database.cpp */, 0991F79F05F020ABEA8DE3AFD72A7B08 /* Database.h */, B8C5097DA5EAA46AB4FF88AA6F8D6F5B /* Database-batch.cpp */, C339EF963613DD1C7090A3FB6A1FE530 /* Database-jsi.cpp */, C22873AF49E658011AF710A68003CFF7 /* Database-query.cpp */, 79E82AE02BC6B9CCABF7C62D230F794F /* Database-sqlite.cpp */, C508463B95043E7E700C0414CB55E23A /* Database-turboSync.cpp */, DD3A4B3EC7E715CA1E677122514FEFE8 /* DatabaseBridge.cpp */, 0A190A345B19C93427A45B7A6CC52FDF /* DatabasePlatform.h */, E0D2348E6FB9A55FE8BC6E93389B9432 /* JSIHelpers.h */, BBC2C48E868D4877BF151ED8DFB3604A /* Sqlite.cpp */, 8E38DDBA8B3F295D182A2E60FC4F968B /* Sqlite.h */, ); name = shared; path = native/shared; sourceTree = ""; }; C5B10AF863EC53C54719EC59F9CC650D /* React-RCTNetwork */ = { isa = PBXGroup; children = ( 976E60D841E3AEC485885E2A36C843AC /* RCTDataRequestHandler.mm */, 6424FC955FE5FD23D675EE7BA5D86749 /* RCTFileRequestHandler.mm */, 445199601546E45056A827DFB23F4148 /* RCTHTTPRequestHandler.mm */, 3C987DB1C26CAE3839EA088A41B167DF /* RCTNetworking.mm */, 4811CBBB4C46F7C891F1F7E426628CBD /* RCTNetworkPlugins.mm */, C2CB66217B1E850D02CEDC8E10195C8A /* RCTNetworkTask.mm */, B322D4E234E4C7B133CEB5251E96FFA5 /* Pod */, 7BD5E4D43BF00F3F339A867FCAD643D8 /* Support Files */, ); name = "React-RCTNetwork"; path = "../../../node_modules/react-native/Libraries/Network"; sourceTree = ""; }; C5E0AD954B2C8CBF163BFEA23778781C /* Pod */ = { isa = PBXGroup; children = ( 86FBADB1ADE032495E4DC6B80BC37BFB /* LICENSE */, 963DAA4960B3974FFBB8DE571F07B048 /* README.md */, CA9B104BA2C9A1DDE13179A64BD014B9 /* WatermelonDB.podspec */, ); name = Pod; sourceTree = ""; }; C609D0506D4AF74A3EAD5ACBA228FE4B /* Pod */ = { isa = PBXGroup; children = ( 58025C2DBA6481310CDDD6E2AF2341E3 /* React-utils.podspec */, ); name = Pod; sourceTree = ""; }; C62706AD1BF7CA5DF853101FF69F904A /* CxxUtils */ = { isa = PBXGroup; children = ( 4B3894240F9F245719EDB8B1ADBE0FC7 /* RCTFollyConvert.h */, C2A33F80F6DC091C0F0D9E733BE5F440 /* RCTFollyConvert.mm */, ); name = CxxUtils; path = React/CxxUtils; sourceTree = ""; }; C6E76E34C429F02CBDC707F1A8342D80 /* Pod */ = { isa = PBXGroup; children = ( 210ED618EB38145265ACDB75A78B11AB /* React-jsiexecutor.podspec */, ); name = Pod; sourceTree = ""; }; C770325626FBC1F743FBD2F22EC31C72 /* fmt */ = { isa = PBXGroup; children = ( 1731535F9FF01DC7DE5758D88594F0CD /* args.h */, C00CAED0C07FE50074D84727D68C0B0A /* chrono.h */, B32465A7B304C55D416657F5078DC373 /* color.h */, 8F172D220F95765CFA361637BAAAA417 /* compile.h */, 5E745C18EFA47BE9828C298066E9F6F5 /* core.h */, 52FAACC98D9676B0C965D8484DF9C51E /* format.cc */, 22BBDCDC9E5BB7D47CB6C63BAD034B4B /* format.h */, 808C3DF73EDCFD47A21FDB81992E3ADB /* format-inl.h */, E8A80DDDD78CE9D5045965620EF601A1 /* os.h */, 5D826D3061A245096B1C382B690FA981 /* ostream.h */, 08986599EA9FB16EDB0C58CAC0A405F8 /* printf.h */, 75A1EC0889B2FF4178C4B15A8C8EAE88 /* ranges.h */, B6A866CA3EE1ADEEDF264EFCEC0F0F57 /* std.h */, D181C872FF8059D494F78C6BAF4765FA /* xchar.h */, D12D82697A8CE4747CC012D92562A376 /* Support Files */, ); name = fmt; path = fmt; sourceTree = ""; }; C84EDCEBD7C570455A4C055316344D44 /* Support Files */ = { isa = PBXGroup; children = ( F3EC6BC861DA61263020A86CB2DDC307 /* React-jserrorhandler-dummy.m */, D1AD68A2EB98FCB1663BE5F5916FA962 /* React-jserrorhandler-prefix.pch */, 7125A220ACBD1ACDAEC0A33004BF401B /* React-jserrorhandler.debug.xcconfig */, 9414F0292C4CA9913CEEC7F61F3E32B3 /* React-jserrorhandler.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-jserrorhandler"; sourceTree = ""; }; C92330707FC79B77F1F9F67268D78E99 /* Support Files */ = { isa = PBXGroup; children = ( EC10CD8ABAB17D209CCD5FD3E42F2367 /* React-utils.modulemap */, 5AC69D8640FF5ADCACD89B82CB9E1110 /* React-utils-dummy.m */, 1D3B27D8E985D0BA1FD18A34437498E8 /* React-utils-prefix.pch */, AE729B821BDA784B45AFF8A65039D05F /* React-utils-umbrella.h */, 997842162A2D57DA5A2636E554A28F19 /* React-utils.debug.xcconfig */, DB93F82879D24A74491FCA910E31A733 /* React-utils.release.xcconfig */, ); name = "Support Files"; path = "../../../../../native/iosTest/Pods/Target Support Files/React-utils"; sourceTree = ""; }; C9FCE5218763A0186A2053CC46F95127 /* React-CoreModules */ = { isa = PBXGroup; children = ( 79F8EC97641C2D3B51B87DB668615513 /* CoreModulesPlugins.mm */, BB7DBF3AC428AEC78260C9DC4CA49106 /* RCTAccessibilityManager.mm */, 27D5B6E7F5A0D017C0081BAF95A9E8AF /* RCTActionSheetManager.mm */, D5F538BF3285BAC9B7F01B8E674355D6 /* RCTAlertController.mm */, A0CFE0D44D175E1A391C2129A3C3EBEF /* RCTAlertManager.mm */, 4DA4CDB70B04DEA86A7EA3B9F6B6C060 /* RCTAppearance.mm */, D3897A8D57FA7C5B759902F2D3CEA752 /* RCTAppState.mm */, D2540C4EDDFB7CCCB96D25E31E2F57B8 /* RCTClipboard.mm */, 3B03D90250BBDC20A58910E9BAE12F13 /* RCTDeviceInfo.mm */, F277FEF63DB910E42C66936C8592693A /* RCTDevLoadingView.mm */, 1A57B42E48BE086DEBC492BDE3BBD3C9 /* RCTDevMenu.mm */, 7DB6E20FB18E511B8C98C3656B364612 /* RCTDevSettings.mm */, FBC65E4ADA0C93CAF6F0857E1767393E /* RCTEventDispatcher.mm */, B7DAE91AFA1AEC4FD04392E412D1D4CE /* RCTExceptionsManager.mm */, 963A0C06992A9D8797E0E1BA9A14DB04 /* RCTFPSGraph.mm */, 735061C18CFE3076A4C204A7CCE1D301 /* RCTI18nManager.mm */, ED075D1904D8F2A132AD09A4B59B2BE9 /* RCTKeyboardObserver.mm */, AD4FFB5F1B30B5584201585D67221D38 /* RCTLogBox.mm */, 498AA16C83135C6DAEFCEAE97628D0D5 /* RCTLogBoxView.mm */, A50AFF02E96B2A9FAD9F4CDF5D05C365 /* RCTPerfMonitor.mm */, 581AB95CD00868534D40A89FC7298A36 /* RCTPlatform.mm */, 93802254A23BD2E21FC5B6FC137CB7EE /* RCTRedBox.mm */, 959BD66DF33D8DD073B3E7135B2954F7 /* RCTSourceCode.mm */, 99F1158A135CC58252D861686496E8DE /* RCTStatusBarManager.mm */, 0C8E237AA818FABF9B7C6CDB03FA448A /* RCTTiming.mm */, B3A27AAA848CC83E397DC39A9E46B682 /* RCTWebSocketExecutor.mm */, 78BE41CF03440AB09080B75960AF8455 /* RCTWebSocketModule.mm */, 6BE57199DB090FF99258CF386E542C42 /* Pod */, 4199B976A5C419A1F04918D0722A7C49 /* Support Files */, ); name = "React-CoreModules"; path = "../../../node_modules/react-native/React/CoreModules"; sourceTree = ""; }; CB1C27507F8EEBB9AEC765B36425CCE2 /* Switch */ = { isa = PBXGroup; children = ( E3C150EC730101E36E8725C466227757 /* RCTSwitchComponentView.h */, B5F4950574A43023D083A3E3731760A1 /* RCTSwitchComponentView.mm */, ); name = Switch; path = Switch; sourceTree = ""; }; CDF374E5D2600436F59137E53DD04D31 /* RCTAnimationHeaders */ = { isa = PBXGroup; children = ( 2AE808F4B51B3F24D61558A014CF22A5 /* RCTAnimationPlugins.h */, 16ADA7CA003A807781299F67A1578DF4 /* RCTAnimationUtils.h */, 16AFB3F99F57DB5AEF193C3CB1BC1A49 /* RCTNativeAnimatedModule.h */, C32C30AB7EF3BB474BC4B4DFD2FC61C0 /* RCTNativeAnimatedNodesManager.h */, D4758B7FCDEC2C0806CEE3D106040093 /* RCTNativeAnimatedTurboModule.h */, 4A46F00ADE41243FF50380AFC2AD40BC /* Drivers */, 10FFE0FE0711EED444C4D76DA41F2C38 /* Nodes */, ); name = RCTAnimationHeaders; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 5C6B0CD72E8A9F5C6D91CAD1C829C7D8 /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, 783EF0CE31D3DCFC7A57A0C0ECD52B61 /* Pods */, 6ED0E8A627772310985098275F934F04 /* Products */, 922AD62EA7116A32C0061BE4E0EACDAA /* Targets Support Files */, ); sourceTree = ""; }; CF850A691E67115665F695CA710F2E18 /* React-RCTVibration */ = { isa = PBXGroup; children = ( 4F21E8185A97B7403E0532DBCEAE20ED /* RCTVibration.mm */, 8FA3CC41DE47D337EEEC4F2523A5A366 /* RCTVibrationPlugins.mm */, 1FDC21BFAA89EDFEA43D90A05DE15156 /* Pod */, 9C9762AD0A803BE78CA3EF2499AE4C3A /* Support Files */, ); name = "React-RCTVibration"; path = "../../../node_modules/react-native/Libraries/Vibration"; sourceTree = ""; }; D03F2C1C0E708D1EE41BA8FC148D50E6 /* TextInput */ = { isa = PBXGroup; children = ( E1530C1A41641E337C100090EDB4CD24 /* RCTBackedTextInputDelegateAdapter.mm */, 857ABB199F3E6193128196415203918E /* RCTBaseTextInputShadowView.mm */, EB9567C0DEFF8F845D6478F3CFDBD1AF /* RCTBaseTextInputView.mm */, F6BD4677A9809440AF9F9498F2E0115B /* RCTBaseTextInputViewManager.mm */, A846AD31825FC26747481C82D51B3091 /* RCTInputAccessoryShadowView.mm */, 1DC27EF5E8E8BA5F9132B0790BA1C022 /* RCTInputAccessoryView.mm */, 85234EF8449BC006516D4A6A62B9F438 /* RCTInputAccessoryViewContent.mm */, BCA23E868E68363495BB8DE9AA165F77 /* RCTInputAccessoryViewManager.mm */, 75AFE3EB6154E61D88A4F383A81B33F0 /* RCTTextSelection.mm */, 1C5BD8DCB4B8638E0C634F76212A69CB /* Multiline */, 05D208CCDDA721B65483F6B6D4343BF1 /* Singleline */, ); name = TextInput; path = TextInput; sourceTree = ""; }; D0FE7326D90BDBB8817B58F84A343BD0 /* React-Mapbuffer */ = { isa = PBXGroup; children = ( 020982AF78C5E396F3E5F3B1DAB98A95 /* MapBuffer.cpp */, BAA3CCBDA9FDF8609E0495A48B080979 /* MapBuffer.h */, 0BD79853D3326455B2119D890DC49815 /* MapBufferBuilder.cpp */, 3954F92E91DCCCD316FC570C39037C55 /* MapBufferBuilder.h */, FD8D4E4ECFB0CC25130AE3BEED4A319A /* Pod */, 7D83EBCBEB0E38F249D38F10862CE71D /* Support Files */, ); name = "React-Mapbuffer"; path = "../../../node_modules/react-native/ReactCommon"; sourceTree = ""; }; D12D82697A8CE4747CC012D92562A376 /* Support Files */ = { isa = PBXGroup; children = ( 267039C69B6ECCDE54B5EF1AD931D1C0 /* fmt-dummy.m */, 46EDCFA392F4FA15E1D6087289E0B88B /* fmt-prefix.pch */, A275DD42FB75440C81B2F60BD6B23196 /* fmt.debug.xcconfig */, 77CE993F9446B711B336A9AF061A5504 /* fmt.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/fmt"; sourceTree = ""; }; D14FDBC87BCB72B38F032D1F010498A1 /* React-RuntimeCore */ = { isa = PBXGroup; children = ( F310EF16EE5EAA4714DFD2F1713D1B73 /* BindingsInstaller.h */, A1EEF0D5633DA10F123E110EDC4C4947 /* BridgelessJSCallInvoker.cpp */, E9B0012D9AC4C6EE1721D712922AF216 /* BridgelessJSCallInvoker.h */, 145565A2AB5DD84BEAFA27EAFA2F4141 /* BridgelessNativeMethodCallInvoker.cpp */, 77660F5EBDC0FC5CF88F31395F69A2D6 /* BridgelessNativeMethodCallInvoker.h */, 4FE6AAB9CCD62E8CE2B1E03FA145C8B8 /* BufferedRuntimeExecutor.cpp */, 5D8D501AFD4360EBEB5A66144AEC1729 /* BufferedRuntimeExecutor.h */, 6536CE777152C1FAFBE3DC240DF67324 /* JSRuntimeFactory.cpp */, D2E2734D8657ABDA8E52005D327C59A4 /* JSRuntimeFactory.h */, 1C7F9675F0DDF7D607F4527AEEA7CE9A /* PlatformTimerRegistry.h */, D82A92B30EAD44574D7D78331C054CBF /* ReactInstance.cpp */, D50E86E9CDA03CB5CEA275C7EE896DD2 /* ReactInstance.h */, C178BA891B154BE1B7A5B0CF16AFD27D /* TimerManager.cpp */, 0F8273DFC8BCEB15B1ACE7AA5FB60DFA /* TimerManager.h */, 4AFD33C580B9C27DFC196AD23BFED6E7 /* nativeviewconfig */, 46AB12B78F8981DAECDCA361493F2B5C /* Pod */, 205065C8C5001FF4D791D75300C3DDAB /* Support Files */, ); name = "React-RuntimeCore"; path = "../../../node_modules/react-native/ReactCommon/react/runtime"; sourceTree = ""; }; D4EBE8B064BC082A240389166A5EC4F8 /* renderer */ = { isa = PBXGroup; children = ( 9AE2770F61ACF53CF54F135CA8071A0E /* textlayoutmanager */, ); name = renderer; path = renderer; sourceTree = ""; }; D72407561996DAEEB789275205FC335D /* Pod */ = { isa = PBXGroup; children = ( 128F50FE92E188CCCF4F6F5CFB09C64F /* LICENSE */, 62BB6D3A4CA3201C55AA818B8A0753A0 /* README.md */, 673B55D5784B9139A1BB1AEE5F4945A2 /* simdjson.podspec */, ); name = Pod; sourceTree = ""; }; D796999F7EB66C9E901D5459591C6456 /* Fabric */ = { isa = PBXGroup; children = ( DC2247332E34E9A5EEAC651BFE23CE54 /* AsymmetricThreadFence.h */, 357C89461C2B2C6319BF4ADE3900971C /* AtomicNotification.h */, 96489235CABA0BF8A10434FC133718C8 /* AtomicNotification-inl.h */, BC6B8699949BC42E05A2CD3F716AFC65 /* AtomicRef.h */, 22BF4B17D357A3BD3840AF11EBE43257 /* AtomicStruct.h */, C9BBAB8DD3A07A56FC902CC374E80A3B /* AtomicUtil.h */, AFE2AC3DE4D98F6A8B6D36ADB8E51F46 /* AtomicUtil-inl.h */, 1F4BF0D6B00930EFF4155DC9B790AFDD /* Baton.h */, 47ECF5C97B3CE613ADC79EB219369BD2 /* CacheLocality.cpp */, B0A1643BF71DE16FFA228713DA55E535 /* CacheLocality.h */, F9281ACFABCEF5289629EF6589504A67 /* CallOnce.h */, DB05D38A61483D308412FA789EE36CBC /* DelayedInit.h */, 1C93DB36FA986D128CB97DE275C7A0B4 /* DistributedMutex.h */, 25B4E76DD481D3490220E28604E55673 /* DistributedMutex-inl.h */, 55EADA43B34BE3D62BAE2D869390C842 /* Futex.cpp */, 91E5E966C9BA06A775879A6EFFEF786D /* Hazptr.h */, 672462DC44BB30457BE236484F3C6E87 /* Hazptr-fwd.h */, 099CB5926F7A7C10C82306F50F31CAE7 /* HazptrDomain.h */, BB06B409B4DDC6FA88630157B314F883 /* HazptrHolder.h */, 66C9CDB63BA2D2FD4FCD5F884193C864 /* HazptrObj.h */, 3FFEDA5AF4FED3EB1CC515BC9BAB2760 /* HazptrObjLinked.h */, 21CDEC81B1AACA4065BD3385AB630454 /* HazptrRec.h */, D802137E8093DB1F0B0848206D7FCB8E /* HazptrThreadPoolExecutor.h */, C7891A1695A92EF0EE3D79FC7792120E /* HazptrThrLocal.h */, 256EFD340D35D7E450AACBE294E874A8 /* Latch.h */, C57BEDEC1840FD8209B8FAD43401C99D /* LifoSem.h */, 4E606A9762AB8D4C06B74BC1924936FF /* Lock.h */, 0E956492B6B4F762B69C00A6496D5AD0 /* Malloc.cpp */, 7A7404AB8D8964BFE0531C56682163D1 /* MicroSpinLock.h */, F138DB447C457AE8D0B432C87AB6D5C2 /* NativeSemaphore.h */, A4DBF56470408F62F5CFC5811EC41C55 /* ParkingLot.cpp */, 0D1AF6F139CF74E2FE8BDA319FFEE74E /* ParkingLot.h */, 1BBB556BC44275845C988BDF27E10880 /* PicoSpinLock.h */, A945AE383969D5B4AC29974625C53F64 /* Rcu.h */, 6551222A25B1F6FAF1575662C8BDA2AB /* RelaxedAtomic.h */, 4F3F30A04837205FCBA040E0445525A6 /* RWSpinLock.h */, CA69419C699C779F51EC2294FE37593C /* SanitizeThread.h */, AD601E06293D3A3930BE7C2006B41F2B /* SaturatingSemaphore.h */, 11C43FEC006F4FB4810E35B57EDCC84B /* SharedMutex.cpp */, 2CCBE13D47A90960E21168709D81A256 /* SmallLocks.h */, 1841AD95444E2505711CA1DEE133B7F8 /* ThrottledLifoSem.h */, 1DD6F27078A03BF0ED7DCF3591290691 /* Utility.h */, D1C29624546038DCFAE9385CBC490A7F /* WaitOptions.h */, ); name = Fabric; sourceTree = ""; }; D7F184A9DEEFB2AB2A561E78336A49B5 /* Frameworks */ = { isa = PBXGroup; children = ( FD2AA627BA11571293760EA92516290E /* hermes.xcframework */, ); name = Frameworks; sourceTree = ""; }; D80B2E04C127C418884E728E8A977978 /* RCTBlobHeaders */ = { isa = PBXGroup; children = ( 181D4079537F9E8B578405C805CEE545 /* RCTBlobManager.h */, 91946E0E55C67A006BFC6A09B6757F34 /* RCTFileReaderModule.h */, ); name = RCTBlobHeaders; sourceTree = ""; }; D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { isa = PBXGroup; children = ( ); name = Frameworks; sourceTree = ""; }; DBAFEAB2E7C7332DA31C98708F3A9637 /* Pod */ = { isa = PBXGroup; children = ( 69486EEF399C8CC4D8DAE942C37D23FD /* React-RCTLinking.podspec */, ); name = Pod; sourceTree = ""; }; DC8EACDE4AF3CC4AF53714C50C9E43B9 /* Pod */ = { isa = PBXGroup; children = ( BB8765CFA285D06EB4EA1DE8DE702634 /* React-hermes.podspec */, ); name = Pod; sourceTree = ""; }; DDB3043473A4FC0439CCC1690F6C6C38 /* Multiline */ = { isa = PBXGroup; children = ( 15AD43283A6A2C9FC3B3AFE6DCF2E636 /* RCTMultilineTextInputView.h */, 55B1D50AB670D1ED574D945561008297 /* RCTMultilineTextInputViewManager.h */, F6312EB0499C783D68B98C5D0AFAB4A7 /* RCTUITextView.h */, ); name = Multiline; path = Multiline; sourceTree = ""; }; E0A5B121D952F6317F2792EC9958D5E3 /* React-RCTActionSheet */ = { isa = PBXGroup; children = ( 8881F374EF5A07A909ED7FC6E54D4926 /* Pod */, 405D2A29856880C542E96FFF01AB4D38 /* Support Files */, ); name = "React-RCTActionSheet"; path = "../../../node_modules/react-native/Libraries/ActionSheetIOS"; sourceTree = ""; }; E154B3C37FBBBA22F41876AC4AFD874F /* I18n */ = { isa = PBXGroup; children = ( 8E76F01C60DFCE85A1C8CB416B3636D3 /* FBXXHashUtils.h */, 650E79C6CD8DFAF97DD3E4B49C99A6BB /* RCTLocalizedString.h */, 4181C0A4A1994121AF233A5C57DEC990 /* RCTLocalizedString.mm */, ); name = I18n; path = React/I18n; sourceTree = ""; }; E1B9AAA4CBCF3083A1AA8A1962070956 /* Support Files */ = { isa = PBXGroup; children = ( 90E8031BF4BBAA174907FCBE801328F4 /* React-runtimescheduler-dummy.m */, D6E3C9F461BA9508AFA8E2471F36E21F /* React-runtimescheduler-prefix.pch */, EA980E88736BC513D1E4D3CF3B6A67E8 /* React-runtimescheduler.debug.xcconfig */, 734BE1C2E4FE1B7AA7823A95F6F55FB4 /* React-runtimescheduler.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../native/iosTest/Pods/Target Support Files/React-runtimescheduler"; sourceTree = ""; }; E435C56675DDB8A410B49F7C7073460A /* inputaccessory */ = { isa = PBXGroup; children = ( 12C530B1088E418C923CD9F26CBCAB6F /* InputAccessoryComponentDescriptor.h */, 10CFAB7D8A0F2282F1390473E5C37F0A /* InputAccessoryShadowNode.cpp */, 5176B30F1DFC1E15711AA1F63DEFEEE3 /* InputAccessoryShadowNode.h */, BF131B6BFD3FDF6FD3D006300FEC04E3 /* InputAccessoryState.h */, ); name = inputaccessory; sourceTree = ""; }; E50F59EC71FBF8F64E1CAAD54D71774C /* ScrollView */ = { isa = PBXGroup; children = ( 5466515A64A57AE3158EEA66741CDABC /* RCTCustomPullToRefreshViewProtocol.h */, 3E169D2216CF9E719B147E7377742BBD /* RCTEnhancedScrollView.h */, A349B258597025E561C3C8C773B51674 /* RCTEnhancedScrollView.mm */, 51B45045020F47D86FEF4BD034627881 /* RCTPullToRefreshViewComponentView.h */, E82D575C7FB3C2A029BADE7276472510 /* RCTPullToRefreshViewComponentView.mm */, 671925498D3BA63FE33CF36268979415 /* RCTScrollViewComponentView.h */, 63BFBBE25C646A1C221EEA23F4224C1D /* RCTScrollViewComponentView.mm */, ); name = ScrollView; path = ScrollView; sourceTree = ""; }; E695D43859938F2F0535DCEEC76C2EA9 /* Nodes */ = { isa = PBXGroup; children = ( DAEBDA32E972C2DD6BC87FC03C2F7B79 /* RCTAdditionAnimatedNode.mm */, C7CB9D39DA448A9F742A4B023B065E17 /* RCTAnimatedNode.mm */, 5825A770C846E9DE0D37D57F8AE02E36 /* RCTColorAnimatedNode.mm */, 0314883711F418F964E23FC8DC255846 /* RCTDiffClampAnimatedNode.mm */, 18590B13A8701CBEA8A9383645C889B3 /* RCTDivisionAnimatedNode.mm */, 9EED1EEAD5AA1DD78D49501ECED7AB7D /* RCTInterpolationAnimatedNode.mm */, 375DFEFC5E87FCB287285426D6DAA812 /* RCTModuloAnimatedNode.mm */, AF0447D9E9E638217D6EABE45C7E0632 /* RCTMultiplicationAnimatedNode.mm */, 717D5148DA07668AC04A61F52407FF5A /* RCTObjectAnimatedNode.mm */, F9741807E424A3C28F079A8146D8AF4D /* RCTPropsAnimatedNode.mm */, A613E889F5C29F0DAC3CCA3F322423D6 /* RCTStyleAnimatedNode.mm */, A07442CD10380BE0C2F7C19CA5D62FB6 /* RCTSubtractionAnimatedNode.mm */, DE4D8C3CE090B2BA0138B08B60165BFD /* RCTTrackingAnimatedNode.mm */, 5742CED06F824159A9F9C6FCDF8F66EB /* RCTTransformAnimatedNode.mm */, 62B08039C2AE783CAF032BCB76890355 /* RCTValueAnimatedNode.mm */, ); name = Nodes; path = Nodes; sourceTree = ""; }; E6EB6DD72A8650E83440A9AD73A354CA /* Pod */ = { isa = PBXGroup; children = ( 3EA8CBF160B60CE7141E34124CD98495 /* React-runtimescheduler.podspec */, ); name = Pod; sourceTree = ""; }; E70F21A12A20C6724851C6CD41B425A1 /* React-RCTText */ = { isa = PBXGroup; children = ( 0096A03750976681A81FDECEB7A7D8BE /* RCTConvert+Text.mm */, 8980AF1403E1F2A16DA44CAC4004F1E9 /* RCTTextAttributes.mm */, 5A4DFC42D5801C6801825A9C1CAD37A6 /* BaseText */, 28763FCA9414FF721C7399FFAEF0EB3F /* Pod */, 340E82E2438D743D828946C5B70EFC33 /* RawText */, B55C8F8258F2B3E9506350BCA4960CD1 /* Support Files */, 411AD2DEE636250CEA28E7CD2D46AF64 /* Text */, D03F2C1C0E708D1EE41BA8FC148D50E6 /* TextInput */, 832F23A26CFB74B21AC27D84BFD847D5 /* VirtualText */, ); name = "React-RCTText"; path = "../../../node_modules/react-native/Libraries/Text"; sourceTree = ""; }; E7362482BFF22AC30709A403B38CB2BE /* React-runtimescheduler */ = { isa = PBXGroup; children = ( D4586CC35438203A980E60618B09852C /* primitives.h */, B9CF763D328B9FF7CD87693E3153F680 /* RuntimeScheduler.cpp */, 5E78187A78E9550C8C47E82A7E0800C4 /* RuntimeScheduler.h */, D2E26EF832C651D9123567DC1E118CA8 /* RuntimeScheduler_Legacy.cpp */, BF9077AF110CAC64D90AC1EDA3F0B610 /* RuntimeScheduler_Legacy.h */, 1D12F92E6DE4195516C44922291730FB /* RuntimeScheduler_Modern.cpp */, 45D9999C07AC6FD97A5897196483760E /* RuntimeScheduler_Modern.h */, 3F3E458396D3574B4ADE0076519B87B9 /* RuntimeSchedulerBinding.cpp */, 949C0E997EA3B7239902690DA5D564D5 /* RuntimeSchedulerBinding.h */, AEF49BE28E7D87B31F7411604BFADC49 /* RuntimeSchedulerCallInvoker.cpp */, 6D66D180322220310B33E06C2A6650D3 /* RuntimeSchedulerCallInvoker.h */, D7139195D968D34865DEE54652AEED4C /* RuntimeSchedulerClock.h */, BB8A5342B551F92B8A2537BCC6ED51F5 /* SchedulerPriorityUtils.h */, 750B7BB6414518C2A827B8877B15A353 /* Task.cpp */, 96FCCADF61AA384004BF02F11E1A50B9 /* Task.h */, E6EB6DD72A8650E83440A9AD73A354CA /* Pod */, E1B9AAA4CBCF3083A1AA8A1962070956 /* Support Files */, ); name = "React-runtimescheduler"; path = "../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"; sourceTree = ""; }; E9848832428BBAC0DCE23FA8BD7350ED /* Support Files */ = { isa = PBXGroup; children = ( 42F83B7067F1043FA268569B56994602 /* React-jsiexecutor-dummy.m */, C6ADA6DF7563BCB106FC1DEC13D21F53 /* React-jsiexecutor-prefix.pch */, 1544C565704FC17B15EBCF4F926F4C60 /* React-jsiexecutor.debug.xcconfig */, 4D27045A96C63465EC6F9A1AED2DED9D /* React-jsiexecutor.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-jsiexecutor"; sourceTree = ""; }; E9C7F1CEBC634C863FBF22F630470A84 /* Support Files */ = { isa = PBXGroup; children = ( 88DDF4F26D766FFE558EA52E582A0879 /* React-nativeconfig-dummy.m */, A8CB248587D48F0A957641CB162717A4 /* React-nativeconfig-prefix.pch */, 1AD8831E19FF419852060A20EFC9943A /* React-nativeconfig.debug.xcconfig */, 6F03806CF8FEA9AE1097FB463956AAD4 /* React-nativeconfig.release.xcconfig */, ); name = "Support Files"; path = "../../../native/iosTest/Pods/Target Support Files/React-nativeconfig"; sourceTree = ""; }; EA57B66692E93B0A9A9E960BC4CEA037 /* Pod */ = { isa = PBXGroup; children = ( E5961E4180C070D8C68E4EDF389C0A2C /* React-RCTSettings.podspec */, ); name = Pod; sourceTree = ""; }; EACCDFAE137CB6FCDBAA4DCD752C0EBD /* React-ImageManager */ = { isa = PBXGroup; children = ( A44876BED8E87761881D41D005CCA0E7 /* ImageManager.mm */, 645F364C7D0579436F0E777A3156F8C5 /* RCTImageManager.h */, EBC95FE616AEF3E48E3F113E5BB076C4 /* RCTImageManager.mm */, 4BC7B5A86B19E285F310EB16BDE027DE /* RCTImageManagerProtocol.h */, 4C0E7A0629DD1A33991E0281C1D7EA6F /* RCTImagePrimitivesConversions.h */, 52E49CCBB965394C8B3C6525BA37644D /* RCTSyncImageManager.h */, 34310C6EE4D078D016C21151602FCF90 /* RCTSyncImageManager.mm */, A3E926B6B99537D639A917D6E500FDC1 /* Pod */, 6824F05EE4AE2E8974BD71AAFD1A6F32 /* Support Files */, ); name = "React-ImageManager"; path = "../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"; sourceTree = ""; }; EB2153CF68A1D5871553D3223D7F5456 /* React-jsiexecutor */ = { isa = PBXGroup; children = ( 80C0E79E7C53BAA868A44B3B53AEDC66 /* JSIExecutor.cpp */, 2AFDFA1B816E14B8A48D630F83DC6574 /* JSIExecutor.h */, F89962533E4FDDA2F999DA26DF69D135 /* JSINativeModules.cpp */, 6DB0EF48E6F6F59EEEBA2E0AB6C7E410 /* JSINativeModules.h */, C6E76E34C429F02CBDC707F1A8342D80 /* Pod */, E9848832428BBAC0DCE23FA8BD7350ED /* Support Files */, ); name = "React-jsiexecutor"; path = "../../../node_modules/react-native/ReactCommon/jsiexecutor"; sourceTree = ""; }; EB32039CA10C7E1FEE8133FB3FA9F43E /* componentregistrynative */ = { isa = PBXGroup; children = ( DD04C8CE4CFE3A8CBF7FEFC33B333653 /* NativeComponentRegistryBinding.cpp */, D6270B25D28322D56823F16246CD7C57 /* NativeComponentRegistryBinding.h */, ); name = componentregistrynative; sourceTree = ""; }; EBFE74400A08332EC438126C9FF15469 /* Pod */ = { isa = PBXGroup; children = ( 411C75B9AC2022189E60C99722CAFE94 /* React-jsitracing.podspec */, ); name = Pod; sourceTree = ""; }; EC087B89F1F6A6A61F86EA18064B2411 /* React-logger */ = { isa = PBXGroup; children = ( 0BD7AC8D29513BC50E69DFF8F4FD5522 /* react_native_log.cpp */, 944561AB0FA2778925F3B3BD1ACD8B3C /* react_native_log.h */, 1DDCCBF023D859DCF237EE249B0F2BAD /* Pod */, 04EF134638BEC021D2EE29A5DCDA421C /* Support Files */, ); name = "React-logger"; path = "../../../node_modules/react-native/ReactCommon/logger"; sourceTree = ""; }; ED9447BEE8DFF868BCF24CC0D1B5B302 /* Support Files */ = { isa = PBXGroup; children = ( 56124900DA31ECD2F222CD4A72DBF2BC /* React-jsinspector.modulemap */, 7E0FE53778FF8DB18F69972C1000366F /* React-jsinspector-dummy.m */, 45A5B3AB48BF8E29430504561E8566AA /* React-jsinspector-prefix.pch */, 2F2BC9F716D9565E236295A6DE40D75C /* React-jsinspector-umbrella.h */, 7B51B43D6B45FB260FFA0B15BFED390E /* React-jsinspector.debug.xcconfig */, 30800F41E56952F66104FBA05648D6FB /* React-jsinspector.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-jsinspector"; sourceTree = ""; }; EEDC3AEAD2C4BEF60F0534AA24B8C4A8 /* Pod */ = { isa = PBXGroup; children = ( 9A6F7F2DCBC2D9334AE0C6DE812A653E /* RCTDeprecation.podspec */, 7291DE7A0A52B6E6CFC50DAF5E4DE540 /* README.md */, ); name = Pod; sourceTree = ""; }; EF7F6D8BCCCAF26CB3A0B8AA094C293B /* Support Files */ = { isa = PBXGroup; children = ( 316C9C14CDBDF9673A95F2B8F066A5FF /* React-graphics.modulemap */, BBFA4AD81E9D3D79B1B796B93AE70766 /* React-graphics-dummy.m */, 20A766A5111A8B644D96FABB67848743 /* React-graphics-prefix.pch */, 34875B2D75347ECF94E81DEA4C80D47A /* React-graphics-umbrella.h */, B17B5D76BCAC42472B55462BAE850852 /* React-graphics.debug.xcconfig */, B8BDA25E90049F9C70AA8B349A93426F /* React-graphics.release.xcconfig */, ); name = "Support Files"; path = "../../../../../../native/iosTest/Pods/Target Support Files/React-graphics"; sourceTree = ""; }; F0E4C63621E9D8EECEF8366246B38675 /* React-debug */ = { isa = PBXGroup; children = ( F37B91C0C1BDCB74BF74E5D62F1A84B8 /* flags.h */, DEFDBFF0494ECD44CD200BB0D4A18A33 /* react_native_assert.cpp */, 9D634D9C7371357029E41D29AD89E979 /* react_native_assert.h */, 641D2E46DE82FDC74711D6550B34BB4B /* react_native_expect.h */, 801DF56A3B3444504F8B94B2E6A7BF4C /* Pod */, 969F416C821F0E4314954435098833B6 /* Support Files */, ); name = "React-debug"; path = "../../../node_modules/react-native/ReactCommon/react/debug"; sourceTree = ""; }; F15703C1AFFDB1BB579B720667358414 /* React-cxxreact */ = { isa = PBXGroup; children = ( 361BB64B7C65C06474C5DFD08FD49799 /* CxxModule.h */, B9E96DFFC840B1E714C6D186A6B41717 /* CxxNativeModule.cpp */, 7338ABD9F7418479DEDE3C5284F4FF6D /* CxxNativeModule.h */, 06E5E1100A0E21FAB430C3718568BD64 /* ErrorUtils.h */, FF7AD4797D7F14A650587773DE9EDC89 /* Instance.cpp */, D9D0F263D9FACBEBBE1FBF1918CE0445 /* Instance.h */, A74ED5352ACAC24B76D223C19F8C62F3 /* JsArgumentHelpers.h */, 2880387D5A0780F29656704977F6A10D /* JsArgumentHelpers-inl.h */, D666A8452A306A927BD1BED745FC5CB5 /* JSBigString.cpp */, AE85DC12DF3E30AE258ACC3C9861E350 /* JSBigString.h */, FC28EEFD6B8B7AAEB56E2A041A6DDCB5 /* JSBundleType.cpp */, 0DF430B965D7F43DCCD92803B07AD0F7 /* JSBundleType.h */, C51C4243A2C445225C52EAD81BE81D66 /* JSExecutor.cpp */, C3D78A44188C6EFED4F1A257A66CB85A /* JSExecutor.h */, 25A6D3EB52D98D8E0A7564596C8CE94A /* JSIndexedRAMBundle.cpp */, 005EE10ECBC2C2E6ED007588CF1B3163 /* JSIndexedRAMBundle.h */, D37C2939F3CFD83C906796976DC6425E /* JSModulesUnbundle.h */, 3615AC64FDF6640D810E405776FA9A03 /* MessageQueueThread.h */, B01C2C65E7B02816E8148154C56575AF /* MethodCall.cpp */, 3863C406F7D65140B03ADDF3E62B9914 /* MethodCall.h */, 80D64042B21EA7CEEB535422CBABD3F1 /* ModuleRegistry.cpp */, C9E855C72DB65E8045F7D611DB8E0AC7 /* ModuleRegistry.h */, FBE36ADE7B7AF7E211B4A734D83A30BF /* MoveWrapper.h */, E9E1F270CEDFF108574DFFDBE7F91985 /* NativeModule.h */, 723CB5670ECFFB16F7B8F339EE9DB637 /* NativeToJsBridge.cpp */, 865BCA647C0A650C5EADD1CCF31CFA14 /* NativeToJsBridge.h */, 7B6F9E5C10CE8D8B1931589BD93D12D7 /* RAMBundleRegistry.cpp */, 3A7C0933E0C4119F5E32E5A260746A2F /* RAMBundleRegistry.h */, BE03DA74B3DF71926399B020ADB5C3CC /* ReactMarker.cpp */, D3779D2E5E9D11A2A28A3B557D2841F9 /* ReactMarker.h */, 1DA258A2CCF7FAA7A20EA853EAEA18AE /* ReactNativeVersion.h */, 2552D17D22931F4E3F05CF400B52A72D /* RecoverableError.h */, 816B94D26D0966A297B8BFCB1F24039B /* SharedProxyCxxModule.h */, 643840DD64D54B52A2193F98673994AE /* SystraceSection.h */, 10CB6C85BE8F5695B82D105949AE2B98 /* Pod */, 4A43E51CD514F13C00201889AD651875 /* Support Files */, ); name = "React-cxxreact"; path = "../../../node_modules/react-native/ReactCommon/cxxreact"; sourceTree = ""; }; F377A85A496896B3020FF70A98EE6A07 /* UnimplementedView */ = { isa = PBXGroup; children = ( 629C51A688E90B65323CE6CC51796EE5 /* RCTUnimplementedViewComponentView.h */, 509A9FBAE4B5971C315FA3AB4924204D /* RCTUnimplementedViewComponentView.mm */, ); name = UnimplementedView; path = UnimplementedView; sourceTree = ""; }; F54FF6B14BCA0B94B3F5524E725B995B /* React-RuntimeHermes */ = { isa = PBXGroup; children = ( B640A9964EA3E8305895667CD6375FAB /* HermesInstance.cpp */, 019F5B5B17C82713C4D6098E01A6E634 /* HermesInstance.h */, 2BAC0805E5BEF3B1325B53C8584C41FE /* Pod */, 5A762D82420F4B4EB73CBB7A080CFF38 /* Support Files */, ); name = "React-RuntimeHermes"; path = "../../../node_modules/react-native/ReactCommon/react/runtime"; sourceTree = ""; }; F7240E677890C70CE51D27DED2D05B60 /* Text */ = { isa = PBXGroup; children = ( B0AF45BF7087251B0C904F885ED8178D /* RCTAccessibilityElement.h */, B868435FC1BB39A3949840802519A500 /* RCTAccessibilityElement.mm */, 68EE2EFB5FD67165CD0BE5CB10F52DDD /* RCTParagraphComponentAccessibilityProvider.h */, 8CB48239EFF087F22AC48A83F592D64F /* RCTParagraphComponentAccessibilityProvider.mm */, 704A79E5BDF7B5ECE6197D355854F3A9 /* RCTParagraphComponentView.h */, 350583A27DECF7088A05CC2259BE2E98 /* RCTParagraphComponentView.mm */, ); name = Text; path = Text; sourceTree = ""; }; F8229B1A04A686B9D6A8515E959D405C /* enums */ = { isa = PBXGroup; children = ( 7C322EC9FEFA80208EF7FC20F8E76803 /* Align.h */, 3F64B0C65747B5007B92D204D69F6EFC /* Dimension.h */, A27676D6AF709B183CC889284CE2B3D1 /* Direction.h */, 9D7DA62E7DF50F0A454C529AA78EA7E5 /* Display.h */, 9A5F0251C69A9CCF2DB3222CE170671E /* Edge.h */, 0ACDA1105A253290970D63F1EB10F574 /* Errata.h */, 2462C72B87ED90695E43B971F24B8FCF /* ExperimentalFeature.h */, D042C4DD00523E4DF1235E10F891754B /* FlexDirection.h */, 0EAE4B2A9C96F883E85714C869494F81 /* Gutter.h */, CA736D745963DE632943D6EE6AE51217 /* Justify.h */, 795A0388C8652FBA4A957C30BE9222F8 /* LogLevel.h */, A5FD51AD36118D278A13D28B6A1C0F24 /* MeasureMode.h */, 4C4D1C251906CB5D9F8086B2747C1522 /* NodeType.h */, EC5F5A9DB399E74A3B0F0CDEE200B40E /* Overflow.h */, D2F955F57435151EED343EB06358A2A7 /* PhysicalEdge.h */, DA12408D51CF845CE9C49609B11D2C6D /* PositionType.h */, EA4EE4C6FAFA0A824AFDB30A96D0C144 /* Unit.h */, BCA6A0AD322E97D31E8AB398E6F754C1 /* Wrap.h */, 229E898FFA1C9E93F86539379E9096C3 /* YogaEnums.h */, ); name = enums; path = yoga/enums; sourceTree = ""; }; F85781294F189F756291D8B95825B440 /* React-RCTFabric */ = { isa = PBXGroup; children = ( F5A6371CE2CB24DC0532ACC93642CC48 /* RCTConversions.h */, 12F4585D8579A5039D742D7E3913D0B6 /* RCTImageResponseDelegate.h */, 3A50B808D51766F1C0B42436A7163DDD /* RCTImageResponseObserverProxy.h */, 7ACDCCE812E169B5C2EE32A4A130D907 /* RCTImageResponseObserverProxy.mm */, 8D7883FA7052AFA06DF3F841FBBB33EF /* RCTLocalizationProvider.h */, C488747CC15D138B30ADB8E498B04FF4 /* RCTLocalizationProvider.mm */, C1A69366D6E38FE28ED9651968AA7CF6 /* RCTPrimitives.h */, 4013A3D961F88A9A042C082ECAEB35E8 /* RCTScheduler.h */, 619ABD655227A08759F91622DF2A1E18 /* RCTScheduler.mm */, E0402A818FA8A0C89E390D0D4EC00165 /* RCTSurfacePointerHandler.h */, 44356704310DCCAB77D9F8693D62FE0B /* RCTSurfacePointerHandler.mm */, 4B2DFF23AC104B04562F5A613D62A6E2 /* RCTSurfacePresenter.h */, 456E948706116C0DD64555FF6BF85B08 /* RCTSurfacePresenter.mm */, D0D6E9C9334A02233898F7AD14D17E2C /* RCTSurfacePresenterBridgeAdapter.h */, DD2869F37A6F486F8994AEF1E2A9E0D4 /* RCTSurfacePresenterBridgeAdapter.mm */, 62DB4477408C47E85F683E8ED165D3AB /* RCTSurfaceRegistry.h */, 32D1CC8F0E612A18C597E5BDCD724B17 /* RCTSurfaceRegistry.mm */, F4A1A873A0B3D3C8636143BB6282A12D /* RCTSurfaceTouchHandler.h */, 1D68855FFC5514B5F5A3FD7EF50735D4 /* RCTSurfaceTouchHandler.mm */, CEC15E29682C912628AE02FBF18DB8D6 /* RCTThirdPartyFabricComponentsProvider.h */, E9AD225EDBC81406F600822BE5CB48E9 /* RCTThirdPartyFabricComponentsProvider.mm */, 2362BA983B00A2A04C7C991889E743A5 /* RCTTouchableComponentViewProtocol.h */, 17004CCFD3DD9375E623A963E13D18C2 /* Mounting */, 89706D6285C3873597DB28EED7CB7824 /* Pod */, B47DE51F7E87E94310FE2E0772666C1F /* Support Files */, 7C1A3D49344E732F8B3C50E94B38EBAC /* Surface */, 2870CF1C2308D80731D8890A76D25817 /* Utils */, ); name = "React-RCTFabric"; path = "../../../node_modules/react-native/React"; sourceTree = ""; }; F8992DC800D868156F55D8C1A840B2EA /* event */ = { isa = PBXGroup; children = ( 6CEE94FB9A70376F30A45C598232AD61 /* event.cpp */, 3C6D5DD14D9959F1BCDA9EEF40E8671E /* event.h */, ); name = event; path = yoga/event; sourceTree = ""; }; F8E0BC164A267E96DD24FE4A280E7765 /* Support Files */ = { isa = PBXGroup; children = ( C7C5E5529D9183D4DA7499E3C615C519 /* Yoga.modulemap */, 73301DA76E70E83388C9A33BCF56CEE5 /* Yoga-dummy.m */, CA2B21403EE25DB9893B6E8891C8E2DD /* Yoga-prefix.pch */, 4EE65A27409B6614EB4E7E08374FDCA8 /* Yoga-umbrella.h */, 49C7723A5D97C7404CB0972A1F44276F /* Yoga.debug.xcconfig */, DB803AD9555BB8D6B00BBA6644681627 /* Yoga.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/Yoga"; sourceTree = ""; }; F917AFEA46CC0EA11BC6D81EB226EEDE /* modal */ = { isa = PBXGroup; children = ( 337FF88F1B3B7E14D22211EF9A8C01DC /* ModalHostViewComponentDescriptor.h */, ED8BCB98B8CAFA45445802548B32ED28 /* ModalHostViewShadowNode.cpp */, A5FAB647D0F4DBFEAA683CD3AFF2F587 /* ModalHostViewShadowNode.h */, DABCCB9297D8973E3EB46EEFEDDEDCB4 /* ModalHostViewState.cpp */, 26799F85A2F48699DF73E4A5B1EE067A /* ModalHostViewState.h */, ); name = modal; sourceTree = ""; }; F999F8978D07FB924296B37D54A540C5 /* boost */ = { isa = PBXGroup; children = ( B94E9D8C2704D4246938A5CC85A14EBE /* Support Files */, ); name = boost; path = boost; sourceTree = ""; }; F9CB7550FD5E52C38F904E2F2BA99527 /* Support Files */ = { isa = PBXGroup; children = ( B041282BB6E0CD0755E03B990F035982 /* React-RCTBlob-dummy.m */, C089C57BC7269AC9D829D12FB382C87C /* React-RCTBlob-prefix.pch */, 8FC5170482B4001507331897446093A4 /* React-RCTBlob.debug.xcconfig */, 2E2A892270F483593BF828FD99446809 /* React-RCTBlob.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/React-RCTBlob"; sourceTree = ""; }; FA5D227825AB5923FACC474B9DB3F384 /* CxxModule */ = { isa = PBXGroup; children = ( 824AF1EEC669FDA2DBC78CB48CBC86B4 /* DispatchMessageQueueThread.h */, 080F0694AFBEBB45493A735532A9B8F8 /* RCTCxxMethod.h */, 37689F6A0CBD1039206E7D3A8E8E6C68 /* RCTCxxMethod.mm */, C6D26752B3DE0424E4FA28589D9108BA /* RCTCxxModule.h */, 3E8E0103E022F0A7BE670C99DDEC11FE /* RCTCxxModule.mm */, D3F40B6C62C59C16116BE5B43DD2B6E4 /* RCTCxxUtils.h */, B96DBA623627412849117547371D9FEC /* RCTCxxUtils.mm */, 4489977C9B5B35F7F5A112139189B7E0 /* RCTNativeModule.h */, AAD779B1757E51874AD3E315AE0911BF /* RCTNativeModule.mm */, ); name = CxxModule; path = React/CxxModule; sourceTree = ""; }; FA71C039003B0E9153109D272FAAA931 /* Support Files */ = { isa = PBXGroup; children = ( 51396501E3E25FB7DCB5E276B819C556 /* WatermelonDB-dummy.m */, A807F600D199623AAC1E47F99AD43C8F /* WatermelonDB-prefix.pch */, 0FE5FBB2B14D4BC374CECD01A71C50C3 /* WatermelonDB.debug.xcconfig */, 6387BDDE6369AEDABBA8E222A92D7DDE /* WatermelonDB.release.xcconfig */, ); name = "Support Files"; path = "native/iosTest/Pods/Target Support Files/WatermelonDB"; sourceTree = ""; }; FB232A0FE04B688B88B0BD685A108283 /* Support Files */ = { isa = PBXGroup; children = ( 7F7D564B2A15203C1BFCF6B38C70A0CF /* RCTTypeSafety.modulemap */, 606BAB14D960C896D177B10A3540386B /* RCTTypeSafety-dummy.m */, EA282133F1BB10E022D47B6CACE22054 /* RCTTypeSafety-prefix.pch */, 7780098F7787B2514F2C008CC3E13B73 /* RCTTypeSafety-umbrella.h */, EDE4EBF1DFE11D301F8A60F2D5B99F29 /* RCTTypeSafety.debug.xcconfig */, E5CB5398F86031A46AD389FAA73E2323 /* RCTTypeSafety.release.xcconfig */, ); name = "Support Files"; path = "../../../../native/iosTest/Pods/Target Support Files/RCTTypeSafety"; sourceTree = ""; }; FB52750D97B167EC630A39D38431B791 /* unimplementedview */ = { isa = PBXGroup; children = ( DA13FC9D0FEA58079E338182B1BAE1B2 /* UnimplementedViewComponentDescriptor.cpp */, E80581A669DE626F703216374FF4C3A1 /* UnimplementedViewComponentDescriptor.h */, E9C75E943A657F3153FF32A050DA7592 /* UnimplementedViewProps.cpp */, 459B7A62CD1A78C3B1D3BA7499CB76CD /* UnimplementedViewProps.h */, AF7E566A1E46C435965177310C115248 /* UnimplementedViewShadowNode.cpp */, 22A6AF9D5AAC8F547507F26CAC3BE8EA /* UnimplementedViewShadowNode.h */, ); name = unimplementedview; sourceTree = ""; }; FC37D3F31B7D90CFC347522DC090973D /* UIUtils */ = { isa = PBXGroup; children = ( 568619787B3509509A5FFEA27285F968 /* RCTUIUtils.h */, B597F21D264FDF22B451D67257AA9EF7 /* RCTUIUtils.m */, ); name = UIUtils; path = React/UIUtils; sourceTree = ""; }; FC72F8ACA9AA53954F9EF3B8A5C6F5FE /* Pod */ = { isa = PBXGroup; children = ( 482077692C71BA225ECEBBE9626B7C22 /* ReactCommon.podspec */, ); name = Pod; sourceTree = ""; }; FD407F481179C9D21976E957BE8A96A5 /* SafeAreaView */ = { isa = PBXGroup; children = ( 8B75886BB83AA90D3B2DEFB75224490C /* RCTSafeAreaShadowView.h */, 6C8572256406ADB7551DFDDCDC585255 /* RCTSafeAreaShadowView.m */, AEE7D821FE2F99E06D93025BCCDE581E /* RCTSafeAreaView.h */, D63DB3EEA2658569FE4F58A50743B58C /* RCTSafeAreaView.m */, E38561935D0A79B947D909F1708ADA95 /* RCTSafeAreaViewLocalData.h */, 7B65B6162E9749D1E3F3D1232D886392 /* RCTSafeAreaViewLocalData.m */, 285863D5864C49AC3FDF1567E1986DDB /* RCTSafeAreaViewManager.h */, BB971ED75CA1674F0FAAC4500BBC50A4 /* RCTSafeAreaViewManager.m */, ); name = SafeAreaView; path = SafeAreaView; sourceTree = ""; }; FD8D4E4ECFB0CC25130AE3BEED4A319A /* Pod */ = { isa = PBXGroup; children = ( 5CD701537B4A3BB9EB36F3D0373E62EC /* React-Mapbuffer.podspec */, ); name = Pod; sourceTree = ""; }; FE5C1FDF3515727A0670E951FDDE706D /* RCT-Folly */ = { isa = PBXGroup; children = ( 908D006CABFC90D4BADBF7B0C2544818 /* Access.h */, 6629455746E57DAB397BA5E289A81B37 /* Access.h */, 997B7B2A3CC26B9D704D7CB940D7E4C6 /* Align.h */, 5AE62E3EA1E11A2011DFB36206854AB4 /* Aligned.h */, C91E89106F76162BEA0A7DF8511D586A /* ApplyTuple.h */, 10F169E67E9F6AF9D77C49B765487E70 /* Arena.h */, 466A8EAE41785C3EA08D830470EABB6B /* Arena-inl.h */, 792014C5B5CC53C6A4E7C3EAFA69D6ED /* Array.h */, C5691B7E1407E2A5D9208B3CCFBC6BDF /* Asm.h */, 0C81656E6394B680E495643EDC27FC6E /* Assume.h */, 5D024556120FC57697C2ECE69C53D36B /* AsyncTrace.h */, AFAEF578C155F412D05E26AF9E63C602 /* AtFork.cpp */, 84861068E0BD421B437C1FB5C00F434D /* AtFork.h */, 6D2C764374D96A2A95EB7DEDB1AD4B23 /* Atomic.h */, 0C73DEF93EB855958CC048BCB076258B /* AtomicHashArray.h */, 3C581B89704C6C579DD637F11045901A /* AtomicHashArray-inl.h */, 8B7D86572DB2B5C7CF324979D3984A2B /* AtomicHashMap.h */, 861717776176D0307718AB2E8E102C67 /* AtomicHashMap-inl.h */, BBE2B529666092F7DEC3C687F33200F0 /* AtomicHashUtils.h */, A7CDF9E97D044762C37CF380DC086899 /* AtomicIntrusiveLinkedList.h */, 0E4412A2483337D140CD540D4751F2FB /* AtomicLinkedList.h */, 473969280531057CD249A18AC62DD076 /* AtomicUnorderedMap.h */, 13DDAD72F9C7DC4D814F4D340784ECEB /* AtomicUnorderedMapUtils.h */, 5BD78C8466D2DAC22B989C5EFC592BAD /* Badge.h */, 7AB42AC0EB19257BDB4CB23DD77110E6 /* base64.h */, ECF657DA48FE202E91262C142A30C2EA /* Benchmark.h */, 79935ABC77CDB209D63CDB2A5C8B0F40 /* BenchmarkUtil.h */, 7A3BCF7F218979C84533F1F242327D9F /* BitIterator.h */, 20FF0CE1BB1AB7D514D968DD961923FA /* BitIteratorDetail.h */, E743BFAD7A14315554014A32748265E1 /* Bits.h */, 7B0A8E8F61759E910B9953C7FF640925 /* Bits.h */, F59815A7A4241A59BAFADEAB6160D7C8 /* Builtin.h */, 54C3134B4FA97F946996018EB76D6F2B /* Builtins.h */, 63F5F0571EA83996B53E596BF37008E4 /* Byte.h */, FC43226FF6ADEAB1549A1CDD67BEC74A /* CancellationToken.h */, 91B53126F00778E3792F8BDC9EF291DA /* CancellationToken-inl.h */, B159432A0D462B5E94046B7320846BC4 /* CArray.h */, 6DB23B7557FA39253FE65A599E922ED6 /* Cast.h */, B83DFBC0279E4DF8CFA602D622946926 /* CheckedMath.h */, AB1459102548D6C97BDF32F7673BD1DC /* Checksum.h */, 5DC5AD5C90390C13DD621B5A02EEE993 /* Chrono.h */, E416B0C3A1EC58515DEC41DF3D02E01B /* ClockGettimeWrappers.h */, EFCF80831E029EAC9ECFEDFA8C0B0BE9 /* ConcurrentBitSet.h */, 7FFF51245D8A86EAC0CA600E287ED6AD /* ConcurrentLazy.h */, CB027A92361F7CF889CAB836E490C149 /* ConcurrentSkipList.h */, 6DCF6A50893A882EA7E8F44D10AD971D /* ConcurrentSkipList-inl.h */, 5C02361943CFC4D43BDE38DB0C69F197 /* Config.h */, 4CAB10F1ADF33F5BF62A774463140259 /* Constexpr.h */, 6F2BCB43F2D90CA90AFD57677AF6013E /* ConstexprMath.h */, DD754522EEA5CC221FED5671228D41ED /* ConstructorCallbackList.h */, BC611E2FF7C83C727ED3ABB22AE435FC /* Conv.cpp */, 2837BF8ABDA1EC92282A5DF6381E0A27 /* Conv.h */, 1DC4F893B0788A2E9A80A4BD69265922 /* CPortability.h */, 2A6A08279C8FADD3D8FF81B1C2112A8F /* CppAttributes.h */, 58B548A2C55831264828B2298FF825B1 /* CpuId.h */, 8AFE8F048924F7A8798499375AA68271 /* CString.cpp */, DF05023F7AE354185DE71C9D43F11B9D /* CString.h */, CA86A71648C8045BF8A96B225E26E40D /* CustomizationPoint.h */, 23C5959A240F9A33D470E539FE162B9D /* DefaultKeepAliveExecutor.h */, 9E6068776F49102288177FE25869B4F8 /* Demangle.cpp */, 95F4490C7C830CE7EDFD1E7F79557E18 /* Demangle.h */, A3B4504723D37DDB3A1BBB28AE41070F /* Dirent.h */, 584180DC3B2C183B2687C5F1857403FF /* DiscriminatedPtr.h */, AE8C9FA47D47B64CE6F506ABE68FCF06 /* DiscriminatedPtrDetail.h */, 788308AAA58E926CC60655199F7DA6BC /* dynamic.cpp */, 732688D92C1058B4D3B68B3EF5CB178C /* dynamic.h */, 687B26F2B573590EF9ACE0B564A2A4D8 /* dynamic-inl.h */, 582D8ADF4BEE51D724800E05D34ACDCA /* DynamicConverter.h */, 6A2008DB4CB2932C0392674068ED82A6 /* EnableSharedFromThis.h */, 9052E26FF92020AFAA064B27532BDD02 /* Enumerate.h */, 6CA38E07EBA75420D2E3C5C4B52A3B22 /* Event.h */, 119AE002F412B1467B684F7738048356 /* EvictingCacheMap.h */, CE4F352241E750994254CACB3900290C /* Exception.cpp */, C981FCFDF37E877B75038B1246411D6A /* Exception.h */, 3BFC3D5FFBC3735586FEBA16EF9D8157 /* Exception.h */, 890A2DE43F7CEC807F5D45DD7FD1CE74 /* ExceptionString.h */, 977FB42CD545522302B7AEA55376D2F7 /* ExceptionWrapper.h */, D2E639F57C80F20E749E4AAA4336E32B /* ExceptionWrapper-inl.h */, 5433FC0C0EE55FB7FA9D9BCA99A39650 /* Executor.h */, D869113E22557F357D518366520103CC /* Expected.h */, 686FA922FDC06D95A33307B2DFE9C50E /* Extern.h */, FE9C8096CC17775F6B3D7F51F755BF88 /* F14Defaults.h */, 173353D36092C2DD008D22FDEA5C21AC /* F14IntrinsicsAvailability.h */, D96F738CE283D062C54E36FE7D38A7AF /* F14Map.h */, 4873FC718C30FB33CE887064BF8E5DE8 /* F14Map-fwd.h */, C230DA31F009BBBB74798CD3CE527F8E /* F14MapFallback.h */, 5671AD120864F71635B5C5BD07138E67 /* F14Mask.h */, 130677CC93E00689A413DE1C5D45754D /* F14Policy.h */, 27DB05F6CB39113BE10AD3A747787E40 /* F14Set.h */, 0EE92B6EF155BE970721A6B2647F4AF4 /* F14Set-fwd.h */, D673246C2C1796D3D74599E1964A310D /* F14SetFallback.h */, 7B5B3F15E7911D3E6C9DE70A968B0F80 /* F14Table.cpp */, 59164B030AA6BE9DC3304EDD7E90FEEE /* F14Table.h */, 531B578A8FF205619BD8E526C7C60930 /* FarmHash.h */, 313F1FACBDF2947C76A286C8AFC6551D /* FBString.h */, 3D66CDE2F1E5ADE815D245C01F720E05 /* FBVector.h */, A09332652A2DA7B2F95FDC212274928B /* Fcntl.h */, CBC8B43C8992F34DF7CD32D7923EDE53 /* File.h */, 5FD76DB8A83861EF7CD0449CFC4DE097 /* Filesystem.h */, EEC8AE4B19CE176574DF457505E2B9CF /* FileUtil.cpp */, FF88C9A8B1E0A79468C40F286C239533 /* FileUtil.h */, DD4757A98E1495E6C3DBC232D9872AE2 /* FileUtilDetail.cpp */, FC3E576BEEE24C22BAB754F8BDA7D822 /* FileUtilDetail.h */, F1446E5B5E1E6532A8129EC19A5BC514 /* FileUtilVectorDetail.h */, 163CDA479246FA5F4CF5C7949B3FC9F7 /* Fingerprint.h */, 55BB048CB3ED0500BC5E984EC4283580 /* FingerprintPolynomial.h */, 5FAC834F5ADBD6F3EEF6BE67C8BE5F06 /* FixedString.h */, 0D107AF1088C433FC9328FB083C1609A /* FmtCompile.h */, 7350D90D235F0E829948F766094A036B /* FollyMemcpy.h */, 29A9D298DB1C62EA7C25E8F85CFF52F8 /* FollyMemset.h */, 1AB864487EEC16CB2CBD3A5CA275FCA1 /* Foreach.h */, A6072D5AD4221696B9DE9D90F1EB0439 /* Foreach-inl.h */, 869D440DACC02CD2540C4CE6A499116F /* Format.cpp */, AD16D5AA10E8416443D8D1FF1460C44B /* Format.h */, 48D1454DD898A877C683DE012FCE946E /* Format-inl.h */, 5F8E380C0D44C30A7EB64835C56687EA /* FormatArg.h */, 375B4BBE3235F1250E48C6F479A52A01 /* FormatTraits.h */, 56AAE7ABD3415795FAEEE07A449DD7AE /* Function.h */, A2E8652189AEFEC58162855B790CFA15 /* Futex.h */, 0101C2B932AED7971A900220D55C0B86 /* Futex-inl.h */, 58591CA75671A3724AEF97FE040632D7 /* GFlags.h */, 1CEDA3FBCCC6D4495CE2BD141F7EA3B2 /* GLog.h */, D83B4FAAFD8B9F4100D6F3F2AAF2598F /* GMock.h */, B46136D54F40F23675446372805B6B0D /* GroupVarint.h */, 962AA8023E519A1F58D71BC1F73C95D0 /* GroupVarintDetail.h */, 9848E5EDA897DF122EF07B42AF3EEB86 /* GTest.h */, 8980B7C2D6023D0EC77EF277C17227D1 /* HardwareConcurrency.h */, F6649A5E0CB0CD5E9B98CB49FE510D25 /* Hash.h */, EFDD8B247497E208D149C9C12E8045C7 /* Hash.h */, DB76EBADE7E968B611B89EC60AA71910 /* heap_vector_types.h */, D8C79C91A7FCAF5C973C5E74CCAC73C5 /* HeterogeneousAccess.h */, B32CE247FEEC1814744A3421CB654796 /* HeterogeneousAccess-fwd.h */, 9DBAD76DF0AA6D7A788B0D3674035677 /* Hint.h */, BF031C91FD312DC63FF16FE7D183B230 /* Hint-inl.h */, 8325F6D78EEBC85AE983E28DE38AD770 /* Indestructible.h */, 48A56339A525A7972D16108E1C573FA7 /* IndexedMemPool.h */, B9FF361F61B7A378542F02A30393DF63 /* IntrusiveHeap.h */, 866D0225560051A219BEE4D4664348F9 /* IntrusiveList.h */, 7433BC11862172106E2F5C35B6657339 /* Invoke.h */, 5F85C8CC15CDC85E857260E4CDDF9817 /* IOVec.h */, CFBAA91154D63D788000A507C872D157 /* IPAddress.h */, 832DCF641540319B774328DFB00B9620 /* IPAddress.h */, 789B5746A1B28065E10E29579DC6FE8F /* IPAddressException.h */, 37DFC8EAF78BE0F070D18753D61D9C59 /* IPAddressSource.h */, 938DC03F8EB05E7BDD33175BF907D170 /* IPAddressV4.h */, 662EDB351806ACAF98C186A204C9A85E /* IPAddressV6.h */, E29A2CBF054A73452FE72177DE2FDF83 /* Iterator.h */, 9CA3417ED0B8CDE1906D3202E80B148D /* Iterators.h */, F91CC1CB5BBFE630F1A219C0EDA145B9 /* json.cpp */, C047105E3027DC4381475187A7547D3D /* json.h */, 917B25EF0D073A826D0E80F0B81BFB26 /* json_patch.h */, E02117FB47D5E097A2FE278E42ED7D2A /* json_pointer.cpp */, 5435E25ABF1C803D1D8B6ADE22E2664D /* json_pointer.h */, F524D0F42CA29ACE3E6C3098C858C502 /* Keep.h */, CF9E8353281D1C3DE0C65A3F7643C68B /* Launder.h */, F07A956888DB0839EE8710AF70182297 /* Lazy.h */, EF23890C4D36D03EA1DD037AFEFF15C6 /* Libgen.h */, 4C46B7B386338A3CF2226940A341403E /* Libunwind.h */, CBED11019ED3BE2CD4C26A2FD21B24C1 /* Likely.h */, 6A732660A46D8B89E811D42131A47E43 /* MacAddress.h */, 701DA5EF2C35D3F8011D186617366218 /* MallctlHelper.h */, B9CC2B87AA979A0CE226E57B8BE306A7 /* Malloc.h */, BD52A822E13E3FBE427F01FAFF774941 /* Malloc.h */, 7E424FA9074DD171A4AE55BE52EFAFAB /* MallocImpl.cpp */, F7DCF7DBDA1DB363572544D437D1EB4A /* MallocImpl.h */, 0D6609F1FFDAA711D16BE1CBBFCEF19C /* MapUtil.h */, 72188071CCFD3B99269572936DAC43DD /* Math.h */, E5745DFD5BE516C91A82DD1988970E10 /* Math.h */, 1260781BA130D5E430412D17AA9CF321 /* MaybeManagedPtr.h */, 77A1CFA157156B29C57AF9F7AACA682D /* Memory.h */, 39A5BABF355F1FCE0AB1D652C33D7B9C /* Memory.h */, 2F8E6E55AFFCF9BD68B2B5B508CCEC75 /* MemoryIdler.h */, 03C08820B4F8B692940FAF14B621C83F /* MemoryMapping.h */, F89AC6E92A39CCDDE8DAD6BE98D3C4D1 /* MemoryResource.h */, 3859A11BD5B175A2E7059AE9B7A747F3 /* Merge.h */, B02E6E730A273BCBAAB434BD6D2576E3 /* MicroLock.h */, 2EA911281D978CB40351D59D5598FC9B /* MicroSpinLock.h */, E9C1D370414FE653DCC9FAE636F19160 /* MoveWrapper.h */, C87FD57CD4AD96B0BBB45FC4FEFA1AE7 /* MPMCPipeline.h */, 40B6CCC5214ADD7CDAC59A0304AB0B44 /* MPMCPipelineDetail.h */, 28134A7E3E4CF5A0D60FE5E683407AAC /* MPMCQueue.h */, 8F671A2A4E4BD8E767A5A396E4793F09 /* NetOps.cpp */, 1D0F55A1CBF2A5D8A9F6B0B49A152959 /* NetOps.h */, 07BDDD0C6666F54BB37E72A8F733FB50 /* NetOpsDispatcher.h */, BE5A44A54B39A676EB8ECEF3D4CF8E3D /* NetworkSocket.h */, A6E21B3D9A76F241B93CEF7D2AA19709 /* New.h */, 7FFA741A8EC26DD612783B14F5682ED2 /* not_null.h */, A854CDECEC563F33590796054B7822E0 /* not_null-inl.h */, E0529EAB67BFDD4AEA0A80301D04CE2C /* ObserverContainer.h */, 8E748C5FBED7C0C756FC4C4A6B5C2E8C /* OpenSSL.h */, C02156579770C940D02208439EF989EE /* Optional.h */, C4EC4C02AFACADF949E7010ACACF4B85 /* Ordering.h */, 6F9A7D467E30F1383A11DE8EA731A421 /* Overload.h */, 7E8209264577462872BC1AE7772C476E /* PackedSyncPtr.h */, D89495ADCC3AEE3B5696CC8A442CC151 /* Padded.h */, 99E851596D4A5EE743DC493671DB9DA3 /* Partial.h */, 0E8EF1F55FE2016CDA7B786F01C8882E /* PerfScoped.h */, FADAE66E358428988B767C2AAC5E2119 /* Pid.h */, 2779D7D33AA6E41DCE7991AF63682C57 /* Poly.h */, B6F37D13CE5A1DE0E74413865B70883A /* Poly-inl.h */, 982AAB27F58C71E3FA007537ED46BB9D /* PolyDetail.h */, 207D72871056994F29476846F29AF947 /* PolyException.h */, DF4F0BE954C36F42882AC304D011030F /* Portability.h */, 4DD488FCCA9EEDD9B68B8F99D105C44A /* Preprocessor.h */, CCCCA85307C7F5CAA6F8F137DC8860BE /* Pretty.h */, EF3D0DF483D191D626F907294861A317 /* ProducerConsumerQueue.h */, C844508F5FF5CB3FE66B8F8DF7302612 /* PropagateConst.h */, 068DB205A59C74E3480D49B43B734439 /* protocol.h */, 586BE0D668A4FAAEE338C3991530ACC0 /* PThread.h */, 94D87B59FEAC0DBA4F9A7E928431AAAE /* Random.h */, 3762263B39103B7107F61608F0B0E2D8 /* Random-inl.h */, 036EB421B5324C4C8F2FEE1BF08B8194 /* Range.h */, 3B4291E3436CE7DD23B4E403E8E8B12D /* RangeCommon.h */, 937EF872F9B051F189B72F49D8D54CAD /* RangeSse42.h */, 31842C0B4263119B5232CF1827757893 /* ReentrantAllocator.h */, B41CA2872B3100D34E5916BD9747FFA2 /* Replaceable.h */, BEFECA4F48E22E7225529497330DEB8B /* RValueReferenceWrapper.h */, 02E1E7FDCE905C0071E5B85EDEE735B7 /* RWSpinLock.h */, B2DA18CEB3A1B39D6DEFDA830C70B7AE /* SafeAssert.cpp */, 718D4D78E0BAE0CC2A7AE58A6FBEA36A /* SafeAssert.h */, 4E97DA6EC4EC14E2148BD7844BD1F3A3 /* SanitizeAddress.h */, C128E32800DBBBE7BD73B0DB2EA50A53 /* SanitizeLeak.h */, 9862B8B78362BC8D98438DB2C5675196 /* SanitizeThread.cpp */, 326E52CD3C6A37497F8D253F7BACCFB5 /* Sched.h */, A6BB42C32564D7C067A75160B7457050 /* ScopeGuard.cpp */, 1C6F2A8DD916FFABBB7924E8D417B7EC /* ScopeGuard.h */, AC04A5C67B4CC06104E1FAC9CDF58712 /* SharedMutex.h */, 5C54A77AACDC4EFCA476CD638F5287E1 /* Shell.h */, 769BAEE9C92AEEA6A5C4C98AE6FFBD88 /* SimdAnyOf.h */, 63B3B00A3AAC44C23D4F7E237FE0D5C5 /* SimdCharPlatform.h */, 12BF91C85904FD8BA917DDBF03ECCC1D /* SimdForEach.h */, AB6B32F88010B897C8CBEDA90F51EF81 /* SimpleSimdStringUtils.h */, 696D9C59C6F80DB952F1142DBCBBF620 /* SimpleSimdStringUtilsImpl.h */, 86CD21C661338CF76FD714E4819D0BEF /* Singleton.h */, 7B799169876F75C6B694791908FAA1EB /* Singleton.h */, 2C17F91E7D084760672DD64B292DF5B5 /* Singleton-inl.h */, 581A1FBA46FBC346F25CDD31C00AE6B9 /* SingletonThreadLocal.h */, 985183EC5FB028AC6A6FCC26CC91696A /* SlowFingerprint.h */, DF63E196F2D472D716CD1CFF8D29C2EF /* small_vector.h */, 8AAE8CC35982681A17144AA7022C354D /* SocketAddress.h */, C042000B32A98F9B8FE68F105D95B8D4 /* SocketFastOpen.h */, E6362057149C3EE30EE5985649A70E12 /* SocketFileDescriptorMap.h */, E96C6053E99BB795AC55280C6C0B918F /* Sockets.h */, F804F0627373E6C63D34AAD65291FD24 /* sorted_vector_types.h */, 0834C175FB5FEC893A25F29A77A057B6 /* SourceLocation.h */, 97C17BDCBCF48F7FE1E2CE59E0B17252 /* SparseByteSet.h */, 3605A12CF33B3DFBE0B5DD2DE36994C3 /* SpinLock.h */, C106E727DA66F2360E99B166ED1F9FBC /* SplitStringSimd.cpp */, 9A7E0B4304900884F1F7552E271BAE80 /* SplitStringSimd.h */, ADC21E6203A42D717BE49E8E588CB0D5 /* SplitStringSimdImpl.h */, 182071DF4FF23AD36C90547CC9C960E3 /* SpookyHashV1.h */, 856575C5A576BBE72D1C55601F788145 /* SpookyHashV2.cpp */, 8FDD74A51002058B82FB55AE5D657564 /* SpookyHashV2.h */, D33BF9E42E6E5CEF3647C99A049FDCA1 /* Sse.h */, F8ECC27DA5BDBC6D1C55FD6C21B19E9B /* StaticConst.h */, BC8A1AA2067618E92E2DC37877060EA1 /* StaticSingletonManager.h */, 16BD9C5268EF8F747D73A1B1E9C395CD /* Stdio.h */, B4731BEAE5B9F1A65FB492F06B455F7F /* Stdlib.h */, 035C4CAE603317412DE18DE1D8300A94 /* stop_watch.h */, 41CF2183FB0C77CBF6E075298A85E705 /* String.cpp */, B6577792B784C0F015CBBC9C2A12DDEC /* String.h */, DDED685F4B3E6B9AD98CDA1F1594C02B /* String.h */, 31FAF051F6D95F34219F912CE1C6F2F4 /* String-inl.h */, D1802F9C2D3A26DFED67D9A4805852E1 /* Subprocess.h */, 7D4B16C5729900BD0CF675EE898C8327 /* Synchronized.h */, 67610BE7173AD3B20491234782354847 /* SynchronizedPtr.h */, 60B6FDAEA7F1F74C6155EF59EFCCA58E /* SysFile.h */, C3A48141C5DA78A08DB8A2E1D30AB6D9 /* Syslog.h */, DF804855D1456E2DC29B632585EFE659 /* SysMembarrier.h */, 506A5EB970B15ADBF0D61002534BC9B1 /* SysMman.h */, 50A063D0B84A8706BF9D36E052AFDCA4 /* SysResource.h */, 8627871C188DC96A2A53FD17E0445367 /* SysStat.h */, BB2D4F3D9EA6B428CD822160742EC53F /* SysSyscall.h */, D7F312C3D9605D22499AC7486B1AB866 /* SysTime.h */, 6B9509822D0A4EC87A2AA3BC68342DF3 /* SysTypes.h */, 32AC266D9F2BEB6CAC0650EC2695A1C7 /* SysUio.cpp */, 79CC003D3F5205C371DC8BCBE46FD022 /* SysUio.h */, 3A32F2995E9FBCA38F66600B356DD02C /* TcpInfo.h */, 7EAB5C076EC5BA3D8E0D48CBF9F38DC1 /* TcpInfoDispatcher.h */, 5776F9A564A106E1D34D8C2B6FB41C78 /* TcpInfoTypes.h */, 1AFB9A68F41FAA405A3AAE37295C10B3 /* ThreadCachedArena.h */, 1A2E8DDEAB65BA26685A7F1CE66A6C2B /* ThreadCachedInt.h */, 82BDE129A63F08D401D705753189D8B0 /* ThreadId.cpp */, F69D2C7C3E6181971A1F8D04108BC7D4 /* ThreadId.h */, 4478194C75B2D184014614829944D5CC /* ThreadLocal.h */, 232D444DA9A20C7509F589FFF2D7E4CF /* ThreadLocalDetail.h */, 36EDA6F605E6CEF5F9A72D38C0AA3DED /* ThreadName.h */, ED92914EB3DF6C80AB5B7CF1AF9F3EE4 /* Thunk.h */, 0BB0E5875A31D5E8CDCEA86F5A67276E /* Time.h */, 0C0FFE3B52F5FC5B9E85936F71606010 /* TimeoutQueue.h */, 354A705EB660FEBF388788D956A9E58A /* ToAscii.cpp */, D7914657C80BFE4F7E8E537249F07FD6 /* ToAscii.h */, 47AD1D90749E8B75D93FDBB70F9F6ABA /* TokenBucket.h */, 2CE3815AC95E2E19EFA825C26B6DD16A /* traits.h */, BE2252C1E227B6B138921BA745C6ABC7 /* Traits.h */, 05CAC01452155CC5956412107FDEDDAD /* Try.h */, 77B99168E6021298797F07B5B41C5A77 /* Try-inl.h */, 890E8592B2798AA968BD07CDFB3EDD9A /* TurnSequencer.h */, 51BFECF146A1165D167989F92AE6C0CC /* TypeInfo.h */, D5266C5C2A1441F787E4EAA90B9166DA /* TypeList.h */, 1FC9D5FE940DF4FC829E173DF00483AB /* UncaughtExceptions.h */, 54977C60EFA8732D452D9D03923B5270 /* Unicode.cpp */, 83B1804846FC5FA7ACBFC82E7F5B9746 /* Unicode.h */, 9DD30C23A0277639DFBEA7BDEC6DFEE3 /* UninitializedMemoryHacks.h */, EB71E81BC5E30853849F01DE038FCE31 /* UniqueInstance.cpp */, F51332CA416FB0997A5A9763AC54075F /* UniqueInstance.h */, 3D2546E47F2D90167BFD3A489746A6E9 /* Unistd.h */, 4815C38AF6C2FD23A9E98263CAFC071E /* Unit.h */, 0C8868803CE5E240AD3BBEBB15555C0F /* UnrollUtils.h */, 32B62C1AD7CDAE58FE4EF82AB2C29AAA /* Uri.h */, FB0002CFA1F991284A466F64F3CDD670 /* Uri-inl.h */, 74C2C2A0E994E59EC1C51CEF553541EF /* UTF8String.h */, DFD95BCA231BF7294B54BBBE1F7A43A2 /* Util.h */, 2002DD4A0F6B3EB4DD29785216A66D9B /* Utility.h */, 493BF367283D552EA0719F4472FB1C1E /* Varint.h */, 0CBCEC21A3A50591C487CAFD8DCF2CED /* View.h */, 066367DE103F744E9A009FA7A06E7F87 /* VirtualExecutor.h */, 1CB19BE6FA86208CB5F4A61FAACE298E /* WeightedEvictingCacheMap.h */, B8EE883969234B8D43CEA19B78B08828 /* Windows.h */, D796999F7EB66C9E901D5459591C6456 /* Fabric */, 42D7DF2047B869A8F3D547A8C6816953 /* Support Files */, ); name = "RCT-Folly"; path = "RCT-Folly"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 03D0AD5F592D8F72B9347278AC7528B2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 0E23530ACDC77621C49C1C0B334F772C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 131B4DFB7582473308782B58746A7B52 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 1924379562E82C45C24131B0617BFAA9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 1F2D4CFFFC42880B1F612DCF5363A6DA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( A3EE983F94C4B475C21E8F62825FB9A0 /* BindingsInstaller.h in Headers */, 96CC92BF70F2531207DA2C1317DE05BD /* BridgelessJSCallInvoker.h in Headers */, CB360F4117FB09CBC5BE701D8FC23832 /* BridgelessNativeMethodCallInvoker.h in Headers */, 35547761AFCB44BCA094A33F2AA23946 /* BufferedRuntimeExecutor.h in Headers */, 083594D0ABE1486128C1FACE9EBBB8E1 /* JSRuntimeFactory.h in Headers */, 1432E3A16B74C9650C19792CD18E8B4E /* LegacyUIManagerConstantsProviderBinding.h in Headers */, 18F1DA5B651DC6FF50C4B7D1A14C844C /* PlatformTimerRegistry.h in Headers */, 412F8240ACB84265E0864A13B5C9F222 /* ReactInstance.h in Headers */, C53B4E78EE7B685B08EADB598B3D73C0 /* TimerManager.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 1FC7C83C323D5915F4692711E389563D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 2C77EFD57E0B1FEFDD34BA38A21E75B1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 244E92C5AC2F270708212D76276B1CC6 /* FBReactNativeSpec.h in Headers */, D277B419655B9919F8FF7DA23CDAA69A /* FBReactNativeSpecJSI.h in Headers */, F9E214AD4CE39C95F7CB3A7DF2521A86 /* RCTModulesConformingToProtocolsProvider.h in Headers */, DC5A073E59515BBFB3FBAA977043E3AF /* React-Codegen-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 2ED4D754BD2CEF3183E1F52B93D27909 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 6CA3161E6FA8BEBED33FD2FE8E1B3DAF /* ReactNativeConfig.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 2F3933079C76AD41609F9AFC5782B638 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ABA6E5E90611005CDA352D8179B5C97F /* RCTBlobCollector.h in Headers */, 1CC5C347C1A6FBFC24DD8F7BB59F94FE /* RCTBlobManager.h in Headers */, 2F97D1B13BB188BE85AE78B1463C1511 /* RCTBlobPlugins.h in Headers */, 22F5D84C2EC3F910630272B7FC049205 /* RCTFileReaderModule.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 2F74E959B7B6CD3497F4E33BD9C61FE3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 062CCABB12806D7CB657BEB43436A947 /* DebugStringConvertible.h in Headers */, 570946E17F460217CD71C4222A0380E9 /* DebugStringConvertibleItem.h in Headers */, FE246A8CBD588F3885A9F3746184B7A7 /* debugStringConvertibleUtils.h in Headers */, D68E9C9482F92F4500306D7CA38AFE5A /* flags.h in Headers */, 7EE0F6B05C54DAF73A25F1901169A318 /* React-rendererdebug-umbrella.h in Headers */, 6DDB890790361CB27DE50CD880831B9A /* SystraceSection.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 3923F79A6C43DC54B393E6A014C97F3D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( A93939302F504E8A673D78DE89013DAA /* NSTextStorage+FontScaling.h in Headers */, AD4645BBE5F1978FE1062D8DF27003AF /* RCTBackedTextInputDelegate.h in Headers */, E9E9BC877650CF84F4905AEA78C32B8A /* RCTBackedTextInputDelegateAdapter.h in Headers */, A21AB41F6F340F2D09106811A1702842 /* RCTBackedTextInputViewProtocol.h in Headers */, E200A4AE1E40E3119E83786F9B9EE687 /* RCTBaseTextInputShadowView.h in Headers */, 97215F497B2ED4601FCA816AC3DA2375 /* RCTBaseTextInputView.h in Headers */, 0786745B0F7A7521328CC9923B8BF5E9 /* RCTBaseTextInputViewManager.h in Headers */, 8B8AC90BDB270B8F075B58F2BC966E3E /* RCTBaseTextShadowView.h in Headers */, F248056FE6F3501E0F531C786FD64037 /* RCTBaseTextViewManager.h in Headers */, 177DC996D972A1F1AA6BC586B8A468A7 /* RCTConvert+Text.h in Headers */, FC73229D9DC21849A4BF5E101EF69154 /* RCTDynamicTypeRamp.h in Headers */, 5B9EC322BD0660BBB5BB7EEA03DF27B5 /* RCTInputAccessoryShadowView.h in Headers */, E9BD0DCBBEC08FEA24C2D8CEBC731832 /* RCTInputAccessoryView.h in Headers */, 506691E4775474A330411B90500F4307 /* RCTInputAccessoryViewContent.h in Headers */, E10A1CA856FB54018BD7A8F30AE09540 /* RCTInputAccessoryViewManager.h in Headers */, D2D6709D8BE4016F130D13598CECF0D4 /* RCTMultilineTextInputView.h in Headers */, 9766FC44D73330BFAAB4E4350CCCC6A5 /* RCTMultilineTextInputViewManager.h in Headers */, CCE0086EBD30F01C080E3B021727B3FA /* RCTRawTextShadowView.h in Headers */, FD1412F7EA27E8EC3820F7587AE22248 /* RCTRawTextViewManager.h in Headers */, 644F1B7EDB5ECC21CCBAE8800E7E31B5 /* RCTSinglelineTextInputView.h in Headers */, 1742C4E8AB7ED1A6739FA6689AA3DE2A /* RCTSinglelineTextInputViewManager.h in Headers */, 05CEAA68D97F9486B6361528835C7FFC /* RCTTextAttributes.h in Headers */, 5A96B83B90FDF9B1DFF02B7907CDC6AD /* RCTTextSelection.h in Headers */, E4DBCAA513C14C66C493FA72587F87BC /* RCTTextShadowView.h in Headers */, FD2289F6888F0B2154D3A3018727535B /* RCTTextTransform.h in Headers */, C28578E54BCAC6BAD431CC47C0D837DB /* RCTTextView.h in Headers */, 2A348AB502AECDE1C672786CC3B55C27 /* RCTTextViewManager.h in Headers */, 370E2940965694FD29FF3ADFCDE7A953 /* RCTUITextField.h in Headers */, 47B3B0B341756FE46A9E04CFE10D470A /* RCTUITextView.h in Headers */, 30CA335AA5FDC7D5427E29AE12CB3DA4 /* RCTVirtualTextShadowView.h in Headers */, 454C26722FF0D6D11DA74C5228AA2085 /* RCTVirtualTextView.h in Headers */, A82FB98C2DC7B85649063C88C00725A8 /* RCTVirtualTextViewManager.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 3C7BE99ED45BF15CCA844CFAE09EF656 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 86B3C2F4E98DEF836BAA645068EC7341 /* simdjson.h in Headers */, 72FD3B8D4EAC12F432DE6B6350A8A52F /* simdjson-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 3DA53BE61AD2344C583DC7DE56DDE779 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( EC997A618F6AB5D3076F860176E66314 /* Array.h in Headers */, 39B7CCC00536E89229DD45DE7FD25D7D /* AString.h in Headers */, F8F6918DEA2269A706DB0786EA73D733 /* Base.h in Headers */, 477ED6A28D3CD8F41F2E96F5D3C98904 /* Bool.h in Headers */, 7D2198ADD1AD7461713B493938D36639 /* Bridging.h in Headers */, D118BCB36B5A104E9E977BADC0B7C9A0 /* CallbackWrapper.h in Headers */, 914C439C1D26D04E388C679710CB249B /* CallbackWrapper.h in Headers */, 5D59046CAC4D66AFB8FF14E482B6F799 /* Class.h in Headers */, DE92F90C06BC1B8BF2FC386891260157 /* Convert.h in Headers */, F130698EEF950DE0175BC6B9190FF988 /* CxxTurboModuleUtils.h in Headers */, 4D3D91877333B2A899B1D1318D8CAB28 /* Dynamic.h in Headers */, 1F147DA94B4631A7C3DFA6A200385A7F /* Error.h in Headers */, C6EDCB116DA4E5DF0B2208B9D1F6AEF3 /* Function.h in Headers */, C722DB4057046A629115CE023B7A47D6 /* LongLivedObject.h in Headers */, 562A3C7202DCE0DB151CF213B983CEFE /* LongLivedObject.h in Headers */, 4F4D04EE2C06684AA7268737AAE9B6C3 /* Number.h in Headers */, FCFBAB68412C83F9EC2FB13D4130D695 /* Object.h in Headers */, 8ED21B7AC493FE347E9E83369F9352CC /* Promise.h in Headers */, B482C575F5108FE43A5093BD905ED34C /* ReactCommon-umbrella.h in Headers */, 3B61E4B1CE2CA8087C242D41191C5DD7 /* TurboCxxModule.h in Headers */, B6ACD468C9A12D4E2D4177AE940172B9 /* TurboModule.h in Headers */, 152D661D4E78EFAF951BEEEC25294B04 /* TurboModuleBinding.h in Headers */, D9243AC9718468197B02FE4EAA191680 /* TurboModulePerfLogger.h in Headers */, 2C6B6C20776A6BA94A3FE6306DBB60C0 /* TurboModuleUtils.h in Headers */, 34D9E5CBB49C6023825590C930261A0B /* Value.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 3F5D17CD9252A653C5971202E0D8D3D2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43CB88E0FAB282141C8E630E7B32B9BB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 301CA9266A52873F320B63EF2A8DFB4B /* bignum.h in Headers */, 6A0F9437521FAB0502857D5DAB6314F4 /* bignum-dtoa.h in Headers */, 327DA72CDC89A3215CE65582DE8EC3CE /* cached-powers.h in Headers */, 56279FD90DFD7BF436B971346A2A0B06 /* diy-fp.h in Headers */, 43514E4A7CF3EE6B921317D17245C4E6 /* double-conversion.h in Headers */, 14188338839347D37D80C598C0E5748C /* DoubleConversion-umbrella.h in Headers */, C39630188B797485BDB7AE5D8FC4B7CC /* fast-dtoa.h in Headers */, 858CE2E693CE69AF1CDE8933197E0572 /* fixed-dtoa.h in Headers */, 7C3A014118CD31C6C26566E08F64BC3F /* ieee.h in Headers */, D92EE1301D88213094E73A53FB12CC7A /* strtod.h in Headers */, 998B42D1DD666A96EF1B6DE78167C70B /* utils.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 480E3EC17192D033B3243595772EED8D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( D3A424FD85699ECAA4514C62046BCD9C /* ConnectionDemux.h in Headers */, 0A525F353D76ACCAEB8A08546550D6AE /* HermesExecutorFactory.h in Headers */, B08FDA2BE608A087E4B93A5394734E2C /* HermesRuntimeAgentDelegate.h in Headers */, E18F8DA28CD01BA27291E774755C9EC6 /* Registration.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 4CE40E530312BF393D28CBE0E51411F9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( C6747C938C8A8C6E92C0590D74661B76 /* React-featureflags-umbrella.h in Headers */, B7E1E22D704AE6B45D5CE7493F1DD3F6 /* ReactNativeFeatureFlags.h in Headers */, 375048B5D0D59A4D57806E18C491B74A /* ReactNativeFeatureFlagsAccessor.h in Headers */, 013853D86CB10EC25449DC7BF10568E1 /* ReactNativeFeatureFlagsDefaults.h in Headers */, DDB67DC583A9C49F0D3A01592065F391 /* ReactNativeFeatureFlagsProvider.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 50700FF38864A8F11B138C9B1C3F7EC7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 88847364C16DA3DF2BC6288012F34BB2 /* CoreModulesPlugins.h in Headers */, B9FD8BF287FCE73CDD7100E5A2CA7E24 /* DispatchMessageQueueThread.h in Headers */, 7EE93CAC8D76887681E9984AC37A9FBF /* FBXXHashUtils.h in Headers */, 93ECDFFA540B3E946DAF9907951CCEFB /* NSDataBigString.h in Headers */, 7DDC9C325BEBF570103734FD7DBC2EFC /* NSTextStorage+FontScaling.h in Headers */, 62ECA5DA07D5580733EDE413CFCAA475 /* RCTAccessibilityManager.h in Headers */, 132E187EFE1E47ADD957A700284D6D9F /* RCTAccessibilityManager+Internal.h in Headers */, C5683D8CE70A467CD760436F464EBF07 /* RCTActionSheetManager.h in Headers */, DF036DC6537C4E015C97F52AFCFD32FC /* RCTActivityIndicatorView.h in Headers */, 1B8A83B4760FD4C5BA61A514D66A63CD /* RCTActivityIndicatorViewManager.h in Headers */, A51151FF17D9D07646B188DFD75A0AE1 /* RCTAdditionAnimatedNode.h in Headers */, EFF65D240F771DB091184AAF4242F8ED /* RCTAlertController.h in Headers */, 2E0021D5DBD9D49FE9F15EF491CCC73E /* RCTAlertManager.h in Headers */, 6AA211002A317FB9EB7047EC3E0B6CAE /* RCTAnimatedImage.h in Headers */, 457301E7532DE95F70DB8794A5EE9BCE /* RCTAnimatedNode.h in Headers */, 14A2A5FBA6070AC7E7320E8DA534901D /* RCTAnimationDriver.h in Headers */, 418D8178CC19322DA87BCD5B98D11D5F /* RCTAnimationPlugins.h in Headers */, 7E9D2C1821BA925A94462F2556B7C282 /* RCTAnimationType.h in Headers */, 461CBD4EA7E870FBB406BE1A44D15A6E /* RCTAnimationUtils.h in Headers */, 996659F42631C1F1EF1EB37666EBEC84 /* RCTAppearance.h in Headers */, 134F41DF984A58A9AF39A8C4B87BA130 /* RCTAppState.h in Headers */, 97B2A42B5817C59F462248A075991C5E /* RCTAssert.h in Headers */, 4A81228C0507B6999A9DD504323C1BA1 /* RCTAutoInsetsProtocol.h in Headers */, F1E2974DDB47A364980F1BE4690F2775 /* RCTBackedTextInputDelegate.h in Headers */, 176B697FC865093156BE99FD2E26E832 /* RCTBackedTextInputDelegateAdapter.h in Headers */, 3538563AD434CBFA6C3567D5B59E20C3 /* RCTBackedTextInputViewProtocol.h in Headers */, 646368EC7C6F2C08EDD65268D7B7A79B /* RCTBaseTextInputShadowView.h in Headers */, AB88C2DEBE20FD6CE62478DBA925FE6E /* RCTBaseTextInputView.h in Headers */, 1CFA73658F87C10453EE47487DCC0B4E /* RCTBaseTextInputViewManager.h in Headers */, 6AAA9F629DBACA51982194772C98C826 /* RCTBaseTextShadowView.h in Headers */, 0A9DCA309A20F282A70CE9A354445E8A /* RCTBaseTextViewManager.h in Headers */, 3F0DA3FE9305A3181F7BA27FADB4F9C3 /* RCTBlobManager.h in Headers */, 9111482AEA47A273F54C6A45660C17F8 /* RCTBorderCurve.h in Headers */, 70ACDD1F376B8B5A7FB1A8F2A0B908A6 /* RCTBorderDrawing.h in Headers */, 4FD8523C00E419DA64417797EDC77A42 /* RCTBorderStyle.h in Headers */, D9C64AA891BD63910BE6D918867618E2 /* RCTBridge.h in Headers */, 6FD855099FE9DD6831F7AA14A8D6F777 /* RCTBridge+Inspector.h in Headers */, 5D2030AC19338EA569B5CA75254256FC /* RCTBridge+Private.h in Headers */, 05A580DBF295D2371F431C910CC5919C /* RCTBridgeConstants.h in Headers */, 2FA26988350A7C7DDD412B7D17AFAA4F /* RCTBridgeDelegate.h in Headers */, 04F8707A7E7C72B27B4A1BBE81C9030C /* RCTBridgeMethod.h in Headers */, 1DAE56A42C6E37928F1FFEB77BF3DC83 /* RCTBridgeModule.h in Headers */, 3D9F615303E80F664EF87C36F4258098 /* RCTBridgeModuleDecorator.h in Headers */, A0CFCD0F7E1ACC5734A328D7956729AA /* RCTBridgeProxy.h in Headers */, CC4CE15B64E3D6123467FE8E3BB099BF /* RCTBridgeProxy+Cxx.h in Headers */, A58560BE133410AEDF2DB9DB58DC3CEC /* RCTBundleAssetImageLoader.h in Headers */, 6D0967A5AFE1B86D8D5B8C084797FA58 /* RCTBundleManager.h in Headers */, FE12A07411DA6DBDF3D79CB4FB59C8AD /* RCTBundleURLProvider.h in Headers */, 74A3831F302B0755566D22D3C30C2B74 /* RCTClipboard.h in Headers */, DDEB4462BF2B783F42E8EB99035624D7 /* RCTColorAnimatedNode.h in Headers */, B95B3FEA85BF956F4A5CA3D0C820BC43 /* RCTComponent.h in Headers */, 1F42FAE5D5775D8F7630EE666E17DB4B /* RCTComponentData.h in Headers */, 88C9FAD022478A7E8EF82D42816571C6 /* RCTComponentEvent.h in Headers */, 5F8B639C0CAC522C3057CF9E649534CB /* RCTConstants.h in Headers */, 38D845C721547D5C42965B3EAF1E6E66 /* RCTConvert.h in Headers */, E54B039781E19ECACF0DD70219DBD68A /* RCTConvert+CoreLocation.h in Headers */, 72294B58C56420DC0B78EABE73A60EC7 /* RCTConvert+Text.h in Headers */, 334D66567F979838AB9768E9FAD7DAB5 /* RCTConvert+Transform.h in Headers */, A3CE4C1EAD893E3451AB41D1E13069C2 /* RCTCursor.h in Headers */, 9BCE5725306ABEC6584FCB1239B9CA22 /* RCTCxxBridgeDelegate.h in Headers */, 041CF2CB65A7E9545B3EC1BB2BCFD469 /* RCTCxxConvert.h in Headers */, CC03051DBCACE8B77F865DD060DAFA03 /* RCTCxxInspectorPackagerConnection.h in Headers */, F071C60F210B522606D5581D12975A4B /* RCTCxxInspectorPackagerConnectionDelegate.h in Headers */, 4241ADF61CF1F176813006CE278344D8 /* RCTCxxInspectorWebSocketAdapter.h in Headers */, A6A14B5D2532DF9B9CC2BA83095FC9A9 /* RCTCxxMethod.h in Headers */, 8569FF4D1B56E1A399877F11FC5E97B7 /* RCTCxxModule.h in Headers */, 05AC9AEA1013D02AF586E82722432DB4 /* RCTCxxUtils.h in Headers */, 6EC429788275A10A19015F2048C9AE9F /* RCTDataRequestHandler.h in Headers */, 5FCF219B74C2FD233CA9AD48E6970912 /* RCTDebuggingOverlay.h in Headers */, 47AD3056CBE40003DCC7F044CE31549B /* RCTDebuggingOverlayManager.h in Headers */, 38D31452260553290B4B6BA24A990899 /* RCTDecayAnimation.h in Headers */, D8C3D24EF338C7C89FD89FB0366AD660 /* RCTDefaultCxxLogFunction.h in Headers */, 908DF962421BEACE0D0EEAC2BEB84A30 /* RCTDefines.h in Headers */, A764E2968F6CD32CEE6C509E2845BDC7 /* RCTDeviceInfo.h in Headers */, 221CEE4476D0FB923A3FE36D579351FA /* RCTDevLoadingView.h in Headers */, C59BF33E43C2399EA30FEAB9463C27AC /* RCTDevLoadingViewProtocol.h in Headers */, 2521660EE10E01F259AC87F51E7A65C1 /* RCTDevLoadingViewSetEnabled.h in Headers */, 8494CFAC6607B7239C90ED77D2427B29 /* RCTDevMenu.h in Headers */, C93A122778F03045ED2729B67D3D3E9F /* RCTDevSettings.h in Headers */, D39ABFBBDFD1585768162153F9F8DA53 /* RCTDiffClampAnimatedNode.h in Headers */, 903DB9FA0A5B63EEC2030D326152B6FA /* RCTDisplayLink.h in Headers */, 3214D80F9DED151E3F561609B66C7646 /* RCTDisplayWeakRefreshable.h in Headers */, 829CE543BE934D8599926B5A0E2FE109 /* RCTDivisionAnimatedNode.h in Headers */, 0F50D5BEC1F259C0536E804EDFA6AC86 /* RCTDynamicTypeRamp.h in Headers */, C0AE938053DA32A5D3A7BBFE90F6B81A /* RCTErrorCustomizer.h in Headers */, 9B29E7A144668C69B88E17DF3445B0C8 /* RCTErrorInfo.h in Headers */, AF2E44664A31AFFE67DE6C1AB58A1709 /* RCTEventAnimation.h in Headers */, 71EC53ECE20B5A8A07D43AB6854CDBFA /* RCTEventDispatcher.h in Headers */, 9C2375A58F12149DA1970C56AC0D8633 /* RCTEventDispatcherProtocol.h in Headers */, DCFBA2EB42ADCB16CD0529E175BC6AA4 /* RCTEventEmitter.h in Headers */, 82A759B463C6E280D1C961F6F71BAB15 /* RCTExceptionsManager.h in Headers */, 558B2A6974A6F8200C9802FF6F845F60 /* RCTFileReaderModule.h in Headers */, C684EF50FF0928A3EB0D633FAD9CFF31 /* RCTFileRequestHandler.h in Headers */, 9411CDA895F502CF9BAFEC71B6EB2D75 /* RCTFollyConvert.h in Headers */, B55B0004A9EC9C4A80588C16C8570BE3 /* RCTFont.h in Headers */, 5B05BCA19F4B7C0CAEE8D7E914493F1C /* RCTFPSGraph.h in Headers */, 2EC9DAE8AF8C81A439BBA1420CAA95F3 /* RCTFrameAnimation.h in Headers */, 424148B9D17806EB7F48FBB0D2FAD14A /* RCTFrameUpdate.h in Headers */, 20E7F16F71DC306F4B434967352405D8 /* RCTGIFImageDecoder.h in Headers */, EACBE1A3AD0FFB544227FAA98CB212AA /* RCTHTTPRequestHandler.h in Headers */, 783036467F0C5912B8D4A00B02899B3E /* RCTI18nManager.h in Headers */, 363C5BFDFA69F60D5FB8F4739D6D5315 /* RCTI18nUtil.h in Headers */, 9DF893D515B79F5D02C027EF78786C88 /* RCTImageBlurUtils.h in Headers */, 2B2385A1AF00F0FDC4EA1268BA76A6AA /* RCTImageCache.h in Headers */, 458B7CF17D4089008BC4D91F61BF11AD /* RCTImageDataDecoder.h in Headers */, FF9D0574D3726083613F591EB3EB608E /* RCTImageEditingManager.h in Headers */, 802DC9139C32DC3C41FBEF4AA8CF4952 /* RCTImageLoader.h in Headers */, E9A31945402EA221C68AC46BD4839F8F /* RCTImageLoaderLoggable.h in Headers */, 748AE618B291F6E05DC17EDB4E4728A6 /* RCTImageLoaderProtocol.h in Headers */, F239D21943CA530CFE4BFA2B5453635C /* RCTImageLoaderWithAttributionProtocol.h in Headers */, 10C999C6FFE831B0F4E754627171AC0F /* RCTImagePlugins.h in Headers */, 5D2222F04E5E303696BB63978D35DA5A /* RCTImageShadowView.h in Headers */, 07718CEC8AD51EEE4CC2299F0637398E /* RCTImageSource.h in Headers */, 8D594C2325978C5D20EE6C5C2824342E /* RCTImageStoreManager.h in Headers */, 7FFD7CC9EC841E4667F9683D6DB2A099 /* RCTImageURLLoader.h in Headers */, 998341B6CC0A0AD55671B6F0F1535978 /* RCTImageURLLoaderWithAttribution.h in Headers */, CC1068FC78F21AC9E9DC34700188D70A /* RCTImageUtils.h in Headers */, A526E4E88DA34AF0F88D9F32C1A60C19 /* RCTImageView.h in Headers */, 96234A6DD5EC92E93D8ECEDD53210730 /* RCTImageViewManager.h in Headers */, F863DC654B26CC6295C8F8D909B5C229 /* RCTInitializing.h in Headers */, 648CF10E3E4B6BC8F2867E714C8D3315 /* RCTInputAccessoryShadowView.h in Headers */, 1BAC799EDE2AC6356058F9873FD0E453 /* RCTInputAccessoryView.h in Headers */, FC4BA81798FA9C1FB1C0064280A6D8FA /* RCTInputAccessoryViewContent.h in Headers */, E9D2FF0ECEDFA4C76E42992CE55EAFDF /* RCTInputAccessoryViewManager.h in Headers */, FB51B40685C9A6010A007BE6CA582655 /* RCTInspector.h in Headers */, 67E1C84F832F8DE7A9AACD8F3E679C16 /* RCTInspectorDevServerHelper.h in Headers */, 3B57A8B697DB83FCA053D4A7A4D17317 /* RCTInspectorPackagerConnection.h in Headers */, D93DE7406180B3F14BFB6494C9C55978 /* RCTInterpolationAnimatedNode.h in Headers */, EEDE418A860EF1BD9051813C5FAF85F5 /* RCTInvalidating.h in Headers */, 7FC71456BF079C9BFC3E541399E9AD09 /* RCTJavaScriptExecutor.h in Headers */, AC0456506411E770DAE78BB6A370A69D /* RCTJavaScriptLoader.h in Headers */, 05425C40C186C4D905D650FDE09FBB6F /* RCTJSIExecutorRuntimeInstaller.h in Headers */, BFCCDE2C5A4302237A973BB40482C84A /* RCTJSStackFrame.h in Headers */, CEA7FB8A9AF33E5A6299B7AC9F1F3018 /* RCTJSThread.h in Headers */, 7F269E29524C0061896B3C3770C62B83 /* RCTKeyboardObserver.h in Headers */, AEA87805AEDC2CFC5CA3BC87F67DE795 /* RCTKeyCommands.h in Headers */, 27B66BEF2C02E1BF8A8DEFFF921C11B7 /* RCTLayout.h in Headers */, 81DAEA474DC6FF87563B93C13FEB6658 /* RCTLayoutAnimation.h in Headers */, 4092C517F13E60D6D9C673E3530CDC84 /* RCTLayoutAnimationGroup.h in Headers */, ADABCA286A349FD925529339BD32B6D0 /* RCTLinkingManager.h in Headers */, 5B413C5370B3C8A5A6CE70D0FDC10BDD /* RCTLinkingPlugins.h in Headers */, 3034E6F4E05DA159043F7E5065071557 /* RCTLocalAssetImageLoader.h in Headers */, 75903DCA8665A09EAEEED35654CA466D /* RCTLocalizedString.h in Headers */, BCF538F2334EA778995D5BC9776E8110 /* RCTLog.h in Headers */, 84D3648467DDC6B2AD609FFDC7234AD2 /* RCTLogBox.h in Headers */, 03584C8062B53F05A7A5BA8A4C002AE0 /* RCTLogBoxView.h in Headers */, 4C476F90D14D11D54E3B5C1CDCECB6EC /* RCTMacros.h in Headers */, 880558ACD71010548F8BC00CB06E3F67 /* RCTManagedPointer.h in Headers */, 079D341C7E45BB820BB7CD75514E3282 /* RCTMessageThread.h in Headers */, 57E323C310C3D972940C78AA088CA477 /* RCTMockDef.h in Headers */, 7438BEC925296FD9297DD9E7EDA478F0 /* RCTModalHostView.h in Headers */, CC9050FCD05014AE5E216B89B1760808 /* RCTModalHostViewController.h in Headers */, D003AF5F1E96BB49180B4461CFD27434 /* RCTModalHostViewManager.h in Headers */, A0BA02788E52121E2D2839A9778AF779 /* RCTModalManager.h in Headers */, 34773F2E8217FAD06A591CA37AA00855 /* RCTModuleData.h in Headers */, BB31575F6CB94C521F193DD6091B43C1 /* RCTModuleMethod.h in Headers */, 9E7BF4EF40C60244E247C1623968BDDF /* RCTModuloAnimatedNode.h in Headers */, 26C1DCC87DD011BAEDB37B82B115865B /* RCTMultilineTextInputView.h in Headers */, 2CD12789B7555CCDC42A8F96829434FD /* RCTMultilineTextInputViewManager.h in Headers */, F9E8743FF34708E334614F893FBF83B1 /* RCTMultipartDataTask.h in Headers */, 64BE95CF8E1CB240B9219A5ED28B0588 /* RCTMultipartStreamReader.h in Headers */, 28BAA972822F670D348FDBFC73AC77A5 /* RCTMultiplicationAnimatedNode.h in Headers */, 5986E5044FACB904AD3636FF14E01EA8 /* RCTNativeAnimatedModule.h in Headers */, 7D741114888D6A8F92CA30DA7938FF9F /* RCTNativeAnimatedNodesManager.h in Headers */, 8455F11FC6E87759E2FCDDB9086B9527 /* RCTNativeAnimatedTurboModule.h in Headers */, FC40472096744F71321EB900227DBDCF /* RCTNativeModule.h in Headers */, 0BE9D5B31B8178E25D7701679E024C08 /* RCTNetworking.h in Headers */, 3C7BB8C75F929D8FA314EB26ECE53CDA /* RCTNetworkPlugins.h in Headers */, 1AF45C2BB51683947FDF5F457C5EB8C4 /* RCTNetworkTask.h in Headers */, 324C443EB256ACB55C212834659DA668 /* RCTNullability.h in Headers */, A72514BC4A3B50129690364CE05BB754 /* RCTObjcExecutor.h in Headers */, 7EF0E9E009F1F4EC5CFC8B6A2D6B1217 /* RCTObjectAnimatedNode.h in Headers */, 012BB6EAAEB87A76C792B66D04A36B78 /* RCTPackagerClient.h in Headers */, 8DDC6079A4374C5B0D4B59CAABF373C0 /* RCTPackagerConnection.h in Headers */, B1B19038EAA3237411A3B68C9A696A59 /* RCTParserUtils.h in Headers */, 34D59BC36C90C49E573199421B622923 /* RCTPerformanceLogger.h in Headers */, 51D4FB82F519866F1B77D4DF5EB83ED6 /* RCTPerformanceLoggerLabels.h in Headers */, 28420DE9D152356E2FAB7532421804A5 /* RCTPlatform.h in Headers */, 2A63D2E0528E66779F46F18FC17AA6E5 /* RCTPLTag.h in Headers */, 617C1D1B08BAA6078A2F22FCE63F7826 /* RCTPointerEvents.h in Headers */, 8AADCF981A3C5BFC9A728A4807F1FD57 /* RCTProfile.h in Headers */, 18D0C52BFC98BED39B1BA61AEEEE42BA /* RCTPropsAnimatedNode.h in Headers */, 414311FDDDBD44A12AB564123ABFDE7B /* RCTRawTextShadowView.h in Headers */, F0D80CAC8195D04EC5ACCB34AFA9E62C /* RCTRawTextViewManager.h in Headers */, 886A63B1ED1A16230902FA3A13D84CB7 /* RCTReconnectingWebSocket.h in Headers */, 4FD4897BB7E463BD4B8545A8DDEB8278 /* RCTRedBox.h in Headers */, 17A413B902A05FF7C8FFA29FF67C8484 /* RCTRedBoxExtraDataViewController.h in Headers */, 47BCF82C2C44E89BAC2425744C56BD8A /* RCTRedBoxSetEnabled.h in Headers */, 07D42E889C8BBFAEBA0D6209B9929086 /* RCTRefreshableProtocol.h in Headers */, FBC28207A3782629D8ECB7F7D22E1FA6 /* RCTRefreshControl.h in Headers */, 0B842AC5587E3794C6EA8047E54FDB41 /* RCTRefreshControlManager.h in Headers */, 01A541E5BC9CBB99C2EE623A47D5DC67 /* RCTReloadCommand.h in Headers */, 24B93B8D464A1B7783F9BCFDD33A31D4 /* RCTResizeMode.h in Headers */, FB9F5AADA3A6FAA282D800FC90BD863C /* RCTRootContentView.h in Headers */, E306E120D9274E1261E24B71BDEC3F9D /* RCTRootShadowView.h in Headers */, ED0E6B99D524187706AC30E2B53F55D4 /* RCTRootView.h in Headers */, 7F192056513AC45D918FE1AD9A537992 /* RCTRootViewDelegate.h in Headers */, B594B10156EF39FBB4350BFA868A2CC3 /* RCTRootViewInternal.h in Headers */, 6511219B93A0F6722B55F007369CA247 /* RCTRuntimeExecutorModule.h in Headers */, 8B3A0DE1411F63948C1B7328AC4DC664 /* RCTSafeAreaShadowView.h in Headers */, 54CA7A9EEECD01C4F6D22243BB6A0AD9 /* RCTSafeAreaView.h in Headers */, AF405027DF88096366B45A503349F101 /* RCTSafeAreaViewLocalData.h in Headers */, ECAEA2A0100A0AE72A3E437FD005881E /* RCTSafeAreaViewManager.h in Headers */, D9ED192F400D44DC02D98A20B123F16C /* RCTScrollableProtocol.h in Headers */, 86E83BA3D9D13B74E9375EF5DABEBBFE /* RCTScrollContentShadowView.h in Headers */, C5C73190B9AE8ECC8D69A6B28FEE407F /* RCTScrollContentView.h in Headers */, 3BD1B9E6E3E5634C671FCEB14161A751 /* RCTScrollContentViewManager.h in Headers */, 0740889CD8076D764DE2ECBE838DE059 /* RCTScrollEvent.h in Headers */, B853DD690352D47747E1C0F628B2F965 /* RCTScrollView.h in Headers */, C94ACD989BE1642BD08003091B0B9A6A /* RCTScrollViewManager.h in Headers */, 5B52BA28DECEF4797254071E699E01A3 /* RCTSegmentedControl.h in Headers */, B33ADB9AA3945A5FBE3DA6B5CBD94CCF /* RCTSegmentedControlManager.h in Headers */, 94B9DAD9D6E6079306AAA42C6D3B711B /* RCTSettingsManager.h in Headers */, A2E51C7BD2FFC062C48C10167934CCAC /* RCTSettingsPlugins.h in Headers */, EE907C353DD8D1953A2994C57CBFE26C /* RCTShadowView.h in Headers */, 1BC18889A0F8309C58DCAE6525184FC0 /* RCTShadowView+Internal.h in Headers */, 03E022AAD071ABD52393EA63BED66760 /* RCTShadowView+Layout.h in Headers */, 99CC5B420D64ACDD783109436516FD04 /* RCTSinglelineTextInputView.h in Headers */, BF99D3180B889F62B09F91350E7C662B /* RCTSinglelineTextInputViewManager.h in Headers */, 46F7ED9516919044D6FD2A226838DF0A /* RCTSourceCode.h in Headers */, 750459F7A6D7BC32515039B696B032DD /* RCTSpringAnimation.h in Headers */, C3FC726B41D7E5C3AE7913D10FCA7710 /* RCTStatusBarManager.h in Headers */, 756FE581ACE3EDF9F30A05EE811C000A /* RCTStyleAnimatedNode.h in Headers */, C6CDF82E4F1DB6694DC892F9E734C059 /* RCTSubtractionAnimatedNode.h in Headers */, BC62BEBADDC0DF99B2626677E09F4224 /* RCTSurface.h in Headers */, D7A16D49963032254D9E148DAE6AEFC7 /* RCTSurfaceDelegate.h in Headers */, 50506943625219009602B94281736940 /* RCTSurfaceHostingProxyRootView.h in Headers */, 5361BA153A940D1856498F41B988E292 /* RCTSurfaceHostingView.h in Headers */, 8F323E2F2DA6F55192388F26F0C24927 /* RCTSurfacePresenterStub.h in Headers */, ABDAE92094104A99B62D530A783B8446 /* RCTSurfaceProtocol.h in Headers */, 826104B9BF8174D5B23A6D51AC4A16AF /* RCTSurfaceRootShadowView.h in Headers */, B95535EB465D0577E50655E252780F7C /* RCTSurfaceRootShadowViewDelegate.h in Headers */, 42F55F8D487C777A6A8C180E4DAB0BEE /* RCTSurfaceRootView.h in Headers */, B9059E18CB874DB0187746AD8FC588DD /* RCTSurfaceSizeMeasureMode.h in Headers */, A1972E1E435534713DA2AFD946DD0856 /* RCTSurfaceStage.h in Headers */, E03DA0EF491E76A7B522F8AA29B6F505 /* RCTSurfaceView.h in Headers */, 6B92459CC6D8AE87C82FD9DA5D8B34B1 /* RCTSurfaceView+Internal.h in Headers */, BE89C52B16C25B11A806A9C95D163AC9 /* RCTSwitch.h in Headers */, 66F7D45C7DE22886B4121EADD127426E /* RCTSwitchManager.h in Headers */, EA64CBFA402C1BC6683F8FD457F438B4 /* RCTTextAttributes.h in Headers */, B9CD8F8C81F90DDB41B08F0B005D2FD2 /* RCTTextDecorationLineType.h in Headers */, 28FA21EE52C9E18188C59298BB5C9B23 /* RCTTextSelection.h in Headers */, 6598CFB917768FDAB38F05A0AC546F14 /* RCTTextShadowView.h in Headers */, ED92DB0641F90C061852E17704C6A69B /* RCTTextTransform.h in Headers */, AC022ED4B280CBF9CC05FD81E941DF74 /* RCTTextView.h in Headers */, 726C35D99D2C6DAD679EDA901EEB9989 /* RCTTextViewManager.h in Headers */, 6B52CF6C070C5E98C528FB32F1D34624 /* RCTTiming.h in Headers */, 3915F70AA612897DAA0B10B81683CAC5 /* RCTTouchEvent.h in Headers */, 25E65F9C1D8F402D822044446C5F4D76 /* RCTTouchHandler.h in Headers */, 8933D7B181697994023E7AAEB3DD9909 /* RCTTrackingAnimatedNode.h in Headers */, 12731EBF39779BB1E177B701949AD2C2 /* RCTTransformAnimatedNode.h in Headers */, 5F4C99E3B76689373D2ED7C28927F12D /* RCTTurboModuleRegistry.h in Headers */, 1DD61B98236970129C72DC5F12F60FFC /* RCTUIImageViewAnimated.h in Headers */, 10C16DE5DAD1B3D65FCED627DA9BA6F2 /* RCTUIManager.h in Headers */, 6CB1E8F84A18475FBACB6C3B62D0AFE5 /* RCTUIManagerObserverCoordinator.h in Headers */, 324FCC0FF10B590AF07F730C94CD911D /* RCTUIManagerUtils.h in Headers */, B1822AAA5CD811D59978BE7D8B57A8B1 /* RCTUITextField.h in Headers */, F7CCD35E242791EAD335DBA830CAF627 /* RCTUITextView.h in Headers */, 1366F04C5590C425BB77826538FFC333 /* RCTUIUtils.h in Headers */, 755282CFA23DBA4E963AE5F9CC11C0FA /* RCTURLRequestDelegate.h in Headers */, 86FE8980695E53A76E1F1E83E07F2AC3 /* RCTURLRequestHandler.h in Headers */, F133C4AD67CB54836E98512AEA7655A8 /* RCTUtils.h in Headers */, BF50613A6236144CFC64B76482D8604A /* RCTUtilsUIOverride.h in Headers */, CE6B34445994B4A63A62A2E845DC3979 /* RCTValueAnimatedNode.h in Headers */, CBAE1BAD49EE72A5219F0810B2E2285A /* RCTVersion.h in Headers */, 5141D72D38376A7357634EA7BED7B529 /* RCTVibration.h in Headers */, CC6A3584C37F8AAF1DB1E24E2879A29F /* RCTVibrationPlugins.h in Headers */, EEC7964460506D85D5B80B2CDEF357FD /* RCTView.h in Headers */, 244DF977A158213CCB43D4FB6CB90E3C /* RCTViewManager.h in Headers */, 78606A7D8FE0761B720DD4F0531BB36A /* RCTViewUtils.h in Headers */, FD6C993EEC7B56C5CD8F3E8DDDE62EA4 /* RCTVirtualTextShadowView.h in Headers */, D48E92175A87C0C0244115F10ACB1E08 /* RCTVirtualTextView.h in Headers */, AE4FCD234B012BE65C7CA496861FDEAE /* RCTVirtualTextViewManager.h in Headers */, E80A175FF7F506B78BD9376B8D68EB2F /* RCTWebSocketExecutor.h in Headers */, 682AD90FD13AF03CF8AC476D4EC22BA3 /* RCTWebSocketModule.h in Headers */, 81D57A8CE92E84FEA69A148D1BA897A5 /* RCTWrapperViewController.h in Headers */, 8E729B5904B3B5667E973370219CDEF4 /* React-Core-umbrella.h in Headers */, 33E2BFCBA5338082F01D9EB37BAA4D29 /* UIView+Private.h in Headers */, 8E6752CB584D97C2A86519B83B482227 /* UIView+React.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 51368F0B4BB078EBDF20C37CE3191BDE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 0911E5CE6C9678C2C47A2A1749FF64D4 /* primitives.h in Headers */, C9673DD1A700BA1297C0EEF20E6F1F51 /* RuntimeScheduler.h in Headers */, EDFC9B54A30EA3B68823A2511866FD00 /* RuntimeScheduler_Legacy.h in Headers */, 7B283574381E52437094359C04A8B040 /* RuntimeScheduler_Modern.h in Headers */, AA9C529959EA98EB49C28EE11BD7137B /* RuntimeSchedulerBinding.h in Headers */, 8EE950B8A3384D574B426B5A85C62D4D /* RuntimeSchedulerCallInvoker.h in Headers */, FD39522D224A22B7B91E3BFB6D598CB4 /* RuntimeSchedulerClock.h in Headers */, 6629AA88CD8BD22CF2067C68C96E0BEE /* SchedulerPriorityUtils.h in Headers */, 5B09CFB50E640F8977C0E91123BBF38E /* Task.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 539C88BE469CDEE166CB70B00092D982 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 890821868B6146972E028C6CDCFAFB46 /* RCTAdditionAnimatedNode.h in Headers */, DF58E8CF0A1D74B0B1D6582660B33A6B /* RCTAnimatedNode.h in Headers */, 3AB2BCC50FC4E939FC03FA2CA6D93E7C /* RCTAnimationDriver.h in Headers */, FFFD58B8888202E20B594C6DEDBCBA07 /* RCTAnimationPlugins.h in Headers */, 3BD8694DF761B2FDC7BECD2BF44B222E /* RCTAnimationUtils.h in Headers */, 2000672F833DFA37DD8CB7BEAFCCF66F /* RCTColorAnimatedNode.h in Headers */, 0FD8067209C57B8F29919B037BC1ADCE /* RCTDecayAnimation.h in Headers */, 993B010DAB0C47A19FF3C8CB5F18F3BB /* RCTDiffClampAnimatedNode.h in Headers */, BFBCF7EE822DE23E5F13DB60A08EE12A /* RCTDivisionAnimatedNode.h in Headers */, 93917AFA25B6646D3B4C8B89C923372C /* RCTEventAnimation.h in Headers */, ABBD121FC3379E6C4E0DB69D6C223F28 /* RCTFrameAnimation.h in Headers */, FEC88C9D9E42428AEBEA8C790889E70D /* RCTInterpolationAnimatedNode.h in Headers */, 71128E53B471C85A99F88750408B7752 /* RCTModuloAnimatedNode.h in Headers */, 2E561E90748578416A9EE5CB139792AF /* RCTMultiplicationAnimatedNode.h in Headers */, B42F97FAE85B0CA99A1BB0B32E53A135 /* RCTNativeAnimatedModule.h in Headers */, C38C0624ADE70CC7A4721C78981D8051 /* RCTNativeAnimatedNodesManager.h in Headers */, E3A121600E7E1AF0BAD4F458FB4F3BA8 /* RCTNativeAnimatedTurboModule.h in Headers */, 0A66803576446C88DE73AFC6C2B9B253 /* RCTObjectAnimatedNode.h in Headers */, 0D396D428896CA61E2301A747EE5708F /* RCTPropsAnimatedNode.h in Headers */, CCD0BF1B78D5A69D873D2841DBA1869C /* RCTSpringAnimation.h in Headers */, 3BFD717911ACBB0C75C28B7BA77DAF93 /* RCTStyleAnimatedNode.h in Headers */, 4BDBFE1061C5C8DB2356FEC255512FC5 /* RCTSubtractionAnimatedNode.h in Headers */, 91261AA9EF204EAA4F865018549E8476 /* RCTTrackingAnimatedNode.h in Headers */, E51D79B40AF3291F91E6759876CA3EFB /* RCTTransformAnimatedNode.h in Headers */, 90FE9EE300AD62DD80F8ACBEB966A72A /* RCTValueAnimatedNode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 5C14370402AA4BB4AD7B1F6D8652BE55 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 5E4BA94A4BD1964E50FE99AF6BF0B983 /* CxxModule.h in Headers */, 57E8B60FD6E5FA9BF534BDE834453809 /* CxxNativeModule.h in Headers */, 5B6BF9900C79C4F7623A28977857CB1B /* ErrorUtils.h in Headers */, B1ED7A7AD7852A7431686CD7CA9D7587 /* Instance.h in Headers */, FC894BAE1C98F8C86943904E2C83A368 /* JsArgumentHelpers.h in Headers */, 563F1EC6EC87919CEDA50FCB4D3C5B98 /* JsArgumentHelpers-inl.h in Headers */, 0C341730FFBD4215E38D143F056AAD97 /* JSBigString.h in Headers */, 9979B172D36F3FD1E5835B9D990C0603 /* JSBundleType.h in Headers */, 2F92EFDA8334261165D9729751EBCBD2 /* JSExecutor.h in Headers */, 2107303D3315D0F3426CECDA31262A67 /* JSIndexedRAMBundle.h in Headers */, 0DE685BA8A37536FD089DCCA1AEADA20 /* JSModulesUnbundle.h in Headers */, 49DE6AADE6DD8D3EF3EB0555A271672D /* MessageQueueThread.h in Headers */, 6B8F4AA8DFDA7E810544992C621FB2AC /* MethodCall.h in Headers */, BD6827747579EA86DBDAAA32D9084BE3 /* ModuleRegistry.h in Headers */, 682BA7F2BE81C4075B446A8A758EC098 /* MoveWrapper.h in Headers */, 7A0ED52CE1695B89D2AC55E1350CE883 /* NativeModule.h in Headers */, A55C66E5656D2B2D10BA7A72BF99EC50 /* NativeToJsBridge.h in Headers */, E19474B280DFA77E434C1C2048E81937 /* RAMBundleRegistry.h in Headers */, 90ED9323F40C70F953900BEDF86C83CF /* ReactMarker.h in Headers */, AEB70F3808CB6E0D00B663DA7FC98512 /* ReactNativeVersion.h in Headers */, F250802327640CC520B809636DE1F35E /* RecoverableError.h in Headers */, 02316C6ABD89D9DCFC7B8AF62D777CD8 /* SharedProxyCxxModule.h in Headers */, 88FF806A114A17DF66BCADF876DACC04 /* SystraceSection.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 5C4140C66CDBC309D6DCFA1BCE146F4A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3B553323908F46C01882B3EC75FD2192 /* Color.h in Headers */, B7D7841ABF9F0411A5E5307D1DA2C3F6 /* ColorComponents.h in Headers */, 52450E118C5E9BED82AD4E105DE8E4FD /* conversions.h in Headers */, BE72B86093B43341E6E66A17E39FC367 /* Float.h in Headers */, D18A57DE0C2C135355388DF5C2EB6C7E /* fromRawValueShared.h in Headers */, 3B35DD8BC49B13A3D0EAE82DFF5457B4 /* Geometry.h in Headers */, EC6ACE9F6F6F8AF98C952D03A7071FAA /* HostPlatformColor.h in Headers */, 7006296EED73C5539402EABE1BC4F702 /* PlatformColorParser.h in Headers */, 6B4C8962F186CAEBD9C1D8E294C4CBF1 /* Point.h in Headers */, 124EE25B6A65DBC1926C13C9CC91C6E1 /* RCTPlatformColorUtils.h in Headers */, 76D4A3EF85DBD86A0692A18E5A499246 /* React-graphics-umbrella.h in Headers */, BE9378E4048139E2434CD8416D014949 /* Rect.h in Headers */, 4EF5C191311E7EF4E4D90D6254B58369 /* RectangleCorners.h in Headers */, A59FCD183BF94129D76323D85738AA5F /* RectangleEdges.h in Headers */, F599678CBCE5FA3A056E96545DB7916D /* rounding.h in Headers */, BC6F9DEE2138A6B67A96F83FBFEFD5A5 /* Size.h in Headers */, 6E29FD7F204937BC53BC1010354EC995 /* Transform.h in Headers */, 09DEA251437E9A7F259A7FADBDC16619 /* ValueUnit.h in Headers */, B9D6695B46C1A7889F7039E360A604F6 /* Vector.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 5EB5B5D0D6BFF8615D4D1DF5D0982F1F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( C54B8565B5FFD71C349912AF08E0CE61 /* ExecutionContext.h in Headers */, 0C829322BFE8672132D133A9ADDC02E6 /* ExecutionContextManager.h in Headers */, 3FC78F29079C2C32E0662B9734092AA1 /* FallbackRuntimeAgentDelegate.h in Headers */, 9C380E9FAFBB1F19957EED6469446B92 /* InspectorFlags.h in Headers */, 3EBE1E69C78277F3AAED44F5C90F5922 /* InspectorInterfaces.h in Headers */, 9178CD20BCFCB0BC939BC7561FCB33FB /* InspectorPackagerConnection.h in Headers */, ACDD1A69BD4842832E7BA0BB94F2DD32 /* InspectorPackagerConnectionImpl.h in Headers */, E3BF65D170B30D844332C8C4223E8E85 /* InspectorUtilities.h in Headers */, FACA8109B0EC6154E355B2B3F3CE7F17 /* InstanceAgent.h in Headers */, EE9C939880E3A056DAC25A4A496399E4 /* InstanceTarget.h in Headers */, CA84E75F9218D17F7CDAED715D619E5D /* PageAgent.h in Headers */, 486006AF8D114F257E87351B3C8A5E03 /* PageTarget.h in Headers */, 653AD0E981ED5210BF09AFE61A844339 /* Parsing.h in Headers */, A276C17FE51EEC55219F3A15FC9278A1 /* React-jsinspector-umbrella.h in Headers */, 744CFE8EFE8318B6887C7D057FB590D2 /* ReactCdp.h in Headers */, 4E995A62CBE562B414C48A4D96830F4E /* RuntimeAgent.h in Headers */, 028D9502D34CF9EFCF733F318ECCD483 /* RuntimeAgentDelegate.h in Headers */, B7CE41DF964F198D03359FD16C29AD66 /* RuntimeTarget.h in Headers */, 5D29D817CD0566EC101B3FB3C26BF9C7 /* ScopedExecutor.h in Headers */, E8FD4F2B225C52C7C56487D34692AEB8 /* SessionState.h in Headers */, C183B242623BA337D3C0F828AD6BA9AD /* UniqueMonostate.h in Headers */, BDB5B6E32C9C64AAC0AF0F3D37F137F9 /* WeakList.h in Headers */, 53B4AE3B6F2DD428F69FCE1829438257 /* WebSocketInterfaces.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 6819AB1E5F52E6E756C996BB746F2016 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( B7B95F233F6AFFC68E4B9CD4F18E0EAF /* RCTAppDelegate.h in Headers */, A7D30D7B1B80839FB303F4681082D409 /* RCTAppDelegate+Protected.h in Headers */, C27DC9FF99360274DA538C421B4F71C1 /* RCTAppSetupUtils.h in Headers */, 9EAD4F18278E7EB2645F6DEA5C454695 /* RCTRootViewFactory.h in Headers */, 4C94BF7B2D691369F2AC39B151E3E3DE /* React-RCTAppDelegate-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 74E7814F4B2665A4B71520D1FD570E65 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3D77407A19494090FF57F73616D734D8 /* decorator.h in Headers */, 10FD9B5E858AB7024274775682AFD14B /* instrumentation.h in Headers */, BF8E3A91D5B558AB51CEE906B5AD877E /* jsi.h in Headers */, C96B7502400A4B3C2BF51868F40533CA /* jsi-inl.h in Headers */, 6AEB18995E0DCEE6CCE54BD53AF7B465 /* JSIDynamic.h in Headers */, 711E2F00A29C1C7E12B55ED37DB50C58 /* jsilib.h in Headers */, A7C3F262E0817389B32853B800C6AB71 /* React-jsi-umbrella.h in Headers */, 927C8D7BB3740323066FE2E8CD53F02D /* threadsafe.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 7556844A2603E807BA60BBFA9278F78D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 79B39A2A7F90A076B7453661C54FDD9D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 8656D5B4FA65E6F049F59F1441FCCF44 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 5290B35633031393762B3BE3DD7B6BB2 /* BridgeNativeModulePerfLogger.h in Headers */, C55E12D16DFC55B05F20AC48CC367A4D /* NativeModulePerfLogger.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 88C438498ECA995F20C03105412663D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 89423B1A952759E81DC0C4287F475231 /* RCTDeprecation.h in Headers */, BC7F8E1CBD8D713846A0BBFB5CACCFEF /* RCTDeprecation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 91B596376A967609FA5D360BDD3E4367 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 017DF990D65F9C2E66641A01B59D6B5A /* Access.h in Headers */, CF679B941190DB17482EAAB2423482B4 /* Access.h in Headers */, 1F72F587B6C3002E9497082BD1AA562D /* Align.h in Headers */, BDEFFBF8EF6DDBC1114CD89E77DDD2B4 /* Aligned.h in Headers */, B38B9B77CEE53F8B3F021D142B3B4E89 /* ApplyTuple.h in Headers */, 08C4E352A9F9F366FA356A9978482B37 /* Arena.h in Headers */, BB4F1FA68DADFBABA5CDF3C1D7045F38 /* Arena-inl.h in Headers */, B69C081CE535E0CE9BFBC9566B1259E8 /* Array.h in Headers */, E60661F419313219CAB90AAA4BC569CF /* Asm.h in Headers */, 7F0FFA25BF039E3FEC89257156006BB2 /* Assume.h in Headers */, 3F344B5BCE4AC351E0E383F5688F37B9 /* AsymmetricThreadFence.h in Headers */, D612BC5C887E6996DDC550FE55D73EEE /* AsyncTrace.h in Headers */, E22FDC89AEB18B28B58FE9516DCDEA07 /* AtFork.h in Headers */, 7F25A20E6035D2002292AB1D88D1D35A /* Atomic.h in Headers */, 3EC98ADE8058D966A66677C7720BEF1C /* AtomicHashArray.h in Headers */, 9939A9054B27EC267D364A8B16FB9959 /* AtomicHashArray-inl.h in Headers */, 3863DCA85A7094A440D5551001AA0CC6 /* AtomicHashMap.h in Headers */, 5E6D160C875DB3935553DD37CF62507F /* AtomicHashMap-inl.h in Headers */, C8116CD6D7885B9BF76539C205568E78 /* AtomicHashUtils.h in Headers */, 875A937197A2E17F4FFDCBEF110CD993 /* AtomicIntrusiveLinkedList.h in Headers */, 707CA342CE6A6666CA1D5E537C243D40 /* AtomicLinkedList.h in Headers */, 117CFBAF2F3D6DA74F906DB824DBA6A0 /* AtomicNotification.h in Headers */, A254132978ABCE50DAD9D233D0F89E0B /* AtomicNotification-inl.h in Headers */, 31519DE72E79DF61D9D2A39A29C69147 /* AtomicRef.h in Headers */, 374104F0C17176257605FDFEC67C537C /* AtomicStruct.h in Headers */, 5AACF18D85E08DADE6C9208ED3F6A7D0 /* AtomicUnorderedMap.h in Headers */, DF410589C0140F902BB7B8E4C1C38CA0 /* AtomicUnorderedMapUtils.h in Headers */, 0C1656F42CCF33F050C0CE2F7FC009E2 /* AtomicUtil.h in Headers */, 7446CA132F347A062A8953D8892D48C0 /* AtomicUtil-inl.h in Headers */, 201B4E5253766941A6453DBDAEBB5A7B /* Badge.h in Headers */, A95DE42763202885855D7D06BC84D1C7 /* base64.h in Headers */, FBAC357014D2034EA5D2C9B1B17E5E32 /* Baton.h in Headers */, 6C0DB8EAEB1FCD9CDAA61E9B467F4CF9 /* Benchmark.h in Headers */, A2D2289CC073BE7056299A54E1245ED8 /* BenchmarkUtil.h in Headers */, 7F39D856A35CF04F8D6416A5DF528342 /* BitIterator.h in Headers */, 988804049A0E839CEE4F97680EA6F030 /* BitIteratorDetail.h in Headers */, AE53F4F8AE46955F8D5F913F84AE9ACE /* Bits.h in Headers */, C2619EDFD44B3B235FB459A25B4A72B7 /* Bits.h in Headers */, 4DD93443D6B7F7732D024E85E90D06E9 /* Builtin.h in Headers */, 9D92D08729B4FAAF303182FEBC7434D2 /* Builtins.h in Headers */, 23EA4F6D2E5FC91C6D53D8806CEAB325 /* Byte.h in Headers */, AF31D319038A2C77960FC990CE634F65 /* CacheLocality.h in Headers */, 759763993CBCA407771469574C2A48A5 /* CallOnce.h in Headers */, D06694D3AD50DB51D293984A9018A124 /* CancellationToken.h in Headers */, B0EB53E50359F579A7E205E8370A5906 /* CancellationToken-inl.h in Headers */, 702965A08043A7A64AAB09E780D08663 /* CArray.h in Headers */, EC459A986FF283D828DC0709F40EA216 /* Cast.h in Headers */, 11E23CE507B474D1E3C4F5B07071F93B /* CheckedMath.h in Headers */, BDE6C06ADC0B7FE944334E2321297371 /* Checksum.h in Headers */, 07E90BA58803F737B48DA6554802CA36 /* Chrono.h in Headers */, 6D26C8780D61C6AB8EBB3BD7540D9A0B /* ClockGettimeWrappers.h in Headers */, 2AF8AFC12AED081CCB827E74F6E3CEC2 /* ConcurrentBitSet.h in Headers */, 94596CFFB0AF1EAE8EABCCF8ABA45AB8 /* ConcurrentLazy.h in Headers */, 1671FF1B0ECF02D1CEEA5C6BC8BD0545 /* ConcurrentSkipList.h in Headers */, 30E5FD6C28B6DDE9382A00324EB0123E /* ConcurrentSkipList-inl.h in Headers */, 21762E8D44EA510506E4F327D3288746 /* Config.h in Headers */, EE5FC9431E2D8B9E8E29AE277727E9FA /* Constexpr.h in Headers */, 4ED180A39A38A5F8D12F8A4DD4E0B5F2 /* ConstexprMath.h in Headers */, 3497C572885DBA4E24B62AC77F10BD16 /* ConstructorCallbackList.h in Headers */, E94921804AC15DB216F286A5109E560A /* Conv.h in Headers */, C032E5BB08569C501D19399A5F42C999 /* CPortability.h in Headers */, 3CCDDC20E73F5316F844BD418D7FB570 /* CppAttributes.h in Headers */, 309E25F08B621B5EBE7BF0494CC68190 /* CpuId.h in Headers */, 9FDC7DCF86B38C6B6DC5A4653928D9DE /* CString.h in Headers */, 4EF0F1BF78B522ABDB1A343A8EAC534D /* CustomizationPoint.h in Headers */, 2795ACF267C2F8A23C4534D06B00D110 /* DefaultKeepAliveExecutor.h in Headers */, 0C1DD5D979DF1A9CFCB7ED8034F0C6F0 /* DelayedInit.h in Headers */, DD34249033E690DE83215ADFB07FC012 /* Demangle.h in Headers */, 58F393E4C17D34757898EC95342CE376 /* Dirent.h in Headers */, E8C5BA1F6806B8ADC9B77E0D87BE6426 /* DiscriminatedPtr.h in Headers */, 744611E545D70C9024F524DCDE333162 /* DiscriminatedPtrDetail.h in Headers */, BCAF65D4FF616E0657166D728E13A11C /* DistributedMutex.h in Headers */, 6803F6AF68CE85F55D315BE81FC01F8D /* DistributedMutex-inl.h in Headers */, 0B0269B6A3EE1DBDAAE36B6D4D159963 /* dynamic.h in Headers */, 5AAC1149A7EFCE52B0C9734F26DE5DFF /* dynamic-inl.h in Headers */, CF09FB6845E2AC4E839B337CAB546E51 /* DynamicConverter.h in Headers */, BB7454F5C1251EBA25AB7F058CB59A20 /* EnableSharedFromThis.h in Headers */, BC9D1F143856CC6872D6C3559711EDAF /* Enumerate.h in Headers */, 5D15D3759AEB01EFD4AE2A00A7EE7E6C /* Event.h in Headers */, DE170A419A4F9680E64D24A8098D12E8 /* EvictingCacheMap.h in Headers */, 67721682C2C9B376827FE29F914C2AF6 /* Exception.h in Headers */, AFB5AD9523C803DB448766320C6E2C73 /* Exception.h in Headers */, 3A1DC7244ABEED96A40CF933FC2E60D6 /* ExceptionString.h in Headers */, B3032B5AE72FAEF31190CBBC5B0CE62D /* ExceptionWrapper.h in Headers */, 0E62F29B3D5442BFEE2027D69162BDF7 /* ExceptionWrapper-inl.h in Headers */, E187EF2A89D79C4FB2ADBF3CC9206292 /* Executor.h in Headers */, 1DAE7679F73905E15A400EAA0352004A /* Expected.h in Headers */, 061B1D7E9A7E2A984C737EABBEADD5F6 /* Extern.h in Headers */, 5947D88D6B066FB8DEC986C769F42F89 /* F14Defaults.h in Headers */, C2AF2A840E1928C9F60C0AA90B705BFA /* F14IntrinsicsAvailability.h in Headers */, CE297BDDD210CFFECB76D3DDE5F79D3F /* F14Map.h in Headers */, D09944151640950A50227FED4D33D066 /* F14Map-fwd.h in Headers */, 7BF8D2646D1CAF6729DF00B7A59FE017 /* F14MapFallback.h in Headers */, A0FE61561DE7D4E63D766ED6280A7766 /* F14Mask.h in Headers */, 6D208E676E5ED9C469B15EA9ECE737DD /* F14Policy.h in Headers */, 198422DED4D172D61EEF24D51F0C90FC /* F14Set.h in Headers */, 2127F903E8B55484942293A05FD9C18B /* F14Set-fwd.h in Headers */, 03366D45E928B9EBD08D6BFDB5566C4D /* F14SetFallback.h in Headers */, DC004696A79087E85BD8B4ACCD0AEBCC /* F14Table.h in Headers */, A55A7FDB0ED4E2B992421280DE3DF1D2 /* FarmHash.h in Headers */, 85CE887F8160FAC60A5613E583CD369A /* FBString.h in Headers */, E28AB3E3CA812DEDE441BBD946498138 /* FBVector.h in Headers */, B94D8534EACBCA2D52D42FE0F7EC7B6A /* Fcntl.h in Headers */, 91A571775E906D836350ADADEC849A4A /* File.h in Headers */, 3A0154B9D205F094345A2BA8B30AA58E /* Filesystem.h in Headers */, C0897BC0137C74A33DD2883F8E433ECE /* FileUtil.h in Headers */, D9D6B9A1B8A9324BA41626AE691533BA /* FileUtilDetail.h in Headers */, 5B54AF84CA742AC586CD4B9A08153940 /* FileUtilVectorDetail.h in Headers */, D47AF34FA46EDE8475273445306B7937 /* Fingerprint.h in Headers */, D49827B0FAC4BD22AB3B08E10FC71051 /* FingerprintPolynomial.h in Headers */, 0B2B305A2CAE42A22ABF7A71994E8C63 /* FixedString.h in Headers */, 9CA0EAF6DDBF255B903EB6F6FC52E0D4 /* FmtCompile.h in Headers */, CE24A9E32AA34B04A30BB385163BE369 /* FollyMemcpy.h in Headers */, BACA247E7575A79D1D48E553058B2976 /* FollyMemset.h in Headers */, 0ECBB2631A8B65825964451B921BF5DB /* Foreach.h in Headers */, FD2E98D9CB060B5341099B9ADB7B098D /* Foreach-inl.h in Headers */, 63B539B0CE7DE154473F78239B0D3E75 /* Format.h in Headers */, C8809AF5166285F86569DF60E9E4588B /* Format-inl.h in Headers */, F92D7374EFCC337E0153EF9BF6E660A5 /* FormatArg.h in Headers */, E4DED56A63CBA885B68CE8ACB532234C /* FormatTraits.h in Headers */, D0515E6C90A79FC61FA6AA4547A22242 /* Function.h in Headers */, 6C963BD5A4AF0CBEE113E34A5AD7D0A6 /* Futex.h in Headers */, C0C35A59710DB7C0E344E402A71E326A /* Futex-inl.h in Headers */, 91FE7C0592A4570B5BDEF0B5BD337FEA /* GFlags.h in Headers */, 31D4FC1E4131A0B940E87016B5558AE4 /* GLog.h in Headers */, DBD56004083F156CFDCC1D9EDCB75C1A /* GMock.h in Headers */, 46FEBA35C6BCC1DA359FA4818280E7C1 /* GroupVarint.h in Headers */, 4D50B5E65DC561AF8C8A0C625A261512 /* GroupVarintDetail.h in Headers */, 5093844A96D536399D02C2EC5DE8B829 /* GTest.h in Headers */, C786F85A5EF2AC362596E13AA803CEBA /* HardwareConcurrency.h in Headers */, 827D7956B2E401FEEAE0266A95CAD3F0 /* Hash.h in Headers */, A95970C4A74B1F4378A0406E2484D32C /* Hash.h in Headers */, 4FEAE94C64B4E7C4982BD2CB545711B1 /* Hazptr.h in Headers */, 5772DF2C067E6A85596FA510298BA4F8 /* Hazptr-fwd.h in Headers */, 07600B8FEF009F0EF5D1EE0510FDEE45 /* HazptrDomain.h in Headers */, 5F37D7E6B6EEB1FCA64D72A039B04E9F /* HazptrHolder.h in Headers */, 58974F1CDB4BC9CAFBBEA3777F0DFEBD /* HazptrObj.h in Headers */, 71A038ED712C2249A49737A7DF499932 /* HazptrObjLinked.h in Headers */, D5A493A2DC6BB01DCF68C20D070211F1 /* HazptrRec.h in Headers */, 536BA5E6F1BDEBF1509C5E230951E959 /* HazptrThreadPoolExecutor.h in Headers */, D19E93538E81D1EA6110AB9D09F8CBB5 /* HazptrThrLocal.h in Headers */, 645D3E41350D979EE998CAC5B0B50030 /* heap_vector_types.h in Headers */, F81C865E5B5533C436995EC5E52A4B02 /* HeterogeneousAccess.h in Headers */, BE78B704D8C638CDE420A05430C23402 /* HeterogeneousAccess-fwd.h in Headers */, B89B95DC19D784FF1D918EF174F7304C /* Hint.h in Headers */, BD19A05C58B1EC18B47AAF026E4DC966 /* Hint-inl.h in Headers */, 882323307508D2F24D0977D0A77F86B5 /* Indestructible.h in Headers */, 463357058D1F85D874C7B62913D0FB51 /* IndexedMemPool.h in Headers */, FF2681C5F344F1C15BB22CAB3D37600B /* IntrusiveHeap.h in Headers */, 888D80843EE8FCA8A3111C91CA24A999 /* IntrusiveList.h in Headers */, A64C2E2436921D1072D8A53C3DF89C6F /* Invoke.h in Headers */, D8447913DFCF5B46D25A9E40632A51A0 /* IOVec.h in Headers */, 2302E49723D8DDAEDAE358344C4523DB /* IPAddress.h in Headers */, 07BFA4FB5FAF3E14B7D0E4C8711EF0B1 /* IPAddress.h in Headers */, B8DC5312262AA5FA9C450ABC35A99FC3 /* IPAddressException.h in Headers */, 426DB0CBF495DD7166EBDC0A188B3F68 /* IPAddressSource.h in Headers */, 3AAA14243A77113026B848ECEA53CF6B /* IPAddressV4.h in Headers */, BC8F3B887DB5312669D79FBBED471C90 /* IPAddressV6.h in Headers */, 9C1A1AD1616249A784D388BDF0097A98 /* Iterator.h in Headers */, CD639A6F3B9AC7F773C16CF14E65FFE0 /* Iterators.h in Headers */, E66AD268C60422D082BEE54709653AA9 /* json.h in Headers */, CEECA36CB4ECD4DB8650B1C0AFD35463 /* json_patch.h in Headers */, E2EEB36768E7218D47E9C3CCDC290138 /* json_pointer.h in Headers */, 7A929745AF8FF896CBFC97801A077941 /* Keep.h in Headers */, E31E02EC62FF9E9E089267079E217636 /* Latch.h in Headers */, 648546E37669DA35243A1A9CB0DD7C59 /* Launder.h in Headers */, FA441FA915776C369C08804D23D7DA51 /* Lazy.h in Headers */, FE2957561C5BA3A18683A03C5EDC995C /* Libgen.h in Headers */, FECF2B95FB337E11258FC827F97C5516 /* Libunwind.h in Headers */, 9593D619EFB09CA84DE565FF4D96EB48 /* LifoSem.h in Headers */, E4D2C49797D59B2052F4B053076FE96E /* Likely.h in Headers */, D874563FB7B3E2324F5D62A96A1D66FB /* Lock.h in Headers */, 86FFDED80645961F5B0E1C77813A3E3C /* MacAddress.h in Headers */, 4AD9029E8839583D77C01D0769BFE50D /* MallctlHelper.h in Headers */, 151E1345EEB4F94B1CDF454826A8A392 /* Malloc.h in Headers */, BB715F4BA27FE3E850E271F2F75C37A6 /* Malloc.h in Headers */, 821D1FFAF81B7DEA7FF2DCB766C1E069 /* MallocImpl.h in Headers */, FFED29E1CC4B6F3236B8A5D380AC3447 /* MapUtil.h in Headers */, E1549E411581F07CCF13356092963823 /* Math.h in Headers */, 30B45DCAC90068BB83348CA5902B8A53 /* Math.h in Headers */, 8A092C05BF760852783B87DB4FDB2AFD /* MaybeManagedPtr.h in Headers */, D21E8439B7C2A9FA86AB82CBAD4FECD9 /* Memory.h in Headers */, 94E79DD64E0788BB7AD3BD1210CB6EB0 /* Memory.h in Headers */, CBAFAA32CD193D8766E0AA81E5043296 /* MemoryIdler.h in Headers */, 46661E9599B2C3FFCC3382FB3A5FFE2D /* MemoryMapping.h in Headers */, EC366E71583207A1FF0C46AE4BB7C276 /* MemoryResource.h in Headers */, DF670DA3ED5334665E6359FE60D70590 /* Merge.h in Headers */, E3A1C4B353CA38F45A94333BF57BC185 /* MicroLock.h in Headers */, 055DA973F87A7B3ECAE8DC3E4579BE45 /* MicroSpinLock.h in Headers */, FA517A5F883F194823AC6289673A6563 /* MicroSpinLock.h in Headers */, B337848370ED5CE208F7515930D400E1 /* MoveWrapper.h in Headers */, 61EDAC784E6BE6CC11E90819789A6DAE /* MPMCPipeline.h in Headers */, DB423C91AD697AC50ED1D8717786DB82 /* MPMCPipelineDetail.h in Headers */, 50AA780906EDCC9F6292E6EC33FE9AF0 /* MPMCQueue.h in Headers */, 223B827459F291942AAB05E2A456B6AE /* NativeSemaphore.h in Headers */, 4B28898B17974A51B867C8CCFC44489A /* NetOps.h in Headers */, 32F2AB6A8644D4D1214F84733E66E464 /* NetOpsDispatcher.h in Headers */, F62F7C9B6B3D4C75CA27889AF8F5D099 /* NetworkSocket.h in Headers */, 3D3FF2249FEED66F576893A1E61C19FC /* New.h in Headers */, 2C1991F1D309596566A8060D4AA46B58 /* not_null.h in Headers */, 0231AD4A2A7FBFE5C9D2F17185F85FFC /* not_null-inl.h in Headers */, 0B59F1574F8DE2DC67F22706B855B56B /* ObserverContainer.h in Headers */, 1FAE05CEA6EEBE5C78C774D3210A258B /* OpenSSL.h in Headers */, 9C187D694BC2F39668C0730FF0BECF50 /* Optional.h in Headers */, FA97A04B1279EB33668144798ED22447 /* Ordering.h in Headers */, A6F760D3AECEDF09C3CCA0D126B07C7E /* Overload.h in Headers */, 7E005F703B871E6F1DCBE37739EB9BA9 /* PackedSyncPtr.h in Headers */, 54CC533A473A58B04C39D4F6E221B40F /* Padded.h in Headers */, E8246C3EF8CEB14A7575546B4C5CECD7 /* ParkingLot.h in Headers */, 31E564ED4FF70E455D56A3FE8E642B7E /* Partial.h in Headers */, 6626D2DBEF601EBA88A883827E0295B7 /* PerfScoped.h in Headers */, E1398CF744BD639B09992EA62651FA74 /* PicoSpinLock.h in Headers */, 1C834508104A30A18F88CF2096F4D027 /* Pid.h in Headers */, 6B4D310DF575EB380CFD8E9008409324 /* Poly.h in Headers */, DC0175AB5F97BE5219331D7156CE1659 /* Poly-inl.h in Headers */, 7D0D84A0154B18374120BC47B1D87B83 /* PolyDetail.h in Headers */, 4EBF8CAAE3B17B65F2D10529F0D236FF /* PolyException.h in Headers */, B88A2040ECB1F70E8F25F03E8F33187E /* Portability.h in Headers */, 2FF0092F74C6CF1ABAD0EEE5E9B7DCE2 /* Preprocessor.h in Headers */, A1394038D409340FD789C018BBC1889B /* Pretty.h in Headers */, 7F61C911147722C681DB4FAA34CA76A1 /* ProducerConsumerQueue.h in Headers */, 8E8EBCCDD1F8861EE6CA56DDED1D958F /* PropagateConst.h in Headers */, 22C211E6B7DAF646E04306522824BBE2 /* protocol.h in Headers */, 02A0A139AA95C6D1D6EF74AC71B17B90 /* PThread.h in Headers */, 9068BB732F9B931880C0F8BFE1133112 /* Random.h in Headers */, 9D4EC18EDF8D39C00319EDCBF1F79BFE /* Random-inl.h in Headers */, B2DC64D7C3CD066F1671B9F4D25DAB6D /* Range.h in Headers */, 2F88D219CCD7E3E739539945E990B622 /* RangeCommon.h in Headers */, 1F8AEF1CE8B533F95A189E4023D12779 /* RangeSse42.h in Headers */, 6238DD8BEB29E55D03B1E651157E7B2A /* RCT-Folly-umbrella.h in Headers */, 64CFD3AB2AD6AFAF98EBAA5EDA7912CD /* Rcu.h in Headers */, CAA34B58E886CD7FFEA08D44224E647C /* ReentrantAllocator.h in Headers */, E11ADB7262AFE9B01BE2A4D975123EAA /* RelaxedAtomic.h in Headers */, 4EE2A2F1C282DD56E3EACAD3D5B911F6 /* Replaceable.h in Headers */, 066F723FEEAC257D987EC4692F9132EB /* RValueReferenceWrapper.h in Headers */, E9BE847CB39266616A343D766185AE45 /* RWSpinLock.h in Headers */, 8FADB205FCA25F99038ED124EC0587A4 /* RWSpinLock.h in Headers */, 2325A82054865E3115D014BB158CE549 /* SafeAssert.h in Headers */, 34057EED3E16A361B64AECEADE8125C1 /* SanitizeAddress.h in Headers */, A6A384ACF91A0F0532A09484483AE49C /* SanitizeLeak.h in Headers */, D011BB8962CE2E4274EB53AA1B967D44 /* SanitizeThread.h in Headers */, 3DE0145BCB2860FB847CCB3BC9C25300 /* SaturatingSemaphore.h in Headers */, 60190426D00C02887698BE0BE510103C /* Sched.h in Headers */, 71ED29F2A5198E2ECDC85E8A33913487 /* ScopeGuard.h in Headers */, B8C5AC5B7DA9B2A06BA64F5A4293A1EE /* SharedMutex.h in Headers */, EF146B59AE948C6C6364E8EA84B78330 /* Shell.h in Headers */, 30423632D5CB339BCC2AD8432337F83C /* SimdAnyOf.h in Headers */, CED9A3245D7A70EDF4C68CBD7962505D /* SimdCharPlatform.h in Headers */, D3EBECC8D67FF3FC5EAA9C674B0E118A /* SimdForEach.h in Headers */, FBF16827FFCE880C6C9310D61C773760 /* SimpleSimdStringUtils.h in Headers */, C324ED09ACD63780DE0215EED2E91E81 /* SimpleSimdStringUtilsImpl.h in Headers */, 2A3DF91AE6FF101059F589E7310AC371 /* Singleton.h in Headers */, 8C7240FF4EDFF6B9A2A5E7802D6A8976 /* Singleton.h in Headers */, 3C1F4BAA6EB4E34AB9A21DBCF42B54C9 /* Singleton-inl.h in Headers */, 5798BDA11D8CD9E1ABFE915438104A52 /* SingletonThreadLocal.h in Headers */, F7C692B78A07D122735D336A834ED83B /* SlowFingerprint.h in Headers */, 930BA86D8E612AC22708E752E4A61383 /* small_vector.h in Headers */, 1720823FC59E390B74A878DE97477C35 /* SmallLocks.h in Headers */, C38870EFB4A053C9D2A3C9C2988AD348 /* SocketAddress.h in Headers */, 0D98617995EAA61C68C93966586EC450 /* SocketFastOpen.h in Headers */, FF76D3A832ADFED4BFA28BED56073394 /* SocketFileDescriptorMap.h in Headers */, B247DC209221D5988107ED3546ED7B5D /* Sockets.h in Headers */, 83DEC1E75A0961D67CFAD87A5B6139D7 /* sorted_vector_types.h in Headers */, D4176277B387E1C890B5D11845DEB224 /* SourceLocation.h in Headers */, B3B5414D5E629029A44A3318840D674B /* SparseByteSet.h in Headers */, E7AB4FF7D66E7FFC299A8E48497DE691 /* SpinLock.h in Headers */, 4C9DAD28404CD20D00F4F363C2B46ADC /* SplitStringSimd.h in Headers */, 3EBDC6385095946F937BD8273B5F255D /* SplitStringSimdImpl.h in Headers */, A27584A1C4F237F91F194CC4258F5294 /* SpookyHashV1.h in Headers */, B466FFB8D8540FE239690E867F3DE68A /* SpookyHashV2.h in Headers */, F08150A3F6B8849BBBF47FFFE171DD70 /* Sse.h in Headers */, 2D6D394C37329EFADEA4DD715151AE40 /* StaticConst.h in Headers */, 1590F8C4A09BF6B5279331EA10DCD463 /* StaticSingletonManager.h in Headers */, 39830AA65645472F2A472D2F9A8E506C /* Stdio.h in Headers */, 6F9E2B385846EC9BB5EFF49C7BCF8AD5 /* Stdlib.h in Headers */, C872CAE403B0D04BB730CC1DE6247C69 /* stop_watch.h in Headers */, ABD6B1BFDA57AF34F462F5D6BFA170C5 /* String.h in Headers */, 04D5FD40FF43BF9CD112D2B1E115FA0A /* String.h in Headers */, DA23FF23D0B832AD6C6CC5A1C07D5A6A /* String-inl.h in Headers */, 936A9AB6C986409BCEFF9F365015DD61 /* Subprocess.h in Headers */, 896B5C9C328433F866F22E2C7414673D /* Synchronized.h in Headers */, 3B19E916E5FEAD382441C2ABD10B7D9B /* SynchronizedPtr.h in Headers */, DAC9300F3F4F2080C390F9E5913E3586 /* SysFile.h in Headers */, 1C27E39EC5320E65D9EEF37CF24927BC /* Syslog.h in Headers */, F45F8C649B66BE9FEBADCE67FEF12833 /* SysMembarrier.h in Headers */, BF7F76D1757734E5AA71B29C9225ED2C /* SysMman.h in Headers */, 253A354FA00DA7358AB288F68EC5437C /* SysResource.h in Headers */, AFA07FBAE0CAEE001E4CD63FE6F716FA /* SysStat.h in Headers */, 90429B015B1A484B8D95A975975DC51A /* SysSyscall.h in Headers */, AF3E68485FEF1859CC6B9FF8DA2B65B7 /* SysTime.h in Headers */, BD2AFB55C0FB4463B222D2413DD85C73 /* SysTypes.h in Headers */, 90F713B356228BE688BACF56AF55ACF2 /* SysUio.h in Headers */, 6931B8611963D0778CA2593797258243 /* TcpInfo.h in Headers */, 8A8DA15355CE0296C45E81D47DE94307 /* TcpInfoDispatcher.h in Headers */, 6B5291757C966F9ADE1BCEA1803F2FC9 /* TcpInfoTypes.h in Headers */, 586EC27EA2327C50B996F9ECE3F189EE /* ThreadCachedArena.h in Headers */, 237C8EB38A4DCFA780AD9A086456731B /* ThreadCachedInt.h in Headers */, FAA0D40E6EB5DA76CA69A3F12F7705E2 /* ThreadId.h in Headers */, D0940A21900A9EE7EAEA223B36E1FB73 /* ThreadLocal.h in Headers */, 5CEB688BB02A5D825F1C26B4E8A7DD04 /* ThreadLocalDetail.h in Headers */, 28DB4C2B675C293F97E5441914BE3302 /* ThreadName.h in Headers */, A0C26C8A77986A3E4CF105BC5A8DB603 /* ThrottledLifoSem.h in Headers */, 2CF8933910674BAB9196E42A6AF7938B /* Thunk.h in Headers */, 9A24531C4E6DA4D2A91036A2F8C0BF4A /* Time.h in Headers */, 80CF2710C53AA456D9BACA32C9F94242 /* TimeoutQueue.h in Headers */, 61ED3B991EE724C64D6FB1334A0314D3 /* ToAscii.h in Headers */, 412A5B7AE081C52FB806EE8584903C7A /* TokenBucket.h in Headers */, BF998BBFB68ECD47CD96ED1B92D5A9A4 /* traits.h in Headers */, 638A4F595CD09694A8BFA8C0F00F745C /* Traits.h in Headers */, DDB0B0190141D436ABDA58404D1499A8 /* Try.h in Headers */, 0D9B0AA50FE453B74124CA01912B4B7C /* Try-inl.h in Headers */, 5F232EC5AAC8B35EBB5427FB1C7EB303 /* TurnSequencer.h in Headers */, 4D5FEE7A0F5B1E878C3F4042BB635FD1 /* TypeInfo.h in Headers */, 1A11A9EE8F446EA3A8B0E39CA71A4BDB /* TypeList.h in Headers */, EFC8646A57CDAB8216B48B40855D4C6F /* UncaughtExceptions.h in Headers */, CC1A997B5C11BC4868D250FBBF8B0C1E /* Unicode.h in Headers */, 16B0FFD3A9EB7A8C3CA7E201D4471911 /* UninitializedMemoryHacks.h in Headers */, B6A677D259948AA6850E60654D2CA6CB /* UniqueInstance.h in Headers */, B37C611FC0371BA16C13DF36D8DCB479 /* Unistd.h in Headers */, 0D380672BD934ED65A236B8874DCD341 /* Unit.h in Headers */, 13372D98CE8D776E176F54A38E8E6C22 /* UnrollUtils.h in Headers */, 75A3370597938CD39071A1E5AE25CAE3 /* Uri.h in Headers */, 132ABB496BA53BC8084D9FE272A010D3 /* Uri-inl.h in Headers */, 341E869680CA9F16E5C3EBA6C65F3509 /* UTF8String.h in Headers */, 32927DAF25802D1608CD1D24D72A329C /* Util.h in Headers */, B484D7DD1C2D947F0F986688389D0E3C /* Utility.h in Headers */, 038A3F0242D33B98EB3291B978423B1F /* Utility.h in Headers */, A2373B0F99A1174A8D32C95900769A04 /* Varint.h in Headers */, 43CE6254997AD06649D76B1421C8250C /* View.h in Headers */, B440D0AFCA4156431037F2FB84B63972 /* VirtualExecutor.h in Headers */, 0B3B9EC6140BA1847988F15E0947B26E /* WaitOptions.h in Headers */, 302E01399CB39F9CFCA096F494FD609D /* WeightedEvictingCacheMap.h in Headers */, C1EB13FC1F8A6376FE9200436FEF08B6 /* Windows.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 96C8B3406F27BA8F9D23D265A963E433 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( DE6D3EF512445AED97626F2FD2C6E144 /* RCTInteropTurboModule.h in Headers */, 231F95C755E8E42DA517D4818ACCAFB8 /* RCTRuntimeExecutor.h in Headers */, E5CA44114FBA3754AF18B7499FF88E10 /* RCTTurboModule.h in Headers */, 98FAF118BA6AC3B0B0BF4D1DA3521E51 /* RCTTurboModuleManager.h in Headers */, 9BCC683CA550E64EE67D93F93BFFBD60 /* React-NativeModulesApple-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; A93B38F3B38D3C58EF7B4AB482E7F0E0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3F41C3029A1001872EA78923FEC6B96B /* AbsoluteLayout.h in Headers */, CB354C58134A502F6190E3C3C1BE2672 /* Align.h in Headers */, CB354C58134A502F6190E3C3C1BE2672 /* Align.h in Headers */, B950ACC5E104B59E5EED2084C222FE73 /* AssertFatal.h in Headers */, CFCE4649CD6C9EDC4A1E1798B4D609E3 /* Baseline.h in Headers */, BE3E5B126114B81C72E7C74D3ECFBE63 /* BoundAxis.h in Headers */, F674F6349A05690574BC66CFB35B60D6 /* Cache.h in Headers */, D9C6BE55D798E8A52E85D425CD9294FB /* CachedMeasurement.h in Headers */, 0E80F9F0507C7BEE0E643E3ACA26DF38 /* CalculateLayout.h in Headers */, 0E616E8FB2D3D470F8965D0D1A975DDC /* Comparison.h in Headers */, B6F880D22BC0E73B97487B747513ABEA /* Config.h in Headers */, EC9F0699E5A4CF55F21FAFE6057B6640 /* Dimension.h in Headers */, 16C786D254AC4BB415F78C7E14E32E91 /* Direction.h in Headers */, 0325D441EB7088C55285D0ED7E97A25F /* Display.h in Headers */, 8DD704A7DFB3E7DB7CA5CF748EC11878 /* Edge.h in Headers */, 6C014D417DB501CB7E7EC168EEAAD449 /* Errata.h in Headers */, A938E595D257EC2A792136FF03B1B030 /* event.h in Headers */, 4FE0D611C9C858B39AEEA98E2FEC1677 /* ExperimentalFeature.h in Headers */, 8D6641689CE7A4839A8B823EA727C1AA /* FlexDirection.h in Headers */, 8D6641689CE7A4839A8B823EA727C1AA /* FlexDirection.h in Headers */, 2A222BEC97B97591ACBD51C9F00E4921 /* FlexLine.h in Headers */, 251D3DAD4CE4ACA70D08EBB9CBF9BB39 /* FloatOptional.h in Headers */, A691FFBD5381A9F24D87CE66F8F5F81A /* Gutter.h in Headers */, 5338EF2CBC1AB903457F1E2A9430FEAA /* Justify.h in Headers */, 857BDC3DE3F7896BD773F402341D9C8B /* LayoutResults.h in Headers */, 40A9D1F054503F770F54FB569C86A77F /* Log.h in Headers */, C85DCBF8B4568557FFDC434149051C1D /* LogLevel.h in Headers */, 9E6C43BA1F53691CB152B48B736A70B2 /* MeasureMode.h in Headers */, 56FF2146A276A58EBC98A2C187E55DF6 /* Node.h in Headers */, C9218E0506DC81BD1B8759BFFC4C0D17 /* NodeType.h in Headers */, 0F16C97260095D02DE5415B6AC67D505 /* Overflow.h in Headers */, 10D706F48F81D0DA3FBD346730A27F9C /* PhysicalEdge.h in Headers */, D4A9A5DE800574D5EA3FBAF7A3FCE239 /* PixelGrid.h in Headers */, 15D2AA86AE351CD34C4884281F78EAC1 /* PositionType.h in Headers */, 3FE61AC2BB3C11616328F6F3C70CC9F7 /* SizingMode.h in Headers */, 63C8445391E600554A6C3520D8511A50 /* SmallValueBuffer.h in Headers */, 90C0ED4C25BBE5201770D4FF695A81A6 /* Style.h in Headers */, 1D8DF82EA7134E0A0C27D629500846B9 /* StyleLength.h in Headers */, C53735A70163AB0A8E31BD1F52A5225B /* StyleValueHandle.h in Headers */, 980093FFA08606F31FCD65609A47C09E /* StyleValuePool.h in Headers */, C82241B63061787791128A1EC9E9F5B7 /* TrailingPosition.h in Headers */, 12DFBB4643EF49D0656128B8F983CD6F /* Unit.h in Headers */, 261839D1DF68DC4E17AFD60D0E7BEE61 /* Wrap.h in Headers */, 34DAAFB7B06B65259B6FECDA06AA3387 /* YGConfig.h in Headers */, CEEF5F179C75EB5D8C84E49E94F90BBF /* YGEnums.h in Headers */, 3593206D0F19D00262870E27E9D13872 /* YGMacros.h in Headers */, C9778BE281C609F2FD4ED0209BB020AD /* YGNode.h in Headers */, 616FF362B4F982F5D81312544F221FA7 /* YGNodeLayout.h in Headers */, C08677D33FB9E6187D04980860872F5B /* YGNodeStyle.h in Headers */, 588CEDBD51EA57B98878F8E614A4E4C9 /* YGPixelGrid.h in Headers */, 2522833611E2F1484E7EDF975387F2B2 /* YGValue.h in Headers */, 247DEF303BC51C27870693F921CE4A24 /* Yoga.h in Headers */, B56044159ED68D13ED80B3251BF4C71D /* Yoga-umbrella.h in Headers */, 9129BAF1A295E5BA2BFA9D27E0DD8B30 /* YogaEnums.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; AE897E21E39386108563A4EB4E02B6D3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 8F8C308FB213101092DF89E03DF5D3F2 /* ObjCTimerRegistry.h in Headers */, 804AB8115EEB65519BFF4EC3478F17E3 /* RCTContextContainerHandling.h in Headers */, 4E26F7421AFC7CCBA8B969FA05F45C3F /* RCTHermesInstance.h in Headers */, 1F5DD61D863EF9D3FB7CF714C39251F7 /* RCTHost.h in Headers */, 027B3B0E43853967D8B623D4E5A9A287 /* RCTHost+Internal.h in Headers */, 14D3C20765AA5165E7881E50B9491268 /* RCTInstance.h in Headers */, 6DE90170CECE293E1A4F1224606A79BF /* RCTJSThreadManager.h in Headers */, 3903DC2E45FF49565FBA6612830040C9 /* RCTLegacyUIManagerConstantsProvider.h in Headers */, 1DF1BB081174334B20F0576E3917DDFD /* RCTPerformanceLoggerUtils.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; AFF97CE34F12C061B4326B69AF5F636D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 099A28E24D0D1D10AE86EA1B272EB1FF /* RCTImageManager.h in Headers */, 9597882525C617A0252792A1542DEB7E /* RCTImageManagerProtocol.h in Headers */, E9D7B312A5C84965CD84BD92FB62B13C /* RCTImagePrimitivesConversions.h in Headers */, AB5EF33E0FF9C59C98CC579067194B5F /* RCTSyncImageManager.h in Headers */, 75893F82D0DC6BC54B04FDA1C9DDBA40 /* React-ImageManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; B848B2694FF142FE99FE00869735ED10 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( E651055717D4190079F013D6D6062009 /* JSIExecutor.h in Headers */, 75EE1CD4734EEA84AB3CEBBFBA8B5141 /* JSINativeModules.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; BBFB6E9C09170030BCB76EF550C29B38 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 11116B560FB8DB7A5F736E5E8C11301B /* conversions.h in Headers */, 7A94A234E15864DA153E2486D544D8F9 /* ImageComponentDescriptor.h in Headers */, A64F035654CB2B7DCBC8F8724356C82E /* ImageEventEmitter.h in Headers */, C8036C771D671E36BEDD71CB224AE037 /* ImageProps.h in Headers */, 01FF22D8A0746B87FA43295D52EDFF01 /* ImageShadowNode.h in Headers */, F0EA77CE762E75EE68A7E59C4BC05275 /* ImageState.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; C20B0C535E0FD7D4FF32A7DA7B1CA845 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 409697D416E1EC0B0559AA517ECADA7E /* JsErrorHandler.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; C7F762FCDD3EC1F3B985B12D843C839D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 431B8E3910D7948C5ABD4D2EE021E854 /* args.h in Headers */, E6C45A4D06FD310A02A987816341A5F8 /* chrono.h in Headers */, 1E3B09D27ABE649167CCDD7BDED72012 /* color.h in Headers */, 8DBD42E153C1E210DD2D91CBE300795A /* compile.h in Headers */, BA4ECD7D27EEB764E12B599F80C19150 /* core.h in Headers */, 83A0F6143A5339BAEBBCA6EA7A4F5BAF /* format.h in Headers */, E01BFDB73F70CBCB2CFC52444346AF77 /* format-inl.h in Headers */, 2333ED79527F4E5206C50DCF55A95D34 /* os.h in Headers */, BDA63FE5A587CF5C5ED9DD8BCE0B4244 /* ostream.h in Headers */, 33B73F67E086D3670224498285D702A2 /* printf.h in Headers */, FD3EB3EB8AB44B1B40F04D32CCAD4388 /* ranges.h in Headers */, 0C5A0742C3AE61AB9C451CA241A06AA3 /* std.h in Headers */, CC0CADD2F0F0E0729FE5F9C9605CBCC1 /* xchar.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; C9783B15FC64642EE4CF745EC87A7654 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( DA7BD6553D0FB0F62E5C8DCFF0AACDE2 /* AccessibilityPrimitives.h in Headers */, AB68948AE78A34C68EFB0AB1BC2C387B /* AccessibilityProps.h in Headers */, 58150B290E77D2844EC1945D79898DBB /* accessibilityPropsConversions.h in Headers */, F2CF697CCA0405E54F78738FCE93A2F9 /* AsynchronousEventBeat.h in Headers */, D244559AE36BD566F5DFFDBAFCFFE2BF /* AttributedString.h in Headers */, D5CCF9F221CFF9B657B72954E2ECD096 /* AttributedStringBox.h in Headers */, 64FF46086B966FC625E4C4032EA159D8 /* BaseTextProps.h in Headers */, 11CDCB576F0B65DE17497B576F58EAE2 /* BaseTextShadowNode.h in Headers */, B6DD615DFD63F8AA04F5EA15845F24B5 /* BaseTouch.h in Headers */, 069EC9D1FB2F67664CF6B2CEC35D10FF /* BaseViewEventEmitter.h in Headers */, 4B22A24065B251775C2B4FF3C3B511CC /* BaseViewProps.h in Headers */, F4D5FD12FAB7BDC8710108C11EE0B292 /* BatchedEventQueue.h in Headers */, 88C7EA300B0E07376EA1EB2A781FE1C2 /* bindingUtils.h in Headers */, 6401C5A434CA5B6B493B00EA5DB65EE4 /* ComponentDescriptor.h in Headers */, 863865180BA34A40972C40C6A7C8E021 /* ComponentDescriptorFactory.h in Headers */, 40B51C9BE008F034A16C81420F0DA4A0 /* ComponentDescriptorProvider.h in Headers */, 60C96C95ADCBADD5869F99A9F1AF8374 /* ComponentDescriptorProviderRegistry.h in Headers */, 62F897E5BAC772F7CDDB7952F87C28F3 /* ComponentDescriptorRegistry.h in Headers */, 0797F9543456306CA94A496239F85C3E /* ComponentDescriptors.h in Headers */, 19B38D8BECB8D7FA1BC251ACA2144990 /* componentNameByReactViewName.h in Headers */, 22444A20481B3591CDC93BC0F4036A1D /* ConcreteComponentDescriptor.h in Headers */, A23B1493A362B7B10AC587B3F3D79B5F /* ConcreteShadowNode.h in Headers */, CDA9AA0D1528A162879E3E394100DE76 /* ConcreteState.h in Headers */, 83113F39C5BD9864CAF8F3E91D01BD34 /* ConcreteViewShadowNode.h in Headers */, B648D871BBC7EBA6B48D239A116FF6B6 /* conversions.h in Headers */, 5734D611E435214C1564D3BDCD7C5758 /* conversions.h in Headers */, BAE41AC37444F16DC1364FC327A7C38B /* conversions.h in Headers */, D298D5529CA5B29208077A481AE2BF38 /* conversions.h in Headers */, 3E66BF7B000ECEC9F677306A1EC11448 /* conversions.h in Headers */, BBF174BA4A0B11366F598742295D97FC /* conversions.h in Headers */, 8B8982906FFDDCD41E210EA5727548EF /* conversions.h in Headers */, ED9BAECED6D57D15B8680D8A9F1FC645 /* Differentiator.h in Headers */, 2383735C57B2D47D561308E59910C80E /* DynamicPropsUtilities.h in Headers */, 008E750C6767F6A81D7DF312DEEB5EA3 /* EventBeat.h in Headers */, AA6CA9CE331D388BD5FE8AA5DA240A90 /* EventDispatcher.h in Headers */, D8AAC2DE2E3EA0008B8B5555BF2E3524 /* EventEmitter.h in Headers */, E1AD7A00786590B1156FD21A44BB9D94 /* EventEmitters.h in Headers */, 3A38547BEC61A65216B7FC203DE719DC /* EventListener.h in Headers */, 2BEBCE047AD0091EBD66305D11F06EFA /* EventLogger.h in Headers */, F25917F0AB2EE892D61580D25F0F5090 /* EventPayload.h in Headers */, 3E5A9EC165D1D6979F3BD6F253B408B6 /* EventPayloadType.h in Headers */, 74C3F6DB467F1523FEA9543EA61B4B46 /* EventPipe.h in Headers */, 0BC972460491F39270DE005A9D40A372 /* EventPriority.h in Headers */, 1DB4BA71D203BAEC328D16B17FBD954D /* EventQueue.h in Headers */, 5D153DBD866010FF03F00D7EB90D9361 /* EventQueueProcessor.h in Headers */, 661031CD49CDEF2BCD5BE6EC9530D7C3 /* EventTarget.h in Headers */, 95218D9E435AD62306483383FCAD7BC6 /* graphicsConversions.h in Headers */, CF92DE7237153EF5E90B30A3682BF1C8 /* HostPlatformTouch.h in Headers */, 3FC9FEE72E60365C856B578EF2B5F616 /* HostPlatformViewEventEmitter.h in Headers */, 31B704DBFBD9861E5B16E4F568E5463C /* HostPlatformViewProps.h in Headers */, BE55E4FD3612515277281F56F4DCBBE3 /* HostPlatformViewTraitsInitializer.h in Headers */, 2A190325244F59D848E634FE42885204 /* ImageManager.h in Headers */, DE66748432F9109389013EC8F90A07FE /* ImageRequest.h in Headers */, 38B2E0C490CBF63CB0C7398BF2B7A9A6 /* ImageResponse.h in Headers */, 9435ABFC3D2347D3C2FA4178AD8363B1 /* ImageResponseObserver.h in Headers */, 51B6F7E94F3EE06D36CB1D658A88AC5C /* ImageResponseObserverCoordinator.h in Headers */, CF16D91D0F7C3653BAFCDC818A70F695 /* ImageTelemetry.h in Headers */, E62F21693DF34EBFBE00D49D4DF19B1C /* InputAccessoryComponentDescriptor.h in Headers */, 8A61C81F74DF0B4608AAD105548E9921 /* InputAccessoryShadowNode.h in Headers */, 39B02D53EEBFD6F7CEF41BBA45C497AA /* InputAccessoryState.h in Headers */, B329882D9D9CC156F9C8F664B466BA4A /* InspectorData.h in Headers */, F24F01675337F85C3D9AF5949695F0AC /* InstanceHandle.h in Headers */, CF5119F6D4E8A0C521F7D0158B43D1E1 /* LayoutableShadowNode.h in Headers */, 93728BE1C4A407884F562ADACEAC71F2 /* LayoutAnimationCallbackWrapper.h in Headers */, A04D9EB219FF8B977B41D229BE877CE8 /* LayoutAnimationDriver.h in Headers */, 51922B9088FE0CD8C342E96B18E38630 /* LayoutAnimationKeyFrameManager.h in Headers */, 2C7A4437740961E1B2EE201D045F8382 /* LayoutAnimationStatusDelegate.h in Headers */, 6CFD8AA29F2E9C848CA60CC969FCAB67 /* LayoutConstraints.h in Headers */, 40D2A11491175D755AC117B88BEA9CE2 /* LayoutContext.h in Headers */, CF64AFCC6883E96BF7808D1467D18514 /* LayoutMetrics.h in Headers */, 12B3909CB415E47E8826B5999B035007 /* LayoutPrimitives.h in Headers */, DFF18CB9F6E9C5DBC1794BC83CEE2B40 /* LeakChecker.h in Headers */, 81A2F9C881DD636F42CEC4CD4A9A60C1 /* LegacyViewManagerInteropComponentDescriptor.h in Headers */, CFCF9B04CFF0ED4C5A05E5BB8CB7949D /* LegacyViewManagerInteropShadowNode.h in Headers */, 8527C5EC667D2988E0FF5B260187ED15 /* LegacyViewManagerInteropState.h in Headers */, E8143FF13D3DFB1BFDFD7F666A80CBBB /* LegacyViewManagerInteropViewEventEmitter.h in Headers */, FEF9BDB3467FE72D2EE093812C803692 /* LegacyViewManagerInteropViewProps.h in Headers */, A77D12B428F49DBEC035E05EEAF4289C /* ModalHostViewComponentDescriptor.h in Headers */, A3CD7C4D744038936727F5BBE64375AC /* ModalHostViewShadowNode.h in Headers */, F5005D6D96BF20979717A1CF0017BC64 /* ModalHostViewState.h in Headers */, 7FC52BE19A4972D6E0EFE5E8C062E78D /* MountingCoordinator.h in Headers */, 526A2D421E98B760D469D7DFF25AC8E4 /* MountingOverrideDelegate.h in Headers */, FA7F0D692EE1B5D551494F3059D5F30E /* MountingTransaction.h in Headers */, BD99C2863EFA1867E4CC53CF50951B2F /* NativeComponentRegistryBinding.h in Headers */, 4D3C636E570049880C8AAC77CFDD2948 /* ParagraphAttributes.h in Headers */, 0E7C77866A73091BD1A36B2228ABD0FB /* ParagraphComponentDescriptor.h in Headers */, 4B5056B4B0F54339419F82CB235D9B50 /* ParagraphEventEmitter.h in Headers */, C7871DFEB70AFC8C34E686E281A6A237 /* ParagraphLayoutManager.h in Headers */, C11C62BF75D485758FE41A15F556D6A6 /* ParagraphProps.h in Headers */, 10CFBCB29BE411B25B987B73CFF4B18D /* ParagraphShadowNode.h in Headers */, 2C292D5C62AC937B09A50BC0EC271A81 /* ParagraphState.h in Headers */, 3FB693C6A8F96970DB7439677E46487F /* PointerEvent.h in Headers */, 611EACB7C5FFA63323E0F5D4D49E0106 /* PointerEventsProcessor.h in Headers */, 229229DAE6C3E28130FBD708A67CBC5F /* PointerHoverTracker.h in Headers */, C28EBE70902BCE47AB96EDB66AE8C397 /* primitives.h in Headers */, EC2759F6A364F02C68F0BD622AFA6DC5 /* primitives.h in Headers */, E2B0F3FEA364E0821B7A190C31E16462 /* primitives.h in Headers */, CDB8B07A16C926213D3894D3C27A65E4 /* primitives.h in Headers */, DC63013E20DCE2ADE76BE9407831C26C /* primitives.h in Headers */, 348A9EF3D088309F5869ABAC68FAF798 /* primitives.h in Headers */, 5B99C5727641114A90831747A6FEBD1F /* primitives.h in Headers */, 596F0520CF8E60E8AD98030F6E71F346 /* Props.h in Headers */, 970B747DD08085BB38AA2CBE4015C91B /* Props.h in Headers */, 1F2F410A3DBB6D4DDF4AB78B2D20E7E1 /* propsConversions.h in Headers */, 92048C77172BB4D1D55779CEE7BA8F5C /* propsConversions.h in Headers */, F2743CD8B2B3A444BB0D76A7C0FC860C /* propsConversions.h in Headers */, A5A30B2AF3B84C88541ABF6329E44CF7 /* PropsMacros.h in Headers */, 403D51CE5F2689BA36F4629C3C5059B1 /* PropsParserContext.h in Headers */, EA50617F174E74906FE903B0D0FA3DFD /* RawEvent.h in Headers */, BEB43DD0A82C63C5DA77BDEBF27EAB11 /* RawProps.h in Headers */, F2708B41187A44B25530C27BCB5DAE44 /* RawPropsKey.h in Headers */, 9A9022C47549BD26B9F45A7BFFB8A6BF /* RawPropsKeyMap.h in Headers */, 452DCBF029A6FB3A779606D57EFD699F /* RawPropsParser.h in Headers */, 1AF039E7B9A51980BFD84F7F156D0F30 /* RawPropsPrimitives.h in Headers */, AD579D452B17FA300A0513A780D080DC /* RawTextComponentDescriptor.h in Headers */, 98EA24E215B825D7E404CD8B1B3A6C3C /* RawTextProps.h in Headers */, 43DC243F1208440A4C70A92FAAFBAFB5 /* RawTextShadowNode.h in Headers */, 846A2D046969DDCC9B62226BB8E71C78 /* RawValue.h in Headers */, 3FD08618BB317EDD1F8E5F2C2CFB3AB4 /* RCTAttributedTextUtils.h in Headers */, 2C4DEC5C31C3B5E06A279A46A34A39F5 /* RCTComponentViewHelpers.h in Headers */, 132EA906D184846F30461FF9D8FFC75D /* RCTComponentViewHelpers.h in Headers */, 314196735F72AAC0DE94ED28828A924B /* RCTFontProperties.h in Headers */, 46FA87EE5D65CF288E704019C05581E6 /* RCTFontUtils.h in Headers */, E895EC817D4A74A7BB7F47CBAEEF4D70 /* RCTLegacyViewManagerInteropCoordinator.h in Headers */, B15D6D1F87DDE02BFCC6766FFCD7218F /* RCTTextLayoutManager.h in Headers */, 01E2ED6001D6C49CE159000B657445E8 /* RCTTextPrimitivesConversions.h in Headers */, 65F3033C93DD7B1EF83673E19BB9EBD8 /* React-Fabric-umbrella.h in Headers */, A5376CA99127C041CA004A648022C1C5 /* ReactEventPriority.h in Headers */, 2BC999AB42C3CA0A9E306051F16E41CD /* ReactPrimitives.h in Headers */, F4CA5518B31E3A44A9E41DC637347B7D /* RootComponentDescriptor.h in Headers */, 77812A80E72FC40B7CFA752C8D75D2CE /* RootProps.h in Headers */, EBFA2EC449CC7806AD2DFD54A9840763 /* RootShadowNode.h in Headers */, 22F46521658395591D46E6679AAA6E65 /* SafeAreaViewComponentDescriptor.h in Headers */, 43BBB6BB48AD003AAB4B6F1A58B97B52 /* SafeAreaViewShadowNode.h in Headers */, E19D4347CEDC9DE18C2B12A42F2ED1EA /* SafeAreaViewState.h in Headers */, E5073F2F6330149725DFF68FF2754A20 /* Scheduler.h in Headers */, 5589627C9AD1572C6B6C6F5993F440F3 /* SchedulerDelegate.h in Headers */, 342D7CD1B93BDB714F8E4B9DFF918CA2 /* SchedulerToolbox.h in Headers */, 5C8E17910713620E360E4C279B7CCE2F /* ScrollViewComponentDescriptor.h in Headers */, 9E62546DD0C89254100F01FB1C6313E9 /* ScrollViewEventEmitter.h in Headers */, 9AD21A8C1FB12C6F69D2E07588A0B966 /* ScrollViewProps.h in Headers */, 5192D6CBCA9DEBBB6D2D1CB8BB8042BC /* ScrollViewShadowNode.h in Headers */, 36B786CEB46A9C3E458EE781044361D2 /* ScrollViewState.h in Headers */, 8558A61F1FC9DCE311F651F6839AD63A /* Sealable.h in Headers */, 0AB017AA30AADCABC979757F7F94A860 /* ShadowNode.h in Headers */, 8D71047A3D5C9E1F408B1BD91EE59484 /* ShadowNodeFamily.h in Headers */, DEE25205878E37681E37F7C8F3B2929F /* ShadowNodeFragment.h in Headers */, 9D2D3C5051C69BC67410C4758F73B91B /* ShadowNodes.h in Headers */, 71CC2CB38EF9DAAD4F64835EB538E676 /* ShadowNodeTraits.h in Headers */, 5AEB23424B59FE64465815AA360C3FA7 /* ShadowTree.h in Headers */, 7477B4ABF6296B23A00F0D50C65B6E7A /* ShadowTreeDelegate.h in Headers */, 1CE20D629F4DE5EA945C098144CC56E5 /* ShadowTreeRegistry.h in Headers */, D2EED5D51C2C3C5AA6414C428BB9C234 /* ShadowTreeRevision.h in Headers */, 54DE8886E75B8747E97732B29877D05A /* ShadowView.h in Headers */, 1304FE75578CCF44D9049CCEFCDB04D9 /* ShadowViewMutation.h in Headers */, 9697A6B4D46C8A478177B8A7BBC5087A /* State.h in Headers */, CEBDF609628A96683A1298905EB10E39 /* StateData.h in Headers */, AEC4C05B01303751276918D1FA20961D /* StatePipe.h in Headers */, AF530C0F30401EA5E02563DB0FD3431B /* States.h in Headers */, 7A26687146CAE994D2AE94307FE436D7 /* StateUpdate.h in Headers */, C791DDB6F088C6A6850CA660286643E4 /* stubs.h in Headers */, D87EFE084AEE4FEB4474C02F2E3AC1DF /* StubView.h in Headers */, 6BF410C3D76E672A08E4EB084CFD21BB /* StubViewTree.h in Headers */, B9680AACE3CB0C78BD9987E51E119F54 /* SurfaceHandler.h in Headers */, 3773063F34B6E58F660EAC09788CCB4D /* SurfaceManager.h in Headers */, B3D5EF797853D7097172DEF9E94C0146 /* SurfaceRegistryBinding.h in Headers */, AD7A74E9D7AA2FEB89FCB880F9D08C56 /* SurfaceTelemetry.h in Headers */, 0A74076497F9A29CE8DDDD53D828748B /* SynchronousEventBeat.h in Headers */, B5F96EFACDBA7885CA0B125F4D0030E5 /* TelemetryController.h in Headers */, 838D25B894748FE27FAC7FE3F39AA0FF /* TextAttributes.h in Headers */, 31D8AC65D15BA8248DF32ACB02B0F785 /* TextComponentDescriptor.h in Headers */, FDA9294EC4CF28A1AE0E07DD15E8A938 /* TextInputComponentDescriptor.h in Headers */, F124B4C3977784DC8F6C302D4772EF51 /* TextInputEventEmitter.h in Headers */, FE80AB3F468FEBAF4F9FD0883C9C3FBA /* TextInputProps.h in Headers */, A45DC96FB186B370BEE808C18E1862F0 /* TextInputShadowNode.h in Headers */, 4BCCDB6CEDB655B51D4EAA168B46A458 /* TextInputState.h in Headers */, 09FF08768BDBFF4D478026381BB522BB /* TextLayoutContext.h in Headers */, BB894D03D378CDA7DED9870ADC869E5F /* TextLayoutManager.h in Headers */, 775374264170BAD2F2656335D8A3DED8 /* TextMeasureCache.h in Headers */, F0ADB8F0BFF669D9F7C16579DA584E6E /* TextProps.h in Headers */, 1C2B9AB0D768A8AAE37CD8D81A4577FE /* TextShadowNode.h in Headers */, 0D43A9F582531A23BE6A6D1DC895F52E /* Touch.h in Headers */, 82D8D0292794FEB4B58E14E709CB8E78 /* TouchEvent.h in Headers */, 0366A2F9BCF416C8C084A6CFE4257720 /* TouchEventEmitter.h in Headers */, 83029D9A22030F3A36506286BC43B43C /* TransactionTelemetry.h in Headers */, FA3876E333033226CDF04768A947C7EC /* UIManager.h in Headers */, DD10FCD5C9B98144C6806F70FC9B7C6A /* UIManagerAnimationDelegate.h in Headers */, F6510C9AC9E136A7463F72A71254AD5E /* UIManagerBinding.h in Headers */, 268887F37656A49D32EE08CF5590DACC /* UIManagerCommitHook.h in Headers */, B5B21BBAC4214172C7C33720A5960FCC /* UIManagerDelegate.h in Headers */, 3BA84270769E9763D410373AA68B4DEE /* UIManagerMountHook.h in Headers */, 4C441C36AC4132DB0BA4367F9AAF3781 /* UnbatchedEventQueue.h in Headers */, 841FF36838662B6C2789AEED5D6016C8 /* UnimplementedViewComponentDescriptor.h in Headers */, 2967A53F795C03EF89E6805B44D8D826 /* UnimplementedViewProps.h in Headers */, CB3C2589382123E2648E2EE15DCD7717 /* UnimplementedViewShadowNode.h in Headers */, 7B23CFE3C52926A8B340594C18E30C48 /* UnstableLegacyViewManagerAutomaticComponentDescriptor.h in Headers */, FBDD186A5D7B5E12FB15B56B23F595A5 /* UnstableLegacyViewManagerAutomaticShadowNode.h in Headers */, AB95787F449828E3C56FC5A5B502F056 /* UnstableLegacyViewManagerInteropComponentDescriptor.h in Headers */, FB26DBB9C1BDDF94A43349306AFBFEC5 /* utils.h in Headers */, 1EDC798E6DFC0A6D410C23283F368BB2 /* ValueFactory.h in Headers */, A9DBFF6662EFD601FDEC3789C5796033 /* ValueFactoryEventPayload.h in Headers */, 8D3CBE78A64B90795160670F9FABFF09 /* ViewComponentDescriptor.h in Headers */, 29B62250F780EFA539F4D51E6F2C95F7 /* ViewEventEmitter.h in Headers */, 5873B575B8FE7E9DE3AE028E0C2665E2 /* ViewProps.h in Headers */, D2AA4B00D9EB36E405C793FA585D476A /* ViewPropsInterpolation.h in Headers */, 2F4A50C76937BDC8C6EF040478E22619 /* ViewShadowNode.h in Headers */, B244559D2113F144FDF39CD9D1E1A47C /* WeakFamilyRegistry.h in Headers */, DB1C77BB649348CF505F9311A4D9BB98 /* YogaLayoutableShadowNode.h in Headers */, 5C24DA799B8DE8BE45C1EB910F6465A1 /* YogaStylableProps.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; D288DB9B0456E0CC4075C19E15EC2EF3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 42AA225751C052683DFAFDE8325C2990 /* glog-umbrella.h in Headers */, 7E683945AA4DE479DE6E7C64E77B9192 /* log_severity.h in Headers */, D08C6F38B916C0B5EC43E9CFA026685D /* logging.h in Headers */, 2CB63483AD5282D53115DA088A6D936A /* raw_logging.h in Headers */, A29A68DEAEAEA7CE6917E095DC77395F /* stl_logging.h in Headers */, 2C9BA5A633348EFCD5CA2A7608673BFC /* vlog_is_on.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; D91A4D4A9E4103F160841820694DECF2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( B9E1C9D4A16FFAF1560A278D0104CB8B /* HermesInstance.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; D9850AC624D95996A3B3A552E9F54AD7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( CEA8A8F5218290D21CA3D0F9FBE73D05 /* ContextContainer.h in Headers */, B511DC7B0492C9D9D0A58F080612F4D7 /* CoreFeatures.h in Headers */, 7C2C313941BEC63BAA8CC3668B949411 /* FloatComparison.h in Headers */, 61A92A507431FC4F546B5C86D863FA73 /* fnv1a.h in Headers */, 4D40B9DC8342119ECA0695AE455E248A /* hash_combine.h in Headers */, 7B6DA18AF21228DB00C403D3863B7BA1 /* jsi.h in Headers */, 3CEB56248F6859AC3BDED52E5ABB81FD /* ManagedObjectWrapper.h in Headers */, B7A0E11FB2F78019300E8AA5E82299B3 /* PackTraits.h in Headers */, DC28F68C0796FB7F8337CAFA89BA23CF /* React-utils-umbrella.h in Headers */, 296D94DA561C3E641394E251DB57CE49 /* RunLoopObserver.h in Headers */, 3E5BDBC0CC3A15341956E99C1006F430 /* SharedFunction.h in Headers */, 1615048D674C53EC2FE5B6B09AB39742 /* SimpleThreadSafeCache.h in Headers */, 8CB5FB6855789B1CF6C224E66DBC0DD1 /* Telemetry.h in Headers */, EF4DDB2FEB551BD01E6F56CEB268451E /* to_underlying.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; D9FABD97FD6F9E8ED9E7567704D37BBA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 725E303EAE71CABAF946B1516618C4C2 /* MapBuffer.h in Headers */, 5B1BDBB882CBF302AE93AF1F4B4A5449 /* MapBufferBuilder.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; DAE502B98C15919EDA8AE839E45EF463 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3E19A59E0EC2217267D80A46845BD6AE /* RCTConvertHelpers.h in Headers */, 103B71140476A7F2EF9149C840F969BC /* RCTTypedModuleConstants.h in Headers */, 5BF35C7D201412137E9D7BB5C052F714 /* RCTTypeSafety-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; DC06E85B125BB6F20AEA30AA6C6A8494 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 45DD2B4B19A1543D0AA2E492728F9112 /* Database.h in Headers */, 4CAE60F3D1B8ADE26E3B2CA80D13BEE6 /* DatabasePlatform.h in Headers */, 6DA8C2B7DF486142D81AE0FA210DB2DA /* FMDatabase.h in Headers */, BB9B6DC3BA3E623DC5E09A9D554CA3D6 /* FMDatabaseAdditions.h in Headers */, F9A183D9BEA7E6725F4DD901F0583A00 /* FMDatabasePool.h in Headers */, 8778EC34B4FB5DDD57124C18CC26AEEC /* FMDatabaseQueue.h in Headers */, 5C8C3D423B3C1790471F00F9BBC248DF /* FMDB.h in Headers */, D7A16B0C6D721716F7C5A70A6433C529 /* FMResultSet.h in Headers */, 71EFB67CDD3BFD1B8FD94E74C72C2164 /* JSIHelpers.h in Headers */, 8D3920B60E2117BEE3BD89D4270299B3 /* JSIInstaller.h in Headers */, 0D0305563835BA45E3AB92FDC061900A /* Sqlite.h in Headers */, 9B87B7263006E8E400822B725E60FFBE /* WatermelonDB.h in Headers */, A64FF4152676B429D3E3359E14BFD5B2 /* WMDatabase.h in Headers */, CCA37D065218C0C45FDDF8CC70E835B7 /* WMDatabaseBridge.h in Headers */, 0364A19CF9719BA18B744C8BFBF53540 /* WMDatabaseDriver.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; E8457FFFBEC926DA7BE46B2892CB0FDB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3A10A4EAE244B467148FBBF299D6E668 /* flags.h in Headers */, 9376001A5415EA17C8FE5D79C03B3E05 /* React-debug-umbrella.h in Headers */, 9517335C8F1CE70427B5E0AF6F87FD29 /* react_native_assert.h in Headers */, 83CAAC66FC6430951815CBCA69937212 /* react_native_expect.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F2D8DBE624B824B97685554501230222 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 2923AE58E9BBFBF24388EB12E31A6DB3 /* NSRunLoop+SRWebSocket.h in Headers */, 4995E35BC80E4A934B323776BFE95BF3 /* NSRunLoop+SRWebSocketPrivate.h in Headers */, 5BCC3880E6ECD139C026CD443E4DF521 /* NSURLRequest+SRWebSocket.h in Headers */, 9DEB120143CCAE9182A2D84A8E9E6FBC /* NSURLRequest+SRWebSocketPrivate.h in Headers */, 32122892A762CA325502454526E788E3 /* SocketRocket.h in Headers */, AD7532D08452F1A565E555D61945FB51 /* SRConstants.h in Headers */, C9F6E53C80C424F26ABFB545F428ADC8 /* SRDelegateController.h in Headers */, 74FD09866C2EEDF289F2151656259CD2 /* SRError.h in Headers */, FE3962EC610FE961F8B6C1D916E9C04A /* SRHash.h in Headers */, CDE3F42EA3A73ED13A9096434E7A1599 /* SRHTTPConnectMessage.h in Headers */, 49409B9EED2B261372CC7135F2429D67 /* SRIOConsumer.h in Headers */, 12059A7AC3C0621F11193E23732E1819 /* SRIOConsumerPool.h in Headers */, 2001CC4F61119A2ACAC4E1B9519A91F5 /* SRLog.h in Headers */, 550C21D890D7BCD2AF68A2CAF0E32F9D /* SRMutex.h in Headers */, 1478022575B1D58411C818595E989892 /* SRPinningSecurityPolicy.h in Headers */, 9F3A392095C5D5039ACB1A0B07BF9CA6 /* SRProxyConnect.h in Headers */, 88882DE62CCC5DDB83D711846353FA43 /* SRRandom.h in Headers */, 57D605E0D28B9702F02AA9E07913BC5B /* SRRunLoopThread.h in Headers */, F25611B54DD87B0B21C8E273CC2BDA9A /* SRSecurityPolicy.h in Headers */, 6D7AA2A2008AA3CFD3185810516DD2AD /* SRSIMDHelpers.h in Headers */, 103C9C846673585F643489F5844C7873 /* SRURLUtilities.h in Headers */, 2613399F7C428BA43CA183A859DA8F36 /* SRWebSocket.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F624199FC463FBC3A10911920126B6BB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 3CB47200EDBCEECB186D83CC145EEDED /* PlatformRunLoopObserver.h in Headers */, F901B09A64206BD8481364EF79C7D52B /* RCTAccessibilityElement.h in Headers */, 8A819DCA8AD6D57C2222DBE0B7FE7190 /* RCTActivityIndicatorViewComponentView.h in Headers */, 898869098F6FB696AA71D98E461232CA /* RCTComponentViewClassDescriptor.h in Headers */, 0E9F6325DB8475265B002F1E7FD69D5B /* RCTComponentViewDescriptor.h in Headers */, C016F3769390ED58641BA2886319108C /* RCTComponentViewFactory.h in Headers */, AE0DB91FEF11CE1FD97DE6B1A300E697 /* RCTComponentViewProtocol.h in Headers */, 89CCC3121E6749EC7C4D707AD992C550 /* RCTComponentViewRegistry.h in Headers */, 8B9FA606ADA138041A461B1A45CC47BC /* RCTConversions.h in Headers */, DB330BA756D9108372BB5C51B9BA73D7 /* RCTCustomPullToRefreshViewProtocol.h in Headers */, 9AE0B339D38F4BDCFD54AF8B4B74B9AD /* RCTDebuggingOverlayComponentView.h in Headers */, C77CB2DD8FD053075C9A2178F2617423 /* RCTEnhancedScrollView.h in Headers */, DDED52C98E3DB3DE7B916FFA6E38389E /* RCTFabricComponentsPlugins.h in Headers */, F0D13FA0AEDD0027AD18A56E95626A3A /* RCTFabricModalHostViewController.h in Headers */, 56724EB37D2444DF72CF868DD13477FA /* RCTFabricSurface.h in Headers */, B792854DB1139F6C4839DDC23FFE87CD /* RCTGenericDelegateSplitter.h in Headers */, 8C6CD8EF00A7B2AA432B528185A21005 /* RCTIdentifierPool.h in Headers */, EE442608008693F4732B90E3E929F104 /* RCTImageComponentView.h in Headers */, 37F4DCC3A8CA1D1A4D418657FF19733F /* RCTImageResponseDelegate.h in Headers */, 75853200EC17CEE70359BDA55A296152 /* RCTImageResponseObserverProxy.h in Headers */, 2B053AF14B09FFD6105A38AD87C405FD /* RCTInputAccessoryComponentView.h in Headers */, B1FB31DE01AF8497EA404D2EA2B380EB /* RCTInputAccessoryContentView.h in Headers */, 81313E2CDDE7FC92041DDF94657C35BE /* RCTLegacyViewManagerInteropComponentView.h in Headers */, 4AF659E6D81AA3230AF3CC577A664469 /* RCTLegacyViewManagerInteropCoordinatorAdapter.h in Headers */, BC6A9D036DE803C84DFC46F74C1B54DC /* RCTLocalizationProvider.h in Headers */, 951D58A9E7D698B929AF899C28E57034 /* RCTModalHostViewComponentView.h in Headers */, 86AE12D8AB4DFCEF8C5413A542FA699F /* RCTMountingManager.h in Headers */, 8D2E0D17D455244D4DADB8163EE9C146 /* RCTMountingManagerDelegate.h in Headers */, 9D2C4B6C64188ADED9A1A5F54328072A /* RCTMountingTransactionObserverCoordinator.h in Headers */, EABC36AD3C5E7A062DD1E648173390BD /* RCTMountingTransactionObserving.h in Headers */, 9E5B5F823216896E6318DB55C9616AC9 /* RCTParagraphComponentAccessibilityProvider.h in Headers */, 66F138CEF6DE7733C00C0EDAF107F4E3 /* RCTParagraphComponentView.h in Headers */, E5E55BF988954948EFE319F6580A5DD2 /* RCTPrimitives.h in Headers */, BECF0A8247DDD53567BC16E3F7F7FBA5 /* RCTPullToRefreshViewComponentView.h in Headers */, AF63E872921CA837B9532CC5211FD6BC /* RCTReactTaggedView.h in Headers */, 25D9A0F89FE35DB331D48EAEC035EC4D /* RCTRootComponentView.h in Headers */, 6B9B49A3703636ADC90A520068F48C55 /* RCTSafeAreaViewComponentView.h in Headers */, 5424ED4EE723B69262C7BA8F229423CC /* RCTScheduler.h in Headers */, EB3E3453EFB9D515C27B942DBC8CA533 /* RCTScrollViewComponentView.h in Headers */, 9A4EE65B2E9B67E48FEA687692C36F66 /* RCTSurfacePointerHandler.h in Headers */, 67D6B0FEE7276ADF5A34F358361A06C3 /* RCTSurfacePresenter.h in Headers */, 6D9019B41C60A4DACDF6D306788014AB /* RCTSurfacePresenterBridgeAdapter.h in Headers */, 6D868A2B81C43D395DCDC4C4B6FC60F6 /* RCTSurfaceRegistry.h in Headers */, 3D9A59728E70022027792DBB95213CE3 /* RCTSurfaceTouchHandler.h in Headers */, 94CD80C023E882B4DA9D02927CDA9327 /* RCTSwitchComponentView.h in Headers */, 2A43229C2CBF5932A43C13CAE64EB114 /* RCTTextInputComponentView.h in Headers */, B10E4CBE3CC25EEDBB00CDBDA2464C7D /* RCTTextInputNativeCommands.h in Headers */, F2B68B0957E8649F575BCACD150607B8 /* RCTTextInputUtils.h in Headers */, F1F4420804BCE4EC9ECF3A3B61CB6FB4 /* RCTThirdPartyFabricComponentsProvider.h in Headers */, 725DE6774E7CF785ADEBA7816ED0930A /* RCTTouchableComponentViewProtocol.h in Headers */, 6354C2A56E1FE6BB514E79F6E1B34BF0 /* RCTUnimplementedNativeComponentView.h in Headers */, 757CFD9FBF0BB53294AB26076C6C3405 /* RCTUnimplementedViewComponentView.h in Headers */, 4655F7C1059E59B736603130DB2FA22A /* RCTViewComponentView.h in Headers */, BE32F467ADEA0C6CC8C6AB51E53C8360 /* React-RCTFabric-umbrella.h in Headers */, A9E1748FA1E9E944CF1BCE7376E7B033 /* UIView+ComponentViewProtocol.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F837FE48D95BC32E08823880617709FA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( BF95BCE7DEEBE179C23F8F6D13EB1A5C /* react_native_log.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 02B79DFED924FA19CA90EC69614733E1 /* fmt */ = { isa = PBXNativeTarget; buildConfigurationList = 8155B5CA84599E484C0CD5B5A50F38AA /* Build configuration list for PBXNativeTarget "fmt" */; buildPhases = ( C7F762FCDD3EC1F3B985B12D843C839D /* Headers */, 1668C4E93B3B7D623F5F0B12FFC8EDF1 /* Sources */, B0F3C1490E731E02547F366CAC459882 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = fmt; productName = fmt; productReference = F4BDA69E3BCB0166D49FB679ABADCA00 /* fmt */; productType = "com.apple.product-type.library.static"; }; 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */ = { isa = PBXNativeTarget; buildConfigurationList = 5BBEBFE986F7B4F914468460EB8F1959 /* Build configuration list for PBXNativeTarget "React-logger" */; buildPhases = ( F837FE48D95BC32E08823880617709FA /* Headers */, 6821FD5A12B69581B081B1EB963284D6 /* Sources */, 6B85A179CAD33992F413D8BD3E7F2D36 /* Frameworks */, ); buildRules = ( ); dependencies = ( BCC574E946A3A8BCCE454E8E24779B25 /* PBXTargetDependency */, ); name = "React-logger"; productName = "React-logger"; productReference = A5B49761F8D1EB12585DD45CAA2E489F /* React-logger */; productType = "com.apple.product-type.library.static"; }; 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */ = { isa = PBXNativeTarget; buildConfigurationList = B1B375EB7281E82379407E0756F4CA72 /* Build configuration list for PBXNativeTarget "React-Mapbuffer" */; buildPhases = ( D9FABD97FD6F9E8ED9E7567704D37BBA /* Headers */, BC9D5D34749A7A7BA7B3E8BAA001423B /* Sources */, CA724DED2831B905A1998F902665A550 /* Frameworks */, ); buildRules = ( ); dependencies = ( 3D131EABE7877449C034C8F7D0F2D6EB /* PBXTargetDependency */, 22518BD6B6A2937961E29F0F995F94E4 /* PBXTargetDependency */, ); name = "React-Mapbuffer"; productName = "React-Mapbuffer"; productReference = C941106D9D54AE237C5110F5638389AC /* React-Mapbuffer */; productType = "com.apple.product-type.library.static"; }; 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */ = { isa = PBXNativeTarget; buildConfigurationList = B0BA1E3B69666258803F3BA8BC7753D5 /* Build configuration list for PBXNativeTarget "React-debug" */; buildPhases = ( E8457FFFBEC926DA7BE46B2892CB0FDB /* Headers */, C1CCF5380F13156FD54A244ED552853A /* Sources */, BD2E44394098D59D4216910EB6123099 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "React-debug"; productName = "React-debug"; productReference = 6ED2C07E6AE77BBD9A6856E523EF6A06 /* React-debug */; productType = "com.apple.product-type.library.static"; }; 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */ = { isa = PBXNativeTarget; buildConfigurationList = 0F57A9E1BCAF11956772C8D87FE73D2D /* Build configuration list for PBXNativeTarget "React-RuntimeHermes" */; buildPhases = ( D91A4D4A9E4103F160841820694DECF2 /* Headers */, D4CC0275F39BE4206E4ACF900B008845 /* Sources */, C4687459249DD90C9583CD8F4F17FD73 /* Frameworks */, ); buildRules = ( ); dependencies = ( 5F7DDEC9656978E6328E567B901397AC /* PBXTargetDependency */, 9D8860389569C0B4CF9D53F307783D25 /* PBXTargetDependency */, A3A103DDF211E33A422885D060EF6862 /* PBXTargetDependency */, 0B8F0AF300F008781318143A4023937B /* PBXTargetDependency */, C8AE99661D1A65D85D469BADA683E979 /* PBXTargetDependency */, 6172D3DC6321CA3620D197A12D6E59C8 /* PBXTargetDependency */, 3354A28B35EC1069BD30EB745FBB5320 /* PBXTargetDependency */, DFAE25DECCD0A8C005755C2E97CB95EF /* PBXTargetDependency */, 652E79909AAB41E62A57EBC80CBF427C /* PBXTargetDependency */, 32367C20F30921438885115E85DFA696 /* PBXTargetDependency */, ); name = "React-RuntimeHermes"; productName = "React-RuntimeHermes"; productReference = 4F3E9C98444FA55E416B857143C48013 /* React-RuntimeHermes */; productType = "com.apple.product-type.library.static"; }; 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */ = { isa = PBXNativeTarget; buildConfigurationList = D7B61D8E284A82A5FFDD5722F2E8CB19 /* Build configuration list for PBXNativeTarget "SocketRocket" */; buildPhases = ( F2D8DBE624B824B97685554501230222 /* Headers */, ECB360B46269645988A5FEF752B07CE1 /* Sources */, 555A04A540081AC49C8E6E99B4A994A8 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SocketRocket; productName = SocketRocket; productReference = 85A01882ED06DFEA2E0CE78BCDB204A7 /* SocketRocket */; productType = "com.apple.product-type.library.static"; }; 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */ = { isa = PBXNativeTarget; buildConfigurationList = B1628683B730946B45D719929318C407 /* Build configuration list for PBXNativeTarget "React-hermes" */; buildPhases = ( 480E3EC17192D033B3243595772EED8D /* Headers */, 1B85B6C778B063059A7996C2729D726F /* Sources */, 1E96689E45440CA500F1377CF69C3FBD /* Frameworks */, ); buildRules = ( ); dependencies = ( 8348CE40A97A1B487D1B2FE4C6A432CB /* PBXTargetDependency */, E55D350A9268572D7FC8C05E97502888 /* PBXTargetDependency */, F34157E1DF7D5E455A66302A9C9AD088 /* PBXTargetDependency */, EF845B0031E0D8C62943D74C2C5B1956 /* PBXTargetDependency */, 4F38BF96117F66D66D12A5026165B46F /* PBXTargetDependency */, 160B671DE8C758C317C529472EAE84AC /* PBXTargetDependency */, D24CEC53FD6AF9954BB5EC0ABFD10825 /* PBXTargetDependency */, DEA448341ABAAE0D25466C34F1F235A4 /* PBXTargetDependency */, B866B352B4413F93E9054502E08ED0E0 /* PBXTargetDependency */, 54F3A8EBD288322A88F66576AB7B01AC /* PBXTargetDependency */, 1D4397136D2ACA4FB733CA69E77D4E29 /* PBXTargetDependency */, ); name = "React-hermes"; productName = "React-hermes"; productReference = DAD8B71DF2DFCF15AAF98C06D37D5703 /* React-hermes */; productType = "com.apple.product-type.library.static"; }; 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */ = { isa = PBXNativeTarget; buildConfigurationList = 6707DE3D6F26E17231DE98DB9A3E3AB3 /* Build configuration list for PBXNativeTarget "React-jserrorhandler" */; buildPhases = ( C20B0C535E0FD7D4FF32A7DA7B1CA845 /* Headers */, 75A362DACB9AD78859822092A79651B7 /* Sources */, 35249E191E5E9A9BCF3C012B7231E4E5 /* Frameworks */, ); buildRules = ( ); dependencies = ( D6F113C392C802440FC28E2899F6D75C /* PBXTargetDependency */, 488998D26401741FC05F84B117E5020A /* PBXTargetDependency */, 77AC1CFEEEAAD46FEE7BEA988A588B67 /* PBXTargetDependency */, BCF4A5F46D114B97594F5A602DC84C06 /* PBXTargetDependency */, ); name = "React-jserrorhandler"; productName = "React-jserrorhandler"; productReference = C02EAF482D8B4DE45E3A58A25AE1FA91 /* React-jserrorhandler */; productType = "com.apple.product-type.library.static"; }; 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */ = { isa = PBXNativeTarget; buildConfigurationList = F2768486D471591D3A8A58B2E7F81CD4 /* Build configuration list for PBXNativeTarget "React-featureflags" */; buildPhases = ( 4CE40E530312BF393D28CBE0E51411F9 /* Headers */, D9A2B97E596F0A5364FC6BDF8ACC69ED /* Sources */, 4E6BB43FE92C85896EF4652D5008EE41 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "React-featureflags"; productName = "React-featureflags"; productReference = 971F6C319DDD4BD078954A5EF77B5BA7 /* React-featureflags */; productType = "com.apple.product-type.library.static"; }; 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */ = { isa = PBXNativeTarget; buildConfigurationList = 7CDBC45D37D1B150104FBBEAFF6D7DFA /* Build configuration list for PBXNativeTarget "DoubleConversion" */; buildPhases = ( 43CB88E0FAB282141C8E630E7B32B9BB /* Headers */, E808ECED1A5E1EE47280499780E79451 /* Sources */, 5D70EF7822C104273D2101F12A77DA2E /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = DoubleConversion; productName = DoubleConversion; productReference = 6FFB7B2992BB53405E6B771A5BA1E97D /* DoubleConversion */; productType = "com.apple.product-type.library.static"; }; 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */ = { isa = PBXNativeTarget; buildConfigurationList = BC2E6F2E3470A4F5826B9F71F74F6A1E /* Build configuration list for PBXNativeTarget "Yoga" */; buildPhases = ( A93B38F3B38D3C58EF7B4AB482E7F0E0 /* Headers */, C36899A216C6A2B189B53F2609162A18 /* Sources */, C045B01A5A6B7CCA78D61826BA82820C /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Yoga; productName = Yoga; productReference = 65D0A19C165FA1126B1360680FE6DB12 /* Yoga */; productType = "com.apple.product-type.library.static"; }; 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */ = { isa = PBXNativeTarget; buildConfigurationList = 7AB9946DDD1C3D6A76F4EC20B825E6B1 /* Build configuration list for PBXNativeTarget "React-utils" */; buildPhases = ( D9850AC624D95996A3B3A552E9F54AD7 /* Headers */, 798DF908E612E5F8F05490A8ADB42D63 /* Sources */, F6D7800EEE85719978FE04577571C010 /* Frameworks */, ); buildRules = ( ); dependencies = ( BC3FB7331CDD43D5175E4D47ACA6FE66 /* PBXTargetDependency */, 1D22B6A7210D95C77692184F9DD4DA5F /* PBXTargetDependency */, 984847B7473A8412AEFAF77B4664F75D /* PBXTargetDependency */, 2B046BA53642654BB49AB5D1268435C0 /* PBXTargetDependency */, 9563F68F9BD1749F7443FD66E9590B85 /* PBXTargetDependency */, ); name = "React-utils"; productName = "React-utils"; productReference = B7610E9FDE749C16C0B1CDAAF3B2DDC2 /* React-utils */; productType = "com.apple.product-type.library.static"; }; 45B79B0C60C74716DCD2AD7BE782A719 /* simdjson */ = { isa = PBXNativeTarget; buildConfigurationList = C0CFAFD893AA5A3CF3EF3D5182D8DFCA /* Build configuration list for PBXNativeTarget "simdjson" */; buildPhases = ( 3C7BE99ED45BF15CCA844CFAE09EF656 /* Headers */, 1DF1B328A32BB8F8D107024AD45C182B /* Sources */, 303A5D98CB7E8BAC37153C94A9723DB8 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = simdjson; productName = simdjson; productReference = EB2EBC367DAD012021CB28C5D9106469 /* simdjson */; productType = "com.apple.product-type.library.static"; }; 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */ = { isa = PBXNativeTarget; buildConfigurationList = 3CDF0161DB20A500B3F98141C7B4D171 /* Build configuration list for PBXNativeTarget "React-cxxreact" */; buildPhases = ( 5C14370402AA4BB4AD7B1F6D8652BE55 /* Headers */, 0FDD676C9CF447C0E5C23ADF6F292A6E /* Sources */, 3E93992A6915E912ABBC7FD7BB09ACF2 /* Frameworks */, ); buildRules = ( ); dependencies = ( C63AA7D158F689A3665F23350A713960 /* PBXTargetDependency */, 0F774A9A211B184E15151EBE1F7117FE /* PBXTargetDependency */, 67567B461F3E40467B26D7974B4C1D44 /* PBXTargetDependency */, 05373A03C28AF0BD3A139E9C7F172F96 /* PBXTargetDependency */, 1160DC25251A334CDE35D5BE053E7EDF /* PBXTargetDependency */, 50997191BF777B9C48032E92FE8934A8 /* PBXTargetDependency */, 5D8A34693C0672D2B6D6FA272CD55EF9 /* PBXTargetDependency */, 7C2893CAEC14643F651E1C7019EB7EC4 /* PBXTargetDependency */, B24640D5A8CF4509EC3101762B86BCAE /* PBXTargetDependency */, 7F374E36B80AE76293129D41A96FF3DC /* PBXTargetDependency */, C369B22F0FAE377E5576A8BFE839BAFA /* PBXTargetDependency */, CF9FB788BE979D8114BF13DAF8BDE56D /* PBXTargetDependency */, 9A7B30DF2DCFFDB397FF212296E4935B /* PBXTargetDependency */, ); name = "React-cxxreact"; productName = "React-cxxreact"; productReference = 37592FDAD45752511010F4B06AC57355 /* React-cxxreact */; productType = "com.apple.product-type.library.static"; }; 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */ = { isa = PBXNativeTarget; buildConfigurationList = 0C275FBF85ADB0F9F7275AA03EEFF4D8 /* Build configuration list for PBXNativeTarget "React-graphics" */; buildPhases = ( 5C4140C66CDBC309D6DCFA1BCE146F4A /* Headers */, FBEB4901EDEA337A12D49832C0F1509A /* Sources */, 89ED61ED54C1E87A03D923846D1CCD5D /* Frameworks */, ); buildRules = ( ); dependencies = ( 2D8F535A379CBF645319C5E8F95903DC /* PBXTargetDependency */, 907F691A1D77DB86BE3D65612BA344AC /* PBXTargetDependency */, 57F48BAADB5805B0D266BDFC2A1C3EC9 /* PBXTargetDependency */, 6FDBD4C9938B03D8150BED0135AFF2D4 /* PBXTargetDependency */, 8296923833DED2E03B8C666BE6DE6690 /* PBXTargetDependency */, EF5884976FE3748E18B03AC28DED4AAC /* PBXTargetDependency */, ); name = "React-graphics"; productName = "React-graphics"; productReference = 5AA54A19E2135E09B9C8C0767385FD3A /* React-graphics */; productType = "com.apple.product-type.library.static"; }; 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */ = { isa = PBXNativeTarget; buildConfigurationList = 2007902842A2D91320A831EDA401D9D3 /* Build configuration list for PBXNativeTarget "React-RCTImage" */; buildPhases = ( 7556844A2603E807BA60BBFA9278F78D /* Headers */, 7EBAFB8D3A23BDFF1BDD2DFFB0078930 /* Sources */, 0139C1ECDC2157867F618C9EA3EB1FFF /* Frameworks */, ); buildRules = ( ); dependencies = ( C4841FEDE8D48DC4604247F57A37823A /* PBXTargetDependency */, C9D96005FA6A6CFC6678D7B193F636E2 /* PBXTargetDependency */, 2D59FE22D01EA3E540A40567B70E611A /* PBXTargetDependency */, C094AAB7D234AC0D42232B6DD5D13EDC /* PBXTargetDependency */, E87D08CAA09D3388E7127BB834C4D010 /* PBXTargetDependency */, 3C6C78859E469F36181BEA310DB11287 /* PBXTargetDependency */, 51B1B37A4D04FC366AF9E06183F60026 /* PBXTargetDependency */, 4BE784B32D7FE7E66C0BCBC48A555002 /* PBXTargetDependency */, ); name = "React-RCTImage"; productName = "React-RCTImage"; productReference = EEDBF403E8E0B3885E65C2741B536BC5 /* React-RCTImage */; productType = "com.apple.product-type.library.static"; }; 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */ = { isa = PBXNativeTarget; buildConfigurationList = 8B2FBF8FCEC45B37713547AEBD5D99B6 /* Build configuration list for PBXNativeTarget "React-Fabric" */; buildPhases = ( C9783B15FC64642EE4CF745EC87A7654 /* Headers */, EA5775F352F02CC6B079C87333EA9092 /* [CP-User] [RN]Check rncore */, C28D2750CFD2016BEE211A824D3BDCE3 /* Sources */, 6F4E2E05C47567492210B48CF3716282 /* Frameworks */, ); buildRules = ( ); dependencies = ( D1D39D73E05A402E21CB473870E4A4BA /* PBXTargetDependency */, B0F8796B619A0B7C593B255CE5B08E22 /* PBXTargetDependency */, 4C0CF02334D579F2CA85518BAFE3AC94 /* PBXTargetDependency */, CA2CD4FD0049B212F2F4F143613B1746 /* PBXTargetDependency */, 95A27BB9F1F8CA547737F477253E25D4 /* PBXTargetDependency */, 619692B57C7C99263813F45DEF183A6B /* PBXTargetDependency */, 30CAAA5C763B44A39B67EEA988014D07 /* PBXTargetDependency */, 89535D4EB0336731DEC23A6271479D59 /* PBXTargetDependency */, 41CB180CC61559DBA84C8CCD85761E40 /* PBXTargetDependency */, 5F84ABE6461E8D10A99F1614662D5F02 /* PBXTargetDependency */, 6EA37D38B5F608C9ED8BCC3D0CE73976 /* PBXTargetDependency */, D3FE2FB1AC5AF0B7210C03C7CACCEE4F /* PBXTargetDependency */, D2F9E46EE53762B96D30861C5B6374B7 /* PBXTargetDependency */, DA81774A8A6DB56723A413D0EE8927C6 /* PBXTargetDependency */, C3F49F70B58B4AE3958816AF5F0A65ED /* PBXTargetDependency */, D0C0B60DD3D34657FCB73A9DE8B10D4E /* PBXTargetDependency */, A8E8A02278FC1510C1E4AE330186E3DB /* PBXTargetDependency */, 8431932AA052F87EEC81F9B95C62FF2B /* PBXTargetDependency */, 3A081C98EE57698FFCC1C41C77D545AD /* PBXTargetDependency */, ); name = "React-Fabric"; productName = "React-Fabric"; productReference = DE73D8A5ECB254D9D3F8C36C8D201F89 /* React-Fabric */; productType = "com.apple.product-type.library.static"; }; 5211B5AB7B81060AA8E78614DD75D3AB /* RCTDeprecation */ = { isa = PBXNativeTarget; buildConfigurationList = 4ADC4A4F4CD285503097D676C2835DAD /* Build configuration list for PBXNativeTarget "RCTDeprecation" */; buildPhases = ( 88C438498ECA995F20C03105412663D0 /* Headers */, 92A0F6DC3B64F90B399C60EE8FDEB83F /* Sources */, 31DEECC7D9F4687AA05692751E71642F /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = RCTDeprecation; productName = RCTDeprecation; productReference = 33EEBF1D210254B5452CE560F81C9D38 /* RCTDeprecation */; productType = "com.apple.product-type.library.static"; }; 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */ = { isa = PBXNativeTarget; buildConfigurationList = 1CAE6B2FF32C286031FF774A500E5F6B /* Build configuration list for PBXNativeTarget "React-runtimescheduler" */; buildPhases = ( 51368F0B4BB078EBDF20C37CE3191BDE /* Headers */, AA67040A808097DA613BC1AF4AECB0B9 /* Sources */, 9BE70249785B143A20B5733C856CB911 /* Frameworks */, ); buildRules = ( ); dependencies = ( 5DD3494C5EA179CF1469D60EFA4AA48D /* PBXTargetDependency */, 8E44E87D6B5FFB6F70D006C75B7A3B1B /* PBXTargetDependency */, 078D793D92DDA63E03BBEE73F963EED7 /* PBXTargetDependency */, 96F7AC019278453752BB26B62233BA22 /* PBXTargetDependency */, 9412045B42FDBCDBB036F663A3BEC279 /* PBXTargetDependency */, CD98C2F774F5A8508B3A70C6BAEB1A96 /* PBXTargetDependency */, A0662C7E8E6F4BB1BED6AB5116B068AC /* PBXTargetDependency */, 138FBE9E6A7F8DED026A2B9010A3D5F6 /* PBXTargetDependency */, CA721AC43DBB07B546D7BE24F41219C2 /* PBXTargetDependency */, 2F4D36D22D11472378BF1A9A86688579 /* PBXTargetDependency */, 401A92725890DB2796696C489E8A959E /* PBXTargetDependency */, ); name = "React-runtimescheduler"; productName = "React-runtimescheduler"; productReference = A67E85E5F06FDA406D3A1B378BDF0C5C /* React-runtimescheduler */; productType = "com.apple.product-type.library.static"; }; 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */ = { isa = PBXNativeTarget; buildConfigurationList = 3F9D73DBB45031EEA90F9BEAF35DBEC0 /* Build configuration list for PBXNativeTarget "React-RCTVibration" */; buildPhases = ( 03D0AD5F592D8F72B9347278AC7528B2 /* Headers */, 53A2027EA4F55C6D53E6616B3FE1C32B /* Sources */, 394B09545766677D0A263723DBEE5DD5 /* Frameworks */, ); buildRules = ( ); dependencies = ( 15CF3848FA8FF276A0AC4494AE7A2C94 /* PBXTargetDependency */, F6E7477DEC8DA6FFF14280294749452A /* PBXTargetDependency */, 5DE920B65B5626FBC490D822219BEB10 /* PBXTargetDependency */, C54A063F17CC52B5972FA1780A6C942F /* PBXTargetDependency */, 1097020EF71A5B0AE4AA8A3C3B539274 /* PBXTargetDependency */, 08E1EB80F89F0EB0DD4B2ADE9C460526 /* PBXTargetDependency */, ); name = "React-RCTVibration"; productName = "React-RCTVibration"; productReference = C1A919103EAC9813D236486C34FC0A21 /* React-RCTVibration */; productType = "com.apple.product-type.library.static"; }; 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */ = { isa = PBXNativeTarget; buildConfigurationList = F26D4DF8D52FF944DEF674FAE1118945 /* Build configuration list for PBXNativeTarget "React-NativeModulesApple" */; buildPhases = ( 96C8B3406F27BA8F9D23D265A963E433 /* Headers */, 7B4904D3DA72A83F379DDBAE171BB0A2 /* Sources */, 87CD4246A6A77E44C9BDD640317549F9 /* Frameworks */, ); buildRules = ( ); dependencies = ( 5309742FA68972C8703057C531FE7B4A /* PBXTargetDependency */, 59D93FECBEB5A2E7B843380E4A600A47 /* PBXTargetDependency */, 947BAD951BF31358EBBD7AB219F896DF /* PBXTargetDependency */, 63F23627D46E214A9E83F026A3E2413D /* PBXTargetDependency */, 66D92D4240C674B35F54C2C9AFAA0322 /* PBXTargetDependency */, 5504789E8261A05336A711333185F028 /* PBXTargetDependency */, 71C719D10FD6DB200EAA6EEFA1367270 /* PBXTargetDependency */, 850EF509C0F4973D25998A85CCC1F517 /* PBXTargetDependency */, 7EEE2CE1939388A6CDEE91AEB8A399EA /* PBXTargetDependency */, ); name = "React-NativeModulesApple"; productName = "React-NativeModulesApple"; productReference = 1E649614D7644BF68C2F5D4CB3FBF8DC /* React-NativeModulesApple */; productType = "com.apple.product-type.library.static"; }; 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */ = { isa = PBXNativeTarget; buildConfigurationList = 62FCE44A9C2279F047899EE9CBDB05E9 /* Build configuration list for PBXNativeTarget "React-RCTNetwork" */; buildPhases = ( 0E23530ACDC77621C49C1C0B334F772C /* Headers */, AB35217B6C3003BC3E64ABF40AB236FE /* Sources */, 38A83589C7A3FB59CFE0094947B15535 /* Frameworks */, ); buildRules = ( ); dependencies = ( F2C2F506161C15F85CE462E289D34B51 /* PBXTargetDependency */, 47552B4F8C7CC9D578C507F9C8B55E48 /* PBXTargetDependency */, 13D7733D4877955DA3776E3CC8436E48 /* PBXTargetDependency */, 828F20A914D5962587F89C8D501B682C /* PBXTargetDependency */, 5EE0CB2912FC54E4E1B00ECA8BD72D8D /* PBXTargetDependency */, 0292965509627A85A8FD7E309BC9D1E6 /* PBXTargetDependency */, 48958125BE6C489FEA79D9B9E058AF28 /* PBXTargetDependency */, ); name = "React-RCTNetwork"; productName = "React-RCTNetwork"; productReference = A68E5A9B69A3BA0FD52CAF7A354EC93B /* React-RCTNetwork */; productType = "com.apple.product-type.library.static"; }; 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */ = { isa = PBXNativeTarget; buildConfigurationList = 9A8C7076F126DE9D2C93C68E1F84C184 /* Build configuration list for PBXNativeTarget "React-Codegen" */; buildPhases = ( 2C77EFD57E0B1FEFDD34BA38A21E75B1 /* Headers */, 0E7DA29FC4DD1B4A582F0DBB4907FDD3 /* [CP-User] Generate Specs */, 827ABC8E4C67904313262F0F24F4BE76 /* Sources */, A9D4B85BB6017441753A3CED16046934 /* Frameworks */, ); buildRules = ( ); dependencies = ( F7A0AFA84119944170C3962FDAED17D3 /* PBXTargetDependency */, 961BDE36B0A650A306E262C44158CA8B /* PBXTargetDependency */, ED51FC4ED914B90C6FB3A3A184B18632 /* PBXTargetDependency */, 0CF51DBE402DD4D1816769A2AAC680B6 /* PBXTargetDependency */, B1E71F384FB952801A11CB94394AC12E /* PBXTargetDependency */, C07CFD51EE8A8059EBB505CA0AD77069 /* PBXTargetDependency */, 67722DF845F87BA9C58F762C97B926E0 /* PBXTargetDependency */, 08937C84140770B35EFCC5226B442C3C /* PBXTargetDependency */, 5CFF40B71FC04352AA6F82FCB1AEE57C /* PBXTargetDependency */, BEFB8C790410CF0DF996DF64145C5572 /* PBXTargetDependency */, CC7579BBF210D2BB6A286C8DBED8DA3B /* PBXTargetDependency */, 6041B93D30C0906C17F7827C89208FC1 /* PBXTargetDependency */, 4C4BF44502CFA2BC155CACCEA52AFC93 /* PBXTargetDependency */, 54BC7A2031B6EE04B465B38B2C61FA8A /* PBXTargetDependency */, A18F34A9AE12CA159FA4BE10BD0F08E6 /* PBXTargetDependency */, C0C4944B418CFB040B76FAE356CC1492 /* PBXTargetDependency */, 6675CE1FE41E6AC87A3117E2ABBBA762 /* PBXTargetDependency */, 6F3CAC1CE460FCD72E851FCC828AE32B /* PBXTargetDependency */, ); name = "React-Codegen"; productName = "React-Codegen"; productReference = E7178FECB829C9576A3723658B07F087 /* React-Codegen */; productType = "com.apple.product-type.library.static"; }; 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */ = { isa = PBXNativeTarget; buildConfigurationList = D04C425F4F78AE26547DDB4435695187 /* Build configuration list for PBXNativeTarget "React-RCTSettings" */; buildPhases = ( 3F5D17CD9252A653C5971202E0D8D3D2 /* Headers */, 1AD76BC80FB1362DE916B4C4FDA832E9 /* Sources */, E8527906ED69AB38F1A6149B0ED3AFB4 /* Frameworks */, ); buildRules = ( ); dependencies = ( D3A74B4CE67ACE3CD7D76E524C2644BA /* PBXTargetDependency */, C155477CCA345D73F3A4071492EC6132 /* PBXTargetDependency */, 7A2587BC6C3980FFDD632559115DBC78 /* PBXTargetDependency */, 84BEF175F835CEC76C3BA4509B326ECD /* PBXTargetDependency */, 38EF688FA4CFB04103A9F12D916F1799 /* PBXTargetDependency */, 53C17DD35EA04BC31221F5013D0D6470 /* PBXTargetDependency */, C76947685E95B2A22AF59BB340222EC6 /* PBXTargetDependency */, ); name = "React-RCTSettings"; productName = "React-RCTSettings"; productReference = 269BE773C9482484B70949A40F4EA525 /* React-RCTSettings */; productType = "com.apple.product-type.library.static"; }; 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */ = { isa = PBXNativeTarget; buildConfigurationList = 662954243572A7CB6DEE48482351D64F /* Build configuration list for PBXNativeTarget "React-RCTLinking" */; buildPhases = ( 1FC7C83C323D5915F4692711E389563D /* Headers */, 5D0426A5A488845772E6948965C9D686 /* Sources */, F135DDD9CC12F6A1A80D36F03447C5F9 /* Frameworks */, ); buildRules = ( ); dependencies = ( 17140E0E193C64A3A7403F68D30A8468 /* PBXTargetDependency */, 90640B83A8182E361131EC5865B94EF6 /* PBXTargetDependency */, BC679D6E3BA49D363ED5366763750F81 /* PBXTargetDependency */, 9FD34078FD450123876A7A3CF8C74DDD /* PBXTargetDependency */, 6F636285373965A3111B0B6ACD3B8002 /* PBXTargetDependency */, ); name = "React-RCTLinking"; productName = "React-RCTLinking"; productReference = 802121F5B756ACBFDD6D08C36246DADD /* React-RCTLinking */; productType = "com.apple.product-type.library.static"; }; 779DAB46A58E8051C7D2E5A8782C79D1 /* Pods-WatermelonTester-WatermelonTesterTests */ = { isa = PBXNativeTarget; buildConfigurationList = BF798DE132A0163B4BE4BECA4240D2A1 /* Build configuration list for PBXNativeTarget "Pods-WatermelonTester-WatermelonTesterTests" */; buildPhases = ( 1924379562E82C45C24131B0617BFAA9 /* Headers */, D920D245547BEED30EC5DBD60571CFCE /* Sources */, 41E92B86A8DA922F93FB3895A411CD96 /* Frameworks */, ); buildRules = ( ); dependencies = ( 033916D526C1A889561E0F74D3D0ACCC /* PBXTargetDependency */, C53EA7BC9EAF97E7CE9CA81A0BF12E67 /* PBXTargetDependency */, C690A825B8ED25093B883CF5B4830D9E /* PBXTargetDependency */, 05A4535BB70AF398463F378248BBD162 /* PBXTargetDependency */, 0717C5A3C0BEAB0160A75C5D66B42470 /* PBXTargetDependency */, 5F496EEFD1138C88F9B6C9F28BF8E7FE /* PBXTargetDependency */, C344777498D9BCEF407C9A6D74F03AF7 /* PBXTargetDependency */, 814262D7504A62E918BE9E839A613667 /* PBXTargetDependency */, A62ADA2BF30BF8351A4A154BA1DFD26D /* PBXTargetDependency */, F0540A7333ABA06B5224BADDE669D817 /* PBXTargetDependency */, B0D77E614B2A29B1C9D7D28FC2E4F4F4 /* PBXTargetDependency */, 61C5E1E9E0D8B3351152D9AE7DF787DA /* PBXTargetDependency */, F9A8004C6196E9C33150C72E5FC1683E /* PBXTargetDependency */, ED633AA62BFF42E31A4FAA9CF28BB16F /* PBXTargetDependency */, D865588C4D23024C831B0C28A68F836D /* PBXTargetDependency */, 45BFBFF43902D28610828EC9FD5889E1 /* PBXTargetDependency */, E3F0DCA13D829C18DBC21AF71610055F /* PBXTargetDependency */, FE902201A16A01BD21B612A64BED9AAD /* PBXTargetDependency */, 01EB13A513D3A65364DA674E0BA7F7E5 /* PBXTargetDependency */, B94AD44411D338A32AFD335004E0B6ED /* PBXTargetDependency */, E2B5EC8381B3A50F28D40F975A2672B6 /* PBXTargetDependency */, 333901E607E06D29D91573D5FD1AA335 /* PBXTargetDependency */, 760F46FA489FA3BC1A12FE767B1C3724 /* PBXTargetDependency */, F87F876F414C87A2BF69648DAE44FFF0 /* PBXTargetDependency */, EEC595C51EF9EDBB40E0F5B472E38245 /* PBXTargetDependency */, CD1B88DCEAFFF3408F714BF195A0BA9A /* PBXTargetDependency */, 0128B3961C62E0B77D199FEB5E91876A /* PBXTargetDependency */, C8BE6A7B0D695D555403A8C1FD672877 /* PBXTargetDependency */, BF6DD00FFD442BC49B4DB25016E20500 /* PBXTargetDependency */, 07705C923CD5F83B049E084E95B356FA /* PBXTargetDependency */, 25F8BC2FB5A20C0155607D43C0D83122 /* PBXTargetDependency */, 39AD6EAB484ABBC2E55676C6C3FEB744 /* PBXTargetDependency */, 8DC5372506CC8E27F51143581C74C5F7 /* PBXTargetDependency */, 977353FAAD596E850D4C7182EB9509D4 /* PBXTargetDependency */, 9F3B65DF4A9E574371431515F6480017 /* PBXTargetDependency */, AA6B0483A872C31D19C5C582CC33A30D /* PBXTargetDependency */, A63481D34C5560C5F3A9199783D01B6E /* PBXTargetDependency */, 7B05CED1A38707CAF44C3092D8F27EA4 /* PBXTargetDependency */, 9F95560B9E4E38DE203B4EDF2F2E238C /* PBXTargetDependency */, 4185D63487F1E5B3B6A77917AAE8756E /* PBXTargetDependency */, 8BB4CAD4E9AA9A76F4EFFF8A03EE5330 /* PBXTargetDependency */, E7B3814796F81B42574B7892A825D853 /* PBXTargetDependency */, 501186D706BB3A221149583702512FBA /* PBXTargetDependency */, 2A4DD09DDD919726D99AAD16E6EF18D1 /* PBXTargetDependency */, C17439E0E9B4A3F8B50C259EF28EA9E3 /* PBXTargetDependency */, D186B474CBACECCC487284A6C1D73E8F /* PBXTargetDependency */, 99F6DDAF65F28CC726441A0C018AE3A7 /* PBXTargetDependency */, C38F78AD23A62153D938B6A8D17DB064 /* PBXTargetDependency */, 9E1BF3FF53787FC2039BF2B7A62F9DDC /* PBXTargetDependency */, F50C79BA5E25D2CE982062B263ADCA17 /* PBXTargetDependency */, FBDAE38412AAE074731A400CBF19F946 /* PBXTargetDependency */, 70ECBD516E2B91C386ED477D0B1C4458 /* PBXTargetDependency */, 09932F9978240BC9960426479302DD99 /* PBXTargetDependency */, FE8D0EFE7556F1EBD21261B17D82DFF2 /* PBXTargetDependency */, 04387AA90E58CC1C09497D9FA32A54B4 /* PBXTargetDependency */, 8214D19E29BC4F9B43CFD87CC22B7018 /* PBXTargetDependency */, 74FF1306928480CBFD0257A65C2AE3D2 /* PBXTargetDependency */, ); name = "Pods-WatermelonTester-WatermelonTesterTests"; productName = "Pods-WatermelonTester-WatermelonTesterTests"; productReference = 66E1BAC6CC436F67ACD51B9211A14858 /* Pods-WatermelonTester-WatermelonTesterTests */; productType = "com.apple.product-type.library.static"; }; 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */ = { isa = PBXNativeTarget; buildConfigurationList = B5BF53901A44961D2F0245A680C5600D /* Build configuration list for PBXNativeTarget "React-Core" */; buildPhases = ( 50700FF38864A8F11B138C9B1C3F7EC7 /* Headers */, 39260D04C5355C99327140553873B867 /* Sources */, BF9F98FB7155A6900208145875893CA8 /* Frameworks */, ); buildRules = ( ); dependencies = ( 2AAA0F7AC1D291B485F05244E5B94F64 /* PBXTargetDependency */, 695CAFEE86C5934C15813E5AEB95FCF7 /* PBXTargetDependency */, 1BE6407519073C758F404A73A903FDD8 /* PBXTargetDependency */, F86D55633179768891C4FADBBC92E034 /* PBXTargetDependency */, 0FBC712AF9FD73F622F4DBEC577E97D0 /* PBXTargetDependency */, 71DBBBE762D28A5D1FB20FDEBA133275 /* PBXTargetDependency */, 23C94FE2112CC614AEBB66ED42CF2EAE /* PBXTargetDependency */, F45BCAC1136338F32A9CB80C9B478209 /* PBXTargetDependency */, 1BC9C4D05EE6C825BB7F90181F600687 /* PBXTargetDependency */, 2E23CFAC3E38CA3188706882E4B0FFF9 /* PBXTargetDependency */, 826B6D82D168B27838C2571D3143BDCB /* PBXTargetDependency */, C03E65D69ABF1DDDBD73AE4A96581425 /* PBXTargetDependency */, 76E2AF94513C31EEBA1A2731A05958D1 /* PBXTargetDependency */, A482D354857B96FF6608C1ECB1410DE1 /* PBXTargetDependency */, EA0D661BF9E1291A368BD6C59D9375AF /* PBXTargetDependency */, DDEB2059B6B32BE5EF7B55C7C7112CD4 /* PBXTargetDependency */, ); name = "React-Core"; productName = "React-Core"; productReference = BD71E2539823621820F84384064C253A /* React-Core */; productType = "com.apple.product-type.library.static"; }; 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */ = { isa = PBXNativeTarget; buildConfigurationList = 4BB3D33652ACC437885A3F69A7BD4E2B /* Build configuration list for PBXNativeTarget "React-RCTFabric" */; buildPhases = ( F624199FC463FBC3A10911920126B6BB /* Headers */, CE36F0369ED0C62B7A92EE0A3470F4D6 /* Sources */, B490F5C3DE68C34A228783FAAEBE1CCD /* Frameworks */, ); buildRules = ( ); dependencies = ( 8AC7F91A27E478D094028729D120C453 /* PBXTargetDependency */, 3E8240D54174DE4FE703DFE46FBF7F2F /* PBXTargetDependency */, D596FE4363A5F7DED779B98D3DECE515 /* PBXTargetDependency */, D123B77D7258E6315AD79BB6D955680C /* PBXTargetDependency */, DE547671DADE1EAA3518584FB142D4D3 /* PBXTargetDependency */, 340BC01CDDA1120E0BC121DF2D9F3A2D /* PBXTargetDependency */, FBC0958CCFB9E09A2F566E87296DFE17 /* PBXTargetDependency */, 42F6DC0A0F33B9822CD82AAA742BBC70 /* PBXTargetDependency */, 83A97A5415A40C13D0473AA7625FA12B /* PBXTargetDependency */, 7A698D86B723B94C66DF2921B25EBA09 /* PBXTargetDependency */, AD028C4C9C138F32FF283BF9E651428A /* PBXTargetDependency */, 14722F8716DB7B6FDF9830625EEAE9C5 /* PBXTargetDependency */, AD648138192ED2E45C736EEA5CF92E94 /* PBXTargetDependency */, BF0242746B38CA409974007B6FEDDC7F /* PBXTargetDependency */, 676DA9CA12606B49253CA5A3F2CB29AE /* PBXTargetDependency */, 4D6BA43CCAB6C667B53236511B23AF9F /* PBXTargetDependency */, 0113A1D7CEA7572A46417194D8E8C43D /* PBXTargetDependency */, EE1683DA42ED1D4C631FC47BE8AD9535 /* PBXTargetDependency */, 590C38C4546860234AE6995AA745B436 /* PBXTargetDependency */, ); name = "React-RCTFabric"; productName = "React-RCTFabric"; productReference = DA7ABB6DD8AEACED51D63B2C774E3A63 /* React-RCTFabric */; productType = "com.apple.product-type.library.static"; }; 91D38B18A4E42B1622B83F450706C2F5 /* React-RuntimeApple */ = { isa = PBXNativeTarget; buildConfigurationList = 3B20501A4B72AB953CEA417EABF8576B /* Build configuration list for PBXNativeTarget "React-RuntimeApple" */; buildPhases = ( AE897E21E39386108563A4EB4E02B6D3 /* Headers */, 85B1519F88251F0A76A1EE2F46A80D49 /* Sources */, AE7FBB9DE413C21987453291581B80C1 /* Frameworks */, ); buildRules = ( ); dependencies = ( 53121BB43C7003FC1889807B7999F194 /* PBXTargetDependency */, 33DD56EC46F00CDD32152A7D78484C0C /* PBXTargetDependency */, 18A0596FF4266A184879BD59B9836B17 /* PBXTargetDependency */, 96372FB99D877DCA073114668A01F79C /* PBXTargetDependency */, 383F9F7477C31187D8228B90944A5666 /* PBXTargetDependency */, 7E8596700BDB3E75F2D21854499777F3 /* PBXTargetDependency */, 37FC712C26E18E2E350322217EC740BA /* PBXTargetDependency */, 271AA5BE14F7B51FA70504F013807BC0 /* PBXTargetDependency */, 6750B951032FD22A0EEA0AEEF98376DC /* PBXTargetDependency */, 0B0B81E7C13C29E62916D264A25EA64B /* PBXTargetDependency */, 226A033C606AB4E273CA075C678DED98 /* PBXTargetDependency */, B08256724219B4019F944355CBD4DEE1 /* PBXTargetDependency */, 3DD3F4D8C8B9C7D406834B13A52483D5 /* PBXTargetDependency */, C6D13BFD6A1F57DBA9138A914EC33F22 /* PBXTargetDependency */, D013530604A03ED59DD33E5DA7A36E1D /* PBXTargetDependency */, B84433E64D21A3285F1532F01F6A24CA /* PBXTargetDependency */, D5B29CCC47333E6A4DECCCEA63418522 /* PBXTargetDependency */, ); name = "React-RuntimeApple"; productName = "React-RuntimeApple"; productReference = 1381503C42FFF460E946860A32A6F981 /* React-RuntimeApple */; productType = "com.apple.product-type.library.static"; }; 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */ = { isa = PBXNativeTarget; buildConfigurationList = CDFD8CE3A5B07C8AC39C77C03139B84E /* Build configuration list for PBXNativeTarget "React-RCTAnimation" */; buildPhases = ( 539C88BE469CDEE166CB70B00092D982 /* Headers */, 50C8A679BB5D7BD9D7EEED98F207406C /* Sources */, 20F4275A9630980BAF5F77C0EE302D2D /* Frameworks */, ); buildRules = ( ); dependencies = ( B2FC425DE6D70B89E4B66C419D80D21B /* PBXTargetDependency */, 9AC0F8F93F3A0DB72B7D88512F803C35 /* PBXTargetDependency */, 349AD49C975F6EAC6C878B5A24A9C501 /* PBXTargetDependency */, 2826FAE8B40BCAEB7402A2C59048B45C /* PBXTargetDependency */, D5EFD2E9F124E1BAB6AC216A804BAF12 /* PBXTargetDependency */, 55D793D7DCDBBB8918DA3FE5C48B431B /* PBXTargetDependency */, 6FD8F1C07C0EBA1942A87072CF2A4D5A /* PBXTargetDependency */, ); name = "React-RCTAnimation"; productName = "React-RCTAnimation"; productReference = FE7B9294FF05AAFD1653E2104E10844A /* React-RCTAnimation */; productType = "com.apple.product-type.library.static"; }; 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */ = { isa = PBXNativeTarget; buildConfigurationList = D50F4D7598C6D582311D01575A97FE3C /* Build configuration list for PBXNativeTarget "React-RCTBlob" */; buildPhases = ( 2F3933079C76AD41609F9AFC5782B638 /* Headers */, 3F49D730D34771920107D4D2669AFC9D /* Sources */, 61D9AB3CF28105161B660B3A2569110A /* Frameworks */, ); buildRules = ( ); dependencies = ( 56F45F0408600AD7AA272F3DE409925F /* PBXTargetDependency */, 84032E197D1AE2F04791DC93FD90C104 /* PBXTargetDependency */, 44BD7BB9580F592E3BA5A59E0FBDE34B /* PBXTargetDependency */, 8CE477AD6CC82F0D980B15A3D4A459E7 /* PBXTargetDependency */, 43EAB09B1F9E3433FFF4CAE3FA39D4D2 /* PBXTargetDependency */, B8F477BE7309D6FAEAD56FADEAB4CEE2 /* PBXTargetDependency */, F1B334885D6D8C27483276B36A4D8CD6 /* PBXTargetDependency */, 0E1A0EB88D2733A057A54100BC106B59 /* PBXTargetDependency */, 24EFCC54EF18A579A7C27EB7D2ED4DB1 /* PBXTargetDependency */, 7390C8A414C80248853FC1936D46AE65 /* PBXTargetDependency */, F1CF5620523DB34FC9603AFE5E3FCE46 /* PBXTargetDependency */, ); name = "React-RCTBlob"; productName = "React-RCTBlob"; productReference = F71EBF73F354B475D465FF6DE9A66707 /* React-RCTBlob */; productType = "com.apple.product-type.library.static"; }; 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */ = { isa = PBXNativeTarget; buildConfigurationList = 6421C0EF07096454C13037FB6D1B25FB /* Build configuration list for PBXNativeTarget "React-rendererdebug" */; buildPhases = ( 2F74E959B7B6CD3497F4E33BD9C61FE3 /* Headers */, 51792160622EDC05F03A3BD289C7A67D /* Sources */, B069C5D34B9F29495B74E527819ECEE8 /* Frameworks */, ); buildRules = ( ); dependencies = ( BCB6931B0CA96D254A87574AEC2F1A72 /* PBXTargetDependency */, 31B3264B573AC004E3E10202FFABE064 /* PBXTargetDependency */, 991ED2A86E606300A3C9E5A82B68AC3D /* PBXTargetDependency */, C624C37763CA3EB12B45D2F00EB3F35E /* PBXTargetDependency */, ); name = "React-rendererdebug"; productName = "React-rendererdebug"; productReference = 1E04881EDF02715BD6AC2C6ED3FBB37E /* React-rendererdebug */; productType = "com.apple.product-type.library.static"; }; A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */ = { isa = PBXNativeTarget; buildConfigurationList = 075CFEE2CD881582988C1D1118EEC225 /* Build configuration list for PBXNativeTarget "React-FabricImage" */; buildPhases = ( BBFB6E9C09170030BCB76EF550C29B38 /* Headers */, 52C37581A97E44EE0B8C295E6DD38CCE /* Sources */, 31C42BB3E2E25E43EB019EDC29907F97 /* Frameworks */, ); buildRules = ( ); dependencies = ( C0494FFB47801B2ED9C5783F9F2E9478 /* PBXTargetDependency */, 3093214829851D85A041F11935DDD07C /* PBXTargetDependency */, 471DCFFCBD4A108ED25D065877FD3FD3 /* PBXTargetDependency */, 5396E9247D3B4600C0CEF1BE56E512C5 /* PBXTargetDependency */, 06E63CD166A9DB8EAE8D17835AAAE714 /* PBXTargetDependency */, B2077D6B91054427593B7239A83DFA23 /* PBXTargetDependency */, E3C0BF921958C89B2B9262B8B7517F4B /* PBXTargetDependency */, 8BA87EBAE07B939A129DE936919B2437 /* PBXTargetDependency */, C2AA482EF6D398F117C43A167AACC89F /* PBXTargetDependency */, D3E014E2312527475A53EFF6DEC95B1E /* PBXTargetDependency */, 07309250446D5F55252BEAAE50750CF8 /* PBXTargetDependency */, 35BFC111E69EF700B863CE9674B50A7A /* PBXTargetDependency */, 89FAF2292B0B577B32C07291FF41EC3D /* PBXTargetDependency */, 80EA3BB2571AE7264036A211FA77E312 /* PBXTargetDependency */, 555AA89408382973C4AB5F51FA9CCA06 /* PBXTargetDependency */, 88ECB54C2DC159A81364054DF452E759 /* PBXTargetDependency */, 3F317B466311BFCE9B6D80B3F187515B /* PBXTargetDependency */, ); name = "React-FabricImage"; productName = "React-FabricImage"; productReference = 61A80F68AE163B384B7D7A9E76B6046C /* React-FabricImage */; productType = "com.apple.product-type.library.static"; }; B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */ = { isa = PBXNativeTarget; buildConfigurationList = 9DE30F4D4057127ECD1C4181A033108A /* Build configuration list for PBXNativeTarget "React-ImageManager" */; buildPhases = ( AFF97CE34F12C061B4326B69AF5F636D /* Headers */, D7947EFE7F3FB4DC3C5D40A004FDCB6B /* Sources */, E6721EB4E54C19B70C3D2E41970D775A /* Frameworks */, ); buildRules = ( ); dependencies = ( DA0E7DC74C748518BFF8C294148EDAE8 /* PBXTargetDependency */, 0A169625F636FE1C73F0208237690740 /* PBXTargetDependency */, EEE2BC18221D4FB58F26D95BA6FC69BA /* PBXTargetDependency */, D6064FA2E952381FD5566D4FE51ADCBE /* PBXTargetDependency */, 00631E47E14621AE9402D0DF95F1ADA8 /* PBXTargetDependency */, 2BB0BC14C7F66BE53EBE2D9821461C40 /* PBXTargetDependency */, A3BDD4A09B967B012B64ACA6D70CA378 /* PBXTargetDependency */, 6F36D48DE22DB419560FFB24734570C7 /* PBXTargetDependency */, ); name = "React-ImageManager"; productName = "React-ImageManager"; productReference = CEA45A2349847B8CEAC9ABF565A04BD0 /* React-ImageManager */; productType = "com.apple.product-type.library.static"; }; B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */ = { isa = PBXNativeTarget; buildConfigurationList = 1C5DC16C5742A9680E69626CDBC9F65B /* Build configuration list for PBXNativeTarget "React-nativeconfig" */; buildPhases = ( 2ED4D754BD2CEF3183E1F52B93D27909 /* Headers */, 02C020C26212A7A0116EEB8E197289A5 /* Sources */, F99F6C110F1AB91CEFC1511B3107B904 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "React-nativeconfig"; productName = "React-nativeconfig"; productReference = 60D5A56E763D6E7C4FBE797565062EEA /* React-nativeconfig */; productType = "com.apple.product-type.library.static"; }; B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */ = { isa = PBXNativeTarget; buildConfigurationList = 25D58DD7F531AAF078902F24BDB05BA5 /* Build configuration list for PBXNativeTarget "ReactCommon" */; buildPhases = ( 3DA53BE61AD2344C583DC7DE56DDE779 /* Headers */, 6AEEE0DDA3DE93CC96C0825C9089FA44 /* Sources */, 75122507248AC3D88667540F35C80F67 /* Frameworks */, ); buildRules = ( ); dependencies = ( 439BCAEF52C398210A874C1101A07BFA /* PBXTargetDependency */, DC14CDA2247EDD85F3EA1DDEF118E059 /* PBXTargetDependency */, 76295D2365EE55165E1FD23E9D3A64C4 /* PBXTargetDependency */, 23F0D83A18F9832E29B22D2DC676614A /* PBXTargetDependency */, FA042F3DFD66A81A0915835F4787ABAF /* PBXTargetDependency */, 133D9E2D3816395D8F6B4051D4CE1EDC /* PBXTargetDependency */, F14DCBE464449F61D897CA3C769D6C93 /* PBXTargetDependency */, F85656E4964D16005F093C8BD55E4612 /* PBXTargetDependency */, F7269812A409325D81BBDB1626D42A5B /* PBXTargetDependency */, AE16BCB7B1F274AFC64E6CE1A73649DE /* PBXTargetDependency */, 26A8AE3C7636B091780A815018FD8E52 /* PBXTargetDependency */, AE118212FA0D279BEBC9F02C20320565 /* PBXTargetDependency */, ); name = ReactCommon; productName = ReactCommon; productReference = D5C775614AC76D44CECB6BE08B022F1F /* ReactCommon */; productType = "com.apple.product-type.library.static"; }; C022870923962EA3953D70B907A7F8A7 /* Pods-WatermelonTester */ = { isa = PBXNativeTarget; buildConfigurationList = F6160CF29B028D7ECAD77007C47BE1C6 /* Build configuration list for PBXNativeTarget "Pods-WatermelonTester" */; buildPhases = ( 79B39A2A7F90A076B7453661C54FDD9D /* Headers */, 1DD6D57E16507C6E7C6C0A35BC747A10 /* Sources */, ADA95567AC41717C4D2DD30CB60CDA9A /* Frameworks */, ); buildRules = ( ); dependencies = ( 97E7B6DE91BBF0ECDCAA43F61EF2CB2C /* PBXTargetDependency */, 8750AD47ADC9B6FEDFC2A066D7BFFB17 /* PBXTargetDependency */, 2C475FFF8B871DA92E808279F3D8E579 /* PBXTargetDependency */, 2FCD30A1ABDFC43101DF702EF4EF07EC /* PBXTargetDependency */, B11620F0C0256DCD58AC236A8FB0BF9D /* PBXTargetDependency */, A254B74C24804FC2C8CB1B1A308C537C /* PBXTargetDependency */, 4EE942AF84B6CB7CB8C71847672BB4F5 /* PBXTargetDependency */, 14D203B01203E84A63E3011F1E3ABD41 /* PBXTargetDependency */, 029FDFA394268EAD139F31F647DCC156 /* PBXTargetDependency */, 8B08CEFAEA22CE15FF8ECBCB9B952604 /* PBXTargetDependency */, E5406C298236EDB8B77BE6D95F60EE6E /* PBXTargetDependency */, 384CF580B6E142D4571D926B01454BF1 /* PBXTargetDependency */, 52304F61679D1A20460ACD6B34295835 /* PBXTargetDependency */, 33B57E9C7AC16F53D4F7C80E017CB984 /* PBXTargetDependency */, 4201AC4E052E73C08CCD7D03D75ACCE5 /* PBXTargetDependency */, 771EA905ACE8B9DF1691920849E25189 /* PBXTargetDependency */, 482FC3D57FC8A7260A82042834555148 /* PBXTargetDependency */, 9946E1AB867FFEFC550310A00E3C6D73 /* PBXTargetDependency */, 42BB13633AE352DBC875CB2D02AA38A5 /* PBXTargetDependency */, C31A7FFCBECEE6969698A1F56E291707 /* PBXTargetDependency */, E39BA450DBC90AD38839CAC587ADA2E3 /* PBXTargetDependency */, 9E50028CCFFBB53BD3CED93BCAA23462 /* PBXTargetDependency */, D50E0503B0649D4A32DEA23BFA42C61D /* PBXTargetDependency */, A6D31FE8EB6B2659595EE4D3E5B8CC0B /* PBXTargetDependency */, 58965B069471A7CBBFC82ED0B15092E1 /* PBXTargetDependency */, 99FAEE95F441DDC413069EB0FD2E0D6F /* PBXTargetDependency */, C12817B77A384929CC56F08535650439 /* PBXTargetDependency */, 15511602B9CF0D9CAB1BFF716AC1577D /* PBXTargetDependency */, 5A4319DC9F2607FF12627690E3F4C0A3 /* PBXTargetDependency */, 7BB0EA4C6E68B67ED40E24ED427944CD /* PBXTargetDependency */, 28678A28E3DF6FA2E1637A8D54923035 /* PBXTargetDependency */, 28535D15D430AB27D78BED2C4E30A08E /* PBXTargetDependency */, 19223623503FAA1FAF8E103C15438676 /* PBXTargetDependency */, 5EA65B1FF742F6A080DAEDDDEA1C523E /* PBXTargetDependency */, BD276791FAA5FE2E186C8D9ABD614362 /* PBXTargetDependency */, 9F7AA6257356748F3AC3589C372117C4 /* PBXTargetDependency */, 4211045A5B6E798B2BF4A5B05D84257B /* PBXTargetDependency */, 23E56A592552C6624E530ACD1C05CB3E /* PBXTargetDependency */, B3A68A22B6988E30A3FE9B295B5ECD18 /* PBXTargetDependency */, 6B98ABBC42E97F407C486F83CFAF2DF4 /* PBXTargetDependency */, 5416C4DCD990599B5C226AE2132B7ACA /* PBXTargetDependency */, 9CA446479094667088F29B3DC4E12F7A /* PBXTargetDependency */, 4D05AEF140EAF8B33F16E6D1A0607765 /* PBXTargetDependency */, BEB5941835F05376583ABAFE9FFCD30C /* PBXTargetDependency */, 354F5ED9F8C15CF66B54AEA1152BE46E /* PBXTargetDependency */, E17833655FED386BC89BA3174ECD7B76 /* PBXTargetDependency */, 67F8AA74EE543DC681366BE8419569F9 /* PBXTargetDependency */, 6F68A67088985622F27AF591F2D44640 /* PBXTargetDependency */, E0CC9856A49E4B0C1F8060683656BF84 /* PBXTargetDependency */, C932986C08154C27C8B08FB09112E220 /* PBXTargetDependency */, ECF7B124979853303D57F72C1816C3DE /* PBXTargetDependency */, 7E4F5D0BEBE237442188BFED62916897 /* PBXTargetDependency */, C068FE076C49A4A30B2A1EDDE1FA06B7 /* PBXTargetDependency */, 174B2196BBC1B8032462868D2D2D378A /* PBXTargetDependency */, 3E675CEB9B0D066B74CC29783F888167 /* PBXTargetDependency */, CD005D8BB7E9E45730DD2FA1B03216F6 /* PBXTargetDependency */, 467A1BDC735428282D5519F99F127894 /* PBXTargetDependency */, ); name = "Pods-WatermelonTester"; productName = "Pods-WatermelonTester"; productReference = D6A3CF2FDC9D571D60BAB0281B6FA1BD /* Pods-WatermelonTester */; productType = "com.apple.product-type.library.static"; }; C2B1B75CCC326124F29FE703CC59BFB7 /* React-RCTAppDelegate */ = { isa = PBXNativeTarget; buildConfigurationList = BF3133F2BD1849B71229502EAFA6C771 /* Build configuration list for PBXNativeTarget "React-RCTAppDelegate" */; buildPhases = ( 6819AB1E5F52E6E756C996BB746F2016 /* Headers */, 111FA950DF7AFACB090DFB45EE9171E2 /* Sources */, 53C4D790BC130A50096231A17E5B83B6 /* Frameworks */, ); buildRules = ( ); dependencies = ( 0947843414EAF9A018C3EFF21E80AEE1 /* PBXTargetDependency */, 2504A251E75872D0B920F87A736CA6E3 /* PBXTargetDependency */, 9DC6B2339493349D425BEB578C7330E3 /* PBXTargetDependency */, CEFF80344602F76C95E6272C9240036C /* PBXTargetDependency */, E3B183453B2C859BF77E884025BB337B /* PBXTargetDependency */, 6DDADE4A090D2486F1867CDFFFEC2BAE /* PBXTargetDependency */, E5E22178DC5D3A1B2EDEFFE3240FE5F5 /* PBXTargetDependency */, 792C94CE5907970B3561385D49A084CB /* PBXTargetDependency */, 02CCFE27A24A08DAADC1299A08147AF0 /* PBXTargetDependency */, B212680BD31F13D2F6279DBAD3A1E825 /* PBXTargetDependency */, 1B6C878FFCE771AC50BC4961B0F87EE5 /* PBXTargetDependency */, 3875578AD50898EE9D9B27FBEAAEA823 /* PBXTargetDependency */, E9C48BEA57BC9B4B9A176BA0823CEF2F /* PBXTargetDependency */, 9A68278B027713D1161E945A25B9731E /* PBXTargetDependency */, 3126B7E273693B27EB2B7FD50AA5BC17 /* PBXTargetDependency */, D1DB74BE38ADE6F876059D7CF8B09249 /* PBXTargetDependency */, B339E8D2195D5B0E12F1886B392070B9 /* PBXTargetDependency */, B84F02AF765914933817049A11982A2D /* PBXTargetDependency */, 336B884A1B8C1FCCD9B9586A45B09D69 /* PBXTargetDependency */, E9AADA080FCC408EA94BBC9B3500DDAC /* PBXTargetDependency */, 577FF61698C6B776BD1DDCEF805F0E08 /* PBXTargetDependency */, F4A8A11533BA5371EB5105103BFD9E90 /* PBXTargetDependency */, AFF83814306FEE2AB836E168DACED238 /* PBXTargetDependency */, ); name = "React-RCTAppDelegate"; productName = "React-RCTAppDelegate"; productReference = 39D0105B481E5FB78C661496BD63B8A5 /* React-RCTAppDelegate */; productType = "com.apple.product-type.library.static"; }; C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */ = { isa = PBXNativeTarget; buildConfigurationList = 64F885119F50A3C56A0D08EA0B025C49 /* Build configuration list for PBXNativeTarget "React-RuntimeCore" */; buildPhases = ( 1F2D4CFFFC42880B1F612DCF5363A6DA /* Headers */, 99D0414F490F294A46CABFA9F84F2C57 /* Sources */, 917B37A67EC657DE7A1DB7AC71C9BA46 /* Frameworks */, ); buildRules = ( ); dependencies = ( FE5A1DF1E4AAEB8FF1AAE875962EBFF4 /* PBXTargetDependency */, FD09F1B752681CA8CCC4A39FB3D55188 /* PBXTargetDependency */, 1D43516102A3113894F7C492185A8246 /* PBXTargetDependency */, 85C1E90FA3B4C4E24168826381CB9302 /* PBXTargetDependency */, 397953EECD8A705AE1E95CA4A3B17F2F /* PBXTargetDependency */, 12DA8B08C376D6BDB2C5EA653BDD2EC0 /* PBXTargetDependency */, 8938CD6C0EA0ADBE192399759E9D2533 /* PBXTargetDependency */, 78727E5B4250A9E09FD2B16BE2F71350 /* PBXTargetDependency */, 900EE9B525D81318F7468BA33F615A63 /* PBXTargetDependency */, 177E6FD6E10FEA6715CEF6E76277104F /* PBXTargetDependency */, A7BF697A5BE5F29B8EFC9A4547AE419C /* PBXTargetDependency */, 828F9C83DE2F06F7C916628EA05F91B1 /* PBXTargetDependency */, ); name = "React-RuntimeCore"; productName = "React-RuntimeCore"; productReference = D22EED118A762A7D7BC88A4ADBB7026E /* React-RuntimeCore */; productType = "com.apple.product-type.library.static"; }; D0DD0961119C95E188122B13F3BF4380 /* React-Core-RCTI18nStrings */ = { isa = PBXNativeTarget; buildConfigurationList = 35BDABAF8BA6C6EA1964325CDB079A1D /* Build configuration list for PBXNativeTarget "React-Core-RCTI18nStrings" */; buildPhases = ( 6E7F91AEE5AB822D742DD436C6F7CF22 /* Sources */, 4484CB8C5EC3D4C457E3791F1EDA81A4 /* Frameworks */, C1767B4F3277AC5435966C323C95AB9C /* Resources */, ); buildRules = ( ); dependencies = ( ); name = "React-Core-RCTI18nStrings"; productName = RCTI18nStrings; productReference = E50E54D57E4CB3E0920119CF69AD9A2D /* React-Core-RCTI18nStrings */; productType = "com.apple.product-type.bundle"; }; D0EFEFB685D97280256C559792236873 /* glog */ = { isa = PBXNativeTarget; buildConfigurationList = 7060A6016509840F2216B4B586CDB808 /* Build configuration list for PBXNativeTarget "glog" */; buildPhases = ( D288DB9B0456E0CC4075C19E15EC2EF3 /* Headers */, 8504E2D60624339B89BEA2A6F41621A2 /* Sources */, 18D45363A5C31117A24DD45090EE585D /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = glog; productName = glog; productReference = 3CA7A9404CCDD6BA22C97F8348CE3209 /* glog */; productType = "com.apple.product-type.library.static"; }; D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */ = { isa = PBXNativeTarget; buildConfigurationList = E78E1B9C796F493267390DA3E9932266 /* Build configuration list for PBXNativeTarget "RCTTypeSafety" */; buildPhases = ( DAE502B98C15919EDA8AE839E45EF463 /* Headers */, 46252E81ED1C361CFC4C994E6EE633FF /* Sources */, 7B00CA1FF92C8EE49D682945D65F7919 /* Frameworks */, ); buildRules = ( ); dependencies = ( EF402A140375BB13E5C26D861193A401 /* PBXTargetDependency */, 290A5A9C4C2B466906134251C445AE62 /* PBXTargetDependency */, BEB67114B4EC87924688EEBB8C438FD2 /* PBXTargetDependency */, ); name = RCTTypeSafety; productName = RCTTypeSafety; productReference = F958876A082BF810B342435CE3FB5AF6 /* RCTTypeSafety */; productType = "com.apple.product-type.library.static"; }; DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */ = { isa = PBXNativeTarget; buildConfigurationList = D343A1B642437DBEA4FA80B9A4094074 /* Build configuration list for PBXNativeTarget "React-jsiexecutor" */; buildPhases = ( B848B2694FF142FE99FE00869735ED10 /* Headers */, 5CAEEB9F76D13B5B53752432675816A2 /* Sources */, 976D53391EFB92F67FDDDF48FC18C587 /* Frameworks */, ); buildRules = ( ); dependencies = ( E0F2CB12CF095E00B9403D3AE141BC5C /* PBXTargetDependency */, A73A9A2AC3DD393BE94B96FC0811F52F /* PBXTargetDependency */, 7F11632F8C4B59DD3BB4051C89DBAE53 /* PBXTargetDependency */, 236E756288374E4AE29AC51EBEE02A84 /* PBXTargetDependency */, 67BBDDCEA70BEA58B3E3C83B3C47033D /* PBXTargetDependency */, 64A12C5236A6B897B3DBB8EBDE905E7B /* PBXTargetDependency */, 4920A5B0535890B1E7D1BF643FDDC3FE /* PBXTargetDependency */, B5E4CB125000A02D7C47D5BC8B2235E2 /* PBXTargetDependency */, 10A2F45C3B581D6E8F38A104C850F7D7 /* PBXTargetDependency */, ); name = "React-jsiexecutor"; productName = "React-jsiexecutor"; productReference = F2E7C88DFCD460A4B46B913ADEB8A641 /* React-jsiexecutor */; productType = "com.apple.product-type.library.static"; }; DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */ = { isa = PBXNativeTarget; buildConfigurationList = 772C322C9EE72B896EB7A93983C1ABFF /* Build configuration list for PBXNativeTarget "React-RCTText" */; buildPhases = ( 3923F79A6C43DC54B393E6A014C97F3D /* Headers */, 5CAAFADB20B88A58D6830F22D247F99A /* Sources */, D532CB49CB8E79A6C3551005CB82786E /* Frameworks */, ); buildRules = ( ); dependencies = ( 238930CCE2A68E41AED023158D9FD867 /* PBXTargetDependency */, 0FE5A051E0A746490490C86E7859144D /* PBXTargetDependency */, ); name = "React-RCTText"; productName = "React-RCTText"; productReference = E6A16705C69FC7DE11C2469A4A0F8358 /* React-RCTText */; productType = "com.apple.product-type.library.static"; }; E16E206437995280D349D4B67695C894 /* React-CoreModules */ = { isa = PBXNativeTarget; buildConfigurationList = 2023F194410EB76C507DE4868A948CDE /* Build configuration list for PBXNativeTarget "React-CoreModules" */; buildPhases = ( 131B4DFB7582473308782B58746A7B52 /* Headers */, 9DF643F20AEF406F2B1272098FD69149 /* Sources */, 401DCA93590F154762BC1D9585CB8A7D /* Frameworks */, ); buildRules = ( ); dependencies = ( 48939DA609333D216671B3454FF64B92 /* PBXTargetDependency */, 8A01144C4811FC96968CD28E8FC601CF /* PBXTargetDependency */, 37F81AC9EC861E71FEBA2A4389C6CF3D /* PBXTargetDependency */, 3D04E6CC3760CE3501A287C5002BA99A /* PBXTargetDependency */, FFA7F1EF8FAC3A0952EEFDE38DE91E5A /* PBXTargetDependency */, 350AB0B4FB6E2D72BF570CC9B3DED953 /* PBXTargetDependency */, 83D931AC8A3A8844EA71D031AEFEC9F6 /* PBXTargetDependency */, 13D61D46C1B23D15B361E0C6A887C141 /* PBXTargetDependency */, 80D81BC05DF9946301984E4F3DC959D8 /* PBXTargetDependency */, C4DD06F137AEDD5B0BB9846AAB2BD11E /* PBXTargetDependency */, 871D865CD2E0FD7ECE21C10E35270274 /* PBXTargetDependency */, D0C97A79D6B5E0234424B706959B344C /* PBXTargetDependency */, 070075A664C526AA369CFF1C8F480565 /* PBXTargetDependency */, ); name = "React-CoreModules"; productName = "React-CoreModules"; productReference = 6771D231F4C8C5976470A369C474B32E /* React-CoreModules */; productType = "com.apple.product-type.library.static"; }; EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */ = { isa = PBXNativeTarget; buildConfigurationList = 9F2C5C7A82B8C5C2581EDD99BF908E3B /* Build configuration list for PBXNativeTarget "RCT-Folly" */; buildPhases = ( 91B596376A967609FA5D360BDD3E4367 /* Headers */, B85C4FF0078BD4F65D0B97C954FCA723 /* Sources */, 82C4242EC83DE2399BE5CCCAD8D44002 /* Frameworks */, ); buildRules = ( ); dependencies = ( 509DFA417A9F6FC28C5DF54680ED83BD /* PBXTargetDependency */, 8589C20D4651BCDCFF98418A1C87A7EF /* PBXTargetDependency */, D64FBFB3001F5CD6E0240571ADCE2DD8 /* PBXTargetDependency */, 9CB7426A4D28082958291C03049EB5C0 /* PBXTargetDependency */, ); name = "RCT-Folly"; productName = "RCT-Folly"; productReference = 1936453FF2A7E3A13063C4917C4D5598 /* RCT-Folly */; productType = "com.apple.product-type.library.static"; }; EF554722D0D580AC702A6DAB8FDBB2B5 /* WatermelonDB */ = { isa = PBXNativeTarget; buildConfigurationList = 064B0AD934FAEAE90C5B19183E95B267 /* Build configuration list for PBXNativeTarget "WatermelonDB" */; buildPhases = ( DC06E85B125BB6F20AEA30AA6C6A8494 /* Headers */, 83D9E4EBA58D2EF02EA7856C60C2620C /* Sources */, 953D5F4F2F49FBAA1C7494F06276AA72 /* Frameworks */, ); buildRules = ( ); dependencies = ( 3A25922BCB02D7620B0B4992ACEB0B93 /* PBXTargetDependency */, DE4836880D0968B12D6E0A473EF2A047 /* PBXTargetDependency */, ); name = WatermelonDB; productName = WatermelonDB; productReference = B1BC0D650AD4A6CB2A62DB5D7C94556A /* WatermelonDB */; productType = "com.apple.product-type.library.static"; }; F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */ = { isa = PBXNativeTarget; buildConfigurationList = FB6AD053F80544ABF6568EAFF5394DB4 /* Build configuration list for PBXNativeTarget "React-perflogger" */; buildPhases = ( 8656D5B4FA65E6F049F59F1441FCCF44 /* Headers */, 2F726D5C593EA13536D41362B9300877 /* Sources */, C7E0A0DF29622DB6BD97632058301AC7 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "React-perflogger"; productName = "React-perflogger"; productReference = 666E72807891C591E025A75410CD2A26 /* React-perflogger */; productType = "com.apple.product-type.library.static"; }; F7D033C4C128EECAA020990641FA985F /* React-jsinspector */ = { isa = PBXNativeTarget; buildConfigurationList = 1C8845324AC124F676276B99D738106A /* Build configuration list for PBXNativeTarget "React-jsinspector" */; buildPhases = ( 5EB5B5D0D6BFF8615D4D1DF5D0982F1F /* Headers */, BB8C3A27E7A75C4EA178CD713C13DB06 /* Sources */, D94BECEDC7E7186443633477224FEDF3 /* Frameworks */, ); buildRules = ( ); dependencies = ( 5B9BFD44259542BF0998056E0C123C8E /* PBXTargetDependency */, 89236A9ED15BD42914C7EE0DB075FF13 /* PBXTargetDependency */, 74785FAB64DB2E3C10C989A45A14C219 /* PBXTargetDependency */, 7FDDF5770FADD8DEA8C31B0DCE95FFFC /* PBXTargetDependency */, 12A0E63E2D9A8A38283E1A96C9BD9771 /* PBXTargetDependency */, 492F47EC7FDE085C758C479D46DF1F63 /* PBXTargetDependency */, DA18253AF45CCA4B3F48F3534E2E39B8 /* PBXTargetDependency */, ); name = "React-jsinspector"; productName = "React-jsinspector"; productReference = 2577F299FCB0A19824FE989BE77B8E8F /* React-jsinspector */; productType = "com.apple.product-type.library.static"; }; FA877ADC442CB19CF61793D234C8B131 /* React-jsi */ = { isa = PBXNativeTarget; buildConfigurationList = 4FB4FCC7287CF5184D152FD0437A63C6 /* Build configuration list for PBXNativeTarget "React-jsi" */; buildPhases = ( 74E7814F4B2665A4B71520D1FD570E65 /* Headers */, 319B6DC7B521A04A3FAE5610EE495267 /* Sources */, 32445F0B48FFAD562A3D7EFA997FE471 /* Frameworks */, ); buildRules = ( ); dependencies = ( 4AA6C6F6763192CF4FD121DC066B3416 /* PBXTargetDependency */, 0BEDBF63C3E4E541C8B0B6D741C05866 /* PBXTargetDependency */, 0D6352E2424F6FC499B3B35657C6AD1B /* PBXTargetDependency */, 03760D1433D73CEC24F9E58CB14B1F18 /* PBXTargetDependency */, 9C411B2CC3C4A28BA72E9017965B8DB1 /* PBXTargetDependency */, 6760651ADC5EFA51B68D248ADF79D997 /* PBXTargetDependency */, ); name = "React-jsi"; productName = "React-jsi"; productReference = D9F334F2E90E3EE462FC4192AF5C03BD /* React-jsi */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1500; LastUpgradeCheck = 1500; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 10.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( Base, ar, cs, da, de, el, en, "en-GB", es, "es-ES", fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nb, nl, pl, pt, "pt-PT", ro, ru, sk, sv, th, tr, uk, vi, "zh-Hans", "zh-Hant", "zh-Hant-HK", zu, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; productRefGroup = 6ED0E8A627772310985098275F934F04 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */, 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */, 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */, 02B79DFED924FA19CA90EC69614733E1 /* fmt */, D0EFEFB685D97280256C559792236873 /* glog */, 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */, C022870923962EA3953D70B907A7F8A7 /* Pods-WatermelonTester */, 779DAB46A58E8051C7D2E5A8782C79D1 /* Pods-WatermelonTester-WatermelonTesterTests */, EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */, 5211B5AB7B81060AA8E78614DD75D3AB /* RCTDeprecation */, E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */, D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */, 1BEE828C124E6416179B904A9F66D794 /* React */, 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */, 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */, 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */, D0DD0961119C95E188122B13F3BF4380 /* React-Core-RCTI18nStrings */, E16E206437995280D349D4B67695C894 /* React-CoreModules */, 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */, 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */, 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */, A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */, 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */, 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */, 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */, B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */, 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */, FA877ADC442CB19CF61793D234C8B131 /* React-jsi */, DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */, F7D033C4C128EECAA020990641FA985F /* React-jsinspector */, 718331030FAA6D88E74D4B2240BB4AC8 /* React-jsitracing */, 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */, 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */, B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */, 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */, F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */, 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */, 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */, C2B1B75CCC326124F29FE703CC59BFB7 /* React-RCTAppDelegate */, 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */, 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */, 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */, 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */, 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */, 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */, DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */, 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */, 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */, B41E34C6B259B9994C513BE178912491 /* React-rncore */, 91D38B18A4E42B1622B83F450706C2F5 /* React-RuntimeApple */, C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */, 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */, 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */, 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */, 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */, B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */, 45B79B0C60C74716DCD2AD7BE782A719 /* simdjson */, 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */, EF554722D0D580AC702A6DAB8FDBB2B5 /* WatermelonDB */, 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ C1767B4F3277AC5435966C323C95AB9C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( BB1ED891A520B5065A5DED3E37ACA7F0 /* ar.lproj in Resources */, 0642403BB181EA7478210C0089DEF508 /* cs.lproj in Resources */, 9A3A4D10C9D413158BC724A194B154E9 /* da.lproj in Resources */, 1D65FAC0B4EB638F3549891915706680 /* de.lproj in Resources */, D0521A5D06CA09FFB9EB9EDB701566C0 /* el.lproj in Resources */, 362390F52589F7931C2C6851393C3AF9 /* en.lproj in Resources */, AE0B4659152C1B6CE26DA56940540CCE /* en-GB.lproj in Resources */, FE877895E55021546425F770C014D9F8 /* es.lproj in Resources */, A93FB3B91CE02A0B704D2A989C363E9C /* es-ES.lproj in Resources */, A61B1E1D334158CF2ED3116CC21C3F33 /* fi.lproj in Resources */, DBAB9A747E25B02895BCC957ADD16902 /* fr.lproj in Resources */, D21B7BB8606BF188823CB4024222D8C7 /* he.lproj in Resources */, 7604DFAE9BCFB8918643A00E43A0E326 /* hi.lproj in Resources */, 8CB06AE99C65D0CB47B460E9715D2447 /* hr.lproj in Resources */, 4C3D5B6DE1DFE5EC71F9EDAB80BBA2CA /* hu.lproj in Resources */, D473DD75F33B177EDD13C68DE02D058B /* id.lproj in Resources */, 7DFF6AA49AB89B1D15BDD142FB5C30E9 /* it.lproj in Resources */, D59713A7BC16D46A1359CFB93E730D3C /* ja.lproj in Resources */, F9E6052152BB44E91B62957A180638AB /* ko.lproj in Resources */, 4D7E5F546791BFFE2D74F66BE63512DE /* ms.lproj in Resources */, B21738D0170767FAB849DD08A62EBA80 /* nb.lproj in Resources */, F6A7E8738C0E504937CBF3B8B193D026 /* nl.lproj in Resources */, 87818F7E72E1C8E3028F461ABBCE56E3 /* pl.lproj in Resources */, 491734DC36D5DA5B7188251B61658CA3 /* pt.lproj in Resources */, F0BAC6D2EB66EF5AF8CB77C031595704 /* pt-PT.lproj in Resources */, 61C9E79CA790A9EFE30E8C8D0E2B8ACE /* ro.lproj in Resources */, E1DB2693E8C7C7187DA8BA2D5C7B2F11 /* ru.lproj in Resources */, 9C213142A14C7405ADC9288D76B1290C /* sk.lproj in Resources */, 1B502CFAD551B4D4392A0BADFBBEF25B /* sv.lproj in Resources */, 9D28E53E71CE7B1B576FC946E8E18383 /* th.lproj in Resources */, 6035F2E5BEC7F02E3206FBCBACE06A55 /* tr.lproj in Resources */, 7DAB642F45A486822F115BE0920FB465 /* uk.lproj in Resources */, 0333BBF0A9EA7C3B7E05BD48E0D67A82 /* vi.lproj in Resources */, C96741C72BE65B64A4AEAB8481F58285 /* zh-Hans.lproj in Resources */, 950BAD90B56D30A54EBF43AF215D0C8D /* zh-Hant.lproj in Resources */, 2C9A212BEA5B7429E6A978943ED1DAAF /* zh-Hant-HK.lproj in Resources */, 8D8BBF7A84CBAE7584B4D446F86A2086 /* zu.lproj in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 0E7DA29FC4DD1B4A582F0DBB4907FDD3 /* [CP-User] Generate Specs */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "[CP-User] Generate Specs"; outputPaths = ( "${DERIVED_FILE_DIR}/react-codegen.log", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "pushd \"$PODS_ROOT/../\" > /dev/null\nRCT_SCRIPT_POD_INSTALLATION_ROOT=$(pwd)\npopd >/dev/null\n\nexport RCT_SCRIPT_RN_DIR=$RCT_SCRIPT_POD_INSTALLATION_ROOT/../../node_modules/react-native\nexport RCT_SCRIPT_APP_PATH=$RCT_SCRIPT_POD_INSTALLATION_ROOT/../..\nexport RCT_SCRIPT_OUTPUT_DIR=$RCT_SCRIPT_POD_INSTALLATION_ROOT\nexport RCT_SCRIPT_TYPE=withCodegenDiscovery\n\nSCRIPT_PHASES_SCRIPT=\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\"\nWITH_ENVIRONMENT=\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\"\n/bin/sh -c \"$WITH_ENVIRONMENT $SCRIPT_PHASES_SCRIPT\"\n"; }; 8F6E4EC43155610A21F16E054B4EAFF3 /* [CP] Copy XCFrameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/hermes-engine/hermes-engine-xcframeworks-input-files.xcfilelist", ); name = "[CP] Copy XCFrameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/hermes-engine/hermes-engine-xcframeworks-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/hermes-engine/hermes-engine-xcframeworks.sh\"\n"; showEnvVarsInLog = 0; }; B89680891A24601AFD2489230D18F55C /* [CP-User] [Hermes] Replace Hermes for the right configuration, if needed */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); name = "[CP-User] [Hermes] Replace Hermes for the right configuration, if needed"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = " . \"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\n\n CONFIG=\"Release\"\n if echo $GCC_PREPROCESSOR_DEFINITIONS | grep -q \"DEBUG=1\"; then\n CONFIG=\"Debug\"\n fi\n\n \"$NODE_BINARY\" \"$REACT_NATIVE_PATH/sdks/hermes-engine/utils/replace_hermes_version.js\" -c \"$CONFIG\" -r \"0.74.6\" -p \"$PODS_ROOT\"\n"; }; EA5775F352F02CC6B079C87333EA9092 /* [CP-User] [RN]Check rncore */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); name = "[CP-User] [RN]Check rncore"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "echo \"Checking whether Codegen has run...\"\nrncorePath=\"$REACT_NATIVE_PATH/ReactCommon/react/renderer/components/rncore\"\n\nif [[ ! -d \"$rncorePath\" ]]; then\n echo 'error: Codegen did not run properly in your project. Please reinstall cocoapods with `bundle exec pod install`.'\n exit 1\nfi\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 02C020C26212A7A0116EEB8E197289A5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 39CDAA971F3E8A4A08BD53F982886AAD /* React-nativeconfig-dummy.m in Sources */, 956D860AD7C9DC24AA722E80D15E4D6B /* ReactNativeConfig.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 0FDD676C9CF447C0E5C23ADF6F292A6E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4D4222A8B9F471CE399280E884966659 /* CxxNativeModule.cpp in Sources */, 3EBA21C27903E9515E2B509B4671A407 /* Instance.cpp in Sources */, 59284F057F926EC5DA3ECD28FDEAAD96 /* JSBigString.cpp in Sources */, 09946EAA53E8CE2FFF8939A7012AABD1 /* JSBundleType.cpp in Sources */, 0427F0349638DCD376F42A586CB060E0 /* JSExecutor.cpp in Sources */, 869C6BC97E0783E17A7A32A4CB9C444D /* JSIndexedRAMBundle.cpp in Sources */, 67745EF2FCD4C0DAFE55F235B9511877 /* MethodCall.cpp in Sources */, 01474AE21855DC963FC28E1C31BEB84A /* ModuleRegistry.cpp in Sources */, ADFE734C91C7A833AE41533BDB4B479C /* NativeToJsBridge.cpp in Sources */, 470C6E55CF2E2DCD6E21DADFFA475E9B /* RAMBundleRegistry.cpp in Sources */, EAA499218101102AB5F773BF2B50EF87 /* React-cxxreact-dummy.m in Sources */, A2F8AC56D5A31FAA851EA309CAB094CF /* ReactMarker.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 111FA950DF7AFACB090DFB45EE9171E2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 27928D50D910F1E6A27AF06B64529EF2 /* RCTAppDelegate.mm in Sources */, 7B3EFF70B6BC846F386E9B04B567C87E /* RCTAppSetupUtils.mm in Sources */, 0C173B954EAFE33EB0E10A7430B53888 /* RCTRootViewFactory.mm in Sources */, 2ADAF88BF204658BFDA47A99DB5763B2 /* React-RCTAppDelegate-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1668C4E93B3B7D623F5F0B12FFC8EDF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( A987774A31FA59F2A5D311C15EEF222D /* fmt-dummy.m in Sources */, E339752BDF80501597F6B9FA4BDF020B /* format.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1AD76BC80FB1362DE916B4C4FDA832E9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 63D7C1B01C0D564F59C944A6CD64462E /* RCTSettingsManager.mm in Sources */, A32D15308F27ECE2391DA0E67E184553 /* RCTSettingsPlugins.mm in Sources */, 012219210290351B09E3228F57549796 /* React-RCTSettings-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1B85B6C778B063059A7996C2729D726F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E8F692582B234462685FB7967E14E8F9 /* ConnectionDemux.cpp in Sources */, 48BBB73DC78C42C1BD39CC241869299B /* HermesExecutorFactory.cpp in Sources */, D0AABA0B25ED1795CF662870AD7F0EC9 /* HermesRuntimeAgentDelegate.cpp in Sources */, D115801DD61F22629F88BCF5BCBA5E36 /* React-hermes-dummy.m in Sources */, 6C1392E4CE9C70E81D25ABF34EE9631D /* Registration.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1DD6D57E16507C6E7C6C0A35BC747A10 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 614A74B5BD426630D339F25D429EA463 /* Pods-WatermelonTester-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1DF1B328A32BB8F8D107024AD45C182B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5C74608D4E02F4D4AF0009F7622CECFC /* simdjson.cpp in Sources */, E0E7AA9F8861860CFB84E20C9489E5DB /* simdjson-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 2F726D5C593EA13536D41362B9300877 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BAC222710598CFEF8986092D6631F49 /* BridgeNativeModulePerfLogger.cpp in Sources */, 7232F323AB9767475B711CD115277385 /* React-perflogger-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 319B6DC7B521A04A3FAE5610EE495267 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4C28C822685226ADDBE66EBDFDD58EB8 /* JSIDynamic.cpp in Sources */, 875518F410236D322133384F93B4EE9B /* React-jsi-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 39260D04C5355C99327140553873B867 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9EA31CC73780B94F35D97F87C4FB001C /* NSDataBigString.mm in Sources */, A99DAE5BCBF57C5FF1C418A9CE856DAA /* RCTActivityIndicatorView.m in Sources */, 084B7DAB689734EEBB98408DD6E7F12B /* RCTActivityIndicatorViewManager.m in Sources */, 49991F7761C3338772084CD9A784B437 /* RCTAssert.m in Sources */, 6EA7026AD8D1F370E0A660F1A4FF7A07 /* RCTBorderDrawing.m in Sources */, BB290E6063D0D517A3C83B1DDA4BF000 /* RCTBridge.mm in Sources */, 64F832664A431E454316E1AC03746C0D /* RCTBridgeConstants.m in Sources */, DC6986A6AC95089763A68D148457F484 /* RCTBridgeModuleDecorator.m in Sources */, D029A199B240E746CD4A89367F3888FE /* RCTBridgeProxy.mm in Sources */, 690D37470240502DB939F1A3D7206454 /* RCTBundleManager.m in Sources */, 72BC0086E48E7F1B9CD8230A0B5D461E /* RCTBundleURLProvider.mm in Sources */, ED158AE6B16238DA0174AC1F4CC24510 /* RCTCallableJSModules.m in Sources */, 11DF589DF2952480FDAADA363B846A8C /* RCTComponentData.m in Sources */, 82422290D96A134494D0B160434C8A8F /* RCTComponentEvent.m in Sources */, B3D6AA3293A885840D24CA060CC25456 /* RCTConstants.m in Sources */, BA2CD9347081FBACC0B91878B7B5E2B6 /* RCTConvert.mm in Sources */, 83CB29BA147169FE17245CC493A65214 /* RCTConvert+CoreLocation.m in Sources */, 47828A13815F5A9030308D806C348B57 /* RCTConvert+Transform.m in Sources */, EA2E47AC9688F7DBDE75EC611BC68334 /* RCTCxxBridge.mm in Sources */, AEE9B28ADA2F2437AA2DF260FEA3B558 /* RCTCxxConvert.m in Sources */, 6CFEA0E6658C47D9BF410F09BEEF98CE /* RCTCxxInspectorPackagerConnection.mm in Sources */, 981417644439C651547814EC3FEA4928 /* RCTCxxInspectorPackagerConnectionDelegate.mm in Sources */, 77E6BC3FDEABA7B418C12B3E6F73A961 /* RCTCxxInspectorWebSocketAdapter.mm in Sources */, EE9B9C393116AD263A9A4FAF44923FCC /* RCTCxxMethod.mm in Sources */, F369A2BE769607CE5EBCEEAF694E2DCC /* RCTCxxModule.mm in Sources */, 0E25FDA99228EB53935D4EFF113CEA15 /* RCTCxxUtils.mm in Sources */, 42DF6A9D9D4AD244EA20DFAE81933530 /* RCTDebuggingOverlay.m in Sources */, AD0E3792C51B0E55F49C3558785D6863 /* RCTDebuggingOverlayManager.m in Sources */, D8D7FDEC5BB612E2631EE13379B9CF71 /* RCTDefaultCxxLogFunction.mm in Sources */, 372A6DE5D3A0C8A394F94769C9DDD521 /* RCTDevLoadingViewSetEnabled.m in Sources */, 17E53719BE7C9DAA239E3684B393CA6B /* RCTDisplayLink.m in Sources */, 6D47DA4D57A4DCB9E5DE1A5C727BE1FF /* RCTErrorInfo.m in Sources */, 623EB998C85B863F99092DF08C02A46D /* RCTEventDispatcher.m in Sources */, E6BFEF471AFCFF63E7C2D7BA1F89621E /* RCTEventEmitter.m in Sources */, 70EE94B444ED9B2CA09A5C36DC60E4D0 /* RCTFollyConvert.mm in Sources */, 70EDDB0D146F95B1139062781D9309BD /* RCTFont.mm in Sources */, D62F1180412478ECE031FBB09BB2415F /* RCTFrameUpdate.m in Sources */, 3EF492603A770B0DB5F8A5386D3128F3 /* RCTI18nUtil.m in Sources */, B7D7A68F6F82595F6811546D3F5FBE1F /* RCTImageSource.m in Sources */, C9D61E8CE5FBF6840501CFF665CEE31A /* RCTInspector.mm in Sources */, 0CCB0E1584227DBA1626298A85B5330C /* RCTInspectorDevServerHelper.mm in Sources */, 2A4E5E0880C9929B370D1941E5AE5F26 /* RCTInspectorPackagerConnection.m in Sources */, 8020DC79BC18FE1733F382110AA7F9BC /* RCTJavaScriptLoader.mm in Sources */, 758A73A007DBDEE27DAC1076057CB202 /* RCTJSIExecutorRuntimeInstaller.mm in Sources */, D924621A02EA0FCD7E776A06D2AA64C9 /* RCTJSStackFrame.m in Sources */, F102B4B1F081DCBE8CC11C5CCA367B77 /* RCTJSThread.m in Sources */, 86A39CCE3B6E3D293E0CE2C67781A81A /* RCTKeyCommands.m in Sources */, F8C937BE0952BA6404982198BF2D4323 /* RCTLayout.m in Sources */, FDDF426085594202FFB84A5A244FF421 /* RCTLayoutAnimation.m in Sources */, 45C8EF8702AA503775656087A507733F /* RCTLayoutAnimationGroup.m in Sources */, FDACFB7A65FFD5270F807735B27D1DBA /* RCTLocalizedString.mm in Sources */, 36F7E7BA67E5C0369DFC89F1ABB6F394 /* RCTLog.mm in Sources */, F0380AC81B8D35CAB3F13DB5217E64AD /* RCTManagedPointer.mm in Sources */, 0DB74DB42DFB69580318D842D74E803C /* RCTMessageThread.mm in Sources */, 27539AB858023E5C2410655150B37627 /* RCTModalHostView.m in Sources */, 804D9AADCDC8D1F1632F230EEFA6FBC0 /* RCTModalHostViewController.m in Sources */, E3D5DDDC6A93D60C763C6DADA4FD722B /* RCTModalHostViewManager.m in Sources */, 8BF6DF9CF222FB4CA16C9FDF00D1A4BB /* RCTModalManager.m in Sources */, A38A237FA362893EFF6CA7A3CE4E9F4E /* RCTModuleData.mm in Sources */, 8EE03FCDF67F4EE3290B517CFA87A7E8 /* RCTModuleMethod.mm in Sources */, AA62F32250BD7CC4CEFB9F7804B905E7 /* RCTModuleRegistry.m in Sources */, EC92E4BFA408ADBD17CCB1BB91FAD18D /* RCTMultipartDataTask.m in Sources */, F8097A05D32126DC5E6019E1759235FF /* RCTMultipartStreamReader.m in Sources */, F65B7A2D7B9A82CCB314BB9D9A79B142 /* RCTNativeModule.mm in Sources */, 61EEB363499D46E2DE3F8E3CC138995E /* RCTObjcExecutor.mm in Sources */, 3845DB49D557E86260B40B8530E9CBD6 /* RCTPackagerClient.m in Sources */, 70D9A7BB79BC5B0A87CC0B371A49D87B /* RCTPackagerConnection.mm in Sources */, 589F7F415548D3401ACB27D2FFD63E29 /* RCTParserUtils.m in Sources */, 5FD22DEF7D57A12E857927FC67567E05 /* RCTPerformanceLogger.mm in Sources */, 97DECF6E711E8B315123A6811DF80EC4 /* RCTPerformanceLoggerLabels.m in Sources */, DCDB89602CC48D42D8A5F52640A92C54 /* RCTProfile.m in Sources */, FA31953D65A12B9338B2363FCC9CC4C9 /* RCTProfileTrampoline-arm.S in Sources */, 963D64DBA5EFD7B49E439C0B7207E7AF /* RCTProfileTrampoline-arm64.S in Sources */, ED1E9F472F169CCBA252A035D6B4AAB5 /* RCTProfileTrampoline-i386.S in Sources */, 410A73DC736F237F5938D8093AA213C6 /* RCTProfileTrampoline-x86_64.S in Sources */, B566B0A2794716116031E71BC440EA2A /* RCTReconnectingWebSocket.m in Sources */, A19075D535E90DCF7736BF70C4512C46 /* RCTRedBoxExtraDataViewController.m in Sources */, 1D460FFC60AA03A2D4A41BB9313212B7 /* RCTRedBoxSetEnabled.m in Sources */, C0ACAA415557A9541189F735338188F6 /* RCTRefreshControl.m in Sources */, C14128969BE1C6AB075A68A94478FEA9 /* RCTRefreshControlManager.m in Sources */, 540362B438D8F765E484CAD9A99213E1 /* RCTReloadCommand.m in Sources */, 1DF173C0F1800A149A77357F3C58CFDB /* RCTRootContentView.m in Sources */, F3EE1091BDCEE12DBFD1B540E651C997 /* RCTRootShadowView.m in Sources */, D319199F318F9F518DF028E18D8052F2 /* RCTRootView.m in Sources */, 66F2E613C99822AF10887F865AF5A7D5 /* RCTSafeAreaShadowView.m in Sources */, 0FB25A9F0783B7F60859244B80A341AE /* RCTSafeAreaView.m in Sources */, DE4BD4F32114191405334654FC2E18AF /* RCTSafeAreaViewLocalData.m in Sources */, 2B1BCED5F526FBDAFE483AA8FD111456 /* RCTSafeAreaViewManager.m in Sources */, 1E19E82F288E0354AF7A0C508DE61035 /* RCTScrollContentShadowView.m in Sources */, 0CAEB04840483A8A5A72F4355958AD73 /* RCTScrollContentView.m in Sources */, 3BCC36BD3528A06FA613D3F0182969A9 /* RCTScrollContentViewManager.m in Sources */, 012747985355A39C6D1E6079BBE61B87 /* RCTScrollEvent.m in Sources */, A84C6C6ECCA510D53447DE2A92670783 /* RCTScrollView.m in Sources */, B3A3E3277EB3013588EAD596B1F050CC /* RCTScrollViewManager.m in Sources */, 6C5725243C44011456F42C6A14F7A0A8 /* RCTSegmentedControl.m in Sources */, 00A5EA92B12316AE199E2854F7DB8F9F /* RCTSegmentedControlManager.m in Sources */, EB47B8FFFB73B9925CF7F1B1E30AC084 /* RCTShadowView.m in Sources */, 744A6AFA4DD1A2C8C42B91DDE1A6F835 /* RCTShadowView+Internal.m in Sources */, B87B2669F479637ABFED52ED65EF2313 /* RCTShadowView+Layout.m in Sources */, 2A1E984533FFF0761823C77A5EF8C986 /* RCTSurface.mm in Sources */, 34E028B5C229E7B80E09BF21AA7F30F5 /* RCTSurfaceHostingProxyRootView.mm in Sources */, A867C1C27059E5551EBA984D27CDF4FF /* RCTSurfaceHostingView.mm in Sources */, B85768B4335CC10A4A576DAC90A71D93 /* RCTSurfacePresenterStub.m in Sources */, 9B4920B859EB68134633DC1B38607162 /* RCTSurfaceRootShadowView.m in Sources */, 20F4C041F77DE88B56616FB311D808D4 /* RCTSurfaceRootView.mm in Sources */, B09BA4F1254FE042646506FF2C79AE14 /* RCTSurfaceSizeMeasureMode.mm in Sources */, A28FA7E22D3A80A9EA98A5EA1DE6FF7C /* RCTSurfaceStage.m in Sources */, DC9E608807384B1F9324A5A88FF2AF45 /* RCTSurfaceView.mm in Sources */, 0370A8D6E25EA067E86213AF97FA908F /* RCTSwitch.m in Sources */, D6F3E2B8FE24B7FB165754CD936DDEC4 /* RCTSwitchManager.m in Sources */, DF52659D4B342F45BCDFC299BB9F3176 /* RCTTouchEvent.m in Sources */, 0E5654A31BD89F81B5627D63B794AAD3 /* RCTTouchHandler.m in Sources */, E1B6548D2CF64C426F0BF369865FBD90 /* RCTUIManager.m in Sources */, 9B7A6544F9E9805452DAC23861BEC337 /* RCTUIManagerObserverCoordinator.mm in Sources */, 11D8A53B5669E71051AED58511A1202D /* RCTUIManagerUtils.m in Sources */, B778958B3420C110829CAB8F36FD7C2C /* RCTUIUtils.m in Sources */, 551F583D79044D0E633AEC170C210B83 /* RCTUtils.m in Sources */, 9242F0F9E52CCA157276B60C7717847C /* RCTUtilsUIOverride.m in Sources */, 2AFADA9C8F0B22CDC7A0E2963AEC6AA8 /* RCTVersion.m in Sources */, 9D724EF3BBE139FA8C05D4528A894F0E /* RCTView.m in Sources */, E964DAEBFF053EC3DE9B68C14E78DEA7 /* RCTViewManager.m in Sources */, 24DD942C54FA5B87253413913DD836E1 /* RCTViewRegistry.m in Sources */, 508F6D748C3E70A9EEB8197CF7A2F71C /* RCTViewUtils.m in Sources */, 4DD05C5A058E1A60C86F8009B6D91B0E /* RCTWrapperViewController.m in Sources */, 8029584710A456EC5C67D4A4BB9A680B /* React-Core-dummy.m in Sources */, FA80E10B2923469227CEB02B29ABD5E1 /* UIView+React.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 3F49D730D34771920107D4D2669AFC9D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( A0414AFF72685EFA608465FD6F3C0855 /* RCTBlobCollector.mm in Sources */, C9DF4C4D56788006D3E45A2D743D5670 /* RCTBlobManager.mm in Sources */, 00C54E7CD50896090EF4E7278BA81656 /* RCTBlobPlugins.mm in Sources */, 7695111DF6B3428C79B8FA67D5C29F49 /* RCTFileReaderModule.mm in Sources */, 166EFABABADB56EE0ADEED83DF8BD9FF /* React-RCTBlob-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 46252E81ED1C361CFC4C994E6EE633FF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 0A84A0D6B6C2378A9F17CC60E5629981 /* RCTConvertHelpers.mm in Sources */, 8F981C056361D8BEB7739CC67BC494B4 /* RCTTypedModuleConstants.mm in Sources */, 6C992FA96B61EF3505BD53ACA873BFA8 /* RCTTypeSafety-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 50C8A679BB5D7BD9D7EEED98F207406C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 15A01C98D01F5E8CF5667E215EC11869 /* RCTAdditionAnimatedNode.mm in Sources */, ACE0A69608D1407DA250057C17E7281A /* RCTAnimatedNode.mm in Sources */, A5E697E3D36B4DEB0134CD065243FDDF /* RCTAnimationPlugins.mm in Sources */, CC6E3938A4EF0A6DB2B0D56ED41F4976 /* RCTAnimationUtils.mm in Sources */, E5E6E25B9472F6F0AF1255623F14E6A3 /* RCTColorAnimatedNode.mm in Sources */, 8295C73E52CD5C12A616EE97FE02478B /* RCTDecayAnimation.mm in Sources */, AB2A762779BA1CEB0922D08C0677AD46 /* RCTDiffClampAnimatedNode.mm in Sources */, 2AD655BCAFC873B439DC03D772B7A36A /* RCTDivisionAnimatedNode.mm in Sources */, A3C138B2295C7FA333A37D6504296970 /* RCTEventAnimation.mm in Sources */, 3438AB92F2ACE84B8CB6A8CFAF423105 /* RCTFrameAnimation.mm in Sources */, 425A1E0E35945FDF6A30686F549465E1 /* RCTInterpolationAnimatedNode.mm in Sources */, A82CCE9C3F6E085AF4F6CC7A71DFC0A6 /* RCTModuloAnimatedNode.mm in Sources */, 70F5A59001862BD0B1E8871F16584977 /* RCTMultiplicationAnimatedNode.mm in Sources */, D6914F306266D61018820AF2CBABBA72 /* RCTNativeAnimatedModule.mm in Sources */, 8387B15D94ACE3AB8A57F8580B22D08E /* RCTNativeAnimatedNodesManager.mm in Sources */, B27A11C4410553392C96AA713C78C35F /* RCTNativeAnimatedTurboModule.mm in Sources */, 164466B28EEB0ABA1B7B4750EA02412A /* RCTObjectAnimatedNode.mm in Sources */, 6C9BA8A8F1B09000220A1C6018049397 /* RCTPropsAnimatedNode.mm in Sources */, ED0D26A030DA133A07D84696D9FD9623 /* RCTSpringAnimation.mm in Sources */, 418AFE7E951FD4B006662D619F4BC0D9 /* RCTStyleAnimatedNode.mm in Sources */, 407C77D329B19C296DD48705A6D7B7EE /* RCTSubtractionAnimatedNode.mm in Sources */, B40152986DF0C62D2E28E405141D7CBE /* RCTTrackingAnimatedNode.mm in Sources */, 322902B35752EC592D5B4ED2C00D9393 /* RCTTransformAnimatedNode.mm in Sources */, EBFBA6DE22BAD2C406C2392366EC51BB /* RCTValueAnimatedNode.mm in Sources */, 0E58F200670891AE6FB10861BC1EEE46 /* React-RCTAnimation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 51792160622EDC05F03A3BD289C7A67D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( B965CFA26A338B7BF3BDE4F541A7ADE9 /* DebugStringConvertible.cpp in Sources */, 40F28A3F4BF66C4EF68B3035DDACDBAA /* DebugStringConvertibleItem.cpp in Sources */, A2E1B929FDB6C978EE68D7A8DAE051EC /* React-rendererdebug-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 52C37581A97E44EE0B8C295E6DD38CCE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5982D84D71BBA6ABEEA3A813AC63C837 /* ImageEventEmitter.cpp in Sources */, 774D516A59D21EC80472A65BB40B55D0 /* ImageProps.cpp in Sources */, 5F0D2CCE2513E3AD3AEFD8B5897BD3C2 /* ImageShadowNode.cpp in Sources */, E59E696DBBF7EBAE641CF83E785ACDA3 /* ImageState.cpp in Sources */, CC5BCB4CA3A1336C2B736EC0C18BDF49 /* React-FabricImage-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 53A2027EA4F55C6D53E6616B3FE1C32B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( CCE7ED5BBA97D0A5598471FC277F8AB6 /* RCTVibration.mm in Sources */, 34AE0A783C5465DB2FA5C2B7D50EECB3 /* RCTVibrationPlugins.mm in Sources */, E344034251B2B0C79981FBE2659E2ADC /* React-RCTVibration-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5CAAFADB20B88A58D6830F22D247F99A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 3A0218754CAC86A5243E1A54F5D96717 /* NSTextStorage+FontScaling.m in Sources */, C92E995FC44274E6EB6B58EB6B6E5A71 /* RCTBackedTextInputDelegateAdapter.mm in Sources */, B88D6486C89EAA9B8FA7B9BBAA935016 /* RCTBaseTextInputShadowView.mm in Sources */, A26AD378981A03977F8B5859FC2E3520 /* RCTBaseTextInputView.mm in Sources */, 4F65A3489B98C0252B66084467E96729 /* RCTBaseTextInputViewManager.mm in Sources */, 5D51E24D431131B975A541BE5699EFB4 /* RCTBaseTextShadowView.mm in Sources */, E47925115CBFC067E6C815ADAE6A56DB /* RCTBaseTextViewManager.mm in Sources */, 79F498AD66CF7B1E027685FA9B830981 /* RCTConvert+Text.mm in Sources */, 47A21E1BEF0354D40449C04B19F8573E /* RCTDynamicTypeRamp.mm in Sources */, 9D5BB979650E52C9D6EDC21113C22E8C /* RCTInputAccessoryShadowView.mm in Sources */, E838D80FCB87FDDD82E7D2764D8C2E8A /* RCTInputAccessoryView.mm in Sources */, C85AF2DA0E711B6D8061354E44155F49 /* RCTInputAccessoryViewContent.mm in Sources */, E0B886B9E9EDFC2C6DC982BD03453490 /* RCTInputAccessoryViewManager.mm in Sources */, 33752EEE3593427DDBA5D62BED59A543 /* RCTMultilineTextInputView.mm in Sources */, C1B26D9A55F1A2C8CDE164527BF69595 /* RCTMultilineTextInputViewManager.mm in Sources */, 301CDABF3FD039547D92DBDB38996953 /* RCTRawTextShadowView.mm in Sources */, 4BC3A1BE0555EFFE479D514DE9D87F02 /* RCTRawTextViewManager.mm in Sources */, 076814077F393DA76C02B2B98955F27B /* RCTSinglelineTextInputView.mm in Sources */, 45000A8D184E659305EBC4F052FE22DA /* RCTSinglelineTextInputViewManager.mm in Sources */, C2DF30B6DE01B7D903B28E6013811564 /* RCTTextAttributes.mm in Sources */, 587F3DEE36D4A28B892F91335A246DC0 /* RCTTextSelection.mm in Sources */, 9BE6267DB05B71DBB27C01E25769CBDA /* RCTTextShadowView.mm in Sources */, D403CB498CF79EC0939F733B153D0057 /* RCTTextView.mm in Sources */, 219B3B01BD518584F2A89A722BCFD0DD /* RCTTextViewManager.mm in Sources */, 6F63BCBD2B1E7B4CF5D5A7578A70108C /* RCTUITextField.mm in Sources */, 2625B35CEAEFA1B0EA467965A3330311 /* RCTUITextView.mm in Sources */, 54881BD4940AE80A54AFA4A41A9ACE01 /* RCTVirtualTextShadowView.mm in Sources */, 9DA7609D0CA7E74EC3DD6F2ECE3B75D6 /* RCTVirtualTextView.mm in Sources */, 81E86C9D8F20FB2F3B4462F3CCD54294 /* RCTVirtualTextViewManager.mm in Sources */, ED40B12F85AFF22FE31122D1ED1D2FC6 /* React-RCTText-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5CAEEB9F76D13B5B53752432675816A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 177DA7AB540346CDB555B61232F0C1EF /* JSIExecutor.cpp in Sources */, F736A3086A24F89EC27986F4F5DFE62D /* JSINativeModules.cpp in Sources */, 78F3EEC46C002EDAB30A6258F8ECB70E /* React-jsiexecutor-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5D0426A5A488845772E6948965C9D686 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4448631AF617AC7BFAE71481DEAE4867 /* RCTLinkingManager.mm in Sources */, 20F2FB8C633B8AAF924B03661CAFFC73 /* RCTLinkingPlugins.mm in Sources */, 9F77598A23E6FC5C8F7267848FA42DD7 /* React-RCTLinking-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 6821FD5A12B69581B081B1EB963284D6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8FCD1C8218809FF67978B99120C99DC9 /* React-logger-dummy.m in Sources */, A2EFB06C6482D772F8442F4C783752E5 /* react_native_log.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 6AEEE0DDA3DE93CC96C0825C9089FA44 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 6404467E34C533EC2006A9DB49333661 /* CxxTurboModuleUtils.cpp in Sources */, 72BF4275B8B3660B1CBC3F8945E499AD /* LongLivedObject.cpp in Sources */, 43120C286CDDA8285535926A403AA30B /* ReactCommon-dummy.m in Sources */, 7A2DCCD2975741E4941FF2958EF8D600 /* TurboCxxModule.cpp in Sources */, DAEBA537EB67618319D0FC4583FF7A6B /* TurboModule.cpp in Sources */, 9271349E8FDF5329205E712797561D1D /* TurboModuleBinding.cpp in Sources */, 4E75BA9FAFC8ACCCE5587D6145228C93 /* TurboModulePerfLogger.cpp in Sources */, 89B15B8D049992388A6BCF216AF8BE15 /* TurboModuleUtils.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 6E7F91AEE5AB822D742DD436C6F7CF22 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 75A362DACB9AD78859822092A79651B7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F39A7B4D3EA94DBC9F0D8A5266ED5CEA /* JsErrorHandler.cpp in Sources */, DA7F88713B1145113DA6A418AA6A57B1 /* React-jserrorhandler-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 798DF908E612E5F8F05490A8ADB42D63 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8B6D7EFAE33ACDC84C5716F89DB43685 /* CoreFeatures.cpp in Sources */, FF3BCD88224B32B38359A33CA2787889 /* jsi.cpp in Sources */, 01D487B3BCD02252EA46AD31A3AE88F2 /* ManagedObjectWrapper.mm in Sources */, 800168271BC4625A8BAE356763E5F578 /* React-utils-dummy.m in Sources */, 13635F0130E1586FD24F72C56AD22D62 /* RunLoopObserver.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 7B4904D3DA72A83F379DDBAE171BB0A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 21173C1FF076EA74CC2875A8451CD04B /* RCTInteropTurboModule.mm in Sources */, AC74571D81AF9246D9A46B8B069B9BB5 /* RCTRuntimeExecutor.mm in Sources */, 737485B0EC651803714A2412F1A1EFD5 /* RCTTurboModule.mm in Sources */, BD01F6099618E01DA2E418D865E8560C /* RCTTurboModuleManager.mm in Sources */, 2458B50A7D8382C89BABA674C834A9EB /* React-NativeModulesApple-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 7EBAFB8D3A23BDFF1BDD2DFFB0078930 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 24688A1F5DA03AD255685CF282C0B45E /* RCTAnimatedImage.mm in Sources */, C2812E54502D0AE67E89826DF1F68331 /* RCTBundleAssetImageLoader.mm in Sources */, 70BCDC41D1A0240B3FFE10DEC03C5569 /* RCTDisplayWeakRefreshable.mm in Sources */, AA91C034F80AC8439B59BE80A30E96CB /* RCTGIFImageDecoder.mm in Sources */, BD69072959AE8E10FB9E6B91DE1FE1FB /* RCTImageBlurUtils.mm in Sources */, 4094BC9DAC269411141A9BF211A0C1C1 /* RCTImageCache.mm in Sources */, 5F40E7EA0BF1196D0390F3DD1495FDE8 /* RCTImageEditingManager.mm in Sources */, 7148B8D601E67D9B8727775F7233F7FA /* RCTImageLoader.mm in Sources */, 65C80D5494BD3228D2AD6AAF37AD6EDA /* RCTImagePlugins.mm in Sources */, 38EBCAC6CBD066B63E56309C335B8733 /* RCTImageShadowView.mm in Sources */, 1B2038C09720EE3EF41A25166979A55C /* RCTImageStoreManager.mm in Sources */, 4DEEB3F59D5A65A8C1DA3BAA6B1BD2EC /* RCTImageURLLoaderWithAttribution.mm in Sources */, C9763A53EB913A90DDFD3B05F894F445 /* RCTImageUtils.mm in Sources */, 5223C8643C9453C6B98DFE69DCC9196B /* RCTImageView.mm in Sources */, C518D5794D6157C417922E2E4B2B82A6 /* RCTImageViewManager.mm in Sources */, 09AAD2EF48DD20C48D9ED5976230E59F /* RCTLocalAssetImageLoader.mm in Sources */, 97F384488C52BE0D4A9D53D345D00BC8 /* RCTResizeMode.mm in Sources */, 120634F36CBAC662040FA4FADC964386 /* RCTUIImageViewAnimated.mm in Sources */, 907AF22D8F8271E5F977F25DFA0F73A6 /* React-RCTImage-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 827ABC8E4C67904313262F0F24F4BE76 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 1E274E727DB799B01B0C75D68C9C1D4E /* FBReactNativeSpec-generated.mm in Sources */, 82B151FA407A5ED82238DE63FD119835 /* FBReactNativeSpecJSI-generated.cpp in Sources */, 9A35D386A3459053D8A2240EF17E13F4 /* RCTModulesConformingToProtocolsProvider.mm in Sources */, C8600F63A7EF1DE7EE7E9303EC941496 /* React-Codegen-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 83D9E4EBA58D2EF02EA7856C60C2620C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( A9A0682AC82CE2B25A2E0EEC1330EE68 /* Database.cpp in Sources */, 6110F4F96597CB3D4486AF424FDBC834 /* Database-batch.cpp in Sources */, DF91D11B9CE5FCD990B5344711241E38 /* Database-jsi.cpp in Sources */, 33E4E54947FB17B702F1DCAFD7B9F03D /* Database-query.cpp in Sources */, B8E0926005F78632DECE3D0E7A6B853F /* Database-sqlite.cpp in Sources */, C0AA8E5DC19580CD56E6741BA43B2836 /* Database-turboSync.cpp in Sources */, 5FE16776440A3CFC53E25FC6F8F3D8B7 /* DatabaseBridge.cpp in Sources */, 60A3E51312E73BB59DFED0E1D0286A79 /* DatabasePlatformIOS.mm in Sources */, 6C387AF206A5A29A99340C38D35138DA /* FMDatabase.m in Sources */, 54F90A747FD892839E06E26F8B1DA351 /* FMDatabaseAdditions.m in Sources */, 2185C70869CA8F16DEF5598671117271 /* FMDatabasePool.m in Sources */, FBD75089B4755555A82486ACFDC1F103 /* FMDatabaseQueue.m in Sources */, A841E4574588119BFAC4C1ABBE42E3EC /* FMResultSet.m in Sources */, 98645489B7C5F09DCAA5CDE2C2D33D32 /* JSIInstaller.mm in Sources */, E31A87C273F43A0F04ED6AE8C2C562ED /* Sqlite.cpp in Sources */, 7BE465B58FA44A71A52E4F29C3CCD68D /* WatermelonDB-dummy.m in Sources */, 59917156FF1333C1DBE02BE01BC71BA5 /* WMDatabase.m in Sources */, C838669A2A7E0BED3B5A3636674F8736 /* WMDatabaseBridge.m in Sources */, 39048CB54388C7559E2F723650C145CA /* WMDatabaseDriver.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8504E2D60624339B89BEA2A6F41621A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F76E0AB3B56CF65826F916918C8E3B05 /* demangle.cc in Sources */, A6B176A4E944BC9B06A1C03CD10681A0 /* glog-dummy.m in Sources */, 89D89CF3D8BF72B6526EA0FF4E8FC1F8 /* logging.cc in Sources */, E66C0C4875358F85C28B08F431A9A93B /* raw_logging.cc in Sources */, B945ECC66F0C651040D88DB13B191014 /* signalhandler.cc in Sources */, 5774E5CBA2D497BC21DCD6A7426FD492 /* symbolize.cc in Sources */, 35C6AD1DDC48BCD69B6A44257803179F /* utilities.cc in Sources */, BA3ADF4A8E40C8AB0FBC1B0A393B3891 /* vlog_is_on.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85B1519F88251F0A76A1EE2F46A80D49 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B7FB9FFC77C456D1D957E910DBCE93D /* ObjCTimerRegistry.mm in Sources */, DF6D6AE3A41D68BBB6934A6215CF0543 /* RCTHermesInstance.mm in Sources */, 54203B03046FBB5E67F2A914914F1F44 /* RCTHost.mm in Sources */, 66954121FFFD6C5C2B418E27FC43B4F7 /* RCTInstance.mm in Sources */, 690FA340A00937B92D570D6C37F9F0D2 /* RCTJSThreadManager.mm in Sources */, 90BBE9AC94E874862E831FE5AE51A577 /* RCTLegacyUIManagerConstantsProvider.mm in Sources */, 4935A609FC34FA352D3C5B22EE93C6D9 /* RCTPerformanceLoggerUtils.mm in Sources */, D851A600C947B91F7DB5B09DD6367D2B /* React-RuntimeApple-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 92A0F6DC3B64F90B399C60EE8FDEB83F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( A56D6EAD62CADD0537EB486ADFDCFA82 /* RCTDeprecation.m in Sources */, 15FEAC3E79CD8CAA28028308AEFFB10E /* RCTDeprecation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 99D0414F490F294A46CABFA9F84F2C57 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 728B39A23F003D9E9FB6D384C4B8EDBB /* BridgelessJSCallInvoker.cpp in Sources */, 71AF7D9527D112BC4D62C7A8A3A7AF60 /* BridgelessNativeMethodCallInvoker.cpp in Sources */, B58A2402967EDAD0B86779DF77DEA32F /* BufferedRuntimeExecutor.cpp in Sources */, D0EFDBC75FA87E68439E6A39448AC532 /* JSRuntimeFactory.cpp in Sources */, E743F863A0F857A5DA6A7F1E5D813BCC /* LegacyUIManagerConstantsProviderBinding.cpp in Sources */, C7C573418A056B8AB963F9493EA16B0E /* React-RuntimeCore-dummy.m in Sources */, 317D8B85EE8D4F5553A959EF2A083728 /* ReactInstance.cpp in Sources */, DE3E9A5EC28083C37C4F79EB720E4C84 /* TimerManager.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 9DF643F20AEF406F2B1272098FD69149 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 45E5CEDEBDBDB3272D62BF52105789CD /* CoreModulesPlugins.mm in Sources */, E0616E92063B1D7177AD59E30BF80474 /* RCTAccessibilityManager.mm in Sources */, C20E436D91DA5203A47F3D6F3E562C6D /* RCTActionSheetManager.mm in Sources */, 0D74FE5F1E9448343E13242159F63F6C /* RCTAlertController.mm in Sources */, 6D36A6FFC2488415258EFA1832790E55 /* RCTAlertManager.mm in Sources */, EE7A0A4956CB8103954A69F4355C44A9 /* RCTAppearance.mm in Sources */, 28CA6DD3D240C72630DDA20DEA46F245 /* RCTAppState.mm in Sources */, 7345128E1576262D321085D0675568A8 /* RCTClipboard.mm in Sources */, 11B0E7FB7ECA7915B7A9BE59DEAE0A2C /* RCTDeviceInfo.mm in Sources */, DE170A39631C63A89F2286B7AFBF7E16 /* RCTDevLoadingView.mm in Sources */, 5DDFBA8FE4985DDF178BEB5B73F79F01 /* RCTDevMenu.mm in Sources */, 0EEB24CECB61AF303B67DD51759484C6 /* RCTDevSettings.mm in Sources */, A1F8338949D8668927E275528CCCC3B4 /* RCTEventDispatcher.mm in Sources */, 069B050AFB16542D9675E9245FF16FC5 /* RCTExceptionsManager.mm in Sources */, 050FE1A6E2E7D773A48B1F4BED2FC450 /* RCTFPSGraph.mm in Sources */, 74B6269F717A43150AE71628996EC8FA /* RCTI18nManager.mm in Sources */, 20BB7CDCC08AFE49FE5BDA569D34CA7F /* RCTKeyboardObserver.mm in Sources */, 1954536D05D0919B8EBF384663613170 /* RCTLogBox.mm in Sources */, 8BE990F2C07DD454945949C7EF8FBBE1 /* RCTLogBoxView.mm in Sources */, 882AF9DE6433B759F7BD1EDACDCF0024 /* RCTPerfMonitor.mm in Sources */, 245A6AC43C8E566986398F8A0295848A /* RCTPlatform.mm in Sources */, 4FF26431AB9C13B861E5BF2CAEA82330 /* RCTRedBox.mm in Sources */, CC21D14AE3380035230F2E4D94C48724 /* RCTSourceCode.mm in Sources */, 19965E9C8B6A83E60822324223B9E1A0 /* RCTStatusBarManager.mm in Sources */, A7CD6D2F66EA3F1BF1E4E1A3D82CDA24 /* RCTTiming.mm in Sources */, 0E3B2C94F912663229BBBB5B4D6303A7 /* RCTWebSocketExecutor.mm in Sources */, EBA1024BBBA34339B28107E04BE06DDD /* RCTWebSocketModule.mm in Sources */, 20AA75C455914560C441E1A6A7AB2FBE /* React-CoreModules-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; AA67040A808097DA613BC1AF4AECB0B9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F140F9B4A685AE28A89CA9D9752DA6F4 /* React-runtimescheduler-dummy.m in Sources */, 7F87FA23242BAAC6C75BF03E0C3F1BEA /* RuntimeScheduler.cpp in Sources */, 106F3109E3A54C7F0C67DABAFAD2B5A0 /* RuntimeScheduler_Legacy.cpp in Sources */, B3ABAB986361D498B16189ACBD3E9EA5 /* RuntimeScheduler_Modern.cpp in Sources */, 48089FEC790CC6100CF69630720FDFAC /* RuntimeSchedulerBinding.cpp in Sources */, FAB9F94A3091F4A570F19CB366F46516 /* RuntimeSchedulerCallInvoker.cpp in Sources */, FBD79427FC052DF19357B1FE491B6D93 /* Task.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; AB35217B6C3003BC3E64ABF40AB236FE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 6918BE63EE0EE0EDEE58BBB12179E846 /* RCTDataRequestHandler.mm in Sources */, 19CA3B1362DA1810EFB9E88C070B0610 /* RCTFileRequestHandler.mm in Sources */, C5875E99005BE017DE24E9F217EA362F /* RCTHTTPRequestHandler.mm in Sources */, 09D436AE529D72CDC3C5268A5EFA9903 /* RCTNetworking.mm in Sources */, 7C5E0AA1A0D766AEFDB5C3F5FF6942F9 /* RCTNetworkPlugins.mm in Sources */, 8A79A8939884686638CEF48F3434E6AE /* RCTNetworkTask.mm in Sources */, 68AADA5DEBA7F22FBDA95B379E595DB4 /* React-RCTNetwork-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; B85C4FF0078BD4F65D0B97C954FCA723 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 126FD381EC013EB7F76745BF6B3959FF /* AtFork.cpp in Sources */, F689FBD38D86423A5C0CA8860800DB03 /* CacheLocality.cpp in Sources */, 27BEF09F1B06C91F5C15ABC5294F5A05 /* Conv.cpp in Sources */, 0FEE31C3F9AD01261144C17B9456649D /* CString.cpp in Sources */, 6DE9B9D9006DC5CA4ECA2D53AACB958C /* Demangle.cpp in Sources */, 7C0832F738F3B45D9B194C3729757621 /* dynamic.cpp in Sources */, 31210B5DC141C8A8CD84829A977225C2 /* Exception.cpp in Sources */, A01DF6EC80AEF728DCC406662A246C8C /* F14Table.cpp in Sources */, A4A4022B861D7CB000B2E7AD4ADAF9CA /* FileUtil.cpp in Sources */, AB4EFCE36686D94BCDFA88932177E82D /* FileUtilDetail.cpp in Sources */, 8446DCAC58446356C7F6D58717A0B41C /* Format.cpp in Sources */, 3EE52474DA38D7BC3D6AD0E51F15EBE0 /* Futex.cpp in Sources */, 12F715ECB2D5A07ABA04F56405B1F80E /* json.cpp in Sources */, C536D1DF09153CABFB88C9BDA95EAA1E /* json_pointer.cpp in Sources */, ED39B921713470029BD17D4E33380B52 /* Malloc.cpp in Sources */, 77D525A44C69C742FB01F240990E6057 /* MallocImpl.cpp in Sources */, 272FBEB7CB6CF2763CAC1A880569A587 /* NetOps.cpp in Sources */, 23FE66BD7B87FE4B286A4773B14F1309 /* ParkingLot.cpp in Sources */, 86C2CD9FB54FB1F2AA9CF4F3D84578E4 /* RCT-Folly-dummy.m in Sources */, 11AB7A2E0F4DA784CFD4F91F3B078693 /* SafeAssert.cpp in Sources */, 49D3466638B3E08EDC8AD67760E4DFF7 /* SanitizeThread.cpp in Sources */, F97D444DBAEAF3A5C876EEFA7FBA1A44 /* ScopeGuard.cpp in Sources */, 20C78373363E4FE8FD4F47D5BA774E31 /* SharedMutex.cpp in Sources */, F54F56CC1E8D4C92243DDFCC50ADF87B /* SplitStringSimd.cpp in Sources */, 33B60CFA904F8D641ECC43A55E9EAEAD /* SpookyHashV2.cpp in Sources */, EB8D31492F4B85D40BA5EA1861C0742B /* String.cpp in Sources */, A8B268A6AD50300155466F4EBFE5220B /* SysUio.cpp in Sources */, 73AA961A1CF8EC1B0DDF4D53963928FB /* ThreadId.cpp in Sources */, 1161007E9F6AE05B1C1F1911C7E44E76 /* ToAscii.cpp in Sources */, 595CFBAE163B26652CF24E4EC2D1CF08 /* Unicode.cpp in Sources */, 7C4B2259B1758C2D9AE4D51C5762E6F1 /* UniqueInstance.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; BB8C3A27E7A75C4EA178CD713C13DB06 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F8E1AB2A19BB2FCCD643BFF425B2DA3A /* ExecutionContext.cpp in Sources */, 173E5B38A957B127E5311171245424B2 /* ExecutionContextManager.cpp in Sources */, BEE20927650F0E34B770955423009032 /* FallbackRuntimeAgentDelegate.cpp in Sources */, 63F74B9371E02FCFFD3A99BB3244D79D /* InspectorFlags.cpp in Sources */, 1315D3EE3476373DEAB746B56511B323 /* InspectorInterfaces.cpp in Sources */, 0260211AC75157F22C8A580DB42FCBD2 /* InspectorPackagerConnection.cpp in Sources */, 799DB343D6D2A06C4860A8F11EC37FD1 /* InspectorUtilities.cpp in Sources */, 48E2241DFAEE52BEE4D2F3D2C44C5ABD /* InstanceAgent.cpp in Sources */, FBD08445396B14C26414793EBE1D352D /* InstanceTarget.cpp in Sources */, 611F097A4869D5565DF7C9B9354D8D0B /* PageAgent.cpp in Sources */, 865103DABCB9C2CA4DA86FE8311B4AFC /* PageTarget.cpp in Sources */, C828B700D5250C25780C5E58917B34B4 /* Parsing.cpp in Sources */, D39F47151D6CAFF00BA7EA53C31DEFA8 /* React-jsinspector-dummy.m in Sources */, 32CB16366592B859A428ECFEFEEA5072 /* RuntimeAgent.cpp in Sources */, 62444E4A9DF335C2943D6864448533D4 /* RuntimeTarget.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; BC9D5D34749A7A7BA7B3E8BAA001423B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 1AA0576DF9AF85EFA7E299D94B5C3B82 /* MapBuffer.cpp in Sources */, 04DA5067488F0CEF42FA792DB385DE48 /* MapBufferBuilder.cpp in Sources */, 5BCDE01BA0D17F0DAD52430823D76AE3 /* React-Mapbuffer-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; C1CCF5380F13156FD54A244ED552853A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 13691F404B16F303025DBD6AB3558377 /* React-debug-dummy.m in Sources */, 1870A74C16D312C74C2956A5EDBFFA89 /* react_native_assert.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; C28D2750CFD2016BEE211A824D3BDCE3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 696574E499A1754A5256C14C2130648B /* AccessibilityProps.cpp in Sources */, 5E57BD5B12A2E5D8A4784FF8838DE6F7 /* AsynchronousEventBeat.cpp in Sources */, 3C062861BE19C56482F00235234E3774 /* AttributedString.cpp in Sources */, 560154C7130C73C57C3296EBCA35D2AE /* AttributedStringBox.cpp in Sources */, B79CBEB0DF0D5B2BB1CA370C45ED444B /* BaseTextProps.cpp in Sources */, 0FBE1DE34BDFE9B0C85542DEB581D4B6 /* BaseTextShadowNode.cpp in Sources */, E6018F88579345128C47ABB20076E368 /* BaseTouch.cpp in Sources */, A62607B1613E845DC2045E01320BCFBE /* BaseViewEventEmitter.cpp in Sources */, 59979756F484B99D5385635F11BD5882 /* BaseViewProps.cpp in Sources */, 2E9BC3BAD893393322285BF3C0382710 /* BatchedEventQueue.cpp in Sources */, C3A9C328C82327A71B8E84B9D9953642 /* bindingUtils.cpp in Sources */, 2629FBFD880EC26BC47A0CBDE2C88230 /* ComponentDescriptor.cpp in Sources */, C6928A6A1531FA166407A1A84E0D76D8 /* ComponentDescriptorProviderRegistry.cpp in Sources */, 5C19BB5F6F8D75D7F453899B49714925 /* ComponentDescriptorRegistry.cpp in Sources */, 8E1B5E2097D0875A90955BF49D724F19 /* ComponentDescriptors.cpp in Sources */, 4BD0C3A0B27003C1E207962093B4CA8C /* componentNameByReactViewName.cpp in Sources */, 4BD9752E8ECC57A539310794E73FE821 /* Differentiator.cpp in Sources */, F03496F8445E3AACE9451043A837CADE /* DynamicPropsUtilities.cpp in Sources */, 77DF418FF614BFB9681632ED6F31C37C /* EventBeat.cpp in Sources */, 402C44DF036C52575614FBD787E15482 /* EventDispatcher.cpp in Sources */, B8E580ED62C6E906A4E12DF1A29A578A /* EventEmitter.cpp in Sources */, DDEB7BAACD5EDCC03E4CC411477A9161 /* EventEmitters.cpp in Sources */, ADB44688E69516386D389D1DFD996878 /* EventListener.cpp in Sources */, 63E0D62908E04B6775049890FBFAB50C /* EventLogger.cpp in Sources */, 7DEA6D0B866F977377D21AFFAD5E2745 /* EventQueue.cpp in Sources */, 7556CD97341C849DE32E85BAC75540C7 /* EventQueueProcessor.cpp in Sources */, 62DE40C34FB60729BBE1B86AC6E785F3 /* EventTarget.cpp in Sources */, 86D02F0FB4C9CBB82EC56980E53B40A3 /* ImageRequest.cpp in Sources */, D1BBFFF4257883AE32ED7139FD296BE6 /* ImageResponse.cpp in Sources */, F52BD1C855995DB98A32185DB7BE9145 /* ImageResponseObserverCoordinator.cpp in Sources */, 908691D6E6A6240D9BC651336C71B697 /* ImageTelemetry.cpp in Sources */, 3C38C4F44AE4F93F0E9A51E07978DA24 /* InputAccessoryShadowNode.cpp in Sources */, FE9A7BCB54E09D6B3715DF452B959454 /* InstanceHandle.cpp in Sources */, CA842D589D81256002BBC46FAEDD0DC2 /* LayoutableShadowNode.cpp in Sources */, 72A0C6D8AACB0161DD9A9B7B9BD3AB0C /* LayoutAnimationDriver.cpp in Sources */, 6335D95DB076B946861FDF0B6504F01F /* LayoutAnimationKeyFrameManager.cpp in Sources */, A67253AF093EFDC09F0995BC70346F69 /* LayoutConstraints.cpp in Sources */, 24707196E335E65B5121B91C0FD70449 /* LayoutMetrics.cpp in Sources */, EB135E9D630C14745D6176C4C75F6E68 /* LeakChecker.cpp in Sources */, DA8147A7DA1E5F9AB6671763701F2FEF /* LegacyViewManagerInteropComponentDescriptor.mm in Sources */, 8CB4AD3BD8F8733099DBD330A38BF9BD /* LegacyViewManagerInteropShadowNode.cpp in Sources */, 3882ECE408421957CEFD2A0225E9E697 /* LegacyViewManagerInteropState.mm in Sources */, FF54B55BA08CEBF4015B4B981EEB17F2 /* LegacyViewManagerInteropViewEventEmitter.cpp in Sources */, 76AE3689066A97D1B232A3FAB86C2A54 /* LegacyViewManagerInteropViewProps.cpp in Sources */, 81C6BB24D1610AAA396418710B52389B /* ModalHostViewShadowNode.cpp in Sources */, C429AED5A28ED5CED26E118A328A138C /* ModalHostViewState.cpp in Sources */, B32A5364142E8C32D36579A8084F970C /* MountingCoordinator.cpp in Sources */, 4D9164B681F2EA242314F90B395F768B /* MountingTransaction.cpp in Sources */, 7A85844B8ABB2A92B190EC2C45988C25 /* NativeComponentRegistryBinding.cpp in Sources */, 88730960BF591557697D68FC435C89D8 /* ParagraphAttributes.cpp in Sources */, 2EF5DEA6EC39762BEF76A15B2340FABD /* ParagraphEventEmitter.cpp in Sources */, D0F6F87BD68C9516D0D0142646B8C905 /* ParagraphLayoutManager.cpp in Sources */, 429C7D697593A320F8A70F5357D97BB7 /* ParagraphProps.cpp in Sources */, BFDD5C42EECE46A1E9056A6A35207FA5 /* ParagraphShadowNode.cpp in Sources */, 535E4E67E1D010242C7EF421F212EEC3 /* ParagraphState.cpp in Sources */, E298A4C07A8B16A83998C5FFCCD88905 /* PointerEvent.cpp in Sources */, 546A1106CD03E7BD183BB275B5577D63 /* PointerEventsProcessor.cpp in Sources */, EA48224CDE82427964F18FAEB2358A26 /* PointerHoverTracker.cpp in Sources */, D384DF0C480D44CCBCA312A430085AE7 /* Props.cpp in Sources */, 006EBCAFA23C3844F04C940A4F313410 /* Props.cpp in Sources */, 0A1065F756F05AE906969E13DD4A1346 /* RawEvent.cpp in Sources */, 1D24AD6815FB29F4B8A6C10D6E9101F8 /* RawProps.cpp in Sources */, 4383BE16C5EE46F875BF5D8A39EDBC44 /* RawPropsKey.cpp in Sources */, FF172C3FABCC4E7394876885F64E36D4 /* RawPropsKeyMap.cpp in Sources */, 80F7C5E7A9B1BD9CA80E7AC9692EE98A /* RawPropsParser.cpp in Sources */, C8FA2EB937D2445F1741FAA0ACBA9FD7 /* RawTextProps.cpp in Sources */, D31B9E80DB2BF39407F507F3B5723506 /* RawTextShadowNode.cpp in Sources */, 45D9ECFD2F6AE5C476BF788B807F3F71 /* RawValue.cpp in Sources */, 86E509A8309D2C829F649CA6E17F8856 /* RCTAttributedTextUtils.mm in Sources */, DFE0FDDAB89D558D7E5C4FE84CE8A831 /* RCTFontUtils.mm in Sources */, 536E2F0CD05BB0CA231C990AC198EC81 /* RCTLegacyViewManagerInteropCoordinator.mm in Sources */, 79BC0736343C7F0BB40CF262A7093547 /* RCTTextLayoutManager.mm in Sources */, E15E8C2E4FA6E09EBE76FB1CFD27499C /* React-Fabric-dummy.m in Sources */, BC6FBBC737C9E7B5B1DFA21DF4EB9A0B /* RootProps.cpp in Sources */, CB16BF4D09FCFAD2BA7261CBE4357028 /* RootShadowNode.cpp in Sources */, D1FA44DE7190AAFE62E2857974D5BE69 /* SafeAreaViewShadowNode.cpp in Sources */, D8B93E14456B42603AE3567F8E2A37E0 /* SafeAreaViewState.cpp in Sources */, E936778E2B61A9184F53E9FC6CF0D106 /* Scheduler.cpp in Sources */, 32BE4A83D48CA291030133CE99AEF6E2 /* ScrollViewEventEmitter.cpp in Sources */, 948EF6B8544D6C95F6864DB1E234052A /* ScrollViewProps.cpp in Sources */, 492D93F6A4D1DB5878AEB8AAC86F52F8 /* ScrollViewShadowNode.cpp in Sources */, EF4FE23B38609E50DF2186EAA3475E5A /* ScrollViewState.cpp in Sources */, BFCA21C2893743BB4DA5287E067E2CE8 /* Sealable.cpp in Sources */, AE5CCCBE05510A4562480531D6A64515 /* ShadowNode.cpp in Sources */, DD368E98EC732E72C2F1A4E3DAD73864 /* ShadowNodeFamily.cpp in Sources */, 6427E7DD7ABD9B4675A8B29906B1CF26 /* ShadowNodeFragment.cpp in Sources */, 3105C7328DF6EBCA7C0B524D18848E9D /* ShadowNodes.cpp in Sources */, 08DB5A93E58A2B2DB9557F5578E835D2 /* ShadowNodeTraits.cpp in Sources */, 057F908327F36BAAE35535CCD3AF5CD1 /* ShadowTree.cpp in Sources */, A4B4874755DEF120B2A86C12140EE4D5 /* ShadowTreeRegistry.cpp in Sources */, CCE444B1936ACA47326F4959A4A1172B /* ShadowTreeRevision.cpp in Sources */, EDE01A5FA2DF59BC41E22117D6B82708 /* ShadowView.cpp in Sources */, 8BAF82EA2FC8B67DBAE9B4A39E32ED85 /* ShadowViewMutation.cpp in Sources */, 0F9E6E4C19935E040E25D1CF43DF474E /* State.cpp in Sources */, 074543D7B648948577CE19FF74825D59 /* States.cpp in Sources */, 169D881DA6F98A74ADBAB85239E51495 /* StateUpdate.cpp in Sources */, 43E016CA6E6F77F9C2291E94022B6221 /* stubs.cpp in Sources */, D307D309F89DA135DDA8A239255D00ED /* StubView.cpp in Sources */, 39B0694CF79D9D40DA4409C513304D3C /* StubViewTree.cpp in Sources */, 7848F7B01636FD30500F733C3953D042 /* SurfaceHandler.cpp in Sources */, B1E3D66107E149510D1AF628543FED56 /* SurfaceManager.cpp in Sources */, F242AC86651355EE9C81409CB11CF29E /* SurfaceRegistryBinding.cpp in Sources */, 71B25172A6FBB06AE6F0AC803A1BB03F /* SurfaceTelemetry.cpp in Sources */, 2FA70C774952798EBD8ECDFAAE8D0EF1 /* SynchronousEventBeat.cpp in Sources */, B8C3FEE7D7B3755A0BF1C463308725ED /* TelemetryController.cpp in Sources */, 0AE3B42013A6EC4A1BDE21E82E39800F /* TextAttributes.cpp in Sources */, 482FA3433C45953974AC26E96444DCD6 /* TextInputEventEmitter.cpp in Sources */, E36699C263918D6CD3CC8D53D29B1CC0 /* TextInputProps.cpp in Sources */, 89061AAC16A9D8755BC29388594191C0 /* TextInputShadowNode.cpp in Sources */, CCE6526143D52DD765D5B173B8EFB74D /* TextInputState.cpp in Sources */, 834FA1181483059D08BB31BF631CB418 /* TextLayoutManager.mm in Sources */, 4ABFE864F920B579C3AADCD9165F0346 /* TextMeasureCache.cpp in Sources */, 8DB2904D172809FA82F53D6DACB6770C /* TextProps.cpp in Sources */, 1A4E0BB39256B618590C38FE0F367BE7 /* TextShadowNode.cpp in Sources */, 6BC9C5D894D55A6667A506FC47D1F83A /* TouchEvent.cpp in Sources */, F3175308C1003660267E09A833D010FB /* TouchEventEmitter.cpp in Sources */, C9CB9FE580283AD17838DF762300199B /* TransactionTelemetry.cpp in Sources */, 4986BE8FF75971161CE4825DE3E4F07B /* UIManager.cpp in Sources */, B93CE3FE617101FFA26C79EF78C145C4 /* UIManagerBinding.cpp in Sources */, EFDA386A564A1209D1F07193AE52EE6A /* UnbatchedEventQueue.cpp in Sources */, 98FF24FCA7950C2F975BB4096B9B26E7 /* UnimplementedViewComponentDescriptor.cpp in Sources */, 0C0B183FCA29DC956E1A1B894DE839D8 /* UnimplementedViewProps.cpp in Sources */, 0BE3BABD266439B755BB51D2E6522C93 /* UnimplementedViewShadowNode.cpp in Sources */, ABC708190BDCBD59B0B4A86CE919BA1D /* UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp in Sources */, B20853E1492882F9DFBA5AEE732230CC /* UnstableLegacyViewManagerAutomaticShadowNode.cpp in Sources */, 5FE63D5DEED1E0D7E9211C479F3DBBC8 /* utils.cpp in Sources */, 92F9C861E9C7D42BF5CBED7EBFC77D72 /* ValueFactoryEventPayload.cpp in Sources */, 6BA23844D9DCDD1AEF37DB5060151CAF /* ViewShadowNode.cpp in Sources */, 32D32237A0CEB8E068046F1CF42E4E8B /* WeakFamilyRegistry.cpp in Sources */, F54989E7C3ECBAA533AB0403B431A6DD /* YogaLayoutableShadowNode.cpp in Sources */, 2EA1CF569CEB1BE9F7565DA20EAA2F3E /* YogaStylableProps.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; C36899A216C6A2B189B53F2609162A18 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( DE955502F25186EF5AD32CC67482739B /* AbsoluteLayout.cpp in Sources */, 7C563026B579F20E0D207D038BBB1E5E /* AssertFatal.cpp in Sources */, FEEC6DC9DB1C67C87F3FAAA274B199CC /* Baseline.cpp in Sources */, DC04153187DA66719B11FFBCED9AEA12 /* Cache.cpp in Sources */, 9F22899D6776281D1CD11358A63C7D31 /* CalculateLayout.cpp in Sources */, CA684AA0DA0CFE870A28282C20B5585D /* Config.cpp in Sources */, 0A375EA2429F646CCA545A8C0D177863 /* event.cpp in Sources */, DECBCF943B2007810250A795467B4DB6 /* FlexLine.cpp in Sources */, B2912AFCB904C759106782657EFDC5C9 /* LayoutResults.cpp in Sources */, 907EB0B80C8BE1DA8C300AA92CB364A0 /* Log.cpp in Sources */, 54B2697DDF8B682EDCF00390B7027AD0 /* Node.cpp in Sources */, BD9F5BFFA46041D4E554AC866B630F26 /* PixelGrid.cpp in Sources */, B05F1E0A450430FCFB47781C9C7B7E7C /* YGConfig.cpp in Sources */, 32B14C8CE62B0F19D8FA1206C467111D /* YGEnums.cpp in Sources */, E820B7A84455768483923BE4CB7E895C /* YGNode.cpp in Sources */, A2DABF69571289A07D4949D5B6B732B1 /* YGNodeLayout.cpp in Sources */, 0663905B64268796E97AEE20D0DF5F57 /* YGNodeStyle.cpp in Sources */, 5DB693C55C2912ACE4C601D9D4397DB9 /* YGPixelGrid.cpp in Sources */, 357660135E7900222582CBEE62180032 /* YGValue.cpp in Sources */, B6ED23A64D2504CDB6B64CF944092AED /* Yoga-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; CE36F0369ED0C62B7A92EE0A3470F4D6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( C4730E88D130D0B7B7B6AD61C046C45D /* PlatformRunLoopObserver.mm in Sources */, 6271EFFBCD61B9CE0F00F1B52F46BCB5 /* RCTAccessibilityElement.mm in Sources */, E6EB7B76986AE0D3873CA9441B399E76 /* RCTActivityIndicatorViewComponentView.mm in Sources */, 45F785E501BFD13E844D382A1F001EB9 /* RCTComponentViewFactory.mm in Sources */, E6B3C3E594F4BF128654E22C4B19807C /* RCTComponentViewRegistry.mm in Sources */, 4BF3BD19BA78CB09A0B90727F60C8EBC /* RCTDebuggingOverlayComponentView.mm in Sources */, 374767F9EA7457BFA37FF3114B4950F9 /* RCTEnhancedScrollView.mm in Sources */, 026D5B5D71D8CFF7B02A6F9E1EEA6B5D /* RCTFabricComponentsPlugins.mm in Sources */, 620070F4FB15245C68AB13C535847EE7 /* RCTFabricModalHostViewController.mm in Sources */, 7DF2C6E7CD4B2614333080F4D18991F9 /* RCTFabricSurface.mm in Sources */, AF8A57DD74A29F065EC08C1171432681 /* RCTGenericDelegateSplitter.mm in Sources */, 919E20B121E45FB70B18B13A38BD4371 /* RCTImageComponentView.mm in Sources */, 1D3F9F242ECCE36DDFD697B08B9C28E2 /* RCTImageResponseObserverProxy.mm in Sources */, 552D684A410FEFD68CFC05695C8A7025 /* RCTInputAccessoryComponentView.mm in Sources */, 20EAE28B44F5C9DE96EC1A6F88B62226 /* RCTInputAccessoryContentView.mm in Sources */, 755285DD5B651A2374659E51434CAD11 /* RCTLegacyViewManagerInteropComponentView.mm in Sources */, F7E4395AE1128CA640E2737A237DA346 /* RCTLegacyViewManagerInteropCoordinatorAdapter.mm in Sources */, 12F481159DC1895DF2BC2595AF7AF275 /* RCTLocalizationProvider.mm in Sources */, A7F1FBD3434006B07373E5777C0EC0EB /* RCTModalHostViewComponentView.mm in Sources */, DAA86EAE8591A539EC9709B9AC8E4881 /* RCTMountingManager.mm in Sources */, 58733DF826D51EAEC7CA3324769E06AA /* RCTMountingTransactionObserverCoordinator.mm in Sources */, 82ECAFB8B430AB7AEE8A186E85BB87F2 /* RCTParagraphComponentAccessibilityProvider.mm in Sources */, 198A3B5F43844F6B78F0A7BC96A9EDE7 /* RCTParagraphComponentView.mm in Sources */, 9B71EE8ECFF2BAFFC391738C754A5A7B /* RCTPullToRefreshViewComponentView.mm in Sources */, E30137F6C7AA4B42A4E8B0069F36DD63 /* RCTReactTaggedView.mm in Sources */, 3E7B0F82566D1D91383B364B52BFCBEF /* RCTRootComponentView.mm in Sources */, 1EC4F1FA41C153E536CF6B69DAB893B2 /* RCTSafeAreaViewComponentView.mm in Sources */, E38C5A95C3B86DE8DF5D85ECE0855055 /* RCTScheduler.mm in Sources */, 4AC55AF43A4C075565677B3718D2FB32 /* RCTScrollViewComponentView.mm in Sources */, CF9190469C904527AF29EE59E32447EC /* RCTSurfacePointerHandler.mm in Sources */, F05DECC41DE2DA7BAE020C3C695C3179 /* RCTSurfacePresenter.mm in Sources */, 16769F3466BB96E91499BDFF33A8DFB0 /* RCTSurfacePresenterBridgeAdapter.mm in Sources */, 8B3013D13CA5D7852BCEC3F9A0A0D22E /* RCTSurfaceRegistry.mm in Sources */, AB87442CD013BE84D9211A77BE390F9D /* RCTSurfaceTouchHandler.mm in Sources */, 3B0BCF5D40456442075E087910B65BE1 /* RCTSwitchComponentView.mm in Sources */, 8E85CB53CC69D87235AB1A5051D02DA5 /* RCTTextInputComponentView.mm in Sources */, BBB7CD52BA8A4BD1CA13E8607E69D734 /* RCTTextInputUtils.mm in Sources */, 701973358846CBEDD827355528F51546 /* RCTThirdPartyFabricComponentsProvider.mm in Sources */, D1C4AA3D4A4063C85BF05DF7F95FDAB5 /* RCTUnimplementedNativeComponentView.mm in Sources */, D7C36B197E1986F1A8811387DD9A2200 /* RCTUnimplementedViewComponentView.mm in Sources */, 146AB77B241BF6C67DBDD63E5634067A /* RCTViewComponentView.mm in Sources */, 6869C0A56BFE37D366E0622A737744A8 /* React-RCTFabric-dummy.m in Sources */, 32BEF79AE336EE5C0463C825D845D74E /* UIView+ComponentViewProtocol.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; D4CC0275F39BE4206E4ACF900B008845 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9307396B4ADA5CC798FF0884900FC572 /* HermesInstance.cpp in Sources */, 6068983DDD1A40F8FF987CE6E0497CA0 /* React-RuntimeHermes-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; D7947EFE7F3FB4DC3C5D40A004FDCB6B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 26D3F78DBA25B5DB3A22E10497AFF723 /* ImageManager.mm in Sources */, 083E2C962EA0D5E14FEA17B782E3AF09 /* RCTImageManager.mm in Sources */, F9FBD5F032C5E741A03EB97EB74867A9 /* RCTSyncImageManager.mm in Sources */, 21923AF5A501E8D2C01033B9DCACBBAE /* React-ImageManager-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; D920D245547BEED30EC5DBD60571CFCE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( DA550251907D606E20F2DED4C4EE56AC /* Pods-WatermelonTester-WatermelonTesterTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; D9A2B97E596F0A5364FC6BDF8ACC69ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 932C4B72A39D5E4B28B11735AEC65689 /* React-featureflags-dummy.m in Sources */, 49164C701172F6D49BDA9C836C294A82 /* ReactNativeFeatureFlags.cpp in Sources */, B62B1C3E71BEAC7656E3F16525E73238 /* ReactNativeFeatureFlagsAccessor.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; E808ECED1A5E1EE47280499780E79451 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 6E04193FE94D6D98EA1599FE3589B5C5 /* bignum.cc in Sources */, E99B6103EBDB6840C784DAD2CED495E7 /* bignum-dtoa.cc in Sources */, 0F406AD78F915630431DD8A720AEC4D7 /* cached-powers.cc in Sources */, 454DEEF08195B90C4524D609D9FC08E7 /* diy-fp.cc in Sources */, E71D9D6FB89A2C9AE52FE7C5A3C475C5 /* double-conversion.cc in Sources */, 97787CD6E0C072679EE338808F2F63AF /* DoubleConversion-dummy.m in Sources */, 89838E50A5FAC6006B7986F7130E99C7 /* fast-dtoa.cc in Sources */, 4475E12EB41862981DF3C41487CCB246 /* fixed-dtoa.cc in Sources */, C1A8B83142B9F3C7DC02D5E53BA45AF8 /* strtod.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; ECB360B46269645988A5FEF752B07CE1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 36CBEE8C52A61FE395F052C9B267A290 /* NSRunLoop+SRWebSocket.m in Sources */, C214AD1E1FFAAD2EBCA4A756CCA4A07D /* NSURLRequest+SRWebSocket.m in Sources */, 81DA215A55827E4BA0DF542A3DB8E001 /* SocketRocket-dummy.m in Sources */, 8964DA67716421A13752C604BC9590A2 /* SRConstants.m in Sources */, 09D9EE11D46CB94FAFBB54DFAED6C44E /* SRDelegateController.m in Sources */, C95402DE1ECEBACD3DDE1B93F5D50453 /* SRError.m in Sources */, EA929F09DE084CC45B3450DC9D78B195 /* SRHash.m in Sources */, 8757125933F9FB281B0CA8D92413FD2A /* SRHTTPConnectMessage.m in Sources */, 7E4AC7154C2CE9CDF1093FA4152CB996 /* SRIOConsumer.m in Sources */, 5557EE5C694F55EA80C743211988494B /* SRIOConsumerPool.m in Sources */, B3D418B8ABCCAC66082A0DD9C03B9628 /* SRLog.m in Sources */, BA893830D9B18AEF81EDECAEECF9F495 /* SRMutex.m in Sources */, 224015C78F407E1AF6FB0BFA6A88B60A /* SRPinningSecurityPolicy.m in Sources */, 74C33EA812E975499F57B54E5A3793CB /* SRProxyConnect.m in Sources */, 2E73C529F9D90E24C3A1865022C1349F /* SRRandom.m in Sources */, 82A49A43173CFB3AAB84B2A4DBFAB89D /* SRRunLoopThread.m in Sources */, A42C6A17F4D0042FBC3D655E31C73C15 /* SRSecurityPolicy.m in Sources */, 3DE173A4880B25D444AEB95AA2B085C0 /* SRSIMDHelpers.m in Sources */, 191AF4701921B0FFF6BBFE9DEA53594C /* SRURLUtilities.m in Sources */, D7C2C28BD650E3478980431139788E33 /* SRWebSocket.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; FBEB4901EDEA337A12D49832C0F1509A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( FFB0AD6EF400000E5DB3695E6D232D13 /* Color.cpp in Sources */, 2F026ED16EAEA90F157701D8481A9FAB /* HostPlatformColor.mm in Sources */, E5BA12AB6988A4F766D4BE419C785092 /* PlatformColorParser.mm in Sources */, EC8695E06B4FF360C0D7764B5419727F /* RCTPlatformColorUtils.mm in Sources */, 73027B4FD5ADD813B85FBC3D74837FE0 /* React-graphics-dummy.m in Sources */, EE0C008A89AB0B833235FE60CBDFD831 /* Transform.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 00631E47E14621AE9402D0DF95F1ADA8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = B833B6E10AB7E3C290E1FEF08CB30A4D /* PBXContainerItemProxy */; }; 0113A1D7CEA7572A46417194D8E8C43D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 42FB8544361ABBF9AD8C4C00BE603100 /* PBXContainerItemProxy */; }; 0128B3961C62E0B77D199FEB5E91876A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeApple"; target = 91D38B18A4E42B1622B83F450706C2F5 /* React-RuntimeApple */; targetProxy = 489C8E3E3F5C65782BA9904E88317584 /* PBXContainerItemProxy */; }; 01EB13A513D3A65364DA674E0BA7F7E5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTBlob"; target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; targetProxy = EE1123BB0790B159E0219DC27196EAAD /* PBXContainerItemProxy */; }; 0292965509627A85A8FD7E309BC9D1E6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 402D782A605F7C3F6A1DF1E51ADD1ACB /* PBXContainerItemProxy */; }; 029FDFA394268EAD139F31F647DCC156 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 77392EDC06BFD0919392085F508634CC /* PBXContainerItemProxy */; }; 02CCFE27A24A08DAADC1299A08147AF0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTFabric"; target = 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */; targetProxy = EC85AE697848BE48B6F09210FF86EC9D /* PBXContainerItemProxy */; }; 033916D526C1A889561E0F74D3D0ACCC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 9B17177FFD8673933D9AE3E550401161 /* PBXContainerItemProxy */; }; 03760D1433D73CEC24F9E58CB14B1F18 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 2CABC33625B79BE358899318EC118B55 /* PBXContainerItemProxy */; }; 04387AA90E58CC1C09497D9FA32A54B4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 31F652266E48E74C758B9C69EF3CD90F /* PBXContainerItemProxy */; }; 05373A03C28AF0BD3A139E9C7F172F96 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 97012073F5E77B63FDFB697A4A57C498 /* PBXContainerItemProxy */; }; 05A4535BB70AF398463F378248BBD162 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTDeprecation; target = 5211B5AB7B81060AA8E78614DD75D3AB /* RCTDeprecation */; targetProxy = 7396E7BB1E1E864764B1A04E411A22AD /* PBXContainerItemProxy */; }; 06E63CD166A9DB8EAE8D17835AAAE714 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = C1DD7823D300707FC9C52212F93B32DA /* PBXContainerItemProxy */; }; 070075A664C526AA369CFF1C8F480565 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 33DBC0FBD8A36E91BF0D798BC0FD460F /* PBXContainerItemProxy */; }; 0717C5A3C0BEAB0160A75C5D66B42470 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = AE45C8D28B14130F12EC5C170DA2B7AA /* PBXContainerItemProxy */; }; 07309250446D5F55252BEAAE50750CF8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = D93CC2B32B540A9EB1BD1841FD97DF47 /* PBXContainerItemProxy */; }; 07705C923CD5F83B049E084E95B356FA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = 135C6D27FB0B505651E80CFC705195AB /* PBXContainerItemProxy */; }; 078D793D92DDA63E03BBEE73F963EED7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 0DF13E7D33E4641BF3808510F4CD10FD /* PBXContainerItemProxy */; }; 08937C84140770B35EFCC5226B442C3C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = EACA86167645B5C3ADBDA0097D75461F /* PBXContainerItemProxy */; }; 08E1EB80F89F0EB0DD4B2ADE9C460526 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 2FEFCC000DB45DE8C15B1E1827963871 /* PBXContainerItemProxy */; }; 0947843414EAF9A018C3EFF21E80AEE1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 338D244FA8653B3233AA255D4D1925CC /* PBXContainerItemProxy */; }; 09932F9978240BC9960426479302DD99 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = boost; target = EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */; targetProxy = 944A26AFF7616415AC12303FFE76129E /* PBXContainerItemProxy */; }; 0A169625F636FE1C73F0208237690740 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 3096A1AE919BEDEEAA93EBC59209A823 /* PBXContainerItemProxy */; }; 0B0B81E7C13C29E62916D264A25EA64B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 6AB1F4BFD6B96C93DA1B7CD8F20A79C1 /* PBXContainerItemProxy */; }; 0B8F0AF300F008781318143A4023937B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-hermes"; target = 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */; targetProxy = 528B726925AA1576C46D6FAB03891176 /* PBXContainerItemProxy */; }; 0BEDBF63C3E4E541C8B0B6D741C05866 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = AD65D943B25FB162F127D788B3B7414F /* PBXContainerItemProxy */; }; 0C2CAC5C2695689B85F032B736C68BB2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 6978B0EF9BF761495B5E4F97D979BEB2 /* PBXContainerItemProxy */; }; 0C5451BA2A75717532FFAD7F482792BE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAnimation"; target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; targetProxy = 437ECCE96742319D859D14A7A0DCC529 /* PBXContainerItemProxy */; }; 0CF51DBE402DD4D1816769A2AAC680B6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = E77D75EB8A5E3950C1D5870DC0615F3C /* PBXContainerItemProxy */; }; 0D6352E2424F6FC499B3B35657C6AD1B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = boost; target = EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */; targetProxy = C2A4DC273F4357B0C430FAA2E640C336 /* PBXContainerItemProxy */; }; 0E1A0EB88D2733A057A54100BC106B59 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = A5B19FE633CD3598242AF5724C8D0208 /* PBXContainerItemProxy */; }; 0F774A9A211B184E15151EBE1F7117FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = FA61B1CBE12C5E6B493717A35DCAC02E /* PBXContainerItemProxy */; }; 0FBC712AF9FD73F622F4DBEC577E97D0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = A6BA9A6BD8EA1A3C362C27947713ED7A /* PBXContainerItemProxy */; }; 0FE5A051E0A746490490C86E7859144D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 55742B771D95D2D70CE4E7DF35415F5B /* PBXContainerItemProxy */; }; 1097020EF71A5B0AE4AA8A3C3B539274 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = CE32EDC6F22FAF26BF32FF9864DBF404 /* PBXContainerItemProxy */; }; 10A2F45C3B581D6E8F38A104C850F7D7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = CFA19FA3F85DE79CCD37BCCD68515599 /* PBXContainerItemProxy */; }; 1160DC25251A334CDE35D5BE053E7EDF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 9B1FF7A4C16CAF1E413DCF4BF011434F /* PBXContainerItemProxy */; }; 12A0E63E2D9A8A38283E1A96C9BD9771 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 9B4885D4819D4BD1CF3E930B405AAB10 /* PBXContainerItemProxy */; }; 12DA8B08C376D6BDB2C5EA653BDD2EC0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = B55F062B69D12DE3FB7C6C27877E9D6C /* PBXContainerItemProxy */; }; 133D9E2D3816395D8F6B4051D4CE1EDC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 531F38502E184028FEC2387DBD9F5A3C /* PBXContainerItemProxy */; }; 138FBE9E6A7F8DED026A2B9010A3D5F6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 447510A29A4CA824A55F4762DE64486E /* PBXContainerItemProxy */; }; 13D61D46C1B23D15B361E0C6A887C141 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 5F9ECC8664AEFB7D24B15E1ABEBDCD7F /* PBXContainerItemProxy */; }; 13D7733D4877955DA3776E3CC8436E48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 7089361FEE21B329190B5FB28FA6C854 /* PBXContainerItemProxy */; }; 14722F8716DB7B6FDF9830625EEAE9C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 3D499367E58E5470425EDA61A0B51FBE /* PBXContainerItemProxy */; }; 14D203B01203E84A63E3011F1E3ABD41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 788F525F7864E34BCFE6BA0BC508EAA7 /* PBXContainerItemProxy */; }; 15511602B9CF0D9CAB1BFF716AC1577D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeCore"; target = C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */; targetProxy = 8F4D9EF766DC665762826021BF5B3634 /* PBXContainerItemProxy */; }; 15CF3848FA8FF276A0AC4494AE7A2C94 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = D90130736CF11060AA5F3044DC0B78F5 /* PBXContainerItemProxy */; }; 160B671DE8C758C317C529472EAE84AC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = C539F15154AF65EF5205178A0B981D18 /* PBXContainerItemProxy */; }; 17140E0E193C64A3A7403F68D30A8468 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 9EA4F6BD0A3AE917E71F8807C80DB748 /* PBXContainerItemProxy */; }; 174B2196BBC1B8032462868D2D2D378A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 7AF4C2BA2D63C5F0125DB0C240A10756 /* PBXContainerItemProxy */; }; 177E6FD6E10FEA6715CEF6E76277104F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 4B134C8FBCBB969A1215D405FA8F1A10 /* PBXContainerItemProxy */; }; 18A0596FF4266A184879BD59B9836B17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-CoreModules"; target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; targetProxy = A1EE308B2938947861CD549712D6075F /* PBXContainerItemProxy */; }; 19223623503FAA1FAF8E103C15438676 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 08DDB51BD53715626AC1CFA447E04B23 /* PBXContainerItemProxy */; }; 1B6C878FFCE771AC50BC4961B0F87EE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = FEFEC4A876DE93DA3E16A9AB06227889 /* PBXContainerItemProxy */; }; 1BC9C4D05EE6C825BB7F90181F600687 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = DBFC4C49A506639725CD60B7FBF76663 /* PBXContainerItemProxy */; }; 1BE6407519073C758F404A73A903FDD8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core-RCTI18nStrings"; target = D0DD0961119C95E188122B13F3BF4380 /* React-Core-RCTI18nStrings */; targetProxy = F0E873B663A5E11DCE0F94915EB97DBA /* PBXContainerItemProxy */; }; 1D22B6A7210D95C77692184F9DD4DA5F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 696C092D7D2F0C8C73C9FD35C3516D5F /* PBXContainerItemProxy */; }; 1D43516102A3113894F7C492185A8246 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = FED80D2E46769763C5739E2DA56C4340 /* PBXContainerItemProxy */; }; 1D4397136D2ACA4FB733CA69E77D4E29 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = C23661E7B14F7FAC97B8196253811D53 /* PBXContainerItemProxy */; }; 22518BD6B6A2937961E29F0F995F94E4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 2D8279F103F61BD0E0316515B2A4FE66 /* PBXContainerItemProxy */; }; 226A033C606AB4E273CA075C678DED98 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jserrorhandler"; target = 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */; targetProxy = 9E867B5A451015DC03204207736A9926 /* PBXContainerItemProxy */; }; 236E756288374E4AE29AC51EBEE02A84 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 4F625582906102063209333EE277CEDC /* PBXContainerItemProxy */; }; 238930CCE2A68E41AED023158D9FD867 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 139B8D68D2E558E28083C605874A0BD6 /* PBXContainerItemProxy */; }; 23C94FE2112CC614AEBB66ED42CF2EAE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 2D200046FECD427C246D4E124454B60A /* PBXContainerItemProxy */; }; 23E56A592552C6624E530ACD1C05CB3E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = 988C8AFF6DCF1A105E13A420302F1153 /* PBXContainerItemProxy */; }; 23F0D83A18F9832E29B22D2DC676614A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 1FBDF52E2B645612778A2C4BCAF5EEC0 /* PBXContainerItemProxy */; }; 24EFCC54EF18A579A7C27EB7D2ED4DB1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 1AC57A05EB292291B8BBEB18785A89FD /* PBXContainerItemProxy */; }; 2504A251E75872D0B920F87A736CA6E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 61A7088DDA0CCE984A0F70AEFF5F251B /* PBXContainerItemProxy */; }; 25F8BC2FB5A20C0155607D43C0D83122 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = E805BB9AA384D87FA227760D8A9A9768 /* PBXContainerItemProxy */; }; 26A8AE3C7636B091780A815018FD8E52 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 3FA3F4824D892562720F7C1FE88A3FA3 /* PBXContainerItemProxy */; }; 271AA5BE14F7B51FA70504F013807BC0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeHermes"; target = 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */; targetProxy = 28996E64427C63ECE41813C12F1D9F45 /* PBXContainerItemProxy */; }; 2826FAE8B40BCAEB7402A2C59048B45C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 3B60C2EC4FC7EADBFC082C9611FE195C /* PBXContainerItemProxy */; }; 28535D15D430AB27D78BED2C4E30A08E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 7A705528BECC75FF15B9B5472224FFF2 /* PBXContainerItemProxy */; }; 28678A28E3DF6FA2E1637A8D54923035 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 0661428190F98F0AEA09E706F72C0E14 /* PBXContainerItemProxy */; }; 290A5A9C4C2B466906134251C445AE62 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 118C58C79101D96E6FC10ED86A908701 /* PBXContainerItemProxy */; }; 2A4DD09DDD919726D99AAD16E6EF18D1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = DABD0E6D1231888CF69153902DD90A4D /* PBXContainerItemProxy */; }; 2AAA0F7AC1D291B485F05244E5B94F64 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 2C70C777E30B0F495E6558B96A5DEC57 /* PBXContainerItemProxy */; }; 2B046BA53642654BB49AB5D1268435C0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = F63BA3F544EFE63F8DF41943535FD194 /* PBXContainerItemProxy */; }; 2BB0BC14C7F66BE53EBE2D9821461C40 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = 79F6D476FC0E744BD4FCC435BDAD2B7D /* PBXContainerItemProxy */; }; 2C475FFF8B871DA92E808279F3D8E579 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 3B755BC14CE1029B5A4285D2C338D848 /* PBXContainerItemProxy */; }; 2D59FE22D01EA3E540A40567B70E611A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 73E1F467A179064813358CA300786586 /* PBXContainerItemProxy */; }; 2D8F535A379CBF645319C5E8F95903DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 1E121B19C6FC0D95DB4FD3A9D9DFF81B /* PBXContainerItemProxy */; }; 2E23CFAC3E38CA3188706882E4B0FFF9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = 883C9E9E5FF6809D00655B5826DB4507 /* PBXContainerItemProxy */; }; 2F4D36D22D11472378BF1A9A86688579 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = E02813002DF6996D9EA968D5DABFD914 /* PBXContainerItemProxy */; }; 2FCD30A1ABDFC43101DF702EF4EF07EC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTDeprecation; target = 5211B5AB7B81060AA8E78614DD75D3AB /* RCTDeprecation */; targetProxy = 28B7BD8A9C0D88C589EF663047A7D58E /* PBXContainerItemProxy */; }; 3093214829851D85A041F11935DDD07C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 39783E66536947564F9D020A74569042 /* PBXContainerItemProxy */; }; 30CAAA5C763B44A39B67EEA988014D07 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 0C7EAE61CE963E0C8DB1A375BF29D31F /* PBXContainerItemProxy */; }; 3126B7E273693B27EB2B7FD50AA5BC17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = A1F1CFBE1F81137945063038F1DAA104 /* PBXContainerItemProxy */; }; 31B3264B573AC004E3E10202FFABE064 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 26D71B5A7F452CFB83A0E25D8921B661 /* PBXContainerItemProxy */; }; 32367C20F30921438885115E85DFA696 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 0C03E6CB4D11169816C5B19652383FE6 /* PBXContainerItemProxy */; }; 333901E607E06D29D91573D5FD1AA335 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTLinking"; target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; targetProxy = BF7B3AA185D91BA8D010D8A33C7CB137 /* PBXContainerItemProxy */; }; 3354A28B35EC1069BD30EB745FBB5320 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsitracing"; target = 718331030FAA6D88E74D4B2240BB4AC8 /* React-jsitracing */; targetProxy = 4EB019076F5C4DBB606BC5E48F450D01 /* PBXContainerItemProxy */; }; 336B884A1B8C1FCCD9B9586A45B09D69 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-nativeconfig"; target = B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */; targetProxy = EEA71226533D5815064A1C73FDC18AD0 /* PBXContainerItemProxy */; }; 33B57E9C7AC16F53D4F7C80E017CB984 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Mapbuffer"; target = 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */; targetProxy = 0FE34725473963448614574DB7872734 /* PBXContainerItemProxy */; }; 33DD56EC46F00CDD32152A7D78484C0C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 42E337250953477C0425F2B20469DB03 /* PBXContainerItemProxy */; }; 340BC01CDDA1120E0BC121DF2D9F3A2D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 4F93A5639AC8DE235E8468EB71917E7A /* PBXContainerItemProxy */; }; 349AD49C975F6EAC6C878B5A24A9C501 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 7931E9AD775D7BC33B55B25BE876C6CE /* PBXContainerItemProxy */; }; 350AB0B4FB6E2D72BF570CC9B3DED953 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 9B7B281009C520D53B98B8EAFC1D496D /* PBXContainerItemProxy */; }; 354F5ED9F8C15CF66B54AEA1152BE46E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rncore"; target = B41E34C6B259B9994C513BE178912491 /* React-rncore */; targetProxy = 1F710C3EC863E54A48B767BB86D76737 /* PBXContainerItemProxy */; }; 35BFC111E69EF700B863CE9674B50A7A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 2A2CA8F5135943250F0EF215F952D316 /* PBXContainerItemProxy */; }; 37F81AC9EC861E71FEBA2A4389C6CF3D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 46618F284AA8BA31B4AFA45A8E9F507B /* PBXContainerItemProxy */; }; 37FC712C26E18E2E350322217EC740BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeCore"; target = C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */; targetProxy = 14CA7990CDEB12D4182EC6BF39D5E9D3 /* PBXContainerItemProxy */; }; 383F9F7477C31187D8228B90944A5666 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 392CD5DB7A14441675CAE5C1C2F2476E /* PBXContainerItemProxy */; }; 384CF580B6E142D4571D926B01454BF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-FabricImage"; target = A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */; targetProxy = EFEA2A4D8B63216CE096FFA9CD177CB8 /* PBXContainerItemProxy */; }; 3875578AD50898EE9D9B27FBEAAEA823 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeApple"; target = 91D38B18A4E42B1622B83F450706C2F5 /* React-RuntimeApple */; targetProxy = EDA92014437974EDFA693F292BA3683B /* PBXContainerItemProxy */; }; 38EF688FA4CFB04103A9F12D916F1799 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 22A5E21755926CF3126E545874B29A8B /* PBXContainerItemProxy */; }; 397953EECD8A705AE1E95CA4A3B17F2F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 6D203869C95F377D019F57240B097418 /* PBXContainerItemProxy */; }; 39AD6EAB484ABBC2E55676C6C3FEB744 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 0A67297851E496410FDCA56C2F856355 /* PBXContainerItemProxy */; }; 3A081C98EE57698FFCC1C41C77D545AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 2DD25C6A74A6A39833B87AE38122594D /* PBXContainerItemProxy */; }; 3A25922BCB02D7620B0B4992ACEB0B93 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 7E51A5346FA1F405D4A2D9A3CD02A15B /* PBXContainerItemProxy */; }; 3AD4BE5BC377F82502EDC24E98A0CD21 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTBlob"; target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; targetProxy = 959FC78A558AA1E2398AF55E20BC5287 /* PBXContainerItemProxy */; }; 3AD979AD7992ED35CB478669CECBFA0C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 6192A6F195A09747939210F1954336E5 /* PBXContainerItemProxy */; }; 3C6C78859E469F36181BEA310DB11287 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = 883DE70A71CAD81F2E1643C8AE798850 /* PBXContainerItemProxy */; }; 3D04E6CC3760CE3501A287C5002BA99A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = BB57699D36CDF102FB4067D36F1B26F9 /* PBXContainerItemProxy */; }; 3D131EABE7877449C034C8F7D0F2D6EB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 50664CD9ED7985A1E90103A79BE4B4CC /* PBXContainerItemProxy */; }; 3DD3F4D8C8B9C7D406834B13A52483D5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = 7891D6AA1F6DB7DF67CCDC6B30B255ED /* PBXContainerItemProxy */; }; 3E675CEB9B0D066B74CC29783F888167 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = D13160E9F6A39A4293D2FE5667F854E0 /* PBXContainerItemProxy */; }; 3E8240D54174DE4FE703DFE46FBF7F2F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = FF35B4A5726139AAB006E9EE7C4A644B /* PBXContainerItemProxy */; }; 3F317B466311BFCE9B6D80B3F187515B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 6CB5A0DC349F027AC1A42CECDA2717AD /* PBXContainerItemProxy */; }; 401A92725890DB2796696C489E8A959E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 72F15D17342DFAFB7E374C97225B301A /* PBXContainerItemProxy */; }; 4185D63487F1E5B3B6A77917AAE8756E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsitracing"; target = 718331030FAA6D88E74D4B2240BB4AC8 /* React-jsitracing */; targetProxy = 25F35441911D6EBBD57C36461F4A2942 /* PBXContainerItemProxy */; }; 41CB180CC61559DBA84C8CCD85761E40 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = C0C3D74CFBF3E116388373D57BE4F7BA /* PBXContainerItemProxy */; }; 4201AC4E052E73C08CCD7D03D75ACCE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 41514EC3994603CBBAC966997FF940DE /* PBXContainerItemProxy */; }; 4211045A5B6E798B2BF4A5B05D84257B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 6CA22A265B4F5BEDA7386E7D1A288083 /* PBXContainerItemProxy */; }; 42BB13633AE352DBC875CB2D02AA38A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTBlob"; target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; targetProxy = 27BE5FAC5CF6C00EE6638453367C29EA /* PBXContainerItemProxy */; }; 42F6DC0A0F33B9822CD82AAA742BBC70 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = A1B6243BC985420127EDB25166DBB848 /* PBXContainerItemProxy */; }; 439BCAEF52C398210A874C1101A07BFA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = FE8F2CB304E07FDAD18F6B92924C58C0 /* PBXContainerItemProxy */; }; 43EAB09B1F9E3433FFF4CAE3FA39D4D2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = E562BBB8918D279CDB88A2BF9C9269F9 /* PBXContainerItemProxy */; }; 44BD7BB9580F592E3BA5A59E0FBDE34B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = F716144FE8AF405D0ED3829E084D2D2D /* PBXContainerItemProxy */; }; 45BFBFF43902D28610828EC9FD5889E1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTActionSheet"; target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; targetProxy = 4CE094B8C5B23C55458F418C324291C1 /* PBXContainerItemProxy */; }; 467A1BDC735428282D5519F99F127894 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = simdjson; target = 45B79B0C60C74716DCD2AD7BE782A719 /* simdjson */; targetProxy = 264D33E2CA9CA59026ACCC8C30F173A1 /* PBXContainerItemProxy */; }; 471DCFFCBD4A108ED25D065877FD3FD3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 3D8C75E02193D4335F7C8480891CA121 /* PBXContainerItemProxy */; }; 47552B4F8C7CC9D578C507F9C8B55E48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = B4AB08DEA37CE87C1E80287F854825E6 /* PBXContainerItemProxy */; }; 482FC3D57FC8A7260A82042834555148 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAnimation"; target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; targetProxy = 46F60D279BF0CC26216ED024A0D81294 /* PBXContainerItemProxy */; }; 488998D26401741FC05F84B117E5020A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Mapbuffer"; target = 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */; targetProxy = 9CBBC8352CBACE024F392C5D07EFB01A /* PBXContainerItemProxy */; }; 48939DA609333D216671B3454FF64B92 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 18DAF4BB014890F9475879A59FA277D5 /* PBXContainerItemProxy */; }; 48958125BE6C489FEA79D9B9E058AF28 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = B4449874149D49635F8A5CCEFA2B7B71 /* PBXContainerItemProxy */; }; 4920A5B0535890B1E7D1BF643FDDC3FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = DF22E5AEB4E3571295EA7B3334BC0393 /* PBXContainerItemProxy */; }; 492F47EC7FDE085C758C479D46DF1F63 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = FB5D5685F38BF27A4A50D156889136B0 /* PBXContainerItemProxy */; }; 4AA6C6F6763192CF4FD121DC066B3416 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 708E537269B7F5B976508E358B90ACD8 /* PBXContainerItemProxy */; }; 4BE784B32D7FE7E66C0BCBC48A555002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = CAF6538D653E2F4593BDD6FB47ABD0D2 /* PBXContainerItemProxy */; }; 4C0CF02334D579F2CA85518BAFE3AC94 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = E30707A046BC4EB23766FDCF95E28060 /* PBXContainerItemProxy */; }; 4C4BF44502CFA2BC155CACCEA52AFC93 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = 1B6912BA8E189A53A0F2DFB318AD1DB8 /* PBXContainerItemProxy */; }; 4D05AEF140EAF8B33F16E6D1A0607765 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = FE1420DC552A75EB281D3E84CA466A96 /* PBXContainerItemProxy */; }; 4D6BA43CCAB6C667B53236511B23AF9F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 099FD4302E1571C43E7CC5DABCE768E9 /* PBXContainerItemProxy */; }; 4EE942AF84B6CB7CB8C71847672BB4F5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 04672A342746A9D23A216E3D51356039 /* PBXContainerItemProxy */; }; 4F38BF96117F66D66D12A5026165B46F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = 9DD0DFC1F39DAB437E177EB09A8FD48D /* PBXContainerItemProxy */; }; 501186D706BB3A221149583702512FBA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = 768701873B0599D6AC08259EE1D5EC9B /* PBXContainerItemProxy */; }; 50997191BF777B9C48032E92FE8934A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 44520E623CF92B2AE884CEB68AC7F3C5 /* PBXContainerItemProxy */; }; 509DFA417A9F6FC28C5DF54680ED83BD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = A6398B134777D879B1B01FAAF9E7312A /* PBXContainerItemProxy */; }; 51B1B37A4D04FC366AF9E06183F60026 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = C79A04F3B768DBE6A492AE991E3C6729 /* PBXContainerItemProxy */; }; 52304F61679D1A20460ACD6B34295835 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-ImageManager"; target = B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */; targetProxy = B91FF145DD7C0FE0686A53DB45FF39BA /* PBXContainerItemProxy */; }; 5309742FA68972C8703057C531FE7B4A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 27227816A0AC9C79094F475A7E539F7D /* PBXContainerItemProxy */; }; 53121BB43C7003FC1889807B7999F194 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 1135D39403406304B5E3DE1CC9D85673 /* PBXContainerItemProxy */; }; 5396E9247D3B4600C0CEF1BE56E512C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 5E1C8506319413FB7230B196CCEC1DD5 /* PBXContainerItemProxy */; }; 53C17DD35EA04BC31221F5013D0D6470 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = F56BDF2AF7A7909B3FD7EA17263A86AE /* PBXContainerItemProxy */; }; 5416C4DCD990599B5C226AE2132B7ACA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = BCB974246F67E3F682F23D3000A7BC16 /* PBXContainerItemProxy */; }; 54BC7A2031B6EE04B465B38B2C61FA8A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = C295D62C015F11982CF4D6A807934AF9 /* PBXContainerItemProxy */; }; 54F3A8EBD288322A88F66576AB7B01AC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 8E103A8D0B29AC65D37AF2C9C3397C3F /* PBXContainerItemProxy */; }; 5504789E8261A05336A711333185F028 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 8AFA4A6B9474BF388393B2BBB377418A /* PBXContainerItemProxy */; }; 555AA89408382973C4AB5F51FA9CCA06 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 869A59EE24894AED06764354C10A5F69 /* PBXContainerItemProxy */; }; 55D793D7DCDBBB8918DA3FE5C48B431B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 514032619C079D0613FD26B75A133435 /* PBXContainerItemProxy */; }; 56F45F0408600AD7AA272F3DE409925F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 0289B273CF2E170BB6BE507F5FFA82D0 /* PBXContainerItemProxy */; }; 577FF61698C6B776BD1DDCEF805F0E08 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = 032B7BB6E4D024DB5071E49DEDDDAC9C /* PBXContainerItemProxy */; }; 57F48BAADB5805B0D266BDFC2A1C3EC9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 7199A02DB198016F4957677CAFD37169 /* PBXContainerItemProxy */; }; 58965B069471A7CBBFC82ED0B15092E1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTText"; target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; targetProxy = 87DFC9D147D55C9822337F8738882886 /* PBXContainerItemProxy */; }; 590C38C4546860234AE6995AA745B436 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 667B3C248D30D99BF4AB387DA12EF8B7 /* PBXContainerItemProxy */; }; 59D93FECBEB5A2E7B843380E4A600A47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = 5858410DB9604D764DDB1D8DBF572A73 /* PBXContainerItemProxy */; }; 5A4319DC9F2607FF12627690E3F4C0A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeHermes"; target = 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */; targetProxy = 7FA15A1437F7473F4EBF6CD2EA187A28 /* PBXContainerItemProxy */; }; 5B9BFD44259542BF0998056E0C123C8E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = C4DAD2BFEDB2B46B30A4918334C3C155 /* PBXContainerItemProxy */; }; 5CFF40B71FC04352AA6F82FCB1AEE57C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = F82661C856CFC4537BC562D480B0745F /* PBXContainerItemProxy */; }; 5D8A34693C0672D2B6D6FA272CD55EF9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = F50B829B9F8783D3CD5445F9A714C6AB /* PBXContainerItemProxy */; }; 5DD3494C5EA179CF1469D60EFA4AA48D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 06708061FBD54D734CD69C96FF4BC80B /* PBXContainerItemProxy */; }; 5DE920B65B5626FBC490D822219BEB10 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = E32D9D5625622F59A4E891AB2F0BBE8F /* PBXContainerItemProxy */; }; 5EA65B1FF742F6A080DAEDDDEA1C523E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = C5168006894FB43521F0A0CBECEBD219 /* PBXContainerItemProxy */; }; 5EE0CB2912FC54E4E1B00ECA8BD72D8D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 98690A3B0D01A5936AEB8B172475F68E /* PBXContainerItemProxy */; }; 5F496EEFD1138C88F9B6C9F28BF8E7FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 610DAF4DFC508DEF059AAF2D6327FB30 /* PBXContainerItemProxy */; }; 5F7DDEC9656978E6328E567B901397AC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 9A147EEF518A7ED1EA0464E07F6906DF /* PBXContainerItemProxy */; }; 5F84ABE6461E8D10A99F1614662D5F02 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = 2602E2C102AE096CF1AB67655B312CC2 /* PBXContainerItemProxy */; }; 6041B93D30C0906C17F7827C89208FC1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 523986A4CBA0A9B854F1B1F504672E41 /* PBXContainerItemProxy */; }; 6172D3DC6321CA3620D197A12D6E59C8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = A92361FFAA6D27AFF02987D72B991DE4 /* PBXContainerItemProxy */; }; 619692B57C7C99263813F45DEF183A6B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = C933D0F25D6C20C3379299E2CB42F4FC /* PBXContainerItemProxy */; }; 61C5E1E9E0D8B3351152D9AE7DF787DA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-FabricImage"; target = A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */; targetProxy = FE15B6EE25FDCF10BE7095256D053D75 /* PBXContainerItemProxy */; }; 63F23627D46E214A9E83F026A3E2413D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = A842D588D7B9637FFFA8197AD63B597C /* PBXContainerItemProxy */; }; 64A12C5236A6B897B3DBB8EBDE905E7B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = 0B1EB341796A0626399359C3ED0B7588 /* PBXContainerItemProxy */; }; 652E79909AAB41E62A57EBC80CBF427C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = C47BEEA64665700E66E269BE0C90CEF9 /* PBXContainerItemProxy */; }; 6675CE1FE41E6AC87A3117E2ABBBA762 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 35C37DC0ECDD2A729AC821C38BB059FB /* PBXContainerItemProxy */; }; 66D92D4240C674B35F54C2C9AFAA0322 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 9115D774EC904629CCFA0383996AEA60 /* PBXContainerItemProxy */; }; 6750B951032FD22A0EEA0AEEF98376DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = B1E7A179678B5CAAFE7D32BEB902FE50 /* PBXContainerItemProxy */; }; 67567B461F3E40467B26D7974B4C1D44 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = 0557F03CE366CCC0279E44D78CF0BEF8 /* PBXContainerItemProxy */; }; 6760651ADC5EFA51B68D248ADF79D997 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = D16A2BB3F9D5A639C2B53437E64AF9DF /* PBXContainerItemProxy */; }; 676DA9CA12606B49253CA5A3F2CB29AE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = 417228EA0C0EED361BDA2C73B4EAEDD7 /* PBXContainerItemProxy */; }; 67722DF845F87BA9C58F762C97B926E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-FabricImage"; target = A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */; targetProxy = E9109ED22CA9A2A178B56EA9072F0E53 /* PBXContainerItemProxy */; }; 67BBDDCEA70BEA58B3E3C83B3C47033D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = D42DE5667CC9F955711A2DF1BE3A0849 /* PBXContainerItemProxy */; }; 67F8AA74EE543DC681366BE8419569F9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = CD5EB770BFF7AE41F049E4F510CDA6C9 /* PBXContainerItemProxy */; }; 695CAFEE86C5934C15813E5AEB95FCF7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTDeprecation; target = 5211B5AB7B81060AA8E78614DD75D3AB /* RCTDeprecation */; targetProxy = A57A1E5DA1CF9F45264F198239F502CD /* PBXContainerItemProxy */; }; 6B98ABBC42E97F407C486F83CFAF2DF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsitracing"; target = 718331030FAA6D88E74D4B2240BB4AC8 /* React-jsitracing */; targetProxy = 814E75E2466186389C470A40FABEFBD9 /* PBXContainerItemProxy */; }; 6DDADE4A090D2486F1867CDFFFEC2BAE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-CoreModules"; target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; targetProxy = AD88ADDC23C72D9E68F949E2F6392A9C /* PBXContainerItemProxy */; }; 6EA37D38B5F608C9ED8BCC3D0CE73976 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = FCFB21480542CCDF3413834C2D79C0C1 /* PBXContainerItemProxy */; }; 6F36D48DE22DB419560FFB24734570C7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = C9E7B9CABFA8CCAEC5A1E5899E48575E /* PBXContainerItemProxy */; }; 6F3CAC1CE460FCD72E851FCC828AE32B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = B08201482F085FFB7749B3B3BFA4755C /* PBXContainerItemProxy */; }; 6F636285373965A3111B0B6ACD3B8002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 90A4F01A4656FD0ECCE693D3DCFE4357 /* PBXContainerItemProxy */; }; 6F68A67088985622F27AF591F2D44640 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 1A4CA94B561EE5E2CA5F1A7FEA2624BA /* PBXContainerItemProxy */; }; 6FD8F1C07C0EBA1942A87072CF2A4D5A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 7324B3C23CC2660EE8AB34F268610F69 /* PBXContainerItemProxy */; }; 6FDBD4C9938B03D8150BED0135AFF2D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 6FA0C82671E5EDF5C2E8608E281E5574 /* PBXContainerItemProxy */; }; 70ECBD516E2B91C386ED477D0B1C4458 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 8A01A6A20F4A040DA3724AB2B41C4904 /* PBXContainerItemProxy */; }; 71C719D10FD6DB200EAA6EEFA1367270 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 773DAF3A7CD1AD560A4E58D7260D2A72 /* PBXContainerItemProxy */; }; 71DBBBE762D28A5D1FB20FDEBA133275 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-hermes"; target = 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */; targetProxy = 13788842E11AC14A80C18C631F34DD4B /* PBXContainerItemProxy */; }; 7390C8A414C80248853FC1936D46AE65 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 9DB104CB96E00AE543CF960D565F4C47 /* PBXContainerItemProxy */; }; 74785FAB64DB2E3C10C989A45A14C219 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 30052770A781E8047C3AB8E1C984E45A /* PBXContainerItemProxy */; }; 74FF1306928480CBFD0257A65C2AE3D2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = simdjson; target = 45B79B0C60C74716DCD2AD7BE782A719 /* simdjson */; targetProxy = 45058A3929052B17227F15D8771739C3 /* PBXContainerItemProxy */; }; 760F46FA489FA3BC1A12FE767B1C3724 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = 364D2CA644CE7284EB0D9AA88411CBF4 /* PBXContainerItemProxy */; }; 76295D2365EE55165E1FD23E9D3A64C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = E4E5A824873AA8676EF52F2A30A1CFF4 /* PBXContainerItemProxy */; }; 76E2AF94513C31EEBA1A2731A05958D1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SocketRocket; target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; targetProxy = 287546B862BA34A1C2963EFC525D4BB6 /* PBXContainerItemProxy */; }; 771EA905ACE8B9DF1691920849E25189 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTActionSheet"; target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; targetProxy = 8E227252A1A04992FDE9D414D398EA61 /* PBXContainerItemProxy */; }; 77AC1CFEEEAAD46FEE7BEA988A588B67 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 96A265B0FD2164A7B4764841E73AB8AC /* PBXContainerItemProxy */; }; 7845C42B56BD999D4789DAC5D452DC83 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTLinking"; target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; targetProxy = 998BEC830E92ED33C97E6586736FB998 /* PBXContainerItemProxy */; }; 78727E5B4250A9E09FD2B16BE2F71350 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 5A8596426591472EAFCA3DA6207F0A23 /* PBXContainerItemProxy */; }; 792C94CE5907970B3561385D49A084CB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 8642894287941BD14F9F24B434B84BFB /* PBXContainerItemProxy */; }; 795142F7B9CEBC2409056405CF1A0236 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = D8DE127140187183B98BE7DF5DAB9829 /* PBXContainerItemProxy */; }; 7A2587BC6C3980FFDD632559115DBC78 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = A01FB08457ECBD7EE89F447BFC03E9C5 /* PBXContainerItemProxy */; }; 7A698D86B723B94C66DF2921B25EBA09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = 3F8E945B2CF235F1E5DF37577F4BD617 /* PBXContainerItemProxy */; }; 7B05CED1A38707CAF44C3092D8F27EA4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = DB4AC6BAFB227C3B7803DC6E4A2F3FFB /* PBXContainerItemProxy */; }; 7BB0EA4C6E68B67ED40E24ED427944CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = 15FC817CF5576B0F64C53F4746531CBE /* PBXContainerItemProxy */; }; 7C2893CAEC14643F651E1C7019EB7EC4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = 9BD7E734058A20C28CFAD01F1663879C /* PBXContainerItemProxy */; }; 7E4F5D0BEBE237442188BFED62916897 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 413B66FC8CA959FDE6EE3BD8E75010EF /* PBXContainerItemProxy */; }; 7E8596700BDB3E75F2D21854499777F3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTFabric"; target = 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */; targetProxy = C6175853BCA38145859D6574962C8592 /* PBXContainerItemProxy */; }; 7EEE2CE1939388A6CDEE91AEB8A399EA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = CDB9A6A5720EBE3436BD3F35A6AD8D51 /* PBXContainerItemProxy */; }; 7F11632F8C4B59DD3BB4051C89DBAE53 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = CBE3C92A7423E48BDE15756DF5F7D413 /* PBXContainerItemProxy */; }; 7F374E36B80AE76293129D41A96FF3DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = boost; target = EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */; targetProxy = EC57A96C51CBD5A348B2228A7A2873D2 /* PBXContainerItemProxy */; }; 7FDDF5770FADD8DEA8C31B0DCE95FFFC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 4BF37A59C4356B532FE3C0348A090A3F /* PBXContainerItemProxy */; }; 80D81BC05DF9946301984E4F3DC959D8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 0EF26FFCE4BA23EC50BD19A5D1FEBBEA /* PBXContainerItemProxy */; }; 80EA3BB2571AE7264036A211FA77E312 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 3121C4A5AF5E102C5C18BC41E9B82EF6 /* PBXContainerItemProxy */; }; 814262D7504A62E918BE9E839A613667 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 51D23F496B041E29ECBBBB9469B006F7 /* PBXContainerItemProxy */; }; 8214D19E29BC4F9B43CFD87CC22B7018 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = A677F1A562B3A7E3375C13B645B0298A /* PBXContainerItemProxy */; }; 826B6D82D168B27838C2571D3143BDCB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = BD62BAA4B5FFFEAA64CF2EE7B03345C5 /* PBXContainerItemProxy */; }; 828F20A914D5962587F89C8D501B682C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = AF0A642DD817CD7C29D4688D8B28274A /* PBXContainerItemProxy */; }; 828F9C83DE2F06F7C916628EA05F91B1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 2289B5373AAC50ECC91CFE1B2F2350BB /* PBXContainerItemProxy */; }; 8296923833DED2E03B8C666BE6DE6690 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = C442623A96CC4090A6637148EE99E00E /* PBXContainerItemProxy */; }; 8348CE40A97A1B487D1B2FE4C6A432CB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 1C9ACB0F83A2D9C2A753C9B8B7CE9AAD /* PBXContainerItemProxy */; }; 83A97A5415A40C13D0473AA7625FA12B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 818B8E1B916E53B3B8B415FF901A52E1 /* PBXContainerItemProxy */; }; 83D931AC8A3A8844EA71D031AEFEC9F6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTBlob"; target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; targetProxy = ADD9114A2BFC1CBDFC55DD169FA98452 /* PBXContainerItemProxy */; }; 84032E197D1AE2F04791DC93FD90C104 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = D27EDB53457EAF10C145163B90FDE993 /* PBXContainerItemProxy */; }; 8431932AA052F87EEC81F9B95C62FF2B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 1A500E4E5049684BC5D74DB12E6823B0 /* PBXContainerItemProxy */; }; 84BEF175F835CEC76C3BA4509B326ECD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 9CB9DF07CCF04684461C49FDB7B2E465 /* PBXContainerItemProxy */; }; 850EF509C0F4973D25998A85CCC1F517 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 448906A26AA70E7B13E7A1279A5D8B2B /* PBXContainerItemProxy */; }; 8589C20D4651BCDCFF98418A1C87A7EF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = boost; target = EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */; targetProxy = 7E2AE44A3348102D3E4ACF43FE59A494 /* PBXContainerItemProxy */; }; 85C1E90FA3B4C4E24168826381CB9302 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jserrorhandler"; target = 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */; targetProxy = 8AAB6C3E51B1E70B078CFD8A4025514F /* PBXContainerItemProxy */; }; 871D865CD2E0FD7ECE21C10E35270274 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 230B69802ADF4E4DE0EC880F086EDF62 /* PBXContainerItemProxy */; }; 8750AD47ADC9B6FEDFC2A066D7BFFB17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBLazyVector; target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; targetProxy = 86B5CD38F12BDE8F478A7604F2D1F3CF /* PBXContainerItemProxy */; }; 88ECB54C2DC159A81364054DF452E759 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 07FEE5CA0F570179CD895CC0EBCEF25A /* PBXContainerItemProxy */; }; 89236A9ED15BD42914C7EE0DB075FF13 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 056D3BFB7D1D8A7D376FAFA2B66FB8C8 /* PBXContainerItemProxy */; }; 8938CD6C0EA0ADBE192399759E9D2533 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = B6DD8966E1DDD9372FDA125F3D9731FF /* PBXContainerItemProxy */; }; 89535D4EB0336731DEC23A6271479D59 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = 9A59483D3DD8007F31406C2A1D52E8EB /* PBXContainerItemProxy */; }; 89FAF2292B0B577B32C07291FF41EC3D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = D468F98852D61A99CD42F174A928E8DA /* PBXContainerItemProxy */; }; 8A01144C4811FC96968CD28E8FC601CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 77E927E30D46B85E76EB2A6BC7C528FC /* PBXContainerItemProxy */; }; 8AC7F91A27E478D094028729D120C453 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 1C2EB609658547D5066D047531E2E9CA /* PBXContainerItemProxy */; }; 8B08CEFAEA22CE15FF8ECBCB9B952604 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-CoreModules"; target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; targetProxy = A2EB194373B9393B3358E1E1FA0EBD05 /* PBXContainerItemProxy */; }; 8BA87EBAE07B939A129DE936919B2437 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = AE96CA5B7DA7C75729EC0BEF7C0FFE9D /* PBXContainerItemProxy */; }; 8BB4CAD4E9AA9A76F4EFFF8A03EE5330 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = C73838D3F0AFD4D6E76EA1E846E47074 /* PBXContainerItemProxy */; }; 8CE477AD6CC82F0D980B15A3D4A459E7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = E643492F477E73D73B4DBB1DB06BC7D4 /* PBXContainerItemProxy */; }; 8DC5372506CC8E27F51143581C74C5F7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 24F856B5ACF07FE391D964E89D193522 /* PBXContainerItemProxy */; }; 8E44E87D6B5FFB6F70D006C75B7A3B1B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-callinvoker"; target = 2681CB7EF647E61F4F9A43029C235607 /* React-callinvoker */; targetProxy = 7C40A37CAC285B68DA5664FAD4BE3490 /* PBXContainerItemProxy */; }; 900EE9B525D81318F7468BA33F615A63 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = DC87078558AE74568DA001162E941EDB /* PBXContainerItemProxy */; }; 90640B83A8182E361131EC5865B94EF6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 9A63F0A7EC65A8B4E2442C2C924DAD9C /* PBXContainerItemProxy */; }; 907F691A1D77DB86BE3D65612BA344AC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = B24AA1E618A3ECA98448662282BBE973 /* PBXContainerItemProxy */; }; 9412045B42FDBCDBB036F663A3BEC279 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 593B340C65DA8AEF21E6D8AC52660544 /* PBXContainerItemProxy */; }; 947BAD951BF31358EBBD7AB219F896DF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = D96E678A5C6F642E7B0A7E9DC29CF465 /* PBXContainerItemProxy */; }; 94FAD4F9BBCBE1444B11C91C436E40FC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTText"; target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; targetProxy = 2F14569C24AAF9E98FAFC248465DC9E5 /* PBXContainerItemProxy */; }; 9563F68F9BD1749F7443FD66E9590B85 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = E84A9F4D561E1111D32BA3A2B52CDAE0 /* PBXContainerItemProxy */; }; 9574B0698E37FC3108573EFE439B41A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTActionSheet"; target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; targetProxy = B96395E64F84E570087610FC9A4A1AE7 /* PBXContainerItemProxy */; }; 95A27BB9F1F8CA547737F477253E25D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 5330B576E39CDDCC6D01B0513A2C8F64 /* PBXContainerItemProxy */; }; 961BDE36B0A650A306E262C44158CA8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 8B89516148A1AC15EE488B8C02430723 /* PBXContainerItemProxy */; }; 96372FB99D877DCA073114668A01F79C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Mapbuffer"; target = 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */; targetProxy = 12CBD29BC4AA7FCAC2191790822A8408 /* PBXContainerItemProxy */; }; 96F7AC019278453752BB26B62233BA22 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = E13F53BC3F75A136CF62B889D823DA98 /* PBXContainerItemProxy */; }; 977353FAAD596E850D4C7182EB9509D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = 96889FED11AA7E66812D490878B97588 /* PBXContainerItemProxy */; }; 97E7B6DE91BBF0ECDCAA43F61EF2CB2C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 8BE4793AB705B3DB8FC95B2A3022A7FA /* PBXContainerItemProxy */; }; 984847B7473A8412AEFAF77B4664F75D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 34CA178C3014A040FF0B0E0EC2D01AC5 /* PBXContainerItemProxy */; }; 991ED2A86E606300A3C9E5A82B68AC3D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 04F2717E51D21D9611B67F123B87B7E7 /* PBXContainerItemProxy */; }; 9946E1AB867FFEFC550310A00E3C6D73 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAppDelegate"; target = C2B1B75CCC326124F29FE703CC59BFB7 /* React-RCTAppDelegate */; targetProxy = B49957FEA3DBA79C960C4BF33FB89693 /* PBXContainerItemProxy */; }; 99F6DDAF65F28CC726441A0C018AE3A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = 0DF9EB235A025A0E7225BD3835E9A8CC /* PBXContainerItemProxy */; }; 99FAEE95F441DDC413069EB0FD2E0D6F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTVibration"; target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; targetProxy = C85A7AAACB052BE3D7FC7D52B64204D5 /* PBXContainerItemProxy */; }; 9A68278B027713D1161E945A25B9731E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeHermes"; target = 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */; targetProxy = CB02A6F103714BDDE795941B4C8F0F1C /* PBXContainerItemProxy */; }; 9A7B30DF2DCFFDB397FF212296E4935B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 03E24E6D4CF66A0B6865B7EA2B2BCDD4 /* PBXContainerItemProxy */; }; 9AC0F8F93F3A0DB72B7D88512F803C35 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 0BBE9531017E2DAF1FE8803E7ECD8206 /* PBXContainerItemProxy */; }; 9C411B2CC3C4A28BA72E9017965B8DB1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 50EB5FDA61EF17A3F3258D62A351B614 /* PBXContainerItemProxy */; }; 9CA446479094667088F29B3DC4E12F7A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-nativeconfig"; target = B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */; targetProxy = 0D062956D3247F5A6F2348C5E96A2381 /* PBXContainerItemProxy */; }; 9CB7426A4D28082958291C03049EB5C0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 2F88905B01E2F8DF3A2DA844E7BC7E4E /* PBXContainerItemProxy */; }; 9D5BDF20084DF3E8210FEE9F61DE5032 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTVibration"; target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; targetProxy = 29D99B6382EC442BC3E615262B0BCBED /* PBXContainerItemProxy */; }; 9D8860389569C0B4CF9D53F307783D25 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeCore"; target = C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */; targetProxy = 36D6711AE32882ED3092979037CC3405 /* PBXContainerItemProxy */; }; 9DC6B2339493349D425BEB578C7330E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 761B75C34BB1B42FA942F96540E4BC15 /* PBXContainerItemProxy */; }; 9E1BF3FF53787FC2039BF2B7A62F9DDC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = B46597F4B2FF6D8BBB0FCAC80B136EDB /* PBXContainerItemProxy */; }; 9E50028CCFFBB53BD3CED93BCAA23462 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTLinking"; target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; targetProxy = 8469D13E4B9BE29DE37C00B9952D6926 /* PBXContainerItemProxy */; }; 9F3B65DF4A9E574371431515F6480017 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-hermes"; target = 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */; targetProxy = 1F447B67D4490096D87F14FD5876C024 /* PBXContainerItemProxy */; }; 9F7AA6257356748F3AC3589C372117C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jserrorhandler"; target = 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */; targetProxy = 427FF6CB1456A5DB2E43054C10D407AF /* PBXContainerItemProxy */; }; 9F95560B9E4E38DE203B4EDF2F2E238C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 5A66969F2F26AF689BBE09506F583E5E /* PBXContainerItemProxy */; }; 9FD34078FD450123876A7A3CF8C74DDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = B5C49ED7C22908993DA03524268054A1 /* PBXContainerItemProxy */; }; A0662C7E8E6F4BB1BED6AB5116B068AC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = 7F9ADB115EE8B656B0A4D9610F64585F /* PBXContainerItemProxy */; }; A18F34A9AE12CA159FA4BE10BD0F08E6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = FFFED8AC52E33B03563EFCEEEFF2513C /* PBXContainerItemProxy */; }; A254B74C24804FC2C8CB1B1A308C537C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 2B40EAAE1015F3040D2BFC3B84B8C0A2 /* PBXContainerItemProxy */; }; A3A103DDF211E33A422885D060EF6862 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = 57B24B86E8BC2DC4B873AFA4728A28F2 /* PBXContainerItemProxy */; }; A3BDD4A09B967B012B64ACA6D70CA378 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = AC0EFE9849C86BC9EEE3998C75BF7E59 /* PBXContainerItemProxy */; }; A482D354857B96FF6608C1ECB1410DE1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 4BD82DCEA208F83CDCBFE4428A843743 /* PBXContainerItemProxy */; }; A62ADA2BF30BF8351A4A154BA1DFD26D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = FEFEF086D7B146B96B992081E8C52CA3 /* PBXContainerItemProxy */; }; A63481D34C5560C5F3A9199783D01B6E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 0934208EB4E70167C10A41B542FE527B /* PBXContainerItemProxy */; }; A6D31FE8EB6B2659595EE4D3E5B8CC0B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTSettings"; target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; targetProxy = 21E5AFABF1F1B440FA387F63E1ECDAE1 /* PBXContainerItemProxy */; }; A73A9A2AC3DD393BE94B96FC0811F52F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = BC0528EBC67F7BABF5B54EF212893752 /* PBXContainerItemProxy */; }; A7BF697A5BE5F29B8EFC9A4547AE419C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 15CBA2BD8EF64756C0767A60F7567316 /* PBXContainerItemProxy */; }; A8E8A02278FC1510C1E4AE330186E3DB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = C4C8A76B4B78C8FC91DE8EA0A599DDC7 /* PBXContainerItemProxy */; }; AA6B0483A872C31D19C5C582CC33A30D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jserrorhandler"; target = 27F648AD269E94404D6A7547C4F9C683 /* React-jserrorhandler */; targetProxy = 7AF7CA4C4F7DB433479DC151414ECC52 /* PBXContainerItemProxy */; }; AD028C4C9C138F32FF283BF9E651428A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 05D52A397C8C50527687630B5436F9CC /* PBXContainerItemProxy */; }; AD648138192ED2E45C736EEA5CF92E94 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-nativeconfig"; target = B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */; targetProxy = 79DB034638266C6FDC5132A84FA94A15 /* PBXContainerItemProxy */; }; AE118212FA0D279BEBC9F02C20320565 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = F57A6DB070CE213FEBA51D9C1BC21F64 /* PBXContainerItemProxy */; }; AE16BCB7B1F274AFC64E6CE1A73649DE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 77B61E545D3EE505689E5A88FB34006D /* PBXContainerItemProxy */; }; AFF83814306FEE2AB836E168DACED238 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 96C05CE8F4A9CD43357BA06485F8994A /* PBXContainerItemProxy */; }; B08256724219B4019F944355CBD4DEE1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = F36DB966C710B5B333317F75182AED2F /* PBXContainerItemProxy */; }; B0D77E614B2A29B1C9D7D28FC2E4F4F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = 336517C4087738649F1E1F4AB8F8519E /* PBXContainerItemProxy */; }; B0F8796B619A0B7C593B255CE5B08E22 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 26E8C064D0C350303EC25814160E5507 /* PBXContainerItemProxy */; }; B11620F0C0256DCD58AC236A8FB0BF9D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 1A311E894E75265D572441282B7479A6 /* PBXContainerItemProxy */; }; B1E71F384FB952801A11CB94394AC12E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = DB0DED4E98D854FD7FE257842C962DEC /* PBXContainerItemProxy */; }; B2077D6B91054427593B7239A83DFA23 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-ImageManager"; target = B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */; targetProxy = 77BB51BE51B9062B6A3C86AB77078D7C /* PBXContainerItemProxy */; }; B212680BD31F13D2F6279DBAD3A1E825 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 91973EF9B88BD3433821DE7E02BCCE66 /* PBXContainerItemProxy */; }; B24640D5A8CF4509EC3101762B86BCAE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = AA28726CD41308E7D4C6D49AF678D9CD /* PBXContainerItemProxy */; }; B2FC425DE6D70B89E4B66C419D80D21B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 1250E130FB93020268E26EB59677362A /* PBXContainerItemProxy */; }; B339E8D2195D5B0E12F1886B392070B9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = FE3B276DC9F6BE63ACFEBDDE0FC16DEA /* PBXContainerItemProxy */; }; B3A68A22B6988E30A3FE9B295B5ECD18 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 2C77EA8CB35EF7DA9E933C9A98AC198E /* PBXContainerItemProxy */; }; B5E4CB125000A02D7C47D5BC8B2235E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 0743DC1CCDBCCF6C3ECD3224DB5EF4B7 /* PBXContainerItemProxy */; }; B84433E64D21A3285F1532F01F6A24CA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 3BDB96421767BAAB9AE9DC3CE9603198 /* PBXContainerItemProxy */; }; B84F02AF765914933817049A11982A2D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-hermes"; target = 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */; targetProxy = C4A085BD4076C29C8993F50E76C4AACA /* PBXContainerItemProxy */; }; B866B352B4413F93E9054502E08ED0E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = A3265F4A2E09A773944413294B402BBA /* PBXContainerItemProxy */; }; B8F477BE7309D6FAEAD56FADEAB4CEE2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = CBA1639E79B6F6752FA0776C8012648E /* PBXContainerItemProxy */; }; B94AD44411D338A32AFD335004E0B6ED /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTFabric"; target = 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */; targetProxy = E3DB328B666D52096C8CDE6E0757E653 /* PBXContainerItemProxy */; }; BC3FB7331CDD43D5175E4D47ACA6FE66 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = C92744C875EAA3E6A25003782211CED0 /* PBXContainerItemProxy */; }; BC679D6E3BA49D363ED5366763750F81 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 930D2D66F0FBD7D28F5478091197C541 /* PBXContainerItemProxy */; }; BCB6931B0CA96D254A87574AEC2F1A72 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = B8FAF58B12747184E841D23CA71CB990 /* PBXContainerItemProxy */; }; BCC574E946A3A8BCCE454E8E24779B25 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 4A785EB5F5F23DD60E8AF051ECB80951 /* PBXContainerItemProxy */; }; BCF4A5F46D114B97594F5A602DC84C06 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 283F65F4310F568BCD5E39DD9008F1A3 /* PBXContainerItemProxy */; }; BD276791FAA5FE2E186C8D9ABD614362 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-hermes"; target = 20F066A71CEA5EECC7463413442F2B77 /* React-hermes */; targetProxy = D45B03393137D2E267BC703865B2BC4D /* PBXContainerItemProxy */; }; BEB5941835F05376583ABAFE9FFCD30C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = 496FB04383EBFF21B0C7DD179C13F5C7 /* PBXContainerItemProxy */; }; BEB67114B4EC87924688EEBB8C438FD2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 0C825C2B1718A18CE8B22578116AD9D9 /* PBXContainerItemProxy */; }; BEFB8C790410CF0DF996DF64145C5572 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = A3F6FC01C2191DE3CE03D589BC558A96 /* PBXContainerItemProxy */; }; BF0242746B38CA409974007B6FEDDC7F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = B23E152C21979D346C6142DA964C43C5 /* PBXContainerItemProxy */; }; BF6DD00FFD442BC49B4DB25016E20500 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeHermes"; target = 0EF07AE1AD53436E8D2B9B0086EA0163 /* React-RuntimeHermes */; targetProxy = BF9E600B486A8F752CFBCEC2CC0B1A5A /* PBXContainerItemProxy */; }; C03E65D69ABF1DDDBD73AE4A96581425 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = DA4C32AA37270D436CCA7DDE5E8265E4 /* PBXContainerItemProxy */; }; C0494FFB47801B2ED9C5783F9F2E9478 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 8AF54EC1E32237AFABA09EB72FE50F7B /* PBXContainerItemProxy */; }; C068FE076C49A4A30B2A1EDDE1FA06B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = boost; target = EFEA55B1B776B6EB4B16F363BFE64D1A /* boost */; targetProxy = 3890C233A2B634142790E17AFC8D817D /* PBXContainerItemProxy */; }; C07CFD51EE8A8059EBB505CA0AD77069 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = F3C88D21EC8227A4B6BD15269AD29503 /* PBXContainerItemProxy */; }; C094AAB7D234AC0D42232B6DD5D13EDC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 9716285D0C3617CC9DDE2D786CDB6197 /* PBXContainerItemProxy */; }; C0C4944B418CFB040B76FAE356CC1492 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = FC6FA740B07F549C508BFDF59462093D /* PBXContainerItemProxy */; }; C12817B77A384929CC56F08535650439 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeApple"; target = 91D38B18A4E42B1622B83F450706C2F5 /* React-RuntimeApple */; targetProxy = B20E23EC66F22E90033D795BDB740B4E /* PBXContainerItemProxy */; }; C155477CCA345D73F3A4071492EC6132 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = B0FBC836348A84E5E4A688B8A910CE45 /* PBXContainerItemProxy */; }; C17439E0E9B4A3F8B50C259EF28EA9E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rncore"; target = B41E34C6B259B9994C513BE178912491 /* React-rncore */; targetProxy = 3F15F1D48A07466A9F8B095CCA36826C /* PBXContainerItemProxy */; }; C2AA482EF6D398F117C43A167AACC89F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = CF674C4E3255977E4A866B743B5F5753 /* PBXContainerItemProxy */; }; C31A7FFCBECEE6969698A1F56E291707 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTFabric"; target = 8DED5282246ABFC24F4460D3066C84A0 /* React-RCTFabric */; targetProxy = 0C2AF7FB43C100B3E1DB0861160AA83D /* PBXContainerItemProxy */; }; C344777498D9BCEF407C9A6D74F03AF7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 3249A44E515B7313CDC9965DDD33667F /* PBXContainerItemProxy */; }; C369B22F0FAE377E5576A8BFE839BAFA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 23A81CB39D9D41819B69211A5E314A35 /* PBXContainerItemProxy */; }; C38F78AD23A62153D938B6A8D17DB064 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = F5E042F5B280EE727999F2C1B0962307 /* PBXContainerItemProxy */; }; C3F49F70B58B4AE3958816AF5F0A65ED /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 1A02A3242E08B500151ABD06A45B91A0 /* PBXContainerItemProxy */; }; C4841FEDE8D48DC4604247F57A37823A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 5A2F2307A099C28BD6575DF53A5FE136 /* PBXContainerItemProxy */; }; C4DD06F137AEDD5B0BB9846AAB2BD11E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = A4E91955EC6E6D3061E9510D936E61FF /* PBXContainerItemProxy */; }; C53EA7BC9EAF97E7CE9CA81A0BF12E67 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBLazyVector; target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; targetProxy = 971D502A30449EA83A63979D19F07B5F /* PBXContainerItemProxy */; }; C54A063F17CC52B5972FA1780A6C942F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = F211E267308F7BC87A3AE4BDF64731B9 /* PBXContainerItemProxy */; }; C624C37763CA3EB12B45D2F00EB3F35E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 645CCB35B56EBAFA23B7777FA9A688EF /* PBXContainerItemProxy */; }; C63AA7D158F689A3665F23350A713960 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 72691AD3B737BB0E261D6450E7CC91BF /* PBXContainerItemProxy */; }; C690A825B8ED25093B883CF5B4830D9E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 46052FF3D71EC89028E59421AD272DCF /* PBXContainerItemProxy */; }; C6D13BFD6A1F57DBA9138A914EC33F22 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsinspector"; target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 4ADC4B7DC0EDA1567BEF58C181AD6FD5 /* PBXContainerItemProxy */; }; C76947685E95B2A22AF59BB340222EC6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 9AEF32BD5E0F56B926EBB7614301D7E3 /* PBXContainerItemProxy */; }; C8AE99661D1A65D85D469BADA683E979 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = FF6DE5A6963902391657FC083B9682A9 /* PBXContainerItemProxy */; }; C8BE6A7B0D695D555403A8C1FD672877 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeCore"; target = C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */; targetProxy = A16731871E95A4B80332D99A82AEAB81 /* PBXContainerItemProxy */; }; C932986C08154C27C8B08FB09112E220 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SocketRocket; target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; targetProxy = 3AB1A2D14D238F5E0D710BD34D8999D2 /* PBXContainerItemProxy */; }; C9D96005FA6A6CFC6678D7B193F636E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 45BBA5E24DF3E98A1E33D5F7099F04C8 /* PBXContainerItemProxy */; }; CA2CD4FD0049B212F2F4F143613B1746 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTTypeSafety; target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 37BFECCBE92D5B1175C2BF3EEA9DB4A8 /* PBXContainerItemProxy */; }; CA721AC43DBB07B546D7BE24F41219C2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 88F22E372111C3D44383E8AD8F2A1EB3 /* PBXContainerItemProxy */; }; CC7579BBF210D2BB6A286C8DBED8DA3B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = 2218ADE51E9ABC2171A5F0151EFD97C5 /* PBXContainerItemProxy */; }; CCCDA559E86BE44E9BF7387A47AEAE68 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 51059926E149D7D7A46AD514913F4BA7 /* PBXContainerItemProxy */; }; CD005D8BB7E9E45730DD2FA1B03216F6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = AA7D7226734A644480DC2905FB4F0756 /* PBXContainerItemProxy */; }; CD1B88DCEAFFF3408F714BF195A0BA9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTVibration"; target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; targetProxy = 235EEBD6BE88E5969BC95CCFAE81FDDD /* PBXContainerItemProxy */; }; CD98C2F774F5A8508B3A70C6BAEB1A96 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 9731399883802412C950BE25D7336D43 /* PBXContainerItemProxy */; }; CE6EA560516182C0A6BB28F3AC6094FB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTSettings"; target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; targetProxy = 6F59DF752512991C7BB5D7117332E2B8 /* PBXContainerItemProxy */; }; CEFF80344602F76C95E6272C9240036C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 8A0C1EFB40903E64193D071D4DEEF627 /* PBXContainerItemProxy */; }; CF9FB788BE979D8114BF13DAF8BDE56D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = F5A41D11AE2DF6500E1139FE35DBF1C1 /* PBXContainerItemProxy */; }; D013530604A03ED59DD33E5DA7A36E1D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 6EE56E372692932C8B3E2285CB2D30EA /* PBXContainerItemProxy */; }; D0C0B60DD3D34657FCB73A9DE8B10D4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = 51590C4C9586B9EBD9EB9276CDA00E78 /* PBXContainerItemProxy */; }; D0C97A79D6B5E0234424B706959B344C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SocketRocket; target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; targetProxy = 8BAC0CA3123950377D2AA004B741EE09 /* PBXContainerItemProxy */; }; D123B77D7258E6315AD79BB6D955680C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-FabricImage"; target = A5E93F38E96B3A37575BEC88AD69AE85 /* React-FabricImage */; targetProxy = E99784687BF13C6C13BFDF77C9349E3B /* PBXContainerItemProxy */; }; D186B474CBACECCC487284A6C1D73E8F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 09E19762D2B4D46BC3E1439FDA65CFFB /* PBXContainerItemProxy */; }; D1D39D73E05A402E21CB473870E4A4BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = B050846017362E483E884DFA743A5521 /* PBXContainerItemProxy */; }; D1DB74BE38ADE6F876059D7CF8B09249 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-featureflags"; target = 28CE447E6F9C5F0EECC0CDD607D06A24 /* React-featureflags */; targetProxy = C4B664DF5B07F01FA8E61FD0BD39255D /* PBXContainerItemProxy */; }; D24CEC53FD6AF9954BB5EC0ABFD10825 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = 7B2A662A0484D478867544ECF561FF26 /* PBXContainerItemProxy */; }; D2F9E46EE53762B96D30861C5B6374B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimescheduler"; target = 52C3F83DB80E5D527EDA54FA1DE5470A /* React-runtimescheduler */; targetProxy = C342240C879F110F98B32A6586138BAC /* PBXContainerItemProxy */; }; D3A74B4CE67ACE3CD7D76E524C2644BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 5E1475973708794027FA6EF77468A061 /* PBXContainerItemProxy */; }; D3E014E2312527475A53EFF6DEC95B1E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = F9EAF1F1FB5D7937A895952B6DC44E2C /* PBXContainerItemProxy */; }; D3FE2FB1AC5AF0B7210C03C7CACCEE4F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = 3B8A3FBDB20D3A657E89E7BDB7525ED8 /* PBXContainerItemProxy */; }; D50E0503B0649D4A32DEA23BFA42C61D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = B3A65B874F5E1F12E1BEE7077B201AF2 /* PBXContainerItemProxy */; }; D596FE4363A5F7DED779B98D3DECE515 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = 285E1159FDF1A7A09F6A29288FE2D2C3 /* PBXContainerItemProxy */; }; D5B29CCC47333E6A4DECCCEA63418522 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = A33E41C8F72330ECDE20BF394124C97B /* PBXContainerItemProxy */; }; D5EFD2E9F124E1BAB6AC216A804BAF12 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 34B293D00EA654992B64C623FB73669A /* PBXContainerItemProxy */; }; D6064FA2E952381FD5566D4FE51ADCBE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = B122FEC78343AAB6003C5DAA20FF12A8 /* PBXContainerItemProxy */; }; D64FBFB3001F5CD6E0240571ADCE2DD8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 1E43F670654169F733EBF0224B62C200 /* PBXContainerItemProxy */; }; D6F113C392C802440FC28E2899F6D75C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 3A88FFAE788BA5C7005A06203E2D5B09 /* PBXContainerItemProxy */; }; D865588C4D23024C831B0C28A68F836D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = BB5387DCE059C87AA11AECE4CE628A71 /* PBXContainerItemProxy */; }; D871603375871A9101013BADEECA2E73 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = E442B4B6A2F8AA2C693319580C2AF969 /* PBXContainerItemProxy */; }; DA0E7DC74C748518BFF8C294148EDAE8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 6C63CA93F2CEB17BE0AB630B55D93DF7 /* PBXContainerItemProxy */; }; DA18253AF45CCA4B3F48F3534E2E39B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 9D4B5C2351B1CA9FA4CE976414BF39CB /* PBXContainerItemProxy */; }; DA81774A8A6DB56723A413D0EE8927C6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = FEEBE7070BF647FB6130AFBC699EDA46 /* PBXContainerItemProxy */; }; DC14CDA2247EDD85F3EA1DDEF118E059 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 1F19152BF279C2350CFF110149351FCA /* PBXContainerItemProxy */; }; DDEB2059B6B32BE5EF7B55C7C7112CD4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 933D10BF42FEB63C8C84E9E62A6B915F /* PBXContainerItemProxy */; }; DE4836880D0968B12D6E0A473EF2A047 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = simdjson; target = 45B79B0C60C74716DCD2AD7BE782A719 /* simdjson */; targetProxy = 7158D0B64E400178ECFE8BDBAD235DA5 /* PBXContainerItemProxy */; }; DE547671DADE1EAA3518584FB142D4D3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-ImageManager"; target = B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */; targetProxy = 1C26555D9AAE15CA4E6E78862CB2F8D7 /* PBXContainerItemProxy */; }; DEA448341ABAAE0D25466C34F1F235A4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 995ED0C60B49D159FBA98BBF575252AB /* PBXContainerItemProxy */; }; DFAE25DECCD0A8C005755C2E97CB95EF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-nativeconfig"; target = B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */; targetProxy = 3550D2C7B73010DD94B2507B76857F52 /* PBXContainerItemProxy */; }; E0CC9856A49E4B0C1F8060683656BF84 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 0841A812345E34F753B65CB24CDDECE4 /* PBXContainerItemProxy */; }; E0F2CB12CF095E00B9403D3AE141BC5C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = CEA49CA159329299D1916EE8ABEDB910 /* PBXContainerItemProxy */; }; E17833655FED386BC89BA3174ECD7B76 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-runtimeexecutor"; target = 54EB12219122432FA744088BC5A680D2 /* React-runtimeexecutor */; targetProxy = 792C4CE9FB1431C17A2D5C379D689D80 /* PBXContainerItemProxy */; }; E2B5EC8381B3A50F28D40F975A2672B6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 072B6EE4F36C319A81BD03E2D2FD3B6C /* PBXContainerItemProxy */; }; E39BA450DBC90AD38839CAC587ADA2E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = 18FF611EE7F2DCFF095EE41573494D81 /* PBXContainerItemProxy */; }; E3B183453B2C859BF77E884025BB337B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = A4EAB72AACA2C806DE0C40C49536CDD2 /* PBXContainerItemProxy */; }; E3C0BF921958C89B2B9262B8B7517F4B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-graphics"; target = 4BDD270EACFE5730793AEF0B9BCCBA31 /* React-graphics */; targetProxy = 6EB4F5AD2509B4497784B3A8CBBC25D4 /* PBXContainerItemProxy */; }; E3F0DCA13D829C18DBC21AF71610055F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAnimation"; target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; targetProxy = 58D01897CD4E2D764437DA0038900ACE /* PBXContainerItemProxy */; }; E5406C298236EDB8B77BE6D95F60EE6E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = E8F7C167F6E0596B97FAF940464F2AAD /* PBXContainerItemProxy */; }; E55D350A9268572D7FC8C05E97502888 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = 4C00808CD01965B91DB4DE20301AE79A /* PBXContainerItemProxy */; }; E5E22178DC5D3A1B2EDEFFE3240FE5F5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = 86A2C6528D2E3ACA552AD500A9049C6B /* PBXContainerItemProxy */; }; E7B3814796F81B42574B7892A825D853 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-nativeconfig"; target = B69D68A280EC3E60655BD2C715ACB004 /* React-nativeconfig */; targetProxy = 1970E63906E04E6F5CC4059A6A594441 /* PBXContainerItemProxy */; }; E87D08CAA09D3388E7127BB834C4D010 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-NativeModulesApple"; target = 5807741745EB757C97C09F2D56726BE0 /* React-NativeModulesApple */; targetProxy = 92FD7911CF88661BEC8C53326ACD95D0 /* PBXContainerItemProxy */; }; E9AADA080FCC408EA94BBC9B3500DDAC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-rendererdebug"; target = 9F96BF8B7FC28F5CF47242D7A73B11DA /* React-rendererdebug */; targetProxy = 41DB73748AA04BD6E5CD07130AAFD267 /* PBXContainerItemProxy */; }; E9C48BEA57BC9B4B9A176BA0823CEF2F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RuntimeCore"; target = C7F600C052808C7C987C26EC74B3A290 /* React-RuntimeCore */; targetProxy = 87161657935B5B7DF31A7B031AA1BD08 /* PBXContainerItemProxy */; }; EA0D661BF9E1291A368BD6C59D9375AF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = B9A089006BD78E0587595CAB4CA1C15D /* PBXContainerItemProxy */; }; ECF7B124979853303D57F72C1816C3DE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = WatermelonDB; target = EF554722D0D580AC702A6DAB8FDBB2B5 /* WatermelonDB */; targetProxy = D3E449977C2F1B93649FE5935155E48B /* PBXContainerItemProxy */; }; ED51FC4ED914B90C6FB3A3A184B18632 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 08479658374D8A84889129BFF1758177 /* PBXContainerItemProxy */; }; ED633AA62BFF42E31A4FAA9CF28BB16F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Mapbuffer"; target = 091003D98BDA80B01B9E35CADE3947F0 /* React-Mapbuffer */; targetProxy = E813DFDA85C90877A292688B397709DC /* PBXContainerItemProxy */; }; EE1683DA42ED1D4C631FC47BE8AD9535 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = B389764894DEAE9026600EDBCD8A4763 /* PBXContainerItemProxy */; }; EEC595C51EF9EDBB40E0F5B472E38245 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTText"; target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; targetProxy = C0833537177F0AC13EEDE7B7CADA02A2 /* PBXContainerItemProxy */; }; EEE2BC18221D4FB58F26D95BA6FC69BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Fabric"; target = 50DBAF155FAFB994E067BA8820221EDF /* React-Fabric */; targetProxy = E328FF71A41B524BF24AFE31D600C8BE /* PBXContainerItemProxy */; }; EF402A140375BB13E5C26D861193A401 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBLazyVector; target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; targetProxy = DFA19DBEE7782E6D2AC285DEDEC6A394 /* PBXContainerItemProxy */; }; EF5884976FE3748E18B03AC28DED4AAC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 0BD3FE504C29567775D9641CEBB9B2B5 /* PBXContainerItemProxy */; }; EF845B0031E0D8C62943D74C2C5B1956 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = F6E4CB08E98088B45C9D01C8C23CD322 /* PBXContainerItemProxy */; }; F0540A7333ABA06B5224BADDE669D817 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-CoreModules"; target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; targetProxy = C339D19AFB5425F4ACFF222B89E642C5 /* PBXContainerItemProxy */; }; F14DCBE464449F61D897CA3C769D6C93 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-logger"; target = 083B602EA19B4AD50EC53C0602F29A7D /* React-logger */; targetProxy = 2787D1BB90BE7254AF9CAA44E76EDF74 /* PBXContainerItemProxy */; }; F1B334885D6D8C27483276B36A4D8CD6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsi"; target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = C66D90E52EFB399DB604AC9B7394D4BD /* PBXContainerItemProxy */; }; F1CF5620523DB34FC9603AFE5E3FCE46 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "hermes-engine"; target = 985FEA01F314F3C00F0C1E1181E6C4A5 /* hermes-engine */; targetProxy = 8F3EDB0170BE68F1914E876834457955 /* PBXContainerItemProxy */; }; F2C2F506161C15F85CE462E289D34B51 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = E59433E2F97541C6CE25FB34745C0597 /* PBXContainerItemProxy */; }; F34157E1DF7D5E455A66302A9C9AD088 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 6682A5C614DCD26B5D7B0DE8C3DEB7C0 /* PBXContainerItemProxy */; }; F45BCAC1136338F32A9CB80C9B478209 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-jsiexecutor"; target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = EFB0F809D1F6A97E2AACC5F39FBBDE3A /* PBXContainerItemProxy */; }; F4A8A11533BA5371EB5105103BFD9E90 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = 58D8334E9B16E13EB96FE3FE0FDCF10F /* PBXContainerItemProxy */; }; F50C79BA5E25D2CE982062B263ADCA17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SocketRocket; target = 1948D0B63D2CF6A48E18B0B292BC6091 /* SocketRocket */; targetProxy = B455D622235FFAB0ECAD084D352B56F9 /* PBXContainerItemProxy */; }; F6E7477DEC8DA6FFF14280294749452A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Codegen"; target = 66B8F5758E6F90E16807A85C003CE61F /* React-Codegen */; targetProxy = 470C26614128A65CB3DFE45361C557CA /* PBXContainerItemProxy */; }; F7269812A409325D81BBDB1626D42A5B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-utils"; target = 30621D5A9764AC0BD9D02E87B2EA6665 /* React-utils */; targetProxy = B875F5E8A9737CADD56F2D32A8D43A6C /* PBXContainerItemProxy */; }; F77531E668A19B6443CBD7E19D27545D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 0F6F6C6360E16A9A1264290F55453760 /* PBXContainerItemProxy */; }; F7A0AFA84119944170C3962FDAED17D3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DoubleConversion; target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 11F2156C55352C7A4376481AC963683D /* PBXContainerItemProxy */; }; F85656E4964D16005F093C8BD55E4612 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-perflogger"; target = F1E2583679398CB5F4D2B3272E9B198F /* React-perflogger */; targetProxy = D075EC87D0910DE9AA411C7752F01529 /* PBXContainerItemProxy */; }; F86D55633179768891C4FADBBC92E034 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 69F28387CD69BA9EB00ECC48BBE04334 /* PBXContainerItemProxy */; }; F87F876F414C87A2BF69648DAE44FFF0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTSettings"; target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; targetProxy = F1A51BC2544543B9EA596410040D2824 /* PBXContainerItemProxy */; }; F9A8004C6196E9C33150C72E5FC1683E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-ImageManager"; target = B5E1D7706FCB7EC5FF39F8CDA49A5653 /* React-ImageManager */; targetProxy = A2DB2A457F35677E14332209CA3AB475 /* PBXContainerItemProxy */; }; FA042F3DFD66A81A0915835F4787ABAF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-debug"; target = 0C050E11C4409D3BFAE9CC219C4D6195 /* React-debug */; targetProxy = 64B026DA708A8DEF22DD19ACC82A7D53 /* PBXContainerItemProxy */; }; FBC0958CCFB9E09A2F566E87296DFE17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTText"; target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; targetProxy = EB6C649F337A405031F9117FA5BA3422 /* PBXContainerItemProxy */; }; FBDAE38412AAE074731A400CBF19F946 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = WatermelonDB; target = EF554722D0D580AC702A6DAB8FDBB2B5 /* WatermelonDB */; targetProxy = CBBEE84629A720F7DD2A47F106239061 /* PBXContainerItemProxy */; }; FD09F1B752681CA8CCC4A39FB3D55188 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 8CAFE184AE4C9DD706ECA03373F2C811 /* PBXContainerItemProxy */; }; FE5A1DF1E4AAEB8FF1AAE875962EBFF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "RCT-Folly"; target = EC55D52694092A9D0E6A78EB01207EB5 /* RCT-Folly */; targetProxy = C5B2D41028C0D910182768F522988D50 /* PBXContainerItemProxy */; }; FE8D0EFE7556F1EBD21261B17D82DFF2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = fmt; target = 02B79DFED924FA19CA90EC69614733E1 /* fmt */; targetProxy = 7F45F83A2EAD4093F12D40375946D470 /* PBXContainerItemProxy */; }; FE902201A16A01BD21B612A64BED9AAD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAppDelegate"; target = C2B1B75CCC326124F29FE703CC59BFB7 /* React-RCTAppDelegate */; targetProxy = EDE299B0E0E532AF35E34DAD285C0EDE /* PBXContainerItemProxy */; }; FFA7F1EF8FAC3A0952EEFDE38DE91E5A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 8B9623D05D47EDD8969CEB97507656FA /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 018A699977B43DF54A5388A977841260 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 50CCFCC93BE3FD24C09BEB499BEACA7B /* React-cxxreact.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-cxxreact/React-cxxreact-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = cxxreact; PRODUCT_NAME = "React-cxxreact"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 04778D8576ED573ED3D035D5FD0C8790 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 49C7723A5D97C7404CB0972A1F44276F /* Yoga.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/Yoga/Yoga-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/yoga/Yoga.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = yoga; PRODUCT_NAME = Yoga; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 056694F8D0C86B3713F8353E4582F89A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A73C90F6C769770D58136250FCF48CCC /* React-hermes.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-hermes/React-hermes-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "HERMES_ENABLE_DEBUGGER=1", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = reacthermes; PRODUCT_NAME = "React-hermes"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 08CDA085B84DEFE53F3E9FC57495A7B1 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4C138289B336DA780427BF289634EA74 /* RCTRequired.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 09DE6D1D41918E704C850693789D572E /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7568E7B5AE849AB3EBC22558FB87A3A0 /* React-jsitracing.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 0AEE42B6AF134488CE307D9407337DD5 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A275DD42FB75440C81B2F60BD6B23196 /* fmt.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/fmt/fmt-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = fmt; PRODUCT_NAME = fmt; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 0C4A7CE2F9E8B1F3AC5496501BBA1B1A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = FEB255691DB29610BDE1D3938C435B8C /* React-Core.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Core/React-Core-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React/React-Core.modulemap"; OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DFOLLY_NO_CONFIG", "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", "-Wno-comma", "-Wno-shorten-64-to-32", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React; PRODUCT_NAME = "React-Core"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 0EEDCB8A7B61E6778E280CC8A5B4C5B0 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8A80985843E4723FCDE8D548AB93AC54 /* React-Mapbuffer.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Mapbuffer/React-Mapbuffer-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_mapbuffer; PRODUCT_NAME = "React-Mapbuffer"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 10066A18E063481B550E23ADA03005AE /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 846735472D63BEB4DB75ECD903ECD756 /* React-hermes.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-hermes/React-hermes-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = reacthermes; PRODUCT_NAME = "React-hermes"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 101CBCE1C2C1E8BA5847D6EAD5702399 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = D5F81F5AAC387C14EE7017B61CB495EC /* Pods-WatermelonTester.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 15.0; MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 13D10FC94AEA7BB8B0F77CE5DDA07D9F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 967DBD838FB53E8907C105802E22ECCA /* React-Codegen.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Codegen/React-Codegen-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; MODULEMAP_FILE = "Headers/Public/React_Codegen/React-Codegen.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_Codegen; PRODUCT_NAME = "React-Codegen"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 14C1CF143C41528891604A92041BEE5A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = EC7EC957168B2840A6783186671E89DB /* React-callinvoker.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 1926B4BB348A3C6E0E0A3D464CCAFBDE /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = FEB255691DB29610BDE1D3938C435B8C /* React-Core.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CODE_SIGNING_ALLOWED = NO; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/React-Core"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IBSC_MODULE = React; INFOPLIST_FILE = "Target Support Files/React-Core/ResourceBundle-RCTI18nStrings-React-Core-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.4; PRODUCT_NAME = RCTI18nStrings; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; name = Debug; }; 1D363B72BC5025D9B8DE46B8F3631147 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4B2CA6BADDBABE04EA3FC848D2DFBA7C /* React-RCTFabric.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTFabric/React-RCTFabric-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/RCTFabric/React-RCTFabric.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTFabric; PRODUCT_NAME = "React-RCTFabric"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 1EB589223DB61A0CC57D72143471CD9C /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 33AFE6C6C66107B924778D5E609CBE54 /* React-RCTActionSheet.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 1F9EF9FDD1FFA34C2022EBF931B0F37F /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E1140A4CC7FEA96D57FF547DA1D75EA0 /* Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 15.0; MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 2833F66F875A26F844089CF6BFF332EF /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4DE72A397551E705994E98D86904430A /* React-RuntimeHermes.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeHermes/React-RuntimeHermes-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_runtime_hermes; PRODUCT_NAME = "React-RuntimeHermes"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 2A29B58589FA66317C725FBE5DCDA803 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = B0846154EC35111B28426222762CF880 /* React-RCTFabric.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTFabric/React-RCTFabric-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/RCTFabric/React-RCTFabric.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTFabric; PRODUCT_NAME = "React-RCTFabric"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 2B221AEBC14A861BF463CF46C260CCB7 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = F0EA3D90914575269885513BFC07386C /* React-Mapbuffer.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Mapbuffer/React-Mapbuffer-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_mapbuffer; PRODUCT_NAME = "React-Mapbuffer"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 2B3C3F7DAF3E97ADB03B625260E9A2C3 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 543D873E1BAD025BDD864DB650682C5D /* React-RCTSettings.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTSettings/React-RCTSettings-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTSettings; PRODUCT_NAME = "React-RCTSettings"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 2C71D7027C68688E621A0314ABAE9630 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A7C3FA3DEC4092F63BB39E1F2566D4BC /* React-runtimeexecutor.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 2D805517E0E395E6F8828785D5DE0D66 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7157DE4FF39A888005019A6919C6304D /* boost.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 2DB8CA194A472322BDFF94E57E7AD3AC /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9EB5D5242D476B50F6A84EA6ECF95DAF /* React-FabricImage.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-FabricImage/React-FabricImage-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_components_image; PRODUCT_NAME = "React-FabricImage"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 3410F70629881DF6D9E1146E1EBBF55D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1C9CA7D5550AD1D94A7AA763FBA17534 /* DoubleConversion.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/DoubleConversion/DoubleConversion.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = DoubleConversion; PRODUCT_NAME = DoubleConversion; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 35DED647B18E0C5F5E2B4A45D62DB3D6 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7125A220ACBD1ACDAEC0A33004BF401B /* React-jserrorhandler.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jserrorhandler/React-jserrorhandler-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jserrorhandler; PRODUCT_NAME = "React-jserrorhandler"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 37BCE36EE3C38B37F32177E13BE793E9 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = AD2710EC72C624EB87F820405512AA45 /* React-Fabric.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Fabric/React-Fabric-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_Fabric/React-Fabric.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_Fabric; PRODUCT_NAME = "React-Fabric"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 3D1D91B804D25B65783055F9D295ED4F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A07A822153FEC0A3E902A56BD0450957 /* React-RuntimeHermes.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeHermes/React-RuntimeHermes-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "HERMES_ENABLE_DEBUGGER=1", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_runtime_hermes; PRODUCT_NAME = "React-RuntimeHermes"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 3D4FC99CDC76C9524BC1F015F45D5E37 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 481D4593ECDD5D02E193B28FEF265A45 /* simdjson.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/simdjson/simdjson-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/simdjson/simdjson.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = simdjson; PRODUCT_NAME = simdjson; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 458EA9D2AFB826AF6F125A23390B3E72 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 65D4FD7CDCA49048491D835A28092DCC /* React-rendererdebug.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-rendererdebug/React-rendererdebug-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_debug/React-rendererdebug.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_debug; PRODUCT_NAME = "React-rendererdebug"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 49D01D1CC6D95E241EEF124BCD449141 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6CD702447664E9814FDF64C2521FE0A8 /* glog.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/glog/glog.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = glog; PRODUCT_NAME = glog; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 4B3CDC8D3D3FFFA5EBD6A180E54DE221 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5883D7A51536D3FB292BBC1FEF7C6C1C /* React.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 4EAB1F82D42083A7A6795A9385EFD439 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4C664E2A68FE1D2FA0458ED4485088A9 /* React-RCTText.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTText/React-RCTText-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTText; PRODUCT_NAME = "React-RCTText"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 51CE8C2ADBEFC3589D77A365F30FE6F6 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5601EFF66A7656BA9E668AE17351D360 /* React.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 531D19EFC8B7A07D8B5362B29A4F5877 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = D1A2CC54073AD525A26E9DC8CA1044F5 /* React-Core.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Core/React-Core-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React/React-Core.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", "-DFOLLY_NO_CONFIG", "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", "-Wno-comma", "-Wno-shorten-64-to-32", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React; PRODUCT_NAME = "React-Core"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 53BE662BA9F4225F5401BA92D84C61AE /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0BFAD875BDFCB017A45CCF7A1AD8AE34 /* boost.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 556F215F73AD70669785BB704E7FF3FD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = E553A373CAD882BEE4374E43EBAD7556 /* React-RCTImage.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTImage/React-RCTImage-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTImage; PRODUCT_NAME = "React-RCTImage"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 572933D427FDEA7D3C0815E9B99D61F0 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 997842162A2D57DA5A2636E554A28F19 /* React-utils.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-utils/React-utils-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_utils/React-utils.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_utils; PRODUCT_NAME = "React-utils"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 592181D556023CD1C894B701362E4DA4 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = D1A2CC54073AD525A26E9DC8CA1044F5 /* React-Core.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CODE_SIGNING_ALLOWED = NO; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/React-Core"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IBSC_MODULE = React; INFOPLIST_FILE = "Target Support Files/React-Core/ResourceBundle-RCTI18nStrings-React-Core-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.4; PRODUCT_NAME = RCTI18nStrings; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; name = Release; }; 596D1E536C46F393552CAF1F8BD63D31 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 69377A3F74E51E3872AC1F550123E373 /* React-RCTActionSheet.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 5D836308F838876BEA6E15EA4442264C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 106A05F0520EFBA0E22815812BDA18F5 /* ReactCommon.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/ReactCommon/ReactCommon-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/ReactCommon/ReactCommon.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = ReactCommon; PRODUCT_NAME = ReactCommon; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 61821F3B24E655D15183326DC352D9BE /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = C609BD215F18E3B6ACB3641DBF1B200C /* React-rncore.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 675390F86EB23FA49464FB782CAF0014 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 734BE1C2E4FE1B7AA7823A95F6F55FB4 /* React-runtimescheduler.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-runtimescheduler/React-runtimescheduler-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_runtimescheduler; PRODUCT_NAME = "React-runtimescheduler"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 678D48C418EB8199FBF88BD9F57F8447 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0146BE1DD8D87E794B0CFD58725CC02C /* glog.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/glog/glog.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = glog; PRODUCT_NAME = glog; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 6A776DA165E894C693E080A92B873914 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = FA6E512F724BFB0B3D270261962078F8 /* React-RCTLinking.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTLinking/React-RCTLinking-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTLinking; PRODUCT_NAME = "React-RCTLinking"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 6DB5D13F19305EB6CA0B293E0BF786CD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A0C9633F0AEEFB533D94C4D5B1D9CFDE /* React-perflogger.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-perflogger/React-perflogger-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = reactperflogger; PRODUCT_NAME = "React-perflogger"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 6EBB7CB930647993566D4C38C4ED32B2 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4148047344F184B4D856D414B9B4349D /* hermes-engine.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 7291D0787BB051F79F3D0EAF355E78A0 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 99E222D0C7D14CFBD1BC586704C58A9D /* React-runtimeexecutor.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 72988AE6F2442AF167ACC14C8D84C1FF /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2E12202A59E36B86AFC6D2CB7CC7B1A2 /* React-CoreModules.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-CoreModules/React-CoreModules-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DFOLLY_NO_CONFIG", "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", "-Wno-comma", "-Wno-shorten-64-to-32", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = CoreModules; PRODUCT_NAME = "React-CoreModules"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 7487028E6EEFFE8D0A9F2AF94BD4AA1A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 22F665521DA4A7B91AD3CDC51E8779D6 /* React-RuntimeCore.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeCore/React-RuntimeCore-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_runtime; PRODUCT_NAME = "React-RuntimeCore"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 749D29305F3B147BEA433A8ED3A52055 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6F03806CF8FEA9AE1097FB463956AAD4 /* React-nativeconfig.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-nativeconfig/React-nativeconfig-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_config; PRODUCT_NAME = "React-nativeconfig"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 76FAF1D653E3091D8F31A040BCAF3242 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 12B4501A9455AFB01AA0089214B8A38D /* React-jsi.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsi/React-jsi-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/jsi/React-jsi.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsi; PRODUCT_NAME = "React-jsi"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 77779BB20E55F693035240DE888044A8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E39F032BC206A3CC16C40890B632D25E /* React-logger.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-logger/React-logger-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = logger; PRODUCT_NAME = "React-logger"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 7B6774F79AB067206CA65BBF3ADDE822 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 11FCAB3F234C2F7A1E00B43655EF0707 /* React-RCTVibration.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTVibration/React-RCTVibration-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTVibration; PRODUCT_NAME = "React-RCTVibration"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 7E1661B1D42FD4320D2DF45DFBBF0569 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 3EA47022B15AB1C45235DBA9B57DA776 /* DoubleConversion.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/DoubleConversion/DoubleConversion.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = DoubleConversion; PRODUCT_NAME = DoubleConversion; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 7EE96DBD4F3FD36343287841E13E3E42 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = DB93F82879D24A74491FCA910E31A733 /* React-utils.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-utils/React-utils-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_utils/React-utils.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_utils; PRODUCT_NAME = "React-utils"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 8240BCFA16E2325996C60923974225AB /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 902581D4E30B461C86B20B03CC2F5AA6 /* React-RCTAppDelegate.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_RCTAppDelegate; PRODUCT_NAME = "React-RCTAppDelegate"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 82EFCB4F4469DA6AFF305D017CB93AFF /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 07AE3DB6F5EB2B92FE81A1B8A4CE6BE8 /* RCTDeprecation.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCTDeprecation/RCTDeprecation-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/RCTDeprecation/RCTDeprecation.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTDeprecation; PRODUCT_NAME = RCTDeprecation; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 83A1E30C35D447DDFEE09B9845881E86 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 77CE993F9446B711B336A9AF061A5504 /* fmt.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/fmt/fmt-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = fmt; PRODUCT_NAME = fmt; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 857D2EEFD5273048A02DC360E3945215 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7C910125B6ECED6233B803D062331A90 /* React-RCTNetwork.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTNetwork/React-RCTNetwork-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTNetwork; PRODUCT_NAME = "React-RCTNetwork"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 85D200DC120335672B1B81C7F2422A9A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 52DFAF9CB84CA1E1BDC56A3F71A3C404 /* FBLazyVector.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 8760A2D85E97AB06F84ACD71B7BD299F /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 325477957D7D1B6F9F9C72D859C2E8BE /* React-perflogger.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-perflogger/React-perflogger-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = reactperflogger; PRODUCT_NAME = "React-perflogger"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 87FA83E446D43813C592A551733FBFF5 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = FFE3B6010494BF1759723F25C1271613 /* React-RCTVibration.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTVibration/React-RCTVibration-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTVibration; PRODUCT_NAME = "React-RCTVibration"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_DEBUG=1", "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", " ", ); PRODUCT_NAME = "$(TARGET_NAME)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; USE_HERMES = true; }; name = Debug; }; 931B4D02069204C8B36EF5077FA0C069 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E39930085671F1947A94AAE3B2EB3580 /* React-NativeModulesApple.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-NativeModulesApple/React-NativeModulesApple-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_NativeModulesApple; PRODUCT_NAME = "React-NativeModulesApple"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 93790FAB2314B5185C12CF46BF260616 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = F923F037E88C68DA2463BCD75AA9ED60 /* SocketRocket.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/SocketRocket/SocketRocket-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = SocketRocket; PRODUCT_NAME = SocketRocket; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 9553C89E183877A5CB2F3C6801BEC129 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "$(inherited)", " ", ); PRODUCT_NAME = "$(TARGET_NAME)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; USE_HERMES = true; }; name = Release; }; 976E7D6E4A2D2582C2D63BC38DFC725E /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 78D72FC8CF42B31C8EDAD6F8657F610F /* React-RCTAnimation.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTAnimation/React-RCTAnimation-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTAnimation; PRODUCT_NAME = "React-RCTAnimation"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 9793834942B6B511FCAC87E74D4AE4DC /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 441AA6664650EC12BAF8937E4A882741 /* React-Codegen.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Codegen/React-Codegen-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; MODULEMAP_FILE = "Headers/Public/React_Codegen/React-Codegen.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_Codegen; PRODUCT_NAME = "React-Codegen"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 9F5D655EFEE356B6278439617431B389 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7B51B43D6B45FB260FFA0B15BFED390E /* React-jsinspector.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsinspector/React-jsinspector-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/jsinspector_modern/React-jsinspector.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsinspector_modern; PRODUCT_NAME = "React-jsinspector"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 9FD952B7BE0C46A0DF7E6AB4EC3072E2 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = C31DDCFAF4110E35C011007CE400A3D4 /* RCTRequired.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; A0BBCE59E95803992E15B022E523A32A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = DB803AD9555BB8D6B00BBA6644681627 /* Yoga.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/Yoga/Yoga-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/yoga/Yoga.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = yoga; PRODUCT_NAME = Yoga; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; A7036092C396D0E15E8494AE7E86C458 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2E89F76541853DEFE4E1B570E724F503 /* RCT-Folly.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCT-Folly/RCT-Folly-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/folly/RCT-Folly.modulemap"; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = folly; PRODUCT_NAME = "RCT-Folly"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; A79343D4FCC4946246DDEC2EB1498F89 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6387BDDE6369AEDABBA8E222A92D7DDE /* WatermelonDB.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/WatermelonDB/WatermelonDB-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = WatermelonDB; PRODUCT_NAME = WatermelonDB; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; A9B99E2F7E73EF951B0D3F31B92B673F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9033A744B6DD1EB398DCC4DEC2188393 /* React-debug.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-debug/React-debug-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_debug/React-debug.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_debug; PRODUCT_NAME = "React-debug"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; AE90C8871B9E2C95A56150448D932D54 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 047508626E4450B1D2FB80B3358F97F6 /* React-ImageManager.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-ImageManager/React-ImageManager-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_imagemanager; PRODUCT_NAME = "React-ImageManager"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; B0F96B3D84646746679A0633B4255B12 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = D40D2FA9CCC999A6A1985688544C9701 /* Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 15.0; MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; B366651097A40B84BBA78641F0929939 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9046E45D1CA4C4109F20975FE05769E0 /* FBLazyVector.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; B7355507D474FD8BBD3E60F24A667A65 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1544C565704FC17B15EBCF4F926F4C60 /* React-jsiexecutor.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsiexecutor/React-jsiexecutor-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsireact; PRODUCT_NAME = "React-jsiexecutor"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; B75F6C2CC510DF3A9CF307AC1FE8884F /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9F03A2E19DD75677633924F1B93787D1 /* React-RCTAppDelegate.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_RCTAppDelegate; PRODUCT_NAME = "React-RCTAppDelegate"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; B8CBE1EC8859C96FB379248A1B7A3F2D /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 3B7CA49DCCF91C74062D35600488A355 /* React-jsi.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsi/React-jsi-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/jsi/React-jsi.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsi; PRODUCT_NAME = "React-jsi"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; B91E69DB0F6A8D8C43413CBAF866AF10 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E8A93054841794EAD58EB675761B8905 /* SocketRocket.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/SocketRocket/SocketRocket-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = SocketRocket; PRODUCT_NAME = SocketRocket; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; B9DF6E69CBD6AC7C082B3B20661FC457 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E951AE3ED64705A1E7CF71EDD854B178 /* React-RCTImage.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTImage/React-RCTImage-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTImage; PRODUCT_NAME = "React-RCTImage"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; BA0B546CC26F64AB7A03D77C4C2936A7 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = DAEB77A1371F2344F999D880C3A90E0B /* React-RuntimeApple.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeApple/React-RuntimeApple-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = ReactCommon; PRODUCT_NAME = "React-RuntimeApple"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; BA6F6F866B15E5642C85804F1C4EDEFC /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8C190024D996EF72661EA3DECD88FD76 /* React-RCTLinking.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTLinking/React-RCTLinking-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTLinking; PRODUCT_NAME = "React-RCTLinking"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; BB2873BBFB708E1D15CDBBF71949B6AD /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 776825034C674A4EB458170D6BBB3139 /* React-RuntimeCore.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeCore/React-RuntimeCore-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_runtime; PRODUCT_NAME = "React-RuntimeCore"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; C5D670E4CCEE2B63BA55AD8411673B6F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 56909D6C087AAA9D6C77D684FEC0C328 /* simdjson.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/simdjson/simdjson-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/simdjson/simdjson.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = simdjson; PRODUCT_NAME = simdjson; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; C63640657EED77D8622FE18B3A447727 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 55F26557222F60DEF94D6A5C8A9D24F9 /* React-RCTNetwork.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTNetwork/React-RCTNetwork-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTNetwork; PRODUCT_NAME = "React-RCTNetwork"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; C7A496836DFD638F181789F01B6E001E /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EDE4EBF1DFE11D301F8A60F2D5B99F29 /* RCTTypeSafety.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCTTypeSafety/RCTTypeSafety-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTTypeSafety; PRODUCT_NAME = RCTTypeSafety; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; C9099507DFF7989CAC568482DD830342 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EAA2B5EA3356A9C6FCE82CC15F04FDC0 /* React-RCTSettings.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTSettings/React-RCTSettings-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTSettings; PRODUCT_NAME = "React-RCTSettings"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; CA4F6381FF1B7E6A3473AD1A3CC763A8 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0EB25BDE8A306950B650A09F1A8ED625 /* React-logger.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-logger/React-logger-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = logger; PRODUCT_NAME = "React-logger"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; CAAA94DBEF54BED737F7E295DA145198 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = AB3065BC1723E238FF985D2A37F0A542 /* RCT-Folly.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCT-Folly/RCT-Folly-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/folly/RCT-Folly.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = folly; PRODUCT_NAME = "RCT-Folly"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; CC51EABEB4CFC450D8890E53D7AB11D7 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = B49E927D98F0202C6C5CD21E1077E16E /* ReactCommon.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/ReactCommon/ReactCommon-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/ReactCommon/ReactCommon.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = ReactCommon; PRODUCT_NAME = ReactCommon; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; CCB2C9D366498942DBE3BE5060FDE9FB /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 73B3A96DAB49C42270A59966B121F1A7 /* Pods-WatermelonTester.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 15.0; MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; CE82C584340CABBA4F77AE60DD4A3390 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 58C1E8B779C42177C4AE37F87FA08B90 /* React-CoreModules.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-CoreModules/React-CoreModules-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", "-DFOLLY_NO_CONFIG", "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", "-Wno-comma", "-Wno-shorten-64-to-32", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = CoreModules; PRODUCT_NAME = "React-CoreModules"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; D29732B7B0462383B7D8E84D4568F8B6 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6DF638889DD6D88E1694A065C0A27BC6 /* React-rendererdebug.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-rendererdebug/React-rendererdebug-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_debug/React-rendererdebug.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_debug; PRODUCT_NAME = "React-rendererdebug"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; D406B4608B484215F600C45D03EE82DF /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8D07443F9F8CE58F73EE39187877455E /* hermes-engine.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "HERMES_ENABLE_DEBUGGER=1", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; D438FE95D011ACEAE1EEC20BE4BE9525 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E2F009051F05B8597141D79A5583D4FF /* React-featureflags.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-featureflags/React-featureflags-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_featureflags/React-featureflags.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_featureflags; PRODUCT_NAME = "React-featureflags"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; D49C415D918F61ABFCD3ECD90CCA2806 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EA980E88736BC513D1E4D3CF3B6A67E8 /* React-runtimescheduler.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-runtimescheduler/React-runtimescheduler-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_runtimescheduler; PRODUCT_NAME = "React-runtimescheduler"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; D602DA10931FC0F5257BF28A7E9E7A3E /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 292CA568BD4ABB3A490EAADD2CA64FB7 /* React-cxxreact.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-cxxreact/React-cxxreact-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = cxxreact; PRODUCT_NAME = "React-cxxreact"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; D7E361BB16736ACF8838B065235BA173 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 17A0B50A888B86A9F608EBDAB0EA9B29 /* React-callinvoker.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; D7FBC2DC890B490543B0810CCFD46A8E /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 30800F41E56952F66104FBA05648D6FB /* React-jsinspector.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsinspector/React-jsinspector-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/jsinspector_modern/React-jsinspector.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsinspector_modern; PRODUCT_NAME = "React-jsinspector"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; D87B33CFA204F39000C6AAA541DD2C63 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = B8BDA25E90049F9C70AA8B349A93426F /* React-graphics.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-graphics/React-graphics-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_graphics/React-graphics.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_graphics; PRODUCT_NAME = "React-graphics"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; DD14E13C597C9B1858F728061E61ED43 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B17B5D76BCAC42472B55462BAE850852 /* React-graphics.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-graphics/React-graphics-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_graphics/React-graphics.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_graphics; PRODUCT_NAME = "React-graphics"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; DF3B88146486C5BADF9F4046B759697F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 157BEE76ABB5FC023F974602BC587B8A /* React-Fabric.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-Fabric/React-Fabric-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_Fabric/React-Fabric.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_Fabric; PRODUCT_NAME = "React-Fabric"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; DF8E3FD99144DA19A4ABA4D1F442A5EE /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = DFDFCA220F4E0487D24966099C7AC6BD /* React-rncore.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; E06DE0D716501E26D79A956F721097E1 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = F8E385BE54CB846981F47BD4BBF298BC /* React-NativeModulesApple.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-NativeModulesApple/React-NativeModulesApple-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = React_NativeModulesApple; PRODUCT_NAME = "React-NativeModulesApple"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; E438AE86F28741B18812A55CDBEE545A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4D27045A96C63465EC6F9A1AED2DED9D /* React-jsiexecutor.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jsiexecutor/React-jsiexecutor-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jsireact; PRODUCT_NAME = "React-jsiexecutor"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; E678C5B8D52E99B32FFEBC7F1C705BFD /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = ADD320EC4221CCC1B76BB433ED455CEC /* React-debug.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-debug/React-debug-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_debug/React-debug.modulemap"; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_debug; PRODUCT_NAME = "React-debug"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; E99DFB667A53A19734E28CDCDF821BA4 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9414F0292C4CA9913CEEC7F61F3E32B3 /* React-jserrorhandler.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-jserrorhandler/React-jserrorhandler-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = jserrorhandler; PRODUCT_NAME = "React-jserrorhandler"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; EA28FECD5F865E3FE918A41D7A616FBA /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = C8980F597D1A97A167ACA46B54A4BC70 /* React-RCTAnimation.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTAnimation/React-RCTAnimation-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTAnimation; PRODUCT_NAME = "React-RCTAnimation"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; EA3BBD5E20726235E3306255BEBA7722 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1E8D7F44C4927699FE5FFB25997A96F8 /* React-RuntimeApple.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RuntimeApple/React-RuntimeApple-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = ReactCommon; PRODUCT_NAME = "React-RuntimeApple"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; EAF219E82C6B0565AE53FA2AE9069D12 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0AB45FDFADEB5035DFD513D71DB737DC /* React-featureflags.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-featureflags/React-featureflags-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_featureflags/React-featureflags.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_featureflags; PRODUCT_NAME = "React-featureflags"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; EC1A7DB8DAABFD75F0340838EAD43BB6 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = BEC2935F7CAC9628D23D98B726129B8A /* React-ImageManager.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-ImageManager/React-ImageManager-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = "Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_imagemanager; PRODUCT_NAME = "React-ImageManager"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; ECD48242973C8F5694CF10EF62485A04 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = DECEAEDC186B345BDAAD789EDD05B9FD /* RCTDeprecation.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCTDeprecation/RCTDeprecation-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/RCTDeprecation/RCTDeprecation.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTDeprecation; PRODUCT_NAME = RCTDeprecation; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; ED301872A32449FE75120D1E7736B2D9 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1AD8831E19FF419852060A20EFC9943A /* React-nativeconfig.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-nativeconfig/React-nativeconfig-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_config; PRODUCT_NAME = "React-nativeconfig"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; F10023C18296B5775743BC3999B95E08 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E5CB5398F86031A46AD389FAA73E2323 /* RCTTypeSafety.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/RCTTypeSafety/RCTTypeSafety-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; MODULEMAP_FILE = Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTTypeSafety; PRODUCT_NAME = RCTTypeSafety; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; F16A76B772BE5925FA6612319337A226 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2E2A892270F483593BF828FD99446809 /* React-RCTBlob.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTBlob/React-RCTBlob-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTBlob; PRODUCT_NAME = "React-RCTBlob"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; F73E94D57A40E0C72DAB6510266D647C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0FE5FBB2B14D4BC374CECD01A71C50C3 /* WatermelonDB.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/WatermelonDB/WatermelonDB-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = WatermelonDB; PRODUCT_NAME = WatermelonDB; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; F8953168B22454E9419F25D28B9B9CF5 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = D9F52BE4E914A8BB9CDE60E8D6D9067A /* React-RCTText.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTText/React-RCTText-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTText; PRODUCT_NAME = "React-RCTText"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; F9294C78D5005D3E1D56975ED464D611 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8FC5170482B4001507331897446093A4 /* React-RCTBlob.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-RCTBlob/React-RCTBlob-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = RCTBlob; PRODUCT_NAME = "React-RCTBlob"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; FB755FACBBF1CDC5C214FB4F1770F706 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E2B590F31CAE0577156C53171FEFEF07 /* React-FabricImage.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/React-FabricImage/React-FabricImage-prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; OTHER_CFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_CPLUSPLUSFLAGS = ( "$(inherited)", "-DNDEBUG", ); OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = react_renderer_components_image; PRODUCT_NAME = "React-FabricImage"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; FCCB1D8601F08A44CAE526762FFAE461 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0D01E2CE505FD137C83D5A00A839D8B9 /* React-jsitracing.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = NO; CLANG_ENABLE_OBJC_WEAK = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "CCACHE_HACK_TOOLCHAIN_DIR=\"$(TOOLCHAIN_DIR)\"", ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 064B0AD934FAEAE90C5B19183E95B267 /* Build configuration list for PBXNativeTarget "WatermelonDB" */ = { isa = XCConfigurationList; buildConfigurations = ( F73E94D57A40E0C72DAB6510266D647C /* Debug */, A79343D4FCC4946246DDEC2EB1498F89 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 075CFEE2CD881582988C1D1118EEC225 /* Build configuration list for PBXNativeTarget "React-FabricImage" */ = { isa = XCConfigurationList; buildConfigurations = ( 2DB8CA194A472322BDFF94E57E7AD3AC /* Debug */, FB755FACBBF1CDC5C214FB4F1770F706 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 0C275FBF85ADB0F9F7275AA03EEFF4D8 /* Build configuration list for PBXNativeTarget "React-graphics" */ = { isa = XCConfigurationList; buildConfigurations = ( DD14E13C597C9B1858F728061E61ED43 /* Debug */, D87B33CFA204F39000C6AAA541DD2C63 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 0F57A9E1BCAF11956772C8D87FE73D2D /* Build configuration list for PBXNativeTarget "React-RuntimeHermes" */ = { isa = XCConfigurationList; buildConfigurations = ( 3D1D91B804D25B65783055F9D295ED4F /* Debug */, 2833F66F875A26F844089CF6BFF332EF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 1C5DC16C5742A9680E69626CDBC9F65B /* Build configuration list for PBXNativeTarget "React-nativeconfig" */ = { isa = XCConfigurationList; buildConfigurations = ( ED301872A32449FE75120D1E7736B2D9 /* Debug */, 749D29305F3B147BEA433A8ED3A52055 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 1C8845324AC124F676276B99D738106A /* Build configuration list for PBXNativeTarget "React-jsinspector" */ = { isa = XCConfigurationList; buildConfigurations = ( 9F5D655EFEE356B6278439617431B389 /* Debug */, D7FBC2DC890B490543B0810CCFD46A8E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 1CAE6B2FF32C286031FF774A500E5F6B /* Build configuration list for PBXNativeTarget "React-runtimescheduler" */ = { isa = XCConfigurationList; buildConfigurations = ( D49C415D918F61ABFCD3ECD90CCA2806 /* Debug */, 675390F86EB23FA49464FB782CAF0014 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 2007902842A2D91320A831EDA401D9D3 /* Build configuration list for PBXNativeTarget "React-RCTImage" */ = { isa = XCConfigurationList; buildConfigurations = ( 556F215F73AD70669785BB704E7FF3FD /* Debug */, B9DF6E69CBD6AC7C082B3B20661FC457 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 2023F194410EB76C507DE4868A948CDE /* Build configuration list for PBXNativeTarget "React-CoreModules" */ = { isa = XCConfigurationList; buildConfigurations = ( 72988AE6F2442AF167ACC14C8D84C1FF /* Debug */, CE82C584340CABBA4F77AE60DD4A3390 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 25D58DD7F531AAF078902F24BDB05BA5 /* Build configuration list for PBXNativeTarget "ReactCommon" */ = { isa = XCConfigurationList; buildConfigurations = ( 5D836308F838876BEA6E15EA4442264C /* Debug */, CC51EABEB4CFC450D8890E53D7AB11D7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 30B947E14EE1C9821D33E6F7B6C9B674 /* Build configuration list for PBXAggregateTarget "React-RCTActionSheet" */ = { isa = XCConfigurationList; buildConfigurations = ( 596D1E536C46F393552CAF1F8BD63D31 /* Debug */, 1EB589223DB61A0CC57D72143471CD9C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 35BDABAF8BA6C6EA1964325CDB079A1D /* Build configuration list for PBXNativeTarget "React-Core-RCTI18nStrings" */ = { isa = XCConfigurationList; buildConfigurations = ( 1926B4BB348A3C6E0E0A3D464CCAFBDE /* Debug */, 592181D556023CD1C894B701362E4DA4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3B20501A4B72AB953CEA417EABF8576B /* Build configuration list for PBXNativeTarget "React-RuntimeApple" */ = { isa = XCConfigurationList; buildConfigurations = ( BA0B546CC26F64AB7A03D77C4C2936A7 /* Debug */, EA3BBD5E20726235E3306255BEBA7722 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3C2B4CD24E58B412E3E2C697725C9878 /* Build configuration list for PBXAggregateTarget "React-jsitracing" */ = { isa = XCConfigurationList; buildConfigurations = ( FCCB1D8601F08A44CAE526762FFAE461 /* Debug */, 09DE6D1D41918E704C850693789D572E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3CDF0161DB20A500B3F98141C7B4D171 /* Build configuration list for PBXNativeTarget "React-cxxreact" */ = { isa = XCConfigurationList; buildConfigurations = ( 018A699977B43DF54A5388A977841260 /* Debug */, D602DA10931FC0F5257BF28A7E9E7A3E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3F9D73DBB45031EEA90F9BEAF35DBEC0 /* Build configuration list for PBXNativeTarget "React-RCTVibration" */ = { isa = XCConfigurationList; buildConfigurations = ( 87FA83E446D43813C592A551733FBFF5 /* Debug */, 7B6774F79AB067206CA65BBF3ADDE822 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 430F0181C23B9D49AE0FB01BF97532C0 /* Build configuration list for PBXAggregateTarget "React-callinvoker" */ = { isa = XCConfigurationList; buildConfigurations = ( D7E361BB16736ACF8838B065235BA173 /* Debug */, 14C1CF143C41528891604A92041BEE5A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */, 9553C89E183877A5CB2F3C6801BEC129 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4ADC4A4F4CD285503097D676C2835DAD /* Build configuration list for PBXNativeTarget "RCTDeprecation" */ = { isa = XCConfigurationList; buildConfigurations = ( ECD48242973C8F5694CF10EF62485A04 /* Debug */, 82EFCB4F4469DA6AFF305D017CB93AFF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BB3D33652ACC437885A3F69A7BD4E2B /* Build configuration list for PBXNativeTarget "React-RCTFabric" */ = { isa = XCConfigurationList; buildConfigurations = ( 1D363B72BC5025D9B8DE46B8F3631147 /* Debug */, 2A29B58589FA66317C725FBE5DCDA803 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4FB4FCC7287CF5184D152FD0437A63C6 /* Build configuration list for PBXNativeTarget "React-jsi" */ = { isa = XCConfigurationList; buildConfigurations = ( B8CBE1EC8859C96FB379248A1B7A3F2D /* Debug */, 76FAF1D653E3091D8F31A040BCAF3242 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5BBEBFE986F7B4F914468460EB8F1959 /* Build configuration list for PBXNativeTarget "React-logger" */ = { isa = XCConfigurationList; buildConfigurations = ( CA4F6381FF1B7E6A3473AD1A3CC763A8 /* Debug */, 77779BB20E55F693035240DE888044A8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 611882B4FC76DDB90E3FE11E69E82A1D /* Build configuration list for PBXAggregateTarget "FBLazyVector" */ = { isa = XCConfigurationList; buildConfigurations = ( B366651097A40B84BBA78641F0929939 /* Debug */, 85D200DC120335672B1B81C7F2422A9A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 62FCE44A9C2279F047899EE9CBDB05E9 /* Build configuration list for PBXNativeTarget "React-RCTNetwork" */ = { isa = XCConfigurationList; buildConfigurations = ( C63640657EED77D8622FE18B3A447727 /* Debug */, 857D2EEFD5273048A02DC360E3945215 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 6421C0EF07096454C13037FB6D1B25FB /* Build configuration list for PBXNativeTarget "React-rendererdebug" */ = { isa = XCConfigurationList; buildConfigurations = ( D29732B7B0462383B7D8E84D4568F8B6 /* Debug */, 458EA9D2AFB826AF6F125A23390B3E72 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 64F885119F50A3C56A0D08EA0B025C49 /* Build configuration list for PBXNativeTarget "React-RuntimeCore" */ = { isa = XCConfigurationList; buildConfigurations = ( 7487028E6EEFFE8D0A9F2AF94BD4AA1A /* Debug */, BB2873BBFB708E1D15CDBBF71949B6AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 65417709D1683A7567ED9D68A22636AA /* Build configuration list for PBXAggregateTarget "hermes-engine" */ = { isa = XCConfigurationList; buildConfigurations = ( D406B4608B484215F600C45D03EE82DF /* Debug */, 6EBB7CB930647993566D4C38C4ED32B2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 662954243572A7CB6DEE48482351D64F /* Build configuration list for PBXNativeTarget "React-RCTLinking" */ = { isa = XCConfigurationList; buildConfigurations = ( 6A776DA165E894C693E080A92B873914 /* Debug */, BA6F6F866B15E5642C85804F1C4EDEFC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 6707DE3D6F26E17231DE98DB9A3E3AB3 /* Build configuration list for PBXNativeTarget "React-jserrorhandler" */ = { isa = XCConfigurationList; buildConfigurations = ( 35DED647B18E0C5F5E2B4A45D62DB3D6 /* Debug */, E99DFB667A53A19734E28CDCDF821BA4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 7060A6016509840F2216B4B586CDB808 /* Build configuration list for PBXNativeTarget "glog" */ = { isa = XCConfigurationList; buildConfigurations = ( 678D48C418EB8199FBF88BD9F57F8447 /* Debug */, 49D01D1CC6D95E241EEF124BCD449141 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 772C322C9EE72B896EB7A93983C1ABFF /* Build configuration list for PBXNativeTarget "React-RCTText" */ = { isa = XCConfigurationList; buildConfigurations = ( 4EAB1F82D42083A7A6795A9385EFD439 /* Debug */, F8953168B22454E9419F25D28B9B9CF5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 7AB9946DDD1C3D6A76F4EC20B825E6B1 /* Build configuration list for PBXNativeTarget "React-utils" */ = { isa = XCConfigurationList; buildConfigurations = ( 572933D427FDEA7D3C0815E9B99D61F0 /* Debug */, 7EE96DBD4F3FD36343287841E13E3E42 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 7CDBC45D37D1B150104FBBEAFF6D7DFA /* Build configuration list for PBXNativeTarget "DoubleConversion" */ = { isa = XCConfigurationList; buildConfigurations = ( 7E1661B1D42FD4320D2DF45DFBBF0569 /* Debug */, 3410F70629881DF6D9E1146E1EBBF55D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 81539B5A4569E3F41E63CB9C9B3DDF65 /* Build configuration list for PBXAggregateTarget "React-runtimeexecutor" */ = { isa = XCConfigurationList; buildConfigurations = ( 2C71D7027C68688E621A0314ABAE9630 /* Debug */, 7291D0787BB051F79F3D0EAF355E78A0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 8155B5CA84599E484C0CD5B5A50F38AA /* Build configuration list for PBXNativeTarget "fmt" */ = { isa = XCConfigurationList; buildConfigurations = ( 0AEE42B6AF134488CE307D9407337DD5 /* Debug */, 83A1E30C35D447DDFEE09B9845881E86 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 8B2FBF8FCEC45B37713547AEBD5D99B6 /* Build configuration list for PBXNativeTarget "React-Fabric" */ = { isa = XCConfigurationList; buildConfigurations = ( DF3B88146486C5BADF9F4046B759697F /* Debug */, 37BCE36EE3C38B37F32177E13BE793E9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 9A3369F1A104F96B1995A4DC4B4D5777 /* Build configuration list for PBXAggregateTarget "RCTRequired" */ = { isa = XCConfigurationList; buildConfigurations = ( 08CDA085B84DEFE53F3E9FC57495A7B1 /* Debug */, 9FD952B7BE0C46A0DF7E6AB4EC3072E2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 9A8C7076F126DE9D2C93C68E1F84C184 /* Build configuration list for PBXNativeTarget "React-Codegen" */ = { isa = XCConfigurationList; buildConfigurations = ( 13D10FC94AEA7BB8B0F77CE5DDA07D9F /* Debug */, 9793834942B6B511FCAC87E74D4AE4DC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 9DE30F4D4057127ECD1C4181A033108A /* Build configuration list for PBXNativeTarget "React-ImageManager" */ = { isa = XCConfigurationList; buildConfigurations = ( EC1A7DB8DAABFD75F0340838EAD43BB6 /* Debug */, AE90C8871B9E2C95A56150448D932D54 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 9F2C5C7A82B8C5C2581EDD99BF908E3B /* Build configuration list for PBXNativeTarget "RCT-Folly" */ = { isa = XCConfigurationList; buildConfigurations = ( A7036092C396D0E15E8494AE7E86C458 /* Debug */, CAAA94DBEF54BED737F7E295DA145198 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; B0BA1E3B69666258803F3BA8BC7753D5 /* Build configuration list for PBXNativeTarget "React-debug" */ = { isa = XCConfigurationList; buildConfigurations = ( A9B99E2F7E73EF951B0D3F31B92B673F /* Debug */, E678C5B8D52E99B32FFEBC7F1C705BFD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; B1628683B730946B45D719929318C407 /* Build configuration list for PBXNativeTarget "React-hermes" */ = { isa = XCConfigurationList; buildConfigurations = ( 056694F8D0C86B3713F8353E4582F89A /* Debug */, 10066A18E063481B550E23ADA03005AE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; B1B375EB7281E82379407E0756F4CA72 /* Build configuration list for PBXNativeTarget "React-Mapbuffer" */ = { isa = XCConfigurationList; buildConfigurations = ( 2B221AEBC14A861BF463CF46C260CCB7 /* Debug */, 0EEDCB8A7B61E6778E280CC8A5B4C5B0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; B5BF53901A44961D2F0245A680C5600D /* Build configuration list for PBXNativeTarget "React-Core" */ = { isa = XCConfigurationList; buildConfigurations = ( 0C4A7CE2F9E8B1F3AC5496501BBA1B1A /* Debug */, 531D19EFC8B7A07D8B5362B29A4F5877 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; BC2E6F2E3470A4F5826B9F71F74F6A1E /* Build configuration list for PBXNativeTarget "Yoga" */ = { isa = XCConfigurationList; buildConfigurations = ( 04778D8576ED573ED3D035D5FD0C8790 /* Debug */, A0BBCE59E95803992E15B022E523A32A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; BF3133F2BD1849B71229502EAFA6C771 /* Build configuration list for PBXNativeTarget "React-RCTAppDelegate" */ = { isa = XCConfigurationList; buildConfigurations = ( 8240BCFA16E2325996C60923974225AB /* Debug */, B75F6C2CC510DF3A9CF307AC1FE8884F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; BF798DE132A0163B4BE4BECA4240D2A1 /* Build configuration list for PBXNativeTarget "Pods-WatermelonTester-WatermelonTesterTests" */ = { isa = XCConfigurationList; buildConfigurations = ( B0F96B3D84646746679A0633B4255B12 /* Debug */, 1F9EF9FDD1FFA34C2022EBF931B0F37F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C0CFAFD893AA5A3CF3EF3D5182D8DFCA /* Build configuration list for PBXNativeTarget "simdjson" */ = { isa = XCConfigurationList; buildConfigurations = ( C5D670E4CCEE2B63BA55AD8411673B6F /* Debug */, 3D4FC99CDC76C9524BC1F015F45D5E37 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; CBAB2C5064DBA2DAE34E7B896B68FABD /* Build configuration list for PBXAggregateTarget "boost" */ = { isa = XCConfigurationList; buildConfigurations = ( 53BE662BA9F4225F5401BA92D84C61AE /* Debug */, 2D805517E0E395E6F8828785D5DE0D66 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; CDFD8CE3A5B07C8AC39C77C03139B84E /* Build configuration list for PBXNativeTarget "React-RCTAnimation" */ = { isa = XCConfigurationList; buildConfigurations = ( EA28FECD5F865E3FE918A41D7A616FBA /* Debug */, 976E7D6E4A2D2582C2D63BC38DFC725E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D04C425F4F78AE26547DDB4435695187 /* Build configuration list for PBXNativeTarget "React-RCTSettings" */ = { isa = XCConfigurationList; buildConfigurations = ( C9099507DFF7989CAC568482DD830342 /* Debug */, 2B3C3F7DAF3E97ADB03B625260E9A2C3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D343A1B642437DBEA4FA80B9A4094074 /* Build configuration list for PBXNativeTarget "React-jsiexecutor" */ = { isa = XCConfigurationList; buildConfigurations = ( B7355507D474FD8BBD3E60F24A667A65 /* Debug */, E438AE86F28741B18812A55CDBEE545A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D50F4D7598C6D582311D01575A97FE3C /* Build configuration list for PBXNativeTarget "React-RCTBlob" */ = { isa = XCConfigurationList; buildConfigurations = ( F9294C78D5005D3E1D56975ED464D611 /* Debug */, F16A76B772BE5925FA6612319337A226 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D6A86079896F7EF87D956234AFC7707B /* Build configuration list for PBXAggregateTarget "React" */ = { isa = XCConfigurationList; buildConfigurations = ( 51CE8C2ADBEFC3589D77A365F30FE6F6 /* Debug */, 4B3CDC8D3D3FFFA5EBD6A180E54DE221 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D7B61D8E284A82A5FFDD5722F2E8CB19 /* Build configuration list for PBXNativeTarget "SocketRocket" */ = { isa = XCConfigurationList; buildConfigurations = ( 93790FAB2314B5185C12CF46BF260616 /* Debug */, B91E69DB0F6A8D8C43413CBAF866AF10 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; E78E1B9C796F493267390DA3E9932266 /* Build configuration list for PBXNativeTarget "RCTTypeSafety" */ = { isa = XCConfigurationList; buildConfigurations = ( C7A496836DFD638F181789F01B6E001E /* Debug */, F10023C18296B5775743BC3999B95E08 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; F26D4DF8D52FF944DEF674FAE1118945 /* Build configuration list for PBXNativeTarget "React-NativeModulesApple" */ = { isa = XCConfigurationList; buildConfigurations = ( E06DE0D716501E26D79A956F721097E1 /* Debug */, 931B4D02069204C8B36EF5077FA0C069 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; F2768486D471591D3A8A58B2E7F81CD4 /* Build configuration list for PBXNativeTarget "React-featureflags" */ = { isa = XCConfigurationList; buildConfigurations = ( EAF219E82C6B0565AE53FA2AE9069D12 /* Debug */, D438FE95D011ACEAE1EEC20BE4BE9525 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; F6160CF29B028D7ECAD77007C47BE1C6 /* Build configuration list for PBXNativeTarget "Pods-WatermelonTester" */ = { isa = XCConfigurationList; buildConfigurations = ( 101CBCE1C2C1E8BA5847D6EAD5702399 /* Debug */, CCB2C9D366498942DBE3BE5060FDE9FB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; F730EC4EA56CE21717CD773050DB72DA /* Build configuration list for PBXAggregateTarget "React-rncore" */ = { isa = XCConfigurationList; buildConfigurations = ( 61821F3B24E655D15183326DC352D9BE /* Debug */, DF8E3FD99144DA19A4ABA4D1F442A5EE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; FB6AD053F80544ABF6568EAFF5394DB4 /* Build configuration list for PBXNativeTarget "React-perflogger" */ = { isa = XCConfigurationList; buildConfigurations = ( 6DB5D13F19305EB6CA0B293E0BF786CD /* Debug */, 8760A2D85E97AB06F84ACD71B7BD299F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } ================================================ FILE: native/iosTest/Pods/SocketRocket/LICENSE ================================================ BSD License For SocketRocket software Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: native/iosTest/Pods/SocketRocket/LICENSE-examples ================================================ Copyright (c) 2016-present, Facebook, Inc. All rights reserved. The examples provided by Facebook are for non-commercial testing and evaluation purposes only. Facebook reserves all rights not expressly granted. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: native/iosTest/Pods/SocketRocket/README.md ================================================ # SocketRocket ![Platforms][platforms-svg] [![License][license-svg]][license-link] [![Podspec][podspec-svg]][podspec-link] [![Carthage Compatible][carthage-svg]](carthage-link) [![Build Status][build-status-svg]][build-status-link] A conforming WebSocket ([RFC 6455](https://tools.ietf.org/html/rfc6455>)) client library for iOS, macOS and tvOS. Test results for SocketRocket [here](http://facebook.github.io/SocketRocket/results/). You can compare to what modern browsers look like [here](http://autobahn.ws/testsuite/reports/clients/index.html). SocketRocket currently conforms to all core ~300 of [Autobahn](http://autobahn.ws/testsuite/>)'s fuzzing tests (aside from two UTF-8 ones where it is merely *non-strict* tests 6.4.2 and 6.4.4). ## Features/Design - TLS (wss) support, including self-signed certificates. - Seems to perform quite well. - Supports HTTP Proxies. - Supports IPv4/IPv6. - Supports SSL certificate pinning. - Sends `ping` and can process `pong` events. - Asynchronous and non-blocking. Most of the work is done on a background thread. - Supports iOS, macOS, tvOS. ## Installing There are a few options. Choose one, or just figure it out: - **[CocoaPods](https://cocoapods.org)** Add the following line to your Podfile: ```ruby pod 'SocketRocket' ``` Run `pod install`, and you are all set. - **[Carthage](https://github.com/carthage/carthage)** Add the following line to your Cartfile: ``` github "facebook/SocketRocket" ``` Run `carthage update`, and you should now have the latest version of `SocketRocket` in your `Carthage` folder. - **Using SocketRocket as a sub-project** You can also include `SocketRocket` as a subproject inside of your application if you'd prefer, although we do not recommend this, as it will increase your indexing time significantly. To do so, just drag and drop the `SocketRocket.xcodeproj` file into your workspace. ## API ### `SRWebSocket` The Web Socket. #### Note: `SRWebSocket` will retain itself between `-(void)open` and when it closes, errors, or fails. This is similar to how `NSURLConnection` behaves (unlike `NSURLConnection`, `SRWebSocket` won't retain the delegate). #### Interface ```objective-c @interface SRWebSocket : NSObject // Make it with this - (instancetype)initWithURLRequest:(NSURLRequest *)request; // Set this before opening @property (nonatomic, weak) id delegate; // Open with this - (void)open; // Close it with this - (void)close; // Send a Data - (void)sendData:(nullable NSData *)data error:(NSError **)error; // Send a UTF8 String - (void)sendString:(NSString *)string error:(NSError **)error; @end ``` ### `SRWebSocketDelegate` You implement this ```objective-c @protocol SRWebSocketDelegate @optional - (void)webSocketDidOpen:(SRWebSocket *)webSocket; - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(NSString *)string; - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithData:(NSData *)data; - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; - (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(nullable NSString *)reason wasClean:(BOOL)wasClean; @end ``` ## Testing Included are setup scripts for the python testing environment. It comes packaged with vitualenv so all the dependencies are installed in userland. To run the short test from the command line, run: ```bash make test ``` To run all the tests, run: ```bash make test_all ``` The short tests don't include the performance tests (the test harness is actually the bottleneck, not SocketRocket). The first time this is run, it may take a while to install the dependencies. It will be smooth sailing after that. You can also run tests inside Xcode, which runs the same thing, but makes it easier to debug. - Choose the `SocketRocketTests` target - Make sure your running destination is either your Mac or any Simulator - Run the test action (`⌘+U`) ### TestChat Demo Application SocketRocket includes a demo app, TestChat. It will "chat" with a listening websocket on port 9900. #### TestChat Server The sever takes a message and broadcasts it to all other connected clients. It requires some dependencies though to run. We also want to reuse the virtualenv we made when we ran the tests. If you haven't run the tests yet, go into the SocketRocket root directory and type: ```bash make test ``` This will set up your [virtualenv](https://pypi.python.org/pypi/virtualenv). Now, in your terminal: ```bash source .env/bin/activate pip install git+https://github.com/tornadoweb/tornado.git ``` In the same terminal session, start the chatroom server: ```bash python TestChatServer/py/chatroom.py ``` There's also a Go implementation (with the latest weekly) where you can: ```bash cd TestChatServer/go go run chatroom.go ``` #### Chatting Now, start TestChat.app (just run the target in the Xcode project). If you had it started already you can hit the refresh button to reconnect. It should say "Connected!" on top. To talk with the app, open up your browser to [http://localhost:9000](http://localhost:9000) and start chatting. ## WebSocket Server Implementation Recommendations SocketRocket has been used with the following libraries: - [Tornado](https://github.com/tornadoweb/tornado) - Go's [WebSocket package](https://godoc.org/golang.org/x/net/websocket) or Gorilla's [version](http://www.gorillatoolkit.org/pkg/websocket). - [Autobahn](http://autobahn.ws/testsuite/) (using its fuzzing client). The Tornado one is dirt simple and works like a charm. ([IPython notebook](http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html) uses it too). It's much easier to configure handlers and routes than in Autobahn/twisted. ## Contributing We’re glad you’re interested in SocketRocket, and we’d love to see where you take it. Please read our [contributing guidelines](https://github.com/facebook/SocketRocket/blob/master/CONTRIBUTING.md) prior to submitting a Pull Request. [build-status-svg]: https://img.shields.io/travis/facebook/SocketRocket/master.svg [build-status-link]: https://travis-ci.org/facebook/SocketRocket/branches [license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg [license-link]: https://github.com/facebook/SocketRocket/blob/master/LICENSE [podspec-svg]: https://img.shields.io/cocoapods/v/SocketRocket.svg [podspec-link]: https://cocoapods.org/pods/SocketRocket [carthage-svg]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat [carthage-link]: https://github.com/carthage/carthage [platforms-svg]: http://img.shields.io/cocoapods/p/SocketRocket.svg?style=flat ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import NS_ASSUME_NONNULL_BEGIN #if OBJC_BOOL_IS_BOOL struct SRDelegateAvailableMethods { BOOL didReceiveMessage : 1; BOOL didReceiveMessageWithString : 1; BOOL didReceiveMessageWithData : 1; BOOL didOpen : 1; BOOL didFailWithError : 1; BOOL didCloseWithCode : 1; BOOL didReceivePing : 1; BOOL didReceivePong : 1; BOOL shouldConvertTextFrameToString : 1; }; #else struct SRDelegateAvailableMethods { BOOL didReceiveMessage; BOOL didReceiveMessageWithString; BOOL didReceiveMessageWithData; BOOL didOpen; BOOL didFailWithError; BOOL didCloseWithCode; BOOL didReceivePing; BOOL didReceivePong; BOOL shouldConvertTextFrameToString; }; #endif typedef struct SRDelegateAvailableMethods SRDelegateAvailableMethods; typedef void(^SRDelegateBlock)(id _Nullable delegate, SRDelegateAvailableMethods availableMethods); @interface SRDelegateController : NSObject @property (nonatomic, weak) id delegate; @property (atomic, readonly) SRDelegateAvailableMethods availableDelegateMethods; @property (nullable, nonatomic, strong) dispatch_queue_t dispatchQueue; @property (nullable, nonatomic, strong) NSOperationQueue *operationQueue; ///-------------------------------------- #pragma mark - Perform ///-------------------------------------- - (void)performDelegateBlock:(SRDelegateBlock)block; - (void)performDelegateQueueBlock:(dispatch_block_t)block; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Delegate/SRDelegateController.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRDelegateController.h" NS_ASSUME_NONNULL_BEGIN @interface SRDelegateController () @property (nonatomic, strong, readonly) dispatch_queue_t accessQueue; @property (atomic, assign, readwrite) SRDelegateAvailableMethods availableDelegateMethods; @end @implementation SRDelegateController @synthesize delegate = _delegate; @synthesize dispatchQueue = _dispatchQueue; @synthesize operationQueue = _operationQueue; ///-------------------------------------- #pragma mark - Init ///-------------------------------------- - (instancetype)init { self = [super init]; if (!self) return self; _accessQueue = dispatch_queue_create("com.facebook.socketrocket.delegate.access", DISPATCH_QUEUE_CONCURRENT); _dispatchQueue = dispatch_get_main_queue(); return self; } ///-------------------------------------- #pragma mark - Accessors ///-------------------------------------- - (void)setDelegate:(id _Nullable)delegate { dispatch_barrier_async(self.accessQueue, ^{ self->_delegate = delegate; self.availableDelegateMethods = (SRDelegateAvailableMethods){ .didReceiveMessage = [delegate respondsToSelector:@selector(webSocket:didReceiveMessage:)], .didReceiveMessageWithString = [delegate respondsToSelector:@selector(webSocket:didReceiveMessageWithString:)], .didReceiveMessageWithData = [delegate respondsToSelector:@selector(webSocket:didReceiveMessageWithData:)], .didOpen = [delegate respondsToSelector:@selector(webSocketDidOpen:)], .didFailWithError = [delegate respondsToSelector:@selector(webSocket:didFailWithError:)], .didCloseWithCode = [delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)], .didReceivePing = [delegate respondsToSelector:@selector(webSocket:didReceivePingWithData:)], .didReceivePong = [delegate respondsToSelector:@selector(webSocket:didReceivePong:)], .shouldConvertTextFrameToString = [delegate respondsToSelector:@selector(webSocketShouldConvertTextFrameToString:)] }; }); } - (id _Nullable)delegate { __block id delegate = nil; dispatch_sync(self.accessQueue, ^{ delegate = self->_delegate; }); return delegate; } - (void)setDispatchQueue:(dispatch_queue_t _Nullable)queue { dispatch_barrier_async(self.accessQueue, ^{ self->_dispatchQueue = queue ?: dispatch_get_main_queue(); self->_operationQueue = nil; }); } - (dispatch_queue_t _Nullable)dispatchQueue { __block dispatch_queue_t queue = nil; dispatch_sync(self.accessQueue, ^{ queue = self->_dispatchQueue; }); return queue; } - (void)setOperationQueue:(NSOperationQueue *_Nullable)queue { dispatch_barrier_async(self.accessQueue, ^{ self->_dispatchQueue = queue ? nil : dispatch_get_main_queue(); self->_operationQueue = queue; }); } - (NSOperationQueue *_Nullable)operationQueue { __block NSOperationQueue *queue = nil; dispatch_sync(self.accessQueue, ^{ queue = self->_operationQueue; }); return queue; } ///-------------------------------------- #pragma mark - Perform ///-------------------------------------- - (void)performDelegateBlock:(SRDelegateBlock)block { __block __strong id delegate = nil; __block SRDelegateAvailableMethods availableMethods = {}; dispatch_sync(self.accessQueue, ^{ delegate = self->_delegate; // Not `OK` to go through `self`, since queue sync. availableMethods = self.availableDelegateMethods; // `OK` to call through `self`, since no queue sync. }); [self performDelegateQueueBlock:^{ block(delegate, availableMethods); }]; } - (void)performDelegateQueueBlock:(dispatch_block_t)block { dispatch_queue_t dispatchQueue = self.dispatchQueue; if (dispatchQueue) { dispatch_async(dispatchQueue, block); } else { [self.operationQueue addOperationWithBlock:block]; } } @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import @class SRWebSocket; // TODO: (nlutsenko) Remove dependency on SRWebSocket here. // Returns number of bytes consumed. Returning 0 means you didn't match. // Sends bytes to callback handler; typedef size_t (^stream_scanner)(NSData *collected_data); typedef void (^data_callback)(SRWebSocket *webSocket, NSData *data); @interface SRIOConsumer : NSObject { stream_scanner _scanner; data_callback _handler; size_t _bytesNeeded; BOOL _readToCurrentFrame; BOOL _unmaskBytes; } @property (nonatomic, copy, readonly) stream_scanner consumer; @property (nonatomic, copy, readonly) data_callback handler; @property (nonatomic, assign) size_t bytesNeeded; @property (nonatomic, assign, readonly) BOOL readToCurrentFrame; @property (nonatomic, assign, readonly) BOOL unmaskBytes; - (void)resetWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumer.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRIOConsumer.h" @implementation SRIOConsumer @synthesize bytesNeeded = _bytesNeeded; @synthesize consumer = _scanner; @synthesize handler = _handler; @synthesize readToCurrentFrame = _readToCurrentFrame; @synthesize unmaskBytes = _unmaskBytes; - (void)resetWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes { _scanner = [scanner copy]; _handler = [handler copy]; _bytesNeeded = bytesNeeded; _readToCurrentFrame = readToCurrentFrame; _unmaskBytes = unmaskBytes; assert(_scanner || _bytesNeeded); } @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import "SRIOConsumer.h" // TODO: (nlutsenko) Convert to @class and constants file for block types // This class is not thread-safe, and is expected to always be run on the same queue. @interface SRIOConsumerPool : NSObject - (instancetype)initWithBufferCapacity:(NSUInteger)poolSize; - (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; - (void)returnConsumer:(SRIOConsumer *)consumer; @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/IOConsumer/SRIOConsumerPool.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRIOConsumerPool.h" @implementation SRIOConsumerPool { NSUInteger _poolSize; NSMutableArray *_bufferedConsumers; } - (instancetype)initWithBufferCapacity:(NSUInteger)poolSize { self = [super init]; if (self) { _poolSize = poolSize; _bufferedConsumers = [NSMutableArray arrayWithCapacity:poolSize]; } return self; } - (instancetype)init { return [self initWithBufferCapacity:8]; } - (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes { SRIOConsumer *consumer = nil; if (_bufferedConsumers.count) { consumer = [_bufferedConsumers lastObject]; [_bufferedConsumers removeLastObject]; } else { consumer = [[SRIOConsumer alloc] init]; } [consumer resetWithScanner:scanner handler:handler bytesNeeded:bytesNeeded readToCurrentFrame:readToCurrentFrame unmaskBytes:unmaskBytes]; return consumer; } - (void)returnConsumer:(SRIOConsumer *)consumer { if (_bufferedConsumers.count < _poolSize) { [_bufferedConsumers addObject:consumer]; } } @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/NSRunLoop+SRWebSocketPrivate.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import // Empty function that force links the object file for the category. extern void import_NSRunLoop_SRWebSocket(void); ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/NSURLRequest+SRWebSocketPrivate.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import // Empty function that force links the object file for the category. extern void import_NSURLRequest_SRWebSocket(void); ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN typedef void(^SRProxyConnectCompletion)(NSError *_Nullable error, NSInputStream *_Nullable readStream, NSOutputStream *_Nullable writeStream); @interface SRProxyConnect : NSObject - (instancetype)initWithURL:(NSURL *)url; - (void)openNetworkStreamWithCompletion:(SRProxyConnectCompletion)completion; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Proxy/SRProxyConnect.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRProxyConnect.h" #import "NSRunLoop+SRWebSocket.h" #import "SRConstants.h" #import "SRError.h" #import "SRLog.h" #import "SRURLUtilities.h" @interface SRProxyConnect() @property (nonatomic, strong) NSURL *url; @property (nonatomic, strong) NSInputStream *inputStream; @property (nonatomic, strong) NSOutputStream *outputStream; @end @implementation SRProxyConnect { SRProxyConnectCompletion _completion; NSString *_httpProxyHost; uint32_t _httpProxyPort; CFHTTPMessageRef _receivedHTTPHeaders; NSString *_socksProxyHost; uint32_t _socksProxyPort; NSString *_socksProxyUsername; NSString *_socksProxyPassword; BOOL _connectionRequiresSSL; NSMutableArray *_inputQueue; dispatch_queue_t _writeQueue; } ///-------------------------------------- #pragma mark - Init ///-------------------------------------- -(instancetype)initWithURL:(NSURL *)url { self = [super init]; if (!self) return self; _url = url; _connectionRequiresSSL = SRURLRequiresSSL(url); _writeQueue = dispatch_queue_create("com.facebook.socketrocket.proxyconnect.write", DISPATCH_QUEUE_SERIAL); _inputQueue = [NSMutableArray arrayWithCapacity:2]; return self; } - (void)dealloc { // If we get deallocated before the socket open finishes - we need to cleanup everything. [self.inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; self.inputStream.delegate = nil; [self.inputStream close]; self.inputStream = nil; self.outputStream.delegate = nil; [self.outputStream close]; self.outputStream = nil; } ///-------------------------------------- #pragma mark - Open ///-------------------------------------- - (void)openNetworkStreamWithCompletion:(SRProxyConnectCompletion)completion { _completion = completion; [self _configureProxy]; } ///-------------------------------------- #pragma mark - Flow ///-------------------------------------- - (void)_didConnect { SRDebugLog(@"_didConnect, return streams"); if (_connectionRequiresSSL) { if (_httpProxyHost) { // Must set the real peer name before turning on SSL SRDebugLog(@"proxy set peer name to real host %@", self.url.host); [self.outputStream setProperty:self.url.host forKey:@"_kCFStreamPropertySocketPeerName"]; } } if (_receivedHTTPHeaders) { CFRelease(_receivedHTTPHeaders); _receivedHTTPHeaders = NULL; } NSInputStream *inputStream = self.inputStream; NSOutputStream *outputStream = self.outputStream; self.inputStream = nil; self.outputStream = nil; [inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; inputStream.delegate = nil; outputStream.delegate = nil; _completion(nil, inputStream, outputStream); } - (void)_failWithError:(NSError *)error { SRDebugLog(@"_failWithError, return error"); if (!error) { error = SRHTTPErrorWithCodeDescription(500, 2132,@"Proxy Error"); } if (_receivedHTTPHeaders) { CFRelease(_receivedHTTPHeaders); _receivedHTTPHeaders = NULL; } self.inputStream.delegate = nil; self.outputStream.delegate = nil; [self.inputStream removeFromRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; [self.inputStream close]; [self.outputStream close]; self.inputStream = nil; self.outputStream = nil; _completion(error, nil, nil); } // get proxy setting from device setting - (void)_configureProxy { SRDebugLog(@"configureProxy"); NSDictionary *proxySettings = CFBridgingRelease(CFNetworkCopySystemProxySettings()); // CFNetworkCopyProxiesForURL doesn't understand ws:// or wss:// NSURL *httpURL; if (_connectionRequiresSSL) { httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://%@", _url.host]]; } else { httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", _url.host]]; } NSArray *proxies = CFBridgingRelease(CFNetworkCopyProxiesForURL((__bridge CFURLRef)httpURL, (__bridge CFDictionaryRef)proxySettings)); if (proxies.count == 0) { SRDebugLog(@"configureProxy no proxies"); [self _openConnection]; return; // no proxy } NSDictionary *settings = [proxies objectAtIndex:0]; NSString *proxyType = settings[(NSString *)kCFProxyTypeKey]; if ([proxyType isEqualToString:(NSString *)kCFProxyTypeAutoConfigurationURL]) { NSURL *pacURL = settings[(NSString *)kCFProxyAutoConfigurationURLKey]; if (pacURL) { [self _fetchPAC:pacURL withProxySettings:proxySettings]; return; } } if ([proxyType isEqualToString:(__bridge NSString *)kCFProxyTypeAutoConfigurationJavaScript]) { NSString *script = settings[(__bridge NSString *)kCFProxyAutoConfigurationJavaScriptKey]; if (script) { [self _runPACScript:script withProxySettings:proxySettings]; return; } } [self _readProxySettingWithType:proxyType settings:settings]; [self _openConnection]; } - (void)_readProxySettingWithType:(NSString *)proxyType settings:(NSDictionary *)settings { if ([proxyType isEqualToString:(NSString *)kCFProxyTypeHTTP] || [proxyType isEqualToString:(NSString *)kCFProxyTypeHTTPS]) { _httpProxyHost = settings[(NSString *)kCFProxyHostNameKey]; NSNumber *portValue = settings[(NSString *)kCFProxyPortNumberKey]; if (portValue) { _httpProxyPort = [portValue intValue]; } } if ([proxyType isEqualToString:(NSString *)kCFProxyTypeSOCKS]) { _socksProxyHost = settings[(NSString *)kCFProxyHostNameKey]; NSNumber *portValue = settings[(NSString *)kCFProxyPortNumberKey]; if (portValue) _socksProxyPort = [portValue intValue]; _socksProxyUsername = settings[(NSString *)kCFProxyUsernameKey]; _socksProxyPassword = settings[(NSString *)kCFProxyPasswordKey]; } if (_httpProxyHost) { SRDebugLog(@"Using http proxy %@:%u", _httpProxyHost, _httpProxyPort); } else if (_socksProxyHost) { SRDebugLog(@"Using socks proxy %@:%u", _socksProxyHost, _socksProxyPort); } else { SRDebugLog(@"configureProxy no proxies"); } } - (void)_fetchPAC:(NSURL *)PACurl withProxySettings:(NSDictionary *)proxySettings { SRDebugLog(@"SRWebSocket fetchPAC:%@", PACurl); if ([PACurl isFileURL]) { NSError *error = nil; NSString *script = [NSString stringWithContentsOfURL:PACurl usedEncoding:NULL error:&error]; if (error) { [self _openConnection]; } else { [self _runPACScript:script withProxySettings:proxySettings]; } return; } NSString *scheme = [PACurl.scheme lowercaseString]; if (![scheme isEqualToString:@"http"] && ![scheme isEqualToString:@"https"]) { // Don't know how to read data from this URL, we'll have to give up // We'll simply assume no proxies, and start the request as normal [self _openConnection]; return; } __weak typeof(self) wself = self; NSURLRequest *request = [NSURLRequest requestWithURL:PACurl]; NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { __strong typeof(wself) sself = wself; if (!error) { NSString *script = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; [sself _runPACScript:script withProxySettings:proxySettings]; } else { [sself _openConnection]; } }] resume]; } - (void)_runPACScript:(NSString *)script withProxySettings:(NSDictionary *)proxySettings { if (!script) { [self _openConnection]; return; } SRDebugLog(@"runPACScript"); // From: http://developer.apple.com/samplecode/CFProxySupportTool/listing1.html // Work around . This dummy call to // CFNetworkCopyProxiesForURL initialise some state within CFNetwork // that is required by CFNetworkCopyProxiesForAutoConfigurationScript. CFBridgingRelease(CFNetworkCopyProxiesForURL((__bridge CFURLRef)_url, (__bridge CFDictionaryRef)proxySettings)); // Obtain the list of proxies by running the autoconfiguration script CFErrorRef err = NULL; // CFNetworkCopyProxiesForAutoConfigurationScript doesn't understand ws:// or wss:// NSURL *httpURL; if (_connectionRequiresSSL) httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://%@", _url.host]]; else httpURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", _url.host]]; NSArray *proxies = CFBridgingRelease(CFNetworkCopyProxiesForAutoConfigurationScript((__bridge CFStringRef)script,(__bridge CFURLRef)httpURL, &err)); if (!err && [proxies count] > 0) { NSDictionary *settings = [proxies objectAtIndex:0]; NSString *proxyType = settings[(NSString *)kCFProxyTypeKey]; [self _readProxySettingWithType:proxyType settings:settings]; } [self _openConnection]; } - (void)_openConnection { [self _initializeStreams]; [self.inputStream scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; //[self.outputStream scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] // forMode:NSDefaultRunLoopMode]; [self.outputStream open]; [self.inputStream open]; } - (void)_initializeStreams { assert(_url.port.unsignedIntValue <= UINT32_MAX); uint32_t port = _url.port.unsignedIntValue; if (port == 0) { port = (_connectionRequiresSSL ? 443 : 80); } NSString *host = _url.host; if (_httpProxyHost) { host = _httpProxyHost; port = (_httpProxyPort ?: 80); } CFReadStreamRef readStream = NULL; CFWriteStreamRef writeStream = NULL; SRDebugLog(@"ProxyConnect connect stream to %@:%u", host, port); CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, &readStream, &writeStream); self.outputStream = CFBridgingRelease(writeStream); self.inputStream = CFBridgingRelease(readStream); if (_socksProxyHost) { SRDebugLog(@"ProxyConnect set sock property stream to %@:%u user %@ password %@", _socksProxyHost, _socksProxyPort, _socksProxyUsername, _socksProxyPassword); NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:4]; settings[NSStreamSOCKSProxyHostKey] = _socksProxyHost; if (_socksProxyPort) { settings[NSStreamSOCKSProxyPortKey] = @(_socksProxyPort); } if (_socksProxyUsername) { settings[NSStreamSOCKSProxyUserKey] = _socksProxyUsername; } if (_socksProxyPassword) { settings[NSStreamSOCKSProxyPasswordKey] = _socksProxyPassword; } [self.inputStream setProperty:settings forKey:NSStreamSOCKSProxyConfigurationKey]; [self.outputStream setProperty:settings forKey:NSStreamSOCKSProxyConfigurationKey]; } self.inputStream.delegate = self; self.outputStream.delegate = self; } - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { SRDebugLog(@"stream handleEvent %u", eventCode); switch (eventCode) { case NSStreamEventOpenCompleted: { if (aStream == self.inputStream) { if (_httpProxyHost) { [self _proxyDidConnect]; } else { [self _didConnect]; } } } break; case NSStreamEventErrorOccurred: { [self _failWithError:aStream.streamError]; } break; case NSStreamEventEndEncountered: { [self _failWithError:aStream.streamError]; } break; case NSStreamEventHasBytesAvailable: { if (aStream == _inputStream) { [self _processInputStream]; } } break; case NSStreamEventHasSpaceAvailable: case NSStreamEventNone: SRDebugLog(@"(default) %@", aStream); break; } } - (void)_proxyDidConnect { SRDebugLog(@"Proxy Connected"); uint32_t port = _url.port.unsignedIntValue; if (port == 0) { port = (_connectionRequiresSSL ? 443 : 80); } // Send HTTP CONNECT Request NSString *connectRequestStr = [NSString stringWithFormat:@"CONNECT %@:%u HTTP/1.1\r\nHost: %@\r\nConnection: keep-alive\r\nProxy-Connection: keep-alive\r\n\r\n", _url.host, port, _url.host]; NSData *message = [connectRequestStr dataUsingEncoding:NSUTF8StringEncoding]; SRDebugLog(@"Proxy sending %@", connectRequestStr); [self _writeData:message]; } ///handles the incoming bytes and sending them to the proper processing method - (void)_processInputStream { NSMutableData *buf = [NSMutableData dataWithCapacity:SRDefaultBufferSize()]; uint8_t *buffer = buf.mutableBytes; NSInteger length = [_inputStream read:buffer maxLength:SRDefaultBufferSize()]; if (length <= 0) { return; } BOOL process = (_inputQueue.count == 0); [_inputQueue addObject:[NSData dataWithBytes:buffer length:length]]; if (process) { [self _dequeueInput]; } } // dequeue the incoming input so it is processed in order - (void)_dequeueInput { while (_inputQueue.count > 0) { NSData *data = _inputQueue.firstObject; [_inputQueue removeObjectAtIndex:0]; // No need to process any data further, we got the full header data. if ([self _proxyProcessHTTPResponseWithData:data]) { break; } } } //handle checking the proxy connection status - (BOOL)_proxyProcessHTTPResponseWithData:(NSData *)data { if (_receivedHTTPHeaders == NULL) { _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); } CFHTTPMessageAppendBytes(_receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); if (CFHTTPMessageIsHeaderComplete(_receivedHTTPHeaders)) { SRDebugLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(_receivedHTTPHeaders))); [self _proxyHTTPHeadersDidFinish]; return YES; } return NO; } - (void)_proxyHTTPHeadersDidFinish { NSInteger responseCode = CFHTTPMessageGetResponseStatusCode(_receivedHTTPHeaders); if (responseCode >= 299) { SRDebugLog(@"Connect to Proxy Request failed with response code %d", responseCode); NSError *error = SRHTTPErrorWithCodeDescription(responseCode, 2132, [NSString stringWithFormat:@"Received bad response code from proxy server: %d.", (int)responseCode]); [self _failWithError:error]; return; } SRDebugLog(@"proxy connect return %d, call socket connect", responseCode); [self _didConnect]; } static NSTimeInterval const SRProxyConnectWriteTimeout = 5.0; - (void)_writeData:(NSData *)data { const uint8_t * bytes = data.bytes; __block NSInteger timeout = (NSInteger)(SRProxyConnectWriteTimeout * 1000000); // wait timeout before giving up __weak typeof(self) wself = self; dispatch_async(_writeQueue, ^{ __strong typeof(wself) sself = self; if (!sself) { return; } NSOutputStream *outStream = sself.outputStream; if (!outStream) { return; } while (![outStream hasSpaceAvailable]) { usleep(100); //wait until the socket is ready timeout -= 100; if (timeout < 0) { NSError *error = SRHTTPErrorWithCodeDescription(408, 2132, @"Proxy timeout"); [sself _failWithError:error]; } else if (outStream.streamError != nil) { [sself _failWithError:outStream.streamError]; } } [outStream write:bytes maxLength:data.length]; }); } @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN @interface SRRunLoopThread : NSThread @property (nonatomic, strong, readonly) NSRunLoop *runLoop; + (instancetype)sharedThread; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/RunLoop/SRRunLoopThread.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRRunLoopThread.h" @interface SRRunLoopThread () { dispatch_group_t _waitGroup; } @property (nonatomic, strong, readwrite) NSRunLoop *runLoop; @end @implementation SRRunLoopThread + (instancetype)sharedThread { static SRRunLoopThread *thread; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ thread = [[SRRunLoopThread alloc] init]; thread.name = @"com.facebook.SocketRocket.NetworkThread"; thread.qualityOfService = NSQualityOfServiceUserInitiated; [thread start]; }); return thread; } - (instancetype)init { self = [super init]; if (self) { _waitGroup = dispatch_group_create(); dispatch_group_enter(_waitGroup); } return self; } - (void)main { @autoreleasepool { _runLoop = [NSRunLoop currentRunLoop]; dispatch_group_leave(_waitGroup); // Add an empty run loop source to prevent runloop from spinning. CFRunLoopSourceContext sourceCtx = { .version = 0, .info = NULL, .retain = NULL, .release = NULL, .copyDescription = NULL, .equal = NULL, .hash = NULL, .schedule = NULL, .cancel = NULL, .perform = NULL }; CFRunLoopSourceRef source = CFRunLoopSourceCreate(NULL, 0, &sourceCtx); CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode); CFRelease(source); while ([_runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]) { } assert(NO); } } - (NSRunLoop *)runLoop { dispatch_group_wait(_waitGroup, DISPATCH_TIME_FOREVER); return _runLoop; } @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/SRConstants.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import typedef NS_ENUM(uint8_t, SROpCode) { SROpCodeTextFrame = 0x1, SROpCodeBinaryFrame = 0x2, // 3-7 reserved. SROpCodeConnectionClose = 0x8, SROpCodePing = 0x9, SROpCodePong = 0xA, // B-F reserved. }; /** Default buffer size that is used for reading/writing to streams. */ extern size_t SRDefaultBufferSize(void); ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/SRConstants.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRConstants.h" size_t SRDefaultBufferSize(void) { static size_t size; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ size = getpagesize(); }); return size; } ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import NS_ASSUME_NONNULL_BEGIN /** * NOTE: While publicly, SocketRocket does not support configuring the security policy with pinned certificates, * it is still possible to manually construct a security policy of this class. If you do this, note that you may * be open to MitM attacks, and we will not support any issues you may have. Dive at your own risk. */ @interface SRPinningSecurityPolicy : SRSecurityPolicy - (instancetype)initWithCertificates:(NSArray *)pinnedCertificates; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Security/SRPinningSecurityPolicy.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRPinningSecurityPolicy.h" #import #import "SRLog.h" NS_ASSUME_NONNULL_BEGIN @interface SRPinningSecurityPolicy () @property (nonatomic, copy, readonly) NSArray *pinnedCertificates; @end @implementation SRPinningSecurityPolicy - (instancetype)initWithCertificates:(NSArray *)pinnedCertificates { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" // Do not validate certificate chain since we're pinning to specific certificates. self = [super initWithCertificateChainValidationEnabled:NO]; #pragma clang diagnostic pop if (!self) { return self; } if (pinnedCertificates.count == 0) { @throw [NSException exceptionWithName:@"Creating security policy failed." reason:@"Must specify at least one certificate when creating a pinning policy." userInfo:nil]; } _pinnedCertificates = [pinnedCertificates copy]; return self; } - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain { SRDebugLog(@"Pinned cert count: %d", self.pinnedCertificates.count); NSUInteger requiredCertCount = self.pinnedCertificates.count; NSUInteger validatedCertCount = 0; CFIndex serverCertCount = SecTrustGetCertificateCount(serverTrust); for (CFIndex i = 0; i < serverCertCount; i++) { SecCertificateRef cert = SecTrustGetCertificateAtIndex(serverTrust, i); NSData *data = CFBridgingRelease(SecCertificateCopyData(cert)); for (id ref in self.pinnedCertificates) { SecCertificateRef trustedCert = (__bridge SecCertificateRef)ref; // TODO: (nlutsenko) Add caching, so we don't copy the data for every pinned cert all the time. NSData *trustedCertData = CFBridgingRelease(SecCertificateCopyData(trustedCert)); if ([trustedCertData isEqualToData:data]) { validatedCertCount++; break; } } } return (requiredCertCount == validatedCertCount); } @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN extern NSError *SRErrorWithDomainCodeDescription(NSString *domain, NSInteger code, NSString *description); extern NSError *SRErrorWithCodeDescription(NSInteger code, NSString *description); extern NSError *SRErrorWithCodeDescriptionUnderlyingError(NSInteger code, NSString *description, NSError *underlyingError); extern NSError *SRHTTPErrorWithCodeDescription(NSInteger httpCode, NSInteger errorCode, NSString *description); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRError.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRError.h" #import "SRWebSocket.h" NS_ASSUME_NONNULL_BEGIN NSError *SRErrorWithDomainCodeDescription(NSString *domain, NSInteger code, NSString *description) { return [NSError errorWithDomain:domain code:code userInfo:@{ NSLocalizedDescriptionKey: description }]; } NSError *SRErrorWithCodeDescription(NSInteger code, NSString *description) { return SRErrorWithDomainCodeDescription(SRWebSocketErrorDomain, code, description); } NSError *SRErrorWithCodeDescriptionUnderlyingError(NSInteger code, NSString *description, NSError *underlyingError) { return [NSError errorWithDomain:SRWebSocketErrorDomain code:code userInfo:@{ NSLocalizedDescriptionKey: description, NSUnderlyingErrorKey: underlyingError }]; } NSError *SRHTTPErrorWithCodeDescription(NSInteger httpCode, NSInteger errorCode, NSString *description) { return [NSError errorWithDomain:SRWebSocketErrorDomain code:errorCode userInfo:@{ NSLocalizedDescriptionKey: description, SRHTTPResponseErrorKey: @(httpCode) }]; } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import NS_ASSUME_NONNULL_BEGIN extern CFHTTPMessageRef SRHTTPConnectMessageCreate(NSURLRequest *request, NSString *securityKey, uint8_t webSocketProtocolVersion, NSArray *_Nullable cookies, NSArray *_Nullable requestedProtocols); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHTTPConnectMessage.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRHTTPConnectMessage.h" #import "SRURLUtilities.h" NS_ASSUME_NONNULL_BEGIN static NSString *_SRHTTPConnectMessageHost(NSURL *url) { NSString *host = url.host; if (url.port) { host = [host stringByAppendingFormat:@":%@", url.port]; } return host; } CFHTTPMessageRef SRHTTPConnectMessageCreate(NSURLRequest *request, NSString *securityKey, uint8_t webSocketProtocolVersion, NSArray *_Nullable cookies, NSArray *_Nullable requestedProtocols) { NSURL *url = request.URL; CFHTTPMessageRef message = CFHTTPMessageCreateRequest(NULL, (__bridge CFStringRef)request.HTTPMethod, (__bridge CFURLRef)url, kCFHTTPVersion1_1); // Set host first so it defaults CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Host"), (__bridge CFStringRef)_SRHTTPConnectMessageHost(url)); // Apply cookies if any have been provided if (cookies) { NSDictionary *messageCookies = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; [messageCookies enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) { if (key.length && obj.length) { CFHTTPMessageSetHeaderFieldValue(message, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); } }]; } // set header for http basic auth NSString *basicAuthorizationString = SRBasicAuthorizationHeaderFromURL(url); if (basicAuthorizationString) { CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Authorization"), (__bridge CFStringRef)basicAuthorizationString); } CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Upgrade"), CFSTR("websocket")); CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Connection"), CFSTR("Upgrade")); CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Key"), (__bridge CFStringRef)securityKey); CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Version"), (__bridge CFStringRef)@(webSocketProtocolVersion).stringValue); CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Origin"), (__bridge CFStringRef)SRURLOrigin(url)); if (requestedProtocols.count) { CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Sec-WebSocket-Protocol"), (__bridge CFStringRef)[requestedProtocols componentsJoinedByString:@", "]); } [request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { CFHTTPMessageSetHeaderFieldValue(message, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); }]; return message; } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN extern NSData *SRSHA1HashFromString(NSString *string); extern NSData *SRSHA1HashFromBytes(const char *bytes, size_t length); extern NSString *SRBase64EncodedStringFromData(NSData *data); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRHash.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRHash.h" #import NS_ASSUME_NONNULL_BEGIN NSData *SRSHA1HashFromString(NSString *string) { size_t length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; return SRSHA1HashFromBytes(string.UTF8String, length); } NSData *SRSHA1HashFromBytes(const char *bytes, size_t length) { uint8_t outputLength = CC_SHA1_DIGEST_LENGTH; unsigned char output[outputLength]; CC_SHA1(bytes, (CC_LONG)length, output); return [NSData dataWithBytes:output length:outputLength]; } NSString *SRBase64EncodedStringFromData(NSData *data) { if ([data respondsToSelector:@selector(base64EncodedStringWithOptions:)]) { return [data base64EncodedStringWithOptions:0]; } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" return [data base64Encoding]; #pragma clang diagnostic pop } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN // Uncomment this line to enable debug logging //#define SR_DEBUG_LOG_ENABLED extern void SRErrorLog(NSString *format, ...); extern void SRDebugLog(NSString *format, ...); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRLog.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRLog.h" NS_ASSUME_NONNULL_BEGIN extern void SRErrorLog(NSString *format, ...) { __block va_list arg_list; va_start (arg_list, format); NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:arg_list]; va_end(arg_list); NSLog(@"[SocketRocket] %@", formattedString); } extern void SRDebugLog(NSString *format, ...) { #ifdef SR_DEBUG_LOG_ENABLED SRErrorLog(tag, format); #endif } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN typedef __attribute__((capability("mutex"))) pthread_mutex_t *SRMutex; extern SRMutex SRMutexInitRecursive(void); extern void SRMutexDestroy(SRMutex mutex); extern void SRMutexLock(SRMutex mutex) __attribute__((acquire_capability(mutex))); extern void SRMutexUnlock(SRMutex mutex) __attribute__((release_capability(mutex))); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRMutex.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRMutex.h" #import NS_ASSUME_NONNULL_BEGIN SRMutex SRMutexInitRecursive(void) { pthread_mutex_t *mutex = malloc(sizeof(pthread_mutex_t)); pthread_mutexattr_t attributes; pthread_mutexattr_init(&attributes); pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init(mutex, &attributes); pthread_mutexattr_destroy(&attributes); return mutex; } void SRMutexDestroy(SRMutex mutex) { pthread_mutex_destroy(mutex); free(mutex); } __attribute__((no_thread_safety_analysis)) void SRMutexLock(SRMutex mutex) { pthread_mutex_lock(mutex); } __attribute__((no_thread_safety_analysis)) void SRMutexUnlock(SRMutex mutex) { pthread_mutex_unlock(mutex); } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN extern NSData *SRRandomData(NSUInteger length); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRRandom.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRRandom.h" #import NS_ASSUME_NONNULL_BEGIN NSData *SRRandomData(NSUInteger length) { NSMutableData *_Nullable data = [NSMutableData dataWithLength:length]; if (data == nil) { [NSException raise:NSInternalInconsistencyException format:@"Failed to allocate random data"]; } int result = SecRandomCopyBytes(kSecRandomDefault, data.length, data.mutableBytes); if (result != errSecSuccess) { [NSException raise:NSInternalInconsistencyException format:@"Failed to generate random bytes with OSStatus: %d", result]; } return data; } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import /** Unmask bytes using XOR via SIMD. @param bytes The bytes to unmask. @param length The number of bytes to unmask. @param maskKey The mask to XOR with MUST be of length sizeof(uint32_t). */ void SRMaskBytesSIMD(uint8_t *bytes, size_t length, uint8_t *maskKey); ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRSIMDHelpers.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRSIMDHelpers.h" typedef uint8_t uint8x32_t __attribute__((vector_size(32))); static void SRMaskBytesManual(uint8_t *bytes, size_t length, uint8_t *maskKey) { for (size_t i = 0; i < length; i++) { bytes[i] = bytes[i] ^ maskKey[i % sizeof(uint32_t)]; } } /** Right-shift the elements of a vector, circularly. @param vector The vector to circular shift. @param by The number of elements to shift by. @return A shifted vector. */ static uint8x32_t SRShiftVector(uint8x32_t vector, size_t by) { uint8x32_t vectorCopy = vector; by = by % _Alignof(uint8x32_t); uint8_t *vectorPointer = (uint8_t *)&vector; uint8_t *vectorCopyPointer = (uint8_t *)&vectorCopy; memmove(vectorPointer + by, vectorPointer, sizeof(vector) - by); memcpy(vectorPointer, vectorCopyPointer + (sizeof(vector) - by), by); return vector; } void SRMaskBytesSIMD(uint8_t *bytes, size_t length, uint8_t *maskKey) { size_t alignmentBytes = _Alignof(uint8x32_t) - ((uintptr_t)bytes % _Alignof(uint8x32_t)); if (alignmentBytes == _Alignof(uint8x32_t)) { alignmentBytes = 0; } // If the number of bytes that can be processed after aligning is // less than the number of bytes we can put into a vector, // then there's no work to do with SIMD, just call the manual version. if (alignmentBytes > length || (length - alignmentBytes) < sizeof(uint8x32_t)) { SRMaskBytesManual(bytes, length, maskKey); return; } size_t vectorLength = (length - alignmentBytes) / sizeof(uint8x32_t); size_t manualStartOffset = alignmentBytes + (vectorLength * sizeof(uint8x32_t)); size_t manualLength = length - manualStartOffset; uint8x32_t *vector = (uint8x32_t *)(bytes + alignmentBytes); uint8x32_t maskVector = { }; memset_pattern4(&maskVector, maskKey, sizeof(uint8x32_t)); maskVector = SRShiftVector(maskVector, alignmentBytes); SRMaskBytesManual(bytes, alignmentBytes, maskKey); for (size_t vectorIndex = 0; vectorIndex < vectorLength; vectorIndex++) { vector[vectorIndex] = vector[vectorIndex] ^ maskVector; } // Use the shifted mask for the final manual part. SRMaskBytesManual(bytes + manualStartOffset, manualLength, (uint8_t *) &maskVector); } ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN // The origin isn't really applicable for a native application. // So instead, just map ws -> http and wss -> https. extern NSString *SRURLOrigin(NSURL *url); extern BOOL SRURLRequiresSSL(NSURL *url); // Extracts `user` and `password` from url (if available) into `Basic base64(user:password)`. extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url); // Returns a valid value for `NSStreamNetworkServiceType` or `nil`. extern NSString *_Nullable SRStreamNetworkServiceTypeFromURLRequest(NSURLRequest *request); NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/Internal/Utilities/SRURLUtilities.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRURLUtilities.h" #import "SRHash.h" NS_ASSUME_NONNULL_BEGIN NSString *SRURLOrigin(NSURL *url) { NSMutableString *origin = [NSMutableString string]; NSString *scheme = url.scheme.lowercaseString; if ([scheme isEqualToString:@"wss"]) { scheme = @"https"; } else if ([scheme isEqualToString:@"ws"]) { scheme = @"http"; } [origin appendFormat:@"%@://%@", scheme, url.host]; NSNumber *port = url.port; BOOL portIsDefault = (!port || ([scheme isEqualToString:@"http"] && port.integerValue == 80) || ([scheme isEqualToString:@"https"] && port.integerValue == 443)); if (!portIsDefault) { [origin appendFormat:@":%@", port.stringValue]; } return origin; } extern BOOL SRURLRequiresSSL(NSURL *url) { NSString *scheme = url.scheme.lowercaseString; return ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]); } extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url) { if (!url.user || !url.password) { return nil; } NSData *data = [[NSString stringWithFormat:@"%@:%@", url.user, url.password] dataUsingEncoding:NSUTF8StringEncoding]; return [NSString stringWithFormat:@"Basic %@", SRBase64EncodedStringFromData(data)]; } extern NSString *_Nullable SRStreamNetworkServiceTypeFromURLRequest(NSURLRequest *request) { NSString *networkServiceType = nil; switch (request.networkServiceType) { case NSURLNetworkServiceTypeDefault: case NSURLNetworkServiceTypeResponsiveData: case NSURLNetworkServiceTypeAVStreaming: case NSURLNetworkServiceTypeResponsiveAV: break; case NSURLNetworkServiceTypeVoIP: networkServiceType = NSStreamNetworkServiceTypeVoIP; break; case NSURLNetworkServiceTypeVideo: networkServiceType = NSStreamNetworkServiceTypeVideo; break; case NSURLNetworkServiceTypeBackground: networkServiceType = NSStreamNetworkServiceTypeBackground; break; case NSURLNetworkServiceTypeVoice: networkServiceType = NSStreamNetworkServiceTypeVoice; break; #if (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 || __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 || __TV_OS_VERSION_MAX_ALLOWED >= 100000 || __WATCH_OS_VERSION_MAX_ALLOWED >= 30000) case NSURLNetworkServiceTypeCallSignaling: { if (@available(iOS 10.0, tvOS 10.0, macOS 10.12, *)) { networkServiceType = NSStreamNetworkServiceTypeCallSignaling; } } break; #endif } return networkServiceType; } NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN @interface NSRunLoop (SRWebSocket) /** Default run loop that will be used to schedule all instances of `SRWebSocket`. @return An instance of `NSRunLoop`. */ + (NSRunLoop *)SR_networkRunLoop; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/NSRunLoop+SRWebSocket.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "NSRunLoop+SRWebSocket.h" #import "NSRunLoop+SRWebSocketPrivate.h" #import "SRRunLoopThread.h" // Required for object file to always be linked. void import_NSRunLoop_SRWebSocket(void) { } @implementation NSRunLoop (SRWebSocket) + (NSRunLoop *)SR_networkRunLoop { return [SRRunLoopThread sharedThread].runLoop; } @end ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN @interface NSURLRequest (SRWebSocket) /** An array of pinned `SecCertificateRef` SSL certificates that `SRWebSocket` will use for validation. */ @property (nullable, nonatomic, copy, readonly) NSArray *SR_SSLPinnedCertificates DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " "and leads to security issues. Please use a proper, trust chain validated certificate."); @end @interface NSMutableURLRequest (SRWebSocket) /** An array of pinned `SecCertificateRef` SSL certificates that `SRWebSocket` will use for validation. */ @property (nullable, nonatomic, copy) NSArray *SR_SSLPinnedCertificates DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " "and leads to security issues. Please use a proper, trust chain validated certificate."); @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/NSURLRequest+SRWebSocket.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "NSURLRequest+SRWebSocket.h" #import "NSURLRequest+SRWebSocketPrivate.h" // Required for object file to always be linked. void import_NSURLRequest_SRWebSocket(void) { } NS_ASSUME_NONNULL_BEGIN static NSString *const SRSSLPinnnedCertificatesKey = @"SocketRocket_SSLPinnedCertificates"; @implementation NSURLRequest (SRWebSocket) - (nullable NSArray *)SR_SSLPinnedCertificates { return nil; } @end @implementation NSMutableURLRequest (SRWebSocket) - (void)setSR_SSLPinnedCertificates:(nullable NSArray *)SR_SSLPinnedCertificates { [NSException raise:NSInvalidArgumentException format:@"Using pinned certificates is neither secure nor supported in SocketRocket, " "and leads to security issues. Please use a proper, trust chain validated certificate."]; } @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.h ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import NS_ASSUME_NONNULL_BEGIN @interface SRSecurityPolicy : NSObject /** A default `SRSecurityPolicy` implementation specifies socket security and validates the certificate chain. Use a subclass of `SRSecurityPolicy` for more fine grained customization. */ + (instancetype)defaultPolicy; /** Specifies socket security and provider certificate pinning, disregarding certificate chain validation. @param pinnedCertificates Array of `SecCertificateRef` SSL certificates to use for validation. */ + (instancetype)pinnningPolicyWithCertificates:(NSArray *)pinnedCertificates DEPRECATED_MSG_ATTRIBUTE("Using pinned certificates is neither secure nor supported in SocketRocket, " "and leads to security issues. Please use a proper, trust chain validated certificate."); /** Specifies socket security and optional certificate chain validation. @param enabled Whether or not to validate the SSL certificate chain. If you are considering using this method because your certificate was not issued by a recognized certificate authority, consider using `pinningPolicyWithCertificates` instead. */ - (instancetype)initWithCertificateChainValidationEnabled:(BOOL)enabled DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " "Please use a proper Certificate Authority to issue your TLS certificates.") NS_DESIGNATED_INITIALIZER; /** Updates all the security options for input and output streams, for example you can set your socket security level here. @param stream Stream to update the options in. */ - (void)updateSecurityOptionsInStream:(NSStream *)stream; /** Whether or not the specified server trust should be accepted, based on the security policy. This method should be used when responding to an authentication challenge from a server. In the default implemenation, no further validation is done here, but you're free to override it in a subclass. See `SRPinningSecurityPolicy.h` for an example. @param serverTrust The X.509 certificate trust of the server. @param domain The domain of serverTrust. @return Whether or not to trust the server. */ - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain; @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m ================================================ // // Copyright (c) 2016-present, Facebook, Inc. // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRSecurityPolicy.h" #import "SRPinningSecurityPolicy.h" NS_ASSUME_NONNULL_BEGIN @interface SRSecurityPolicy () @property (nonatomic, assign, readonly) BOOL certificateChainValidationEnabled; @end @implementation SRSecurityPolicy + (instancetype)defaultPolicy { return [self new]; } + (instancetype)pinnningPolicyWithCertificates:(NSArray *)pinnedCertificates { [NSException raise:NSInvalidArgumentException format:@"Using pinned certificates is neither secure nor supported in SocketRocket, " "and leads to security issues. Please use a proper, trust chain validated certificate."]; return nil; } - (instancetype)initWithCertificateChainValidationEnabled:(BOOL)enabled { self = [super init]; if (!self) { return self; } _certificateChainValidationEnabled = enabled; return self; } - (instancetype)init { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" return [self initWithCertificateChainValidationEnabled:YES]; #pragma clang diagnostic pop } - (void)updateSecurityOptionsInStream:(NSStream *)stream { // Enforce TLS 1.2 [stream setProperty:(__bridge id)CFSTR("kCFStreamSocketSecurityLevelTLSv1_2") forKey:(__bridge id)kCFStreamPropertySocketSecurityLevel]; // Validate certificate chain for this stream if enabled. NSDictionary *sslOptions = @{ (__bridge NSString *)kCFStreamSSLValidatesCertificateChain : @(self.certificateChainValidationEnabled) }; [stream setProperty:sslOptions forKey:(__bridge NSString *)kCFStreamPropertySSLSettings]; } - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain { // No further evaluation happens in the default policy. return YES; } @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/SRWebSocket.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, SRReadyState) { SR_CONNECTING = 0, SR_OPEN = 1, SR_CLOSING = 2, SR_CLOSED = 3, }; typedef NS_ENUM(NSInteger, SRStatusCode) { // 0-999: Reserved and not used. SRStatusCodeNormal = 1000, SRStatusCodeGoingAway = 1001, SRStatusCodeProtocolError = 1002, SRStatusCodeUnhandledType = 1003, // 1004 reserved. SRStatusNoStatusReceived = 1005, SRStatusCodeAbnormal = 1006, SRStatusCodeInvalidUTF8 = 1007, SRStatusCodePolicyViolated = 1008, SRStatusCodeMessageTooBig = 1009, SRStatusCodeMissingExtension = 1010, SRStatusCodeInternalError = 1011, SRStatusCodeServiceRestart = 1012, SRStatusCodeTryAgainLater = 1013, // 1014: Reserved for future use by the WebSocket standard. SRStatusCodeTLSHandshake = 1015, // 1016-1999: Reserved for future use by the WebSocket standard. // 2000-2999: Reserved for use by WebSocket extensions. // 3000-3999: Available for use by libraries and frameworks. May not be used by applications. Available for registration at the IANA via first-come, first-serve. // 4000-4999: Available for use by applications. }; @class SRWebSocket; @class SRSecurityPolicy; /** Error domain used for errors reported by SRWebSocket. */ extern NSString *const SRWebSocketErrorDomain; /** Key used for HTTP status code if bad response was received from the server. */ extern NSString *const SRHTTPResponseErrorKey; @protocol SRWebSocketDelegate; ///-------------------------------------- #pragma mark - SRWebSocket ///-------------------------------------- /** A `SRWebSocket` object lets you connect, send and receive data to a remote Web Socket. */ @interface SRWebSocket : NSObject /** The delegate of the web socket. The web socket delegate is notified on all state changes that happen to the web socket. */ @property (nonatomic, weak) id delegate; /** A dispatch queue for scheduling the delegate calls. The queue doesn't need be a serial queue. If `nil` and `delegateOperationQueue` is `nil`, the socket uses main queue for performing all delegate method calls. */ @property (nullable, nonatomic, strong) dispatch_queue_t delegateDispatchQueue; /** An operation queue for scheduling the delegate calls. If `nil` and `delegateOperationQueue` is `nil`, the socket uses main queue for performing all delegate method calls. */ @property (nullable, nonatomic, strong) NSOperationQueue *delegateOperationQueue; /** Current ready state of the socket. Default: `SR_CONNECTING`. This property is Key-Value Observable and fully thread-safe. */ @property (atomic, assign, readonly) SRReadyState readyState; /** An instance of `NSURL` that this socket connects to. */ @property (nullable, nonatomic, strong, readonly) NSURL *url; /** All HTTP headers that were received by socket or `nil` if none were received so far. */ @property (nullable, nonatomic, assign, readonly) CFHTTPMessageRef receivedHTTPHeaders; /** Array of `NSHTTPCookie` cookies to apply to the connection. */ @property (nullable, nonatomic, copy) NSArray *requestCookies; /** The negotiated web socket protocol or `nil` if handshake did not yet complete. */ @property (nullable, nonatomic, copy, readonly) NSString *protocol; /** A boolean value indicating whether this socket will allow connection without SSL trust chain evaluation. For DEBUG builds this flag is ignored, and SSL connections are allowed regardless of the certificate trust configuration */ @property (nonatomic, assign, readonly) BOOL allowsUntrustedSSLCertificates; ///-------------------------------------- #pragma mark - Constructors ///-------------------------------------- /** Initializes a web socket with a given `NSURLRequest`. @param request Request to initialize with. */ - (instancetype)initWithURLRequest:(NSURLRequest *)request; /** Initializes a web socket with a given `NSURLRequest`, specifying a transport security policy (e.g. SSL configuration). @param request Request to initialize with. @param securityPolicy Policy object describing transport security behavior. */ - (instancetype)initWithURLRequest:(NSURLRequest *)request securityPolicy:(SRSecurityPolicy *)securityPolicy; /** Initializes a web socket with a given `NSURLRequest` and list of sub-protocols. @param request Request to initialize with. @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. */ - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols; /** Initializes a web socket with a given `NSURLRequest`, list of sub-protocols and whether untrusted SSL certificates are allowed. @param request Request to initialize with. @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. @param allowsUntrustedSSLCertificates Boolean value indicating whether untrusted SSL certificates are allowed. Default: `false`. */ - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " "Please use a proper Certificate Authority to issue your TLS certificates."); /** Initializes a web socket with a given `NSURLRequest`, list of sub-protocols and whether untrusted SSL certificates are allowed. @param request Request to initialize with. @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. @param securityPolicy Policy object describing transport security behavior. */ - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(nullable NSArray *)protocols securityPolicy:(SRSecurityPolicy *)securityPolicy NS_DESIGNATED_INITIALIZER; /** Initializes a web socket with a given `NSURL`. @param url URL to initialize with. */ - (instancetype)initWithURL:(NSURL *)url; /** Initializes a web socket with a given `NSURL` and list of sub-protocols. @param url URL to initialize with. @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. */ - (instancetype)initWithURL:(NSURL *)url protocols:(nullable NSArray *)protocols; /** Initializes a web socket with a given `NSURL`, specifying a transport security policy (e.g. SSL configuration). @param url URL to initialize with. @param securityPolicy Policy object describing transport security behavior. */ - (instancetype)initWithURL:(NSURL *)url securityPolicy:(SRSecurityPolicy *)securityPolicy; /** Initializes a web socket with a given `NSURL`, list of sub-protocols and whether untrusted SSL certificates are allowed. @param url URL to initialize with. @param protocols An array of strings that turn into `Sec-WebSocket-Protocol`. Default: `nil`. @param allowsUntrustedSSLCertificates Boolean value indicating whether untrusted SSL certificates are allowed. Default: `false`. */ - (instancetype)initWithURL:(NSURL *)url protocols:(nullable NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates DEPRECATED_MSG_ATTRIBUTE("Disabling certificate chain validation is unsafe. " "Please use a proper Certificate Authority to issue your TLS certificates."); /** Unavailable initializer. Please use any other initializer. */ - (instancetype)init NS_UNAVAILABLE; /** Unavailable constructor. Please use any other initializer. */ + (instancetype)new NS_UNAVAILABLE; ///-------------------------------------- #pragma mark - Schedule ///-------------------------------------- /** Schedules a received on a given run loop in a given mode. By default, a web socket will schedule itself on `+[NSRunLoop SR_networkRunLoop]` using `NSDefaultRunLoopMode`. @param runLoop The run loop on which to schedule the receiver. @param mode The mode for the run loop. */ - (void)scheduleInRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode NS_SWIFT_NAME(schedule(in:forMode:)); /** Removes the receiver from a given run loop running in a given mode. @param runLoop The run loop on which the receiver was scheduled. @param mode The mode for the run loop. */ - (void)unscheduleFromRunLoop:(NSRunLoop *)runLoop forMode:(NSString *)mode NS_SWIFT_NAME(unschedule(from:forMode:)); ///-------------------------------------- #pragma mark - Open / Close ///-------------------------------------- /** Opens web socket, which will trigger connection, authentication and start receiving/sending events. An instance of `SRWebSocket` is intended for one-time-use only. This method should be called once and only once. */ - (void)open; /** Closes a web socket using `SRStatusCodeNormal` code and no reason. */ - (void)close; /** Closes a web socket using a given code and reason. @param code Code to close the socket with. @param reason Reason to send to the server or `nil`. */ - (void)closeWithCode:(NSInteger)code reason:(nullable NSString *)reason; ///-------------------------------------- #pragma mark Send ///-------------------------------------- /** Send a UTF-8 string or binary data to the server. @param message UTF-8 String or Data to send. @deprecated Please use `sendString:` or `sendData` instead. */ - (void)send:(nullable id)message __attribute__((deprecated("Please use `sendString:error:` or `sendData:error:` instead."))); /** Send a UTF-8 String to the server. @param string String to send. @param error On input, a pointer to variable for an `NSError` object. If an error occurs, this pointer is set to an `NSError` object containing information about the error. You may specify `nil` to ignore the error information. @return `YES` if the string was scheduled to send, otherwise - `NO`. */ - (BOOL)sendString:(NSString *)string error:(NSError **)error NS_SWIFT_NAME(send(string:)); /** Send binary data to the server. @param data Data to send. @param error On input, a pointer to variable for an `NSError` object. If an error occurs, this pointer is set to an `NSError` object containing information about the error. You may specify `nil` to ignore the error information. @return `YES` if the string was scheduled to send, otherwise - `NO`. */ - (BOOL)sendData:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(send(data:)); /** Send binary data to the server, without making a defensive copy of it first. @param data Data to send. @param error On input, a pointer to variable for an `NSError` object. If an error occurs, this pointer is set to an `NSError` object containing information about the error. You may specify `nil` to ignore the error information. @return `YES` if the string was scheduled to send, otherwise - `NO`. */ - (BOOL)sendDataNoCopy:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(send(dataNoCopy:)); /** Send Ping message to the server with optional data. @param data Instance of `NSData` or `nil`. @param error On input, a pointer to variable for an `NSError` object. If an error occurs, this pointer is set to an `NSError` object containing information about the error. You may specify `nil` to ignore the error information. @return `YES` if the string was scheduled to send, otherwise - `NO`. */ - (BOOL)sendPing:(nullable NSData *)data error:(NSError **)error NS_SWIFT_NAME(sendPing(_:)); @end ///-------------------------------------- #pragma mark - SRWebSocketDelegate ///-------------------------------------- /** The `SRWebSocketDelegate` protocol describes the methods that `SRWebSocket` objects call on their delegates to handle status and messsage events. */ @protocol SRWebSocketDelegate @optional #pragma mark Receive Messages /** Called when any message was received from a web socket. This method is suboptimal and might be deprecated in a future release. @param webSocket An instance of `SRWebSocket` that received a message. @param message Received message. Either a `String` or `NSData`. */ - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message; /** Called when a frame was received from a web socket. @param webSocket An instance of `SRWebSocket` that received a message. @param string Received text in a form of UTF-8 `String`. */ - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(NSString *)string; /** Called when a frame was received from a web socket. @param webSocket An instance of `SRWebSocket` that received a message. @param data Received data in a form of `NSData`. */ - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithData:(NSData *)data; #pragma mark Status & Connection /** Called when a given web socket was open and authenticated. @param webSocket An instance of `SRWebSocket` that was open. */ - (void)webSocketDidOpen:(SRWebSocket *)webSocket; /** Called when a given web socket encountered an error. @param webSocket An instance of `SRWebSocket` that failed with an error. @param error An instance of `NSError`. */ - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; /** Called when a given web socket was closed. @param webSocket An instance of `SRWebSocket` that was closed. @param code Code reported by the server. @param reason Reason in a form of a String that was reported by the server or `nil`. @param wasClean Boolean value indicating whether a socket was closed in a clean state. */ - (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(nullable NSString *)reason wasClean:(BOOL)wasClean; /** Called on receive of a ping message from the server. @param webSocket An instance of `SRWebSocket` that received a ping frame. @param data Payload that was received or `nil` if there was no payload. */ - (void)webSocket:(SRWebSocket *)webSocket didReceivePingWithData:(nullable NSData *)data; /** Called when a pong data was received in response to ping. @param webSocket An instance of `SRWebSocket` that received a pong frame. @param pongData Payload that was received or `nil` if there was no payload. */ - (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(nullable NSData *)pongData; /** Sent before reporting a text frame to be able to configure if it shuold be convert to a UTF-8 String or passed as `NSData`. If the method is not implemented - it will always convert text frames to String. @param webSocket An instance of `SRWebSocket` that received a text frame. @return `YES` if text frame should be converted to UTF-8 String, otherwise - `NO`. Default: `YES`. */ - (BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket *)webSocket NS_SWIFT_NAME(webSocketShouldConvertTextFrameToString(_:)); @end NS_ASSUME_NONNULL_END ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/SRWebSocket.m ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import "SRWebSocket.h" #if __has_include() #define HAS_ICU #endif #ifdef HAS_ICU #import #endif #import #import "SRDelegateController.h" #import "SRIOConsumer.h" #import "SRIOConsumerPool.h" #import "SRHash.h" #import "SRURLUtilities.h" #import "SRError.h" #import "NSURLRequest+SRWebSocket.h" #import "NSRunLoop+SRWebSocket.h" #import "SRProxyConnect.h" #import "SRSecurityPolicy.h" #import "SRHTTPConnectMessage.h" #import "SRRandom.h" #import "SRLog.h" #import "SRMutex.h" #import "SRSIMDHelpers.h" #import "NSURLRequest+SRWebSocketPrivate.h" #import "NSRunLoop+SRWebSocketPrivate.h" #import "SRConstants.h" #if !__has_feature(objc_arc) #error SocketRocket must be compiled with ARC enabled #endif __attribute__((used)) static void importCategories(void) { import_NSURLRequest_SRWebSocket(); import_NSRunLoop_SRWebSocket(); } typedef struct { BOOL fin; // BOOL rsv1; // BOOL rsv2; // BOOL rsv3; uint8_t opcode; BOOL masked; uint64_t payload_length; } frame_header; static NSString *const SRWebSocketAppendToSecKeyString = @"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; static inline int32_t validate_dispatch_data_partial_string(NSData *data); static uint8_t const SRWebSocketProtocolVersion = 13; NSString *const SRWebSocketErrorDomain = @"SRWebSocketErrorDomain"; NSString *const SRHTTPResponseErrorKey = @"HTTPResponseStatusCode"; @interface SRWebSocket () @property (atomic, assign, readwrite) SRReadyState readyState; // Specifies whether SSL trust chain should NOT be evaluated. // By default this flag is set to NO, meaning only secure SSL connections are allowed. // For DEBUG builds this flag is ignored, and SSL connections are allowed regardless // of the certificate trust configuration @property (nonatomic, assign, readwrite) BOOL allowsUntrustedSSLCertificates; @property (nonatomic, strong, readonly) SRDelegateController *delegateController; @end @implementation SRWebSocket { SRMutex _kvoLock; OSSpinLock _propertyLock; dispatch_queue_t _workQueue; NSMutableArray *_consumers; NSInputStream *_inputStream; NSOutputStream *_outputStream; dispatch_data_t _readBuffer; NSUInteger _readBufferOffset; dispatch_data_t _outputBuffer; NSUInteger _outputBufferOffset; uint8_t _currentFrameOpcode; size_t _currentFrameCount; size_t _readOpCount; uint32_t _currentStringScanPosition; NSMutableData *_currentFrameData; NSString *_closeReason; NSString *_secKey; SRSecurityPolicy *_securityPolicy; BOOL _requestRequiresSSL; BOOL _streamSecurityValidated; uint8_t _currentReadMaskKey[4]; size_t _currentReadMaskOffset; BOOL _closeWhenFinishedWriting; BOOL _failed; NSURLRequest *_urlRequest; BOOL _sentClose; BOOL _didFail; BOOL _cleanupScheduled; int _closeCode; BOOL _isPumping; NSMutableSet *_scheduledRunloops; // Set<[RunLoop, Mode]>. TODO: (nlutsenko) Fix clowntown // We use this to retain ourselves. __strong SRWebSocket *_selfRetain; NSArray *_requestedProtocols; SRIOConsumerPool *_consumerPool; // proxy support SRProxyConnect *_proxyConnect; } @synthesize readyState = _readyState; ///-------------------------------------- #pragma mark - Init ///-------------------------------------- - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols securityPolicy:(SRSecurityPolicy *)securityPolicy { self = [super init]; if (!self) return self; assert(request.URL); _url = request.URL; _urlRequest = request; _requestedProtocols = [protocols copy]; _securityPolicy = securityPolicy; _requestRequiresSSL = SRURLRequiresSSL(_url); _readyState = SR_CONNECTING; _propertyLock = OS_SPINLOCK_INIT; _kvoLock = SRMutexInitRecursive(); _workQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL); // Going to set a specific on the queue so we can validate we're on the work queue dispatch_queue_set_specific(_workQueue, (__bridge void *)self, (__bridge void *)(_workQueue), NULL); _delegateController = [[SRDelegateController alloc] init]; _readBuffer = dispatch_data_empty; _outputBuffer = dispatch_data_empty; _currentFrameData = [[NSMutableData alloc] init]; _consumers = [[NSMutableArray alloc] init]; _consumerPool = [[SRIOConsumerPool alloc] init]; _scheduledRunloops = [[NSMutableSet alloc] init]; return self; } - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates { SRSecurityPolicy *securityPolicy; NSArray *pinnedCertificates = request.SR_SSLPinnedCertificates; if (pinnedCertificates) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" securityPolicy = [SRSecurityPolicy pinnningPolicyWithCertificates:pinnedCertificates]; #pragma clang diagnostic pop } else { BOOL certificateChainValidationEnabled = !allowsUntrustedSSLCertificates; securityPolicy = [[SRSecurityPolicy alloc] initWithCertificateChainValidationEnabled:certificateChainValidationEnabled]; } return [self initWithURLRequest:request protocols:protocols securityPolicy:securityPolicy]; } - (instancetype)initWithURLRequest:(NSURLRequest *)request securityPolicy:(SRSecurityPolicy *)securityPolicy { return [self initWithURLRequest:request protocols:nil securityPolicy:securityPolicy]; } - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" return [self initWithURLRequest:request protocols:protocols allowsUntrustedSSLCertificates:NO]; #pragma clang diagnostic pop } - (instancetype)initWithURLRequest:(NSURLRequest *)request { return [self initWithURLRequest:request protocols:nil]; } - (instancetype)initWithURL:(NSURL *)url { return [self initWithURL:url protocols:nil]; } - (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" return [self initWithURL:url protocols:protocols allowsUntrustedSSLCertificates:NO]; #pragma clang diagnostic pop } - (instancetype)initWithURL:(NSURL *)url securityPolicy:(SRSecurityPolicy *)securityPolicy { NSURLRequest *request = [NSURLRequest requestWithURL:url]; return [self initWithURLRequest:request protocols:nil securityPolicy:securityPolicy]; } - (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates { NSURLRequest *request = [NSURLRequest requestWithURL:url]; return [self initWithURLRequest:request protocols:protocols allowsUntrustedSSLCertificates:allowsUntrustedSSLCertificates]; } - (void)assertOnWorkQueue { assert(dispatch_get_specific((__bridge void *)self) == (__bridge void *)_workQueue); } ///-------------------------------------- #pragma mark - Dealloc ///-------------------------------------- - (void)dealloc { _inputStream.delegate = nil; _outputStream.delegate = nil; [_inputStream close]; [_outputStream close]; if (_receivedHTTPHeaders) { CFRelease(_receivedHTTPHeaders); _receivedHTTPHeaders = NULL; } SRMutexDestroy(_kvoLock); } ///-------------------------------------- #pragma mark - Accessors ///-------------------------------------- #pragma mark readyState - (void)setReadyState:(SRReadyState)readyState { @try { SRMutexLock(_kvoLock); if (_readyState != readyState) { [self willChangeValueForKey:@"readyState"]; OSSpinLockLock(&_propertyLock); _readyState = readyState; OSSpinLockUnlock(&_propertyLock); [self didChangeValueForKey:@"readyState"]; } } @finally { SRMutexUnlock(_kvoLock); } } - (SRReadyState)readyState { SRReadyState state = 0; OSSpinLockLock(&_propertyLock); state = _readyState; OSSpinLockUnlock(&_propertyLock); return state; } + (BOOL)automaticallyNotifiesObserversOfReadyState { return NO; } ///-------------------------------------- #pragma mark - Open / Close ///-------------------------------------- - (void)open { assert(_url); NSAssert(self.readyState == SR_CONNECTING, @"Cannot call -(void)open on SRWebSocket more than once."); _selfRetain = self; if (_urlRequest.timeoutInterval > 0) { dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_urlRequest.timeoutInterval * NSEC_PER_SEC)); __weak typeof(self) wself = self; dispatch_after(popTime, dispatch_get_main_queue(), ^{ __strong SRWebSocket *sself = wself; if (!sself) { return; } if (sself.readyState == SR_CONNECTING) { NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, NSURLErrorTimedOut, @"Timed out connecting to server."); [sself _failWithError:error]; } }); } _proxyConnect = [[SRProxyConnect alloc] initWithURL:_url]; __weak typeof(self) wself = self; [_proxyConnect openNetworkStreamWithCompletion:^(NSError *error, NSInputStream *readStream, NSOutputStream *writeStream) { [wself _connectionDoneWithError:error readStream:readStream writeStream:writeStream]; }]; } - (void)_connectionDoneWithError:(NSError *)error readStream:(NSInputStream *)readStream writeStream:(NSOutputStream *)writeStream { if (error != nil) { [self _failWithError:error]; } else { _outputStream = writeStream; _inputStream = readStream; _inputStream.delegate = self; _outputStream.delegate = self; [self _updateSecureStreamOptions]; if (!_scheduledRunloops.count) { [self scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; } // If we don't require SSL validation - consider that we connected. // Otherwise `didConnect` is called when SSL validation finishes. if (!_requestRequiresSSL) { dispatch_async(_workQueue, ^{ [self didConnect]; }); } } // Schedule to run on a work queue, to make sure we don't run this inline and deallocate `self` inside `SRProxyConnect`. // TODO: (nlutsenko) Find a better structure for this, maybe Bolts Tasks? dispatch_async(_workQueue, ^{ self->_proxyConnect = nil; }); } - (BOOL)_checkHandshake:(CFHTTPMessageRef)httpMessage { NSString *acceptHeader = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Accept"))); if (acceptHeader == nil) { return NO; } NSString *concattedString = [_secKey stringByAppendingString:SRWebSocketAppendToSecKeyString]; NSData *hashedString = SRSHA1HashFromString(concattedString); NSString *expectedAccept = SRBase64EncodedStringFromData(hashedString); return [acceptHeader isEqualToString:expectedAccept]; } - (void)_HTTPHeadersDidFinish { NSInteger responseCode = CFHTTPMessageGetResponseStatusCode(_receivedHTTPHeaders); if (responseCode >= 400) { SRDebugLog(@"Request failed with response code %d", responseCode); NSError *error = SRHTTPErrorWithCodeDescription(responseCode, 2132, [NSString stringWithFormat:@"Received bad response code from server: %d.", (int)responseCode]); [self _failWithError:error]; return; } if(![self _checkHandshake:_receivedHTTPHeaders]) { NSError *error = SRErrorWithCodeDescription(2133, @"Invalid Sec-WebSocket-Accept response."); [self _failWithError:error]; return; } NSString *negotiatedProtocol = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(_receivedHTTPHeaders, CFSTR("Sec-WebSocket-Protocol"))); if (negotiatedProtocol) { // Make sure we requested the protocol if ([_requestedProtocols indexOfObject:negotiatedProtocol] == NSNotFound) { NSError *error = SRErrorWithCodeDescription(2133, @"Server specified Sec-WebSocket-Protocol that wasn't requested."); [self _failWithError:error]; return; } _protocol = negotiatedProtocol; } self.readyState = SR_OPEN; if (!_didFail) { [self _readFrameNew]; } [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didOpen) { [delegate webSocketDidOpen:self]; } }]; } - (void)_readHTTPHeader { if (_receivedHTTPHeaders == NULL) { _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); } [self _readUntilHeaderCompleteWithCallback:^(SRWebSocket *socket, NSData *data) { if (!socket) { return; } CFHTTPMessageRef receivedHTTPHeaders = socket->_receivedHTTPHeaders; CFHTTPMessageAppendBytes(receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); if (CFHTTPMessageIsHeaderComplete(receivedHTTPHeaders)) { SRDebugLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(receivedHTTPHeaders))); [socket _HTTPHeadersDidFinish]; } else { [socket _readHTTPHeader]; } }]; } - (void)didConnect { SRDebugLog(@"Connected"); _secKey = SRBase64EncodedStringFromData(SRRandomData(16)); assert([_secKey length] == 24); CFHTTPMessageRef message = SRHTTPConnectMessageCreate(_urlRequest, _secKey, SRWebSocketProtocolVersion, self.requestCookies, _requestedProtocols); NSData *messageData = CFBridgingRelease(CFHTTPMessageCopySerializedMessage(message)); CFRelease(message); [self _writeData:messageData]; [self _readHTTPHeader]; } - (void)_updateSecureStreamOptions { if (_requestRequiresSSL) { SRDebugLog(@"Setting up security for streams."); [_securityPolicy updateSecurityOptionsInStream:_inputStream]; [_securityPolicy updateSecurityOptionsInStream:_outputStream]; } NSString *networkServiceType = SRStreamNetworkServiceTypeFromURLRequest(_urlRequest); if (networkServiceType != nil) { [_inputStream setProperty:networkServiceType forKey:NSStreamNetworkServiceType]; [_outputStream setProperty:networkServiceType forKey:NSStreamNetworkServiceType]; } } - (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode { [_outputStream scheduleInRunLoop:aRunLoop forMode:mode]; [_inputStream scheduleInRunLoop:aRunLoop forMode:mode]; [_scheduledRunloops addObject:@[aRunLoop, mode]]; } - (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode { [_outputStream removeFromRunLoop:aRunLoop forMode:mode]; [_inputStream removeFromRunLoop:aRunLoop forMode:mode]; [_scheduledRunloops removeObject:@[aRunLoop, mode]]; } - (void)close { [self closeWithCode:SRStatusCodeNormal reason:nil]; } - (void)closeWithCode:(NSInteger)code reason:(NSString *)reason { assert(code); __weak typeof(self) wself = self; dispatch_async(_workQueue, ^{ __strong SRWebSocket *sself = wself; if (!sself) { return; } if (sself.readyState == SR_CLOSING || sself.readyState == SR_CLOSED) { return; } BOOL wasConnecting = sself.readyState == SR_CONNECTING; sself.readyState = SR_CLOSING; SRDebugLog(@"Closing with code %d reason %@", code, reason); if (wasConnecting) { [sself closeConnection]; return; } size_t maxMsgSize = [reason maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding]; NSMutableData *mutablePayload = [[NSMutableData alloc] initWithLength:sizeof(uint16_t) + maxMsgSize]; NSData *payload = mutablePayload; ((uint16_t *)mutablePayload.mutableBytes)[0] = CFSwapInt16BigToHost((uint16_t)code); if (reason) { NSRange remainingRange = {0}; NSUInteger usedLength = 0; BOOL success = [reason getBytes:(char *)mutablePayload.mutableBytes + sizeof(uint16_t) maxLength:payload.length - sizeof(uint16_t) usedLength:&usedLength encoding:NSUTF8StringEncoding options:NSStringEncodingConversionExternalRepresentation range:NSMakeRange(0, reason.length) remainingRange:&remainingRange]; #pragma unused (success) assert(success); assert(remainingRange.length == 0); if (usedLength != maxMsgSize) { payload = [payload subdataWithRange:NSMakeRange(0, usedLength + sizeof(uint16_t))]; } } [sself _sendFrameWithOpcode:SROpCodeConnectionClose data:payload]; }); } - (void)_closeWithProtocolError:(NSString *)message { // Need to shunt this on the _callbackQueue first to see if they received any messages [self.delegateController performDelegateQueueBlock:^{ [self closeWithCode:SRStatusCodeProtocolError reason:message]; dispatch_async(self->_workQueue, ^{ [self closeConnection]; }); }]; } - (void)_failWithError:(NSError *)error { dispatch_async(_workQueue, ^{ if (self.readyState != SR_CLOSED) { self->_failed = YES; [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didFailWithError) { [delegate webSocket:self didFailWithError:error]; } }]; self.readyState = SR_CLOSED; SRDebugLog(@"Failing with error %@", error.localizedDescription); [self closeConnection]; [self _scheduleCleanup]; } }); } - (void)_writeData:(NSData *)data { [self assertOnWorkQueue]; if (_closeWhenFinishedWriting) { return; } __block NSData *strongData = data; dispatch_data_t newData = dispatch_data_create(data.bytes, data.length, nil, ^{ strongData = nil; }); (void)strongData; _outputBuffer = dispatch_data_create_concat(_outputBuffer, newData); [self _pumpWriting]; } - (void)send:(nullable id)message { if (!message) { [self sendData:nil error:nil]; // Send Data, but it doesn't matter since we are going to send the same text frame with 0 length. } else if ([message isKindOfClass:[NSString class]]) { [self sendString:message error:nil]; } else if ([message isKindOfClass:[NSData class]]) { [self sendData:message error:nil]; } else { NSAssert(NO, @"Unrecognized message. Not able to send anything other than a String or NSData."); } } - (BOOL)sendString:(NSString *)string error:(NSError **)error { if (self.readyState != SR_OPEN) { NSString *message = @"Invalid State: Cannot call `sendString:error:` until connection is open."; if (error) { *error = SRErrorWithCodeDescription(2134, message); } SRDebugLog(message); return NO; } string = [string copy]; dispatch_async(_workQueue, ^{ [self _sendFrameWithOpcode:SROpCodeTextFrame data:[string dataUsingEncoding:NSUTF8StringEncoding]]; }); return YES; } - (BOOL)sendData:(nullable NSData *)data error:(NSError **)error { data = [data copy]; return [self sendDataNoCopy:data error:error]; } - (BOOL)sendDataNoCopy:(nullable NSData *)data error:(NSError **)error { if (self.readyState != SR_OPEN) { NSString *message = @"Invalid State: Cannot call `sendDataNoCopy:error:` until connection is open."; if (error) { *error = SRErrorWithCodeDescription(2134, message); } SRDebugLog(message); return NO; } dispatch_async(_workQueue, ^{ if (data) { [self _sendFrameWithOpcode:SROpCodeBinaryFrame data:data]; } else { [self _sendFrameWithOpcode:SROpCodeTextFrame data:nil]; } }); return YES; } - (BOOL)sendPing:(nullable NSData *)data error:(NSError **)error { if (self.readyState != SR_OPEN) { NSString *message = @"Invalid State: Cannot call `sendPing:error:` until connection is open."; if (error) { *error = SRErrorWithCodeDescription(2134, message); } SRDebugLog(message); return NO; } data = [data copy] ?: [NSData data]; // It's okay for a ping to be empty dispatch_async(_workQueue, ^{ [self _sendFrameWithOpcode:SROpCodePing data:data]; }); return YES; } - (void)_handlePingWithData:(nullable NSData *)data { // Need to pingpong this off _callbackQueue first to make sure messages happen in order [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didReceivePing) { [delegate webSocket:self didReceivePingWithData:data]; } dispatch_async(self->_workQueue, ^{ [self _sendFrameWithOpcode:SROpCodePong data:data]; }); }]; } - (void)handlePong:(NSData *)pongData { SRDebugLog(@"Received pong"); [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didReceivePong) { [delegate webSocket:self didReceivePong:pongData]; } }]; } static inline BOOL closeCodeIsValid(int closeCode) { if (closeCode < 1000) { return NO; } if (closeCode >= 1000 && closeCode <= 1011) { if (closeCode == 1004 || closeCode == 1005 || closeCode == 1006) { return NO; } return YES; } if (closeCode >= 3000 && closeCode <= 3999) { return YES; } if (closeCode >= 4000 && closeCode <= 4999) { return YES; } return NO; } // Note from RFC: // // If there is a body, the first two // bytes of the body MUST be a 2-byte unsigned integer (in network byte // order) representing a status code with value /code/ defined in // Section 7.4. Following the 2-byte integer the body MAY contain UTF-8 // encoded data with value /reason/, the interpretation of which is not // defined by this specification. - (void)handleCloseWithData:(NSData *)data { size_t dataSize = data.length; __block uint16_t closeCode = 0; SRDebugLog(@"Received close frame"); if (dataSize == 1) { // TODO handle error [self _closeWithProtocolError:@"Payload for close must be larger than 2 bytes"]; return; } else if (dataSize >= 2) { [data getBytes:&closeCode length:sizeof(closeCode)]; _closeCode = CFSwapInt16BigToHost(closeCode); if (!closeCodeIsValid(_closeCode)) { [self _closeWithProtocolError:[NSString stringWithFormat:@"Cannot have close code of %d", _closeCode]]; return; } if (dataSize > 2) { _closeReason = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(2, dataSize - 2)] encoding:NSUTF8StringEncoding]; if (!_closeReason) { [self _closeWithProtocolError:@"Close reason MUST be valid UTF-8"]; return; } } } else { _closeCode = SRStatusNoStatusReceived; } [self assertOnWorkQueue]; if (self.readyState == SR_OPEN) { [self closeWithCode:1000 reason:nil]; } dispatch_async(_workQueue, ^{ [self closeConnection]; }); } - (void)closeConnection { [self assertOnWorkQueue]; SRDebugLog(@"Trying to disconnect"); _closeWhenFinishedWriting = YES; [self _pumpWriting]; } - (void)_handleFrameWithData:(NSData *)frameData opCode:(SROpCode)opcode { // Check that the current data is valid UTF8 BOOL isControlFrame = (opcode == SROpCodePing || opcode == SROpCodePong || opcode == SROpCodeConnectionClose); if (isControlFrame) { //frameData will be copied before passing to handlers //otherwise there can be misbehaviours when value at the pointer is changed frameData = [frameData copy]; dispatch_async(_workQueue, ^{ [self _readFrameContinue]; }); } else { [self _readFrameNew]; } switch (opcode) { case SROpCodeTextFrame: { NSString *string = [[NSString alloc] initWithData:frameData encoding:NSUTF8StringEncoding]; if (!string && frameData) { [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8."]; dispatch_async(_workQueue, ^{ [self closeConnection]; }); return; } SRDebugLog(@"Received text message."); [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { // Don't convert into string - iff `delegate` tells us not to. Otherwise - create UTF8 string and handle that. if (availableMethods.shouldConvertTextFrameToString && ![delegate webSocketShouldConvertTextFrameToString:self]) { if (availableMethods.didReceiveMessage) { [delegate webSocket:self didReceiveMessage:frameData]; } if (availableMethods.didReceiveMessageWithData) { [delegate webSocket:self didReceiveMessageWithData:frameData]; } } else { if (availableMethods.didReceiveMessage) { [delegate webSocket:self didReceiveMessage:string]; } if (availableMethods.didReceiveMessageWithString) { [delegate webSocket:self didReceiveMessageWithString:string]; } } }]; break; } case SROpCodeBinaryFrame: { SRDebugLog(@"Received data message."); [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didReceiveMessage) { [delegate webSocket:self didReceiveMessage:frameData]; } if (availableMethods.didReceiveMessageWithData) { [delegate webSocket:self didReceiveMessageWithData:frameData]; } }]; } break; case SROpCodeConnectionClose: [self handleCloseWithData:frameData]; break; case SROpCodePing: [self _handlePingWithData:frameData]; break; case SROpCodePong: [self handlePong:frameData]; break; default: [self _closeWithProtocolError:[NSString stringWithFormat:@"Unknown opcode %ld", (long)opcode]]; // TODO: Handle invalid opcode break; } } - (void)_handleFrameHeader:(frame_header)frame_header curData:(NSData *)curData { assert(frame_header.opcode != 0); if (self.readyState == SR_CLOSED) { return; } BOOL isControlFrame = (frame_header.opcode == SROpCodePing || frame_header.opcode == SROpCodePong || frame_header.opcode == SROpCodeConnectionClose); if (isControlFrame && !frame_header.fin) { [self _closeWithProtocolError:@"Fragmented control frames not allowed"]; return; } if (isControlFrame && frame_header.payload_length >= 126) { [self _closeWithProtocolError:@"Control frames cannot have payloads larger than 126 bytes"]; return; } if (!isControlFrame) { _currentFrameOpcode = frame_header.opcode; _currentFrameCount += 1; } if (frame_header.payload_length == 0) { if (isControlFrame) { [self _handleFrameWithData:curData opCode:frame_header.opcode]; } else { if (frame_header.fin) { [self _handleFrameWithData:_currentFrameData opCode:frame_header.opcode]; } else { // TODO add assert that opcode is not a control; [self _readFrameContinue]; } } } else { assert(frame_header.payload_length <= SIZE_T_MAX); [self _addConsumerWithDataLength:(size_t)frame_header.payload_length callback:^(SRWebSocket *sself, NSData *newData) { if (isControlFrame) { [sself _handleFrameWithData:newData opCode:frame_header.opcode]; } else { if (frame_header.fin) { [sself _handleFrameWithData:sself->_currentFrameData opCode:frame_header.opcode]; } else { // TODO add assert that opcode is not a control; [sself _readFrameContinue]; } } } readToCurrentFrame:!isControlFrame unmaskBytes:frame_header.masked]; } } /* From RFC: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ |F|R|R|R| opcode|M| Payload len | Extended payload length | |I|S|S|S| (4) |A| (7) | (16/64) | |N|V|V|V| |S| | (if payload len==126/127) | | |1|2|3| |K| | | +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + | Extended payload length continued, if payload len == 127 | + - - - - - - - - - - - - - - - +-------------------------------+ | |Masking-key, if MASK set to 1 | +-------------------------------+-------------------------------+ | Masking-key (continued) | Payload Data | +-------------------------------- - - - - - - - - - - - - - - - + : Payload Data continued ... : + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Payload Data continued ... | +---------------------------------------------------------------+ */ static const uint8_t SRFinMask = 0x80; static const uint8_t SROpCodeMask = 0x0F; static const uint8_t SRRsvMask = 0x70; static const uint8_t SRMaskMask = 0x80; static const uint8_t SRPayloadLenMask = 0x7F; - (void)_readFrameContinue { assert((_currentFrameCount == 0 && _currentFrameOpcode == 0) || (_currentFrameCount > 0 && _currentFrameOpcode > 0)); [self _addConsumerWithDataLength:2 callback:^(SRWebSocket *sself, NSData *data) { __block frame_header header = {0}; const uint8_t *headerBuffer = data.bytes; assert(data.length >= 2); if (headerBuffer[0] & SRRsvMask) { [sself _closeWithProtocolError:@"Server used RSV bits"]; return; } uint8_t receivedOpcode = (SROpCodeMask & headerBuffer[0]); BOOL isControlFrame = (receivedOpcode == SROpCodePing || receivedOpcode == SROpCodePong || receivedOpcode == SROpCodeConnectionClose); if (!isControlFrame && receivedOpcode != 0 && sself->_currentFrameCount > 0) { [sself _closeWithProtocolError:@"all data frames after the initial data frame must have opcode 0"]; return; } if (receivedOpcode == 0 && sself->_currentFrameCount == 0) { [sself _closeWithProtocolError:@"cannot continue a message"]; return; } header.opcode = receivedOpcode == 0 ? sself->_currentFrameOpcode : receivedOpcode; header.fin = !!(SRFinMask & headerBuffer[0]); header.masked = !!(SRMaskMask & headerBuffer[1]); header.payload_length = SRPayloadLenMask & headerBuffer[1]; headerBuffer = NULL; if (header.masked) { [sself _closeWithProtocolError:@"Client must receive unmasked data"]; return; } size_t extra_bytes_needed = header.masked ? sizeof(sself->_currentReadMaskKey) : 0; if (header.payload_length == 126) { extra_bytes_needed += sizeof(uint16_t); } else if (header.payload_length == 127) { extra_bytes_needed += sizeof(uint64_t); } if (extra_bytes_needed == 0) { [sself _handleFrameHeader:header curData:sself->_currentFrameData]; } else { [sself _addConsumerWithDataLength:extra_bytes_needed callback:^(SRWebSocket *eself, NSData *edata) { size_t mapped_size = edata.length; #pragma unused (mapped_size) const void *mapped_buffer = edata.bytes; size_t offset = 0; if (header.payload_length == 126) { assert(mapped_size >= sizeof(uint16_t)); uint16_t payloadLength = 0; memcpy(&payloadLength, mapped_buffer, sizeof(uint16_t)); payloadLength = CFSwapInt16BigToHost(payloadLength); header.payload_length = payloadLength; offset += sizeof(uint16_t); } else if (header.payload_length == 127) { assert(mapped_size >= sizeof(uint64_t)); uint64_t payloadLength = 0; memcpy(&payloadLength, mapped_buffer, sizeof(uint64_t)); payloadLength = CFSwapInt64BigToHost(payloadLength); header.payload_length = payloadLength; offset += sizeof(uint64_t); } else { assert(header.payload_length < 126 && header.payload_length >= 0); } if (header.masked) { assert(mapped_size >= sizeof(eself->_currentReadMaskOffset) + offset); memcpy(eself->_currentReadMaskKey, ((uint8_t *)mapped_buffer) + offset, sizeof(eself->_currentReadMaskKey)); } [eself _handleFrameHeader:header curData:eself->_currentFrameData]; } readToCurrentFrame:NO unmaskBytes:NO]; } } readToCurrentFrame:NO unmaskBytes:NO]; } - (void)_readFrameNew { dispatch_async(_workQueue, ^{ // Don't reset the length, since Apple doesn't guarantee that this will free the memory (and in tests on // some platforms, it doesn't seem to, effectively causing a leak the size of the biggest frame so far). self->_currentFrameData = [[NSMutableData alloc] init]; self->_currentFrameOpcode = 0; self->_currentFrameCount = 0; self->_readOpCount = 0; self->_currentStringScanPosition = 0; [self _readFrameContinue]; }); } - (void)_pumpWriting { [self assertOnWorkQueue]; NSUInteger dataLength = dispatch_data_get_size(_outputBuffer); if (dataLength - _outputBufferOffset > 0 && _outputStream.hasSpaceAvailable) { __block NSInteger bytesWritten = 0; __block BOOL streamFailed = NO; dispatch_data_t dataToSend = dispatch_data_create_subrange(_outputBuffer, _outputBufferOffset, dataLength - _outputBufferOffset); dispatch_data_apply(dataToSend, ^bool(dispatch_data_t region, size_t offset, const void *buffer, size_t size) { NSInteger sentLength = [_outputStream write:buffer maxLength:size]; if (sentLength == -1) { streamFailed = YES; return false; } bytesWritten += sentLength; return (sentLength >= (NSInteger)size); // If we can't write all the data into the stream - bail-out early. }); if (streamFailed) { NSInteger code = 2145; NSString *description = @"Error writing to stream."; NSError *streamError = _outputStream.streamError; NSError *error = streamError ? SRErrorWithCodeDescriptionUnderlyingError(code, description, streamError) : SRErrorWithCodeDescription(code, description); [self _failWithError:error]; return; } _outputBufferOffset += bytesWritten; if (_outputBufferOffset > SRDefaultBufferSize() && _outputBufferOffset > dataLength / 2) { _outputBuffer = dispatch_data_create_subrange(_outputBuffer, _outputBufferOffset, dataLength - _outputBufferOffset); _outputBufferOffset = 0; } } if (_closeWhenFinishedWriting && (dispatch_data_get_size(_outputBuffer) - _outputBufferOffset) == 0 && (_inputStream.streamStatus != NSStreamStatusNotOpen && _inputStream.streamStatus != NSStreamStatusClosed) && !_sentClose) { _sentClose = YES; @synchronized(self) { [_outputStream close]; [_inputStream close]; for (NSArray *runLoop in [_scheduledRunloops copy]) { [self unscheduleFromRunLoop:[runLoop objectAtIndex:0] forMode:[runLoop objectAtIndex:1]]; } } if (!_failed) { [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didCloseWithCode) { [delegate webSocket:self didCloseWithCode:self->_closeCode reason:self->_closeReason wasClean:YES]; } }]; } [self _scheduleCleanup]; } } - (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback { [self assertOnWorkQueue]; [self _addConsumerWithScanner:consumer callback:callback dataLength:0]; } - (void)_addConsumerWithDataLength:(size_t)dataLength callback:(data_callback)callback readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes { [self assertOnWorkQueue]; assert(dataLength); [_consumers addObject:[_consumerPool consumerWithScanner:nil handler:callback bytesNeeded:dataLength readToCurrentFrame:readToCurrentFrame unmaskBytes:unmaskBytes]]; [self _pumpScanner]; } - (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback dataLength:(size_t)dataLength { [self assertOnWorkQueue]; [_consumers addObject:[_consumerPool consumerWithScanner:consumer handler:callback bytesNeeded:dataLength readToCurrentFrame:NO unmaskBytes:NO]]; [self _pumpScanner]; } - (void)_scheduleCleanup { @synchronized(self) { if (_cleanupScheduled) { return; } _cleanupScheduled = YES; // Cleanup NSStream delegate's in the same RunLoop used by the streams themselves: // This way we'll prevent race conditions between handleEvent and SRWebsocket's dealloc NSTimer *timer = [NSTimer timerWithTimeInterval:(0.0f) target:self selector:@selector(_cleanupSelfReference:) userInfo:nil repeats:NO]; [[NSRunLoop SR_networkRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; } } - (void)_cleanupSelfReference:(NSTimer *)timer { @synchronized(self) { // Nuke NSStream delegate's _inputStream.delegate = nil; _outputStream.delegate = nil; // Remove the streams, right now, from the networkRunLoop [_inputStream close]; [_outputStream close]; } // Cleanup selfRetain in the same GCD queue as usual dispatch_async(_workQueue, ^{ self->_selfRetain = nil; }); } static const char CRLFCRLFBytes[] = {'\r', '\n', '\r', '\n'}; - (void)_readUntilHeaderCompleteWithCallback:(data_callback)dataHandler { [self _readUntilBytes:CRLFCRLFBytes length:sizeof(CRLFCRLFBytes) callback:dataHandler]; } - (void)_readUntilBytes:(const void *)bytes length:(size_t)length callback:(data_callback)dataHandler { // TODO optimize so this can continue from where we last searched stream_scanner consumer = ^size_t(NSData *data) { __block size_t found_size = 0; __block size_t match_count = 0; size_t size = data.length; const unsigned char *buffer = data.bytes; for (size_t i = 0; i < size; i++ ) { if (((const unsigned char *)buffer)[i] == ((const unsigned char *)bytes)[match_count]) { match_count += 1; if (match_count == length) { found_size = i + 1; break; } } else { match_count = 0; } } return found_size; }; [self _addConsumerWithScanner:consumer callback:dataHandler]; } // Returns true if did work - (BOOL)_innerPumpScanner { BOOL didWork = NO; if (self.readyState >= SR_CLOSED) { return didWork; } size_t readBufferSize = dispatch_data_get_size(_readBuffer); if (!_consumers.count) { return didWork; } size_t curSize = readBufferSize - _readBufferOffset; if (!curSize) { return didWork; } SRIOConsumer *consumer = [_consumers objectAtIndex:0]; size_t bytesNeeded = consumer.bytesNeeded; size_t foundSize = 0; if (consumer.consumer) { NSData *subdata = (NSData *)dispatch_data_create_subrange(_readBuffer, _readBufferOffset, readBufferSize - _readBufferOffset); foundSize = consumer.consumer(subdata); } else { assert(consumer.bytesNeeded); if (curSize >= bytesNeeded) { foundSize = bytesNeeded; } else if (consumer.readToCurrentFrame) { foundSize = curSize; } } if (consumer.readToCurrentFrame || foundSize) { dispatch_data_t slice = dispatch_data_create_subrange(_readBuffer, _readBufferOffset, foundSize); _readBufferOffset += foundSize; if (_readBufferOffset > SRDefaultBufferSize() && _readBufferOffset > readBufferSize / 2) { _readBuffer = dispatch_data_create_subrange(_readBuffer, _readBufferOffset, readBufferSize - _readBufferOffset); _readBufferOffset = 0; } if (consumer.unmaskBytes) { __block NSMutableData *mutableSlice = [slice mutableCopy]; NSUInteger len = mutableSlice.length; uint8_t *bytes = mutableSlice.mutableBytes; for (NSUInteger i = 0; i < len; i++) { bytes[i] = bytes[i] ^ _currentReadMaskKey[_currentReadMaskOffset % sizeof(_currentReadMaskKey)]; _currentReadMaskOffset += 1; } slice = dispatch_data_create(bytes, len, nil, ^{ mutableSlice = nil; }); } if (consumer.readToCurrentFrame) { dispatch_data_apply(slice, ^bool(dispatch_data_t region, size_t offset, const void *buffer, size_t size) { [_currentFrameData appendBytes:buffer length:size]; return true; }); _readOpCount += 1; if (_currentFrameOpcode == SROpCodeTextFrame) { // Validate UTF8 stuff. size_t currentDataSize = _currentFrameData.length; if (_currentFrameOpcode == SROpCodeTextFrame && currentDataSize > 0) { // TODO: Optimize the crap out of this. Don't really have to copy all the data each time size_t scanSize = currentDataSize - _currentStringScanPosition; NSData *scan_data = [_currentFrameData subdataWithRange:NSMakeRange(_currentStringScanPosition, scanSize)]; int32_t valid_utf8_size = validate_dispatch_data_partial_string(scan_data); if (valid_utf8_size == -1) { [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"]; dispatch_async(_workQueue, ^{ [self closeConnection]; }); return didWork; } else { _currentStringScanPosition += valid_utf8_size; } } } consumer.bytesNeeded -= foundSize; if (consumer.bytesNeeded == 0) { [_consumers removeObjectAtIndex:0]; consumer.handler(self, nil); [_consumerPool returnConsumer:consumer]; didWork = YES; } } else if (foundSize) { [_consumers removeObjectAtIndex:0]; consumer.handler(self, (NSData *)slice); [_consumerPool returnConsumer:consumer]; didWork = YES; } } return didWork; } -(void)_pumpScanner { [self assertOnWorkQueue]; if (!_isPumping) { _isPumping = YES; } else { return; } while ([self _innerPumpScanner]) { } _isPumping = NO; } //#define NOMASK static const size_t SRFrameHeaderOverhead = 32; - (void)_sendFrameWithOpcode:(SROpCode)opCode data:(NSData *)data { [self assertOnWorkQueue]; if (!data) { return; } size_t payloadLength = data.length; NSMutableData *frameData = [[NSMutableData alloc] initWithLength:payloadLength + SRFrameHeaderOverhead]; if (!frameData) { [self closeWithCode:SRStatusCodeMessageTooBig reason:@"Message too big"]; return; } uint8_t *frameBuffer = (uint8_t *)frameData.mutableBytes; // set fin frameBuffer[0] = SRFinMask | opCode; // set the mask and header frameBuffer[1] |= SRMaskMask; size_t frameBufferSize = 2; if (payloadLength < 126) { frameBuffer[1] |= payloadLength; } else { uint64_t declaredPayloadLength = 0; size_t declaredPayloadLengthSize = 0; if (payloadLength <= UINT16_MAX) { frameBuffer[1] |= 126; declaredPayloadLength = CFSwapInt16BigToHost((uint16_t)payloadLength); declaredPayloadLengthSize = sizeof(uint16_t); } else { frameBuffer[1] |= 127; declaredPayloadLength = CFSwapInt64BigToHost((uint64_t)payloadLength); declaredPayloadLengthSize = sizeof(uint64_t); } memcpy((frameBuffer + frameBufferSize), &declaredPayloadLength, declaredPayloadLengthSize); frameBufferSize += declaredPayloadLengthSize; } const uint8_t *unmaskedPayloadBuffer = (uint8_t *)data.bytes; uint8_t *maskKey = frameBuffer + frameBufferSize; size_t randomBytesSize = sizeof(uint32_t); NSData *randomData = SRRandomData(randomBytesSize); [randomData getBytes:maskKey range:NSMakeRange(0, randomBytesSize)]; frameBufferSize += randomBytesSize; // Copy and unmask the buffer uint8_t *frameBufferPayloadPointer = frameBuffer + frameBufferSize; memcpy(frameBufferPayloadPointer, unmaskedPayloadBuffer, payloadLength); SRMaskBytesSIMD(frameBufferPayloadPointer, payloadLength, maskKey); frameBufferSize += payloadLength; assert(frameBufferSize <= frameData.length); frameData.length = frameBufferSize; [self _writeData:frameData]; } - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { __weak typeof(self) wself = self; if (_requestRequiresSSL && !_streamSecurityValidated && (eventCode == NSStreamEventHasBytesAvailable || eventCode == NSStreamEventHasSpaceAvailable)) { SecTrustRef trust = (__bridge SecTrustRef)[aStream propertyForKey:(__bridge id)kCFStreamPropertySSLPeerTrust]; if (trust) { _streamSecurityValidated = [_securityPolicy evaluateServerTrust:trust forDomain:_urlRequest.URL.host]; } if (!_streamSecurityValidated) { dispatch_async(_workQueue, ^{ NSError *error = SRErrorWithDomainCodeDescription(NSURLErrorDomain, NSURLErrorClientCertificateRejected, @"Invalid server certificate."); [wself _failWithError:error]; }); return; } dispatch_async(_workQueue, ^{ [self didConnect]; }); } dispatch_async(_workQueue, ^{ [wself safeHandleEvent:eventCode stream:aStream]; }); } - (void)safeHandleEvent:(NSStreamEvent)eventCode stream:(NSStream *)aStream { switch (eventCode) { case NSStreamEventOpenCompleted: { SRDebugLog(@"NSStreamEventOpenCompleted %@", aStream); if (self.readyState >= SR_CLOSING) { return; } assert(_readBuffer); if (!_requestRequiresSSL && self.readyState == SR_CONNECTING && aStream == _inputStream) { [self didConnect]; } [self _pumpWriting]; [self _pumpScanner]; break; } case NSStreamEventErrorOccurred: { SRDebugLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [[aStream streamError] copy]); /// TODO specify error better! [self _failWithError:aStream.streamError]; _readBufferOffset = 0; _readBuffer = dispatch_data_empty; break; } case NSStreamEventEndEncountered: { [self _pumpScanner]; SRDebugLog(@"NSStreamEventEndEncountered %@", aStream); if (aStream.streamError) { [self _failWithError:aStream.streamError]; } else { dispatch_async(_workQueue, ^{ if (self.readyState != SR_CLOSED) { self.readyState = SR_CLOSED; [self _scheduleCleanup]; } if (!self->_sentClose && !self->_failed) { self->_sentClose = YES; // If we get closed in this state it's probably not clean because we should be sending this when we send messages [self.delegateController performDelegateBlock:^(id _Nullable delegate, SRDelegateAvailableMethods availableMethods) { if (availableMethods.didCloseWithCode) { [delegate webSocket:self didCloseWithCode:SRStatusCodeGoingAway reason:@"Stream end encountered" wasClean:NO]; } }]; } }); } break; } case NSStreamEventHasBytesAvailable: { SRDebugLog(@"NSStreamEventHasBytesAvailable %@", aStream); uint8_t buffer[SRDefaultBufferSize()]; while (_inputStream.hasBytesAvailable) { NSInteger bytesRead = [_inputStream read:buffer maxLength:SRDefaultBufferSize()]; if (bytesRead > 0) { dispatch_data_t data = dispatch_data_create(buffer, bytesRead, nil, DISPATCH_DATA_DESTRUCTOR_DEFAULT); if (!data) { NSError *error = SRErrorWithCodeDescription(SRStatusCodeMessageTooBig, @"Unable to allocate memory to read from socket."); [self _failWithError:error]; return; } _readBuffer = dispatch_data_create_concat(_readBuffer, data); } else if (bytesRead == -1) { [self _failWithError:_inputStream.streamError]; } } [self _pumpScanner]; break; } case NSStreamEventHasSpaceAvailable: { SRDebugLog(@"NSStreamEventHasSpaceAvailable %@", aStream); [self _pumpWriting]; break; } case NSStreamEventNone: SRDebugLog(@"(default) %@", aStream); break; } } ///-------------------------------------- #pragma mark - Delegate ///-------------------------------------- - (id _Nullable)delegate { return self.delegateController.delegate; } - (void)setDelegate:(id _Nullable)delegate { self.delegateController.delegate = delegate; } - (void)setDelegateDispatchQueue:(dispatch_queue_t _Nullable)queue { self.delegateController.dispatchQueue = queue; } - (dispatch_queue_t _Nullable)delegateDispatchQueue { return self.delegateController.dispatchQueue; } - (void)setDelegateOperationQueue:(NSOperationQueue *_Nullable)queue { self.delegateController.operationQueue = queue; } - (NSOperationQueue *_Nullable)delegateOperationQueue { return self.delegateController.operationQueue; } @end #ifdef HAS_ICU static inline int32_t validate_dispatch_data_partial_string(NSData *data) { if ([data length] > INT32_MAX) { // INT32_MAX is the limit so long as this Framework is using 32 bit ints everywhere. return -1; } int32_t size = (int32_t)[data length]; const void * contents = [data bytes]; const uint8_t *str = (const uint8_t *)contents; UChar32 codepoint = 1; int32_t offset = 0; int32_t lastOffset = 0; while(offset < size && codepoint > 0) { lastOffset = offset; U8_NEXT(str, offset, size, codepoint); } if (codepoint == -1) { // Check to see if the last byte is valid or whether it was just continuing if (!U8_IS_LEAD(str[lastOffset]) || U8_COUNT_TRAIL_BYTES(str[lastOffset]) + lastOffset < (int32_t)size) { size = -1; } else { uint8_t leadByte = str[lastOffset]; U8_MASK_LEAD_BYTE(leadByte, U8_COUNT_TRAIL_BYTES(leadByte)); for (int i = lastOffset + 1; i < offset; i++) { if (U8_IS_SINGLE(str[i]) || U8_IS_LEAD(str[i]) || !U8_IS_TRAIL(str[i])) { size = -1; } } if (size != -1) { size = lastOffset; } } } if (size != -1 && ![[NSString alloc] initWithBytesNoCopy:(char *)[data bytes] length:size encoding:NSUTF8StringEncoding freeWhenDone:NO]) { size = -1; } return size; } #else // This is a hack, and probably not optimal static inline int32_t validate_dispatch_data_partial_string(NSData *data) { static const int maxCodepointSize = 3; for (int i = 0; i < maxCodepointSize; i++) { NSString *str = [[NSString alloc] initWithBytesNoCopy:(char *)data.bytes length:data.length - i encoding:NSUTF8StringEncoding freeWhenDone:NO]; if (str) { return (int32_t)data.length - i; } } return -1; } #endif ================================================ FILE: native/iosTest/Pods/SocketRocket/SocketRocket/SocketRocket.h ================================================ // // Copyright 2012 Square Inc. // Portions Copyright (c) 2016-present, Facebook, Inc. // // All rights reserved. // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // #import #import #import #import ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion-dummy.m ================================================ #import @interface PodsDummy_DoubleConversion : NSObject @end @implementation PodsDummy_DoubleConversion @end ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "double-conversion/bignum-dtoa.h" #import "double-conversion/bignum.h" #import "double-conversion/cached-powers.h" #import "double-conversion/diy-fp.h" #import "double-conversion/double-conversion.h" #import "double-conversion/fast-dtoa.h" #import "double-conversion/fixed-dtoa.h" #import "double-conversion/ieee.h" #import "double-conversion/strtod.h" #import "double-conversion/utils.h" FOUNDATION_EXPORT double DoubleConversionVersionNumber; FOUNDATION_EXPORT const unsigned char DoubleConversionVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DoubleConversion" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/DoubleConversion PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion.modulemap ================================================ module DoubleConversion { umbrella header "DoubleConversion-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/DoubleConversion/DoubleConversion.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DoubleConversion" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/DoubleConversion PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/FBLazyVector/FBLazyVector.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBLazyVector GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBLazyVector" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBLazyVector" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/FBLazyVector PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/FBLazyVector/FBLazyVector.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBLazyVector GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBLazyVector" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBLazyVector" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/FBLazyVector PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-acknowledgements.markdown ================================================ # Acknowledgements This application makes use of the following third party libraries: ## DoubleConversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## RCT-Folly Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Files in folly/external/farmhash licensed as follows Copyright (c) 2014 Google, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## React MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## React-Core MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## SocketRocket BSD License For SocketRocket software Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## WatermelonDB MIT License Copyright (c) Nozbe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## boost Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## fmt Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. ## glog Copyright (c) 2008, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. A function gettimeofday in utilities.cc is based on http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd The license of this code is: Copyright (c) 2003-2008, Jouni Malinen and contributors All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name(s) of the above-listed copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## hermes-engine MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## simdjson Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018-2019 The simdjson authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Generated by CocoaPods - https://cocoapods.org ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-acknowledgements.plist ================================================ PreferenceSpecifiers FooterText This application makes use of the following third party libraries: Title Acknowledgements Type PSGroupSpecifier FooterText Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License MIT Title DoubleConversion Type PSGroupSpecifier FooterText Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Files in folly/external/farmhash licensed as follows Copyright (c) 2014 Google, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Apache License, Version 2.0 Title RCT-Folly Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title React Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title React-Core Type PSGroupSpecifier FooterText BSD License For SocketRocket software Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License BSD Title SocketRocket Type PSGroupSpecifier FooterText MIT License Copyright (c) Nozbe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title WatermelonDB Type PSGroupSpecifier FooterText Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Boost Software License Title boost Type PSGroupSpecifier FooterText Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. License MIT Title fmt Type PSGroupSpecifier FooterText Copyright (c) 2008, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. A function gettimeofday in utilities.cc is based on http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd The license of this code is: Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name(s) of the above-listed copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License Google Title glog Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title hermes-engine Type PSGroupSpecifier FooterText Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018-2019 The simdjson authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. License Apache-2.0 Title simdjson Type PSGroupSpecifier FooterText Generated by CocoaPods - https://cocoapods.org Title Type PSGroupSpecifier StringsTable Acknowledgements Title Acknowledgements ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-dummy.m ================================================ #import @interface PodsDummy_Pods_WatermelonTester : NSObject @end @implementation PodsDummy_Pods_WatermelonTester @end ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks-Debug-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks.sh ${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks-Debug-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks-Release-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks.sh ${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks-Release-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-frameworks.sh ================================================ #!/bin/sh set -e set -u set -o pipefail function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy # frameworks to, so exit 0 (signalling the script phase was successful). exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" BCSYMBOLMAP_DIR="BCSymbolMaps" # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") # Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then local source="${BUILT_PRODUCTS_DIR}/$1" elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" elif [ -r "$1" ]; then local source="$1" fi local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then echo "Symlinked..." source="$(readlink -f "${source}")" fi if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do echo "Installing $f" install_bcsymbolmap "$f" "$destination" rm "$f" done rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" if ! [ -r "$binary" ]; then binary="${destination}/${basename}" elif [ -L "${binary}" ]; then echo "Destination binary is symlinked..." dirname="$(dirname "${binary}")" binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then strip_invalid_archs "$binary" fi # Resign the code if required by the build settings to avoid unstable apps code_sign_if_enabled "${destination}/$(basename "$1")" # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" code_sign_if_enabled "${destination}/${lib}" done fi } # Copies and strips a vendored dSYM install_dsym() { local source="$1" warn_missing_arch=${2:-true} if [ -r "$source" ]; then # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename basename="$(basename -s .dSYM "$source")" binary_name="$(ls "$source/Contents/Resources/DWARF")" binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" # Strip invalid architectures from the dSYM. if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then strip_invalid_archs "$binary" "$warn_missing_arch" fi if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. mkdir -p "${DWARF_DSYM_FOLDER_PATH}" touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } # Used as a return value for each invocation of `strip_invalid_archs` function. STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then if [[ "$warn_missing_arch" == "true" ]]; then echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." fi STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi STRIP_BINARY_RETVAL=0 } # Copies the bcsymbolmap files of a vendored framework install_bcsymbolmap() { local bcsymbolmap_path="$1" local destination="${BUILT_PRODUCTS_DIR}" echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" } # Signs a framework with the provided identity code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" fi echo "$code_sign_cmd" eval "$code_sign_cmd" fi } if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources-Debug-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources.sh ${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources-Debug-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources-Release-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources.sh ${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources-Release-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester-resources.sh ================================================ #!/bin/sh set -e set -u set -o pipefail function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy # resources to, so exit 0 (signalling the script phase was successful). exit 0 fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt > "$RESOURCES_TO_COPY" XCASSET_FILES=() # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; 1) TARGET_DEVICE_ARGS="--target-device iphone" ;; 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; 3) TARGET_DEVICE_ARGS="--target-device tv" ;; 4) TARGET_DEVICE_ARGS="--target-device watch" ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; esac install_resource() { if [[ "$1" = /* ]] ; then RESOURCE_PATH="$1" else RESOURCE_PATH="${PODS_ROOT}/$1" fi if [[ ! -e "$RESOURCE_PATH" ]] ; then cat << EOM error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. EOM exit 1 fi case $RESOURCE_PATH in *.storyboard) echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac } if [[ "$CONFIGURATION" == "Debug" ]]; then install_resource "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_resource "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle" fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi rm -f "$RESOURCES_TO_COPY" if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) while read line; do if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") fi done <<<"$OTHER_XCASSETS" if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" else printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" fi fi ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics" "${PODS_CONFIGURATION_BUILD_DIR}/React-hermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/React-logger" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig" "${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/fmt" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" -isystem "${PODS_ROOT}/Headers/Public" OTHER_CPLUSPLUSFLAGS = $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 OTHER_LDFLAGS = $(inherited) -ObjC -l"DoubleConversion" -l"RCT-Folly" -l"RCTDeprecation" -l"RCTTypeSafety" -l"React-Codegen" -l"React-Core" -l"React-CoreModules" -l"React-Fabric" -l"React-FabricImage" -l"React-ImageManager" -l"React-Mapbuffer" -l"React-NativeModulesApple" -l"React-RCTAnimation" -l"React-RCTAppDelegate" -l"React-RCTBlob" -l"React-RCTFabric" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-RuntimeApple" -l"React-RuntimeCore" -l"React-RuntimeHermes" -l"React-cxxreact" -l"React-debug" -l"React-featureflags" -l"React-graphics" -l"React-hermes" -l"React-jserrorhandler" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"React-logger" -l"React-nativeconfig" -l"React-perflogger" -l"React-rendererdebug" -l"React-runtimescheduler" -l"React-utils" -l"ReactCommon" -l"SocketRocket" -l"WatermelonDB" -l"Yoga" -l"c++" -l"c++abi" -l"fmt" -l"glog" -l"icucore" -l"simdjson" -l"sqlite3" -framework "Accelerate" -framework "AudioToolbox" -framework "CFNetwork" -framework "JavaScriptCore" -framework "MobileCoreServices" -framework "Security" -framework "UIKit" -framework "hermes" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester/Pods-WatermelonTester.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics" "${PODS_CONFIGURATION_BUILD_DIR}/React-hermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/React-logger" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig" "${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/fmt" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -DNDEBUG OTHER_CPLUSPLUSFLAGS = $(inherited) -DNDEBUG -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 OTHER_LDFLAGS = $(inherited) -ObjC -l"DoubleConversion" -l"RCT-Folly" -l"RCTDeprecation" -l"RCTTypeSafety" -l"React-Codegen" -l"React-Core" -l"React-CoreModules" -l"React-Fabric" -l"React-FabricImage" -l"React-ImageManager" -l"React-Mapbuffer" -l"React-NativeModulesApple" -l"React-RCTAnimation" -l"React-RCTAppDelegate" -l"React-RCTBlob" -l"React-RCTFabric" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-RuntimeApple" -l"React-RuntimeCore" -l"React-RuntimeHermes" -l"React-cxxreact" -l"React-debug" -l"React-featureflags" -l"React-graphics" -l"React-hermes" -l"React-jserrorhandler" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"React-logger" -l"React-nativeconfig" -l"React-perflogger" -l"React-rendererdebug" -l"React-runtimescheduler" -l"React-utils" -l"ReactCommon" -l"SocketRocket" -l"WatermelonDB" -l"Yoga" -l"c++" -l"c++abi" -l"fmt" -l"glog" -l"icucore" -l"simdjson" -l"sqlite3" -framework "Accelerate" -framework "AudioToolbox" -framework "CFNetwork" -framework "JavaScriptCore" -framework "MobileCoreServices" -framework "Security" -framework "UIKit" -framework "hermes" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.markdown ================================================ # Acknowledgements This application makes use of the following third party libraries: ## DoubleConversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## RCT-Folly Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Files in folly/external/farmhash licensed as follows Copyright (c) 2014 Google, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## React MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## React-Core MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## SocketRocket BSD License For SocketRocket software Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## WatermelonDB MIT License Copyright (c) Nozbe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## boost Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## fmt Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. ## glog Copyright (c) 2008, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. A function gettimeofday in utilities.cc is based on http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd The license of this code is: Copyright (c) 2003-2008, Jouni Malinen and contributors All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name(s) of the above-listed copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## hermes-engine MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## simdjson Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018-2019 The simdjson authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Generated by CocoaPods - https://cocoapods.org ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-acknowledgements.plist ================================================ PreferenceSpecifiers FooterText This application makes use of the following third party libraries: Title Acknowledgements Type PSGroupSpecifier FooterText Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License MIT Title DoubleConversion Type PSGroupSpecifier FooterText Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Files in folly/external/farmhash licensed as follows Copyright (c) 2014 Google, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Apache License, Version 2.0 Title RCT-Folly Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title React Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title React-Core Type PSGroupSpecifier FooterText BSD License For SocketRocket software Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License BSD Title SocketRocket Type PSGroupSpecifier FooterText MIT License Copyright (c) Nozbe Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title WatermelonDB Type PSGroupSpecifier FooterText Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Boost Software License Title boost Type PSGroupSpecifier FooterText Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. License MIT Title fmt Type PSGroupSpecifier FooterText Copyright (c) 2008, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. A function gettimeofday in utilities.cc is based on http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd The license of this code is: Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name(s) of the above-listed copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License Google Title glog Type PSGroupSpecifier FooterText MIT License Copyright (c) Meta Platforms, Inc. and affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License MIT Title hermes-engine Type PSGroupSpecifier FooterText Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018-2019 The simdjson authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. License Apache-2.0 Title simdjson Type PSGroupSpecifier FooterText Generated by CocoaPods - https://cocoapods.org Title Type PSGroupSpecifier StringsTable Acknowledgements Title Acknowledgements ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-dummy.m ================================================ #import @interface PodsDummy_Pods_WatermelonTester_WatermelonTesterTests : NSObject @end @implementation PodsDummy_Pods_WatermelonTester_WatermelonTesterTests @end ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks-Debug-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh ${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks-Debug-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks-Release-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh ${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks-Release-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-frameworks.sh ================================================ #!/bin/sh set -e set -u set -o pipefail function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy # frameworks to, so exit 0 (signalling the script phase was successful). exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" BCSYMBOLMAP_DIR="BCSymbolMaps" # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") # Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then local source="${BUILT_PRODUCTS_DIR}/$1" elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" elif [ -r "$1" ]; then local source="$1" fi local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then echo "Symlinked..." source="$(readlink -f "${source}")" fi if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do echo "Installing $f" install_bcsymbolmap "$f" "$destination" rm "$f" done rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" if ! [ -r "$binary" ]; then binary="${destination}/${basename}" elif [ -L "${binary}" ]; then echo "Destination binary is symlinked..." dirname="$(dirname "${binary}")" binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then strip_invalid_archs "$binary" fi # Resign the code if required by the build settings to avoid unstable apps code_sign_if_enabled "${destination}/$(basename "$1")" # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" code_sign_if_enabled "${destination}/${lib}" done fi } # Copies and strips a vendored dSYM install_dsym() { local source="$1" warn_missing_arch=${2:-true} if [ -r "$source" ]; then # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename basename="$(basename -s .dSYM "$source")" binary_name="$(ls "$source/Contents/Resources/DWARF")" binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" # Strip invalid architectures from the dSYM. if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then strip_invalid_archs "$binary" "$warn_missing_arch" fi if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. mkdir -p "${DWARF_DSYM_FOLDER_PATH}" touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } # Used as a return value for each invocation of `strip_invalid_archs` function. STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then if [[ "$warn_missing_arch" == "true" ]]; then echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." fi STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi STRIP_BINARY_RETVAL=0 } # Copies the bcsymbolmap files of a vendored framework install_bcsymbolmap() { local bcsymbolmap_path="$1" local destination="${BUILT_PRODUCTS_DIR}" echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" } # Signs a framework with the provided identity code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" fi echo "$code_sign_cmd" eval "$code_sign_cmd" fi } if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources-Debug-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources.sh ${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources-Debug-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources-Release-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources.sh ${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources-Release-output-files.xcfilelist ================================================ ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests-resources.sh ================================================ #!/bin/sh set -e set -u set -o pipefail function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy # resources to, so exit 0 (signalling the script phase was successful). exit 0 fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt > "$RESOURCES_TO_COPY" XCASSET_FILES=() # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; 1) TARGET_DEVICE_ARGS="--target-device iphone" ;; 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; 3) TARGET_DEVICE_ARGS="--target-device tv" ;; 4) TARGET_DEVICE_ARGS="--target-device watch" ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; esac install_resource() { if [[ "$1" = /* ]] ; then RESOURCE_PATH="$1" else RESOURCE_PATH="${PODS_ROOT}/$1" fi if [[ ! -e "$RESOURCE_PATH" ]] ; then cat << EOM error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. EOM exit 1 fi case $RESOURCE_PATH in *.storyboard) echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac } if [[ "$CONFIGURATION" == "Debug" ]]; then install_resource "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_resource "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle" fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi rm -f "$RESOURCES_TO_COPY" if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) while read line; do if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") fi done <<<"$OTHER_XCASSETS" if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" else printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" fi fi ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics" "${PODS_CONFIGURATION_BUILD_DIR}/React-hermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/React-logger" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig" "${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/fmt" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" -isystem "${PODS_ROOT}/Headers/Public" OTHER_CPLUSPLUSFLAGS = $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 OTHER_LDFLAGS = $(inherited) -ObjC -l"DoubleConversion" -l"RCT-Folly" -l"RCTDeprecation" -l"RCTTypeSafety" -l"React-Codegen" -l"React-Core" -l"React-CoreModules" -l"React-Fabric" -l"React-FabricImage" -l"React-ImageManager" -l"React-Mapbuffer" -l"React-NativeModulesApple" -l"React-RCTAnimation" -l"React-RCTAppDelegate" -l"React-RCTBlob" -l"React-RCTFabric" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-RuntimeApple" -l"React-RuntimeCore" -l"React-RuntimeHermes" -l"React-cxxreact" -l"React-debug" -l"React-featureflags" -l"React-graphics" -l"React-hermes" -l"React-jserrorhandler" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"React-logger" -l"React-nativeconfig" -l"React-perflogger" -l"React-rendererdebug" -l"React-runtimescheduler" -l"React-utils" -l"ReactCommon" -l"SocketRocket" -l"WatermelonDB" -l"Yoga" -l"c++" -l"c++abi" -l"fmt" -l"glog" -l"icucore" -l"simdjson" -l"sqlite3" -framework "Accelerate" -framework "AudioToolbox" -framework "CFNetwork" -framework "JavaScriptCore" -framework "MobileCoreServices" -framework "Security" -framework "UIKit" -framework "hermes" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Pods-WatermelonTester-WatermelonTesterTests/Pods-WatermelonTester-WatermelonTesterTests.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics" "${PODS_CONFIGURATION_BUILD_DIR}/React-hermes" "${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/React-logger" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig" "${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/fmt" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -DNDEBUG OTHER_CPLUSPLUSFLAGS = $(inherited) -DNDEBUG -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 OTHER_LDFLAGS = $(inherited) -ObjC -l"DoubleConversion" -l"RCT-Folly" -l"RCTDeprecation" -l"RCTTypeSafety" -l"React-Codegen" -l"React-Core" -l"React-CoreModules" -l"React-Fabric" -l"React-FabricImage" -l"React-ImageManager" -l"React-Mapbuffer" -l"React-NativeModulesApple" -l"React-RCTAnimation" -l"React-RCTAppDelegate" -l"React-RCTBlob" -l"React-RCTFabric" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-RuntimeApple" -l"React-RuntimeCore" -l"React-RuntimeHermes" -l"React-cxxreact" -l"React-debug" -l"React-featureflags" -l"React-graphics" -l"React-hermes" -l"React-jserrorhandler" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"React-logger" -l"React-nativeconfig" -l"React-perflogger" -l"React-rendererdebug" -l"React-runtimescheduler" -l"React-utils" -l"ReactCommon" -l"SocketRocket" -l"WatermelonDB" -l"Yoga" -l"c++" -l"c++abi" -l"fmt" -l"glog" -l"icucore" -l"simdjson" -l"sqlite3" -framework "Accelerate" -framework "AudioToolbox" -framework "CFNetwork" -framework "JavaScriptCore" -framework "MobileCoreServices" -framework "Security" -framework "UIKit" -framework "hermes" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly-dummy.m ================================================ #import @interface PodsDummy_RCT_Folly : NSObject @end @implementation PodsDummy_RCT_Folly @end ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "folly/AtomicHashArray-inl.h" #import "folly/AtomicHashArray.h" #import "folly/AtomicHashMap-inl.h" #import "folly/AtomicHashMap.h" #import "folly/AtomicIntrusiveLinkedList.h" #import "folly/AtomicLinkedList.h" #import "folly/AtomicUnorderedMap.h" #import "folly/base64.h" #import "folly/Benchmark.h" #import "folly/BenchmarkUtil.h" #import "folly/Bits.h" #import "folly/CancellationToken-inl.h" #import "folly/CancellationToken.h" #import "folly/Chrono.h" #import "folly/ClockGettimeWrappers.h" #import "folly/ConcurrentBitSet.h" #import "folly/ConcurrentLazy.h" #import "folly/ConcurrentSkipList-inl.h" #import "folly/ConcurrentSkipList.h" #import "folly/ConstexprMath.h" #import "folly/ConstructorCallbackList.h" #import "folly/Conv.h" #import "folly/CPortability.h" #import "folly/CppAttributes.h" #import "folly/CpuId.h" #import "folly/DefaultKeepAliveExecutor.h" #import "folly/Demangle.h" #import "folly/DiscriminatedPtr.h" #import "folly/dynamic-inl.h" #import "folly/dynamic.h" #import "folly/DynamicConverter.h" #import "folly/Exception.h" #import "folly/ExceptionString.h" #import "folly/ExceptionWrapper-inl.h" #import "folly/ExceptionWrapper.h" #import "folly/Executor.h" #import "folly/Expected.h" #import "folly/FBString.h" #import "folly/FBVector.h" #import "folly/File.h" #import "folly/FileUtil.h" #import "folly/Fingerprint.h" #import "folly/FixedString.h" #import "folly/FollyMemcpy.h" #import "folly/FollyMemset.h" #import "folly/Format-inl.h" #import "folly/Format.h" #import "folly/FormatArg.h" #import "folly/FormatTraits.h" #import "folly/Function.h" #import "folly/GLog.h" #import "folly/GroupVarint.h" #import "folly/Hash.h" #import "folly/Indestructible.h" #import "folly/IndexedMemPool.h" #import "folly/IntrusiveList.h" #import "folly/IPAddress.h" #import "folly/IPAddressException.h" #import "folly/IPAddressV4.h" #import "folly/IPAddressV6.h" #import "folly/json.h" #import "folly/json_patch.h" #import "folly/json_pointer.h" #import "folly/Lazy.h" #import "folly/Likely.h" #import "folly/MacAddress.h" #import "folly/MapUtil.h" #import "folly/Math.h" #import "folly/MaybeManagedPtr.h" #import "folly/Memory.h" #import "folly/MicroLock.h" #import "folly/MicroSpinLock.h" #import "folly/MoveWrapper.h" #import "folly/MPMCPipeline.h" #import "folly/MPMCQueue.h" #import "folly/ObserverContainer.h" #import "folly/Optional.h" #import "folly/Overload.h" #import "folly/PackedSyncPtr.h" #import "folly/Padded.h" #import "folly/Poly-inl.h" #import "folly/Poly.h" #import "folly/PolyException.h" #import "folly/Portability.h" #import "folly/Preprocessor.h" #import "folly/ProducerConsumerQueue.h" #import "folly/Random-inl.h" #import "folly/Random.h" #import "folly/Range.h" #import "folly/Replaceable.h" #import "folly/RWSpinLock.h" #import "folly/ScopeGuard.h" #import "folly/SharedMutex.h" #import "folly/Singleton-inl.h" #import "folly/Singleton.h" #import "folly/SingletonThreadLocal.h" #import "folly/small_vector.h" #import "folly/SocketAddress.h" #import "folly/sorted_vector_types.h" #import "folly/SpinLock.h" #import "folly/stop_watch.h" #import "folly/String-inl.h" #import "folly/String.h" #import "folly/Subprocess.h" #import "folly/Synchronized.h" #import "folly/SynchronizedPtr.h" #import "folly/ThreadCachedInt.h" #import "folly/ThreadLocal.h" #import "folly/TimeoutQueue.h" #import "folly/TokenBucket.h" #import "folly/Traits.h" #import "folly/Try-inl.h" #import "folly/Try.h" #import "folly/Unicode.h" #import "folly/Unit.h" #import "folly/Uri-inl.h" #import "folly/Uri.h" #import "folly/UTF8String.h" #import "folly/Utility.h" #import "folly/Varint.h" #import "folly/VirtualExecutor.h" #import "folly/container/Access.h" #import "folly/container/Array.h" #import "folly/container/BitIterator.h" #import "folly/container/Enumerate.h" #import "folly/container/EvictingCacheMap.h" #import "folly/container/F14Map-fwd.h" #import "folly/container/F14Map.h" #import "folly/container/F14Set-fwd.h" #import "folly/container/F14Set.h" #import "folly/container/Foreach-inl.h" #import "folly/container/Foreach.h" #import "folly/container/heap_vector_types.h" #import "folly/container/HeterogeneousAccess-fwd.h" #import "folly/container/HeterogeneousAccess.h" #import "folly/container/IntrusiveHeap.h" #import "folly/container/Iterator.h" #import "folly/container/Merge.h" #import "folly/container/SparseByteSet.h" #import "folly/container/View.h" #import "folly/container/WeightedEvictingCacheMap.h" #import "folly/container/detail/BitIteratorDetail.h" #import "folly/container/detail/F14Defaults.h" #import "folly/container/detail/F14IntrinsicsAvailability.h" #import "folly/container/detail/F14MapFallback.h" #import "folly/container/detail/F14Mask.h" #import "folly/container/detail/F14Policy.h" #import "folly/container/detail/F14SetFallback.h" #import "folly/container/detail/F14Table.h" #import "folly/container/detail/Util.h" #import "folly/detail/AsyncTrace.h" #import "folly/detail/AtomicHashUtils.h" #import "folly/detail/AtomicUnorderedMapUtils.h" #import "folly/detail/DiscriminatedPtrDetail.h" #import "folly/detail/FileUtilDetail.h" #import "folly/detail/FileUtilVectorDetail.h" #import "folly/detail/FingerprintPolynomial.h" #import "folly/detail/Futex-inl.h" #import "folly/detail/Futex.h" #import "folly/detail/GroupVarintDetail.h" #import "folly/detail/IPAddress.h" #import "folly/detail/IPAddressSource.h" #import "folly/detail/Iterators.h" #import "folly/detail/MemoryIdler.h" #import "folly/detail/MPMCPipelineDetail.h" #import "folly/detail/PerfScoped.h" #import "folly/detail/PolyDetail.h" #import "folly/detail/RangeCommon.h" #import "folly/detail/RangeSse42.h" #import "folly/detail/SimdAnyOf.h" #import "folly/detail/SimdCharPlatform.h" #import "folly/detail/SimdForEach.h" #import "folly/detail/SimpleSimdStringUtils.h" #import "folly/detail/SimpleSimdStringUtilsImpl.h" #import "folly/detail/Singleton.h" #import "folly/detail/SlowFingerprint.h" #import "folly/detail/SocketFastOpen.h" #import "folly/detail/SplitStringSimd.h" #import "folly/detail/SplitStringSimdImpl.h" #import "folly/detail/Sse.h" #import "folly/detail/StaticSingletonManager.h" #import "folly/detail/ThreadLocalDetail.h" #import "folly/detail/TurnSequencer.h" #import "folly/detail/TypeList.h" #import "folly/detail/UniqueInstance.h" #import "folly/detail/UnrollUtils.h" #import "folly/functional/ApplyTuple.h" #import "folly/functional/Invoke.h" #import "folly/functional/Partial.h" #import "folly/functional/protocol.h" #import "folly/functional/traits.h" #import "folly/hash/Checksum.h" #import "folly/hash/FarmHash.h" #import "folly/hash/Hash.h" #import "folly/hash/SpookyHashV1.h" #import "folly/hash/SpookyHashV2.h" #import "folly/lang/Access.h" #import "folly/lang/Align.h" #import "folly/lang/Aligned.h" #import "folly/lang/Assume.h" #import "folly/lang/Badge.h" #import "folly/lang/Bits.h" #import "folly/lang/Builtin.h" #import "folly/lang/Byte.h" #import "folly/lang/CArray.h" #import "folly/lang/Cast.h" #import "folly/lang/CheckedMath.h" #import "folly/lang/CString.h" #import "folly/lang/CustomizationPoint.h" #import "folly/lang/Exception.h" #import "folly/lang/Extern.h" #import "folly/lang/Hint-inl.h" #import "folly/lang/Hint.h" #import "folly/lang/Keep.h" #import "folly/lang/Launder.h" #import "folly/lang/New.h" #import "folly/lang/Ordering.h" #import "folly/lang/Pretty.h" #import "folly/lang/PropagateConst.h" #import "folly/lang/RValueReferenceWrapper.h" #import "folly/lang/SafeAssert.h" #import "folly/lang/StaticConst.h" #import "folly/lang/Thunk.h" #import "folly/lang/ToAscii.h" #import "folly/lang/TypeInfo.h" #import "folly/lang/UncaughtExceptions.h" #import "folly/memory/Arena-inl.h" #import "folly/memory/Arena.h" #import "folly/memory/EnableSharedFromThis.h" #import "folly/memory/MallctlHelper.h" #import "folly/memory/Malloc.h" #import "folly/memory/MemoryResource.h" #import "folly/memory/not_null-inl.h" #import "folly/memory/not_null.h" #import "folly/memory/ReentrantAllocator.h" #import "folly/memory/SanitizeAddress.h" #import "folly/memory/SanitizeLeak.h" #import "folly/memory/ThreadCachedArena.h" #import "folly/memory/UninitializedMemoryHacks.h" #import "folly/memory/detail/MallocImpl.h" #import "folly/net/NetOps.h" #import "folly/net/NetOpsDispatcher.h" #import "folly/net/NetworkSocket.h" #import "folly/net/TcpInfo.h" #import "folly/net/TcpInfoDispatcher.h" #import "folly/net/TcpInfoTypes.h" #import "folly/net/detail/SocketFileDescriptorMap.h" #import "folly/portability/Asm.h" #import "folly/portability/Atomic.h" #import "folly/portability/Builtins.h" #import "folly/portability/Config.h" #import "folly/portability/Constexpr.h" #import "folly/portability/Dirent.h" #import "folly/portability/Event.h" #import "folly/portability/Fcntl.h" #import "folly/portability/Filesystem.h" #import "folly/portability/FmtCompile.h" #import "folly/portability/GFlags.h" #import "folly/portability/GMock.h" #import "folly/portability/GTest.h" #import "folly/portability/IOVec.h" #import "folly/portability/Libgen.h" #import "folly/portability/Libunwind.h" #import "folly/portability/Malloc.h" #import "folly/portability/Math.h" #import "folly/portability/Memory.h" #import "folly/portability/OpenSSL.h" #import "folly/portability/PThread.h" #import "folly/portability/Sched.h" #import "folly/portability/Sockets.h" #import "folly/portability/SourceLocation.h" #import "folly/portability/Stdio.h" #import "folly/portability/Stdlib.h" #import "folly/portability/String.h" #import "folly/portability/SysFile.h" #import "folly/portability/Syslog.h" #import "folly/portability/SysMembarrier.h" #import "folly/portability/SysMman.h" #import "folly/portability/SysResource.h" #import "folly/portability/SysStat.h" #import "folly/portability/SysSyscall.h" #import "folly/portability/SysTime.h" #import "folly/portability/SysTypes.h" #import "folly/portability/SysUio.h" #import "folly/portability/Time.h" #import "folly/portability/Unistd.h" #import "folly/portability/Windows.h" #import "folly/system/AtFork.h" #import "folly/system/HardwareConcurrency.h" #import "folly/system/MemoryMapping.h" #import "folly/system/Pid.h" #import "folly/system/Shell.h" #import "folly/system/ThreadId.h" #import "folly/system/ThreadName.h" #import "folly/concurrency/CacheLocality.h" #import "folly/synchronization/AsymmetricThreadFence.h" #import "folly/synchronization/AtomicNotification-inl.h" #import "folly/synchronization/AtomicNotification.h" #import "folly/synchronization/AtomicRef.h" #import "folly/synchronization/AtomicStruct.h" #import "folly/synchronization/AtomicUtil-inl.h" #import "folly/synchronization/AtomicUtil.h" #import "folly/synchronization/Baton.h" #import "folly/synchronization/CallOnce.h" #import "folly/synchronization/DelayedInit.h" #import "folly/synchronization/DistributedMutex-inl.h" #import "folly/synchronization/DistributedMutex.h" #import "folly/synchronization/Hazptr-fwd.h" #import "folly/synchronization/Hazptr.h" #import "folly/synchronization/HazptrDomain.h" #import "folly/synchronization/HazptrHolder.h" #import "folly/synchronization/HazptrObj.h" #import "folly/synchronization/HazptrObjLinked.h" #import "folly/synchronization/HazptrRec.h" #import "folly/synchronization/HazptrThreadPoolExecutor.h" #import "folly/synchronization/HazptrThrLocal.h" #import "folly/synchronization/Latch.h" #import "folly/synchronization/LifoSem.h" #import "folly/synchronization/Lock.h" #import "folly/synchronization/MicroSpinLock.h" #import "folly/synchronization/NativeSemaphore.h" #import "folly/synchronization/ParkingLot.h" #import "folly/synchronization/PicoSpinLock.h" #import "folly/synchronization/Rcu.h" #import "folly/synchronization/RelaxedAtomic.h" #import "folly/synchronization/RWSpinLock.h" #import "folly/synchronization/SanitizeThread.h" #import "folly/synchronization/SaturatingSemaphore.h" #import "folly/synchronization/SmallLocks.h" #import "folly/synchronization/ThrottledLifoSem.h" #import "folly/synchronization/Utility.h" #import "folly/synchronization/WaitOptions.h" #import "folly/system/ThreadId.h" FOUNDATION_EXPORT double follyVersionNumber; FOUNDATION_EXPORT const unsigned char follyVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCT-Folly" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" OTHER_LDFLAGS = $(inherited) -Wl,-U,_jump_fcontext -Wl,-U,_make_fcontext PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/RCT-Folly PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly.modulemap ================================================ module folly { umbrella header "RCT-Folly-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/RCT-Folly/RCT-Folly.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCT-Folly" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" OTHER_LDFLAGS = $(inherited) -Wl,-U,_jump_fcontext -Wl,-U,_make_fcontext PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/RCT-Folly PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation-dummy.m ================================================ #import @interface PodsDummy_RCTDeprecation : NSObject @end @implementation PodsDummy_RCTDeprecation @end ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "RCTDeprecation.h" FOUNDATION_EXPORT double RCTDeprecationVersionNumber; FOUNDATION_EXPORT const unsigned char RCTDeprecationVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTDeprecation" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation.modulemap ================================================ module RCTDeprecation { umbrella header "RCTDeprecation-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTDeprecation/RCTDeprecation.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTDeprecation" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTRequired/RCTRequired.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTRequired GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTRequired" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RCTRequired" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Required PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTRequired/RCTRequired.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTRequired GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTRequired" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RCTRequired" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Required PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety-dummy.m ================================================ #import @interface PodsDummy_RCTTypeSafety : NSObject @end @implementation PodsDummy_RCTTypeSafety @end ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "RCTTypeSafety/RCTConvertHelpers.h" #import "RCTTypeSafety/RCTTypedModuleConstants.h" FOUNDATION_EXPORT double RCTTypeSafetyVersionNumber; FOUNDATION_EXPORT const unsigned char RCTTypeSafetyVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTTypeSafety" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/Libraries/TypeSafety" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/TypeSafety PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety.modulemap ================================================ module RCTTypeSafety { umbrella header "RCTTypeSafety-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/RCTTypeSafety/RCTTypeSafety.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RCTTypeSafety" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/Libraries/TypeSafety" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/TypeSafety PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React/React.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React/React.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen-dummy.m ================================================ #import @interface PodsDummy_React_Codegen : NSObject @end @implementation PodsDummy_React_Codegen @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "FBReactNativeSpec/FBReactNativeSpec.h" #import "FBReactNativeSpecJSI.h" #import "RCTModulesConformingToProtocolsProvider.h" FOUNDATION_EXPORT double React_CodegenVersionNumber; FOUNDATION_EXPORT const unsigned char React_CodegenVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Codegen" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "$(PODS_ROOT)/Headers/Private/React-Fabric" "$(PODS_ROOT)/Headers/Private/React-RCTFabric" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_TARGET_SRCROOT)" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../build/generated/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen.modulemap ================================================ module React_Codegen { umbrella header "React-Codegen-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Codegen/React-Codegen.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Codegen" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "$(PODS_ROOT)/Headers/Private/React-Fabric" "$(PODS_ROOT)/Headers/Private/React-RCTFabric" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_TARGET_SRCROOT)" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../build/generated/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core-dummy.m ================================================ #import @interface PodsDummy_React_Core : NSObject @end @implementation PodsDummy_React_Core @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "React/CoreModulesPlugins.h" #import "React/RCTAccessibilityManager+Internal.h" #import "React/RCTAccessibilityManager.h" #import "React/RCTActionSheetManager.h" #import "React/RCTAlertController.h" #import "React/RCTAlertManager.h" #import "React/RCTAppearance.h" #import "React/RCTAppState.h" #import "React/RCTClipboard.h" #import "React/RCTDeviceInfo.h" #import "React/RCTDevLoadingView.h" #import "React/RCTDevMenu.h" #import "React/RCTDevSettings.h" #import "React/RCTEventDispatcher.h" #import "React/RCTExceptionsManager.h" #import "React/RCTFPSGraph.h" #import "React/RCTI18nManager.h" #import "React/RCTKeyboardObserver.h" #import "React/RCTLogBox.h" #import "React/RCTLogBoxView.h" #import "React/RCTPlatform.h" #import "React/RCTRedBox.h" #import "React/RCTSourceCode.h" #import "React/RCTStatusBarManager.h" #import "React/RCTTiming.h" #import "React/RCTWebSocketExecutor.h" #import "React/RCTWebSocketModule.h" #import "React/RCTAssert.h" #import "React/RCTBridge+Inspector.h" #import "React/RCTBridge+Private.h" #import "React/RCTBridge.h" #import "React/RCTBridgeConstants.h" #import "React/RCTBridgeDelegate.h" #import "React/RCTBridgeMethod.h" #import "React/RCTBridgeModule.h" #import "React/RCTBridgeModuleDecorator.h" #import "React/RCTBridgeProxy+Cxx.h" #import "React/RCTBridgeProxy.h" #import "React/RCTBundleManager.h" #import "React/RCTBundleURLProvider.h" #import "React/RCTComponentEvent.h" #import "React/RCTConstants.h" #import "React/RCTConvert.h" #import "React/RCTCxxConvert.h" #import "React/RCTDefines.h" #import "React/RCTDisplayLink.h" #import "React/RCTErrorCustomizer.h" #import "React/RCTErrorInfo.h" #import "React/RCTEventDispatcherProtocol.h" #import "React/RCTFrameUpdate.h" #import "React/RCTImageSource.h" #import "React/RCTInitializing.h" #import "React/RCTInvalidating.h" #import "React/RCTJavaScriptExecutor.h" #import "React/RCTJavaScriptLoader.h" #import "React/RCTJSStackFrame.h" #import "React/RCTJSThread.h" #import "React/RCTKeyCommands.h" #import "React/RCTLog.h" #import "React/RCTManagedPointer.h" #import "React/RCTMockDef.h" #import "React/RCTModuleData.h" #import "React/RCTModuleMethod.h" #import "React/RCTMultipartDataTask.h" #import "React/RCTMultipartStreamReader.h" #import "React/RCTNullability.h" #import "React/RCTParserUtils.h" #import "React/RCTPerformanceLogger.h" #import "React/RCTPerformanceLoggerLabels.h" #import "React/RCTPLTag.h" #import "React/RCTRedBoxSetEnabled.h" #import "React/RCTReloadCommand.h" #import "React/RCTRootContentView.h" #import "React/RCTRootView.h" #import "React/RCTRootViewDelegate.h" #import "React/RCTRootViewInternal.h" #import "React/RCTRuntimeExecutorModule.h" #import "React/RCTTouchEvent.h" #import "React/RCTTouchHandler.h" #import "React/RCTTurboModuleRegistry.h" #import "React/RCTURLRequestDelegate.h" #import "React/RCTURLRequestHandler.h" #import "React/RCTUtils.h" #import "React/RCTUtilsUIOverride.h" #import "React/RCTVersion.h" #import "React/RCTSurface.h" #import "React/RCTSurfaceDelegate.h" #import "React/RCTSurfaceProtocol.h" #import "React/RCTSurfaceRootShadowView.h" #import "React/RCTSurfaceRootShadowViewDelegate.h" #import "React/RCTSurfaceRootView.h" #import "React/RCTSurfaceStage.h" #import "React/RCTSurfaceView+Internal.h" #import "React/RCTSurfaceView.h" #import "React/RCTSurfaceHostingProxyRootView.h" #import "React/RCTSurfaceHostingView.h" #import "React/RCTSurfaceSizeMeasureMode.h" #import "React/FBXXHashUtils.h" #import "React/RCTLocalizedString.h" #import "React/RCTEventEmitter.h" #import "React/RCTI18nUtil.h" #import "React/RCTLayoutAnimation.h" #import "React/RCTLayoutAnimationGroup.h" #import "React/RCTRedBoxExtraDataViewController.h" #import "React/RCTSurfacePresenterStub.h" #import "React/RCTUIManager.h" #import "React/RCTUIManagerObserverCoordinator.h" #import "React/RCTUIManagerUtils.h" #import "React/RCTMacros.h" #import "React/RCTProfile.h" #import "React/RCTUIUtils.h" #import "React/RCTActivityIndicatorView.h" #import "React/RCTActivityIndicatorViewManager.h" #import "React/RCTAnimationType.h" #import "React/RCTAutoInsetsProtocol.h" #import "React/RCTBorderCurve.h" #import "React/RCTBorderDrawing.h" #import "React/RCTBorderStyle.h" #import "React/RCTComponent.h" #import "React/RCTComponentData.h" #import "React/RCTConvert+CoreLocation.h" #import "React/RCTConvert+Transform.h" #import "React/RCTCursor.h" #import "React/RCTDebuggingOverlay.h" #import "React/RCTDebuggingOverlayManager.h" #import "React/RCTFont.h" #import "React/RCTLayout.h" #import "React/RCTModalHostView.h" #import "React/RCTModalHostViewController.h" #import "React/RCTModalHostViewManager.h" #import "React/RCTModalManager.h" #import "React/RCTPointerEvents.h" #import "React/RCTRootShadowView.h" #import "React/RCTSegmentedControl.h" #import "React/RCTSegmentedControlManager.h" #import "React/RCTShadowView+Internal.h" #import "React/RCTShadowView+Layout.h" #import "React/RCTShadowView.h" #import "React/RCTSwitch.h" #import "React/RCTSwitchManager.h" #import "React/RCTTextDecorationLineType.h" #import "React/RCTView.h" #import "React/RCTViewManager.h" #import "React/RCTViewUtils.h" #import "React/RCTWrapperViewController.h" #import "React/RCTRefreshableProtocol.h" #import "React/RCTRefreshControl.h" #import "React/RCTRefreshControlManager.h" #import "React/RCTSafeAreaShadowView.h" #import "React/RCTSafeAreaView.h" #import "React/RCTSafeAreaViewLocalData.h" #import "React/RCTSafeAreaViewManager.h" #import "React/RCTScrollableProtocol.h" #import "React/RCTScrollContentShadowView.h" #import "React/RCTScrollContentView.h" #import "React/RCTScrollContentViewManager.h" #import "React/RCTScrollEvent.h" #import "React/RCTScrollView.h" #import "React/RCTScrollViewManager.h" #import "React/UIView+Private.h" #import "React/UIView+React.h" #import "React/RCTDevLoadingViewProtocol.h" #import "React/RCTDevLoadingViewSetEnabled.h" #import "React/RCTInspectorDevServerHelper.h" #import "React/RCTPackagerClient.h" #import "React/RCTPackagerConnection.h" #import "React/RCTInspector.h" #import "React/RCTInspectorPackagerConnection.h" #import "React/RCTAnimationDriver.h" #import "React/RCTDecayAnimation.h" #import "React/RCTEventAnimation.h" #import "React/RCTFrameAnimation.h" #import "React/RCTSpringAnimation.h" #import "React/RCTAdditionAnimatedNode.h" #import "React/RCTAnimatedNode.h" #import "React/RCTColorAnimatedNode.h" #import "React/RCTDiffClampAnimatedNode.h" #import "React/RCTDivisionAnimatedNode.h" #import "React/RCTInterpolationAnimatedNode.h" #import "React/RCTModuloAnimatedNode.h" #import "React/RCTMultiplicationAnimatedNode.h" #import "React/RCTObjectAnimatedNode.h" #import "React/RCTPropsAnimatedNode.h" #import "React/RCTStyleAnimatedNode.h" #import "React/RCTSubtractionAnimatedNode.h" #import "React/RCTTrackingAnimatedNode.h" #import "React/RCTTransformAnimatedNode.h" #import "React/RCTValueAnimatedNode.h" #import "React/RCTAnimationPlugins.h" #import "React/RCTAnimationUtils.h" #import "React/RCTNativeAnimatedModule.h" #import "React/RCTNativeAnimatedNodesManager.h" #import "React/RCTNativeAnimatedTurboModule.h" #import "React/RCTBlobManager.h" #import "React/RCTFileReaderModule.h" #import "React/RCTAnimatedImage.h" #import "React/RCTBundleAssetImageLoader.h" #import "React/RCTDisplayWeakRefreshable.h" #import "React/RCTGIFImageDecoder.h" #import "React/RCTImageBlurUtils.h" #import "React/RCTImageCache.h" #import "React/RCTImageDataDecoder.h" #import "React/RCTImageEditingManager.h" #import "React/RCTImageLoader.h" #import "React/RCTImageLoaderLoggable.h" #import "React/RCTImageLoaderProtocol.h" #import "React/RCTImageLoaderWithAttributionProtocol.h" #import "React/RCTImagePlugins.h" #import "React/RCTImageShadowView.h" #import "React/RCTImageStoreManager.h" #import "React/RCTImageURLLoader.h" #import "React/RCTImageURLLoaderWithAttribution.h" #import "React/RCTImageUtils.h" #import "React/RCTImageView.h" #import "React/RCTImageViewManager.h" #import "React/RCTLocalAssetImageLoader.h" #import "React/RCTResizeMode.h" #import "React/RCTUIImageViewAnimated.h" #import "React/RCTLinkingManager.h" #import "React/RCTLinkingPlugins.h" #import "React/RCTDataRequestHandler.h" #import "React/RCTFileRequestHandler.h" #import "React/RCTHTTPRequestHandler.h" #import "React/RCTNetworking.h" #import "React/RCTNetworkPlugins.h" #import "React/RCTNetworkTask.h" #import "React/RCTSettingsManager.h" #import "React/RCTSettingsPlugins.h" #import "React/RCTBaseTextShadowView.h" #import "React/RCTBaseTextViewManager.h" #import "React/RCTRawTextShadowView.h" #import "React/RCTRawTextViewManager.h" #import "React/RCTConvert+Text.h" #import "React/RCTTextAttributes.h" #import "React/RCTTextTransform.h" #import "React/NSTextStorage+FontScaling.h" #import "React/RCTDynamicTypeRamp.h" #import "React/RCTTextShadowView.h" #import "React/RCTTextView.h" #import "React/RCTTextViewManager.h" #import "React/RCTMultilineTextInputView.h" #import "React/RCTMultilineTextInputViewManager.h" #import "React/RCTUITextView.h" #import "React/RCTBackedTextInputDelegate.h" #import "React/RCTBackedTextInputDelegateAdapter.h" #import "React/RCTBackedTextInputViewProtocol.h" #import "React/RCTBaseTextInputShadowView.h" #import "React/RCTBaseTextInputView.h" #import "React/RCTBaseTextInputViewManager.h" #import "React/RCTInputAccessoryShadowView.h" #import "React/RCTInputAccessoryView.h" #import "React/RCTInputAccessoryViewContent.h" #import "React/RCTInputAccessoryViewManager.h" #import "React/RCTTextSelection.h" #import "React/RCTSinglelineTextInputView.h" #import "React/RCTSinglelineTextInputViewManager.h" #import "React/RCTUITextField.h" #import "React/RCTVirtualTextShadowView.h" #import "React/RCTVirtualTextView.h" #import "React/RCTVirtualTextViewManager.h" #import "React/RCTVibration.h" #import "React/RCTVibrationPlugins.h" #import "React/RCTReconnectingWebSocket.h" FOUNDATION_EXPORT double ReactVersionNumber; FOUNDATION_EXPORT const unsigned char ReactVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Core DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" "$(PODS_CONFIGURATION_BUILD_DIR)/React-hermes" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 RCT_METRO_PORT=${RCT_METRO_PORT} HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Core" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_TARGET_SRCROOT)/ReactCommon $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation/RCTDeprecation.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core.modulemap ================================================ module React { umbrella header "React-Core-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/React-Core.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Core DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" "$(PODS_CONFIGURATION_BUILD_DIR)/React-hermes" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 RCT_METRO_PORT=${RCT_METRO_PORT} HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Core" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_TARGET_SRCROOT)/ReactCommon $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RCTDeprecation/RCTDeprecation.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Core/ResourceBundle-RCTI18nStrings-React-Core-Info.plist ================================================ CFBundleDevelopmentRegion ${PODS_DEVELOPMENT_LANGUAGE} CFBundleIdentifier ${PRODUCT_BUNDLE_IDENTIFIER} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType BNDL CFBundleShortVersionString 0.74.6 CFBundleSignature ???? CFBundleVersion 1 NSPrincipalClass ================================================ FILE: native/iosTest/Pods/Target Support Files/React-CoreModules/React-CoreModules-dummy.m ================================================ #import @interface PodsDummy_React_CoreModules : NSObject @end @implementation PodsDummy_React_CoreModules @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-CoreModules/React-CoreModules-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-CoreModules/React-CoreModules.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/React/CoreModules" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/React/CoreModules PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-CoreModules/React-CoreModules.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/React/CoreModules" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/React/CoreModules PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric-dummy.m ================================================ #import @interface PodsDummy_React_Fabric : NSObject @end @implementation PodsDummy_React_Fabric @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/renderer/animations/conversions.h" #import "react/renderer/animations/LayoutAnimationCallbackWrapper.h" #import "react/renderer/animations/LayoutAnimationDriver.h" #import "react/renderer/animations/LayoutAnimationKeyFrameManager.h" #import "react/renderer/animations/primitives.h" #import "react/renderer/animations/utils.h" #import "react/renderer/attributedstring/AttributedString.h" #import "react/renderer/attributedstring/AttributedStringBox.h" #import "react/renderer/attributedstring/conversions.h" #import "react/renderer/attributedstring/ParagraphAttributes.h" #import "react/renderer/attributedstring/primitives.h" #import "react/renderer/attributedstring/TextAttributes.h" #import "react/renderer/componentregistry/ComponentDescriptorFactory.h" #import "react/renderer/componentregistry/ComponentDescriptorProvider.h" #import "react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h" #import "react/renderer/componentregistry/ComponentDescriptorRegistry.h" #import "react/renderer/componentregistry/componentNameByReactViewName.h" #import "react/renderer/componentregistry/native/NativeComponentRegistryBinding.h" #import "react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h" #import "react/renderer/components/inputaccessory/InputAccessoryShadowNode.h" #import "react/renderer/components/inputaccessory/InputAccessoryState.h" #import "react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h" #import "react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h" #import "react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h" #import "react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.h" #import "react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h" #import "react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h" #import "react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h" #import "react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h" #import "react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h" #import "react/renderer/components/modal/ModalHostViewComponentDescriptor.h" #import "react/renderer/components/modal/ModalHostViewShadowNode.h" #import "react/renderer/components/modal/ModalHostViewState.h" #import "react/renderer/components/rncore/ComponentDescriptors.h" #import "react/renderer/components/rncore/EventEmitters.h" #import "react/renderer/components/rncore/Props.h" #import "react/renderer/components/rncore/RCTComponentViewHelpers.h" #import "react/renderer/components/rncore/ShadowNodes.h" #import "react/renderer/components/rncore/States.h" #import "react/renderer/components/root/RootComponentDescriptor.h" #import "react/renderer/components/root/RootProps.h" #import "react/renderer/components/root/RootShadowNode.h" #import "react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h" #import "react/renderer/components/safeareaview/SafeAreaViewShadowNode.h" #import "react/renderer/components/safeareaview/SafeAreaViewState.h" #import "react/renderer/components/scrollview/conversions.h" #import "react/renderer/components/scrollview/primitives.h" #import "react/renderer/components/scrollview/RCTComponentViewHelpers.h" #import "react/renderer/components/scrollview/ScrollViewComponentDescriptor.h" #import "react/renderer/components/scrollview/ScrollViewEventEmitter.h" #import "react/renderer/components/scrollview/ScrollViewProps.h" #import "react/renderer/components/scrollview/ScrollViewShadowNode.h" #import "react/renderer/components/scrollview/ScrollViewState.h" #import "react/renderer/components/text/BaseTextProps.h" #import "react/renderer/components/text/BaseTextShadowNode.h" #import "react/renderer/components/text/conversions.h" #import "react/renderer/components/text/ParagraphComponentDescriptor.h" #import "react/renderer/components/text/ParagraphEventEmitter.h" #import "react/renderer/components/text/ParagraphLayoutManager.h" #import "react/renderer/components/text/ParagraphProps.h" #import "react/renderer/components/text/ParagraphShadowNode.h" #import "react/renderer/components/text/ParagraphState.h" #import "react/renderer/components/text/RawTextComponentDescriptor.h" #import "react/renderer/components/text/RawTextProps.h" #import "react/renderer/components/text/RawTextShadowNode.h" #import "react/renderer/components/text/TextComponentDescriptor.h" #import "react/renderer/components/text/TextProps.h" #import "react/renderer/components/text/TextShadowNode.h" #import "react/renderer/components/iostextinput/conversions.h" #import "react/renderer/components/iostextinput/primitives.h" #import "react/renderer/components/iostextinput/propsConversions.h" #import "react/renderer/components/iostextinput/TextInputComponentDescriptor.h" #import "react/renderer/components/iostextinput/TextInputEventEmitter.h" #import "react/renderer/components/iostextinput/TextInputProps.h" #import "react/renderer/components/iostextinput/TextInputShadowNode.h" #import "react/renderer/components/iostextinput/TextInputState.h" #import "react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h" #import "react/renderer/components/unimplementedview/UnimplementedViewProps.h" #import "react/renderer/components/unimplementedview/UnimplementedViewShadowNode.h" #import "react/renderer/components/view/AccessibilityPrimitives.h" #import "react/renderer/components/view/AccessibilityProps.h" #import "react/renderer/components/view/accessibilityPropsConversions.h" #import "react/renderer/components/view/BaseTouch.h" #import "react/renderer/components/view/BaseViewEventEmitter.h" #import "react/renderer/components/view/BaseViewProps.h" #import "react/renderer/components/view/ConcreteViewShadowNode.h" #import "react/renderer/components/view/conversions.h" #import "react/renderer/components/view/HostPlatformTouch.h" #import "react/renderer/components/view/HostPlatformViewEventEmitter.h" #import "react/renderer/components/view/HostPlatformViewProps.h" #import "react/renderer/components/view/HostPlatformViewTraitsInitializer.h" #import "react/renderer/components/view/PointerEvent.h" #import "react/renderer/components/view/primitives.h" #import "react/renderer/components/view/propsConversions.h" #import "react/renderer/components/view/Touch.h" #import "react/renderer/components/view/TouchEvent.h" #import "react/renderer/components/view/TouchEventEmitter.h" #import "react/renderer/components/view/ViewComponentDescriptor.h" #import "react/renderer/components/view/ViewEventEmitter.h" #import "react/renderer/components/view/ViewProps.h" #import "react/renderer/components/view/ViewPropsInterpolation.h" #import "react/renderer/components/view/ViewShadowNode.h" #import "react/renderer/components/view/YogaLayoutableShadowNode.h" #import "react/renderer/components/view/YogaStylableProps.h" #import "react/renderer/core/BatchedEventQueue.h" #import "react/renderer/core/ComponentDescriptor.h" #import "react/renderer/core/ConcreteComponentDescriptor.h" #import "react/renderer/core/ConcreteShadowNode.h" #import "react/renderer/core/ConcreteState.h" #import "react/renderer/core/conversions.h" #import "react/renderer/core/DynamicPropsUtilities.h" #import "react/renderer/core/EventBeat.h" #import "react/renderer/core/EventDispatcher.h" #import "react/renderer/core/EventEmitter.h" #import "react/renderer/core/EventListener.h" #import "react/renderer/core/EventLogger.h" #import "react/renderer/core/EventPayload.h" #import "react/renderer/core/EventPayloadType.h" #import "react/renderer/core/EventPipe.h" #import "react/renderer/core/EventPriority.h" #import "react/renderer/core/EventQueue.h" #import "react/renderer/core/EventQueueProcessor.h" #import "react/renderer/core/EventTarget.h" #import "react/renderer/core/graphicsConversions.h" #import "react/renderer/core/InstanceHandle.h" #import "react/renderer/core/LayoutableShadowNode.h" #import "react/renderer/core/LayoutConstraints.h" #import "react/renderer/core/LayoutContext.h" #import "react/renderer/core/LayoutMetrics.h" #import "react/renderer/core/LayoutPrimitives.h" #import "react/renderer/core/Props.h" #import "react/renderer/core/propsConversions.h" #import "react/renderer/core/PropsMacros.h" #import "react/renderer/core/PropsParserContext.h" #import "react/renderer/core/RawEvent.h" #import "react/renderer/core/RawProps.h" #import "react/renderer/core/RawPropsKey.h" #import "react/renderer/core/RawPropsKeyMap.h" #import "react/renderer/core/RawPropsParser.h" #import "react/renderer/core/RawPropsPrimitives.h" #import "react/renderer/core/RawValue.h" #import "react/renderer/core/ReactEventPriority.h" #import "react/renderer/core/ReactPrimitives.h" #import "react/renderer/core/Sealable.h" #import "react/renderer/core/ShadowNode.h" #import "react/renderer/core/ShadowNodeFamily.h" #import "react/renderer/core/ShadowNodeFragment.h" #import "react/renderer/core/ShadowNodeTraits.h" #import "react/renderer/core/State.h" #import "react/renderer/core/StateData.h" #import "react/renderer/core/StatePipe.h" #import "react/renderer/core/StateUpdate.h" #import "react/renderer/core/UnbatchedEventQueue.h" #import "react/renderer/core/ValueFactory.h" #import "react/renderer/core/ValueFactoryEventPayload.h" #import "react/renderer/imagemanager/ImageManager.h" #import "react/renderer/imagemanager/ImageRequest.h" #import "react/renderer/imagemanager/ImageResponse.h" #import "react/renderer/imagemanager/ImageResponseObserver.h" #import "react/renderer/imagemanager/ImageResponseObserverCoordinator.h" #import "react/renderer/imagemanager/ImageTelemetry.h" #import "react/renderer/imagemanager/primitives.h" #import "react/renderer/leakchecker/LeakChecker.h" #import "react/renderer/leakchecker/WeakFamilyRegistry.h" #import "react/renderer/mounting/Differentiator.h" #import "react/renderer/mounting/MountingCoordinator.h" #import "react/renderer/mounting/MountingOverrideDelegate.h" #import "react/renderer/mounting/MountingTransaction.h" #import "react/renderer/mounting/ShadowTree.h" #import "react/renderer/mounting/ShadowTreeDelegate.h" #import "react/renderer/mounting/ShadowTreeRegistry.h" #import "react/renderer/mounting/ShadowTreeRevision.h" #import "react/renderer/mounting/ShadowView.h" #import "react/renderer/mounting/ShadowViewMutation.h" #import "react/renderer/mounting/stubs.h" #import "react/renderer/mounting/StubView.h" #import "react/renderer/mounting/StubViewTree.h" #import "react/renderer/mounting/TelemetryController.h" #import "react/renderer/scheduler/AsynchronousEventBeat.h" #import "react/renderer/scheduler/InspectorData.h" #import "react/renderer/scheduler/Scheduler.h" #import "react/renderer/scheduler/SchedulerDelegate.h" #import "react/renderer/scheduler/SchedulerToolbox.h" #import "react/renderer/scheduler/SurfaceHandler.h" #import "react/renderer/scheduler/SurfaceManager.h" #import "react/renderer/scheduler/SynchronousEventBeat.h" #import "react/renderer/telemetry/SurfaceTelemetry.h" #import "react/renderer/telemetry/TransactionTelemetry.h" #import "react/renderer/textlayoutmanager/RCTAttributedTextUtils.h" #import "react/renderer/textlayoutmanager/RCTFontProperties.h" #import "react/renderer/textlayoutmanager/RCTFontUtils.h" #import "react/renderer/textlayoutmanager/RCTTextLayoutManager.h" #import "react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h" #import "react/renderer/textlayoutmanager/TextLayoutManager.h" #import "react/renderer/textlayoutmanager/TextLayoutContext.h" #import "react/renderer/textlayoutmanager/TextMeasureCache.h" #import "react/renderer/uimanager/bindingUtils.h" #import "react/renderer/uimanager/LayoutAnimationStatusDelegate.h" #import "react/renderer/uimanager/PointerEventsProcessor.h" #import "react/renderer/uimanager/PointerHoverTracker.h" #import "react/renderer/uimanager/primitives.h" #import "react/renderer/uimanager/SurfaceRegistryBinding.h" #import "react/renderer/uimanager/UIManager.h" #import "react/renderer/uimanager/UIManagerAnimationDelegate.h" #import "react/renderer/uimanager/UIManagerBinding.h" #import "react/renderer/uimanager/UIManagerCommitHook.h" #import "react/renderer/uimanager/UIManagerDelegate.h" #import "react/renderer/uimanager/UIManagerMountHook.h" FOUNDATION_EXPORT double React_FabricVersionNumber; FOUNDATION_EXPORT const unsigned char React_FabricVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Fabric" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/Headers/Private/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric.modulemap ================================================ module React_Fabric { umbrella header "React-Fabric-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Fabric/React-Fabric.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Fabric" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/Headers/Private/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-FabricImage/React-FabricImage-dummy.m ================================================ #import @interface PodsDummy_React_FabricImage : NSObject @end @implementation PodsDummy_React_FabricImage @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-FabricImage/React-FabricImage-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-FabricImage/React-FabricImage.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-FabricImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-FabricImage/React-FabricImage.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-FabricImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager-dummy.m ================================================ #import @interface PodsDummy_React_ImageManager : NSObject @end @implementation PodsDummy_React_ImageManager @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/renderer/imagemanager/RCTImageManager.h" #import "react/renderer/imagemanager/RCTImageManagerProtocol.h" #import "react/renderer/imagemanager/RCTImagePrimitivesConversions.h" #import "react/renderer/imagemanager/RCTSyncImageManager.h" FOUNDATION_EXPORT double react_renderer_imagemanagerVersionNumber; FOUNDATION_EXPORT const unsigned char react_renderer_imagemanagerVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-ImageManager" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/../../../" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager.modulemap ================================================ module react_renderer_imagemanager { umbrella header "React-ImageManager-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-ImageManager/React-ImageManager.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-ImageManager" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/../../../" "$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Mapbuffer/React-Mapbuffer-dummy.m ================================================ #import @interface PodsDummy_React_Mapbuffer : NSObject @end @implementation PodsDummy_React_Mapbuffer @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Mapbuffer/React-Mapbuffer-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Mapbuffer/React-Mapbuffer.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Mapbuffer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_TARGET_SRCROOT)" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-Mapbuffer/React-Mapbuffer.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-Mapbuffer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_TARGET_SRCROOT)" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple-dummy.m ================================================ #import @interface PodsDummy_React_NativeModulesApple : NSObject @end @implementation PodsDummy_React_NativeModulesApple @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "ReactCommon/RCTInteropTurboModule.h" #import "ReactCommon/RCTRuntimeExecutor.h" #import "ReactCommon/RCTTurboModule.h" #import "ReactCommon/RCTTurboModuleManager.h" FOUNDATION_EXPORT double React_NativeModulesAppleVersionNumber; FOUNDATION_EXPORT const unsigned char React_NativeModulesAppleVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple.modulemap ================================================ module React_NativeModulesApple { umbrella header "React-NativeModulesApple-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-NativeModulesApple/React-NativeModulesApple.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTActionSheet/React-RCTActionSheet.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/ActionSheetIOS PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTActionSheet/React-RCTActionSheet.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/ActionSheetIOS PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAnimation/React-RCTAnimation-dummy.m ================================================ #import @interface PodsDummy_React_RCTAnimation : NSObject @end @implementation PodsDummy_React_RCTAnimation @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAnimation/React-RCTAnimation-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAnimation/React-RCTAnimation.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTAnimation" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/NativeAnimation PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAnimation/React-RCTAnimation.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTAnimation" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/NativeAnimation PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate-dummy.m ================================================ #import @interface PodsDummy_React_RCTAppDelegate : NSObject @end @implementation PodsDummy_React_RCTAppDelegate @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "RCTAppDelegate+Protected.h" #import "RCTAppDelegate.h" #import "RCTAppSetupUtils.h" #import "RCTRootViewFactory.h" FOUNDATION_EXPORT double React_RCTAppDelegateVersionNumber; FOUNDATION_EXPORT const unsigned char React_RCTAppDelegateVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_TARGET_SRCROOT)/../../ReactCommon $(PODS_ROOT)/Headers/Private/React-Core $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-RCTFabric $(PODS_ROOT)/Headers/Private/Yoga $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore/React_RuntimeCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple/React_RuntimeApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" OTHER_CPLUSPLUSFLAGS = $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/AppDelegate PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate.modulemap ================================================ module React_RCTAppDelegate { umbrella header "React-RCTAppDelegate-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTAppDelegate/React-RCTAppDelegate.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAppDelegate DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTAppDelegate" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_TARGET_SRCROOT)/../../ReactCommon $(PODS_ROOT)/Headers/Private/React-Core $(PODS_ROOT)/boost $(PODS_ROOT)/DoubleConversion $(PODS_ROOT)/fmt/include $(PODS_ROOT)/RCT-Folly ${PODS_ROOT}/Headers/Public/FlipperKit $(PODS_ROOT)/Headers/Public/ReactCommon $(PODS_ROOT)/Headers/Public/React-RCTFabric $(PODS_ROOT)/Headers/Private/Yoga $(PODS_ROOT)/Headers/Public/React-hermes $(PODS_ROOT)/Headers/Public/hermes-engine "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore/React_RuntimeCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple/React_RuntimeApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" OTHER_CPLUSPLUSFLAGS = $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 -DUSE_HERMES PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/AppDelegate PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTBlob/React-RCTBlob-dummy.m ================================================ #import @interface PodsDummy_React_RCTBlob : NSObject @end @implementation PodsDummy_React_RCTBlob @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTBlob/React-RCTBlob-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTBlob/React-RCTBlob.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTBlob" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Blob PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTBlob/React-RCTBlob.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTBlob" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Blob PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric-dummy.m ================================================ #import @interface PodsDummy_React_RCTFabric : NSObject @end @implementation PodsDummy_React_RCTFabric @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "React/RCTActivityIndicatorViewComponentView.h" #import "React/RCTDebuggingOverlayComponentView.h" #import "React/RCTImageComponentView.h" #import "React/RCTInputAccessoryComponentView.h" #import "React/RCTInputAccessoryContentView.h" #import "React/RCTLegacyViewManagerInteropComponentView.h" #import "React/RCTLegacyViewManagerInteropCoordinatorAdapter.h" #import "React/RCTFabricModalHostViewController.h" #import "React/RCTModalHostViewComponentView.h" #import "React/RCTFabricComponentsPlugins.h" #import "React/RCTRootComponentView.h" #import "React/RCTSafeAreaViewComponentView.h" #import "React/RCTCustomPullToRefreshViewProtocol.h" #import "React/RCTEnhancedScrollView.h" #import "React/RCTPullToRefreshViewComponentView.h" #import "React/RCTScrollViewComponentView.h" #import "React/RCTSwitchComponentView.h" #import "React/RCTAccessibilityElement.h" #import "React/RCTParagraphComponentAccessibilityProvider.h" #import "React/RCTParagraphComponentView.h" #import "React/RCTTextInputComponentView.h" #import "React/RCTTextInputNativeCommands.h" #import "React/RCTTextInputUtils.h" #import "React/RCTUnimplementedNativeComponentView.h" #import "React/RCTUnimplementedViewComponentView.h" #import "React/RCTViewComponentView.h" #import "React/RCTComponentViewClassDescriptor.h" #import "React/RCTComponentViewDescriptor.h" #import "React/RCTComponentViewFactory.h" #import "React/RCTComponentViewProtocol.h" #import "React/RCTComponentViewRegistry.h" #import "React/RCTMountingManager.h" #import "React/RCTMountingManagerDelegate.h" #import "React/RCTMountingTransactionObserverCoordinator.h" #import "React/RCTMountingTransactionObserving.h" #import "React/UIView+ComponentViewProtocol.h" #import "React/RCTConversions.h" #import "React/RCTImageResponseDelegate.h" #import "React/RCTImageResponseObserverProxy.h" #import "React/RCTLocalizationProvider.h" #import "React/RCTPrimitives.h" #import "React/RCTScheduler.h" #import "React/RCTSurfacePointerHandler.h" #import "React/RCTSurfacePresenter.h" #import "React/RCTSurfacePresenterBridgeAdapter.h" #import "React/RCTSurfaceRegistry.h" #import "React/RCTSurfaceTouchHandler.h" #import "React/RCTThirdPartyFabricComponentsProvider.h" #import "React/RCTTouchableComponentViewProtocol.h" #import "React/RCTFabricSurface.h" #import "React/PlatformRunLoopObserver.h" #import "React/RCTGenericDelegateSplitter.h" #import "React/RCTIdentifierPool.h" #import "React/RCTReactTaggedView.h" FOUNDATION_EXPORT double RCTFabricVersionNumber; FOUNDATION_EXPORT const unsigned char RCTFabricVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTFabric" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/Headers/Public/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/textlayoutmanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/textinput/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig/React_nativeconfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/React PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric.modulemap ================================================ module RCTFabric { umbrella header "React-RCTFabric-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTFabric/React-RCTFabric.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTFabric" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_ROOT)/Headers/Private/Yoga" "$(PODS_ROOT)/Headers/Public/React-Codegen" "${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/textlayoutmanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/textinput/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx" "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig/React_nativeconfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" "${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" $(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32 PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/React PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTImage/React-RCTImage-dummy.m ================================================ #import @interface PodsDummy_React_RCTImage : NSObject @end @implementation PodsDummy_React_RCTImage @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTImage/React-RCTImage-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTImage/React-RCTImage.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Image PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTImage/React-RCTImage.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Image PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTLinking/React-RCTLinking-dummy.m ================================================ #import @interface PodsDummy_React_RCTLinking : NSObject @end @implementation PodsDummy_React_RCTLinking @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTLinking/React-RCTLinking-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTLinking/React-RCTLinking.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/LinkingIOS PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTLinking/React-RCTLinking.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/LinkingIOS PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTNetwork/React-RCTNetwork-dummy.m ================================================ #import @interface PodsDummy_React_RCTNetwork : NSObject @end @implementation PodsDummy_React_RCTNetwork @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTNetwork/React-RCTNetwork-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTNetwork/React-RCTNetwork.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Network PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTNetwork/React-RCTNetwork.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Network PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTSettings/React-RCTSettings-dummy.m ================================================ #import @interface PodsDummy_React_RCTSettings : NSObject @end @implementation PodsDummy_React_RCTSettings @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTSettings/React-RCTSettings-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTSettings/React-RCTSettings.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Settings PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTSettings/React-RCTSettings.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers/build/generated/ios" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Settings PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTText/React-RCTText-dummy.m ================================================ #import @interface PodsDummy_React_RCTText : NSObject @end @implementation PodsDummy_React_RCTText @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTText/React-RCTText-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTText/React-RCTText.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTText" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Text PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTText/React-RCTText.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RCTText" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Text PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTVibration/React-RCTVibration-dummy.m ================================================ #import @interface PodsDummy_React_RCTVibration : NSObject @end @implementation PodsDummy_React_RCTVibration @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTVibration/React-RCTVibration-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTVibration/React-RCTVibration.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Vibration PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RCTVibration/React-RCTVibration.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Codegen/react/renderer/components" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers/build/generated/ios" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core" "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/Libraries/Vibration PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeApple/React-RuntimeApple-dummy.m ================================================ #import @interface PodsDummy_React_RuntimeApple : NSObject @end @implementation PodsDummy_React_RuntimeApple @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeApple/React-RuntimeApple-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeApple/React-RuntimeApple.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeApple" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_ROOT)/boost $(PODS_ROOT)/Headers/Private/React-Core $(PODS_TARGET_SRCROOT)/../../../.. $(PODS_TARGET_SRCROOT)/../../../../.. OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeApple/React-RuntimeApple.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeApple FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeApple" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTFabric" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-RuntimeApple" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" $(PODS_ROOT)/boost $(PODS_ROOT)/Headers/Private/React-Core $(PODS_TARGET_SRCROOT)/../../../.. $(PODS_TARGET_SRCROOT)/../../../../.. OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTFabric/React-RCTFabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeCore/React-RuntimeCore-dummy.m ================================================ #import @interface PodsDummy_React_RuntimeCore : NSObject @end @implementation PodsDummy_React_RuntimeCore @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeCore/React-RuntimeCore-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeCore/React-RuntimeCore.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_TARGET_SRCROOT}/../.." OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeCore/React-RuntimeCore.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeCore FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/Headers/Private/React-Core" "${PODS_TARGET_SRCROOT}/../.." OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeHermes/React-RuntimeHermes-dummy.m ================================================ #import @interface PodsDummy_React_RuntimeHermes : NSObject @end @implementation PodsDummy_React_RuntimeHermes @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeHermes/React-RuntimeHermes-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeHermes/React-RuntimeHermes.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_TARGET_SRCROOT}/../.." "${PODS_TARGET_SRCROOT}/../../hermes/executor" "$(PODS_ROOT)/boost" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-RuntimeHermes/React-RuntimeHermes.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-RuntimeHermes FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-RuntimeCore" "${PODS_ROOT}/Headers/Public/React-RuntimeHermes" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-nativeconfig" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_TARGET_SRCROOT}/../.." "${PODS_TARGET_SRCROOT}/../../hermes/executor" "$(PODS_ROOT)/boost" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/runtime PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-callinvoker/React-callinvoker.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-callinvoker GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-callinvoker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-callinvoker" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/callinvoker PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-callinvoker/React-callinvoker.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-callinvoker GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-callinvoker" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-callinvoker" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/callinvoker PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-cxxreact/React-cxxreact-dummy.m ================================================ #import @interface PodsDummy_React_cxxreact : NSObject @end @implementation PodsDummy_React_cxxreact @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-cxxreact/React-cxxreact-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-cxxreact/React-cxxreact.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-cxxreact" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/cxxreact PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-cxxreact/React-cxxreact.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-cxxreact" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/cxxreact PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug-dummy.m ================================================ #import @interface PodsDummy_React_debug : NSObject @end @implementation PodsDummy_React_debug @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/debug/flags.h" #import "react/debug/react_native_assert.h" #import "react/debug/react_native_expect.h" FOUNDATION_EXPORT double react_debugVersionNumber; FOUNDATION_EXPORT const unsigned char react_debugVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-debug DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-debug" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-debug" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/debug PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug.modulemap ================================================ module react_debug { umbrella header "React-debug-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-debug/React-debug.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-debug DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-debug" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-debug" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/debug PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags-dummy.m ================================================ #import @interface PodsDummy_React_featureflags : NSObject @end @implementation PodsDummy_React_featureflags @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/featureflags/ReactNativeFeatureFlags.h" #import "react/featureflags/ReactNativeFeatureFlagsAccessor.h" #import "react/featureflags/ReactNativeFeatureFlagsDefaults.h" #import "react/featureflags/ReactNativeFeatureFlagsProvider.h" FOUNDATION_EXPORT double react_featureflagsVersionNumber; FOUNDATION_EXPORT const unsigned char react_featureflagsVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-featureflags" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-featureflags" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/featureflags PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags.modulemap ================================================ module react_featureflags { umbrella header "React-featureflags-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-featureflags/React-featureflags.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-featureflags" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-featureflags" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/featureflags PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics-dummy.m ================================================ #import @interface PodsDummy_React_graphics : NSObject @end @implementation PodsDummy_React_graphics @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/renderer/graphics/Color.h" #import "react/renderer/graphics/ColorComponents.h" #import "react/renderer/graphics/conversions.h" #import "react/renderer/graphics/fromRawValueShared.h" #import "react/renderer/graphics/Geometry.h" #import "react/renderer/graphics/Float.h" #import "react/renderer/graphics/HostPlatformColor.h" #import "react/renderer/graphics/PlatformColorParser.h" #import "react/renderer/graphics/RCTPlatformColorUtils.h" #import "react/renderer/graphics/Point.h" #import "react/renderer/graphics/Rect.h" #import "react/renderer/graphics/RectangleCorners.h" #import "react/renderer/graphics/RectangleEdges.h" #import "react/renderer/graphics/rounding.h" #import "react/renderer/graphics/Size.h" #import "react/renderer/graphics/Transform.h" #import "react/renderer/graphics/ValueUnit.h" #import "react/renderer/graphics/Vector.h" FOUNDATION_EXPORT double react_renderer_graphicsVersionNumber; FOUNDATION_EXPORT const unsigned char react_renderer_graphicsVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-graphics" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/../../../" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/graphics PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics.modulemap ================================================ module react_renderer_graphics { umbrella header "React-graphics-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-graphics/React-graphics.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-graphics" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_TARGET_SRCROOT)/../../../" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/graphics PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-hermes/React-hermes-dummy.m ================================================ #import @interface PodsDummy_React_hermes : NSObject @end @implementation PodsDummy_React_hermes @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-hermes/React-hermes-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-hermes/React-hermes.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-hermes FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-hermes" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/hermes-engine/destroot/include" "$(PODS_TARGET_SRCROOT)/.." "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/hermes PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-hermes/React-hermes.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-hermes FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-hermes" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/hermes-engine/destroot/include" "$(PODS_TARGET_SRCROOT)/.." "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/hermes PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jserrorhandler/React-jserrorhandler-dummy.m ================================================ #import @interface PodsDummy_React_jserrorhandler : NSObject @end @implementation PodsDummy_React_jserrorhandler @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jserrorhandler/React-jserrorhandler-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jserrorhandler/React-jserrorhandler.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jserrorhandler" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer/React_Mapbuffer.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jserrorhandler PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jserrorhandler/React-jserrorhandler.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jserrorhandler FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jserrorhandler" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-Mapbuffer" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-jserrorhandler" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/React-Mapbuffer/React_Mapbuffer.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jserrorhandler PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi-dummy.m ================================================ #import @interface PodsDummy_React_jsi : NSObject @end @implementation PodsDummy_React_jsi @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "jsi/decorator.h" #import "jsi/instrumentation.h" #import "jsi/jsi-inl.h" #import "jsi/jsi.h" #import "jsi/JSIDynamic.h" #import "jsi/jsilib.h" #import "jsi/threadsafe.h" FOUNDATION_EXPORT double jsiVersionNumber; FOUNDATION_EXPORT const unsigned char jsiVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsi DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsi" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsi PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi.modulemap ================================================ module jsi { umbrella header "React-jsi-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsi/React-jsi.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsi DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsi" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsi PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsiexecutor/React-jsiexecutor-dummy.m ================================================ #import @interface PodsDummy_React_jsiexecutor : NSObject @end @implementation PodsDummy_React_jsiexecutor @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsiexecutor/React-jsiexecutor-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsiexecutor/React-jsiexecutor.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsiexecutor" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsiexecutor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsiexecutor/React-jsiexecutor.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsiexecutor" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector/jsinspector_modern.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsiexecutor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector-dummy.m ================================================ #import @interface PodsDummy_React_jsinspector : NSObject @end @implementation PodsDummy_React_jsinspector @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "jsinspector-modern/ExecutionContext.h" #import "jsinspector-modern/ExecutionContextManager.h" #import "jsinspector-modern/FallbackRuntimeAgentDelegate.h" #import "jsinspector-modern/InspectorFlags.h" #import "jsinspector-modern/InspectorInterfaces.h" #import "jsinspector-modern/InspectorPackagerConnection.h" #import "jsinspector-modern/InspectorPackagerConnectionImpl.h" #import "jsinspector-modern/InspectorUtilities.h" #import "jsinspector-modern/InstanceAgent.h" #import "jsinspector-modern/InstanceTarget.h" #import "jsinspector-modern/PageAgent.h" #import "jsinspector-modern/PageTarget.h" #import "jsinspector-modern/Parsing.h" #import "jsinspector-modern/ReactCdp.h" #import "jsinspector-modern/RuntimeAgent.h" #import "jsinspector-modern/RuntimeAgentDelegate.h" #import "jsinspector-modern/RuntimeTarget.h" #import "jsinspector-modern/ScopedExecutor.h" #import "jsinspector-modern/SessionState.h" #import "jsinspector-modern/UniqueMonostate.h" #import "jsinspector-modern/WeakList.h" #import "jsinspector-modern/WebSocketInterfaces.h" FOUNDATION_EXPORT double jsinspector_modernVersionNumber; FOUNDATION_EXPORT const unsigned char jsinspector_modernVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsinspector" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/.." "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsinspector-modern PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector.modulemap ================================================ module jsinspector_modern { umbrella header "React-jsinspector-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsinspector/React-jsinspector.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-jsinspector" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_TARGET_SRCROOT)/.." "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/jsinspector-modern PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsitracing/React-jsitracing.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsitracing FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_TARGET_SRCROOT}/../.." OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/hermes/executor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-jsitracing/React-jsitracing.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-jsitracing FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_TARGET_SRCROOT}/../.." OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/hermes/executor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-logger/React-logger-dummy.m ================================================ #import @interface PodsDummy_React_logger : NSObject @end @implementation PodsDummy_React_logger @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-logger/React-logger-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-logger/React-logger.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-logger GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-logger" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/glog" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/logger PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-logger/React-logger.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-logger GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-logger" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/glog" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/logger PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-nativeconfig/React-nativeconfig-dummy.m ================================================ #import @interface PodsDummy_React_nativeconfig : NSObject @end @implementation PodsDummy_React_nativeconfig @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-nativeconfig/React-nativeconfig-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-nativeconfig/React-nativeconfig.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-nativeconfig" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-nativeconfig" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-nativeconfig/React-nativeconfig.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-nativeconfig" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-nativeconfig" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-perflogger/React-perflogger-dummy.m ================================================ #import @interface PodsDummy_React_perflogger : NSObject @end @implementation PodsDummy_React_perflogger @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-perflogger/React-perflogger-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-perflogger/React-perflogger.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-perflogger" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-perflogger" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/reactperflogger PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-perflogger/React-perflogger.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-perflogger GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-perflogger" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React-perflogger" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/reactperflogger PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug-dummy.m ================================================ #import @interface PodsDummy_React_rendererdebug : NSObject @end @implementation PodsDummy_React_rendererdebug @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/renderer/debug/DebugStringConvertible.h" #import "react/renderer/debug/DebugStringConvertibleItem.h" #import "react/renderer/debug/debugStringConvertibleUtils.h" #import "react/renderer/debug/flags.h" #import "react/renderer/debug/SystraceSection.h" FOUNDATION_EXPORT double react_renderer_debugVersionNumber; FOUNDATION_EXPORT const unsigned char react_renderer_debugVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-rendererdebug" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/debug PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug.modulemap ================================================ module react_renderer_debug { umbrella header "React-rendererdebug-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rendererdebug/React-rendererdebug.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-rendererdebug" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/debug PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rncore/React-rncore.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-rncore GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/ReactCommon" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-rncore/React-rncore.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-rncore GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/ReactCommon" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimeexecutor/React-runtimeexecutor.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/runtimeexecutor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimeexecutor/React-runtimeexecutor.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/runtimeexecutor PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimescheduler/React-runtimescheduler-dummy.m ================================================ #import @interface PodsDummy_React_runtimescheduler : NSObject @end @implementation PodsDummy_React_runtimescheduler @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimescheduler/React-runtimescheduler-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimescheduler/React-runtimescheduler.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-runtimescheduler" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-runtimescheduler/React-runtimescheduler.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-runtimescheduler" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils-dummy.m ================================================ #import @interface PodsDummy_React_utils : NSObject @end @implementation PodsDummy_React_utils @end ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/utils/ContextContainer.h" #import "react/utils/CoreFeatures.h" #import "react/utils/FloatComparison.h" #import "react/utils/fnv1a.h" #import "react/utils/hash_combine.h" #import "react/utils/jsi.h" #import "react/utils/ManagedObjectWrapper.h" #import "react/utils/PackTraits.h" #import "react/utils/RunLoopObserver.h" #import "react/utils/SharedFunction.h" #import "react/utils/SimpleThreadSafeCache.h" #import "react/utils/Telemetry.h" #import "react/utils/to_underlying.h" FOUNDATION_EXPORT double react_utilsVersionNumber; FOUNDATION_EXPORT const unsigned char react_utilsVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-utils DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-utils" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/utils PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils.modulemap ================================================ module react_utils { umbrella header "React-utils-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/React-utils/React-utils.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/React-utils DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/React-utils" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/RCT-Folly" "$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/react/utils PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon-dummy.m ================================================ #import @interface PodsDummy_ReactCommon : NSObject @end @implementation PodsDummy_ReactCommon @end ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "react/bridging/Array.h" #import "react/bridging/AString.h" #import "react/bridging/Base.h" #import "react/bridging/Bool.h" #import "react/bridging/Bridging.h" #import "react/bridging/CallbackWrapper.h" #import "react/bridging/Class.h" #import "react/bridging/Convert.h" #import "react/bridging/Dynamic.h" #import "react/bridging/Error.h" #import "react/bridging/Function.h" #import "react/bridging/LongLivedObject.h" #import "react/bridging/Number.h" #import "react/bridging/Object.h" #import "react/bridging/Promise.h" #import "react/bridging/Value.h" #import "ReactCommon/CallbackWrapper.h" #import "ReactCommon/CxxTurboModuleUtils.h" #import "ReactCommon/LongLivedObject.h" #import "ReactCommon/TurboCxxModule.h" #import "ReactCommon/TurboModule.h" #import "ReactCommon/TurboModuleBinding.h" #import "ReactCommon/TurboModulePerfLogger.h" #import "ReactCommon/TurboModuleUtils.h" FOUNDATION_EXPORT double ReactCommonVersionNumber; FOUNDATION_EXPORT const unsigned char ReactCommonVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ReactCommon" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers" "$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon.modulemap ================================================ module ReactCommon { umbrella header "ReactCommon-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/ReactCommon/ReactCommon.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_WARN_PEDANTIC = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ReactCommon" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/boost" "$(PODS_ROOT)/RCT-Folly" "$(PODS_ROOT)/DoubleConversion" "$(PODS_ROOT)/fmt/include" "$(PODS_ROOT)/Headers/Private/React-Core" "$(PODS_TARGET_SRCROOT)/ReactCommon" "$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers" "$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/SocketRocket/SocketRocket-dummy.m ================================================ #import @interface PodsDummy_SocketRocket : NSObject @end @implementation PodsDummy_SocketRocket @end ================================================ FILE: native/iosTest/Pods/Target Support Files/SocketRocket/SocketRocket-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/SocketRocket/SocketRocket.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SocketRocket" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SocketRocket" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SocketRocket PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/SocketRocket/SocketRocket.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SocketRocket" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SocketRocket" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SocketRocket PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/WatermelonDB/WatermelonDB-dummy.m ================================================ #import @interface PodsDummy_WatermelonDB : NSObject @end @implementation PodsDummy_WatermelonDB @end ================================================ FILE: native/iosTest/Pods/Target Support Files/WatermelonDB/WatermelonDB-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/WatermelonDB/WatermelonDB.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/WatermelonDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../.. PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/WatermelonDB/WatermelonDB.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/WatermelonDB FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/WatermelonDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/RCT-Folly" "${PODS_ROOT}/Headers/Public/RCTDeprecation" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/React-Codegen" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-Fabric" "${PODS_ROOT}/Headers/Public/React-FabricImage" "${PODS_ROOT}/Headers/Public/React-ImageManager" "${PODS_ROOT}/Headers/Public/React-NativeModulesApple" "${PODS_ROOT}/Headers/Public/React-RCTAnimation" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-callinvoker" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-debug" "${PODS_ROOT}/Headers/Public/React-featureflags" "${PODS_ROOT}/Headers/Public/React-graphics" "${PODS_ROOT}/Headers/Public/React-hermes" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/React-logger" "${PODS_ROOT}/Headers/Public/React-perflogger" "${PODS_ROOT}/Headers/Public/React-rendererdebug" "${PODS_ROOT}/Headers/Public/React-runtimeexecutor" "${PODS_ROOT}/Headers/Public/React-runtimescheduler" "${PODS_ROOT}/Headers/Public/React-utils" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/SocketRocket" "${PODS_ROOT}/Headers/Public/WatermelonDB" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/fmt" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/hermes-engine" "${PODS_ROOT}/Headers/Public/simdjson" OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/DoubleConversion/DoubleConversion.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React/React-Core.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/ReactCommon/ReactCommon.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Codegen/React-Codegen.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_Fabric/React-Fabric.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/folly/RCT-Folly.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/glog/glog.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsi/React-jsi.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/jsinspector_modern/React-jsinspector.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_debug/React-debug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_featureflags/React-featureflags.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_graphics/React-graphics.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/react_utils/React-utils.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/simdjson/simdjson.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/yoga/Yoga.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../.. PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga-dummy.m ================================================ #import @interface PodsDummy_Yoga : NSObject @end @implementation PodsDummy_Yoga @end ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "yoga/YGConfig.h" #import "yoga/YGEnums.h" #import "yoga/YGMacros.h" #import "yoga/YGNode.h" #import "yoga/YGNodeLayout.h" #import "yoga/YGNodeStyle.h" #import "yoga/YGPixelGrid.h" #import "yoga/YGValue.h" #import "yoga/Yoga.h" FOUNDATION_EXPORT double yogaVersionNumber; FOUNDATION_EXPORT const unsigned char yogaVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Yoga DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Yoga" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Yoga" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/yoga PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga.modulemap ================================================ module yoga { umbrella header "Yoga-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/Yoga/Yoga.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Yoga DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Yoga" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Yoga" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/react-native/ReactCommon/yoga PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/boost/boost.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/boost GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/boost PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/boost/boost.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/boost GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/boost PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/fmt/fmt-dummy.m ================================================ #import @interface PodsDummy_fmt : NSObject @end @implementation PodsDummy_fmt @end ================================================ FILE: native/iosTest/Pods/Target Support Files/fmt/fmt-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/fmt/fmt.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/fmt GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/fmt" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/fmt" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/fmt PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/fmt/fmt.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/fmt GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/fmt" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/fmt" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/fmt PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog-dummy.m ================================================ #import @interface PodsDummy_glog : NSObject @end @implementation PodsDummy_glog @end ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "glog/logging.h" #import "glog/log_severity.h" #import "glog/raw_logging.h" #import "glog/stl_logging.h" #import "glog/vlog_is_on.h" FOUNDATION_EXPORT double glogVersionNumber; FOUNDATION_EXPORT const unsigned char glogVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/glog DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/glog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/glog" $(PODS_TARGET_SRCROOT)/src PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/glog PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog.modulemap ================================================ module glog { umbrella header "glog-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/glog/glog.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/glog DEFINES_MODULE = YES GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/glog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/glog" $(PODS_TARGET_SRCROOT)/src PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/glog PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_HEADERMAP = NO USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/hermes-engine/hermes-engine-xcframeworks-input-files.xcfilelist ================================================ ${PODS_ROOT}/Target Support Files/hermes-engine/hermes-engine-xcframeworks.sh ${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework ================================================ FILE: native/iosTest/Pods/Target Support Files/hermes-engine/hermes-engine-xcframeworks-output-files.xcfilelist ================================================ ${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework ================================================ FILE: native/iosTest/Pods/Target Support Files/hermes-engine/hermes-engine-xcframeworks.sh ================================================ #!/bin/sh set -e set -u set -o pipefail function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") variant_for_slice() { case "$1" in "hermes.xcframework/ios-arm64") echo "" ;; "hermes.xcframework/ios-arm64_x86_64-maccatalyst") echo "maccatalyst" ;; "hermes.xcframework/ios-arm64_x86_64-simulator") echo "simulator" ;; "hermes.xcframework/xros-arm64") echo "" ;; "hermes.xcframework/xros-arm64-simulator") echo "simulator" ;; esac } archs_for_slice() { case "$1" in "hermes.xcframework/ios-arm64") echo "arm64" ;; "hermes.xcframework/ios-arm64_x86_64-maccatalyst") echo "arm64 x86_64" ;; "hermes.xcframework/ios-arm64_x86_64-simulator") echo "arm64 x86_64" ;; "hermes.xcframework/xros-arm64") echo "arm64" ;; "hermes.xcframework/xros-arm64-simulator") echo "arm64" ;; esac } copy_dir() { local source="$1" local destination="$2" # Use filter instead of exclude so missing patterns don't throw errors. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" \"${source}*\" \"${destination}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}"/* "${destination}" } SELECT_SLICE_RETVAL="" select_slice() { local xcframework_name="$1" xcframework_name="${xcframework_name##*/}" local paths=("${@:2}") # Locate the correct slice of the .xcframework for the current architectures local target_path="" # Split archs on space so we can find a slice that has all the needed archs local target_archs=$(echo $ARCHS | tr " " "\n") local target_variant="" if [[ "$PLATFORM_NAME" == *"simulator" ]]; then target_variant="simulator" fi if [[ ! -z ${EFFECTIVE_PLATFORM_NAME+x} && "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then target_variant="maccatalyst" fi for i in ${!paths[@]}; do local matched_all_archs="1" local slice_archs="$(archs_for_slice "${xcframework_name}/${paths[$i]}")" local slice_variant="$(variant_for_slice "${xcframework_name}/${paths[$i]}")" for target_arch in $target_archs; do if ! [[ "${slice_variant}" == "$target_variant" ]]; then matched_all_archs="0" break fi if ! echo "${slice_archs}" | tr " " "\n" | grep -F -q -x "$target_arch"; then matched_all_archs="0" break fi done if [[ "$matched_all_archs" == "1" ]]; then # Found a matching slice echo "Selected xcframework slice ${paths[$i]}" SELECT_SLICE_RETVAL=${paths[$i]} break fi done } install_xcframework() { local basepath="$1" local name="$2" local package_type="$3" local paths=("${@:4}") # Locate the correct slice of the .xcframework for the current architectures select_slice "${basepath}" "${paths[@]}" local target_path="$SELECT_SLICE_RETVAL" if [[ -z "$target_path" ]]; then echo "warning: [CP] $(basename ${basepath}): Unable to find matching slice in '${paths[@]}' for the current build architectures ($ARCHS) and platform (${EFFECTIVE_PLATFORM_NAME-${PLATFORM_NAME}})." return fi local source="$basepath/$target_path" local destination="${PODS_XCFRAMEWORKS_BUILD_DIR}/${name}" if [ ! -d "$destination" ]; then mkdir -p "$destination" fi copy_dir "$source/" "$destination" echo "Copied $source to $destination" } install_xcframework "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework" "hermes-engine/Pre-built" "framework" "ios-arm64" "ios-arm64_x86_64-maccatalyst" "ios-arm64_x86_64-simulator" ================================================ FILE: native/iosTest/Pods/Target Support Files/hermes-engine/hermes-engine.debug.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_CXX_LIBRARY = compiler-default CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/hermes-engine FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/hermes-engine" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/hermes-engine" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/hermes-engine PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/hermes-engine/hermes-engine.release.xcconfig ================================================ CLANG_CXX_LANGUAGE_STANDARD = c++20 CLANG_CXX_LIBRARY = compiler-default CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/hermes-engine FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/universal" "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/hermes-engine" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/hermes-engine" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/hermes-engine PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson-dummy.m ================================================ #import @interface PodsDummy_simdjson : NSObject @end @implementation PodsDummy_simdjson @end ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson-prefix.pch ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson-umbrella.h ================================================ #ifdef __OBJC__ #import #else #ifndef FOUNDATION_EXPORT #if defined(__cplusplus) #define FOUNDATION_EXPORT extern "C" #else #define FOUNDATION_EXPORT extern #endif #endif #endif #import "simdjson.h" FOUNDATION_EXPORT double simdjsonVersionNumber; FOUNDATION_EXPORT const unsigned char simdjsonVersionString[]; ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson.debug.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/simdjson GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/simdjson" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/@nozbe/simdjson PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson.modulemap ================================================ module simdjson { umbrella header "simdjson-umbrella.h" export * module * { export * } } ================================================ FILE: native/iosTest/Pods/Target Support Files/simdjson/simdjson.release.xcconfig ================================================ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/simdjson GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/simdjson" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../../node_modules/@nozbe/simdjson PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES ================================================ FILE: native/iosTest/Pods/fmt/LICENSE.rst ================================================ Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. ================================================ FILE: native/iosTest/Pods/fmt/README.rst ================================================ .. image:: https://user-images.githubusercontent.com/ 576385/156254208-f5b743a9-88cf-439d-b0c0-923d53e8d551.png :width: 25% :alt: {fmt} .. image:: https://github.com/fmtlib/fmt/workflows/linux/badge.svg :target: https://github.com/fmtlib/fmt/actions?query=workflow%3Alinux .. image:: https://github.com/fmtlib/fmt/workflows/macos/badge.svg :target: https://github.com/fmtlib/fmt/actions?query=workflow%3Amacos .. image:: https://github.com/fmtlib/fmt/workflows/windows/badge.svg :target: https://github.com/fmtlib/fmt/actions?query=workflow%3Awindows .. image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/fmt.svg :alt: fmt is continuously fuzzed at oss-fuzz :target: https://bugs.chromium.org/p/oss-fuzz/issues/list?\ colspec=ID%20Type%20Component%20Status%20Proj%20Reported%20Owner%20\ Summary&q=proj%3Dfmt&can=1 .. image:: https://img.shields.io/badge/stackoverflow-fmt-blue.svg :alt: Ask questions at StackOverflow with the tag fmt :target: https://stackoverflow.com/questions/tagged/fmt **{fmt}** is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams. If you like this project, please consider donating to one of the funds that help victims of the war in Ukraine: https://www.stopputin.net/. `Documentation `__ `Cheat Sheets `__ Q&A: ask questions on `StackOverflow with the tag fmt `_. Try {fmt} in `Compiler Explorer `_. Features -------- * Simple `format API `_ with positional arguments for localization * Implementation of `C++20 std::format `__ * `Format string syntax `_ similar to Python's `format `_ * Fast IEEE 754 floating-point formatter with correct rounding, shortness and round-trip guarantees * Safe `printf implementation `_ including the POSIX extension for positional arguments * Extensibility: `support for user-defined types `_ * High performance: faster than common standard library implementations of ``(s)printf``, iostreams, ``to_string`` and ``to_chars``, see `Speed tests`_ and `Converting a hundred million integers to strings per second `_ * Small code size both in terms of source code with the minimum configuration consisting of just three files, ``core.h``, ``format.h`` and ``format-inl.h``, and compiled code; see `Compile time and code bloat`_ * Reliability: the library has an extensive set of `tests `_ and is `continuously fuzzed `_ * Safety: the library is fully type safe, errors in format strings can be reported at compile time, automatic memory management prevents buffer overflow errors * Ease of use: small self-contained code base, no external dependencies, permissive MIT `license `_ * `Portability `_ with consistent output across platforms and support for older compilers * Clean warning-free codebase even on high warning levels such as ``-Wall -Wextra -pedantic`` * Locale-independence by default * Optional header-only configuration enabled with the ``FMT_HEADER_ONLY`` macro See the `documentation `_ for more details. Examples -------- **Print to stdout** (`run `_) .. code:: c++ #include int main() { fmt::print("Hello, world!\n"); } **Format a string** (`run `_) .. code:: c++ std::string s = fmt::format("The answer is {}.", 42); // s == "The answer is 42." **Format a string using positional arguments** (`run `_) .. code:: c++ std::string s = fmt::format("I'd rather be {1} than {0}.", "right", "happy"); // s == "I'd rather be happy than right." **Print chrono durations** (`run `_) .. code:: c++ #include int main() { using namespace std::literals::chrono_literals; fmt::print("Default format: {} {}\n", 42s, 100ms); fmt::print("strftime-like format: {:%H:%M:%S}\n", 3h + 15min + 30s); } Output:: Default format: 42s 100ms strftime-like format: 03:15:30 **Print a container** (`run `_) .. code:: c++ #include #include int main() { std::vector v = {1, 2, 3}; fmt::print("{}\n", v); } Output:: [1, 2, 3] **Check a format string at compile time** .. code:: c++ std::string s = fmt::format("{:d}", "I am not a number"); This gives a compile-time error in C++20 because ``d`` is an invalid format specifier for a string. **Write a file from a single thread** .. code:: c++ #include int main() { auto out = fmt::output_file("guide.txt"); out.print("Don't {}", "Panic"); } This can be `5 to 9 times faster than fprintf `_. **Print with colors and text styles** .. code:: c++ #include int main() { fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold, "Hello, {}!\n", "world"); fmt::print(fg(fmt::color::floral_white) | bg(fmt::color::slate_gray) | fmt::emphasis::underline, "Hello, {}!\n", "мир"); fmt::print(fg(fmt::color::steel_blue) | fmt::emphasis::italic, "Hello, {}!\n", "世界"); } Output on a modern terminal: .. image:: https://user-images.githubusercontent.com/ 576385/88485597-d312f600-cf2b-11ea-9cbe-61f535a86e28.png Benchmarks ---------- Speed tests ~~~~~~~~~~~ ================= ============= =========== Library Method Run Time, s ================= ============= =========== libc printf 1.04 libc++ std::ostream 3.05 {fmt} 6.1.1 fmt::print 0.75 Boost Format 1.67 boost::format 7.24 Folly Format folly::format 2.23 ================= ============= =========== {fmt} is the fastest of the benchmarked methods, ~35% faster than ``printf``. The above results were generated by building ``tinyformat_test.cpp`` on macOS 10.14.6 with ``clang++ -O3 -DNDEBUG -DSPEED_TEST -DHAVE_FORMAT``, and taking the best of three runs. In the test, the format string ``"%0.10f:%04d:%+g:%s:%p:%c:%%\n"`` or equivalent is filled 2,000,000 times with output sent to ``/dev/null``; for further details refer to the `source `_. {fmt} is up to 20-30x faster than ``std::ostringstream`` and ``sprintf`` on floating-point formatting (`dtoa-benchmark `_) and faster than `double-conversion `_ and `ryu `_: .. image:: https://user-images.githubusercontent.com/576385/ 95684665-11719600-0ba8-11eb-8e5b-972ff4e49428.png :target: https://fmt.dev/unknown_mac64_clang12.0.html Compile time and code bloat ~~~~~~~~~~~~~~~~~~~~~~~~~~~ The script `bloat-test.py `_ from `format-benchmark `_ tests compile time and code bloat for nontrivial projects. It generates 100 translation units and uses ``printf()`` or its alternative five times in each to simulate a medium sized project. The resulting executable size and compile time (Apple LLVM version 8.1.0 (clang-802.0.42), macOS Sierra, best of three) is shown in the following tables. **Optimized build (-O3)** ============= =============== ==================== ================== Method Compile Time, s Executable size, KiB Stripped size, KiB ============= =============== ==================== ================== printf 2.6 29 26 printf+string 16.4 29 26 iostreams 31.1 59 55 {fmt} 19.0 37 34 Boost Format 91.9 226 203 Folly Format 115.7 101 88 ============= =============== ==================== ================== As you can see, {fmt} has 60% less overhead in terms of resulting binary code size compared to iostreams and comes pretty close to ``printf``. Boost Format and Folly Format have the largest overheads. ``printf+string`` is the same as ``printf`` but with extra ```` include to measure the overhead of the latter. **Non-optimized build** ============= =============== ==================== ================== Method Compile Time, s Executable size, KiB Stripped size, KiB ============= =============== ==================== ================== printf 2.2 33 30 printf+string 16.0 33 30 iostreams 28.3 56 52 {fmt} 18.2 59 50 Boost Format 54.1 365 303 Folly Format 79.9 445 430 ============= =============== ==================== ================== ``libc``, ``lib(std)c++`` and ``libfmt`` are all linked as shared libraries to compare formatting function overhead only. Boost Format is a header-only library so it doesn't provide any linkage options. Running the tests ~~~~~~~~~~~~~~~~~ Please refer to `Building the library`__ for the instructions on how to build the library and run the unit tests. __ https://fmt.dev/latest/usage.html#building-the-library Benchmarks reside in a separate repository, `format-benchmarks `_, so to run the benchmarks you first need to clone this repository and generate Makefiles with CMake:: $ git clone --recursive https://github.com/fmtlib/format-benchmark.git $ cd format-benchmark $ cmake . Then you can run the speed test:: $ make speed-test or the bloat test:: $ make bloat-test Migrating code -------------- `clang-tidy-fmt `_ provides clang tidy checks for converting occurrences of ``printf`` and ``fprintf`` to ``fmt::print``. Projects using this library --------------------------- * `0 A.D. `_: a free, open-source, cross-platform real-time strategy game * `2GIS `_: free business listings with a city map * `AMPL/MP `_: an open-source library for mathematical programming * `Aseprite `_: animated sprite editor & pixel art tool * `AvioBook `_: a comprehensive aircraft operations suite * `Blizzard Battle.net `_: an online gaming platform * `Celestia `_: real-time 3D visualization of space * `Ceph `_: a scalable distributed storage system * `ccache `_: a compiler cache * `ClickHouse `_: analytical database management system * `CUAUV `_: Cornell University's autonomous underwater vehicle * `Drake `_: a planning, control, and analysis toolbox for nonlinear dynamical systems (MIT) * `Envoy `_: C++ L7 proxy and communication bus (Lyft) * `FiveM `_: a modification framework for GTA V * `fmtlog `_: a performant fmtlib-style logging library with latency in nanoseconds * `Folly `_: Facebook open-source library * `GemRB `_: a portable open-source implementation of Bioware’s Infinity Engine * `Grand Mountain Adventure `_: a beautiful open-world ski & snowboarding game * `HarpyWar/pvpgn `_: Player vs Player Gaming Network with tweaks * `KBEngine `_: an open-source MMOG server engine * `Keypirinha `_: a semantic launcher for Windows * `Kodi `_ (formerly xbmc): home theater software * `Knuth `_: high-performance Bitcoin full-node * `Microsoft Verona `_: research programming language for concurrent ownership * `MongoDB `_: distributed document database * `MongoDB Smasher `_: a small tool to generate randomized datasets * `OpenSpace `_: an open-source astrovisualization framework * `PenUltima Online (POL) `_: an MMO server, compatible with most Ultima Online clients * `PyTorch `_: an open-source machine learning library * `quasardb `_: a distributed, high-performance, associative database * `Quill `_: asynchronous low-latency logging library * `QKW `_: generalizing aliasing to simplify navigation, and executing complex multi-line terminal command sequences * `redis-cerberus `_: a Redis cluster proxy * `redpanda `_: a 10x faster Kafka® replacement for mission critical systems written in C++ * `rpclib `_: a modern C++ msgpack-RPC server and client library * `Salesforce Analytics Cloud `_: business intelligence software * `Scylla `_: a Cassandra-compatible NoSQL data store that can handle 1 million transactions per second on a single server * `Seastar `_: an advanced, open-source C++ framework for high-performance server applications on modern hardware * `spdlog `_: super fast C++ logging library * `Stellar `_: financial platform * `Touch Surgery `_: surgery simulator * `TrinityCore `_: open-source MMORPG framework * `Windows Terminal `_: the new Windows terminal `More... `_ If you are aware of other projects using this library, please let me know by `email `_ or by submitting an `issue `_. Motivation ---------- So why yet another formatting library? There are plenty of methods for doing this task, from standard ones like the printf family of function and iostreams to Boost Format and FastFormat libraries. The reason for creating a new library is that every existing solution that I found either had serious issues or didn't provide all the features I needed. printf ~~~~~~ The good thing about ``printf`` is that it is pretty fast and readily available being a part of the C standard library. The main drawback is that it doesn't support user-defined types. ``printf`` also has safety issues although they are somewhat mitigated with `__attribute__ ((format (printf, ...)) `_ in GCC. There is a POSIX extension that adds positional arguments required for `i18n `_ to ``printf`` but it is not a part of C99 and may not be available on some platforms. iostreams ~~~~~~~~~ The main issue with iostreams is best illustrated with an example: .. code:: c++ std::cout << std::setprecision(2) << std::fixed << 1.23456 << "\n"; which is a lot of typing compared to printf: .. code:: c++ printf("%.2f\n", 1.23456); Matthew Wilson, the author of FastFormat, called this "chevron hell". iostreams don't support positional arguments by design. The good part is that iostreams support user-defined types and are safe although error handling is awkward. Boost Format ~~~~~~~~~~~~ This is a very powerful library which supports both ``printf``-like format strings and positional arguments. Its main drawback is performance. According to various benchmarks, it is much slower than other methods considered here. Boost Format also has excessive build times and severe code bloat issues (see `Benchmarks`_). FastFormat ~~~~~~~~~~ This is an interesting library which is fast, safe and has positional arguments. However, it has significant limitations, citing its author: Three features that have no hope of being accommodated within the current design are: * Leading zeros (or any other non-space padding) * Octal/hexadecimal encoding * Runtime width/alignment specification It is also quite big and has a heavy dependency, STLSoft, which might be too restrictive for using it in some projects. Boost Spirit.Karma ~~~~~~~~~~~~~~~~~~ This is not really a formatting library but I decided to include it here for completeness. As iostreams, it suffers from the problem of mixing verbatim text with arguments. The library is pretty fast, but slower on integer formatting than ``fmt::format_to`` with format string compilation on Karma's own benchmark, see `Converting a hundred million integers to strings per second `_. License ------- {fmt} is distributed under the MIT `license `_. Documentation License --------------------- The `Format String Syntax `_ section in the documentation is based on the one from Python `string module documentation `_. For this reason the documentation is distributed under the Python Software Foundation license available in `doc/python-license.txt `_. It only applies if you distribute the documentation of {fmt}. Maintainers ----------- The {fmt} library is maintained by Victor Zverovich (`vitaut `_) and Jonathan Müller (`foonathan `_) with contributions from many other people. See `Contributors `_ and `Releases `_ for some of the names. Let us know if your contribution is not listed or mentioned incorrectly and we'll make it right. ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/args.h ================================================ // Formatting library for C++ - dynamic format arguments // // Copyright (c) 2012 - present, Victor Zverovich // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_ARGS_H_ #define FMT_ARGS_H_ #include // std::reference_wrapper #include // std::unique_ptr #include #include "core.h" FMT_BEGIN_NAMESPACE namespace detail { template struct is_reference_wrapper : std::false_type {}; template struct is_reference_wrapper> : std::true_type {}; template const T& unwrap(const T& v) { return v; } template const T& unwrap(const std::reference_wrapper& v) { return static_cast(v); } class dynamic_arg_list { // Workaround for clang's -Wweak-vtables. Unlike for regular classes, for // templates it doesn't complain about inability to deduce single translation // unit for placing vtable. So storage_node_base is made a fake template. template struct node { virtual ~node() = default; std::unique_ptr> next; }; template struct typed_node : node<> { T value; template FMT_CONSTEXPR typed_node(const Arg& arg) : value(arg) {} template FMT_CONSTEXPR typed_node(const basic_string_view& arg) : value(arg.data(), arg.size()) {} }; std::unique_ptr> head_; public: template const T& push(const Arg& arg) { auto new_node = std::unique_ptr>(new typed_node(arg)); auto& value = new_node->value; new_node->next = std::move(head_); head_ = std::move(new_node); return value; } }; } // namespace detail /** \rst A dynamic version of `fmt::format_arg_store`. It's equipped with a storage to potentially temporary objects which lifetimes could be shorter than the format arguments object. It can be implicitly converted into `~fmt::basic_format_args` for passing into type-erased formatting functions such as `~fmt::vformat`. \endrst */ template class dynamic_format_arg_store #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 // Workaround a GCC template argument substitution bug. : public basic_format_args #endif { private: using char_type = typename Context::char_type; template struct need_copy { static constexpr detail::type mapped_type = detail::mapped_type_constant::value; enum { value = !(detail::is_reference_wrapper::value || std::is_same>::value || std::is_same>::value || (mapped_type != detail::type::cstring_type && mapped_type != detail::type::string_type && mapped_type != detail::type::custom_type)) }; }; template using stored_type = conditional_t< std::is_convertible>::value && !detail::is_reference_wrapper::value, std::basic_string, T>; // Storage of basic_format_arg must be contiguous. std::vector> data_; std::vector> named_info_; // Storage of arguments not fitting into basic_format_arg must grow // without relocation because items in data_ refer to it. detail::dynamic_arg_list dynamic_args_; friend class basic_format_args; unsigned long long get_types() const { return detail::is_unpacked_bit | data_.size() | (named_info_.empty() ? 0ULL : static_cast(detail::has_named_args_bit)); } const basic_format_arg* data() const { return named_info_.empty() ? data_.data() : data_.data() + 1; } template void emplace_arg(const T& arg) { data_.emplace_back(detail::make_arg(arg)); } template void emplace_arg(const detail::named_arg& arg) { if (named_info_.empty()) { constexpr const detail::named_arg_info* zero_ptr{nullptr}; data_.insert(data_.begin(), {zero_ptr, 0}); } data_.emplace_back(detail::make_arg(detail::unwrap(arg.value))); auto pop_one = [](std::vector>* data) { data->pop_back(); }; std::unique_ptr>, decltype(pop_one)> guard{&data_, pop_one}; named_info_.push_back({arg.name, static_cast(data_.size() - 2u)}); data_[0].value_.named_args = {named_info_.data(), named_info_.size()}; guard.release(); } public: constexpr dynamic_format_arg_store() = default; /** \rst Adds an argument into the dynamic store for later passing to a formatting function. Note that custom types and string types (but not string views) are copied into the store dynamically allocating memory if necessary. **Example**:: fmt::dynamic_format_arg_store store; store.push_back(42); store.push_back("abc"); store.push_back(1.5f); std::string result = fmt::vformat("{} and {} and {}", store); \endrst */ template void push_back(const T& arg) { if (detail::const_check(need_copy::value)) emplace_arg(dynamic_args_.push>(arg)); else emplace_arg(detail::unwrap(arg)); } /** \rst Adds a reference to the argument into the dynamic store for later passing to a formatting function. **Example**:: fmt::dynamic_format_arg_store store; char band[] = "Rolling Stones"; store.push_back(std::cref(band)); band[9] = 'c'; // Changing str affects the output. std::string result = fmt::vformat("{}", store); // result == "Rolling Scones" \endrst */ template void push_back(std::reference_wrapper arg) { static_assert( need_copy::value, "objects of built-in types and string views are always copied"); emplace_arg(arg.get()); } /** Adds named argument into the dynamic store for later passing to a formatting function. ``std::reference_wrapper`` is supported to avoid copying of the argument. The name is always copied into the store. */ template void push_back(const detail::named_arg& arg) { const char_type* arg_name = dynamic_args_.push>(arg.name).c_str(); if (detail::const_check(need_copy::value)) { emplace_arg( fmt::arg(arg_name, dynamic_args_.push>(arg.value))); } else { emplace_arg(fmt::arg(arg_name, arg.value)); } } /** Erase all elements from the store */ void clear() { data_.clear(); named_info_.clear(); dynamic_args_ = detail::dynamic_arg_list(); } /** \rst Reserves space to store at least *new_cap* arguments including *new_cap_named* named arguments. \endrst */ void reserve(size_t new_cap, size_t new_cap_named) { FMT_ASSERT(new_cap >= new_cap_named, "Set of arguments includes set of named arguments"); data_.reserve(new_cap); named_info_.reserve(new_cap_named); } }; FMT_END_NAMESPACE #endif // FMT_ARGS_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/chrono.h ================================================ // Formatting library for C++ - chrono support // // Copyright (c) 2012 - present, Victor Zverovich // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_CHRONO_H_ #define FMT_CHRONO_H_ #include #include #include // std::isfinite #include // std::memcpy #include #include #include #include #include #include "format.h" FMT_BEGIN_NAMESPACE // Enable tzset. #ifndef FMT_USE_TZSET // UWP doesn't provide _tzset. # if FMT_HAS_INCLUDE("winapifamily.h") # include # endif # if defined(_WIN32) && (!defined(WINAPI_FAMILY) || \ (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)) # define FMT_USE_TZSET 1 # else # define FMT_USE_TZSET 0 # endif #endif // Enable safe chrono durations, unless explicitly disabled. #ifndef FMT_SAFE_DURATION_CAST # define FMT_SAFE_DURATION_CAST 1 #endif #if FMT_SAFE_DURATION_CAST // For conversion between std::chrono::durations without undefined // behaviour or erroneous results. // This is a stripped down version of duration_cast, for inclusion in fmt. // See https://github.com/pauldreik/safe_duration_cast // // Copyright Paul Dreik 2019 namespace safe_duration_cast { template ::value && std::numeric_limits::is_signed == std::numeric_limits::is_signed)> FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { ec = 0; using F = std::numeric_limits; using T = std::numeric_limits; static_assert(F::is_integer, "From must be integral"); static_assert(T::is_integer, "To must be integral"); // A and B are both signed, or both unsigned. if (detail::const_check(F::digits <= T::digits)) { // From fits in To without any problem. } else { // From does not always fit in To, resort to a dynamic check. if (from < (T::min)() || from > (T::max)()) { // outside range. ec = 1; return {}; } } return static_cast(from); } /** * converts From to To, without loss. If the dynamic value of from * can't be converted to To without loss, ec is set. */ template ::value && std::numeric_limits::is_signed != std::numeric_limits::is_signed)> FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { ec = 0; using F = std::numeric_limits; using T = std::numeric_limits; static_assert(F::is_integer, "From must be integral"); static_assert(T::is_integer, "To must be integral"); if (detail::const_check(F::is_signed && !T::is_signed)) { // From may be negative, not allowed! if (fmt::detail::is_negative(from)) { ec = 1; return {}; } // From is positive. Can it always fit in To? if (detail::const_check(F::digits > T::digits) && from > static_cast(detail::max_value())) { ec = 1; return {}; } } if (detail::const_check(!F::is_signed && T::is_signed && F::digits >= T::digits) && from > static_cast(detail::max_value())) { ec = 1; return {}; } return static_cast(from); // Lossless conversion. } template ::value)> FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { ec = 0; return from; } // function // clang-format off /** * converts From to To if possible, otherwise ec is set. * * input | output * ---------------------------------|--------------- * NaN | NaN * Inf | Inf * normal, fits in output | converted (possibly lossy) * normal, does not fit in output | ec is set * subnormal | best effort * -Inf | -Inf */ // clang-format on template ::value)> FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { ec = 0; using T = std::numeric_limits; static_assert(std::is_floating_point::value, "From must be floating"); static_assert(std::is_floating_point::value, "To must be floating"); // catch the only happy case if (std::isfinite(from)) { if (from >= T::lowest() && from <= (T::max)()) { return static_cast(from); } // not within range. ec = 1; return {}; } // nan and inf will be preserved return static_cast(from); } // function template ::value)> FMT_CONSTEXPR To safe_float_conversion(const From from, int& ec) { ec = 0; static_assert(std::is_floating_point::value, "From must be floating"); return from; } /** * safe duration cast between integral durations */ template ::value), FMT_ENABLE_IF(std::is_integral::value)> To safe_duration_cast(std::chrono::duration from, int& ec) { using From = std::chrono::duration; ec = 0; // the basic idea is that we need to convert from count() in the from type // to count() in the To type, by multiplying it with this: struct Factor : std::ratio_divide {}; static_assert(Factor::num > 0, "num must be positive"); static_assert(Factor::den > 0, "den must be positive"); // the conversion is like this: multiply from.count() with Factor::num // /Factor::den and convert it to To::rep, all this without // overflow/underflow. let's start by finding a suitable type that can hold // both To, From and Factor::num using IntermediateRep = typename std::common_type::type; // safe conversion to IntermediateRep IntermediateRep count = lossless_integral_conversion(from.count(), ec); if (ec) return {}; // multiply with Factor::num without overflow or underflow if (detail::const_check(Factor::num != 1)) { const auto max1 = detail::max_value() / Factor::num; if (count > max1) { ec = 1; return {}; } const auto min1 = (std::numeric_limits::min)() / Factor::num; if (!std::is_unsigned::value && count < min1) { ec = 1; return {}; } count *= Factor::num; } if (detail::const_check(Factor::den != 1)) count /= Factor::den; auto tocount = lossless_integral_conversion(count, ec); return ec ? To() : To(tocount); } /** * safe duration_cast between floating point durations */ template ::value), FMT_ENABLE_IF(std::is_floating_point::value)> To safe_duration_cast(std::chrono::duration from, int& ec) { using From = std::chrono::duration; ec = 0; if (std::isnan(from.count())) { // nan in, gives nan out. easy. return To{std::numeric_limits::quiet_NaN()}; } // maybe we should also check if from is denormal, and decide what to do about // it. // +-inf should be preserved. if (std::isinf(from.count())) { return To{from.count()}; } // the basic idea is that we need to convert from count() in the from type // to count() in the To type, by multiplying it with this: struct Factor : std::ratio_divide {}; static_assert(Factor::num > 0, "num must be positive"); static_assert(Factor::den > 0, "den must be positive"); // the conversion is like this: multiply from.count() with Factor::num // /Factor::den and convert it to To::rep, all this without // overflow/underflow. let's start by finding a suitable type that can hold // both To, From and Factor::num using IntermediateRep = typename std::common_type::type; // force conversion of From::rep -> IntermediateRep to be safe, // even if it will never happen be narrowing in this context. IntermediateRep count = safe_float_conversion(from.count(), ec); if (ec) { return {}; } // multiply with Factor::num without overflow or underflow if (detail::const_check(Factor::num != 1)) { constexpr auto max1 = detail::max_value() / static_cast(Factor::num); if (count > max1) { ec = 1; return {}; } constexpr auto min1 = std::numeric_limits::lowest() / static_cast(Factor::num); if (count < min1) { ec = 1; return {}; } count *= static_cast(Factor::num); } // this can't go wrong, right? den>0 is checked earlier. if (detail::const_check(Factor::den != 1)) { using common_t = typename std::common_type::type; count /= static_cast(Factor::den); } // convert to the to type, safely using ToRep = typename To::rep; const ToRep tocount = safe_float_conversion(count, ec); if (ec) { return {}; } return To{tocount}; } } // namespace safe_duration_cast #endif // Prevents expansion of a preceding token as a function-style macro. // Usage: f FMT_NOMACRO() #define FMT_NOMACRO namespace detail { template struct null {}; inline null<> localtime_r FMT_NOMACRO(...) { return null<>(); } inline null<> localtime_s(...) { return null<>(); } inline null<> gmtime_r(...) { return null<>(); } inline null<> gmtime_s(...) { return null<>(); } inline const std::locale& get_classic_locale() { static const auto& locale = std::locale::classic(); return locale; } template struct codecvt_result { static constexpr const size_t max_size = 32; CodeUnit buf[max_size]; CodeUnit* end; }; template constexpr const size_t codecvt_result::max_size; template void write_codecvt(codecvt_result& out, string_view in_buf, const std::locale& loc) { #if FMT_CLANG_VERSION # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wdeprecated" auto& f = std::use_facet>(loc); # pragma clang diagnostic pop #else auto& f = std::use_facet>(loc); #endif auto mb = std::mbstate_t(); const char* from_next = nullptr; auto result = f.in(mb, in_buf.begin(), in_buf.end(), from_next, std::begin(out.buf), std::end(out.buf), out.end); if (result != std::codecvt_base::ok) FMT_THROW(format_error("failed to format time")); } template auto write_encoded_tm_str(OutputIt out, string_view in, const std::locale& loc) -> OutputIt { if (detail::is_utf8() && loc != get_classic_locale()) { // char16_t and char32_t codecvts are broken in MSVC (linkage errors) and // gcc-4. #if FMT_MSC_VERSION != 0 || \ (defined(__GLIBCXX__) && !defined(_GLIBCXX_USE_DUAL_ABI)) // The _GLIBCXX_USE_DUAL_ABI macro is always defined in libstdc++ from gcc-5 // and newer. using code_unit = wchar_t; #else using code_unit = char32_t; #endif using unit_t = codecvt_result; unit_t unit; write_codecvt(unit, in, loc); // In UTF-8 is used one to four one-byte code units. auto&& buf = basic_memory_buffer(); for (code_unit* p = unit.buf; p != unit.end; ++p) { uint32_t c = static_cast(*p); if (sizeof(code_unit) == 2 && c >= 0xd800 && c <= 0xdfff) { // surrogate pair ++p; if (p == unit.end || (c & 0xfc00) != 0xd800 || (*p & 0xfc00) != 0xdc00) { FMT_THROW(format_error("failed to format time")); } c = (c << 10) + static_cast(*p) - 0x35fdc00; } if (c < 0x80) { buf.push_back(static_cast(c)); } else if (c < 0x800) { buf.push_back(static_cast(0xc0 | (c >> 6))); buf.push_back(static_cast(0x80 | (c & 0x3f))); } else if ((c >= 0x800 && c <= 0xd7ff) || (c >= 0xe000 && c <= 0xffff)) { buf.push_back(static_cast(0xe0 | (c >> 12))); buf.push_back(static_cast(0x80 | ((c & 0xfff) >> 6))); buf.push_back(static_cast(0x80 | (c & 0x3f))); } else if (c >= 0x10000 && c <= 0x10ffff) { buf.push_back(static_cast(0xf0 | (c >> 18))); buf.push_back(static_cast(0x80 | ((c & 0x3ffff) >> 12))); buf.push_back(static_cast(0x80 | ((c & 0xfff) >> 6))); buf.push_back(static_cast(0x80 | (c & 0x3f))); } else { FMT_THROW(format_error("failed to format time")); } } return copy_str(buf.data(), buf.data() + buf.size(), out); } return copy_str(in.data(), in.data() + in.size(), out); } template ::value)> auto write_tm_str(OutputIt out, string_view sv, const std::locale& loc) -> OutputIt { codecvt_result unit; write_codecvt(unit, sv, loc); return copy_str(unit.buf, unit.end, out); } template ::value)> auto write_tm_str(OutputIt out, string_view sv, const std::locale& loc) -> OutputIt { return write_encoded_tm_str(out, sv, loc); } template inline void do_write(buffer& buf, const std::tm& time, const std::locale& loc, char format, char modifier) { auto&& format_buf = formatbuf>(buf); auto&& os = std::basic_ostream(&format_buf); os.imbue(loc); using iterator = std::ostreambuf_iterator; const auto& facet = std::use_facet>(loc); auto end = facet.put(os, os, Char(' '), &time, format, modifier); if (end.failed()) FMT_THROW(format_error("failed to format time")); } template ::value)> auto write(OutputIt out, const std::tm& time, const std::locale& loc, char format, char modifier = 0) -> OutputIt { auto&& buf = get_buffer(out); do_write(buf, time, loc, format, modifier); return buf.out(); } template ::value)> auto write(OutputIt out, const std::tm& time, const std::locale& loc, char format, char modifier = 0) -> OutputIt { auto&& buf = basic_memory_buffer(); do_write(buf, time, loc, format, modifier); return write_encoded_tm_str(out, string_view(buf.data(), buf.size()), loc); } } // namespace detail FMT_MODULE_EXPORT_BEGIN /** Converts given time since epoch as ``std::time_t`` value into calendar time, expressed in local time. Unlike ``std::localtime``, this function is thread-safe on most platforms. */ inline std::tm localtime(std::time_t time) { struct dispatcher { std::time_t time_; std::tm tm_; dispatcher(std::time_t t) : time_(t) {} bool run() { using namespace fmt::detail; return handle(localtime_r(&time_, &tm_)); } bool handle(std::tm* tm) { return tm != nullptr; } bool handle(detail::null<>) { using namespace fmt::detail; return fallback(localtime_s(&tm_, &time_)); } bool fallback(int res) { return res == 0; } #if !FMT_MSC_VERSION bool fallback(detail::null<>) { using namespace fmt::detail; std::tm* tm = std::localtime(&time_); if (tm) tm_ = *tm; return tm != nullptr; } #endif }; dispatcher lt(time); // Too big time values may be unsupported. if (!lt.run()) FMT_THROW(format_error("time_t value out of range")); return lt.tm_; } inline std::tm localtime( std::chrono::time_point time_point) { return localtime(std::chrono::system_clock::to_time_t(time_point)); } /** Converts given time since epoch as ``std::time_t`` value into calendar time, expressed in Coordinated Universal Time (UTC). Unlike ``std::gmtime``, this function is thread-safe on most platforms. */ inline std::tm gmtime(std::time_t time) { struct dispatcher { std::time_t time_; std::tm tm_; dispatcher(std::time_t t) : time_(t) {} bool run() { using namespace fmt::detail; return handle(gmtime_r(&time_, &tm_)); } bool handle(std::tm* tm) { return tm != nullptr; } bool handle(detail::null<>) { using namespace fmt::detail; return fallback(gmtime_s(&tm_, &time_)); } bool fallback(int res) { return res == 0; } #if !FMT_MSC_VERSION bool fallback(detail::null<>) { std::tm* tm = std::gmtime(&time_); if (tm) tm_ = *tm; return tm != nullptr; } #endif }; dispatcher gt(time); // Too big time values may be unsupported. if (!gt.run()) FMT_THROW(format_error("time_t value out of range")); return gt.tm_; } inline std::tm gmtime( std::chrono::time_point time_point) { return gmtime(std::chrono::system_clock::to_time_t(time_point)); } FMT_BEGIN_DETAIL_NAMESPACE // Writes two-digit numbers a, b and c separated by sep to buf. // The method by Pavel Novikov based on // https://johnnylee-sde.github.io/Fast-unsigned-integer-to-time-string/. inline void write_digit2_separated(char* buf, unsigned a, unsigned b, unsigned c, char sep) { unsigned long long digits = a | (b << 24) | (static_cast(c) << 48); // Convert each value to BCD. // We have x = a * 10 + b and we want to convert it to BCD y = a * 16 + b. // The difference is // y - x = a * 6 // a can be found from x: // a = floor(x / 10) // then // y = x + a * 6 = x + floor(x / 10) * 6 // floor(x / 10) is (x * 205) >> 11 (needs 16 bits). digits += (((digits * 205) >> 11) & 0x000f00000f00000f) * 6; // Put low nibbles to high bytes and high nibbles to low bytes. digits = ((digits & 0x00f00000f00000f0) >> 4) | ((digits & 0x000f00000f00000f) << 8); auto usep = static_cast(sep); // Add ASCII '0' to each digit byte and insert separators. digits |= 0x3030003030003030 | (usep << 16) | (usep << 40); constexpr const size_t len = 8; if (const_check(is_big_endian())) { char tmp[len]; std::memcpy(tmp, &digits, len); std::reverse_copy(tmp, tmp + len, buf); } else { std::memcpy(buf, &digits, len); } } template FMT_CONSTEXPR inline const char* get_units() { if (std::is_same::value) return "as"; if (std::is_same::value) return "fs"; if (std::is_same::value) return "ps"; if (std::is_same::value) return "ns"; if (std::is_same::value) return "µs"; if (std::is_same::value) return "ms"; if (std::is_same::value) return "cs"; if (std::is_same::value) return "ds"; if (std::is_same>::value) return "s"; if (std::is_same::value) return "das"; if (std::is_same::value) return "hs"; if (std::is_same::value) return "ks"; if (std::is_same::value) return "Ms"; if (std::is_same::value) return "Gs"; if (std::is_same::value) return "Ts"; if (std::is_same::value) return "Ps"; if (std::is_same::value) return "Es"; if (std::is_same>::value) return "m"; if (std::is_same>::value) return "h"; return nullptr; } enum class numeric_system { standard, // Alternative numeric system, e.g. 十二 instead of 12 in ja_JP locale. alternative }; // Parses a put_time-like format string and invokes handler actions. template FMT_CONSTEXPR const Char* parse_chrono_format(const Char* begin, const Char* end, Handler&& handler) { auto ptr = begin; while (ptr != end) { auto c = *ptr; if (c == '}') break; if (c != '%') { ++ptr; continue; } if (begin != ptr) handler.on_text(begin, ptr); ++ptr; // consume '%' if (ptr == end) FMT_THROW(format_error("invalid format")); c = *ptr++; switch (c) { case '%': handler.on_text(ptr - 1, ptr); break; case 'n': { const Char newline[] = {'\n'}; handler.on_text(newline, newline + 1); break; } case 't': { const Char tab[] = {'\t'}; handler.on_text(tab, tab + 1); break; } // Year: case 'Y': handler.on_year(numeric_system::standard); break; case 'y': handler.on_short_year(numeric_system::standard); break; case 'C': handler.on_century(numeric_system::standard); break; case 'G': handler.on_iso_week_based_year(); break; case 'g': handler.on_iso_week_based_short_year(); break; // Day of the week: case 'a': handler.on_abbr_weekday(); break; case 'A': handler.on_full_weekday(); break; case 'w': handler.on_dec0_weekday(numeric_system::standard); break; case 'u': handler.on_dec1_weekday(numeric_system::standard); break; // Month: case 'b': case 'h': handler.on_abbr_month(); break; case 'B': handler.on_full_month(); break; case 'm': handler.on_dec_month(numeric_system::standard); break; // Day of the year/month: case 'U': handler.on_dec0_week_of_year(numeric_system::standard); break; case 'W': handler.on_dec1_week_of_year(numeric_system::standard); break; case 'V': handler.on_iso_week_of_year(numeric_system::standard); break; case 'j': handler.on_day_of_year(); break; case 'd': handler.on_day_of_month(numeric_system::standard); break; case 'e': handler.on_day_of_month_space(numeric_system::standard); break; // Hour, minute, second: case 'H': handler.on_24_hour(numeric_system::standard); break; case 'I': handler.on_12_hour(numeric_system::standard); break; case 'M': handler.on_minute(numeric_system::standard); break; case 'S': handler.on_second(numeric_system::standard); break; // Other: case 'c': handler.on_datetime(numeric_system::standard); break; case 'x': handler.on_loc_date(numeric_system::standard); break; case 'X': handler.on_loc_time(numeric_system::standard); break; case 'D': handler.on_us_date(); break; case 'F': handler.on_iso_date(); break; case 'r': handler.on_12_hour_time(); break; case 'R': handler.on_24_hour_time(); break; case 'T': handler.on_iso_time(); break; case 'p': handler.on_am_pm(); break; case 'Q': handler.on_duration_value(); break; case 'q': handler.on_duration_unit(); break; case 'z': handler.on_utc_offset(); break; case 'Z': handler.on_tz_name(); break; // Alternative representation: case 'E': { if (ptr == end) FMT_THROW(format_error("invalid format")); c = *ptr++; switch (c) { case 'Y': handler.on_year(numeric_system::alternative); break; case 'y': handler.on_offset_year(); break; case 'C': handler.on_century(numeric_system::alternative); break; case 'c': handler.on_datetime(numeric_system::alternative); break; case 'x': handler.on_loc_date(numeric_system::alternative); break; case 'X': handler.on_loc_time(numeric_system::alternative); break; default: FMT_THROW(format_error("invalid format")); } break; } case 'O': if (ptr == end) FMT_THROW(format_error("invalid format")); c = *ptr++; switch (c) { case 'y': handler.on_short_year(numeric_system::alternative); break; case 'm': handler.on_dec_month(numeric_system::alternative); break; case 'U': handler.on_dec0_week_of_year(numeric_system::alternative); break; case 'W': handler.on_dec1_week_of_year(numeric_system::alternative); break; case 'V': handler.on_iso_week_of_year(numeric_system::alternative); break; case 'd': handler.on_day_of_month(numeric_system::alternative); break; case 'e': handler.on_day_of_month_space(numeric_system::alternative); break; case 'w': handler.on_dec0_weekday(numeric_system::alternative); break; case 'u': handler.on_dec1_weekday(numeric_system::alternative); break; case 'H': handler.on_24_hour(numeric_system::alternative); break; case 'I': handler.on_12_hour(numeric_system::alternative); break; case 'M': handler.on_minute(numeric_system::alternative); break; case 'S': handler.on_second(numeric_system::alternative); break; default: FMT_THROW(format_error("invalid format")); } break; default: FMT_THROW(format_error("invalid format")); } begin = ptr; } if (begin != ptr) handler.on_text(begin, ptr); return ptr; } template struct null_chrono_spec_handler { FMT_CONSTEXPR void unsupported() { static_cast(this)->unsupported(); } FMT_CONSTEXPR void on_year(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_short_year(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_offset_year() { unsupported(); } FMT_CONSTEXPR void on_century(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_iso_week_based_year() { unsupported(); } FMT_CONSTEXPR void on_iso_week_based_short_year() { unsupported(); } FMT_CONSTEXPR void on_abbr_weekday() { unsupported(); } FMT_CONSTEXPR void on_full_weekday() { unsupported(); } FMT_CONSTEXPR void on_dec0_weekday(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_dec1_weekday(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_abbr_month() { unsupported(); } FMT_CONSTEXPR void on_full_month() { unsupported(); } FMT_CONSTEXPR void on_dec_month(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_dec0_week_of_year(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_dec1_week_of_year(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_iso_week_of_year(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_day_of_year() { unsupported(); } FMT_CONSTEXPR void on_day_of_month(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_day_of_month_space(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_24_hour(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_12_hour(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_minute(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_second(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_datetime(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_loc_date(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_loc_time(numeric_system) { unsupported(); } FMT_CONSTEXPR void on_us_date() { unsupported(); } FMT_CONSTEXPR void on_iso_date() { unsupported(); } FMT_CONSTEXPR void on_12_hour_time() { unsupported(); } FMT_CONSTEXPR void on_24_hour_time() { unsupported(); } FMT_CONSTEXPR void on_iso_time() { unsupported(); } FMT_CONSTEXPR void on_am_pm() { unsupported(); } FMT_CONSTEXPR void on_duration_value() { unsupported(); } FMT_CONSTEXPR void on_duration_unit() { unsupported(); } FMT_CONSTEXPR void on_utc_offset() { unsupported(); } FMT_CONSTEXPR void on_tz_name() { unsupported(); } }; struct tm_format_checker : null_chrono_spec_handler { FMT_NORETURN void unsupported() { FMT_THROW(format_error("no format")); } template FMT_CONSTEXPR void on_text(const Char*, const Char*) {} FMT_CONSTEXPR void on_year(numeric_system) {} FMT_CONSTEXPR void on_short_year(numeric_system) {} FMT_CONSTEXPR void on_offset_year() {} FMT_CONSTEXPR void on_century(numeric_system) {} FMT_CONSTEXPR void on_iso_week_based_year() {} FMT_CONSTEXPR void on_iso_week_based_short_year() {} FMT_CONSTEXPR void on_abbr_weekday() {} FMT_CONSTEXPR void on_full_weekday() {} FMT_CONSTEXPR void on_dec0_weekday(numeric_system) {} FMT_CONSTEXPR void on_dec1_weekday(numeric_system) {} FMT_CONSTEXPR void on_abbr_month() {} FMT_CONSTEXPR void on_full_month() {} FMT_CONSTEXPR void on_dec_month(numeric_system) {} FMT_CONSTEXPR void on_dec0_week_of_year(numeric_system) {} FMT_CONSTEXPR void on_dec1_week_of_year(numeric_system) {} FMT_CONSTEXPR void on_iso_week_of_year(numeric_system) {} FMT_CONSTEXPR void on_day_of_year() {} FMT_CONSTEXPR void on_day_of_month(numeric_system) {} FMT_CONSTEXPR void on_day_of_month_space(numeric_system) {} FMT_CONSTEXPR void on_24_hour(numeric_system) {} FMT_CONSTEXPR void on_12_hour(numeric_system) {} FMT_CONSTEXPR void on_minute(numeric_system) {} FMT_CONSTEXPR void on_second(numeric_system) {} FMT_CONSTEXPR void on_datetime(numeric_system) {} FMT_CONSTEXPR void on_loc_date(numeric_system) {} FMT_CONSTEXPR void on_loc_time(numeric_system) {} FMT_CONSTEXPR void on_us_date() {} FMT_CONSTEXPR void on_iso_date() {} FMT_CONSTEXPR void on_12_hour_time() {} FMT_CONSTEXPR void on_24_hour_time() {} FMT_CONSTEXPR void on_iso_time() {} FMT_CONSTEXPR void on_am_pm() {} FMT_CONSTEXPR void on_utc_offset() {} FMT_CONSTEXPR void on_tz_name() {} }; inline const char* tm_wday_full_name(int wday) { static constexpr const char* full_name_list[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; return wday >= 0 && wday <= 6 ? full_name_list[wday] : "?"; } inline const char* tm_wday_short_name(int wday) { static constexpr const char* short_name_list[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; return wday >= 0 && wday <= 6 ? short_name_list[wday] : "???"; } inline const char* tm_mon_full_name(int mon) { static constexpr const char* full_name_list[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; return mon >= 0 && mon <= 11 ? full_name_list[mon] : "?"; } inline const char* tm_mon_short_name(int mon) { static constexpr const char* short_name_list[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }; return mon >= 0 && mon <= 11 ? short_name_list[mon] : "???"; } template struct has_member_data_tm_gmtoff : std::false_type {}; template struct has_member_data_tm_gmtoff> : std::true_type {}; template struct has_member_data_tm_zone : std::false_type {}; template struct has_member_data_tm_zone> : std::true_type {}; #if FMT_USE_TZSET inline void tzset_once() { static bool init = []() -> bool { _tzset(); return true; }(); ignore_unused(init); } #endif template class tm_writer { private: static constexpr int days_per_week = 7; const std::locale& loc_; const bool is_classic_; OutputIt out_; const std::tm& tm_; auto tm_sec() const noexcept -> int { FMT_ASSERT(tm_.tm_sec >= 0 && tm_.tm_sec <= 61, ""); return tm_.tm_sec; } auto tm_min() const noexcept -> int { FMT_ASSERT(tm_.tm_min >= 0 && tm_.tm_min <= 59, ""); return tm_.tm_min; } auto tm_hour() const noexcept -> int { FMT_ASSERT(tm_.tm_hour >= 0 && tm_.tm_hour <= 23, ""); return tm_.tm_hour; } auto tm_mday() const noexcept -> int { FMT_ASSERT(tm_.tm_mday >= 1 && tm_.tm_mday <= 31, ""); return tm_.tm_mday; } auto tm_mon() const noexcept -> int { FMT_ASSERT(tm_.tm_mon >= 0 && tm_.tm_mon <= 11, ""); return tm_.tm_mon; } auto tm_year() const noexcept -> long long { return 1900ll + tm_.tm_year; } auto tm_wday() const noexcept -> int { FMT_ASSERT(tm_.tm_wday >= 0 && tm_.tm_wday <= 6, ""); return tm_.tm_wday; } auto tm_yday() const noexcept -> int { FMT_ASSERT(tm_.tm_yday >= 0 && tm_.tm_yday <= 365, ""); return tm_.tm_yday; } auto tm_hour12() const noexcept -> int { const auto h = tm_hour(); const auto z = h < 12 ? h : h - 12; return z == 0 ? 12 : z; } // POSIX and the C Standard are unclear or inconsistent about what %C and %y // do if the year is negative or exceeds 9999. Use the convention that %C // concatenated with %y yields the same output as %Y, and that %Y contains at // least 4 characters, with more only if necessary. auto split_year_lower(long long year) const noexcept -> int { auto l = year % 100; if (l < 0) l = -l; // l in [0, 99] return static_cast(l); } // Algorithm: // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_the_week_number_from_a_month_and_day_of_the_month_or_ordinal_date auto iso_year_weeks(long long curr_year) const noexcept -> int { const auto prev_year = curr_year - 1; const auto curr_p = (curr_year + curr_year / 4 - curr_year / 100 + curr_year / 400) % days_per_week; const auto prev_p = (prev_year + prev_year / 4 - prev_year / 100 + prev_year / 400) % days_per_week; return 52 + ((curr_p == 4 || prev_p == 3) ? 1 : 0); } auto iso_week_num(int tm_yday, int tm_wday) const noexcept -> int { return (tm_yday + 11 - (tm_wday == 0 ? days_per_week : tm_wday)) / days_per_week; } auto tm_iso_week_year() const noexcept -> long long { const auto year = tm_year(); const auto w = iso_week_num(tm_yday(), tm_wday()); if (w < 1) return year - 1; if (w > iso_year_weeks(year)) return year + 1; return year; } auto tm_iso_week_of_year() const noexcept -> int { const auto year = tm_year(); const auto w = iso_week_num(tm_yday(), tm_wday()); if (w < 1) return iso_year_weeks(year - 1); if (w > iso_year_weeks(year)) return 1; return w; } void write1(int value) { *out_++ = static_cast('0' + to_unsigned(value) % 10); } void write2(int value) { const char* d = digits2(to_unsigned(value) % 100); *out_++ = *d++; *out_++ = *d; } void write_year_extended(long long year) { // At least 4 characters. int width = 4; if (year < 0) { *out_++ = '-'; year = 0 - year; --width; } uint32_or_64_or_128_t n = to_unsigned(year); const int num_digits = count_digits(n); if (width > num_digits) out_ = std::fill_n(out_, width - num_digits, '0'); out_ = format_decimal(out_, n, num_digits).end; } void write_year(long long year) { if (year >= 0 && year < 10000) { write2(static_cast(year / 100)); write2(static_cast(year % 100)); } else { write_year_extended(year); } } void write_utc_offset(long offset) { if (offset < 0) { *out_++ = '-'; offset = -offset; } else { *out_++ = '+'; } offset /= 60; write2(static_cast(offset / 60)); write2(static_cast(offset % 60)); } template ::value)> void format_utc_offset_impl(const T& tm) { write_utc_offset(tm.tm_gmtoff); } template ::value)> void format_utc_offset_impl(const T& tm) { #if defined(_WIN32) && defined(_UCRT) # if FMT_USE_TZSET tzset_once(); # endif long offset = 0; _get_timezone(&offset); if (tm.tm_isdst) { long dstbias = 0; _get_dstbias(&dstbias); offset += dstbias; } write_utc_offset(-offset); #else ignore_unused(tm); format_localized('z'); #endif } template ::value)> void format_tz_name_impl(const T& tm) { if (is_classic_) out_ = write_tm_str(out_, tm.tm_zone, loc_); else format_localized('Z'); } template ::value)> void format_tz_name_impl(const T&) { format_localized('Z'); } void format_localized(char format, char modifier = 0) { out_ = write(out_, tm_, loc_, format, modifier); } public: tm_writer(const std::locale& loc, OutputIt out, const std::tm& tm) : loc_(loc), is_classic_(loc_ == get_classic_locale()), out_(out), tm_(tm) {} OutputIt out() const { return out_; } FMT_CONSTEXPR void on_text(const Char* begin, const Char* end) { out_ = copy_str(begin, end, out_); } void on_abbr_weekday() { if (is_classic_) out_ = write(out_, tm_wday_short_name(tm_wday())); else format_localized('a'); } void on_full_weekday() { if (is_classic_) out_ = write(out_, tm_wday_full_name(tm_wday())); else format_localized('A'); } void on_dec0_weekday(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write1(tm_wday()); format_localized('w', 'O'); } void on_dec1_weekday(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) { auto wday = tm_wday(); write1(wday == 0 ? days_per_week : wday); } else { format_localized('u', 'O'); } } void on_abbr_month() { if (is_classic_) out_ = write(out_, tm_mon_short_name(tm_mon())); else format_localized('b'); } void on_full_month() { if (is_classic_) out_ = write(out_, tm_mon_full_name(tm_mon())); else format_localized('B'); } void on_datetime(numeric_system ns) { if (is_classic_) { on_abbr_weekday(); *out_++ = ' '; on_abbr_month(); *out_++ = ' '; on_day_of_month_space(numeric_system::standard); *out_++ = ' '; on_iso_time(); *out_++ = ' '; on_year(numeric_system::standard); } else { format_localized('c', ns == numeric_system::standard ? '\0' : 'E'); } } void on_loc_date(numeric_system ns) { if (is_classic_) on_us_date(); else format_localized('x', ns == numeric_system::standard ? '\0' : 'E'); } void on_loc_time(numeric_system ns) { if (is_classic_) on_iso_time(); else format_localized('X', ns == numeric_system::standard ? '\0' : 'E'); } void on_us_date() { char buf[8]; write_digit2_separated(buf, to_unsigned(tm_mon() + 1), to_unsigned(tm_mday()), to_unsigned(split_year_lower(tm_year())), '/'); out_ = copy_str(std::begin(buf), std::end(buf), out_); } void on_iso_date() { auto year = tm_year(); char buf[10]; size_t offset = 0; if (year >= 0 && year < 10000) { copy2(buf, digits2(static_cast(year / 100))); } else { offset = 4; write_year_extended(year); year = 0; } write_digit2_separated(buf + 2, static_cast(year % 100), to_unsigned(tm_mon() + 1), to_unsigned(tm_mday()), '-'); out_ = copy_str(std::begin(buf) + offset, std::end(buf), out_); } void on_utc_offset() { format_utc_offset_impl(tm_); } void on_tz_name() { format_tz_name_impl(tm_); } void on_year(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write_year(tm_year()); format_localized('Y', 'E'); } void on_short_year(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(split_year_lower(tm_year())); format_localized('y', 'O'); } void on_offset_year() { if (is_classic_) return write2(split_year_lower(tm_year())); format_localized('y', 'E'); } void on_century(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) { auto year = tm_year(); auto upper = year / 100; if (year >= -99 && year < 0) { // Zero upper on negative year. *out_++ = '-'; *out_++ = '0'; } else if (upper >= 0 && upper < 100) { write2(static_cast(upper)); } else { out_ = write(out_, upper); } } else { format_localized('C', 'E'); } } void on_dec_month(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_mon() + 1); format_localized('m', 'O'); } void on_dec0_week_of_year(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2((tm_yday() + days_per_week - tm_wday()) / days_per_week); format_localized('U', 'O'); } void on_dec1_week_of_year(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) { auto wday = tm_wday(); write2((tm_yday() + days_per_week - (wday == 0 ? (days_per_week - 1) : (wday - 1))) / days_per_week); } else { format_localized('W', 'O'); } } void on_iso_week_of_year(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_iso_week_of_year()); format_localized('V', 'O'); } void on_iso_week_based_year() { write_year(tm_iso_week_year()); } void on_iso_week_based_short_year() { write2(split_year_lower(tm_iso_week_year())); } void on_day_of_year() { auto yday = tm_yday() + 1; write1(yday / 100); write2(yday % 100); } void on_day_of_month(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_mday()); format_localized('d', 'O'); } void on_day_of_month_space(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) { auto mday = to_unsigned(tm_mday()) % 100; const char* d2 = digits2(mday); *out_++ = mday < 10 ? ' ' : d2[0]; *out_++ = d2[1]; } else { format_localized('e', 'O'); } } void on_24_hour(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_hour()); format_localized('H', 'O'); } void on_12_hour(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_hour12()); format_localized('I', 'O'); } void on_minute(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_min()); format_localized('M', 'O'); } void on_second(numeric_system ns) { if (is_classic_ || ns == numeric_system::standard) return write2(tm_sec()); format_localized('S', 'O'); } void on_12_hour_time() { if (is_classic_) { char buf[8]; write_digit2_separated(buf, to_unsigned(tm_hour12()), to_unsigned(tm_min()), to_unsigned(tm_sec()), ':'); out_ = copy_str(std::begin(buf), std::end(buf), out_); *out_++ = ' '; on_am_pm(); } else { format_localized('r'); } } void on_24_hour_time() { write2(tm_hour()); *out_++ = ':'; write2(tm_min()); } void on_iso_time() { char buf[8]; write_digit2_separated(buf, to_unsigned(tm_hour()), to_unsigned(tm_min()), to_unsigned(tm_sec()), ':'); out_ = copy_str(std::begin(buf), std::end(buf), out_); } void on_am_pm() { if (is_classic_) { *out_++ = tm_hour() < 12 ? 'A' : 'P'; *out_++ = 'M'; } else { format_localized('p'); } } // These apply to chrono durations but not tm. void on_duration_value() {} void on_duration_unit() {} }; struct chrono_format_checker : null_chrono_spec_handler { FMT_NORETURN void unsupported() { FMT_THROW(format_error("no date")); } template FMT_CONSTEXPR void on_text(const Char*, const Char*) {} FMT_CONSTEXPR void on_24_hour(numeric_system) {} FMT_CONSTEXPR void on_12_hour(numeric_system) {} FMT_CONSTEXPR void on_minute(numeric_system) {} FMT_CONSTEXPR void on_second(numeric_system) {} FMT_CONSTEXPR void on_12_hour_time() {} FMT_CONSTEXPR void on_24_hour_time() {} FMT_CONSTEXPR void on_iso_time() {} FMT_CONSTEXPR void on_am_pm() {} FMT_CONSTEXPR void on_duration_value() {} FMT_CONSTEXPR void on_duration_unit() {} }; template ::value)> inline bool isfinite(T) { return true; } // Converts value to Int and checks that it's in the range [0, upper). template ::value)> inline Int to_nonnegative_int(T value, Int upper) { FMT_ASSERT(std::is_unsigned::value || (value >= 0 && to_unsigned(value) <= to_unsigned(upper)), "invalid value"); (void)upper; return static_cast(value); } template ::value)> inline Int to_nonnegative_int(T value, Int upper) { if (value < 0 || value > static_cast(upper)) FMT_THROW(format_error("invalid value")); return static_cast(value); } template ::value)> inline T mod(T x, int y) { return x % static_cast(y); } template ::value)> inline T mod(T x, int y) { return std::fmod(x, static_cast(y)); } // If T is an integral type, maps T to its unsigned counterpart, otherwise // leaves it unchanged (unlike std::make_unsigned). template ::value> struct make_unsigned_or_unchanged { using type = T; }; template struct make_unsigned_or_unchanged { using type = typename std::make_unsigned::type; }; #if FMT_SAFE_DURATION_CAST // throwing version of safe_duration_cast template To fmt_safe_duration_cast(std::chrono::duration from) { int ec; To to = safe_duration_cast::safe_duration_cast(from, ec); if (ec) FMT_THROW(format_error("cannot format duration")); return to; } #endif template ::value)> inline std::chrono::duration get_milliseconds( std::chrono::duration d) { // this may overflow and/or the result may not fit in the // target type. #if FMT_SAFE_DURATION_CAST using CommonSecondsType = typename std::common_type::type; const auto d_as_common = fmt_safe_duration_cast(d); const auto d_as_whole_seconds = fmt_safe_duration_cast(d_as_common); // this conversion should be nonproblematic const auto diff = d_as_common - d_as_whole_seconds; const auto ms = fmt_safe_duration_cast>(diff); return ms; #else auto s = std::chrono::duration_cast(d); return std::chrono::duration_cast(d - s); #endif } // Counts the number of fractional digits in the range [0, 18] according to the // C++20 spec. If more than 18 fractional digits are required then returns 6 for // microseconds precision. template () / 10)> struct count_fractional_digits { static constexpr int value = Num % Den == 0 ? N : count_fractional_digits::value; }; // Base case that doesn't instantiate any more templates // in order to avoid overflow. template struct count_fractional_digits { static constexpr int value = (Num % Den == 0) ? N : 6; }; constexpr long long pow10(std::uint32_t n) { return n == 0 ? 1 : 10 * pow10(n - 1); } template ::is_signed)> constexpr std::chrono::duration abs( std::chrono::duration d) { // We need to compare the duration using the count() method directly // due to a compiler bug in clang-11 regarding the spaceship operator, // when -Wzero-as-null-pointer-constant is enabled. // In clang-12 the bug has been fixed. See // https://bugs.llvm.org/show_bug.cgi?id=46235 and the reproducible example: // https://www.godbolt.org/z/Knbb5joYx. return d.count() >= d.zero().count() ? d : -d; } template ::is_signed)> constexpr std::chrono::duration abs( std::chrono::duration d) { return d; } template ::value)> OutputIt format_duration_value(OutputIt out, Rep val, int) { return write(out, val); } template ::value)> OutputIt format_duration_value(OutputIt out, Rep val, int precision) { auto specs = basic_format_specs(); specs.precision = precision; specs.type = precision >= 0 ? presentation_type::fixed_lower : presentation_type::general_lower; return write(out, val, specs); } template OutputIt copy_unit(string_view unit, OutputIt out, Char) { return std::copy(unit.begin(), unit.end(), out); } template OutputIt copy_unit(string_view unit, OutputIt out, wchar_t) { // This works when wchar_t is UTF-32 because units only contain characters // that have the same representation in UTF-16 and UTF-32. utf8_to_utf16 u(unit); return std::copy(u.c_str(), u.c_str() + u.size(), out); } template OutputIt format_duration_unit(OutputIt out) { if (const char* unit = get_units()) return copy_unit(string_view(unit), out, Char()); *out++ = '['; out = write(out, Period::num); if (const_check(Period::den != 1)) { *out++ = '/'; out = write(out, Period::den); } *out++ = ']'; *out++ = 's'; return out; } class get_locale { private: union { std::locale locale_; }; bool has_locale_ = false; public: get_locale(bool localized, locale_ref loc) : has_locale_(localized) { if (localized) ::new (&locale_) std::locale(loc.template get()); } ~get_locale() { if (has_locale_) locale_.~locale(); } operator const std::locale&() const { return has_locale_ ? locale_ : get_classic_locale(); } }; template struct chrono_formatter { FormatContext& context; OutputIt out; int precision; bool localized = false; // rep is unsigned to avoid overflow. using rep = conditional_t::value && sizeof(Rep) < sizeof(int), unsigned, typename make_unsigned_or_unchanged::type>; rep val; using seconds = std::chrono::duration; seconds s; using milliseconds = std::chrono::duration; bool negative; using char_type = typename FormatContext::char_type; using tm_writer_type = tm_writer; chrono_formatter(FormatContext& ctx, OutputIt o, std::chrono::duration d) : context(ctx), out(o), val(static_cast(d.count())), negative(false) { if (d.count() < 0) { val = 0 - val; negative = true; } // this may overflow and/or the result may not fit in the // target type. #if FMT_SAFE_DURATION_CAST // might need checked conversion (rep!=Rep) auto tmpval = std::chrono::duration(val); s = fmt_safe_duration_cast(tmpval); #else s = std::chrono::duration_cast( std::chrono::duration(val)); #endif } // returns true if nan or inf, writes to out. bool handle_nan_inf() { if (isfinite(val)) { return false; } if (isnan(val)) { write_nan(); return true; } // must be +-inf if (val > 0) { write_pinf(); } else { write_ninf(); } return true; } Rep hour() const { return static_cast(mod((s.count() / 3600), 24)); } Rep hour12() const { Rep hour = static_cast(mod((s.count() / 3600), 12)); return hour <= 0 ? 12 : hour; } Rep minute() const { return static_cast(mod((s.count() / 60), 60)); } Rep second() const { return static_cast(mod(s.count(), 60)); } std::tm time() const { auto time = std::tm(); time.tm_hour = to_nonnegative_int(hour(), 24); time.tm_min = to_nonnegative_int(minute(), 60); time.tm_sec = to_nonnegative_int(second(), 60); return time; } void write_sign() { if (negative) { *out++ = '-'; negative = false; } } void write(Rep value, int width) { write_sign(); if (isnan(value)) return write_nan(); uint32_or_64_or_128_t n = to_unsigned(to_nonnegative_int(value, max_value())); int num_digits = detail::count_digits(n); if (width > num_digits) out = std::fill_n(out, width - num_digits, '0'); out = format_decimal(out, n, num_digits).end; } template void write_fractional_seconds(Duration d) { FMT_ASSERT(!std::is_floating_point::value, ""); constexpr auto num_fractional_digits = count_fractional_digits::value; using subsecond_precision = std::chrono::duration< typename std::common_type::type, std::ratio<1, detail::pow10(num_fractional_digits)>>; if (std::ratio_less::value) { *out++ = '.'; auto fractional = detail::abs(d) - std::chrono::duration_cast(d); auto subseconds = std::chrono::treat_as_floating_point< typename subsecond_precision::rep>::value ? fractional.count() : std::chrono::duration_cast(fractional) .count(); uint32_or_64_or_128_t n = to_unsigned(to_nonnegative_int(subseconds, max_value())); int num_digits = detail::count_digits(n); if (num_fractional_digits > num_digits) out = std::fill_n(out, num_fractional_digits - num_digits, '0'); out = format_decimal(out, n, num_digits).end; } } void write_nan() { std::copy_n("nan", 3, out); } void write_pinf() { std::copy_n("inf", 3, out); } void write_ninf() { std::copy_n("-inf", 4, out); } template void format_tm(const tm& time, Callback cb, Args... args) { if (isnan(val)) return write_nan(); get_locale loc(localized, context.locale()); auto w = tm_writer_type(loc, out, time); (w.*cb)(args...); out = w.out(); } void on_text(const char_type* begin, const char_type* end) { std::copy(begin, end, out); } // These are not implemented because durations don't have date information. void on_abbr_weekday() {} void on_full_weekday() {} void on_dec0_weekday(numeric_system) {} void on_dec1_weekday(numeric_system) {} void on_abbr_month() {} void on_full_month() {} void on_datetime(numeric_system) {} void on_loc_date(numeric_system) {} void on_loc_time(numeric_system) {} void on_us_date() {} void on_iso_date() {} void on_utc_offset() {} void on_tz_name() {} void on_year(numeric_system) {} void on_short_year(numeric_system) {} void on_offset_year() {} void on_century(numeric_system) {} void on_iso_week_based_year() {} void on_iso_week_based_short_year() {} void on_dec_month(numeric_system) {} void on_dec0_week_of_year(numeric_system) {} void on_dec1_week_of_year(numeric_system) {} void on_iso_week_of_year(numeric_system) {} void on_day_of_year() {} void on_day_of_month(numeric_system) {} void on_day_of_month_space(numeric_system) {} void on_24_hour(numeric_system ns) { if (handle_nan_inf()) return; if (ns == numeric_system::standard) return write(hour(), 2); auto time = tm(); time.tm_hour = to_nonnegative_int(hour(), 24); format_tm(time, &tm_writer_type::on_24_hour, ns); } void on_12_hour(numeric_system ns) { if (handle_nan_inf()) return; if (ns == numeric_system::standard) return write(hour12(), 2); auto time = tm(); time.tm_hour = to_nonnegative_int(hour12(), 12); format_tm(time, &tm_writer_type::on_12_hour, ns); } void on_minute(numeric_system ns) { if (handle_nan_inf()) return; if (ns == numeric_system::standard) return write(minute(), 2); auto time = tm(); time.tm_min = to_nonnegative_int(minute(), 60); format_tm(time, &tm_writer_type::on_minute, ns); } void on_second(numeric_system ns) { if (handle_nan_inf()) return; if (ns == numeric_system::standard) { if (std::is_floating_point::value) { constexpr auto num_fractional_digits = count_fractional_digits::value; auto buf = memory_buffer(); format_to(std::back_inserter(buf), runtime("{:.{}f}"), std::fmod(val * static_cast(Period::num) / static_cast(Period::den), static_cast(60)), num_fractional_digits); if (negative) *out++ = '-'; if (buf.size() < 2 || buf[1] == '.') *out++ = '0'; out = std::copy(buf.begin(), buf.end(), out); } else { write(second(), 2); write_fractional_seconds(std::chrono::duration(val)); } return; } auto time = tm(); time.tm_sec = to_nonnegative_int(second(), 60); format_tm(time, &tm_writer_type::on_second, ns); } void on_12_hour_time() { if (handle_nan_inf()) return; format_tm(time(), &tm_writer_type::on_12_hour_time); } void on_24_hour_time() { if (handle_nan_inf()) { *out++ = ':'; handle_nan_inf(); return; } write(hour(), 2); *out++ = ':'; write(minute(), 2); } void on_iso_time() { on_24_hour_time(); *out++ = ':'; if (handle_nan_inf()) return; on_second(numeric_system::standard); } void on_am_pm() { if (handle_nan_inf()) return; format_tm(time(), &tm_writer_type::on_am_pm); } void on_duration_value() { if (handle_nan_inf()) return; write_sign(); out = format_duration_value(out, val, precision); } void on_duration_unit() { out = format_duration_unit(out); } }; FMT_END_DETAIL_NAMESPACE #if defined(__cpp_lib_chrono) && __cpp_lib_chrono >= 201907 using weekday = std::chrono::weekday; #else // A fallback version of weekday. class weekday { private: unsigned char value; public: weekday() = default; explicit constexpr weekday(unsigned wd) noexcept : value(static_cast(wd != 7 ? wd : 0)) {} constexpr unsigned c_encoding() const noexcept { return value; } }; class year_month_day {}; #endif // A rudimentary weekday formatter. template struct formatter { private: bool localized = false; public: FMT_CONSTEXPR auto parse(basic_format_parse_context& ctx) -> decltype(ctx.begin()) { auto begin = ctx.begin(), end = ctx.end(); if (begin != end && *begin == 'L') { ++begin; localized = true; } return begin; } template auto format(weekday wd, FormatContext& ctx) const -> decltype(ctx.out()) { auto time = std::tm(); time.tm_wday = static_cast(wd.c_encoding()); detail::get_locale loc(localized, ctx.locale()); auto w = detail::tm_writer(loc, ctx.out(), time); w.on_abbr_weekday(); return w.out(); } }; template struct formatter, Char> { private: basic_format_specs specs; int precision = -1; using arg_ref_type = detail::arg_ref; arg_ref_type width_ref; arg_ref_type precision_ref; bool localized = false; basic_string_view format_str; using duration = std::chrono::duration; struct spec_handler { formatter& f; basic_format_parse_context& context; basic_string_view format_str; template FMT_CONSTEXPR arg_ref_type make_arg_ref(Id arg_id) { context.check_arg_id(arg_id); return arg_ref_type(arg_id); } FMT_CONSTEXPR arg_ref_type make_arg_ref(basic_string_view arg_id) { context.check_arg_id(arg_id); return arg_ref_type(arg_id); } FMT_CONSTEXPR arg_ref_type make_arg_ref(detail::auto_id) { return arg_ref_type(context.next_arg_id()); } void on_error(const char* msg) { FMT_THROW(format_error(msg)); } FMT_CONSTEXPR void on_fill(basic_string_view fill) { f.specs.fill = fill; } FMT_CONSTEXPR void on_align(align_t align) { f.specs.align = align; } FMT_CONSTEXPR void on_width(int width) { f.specs.width = width; } FMT_CONSTEXPR void on_precision(int _precision) { f.precision = _precision; } FMT_CONSTEXPR void end_precision() {} template FMT_CONSTEXPR void on_dynamic_width(Id arg_id) { f.width_ref = make_arg_ref(arg_id); } template FMT_CONSTEXPR void on_dynamic_precision(Id arg_id) { f.precision_ref = make_arg_ref(arg_id); } }; using iterator = typename basic_format_parse_context::iterator; struct parse_range { iterator begin; iterator end; }; FMT_CONSTEXPR parse_range do_parse(basic_format_parse_context& ctx) { auto begin = ctx.begin(), end = ctx.end(); if (begin == end || *begin == '}') return {begin, begin}; spec_handler handler{*this, ctx, format_str}; begin = detail::parse_align(begin, end, handler); if (begin == end) return {begin, begin}; begin = detail::parse_width(begin, end, handler); if (begin == end) return {begin, begin}; if (*begin == '.') { if (std::is_floating_point::value) begin = detail::parse_precision(begin, end, handler); else handler.on_error("precision not allowed for this argument type"); } if (begin != end && *begin == 'L') { ++begin; localized = true; } end = detail::parse_chrono_format(begin, end, detail::chrono_format_checker()); return {begin, end}; } public: FMT_CONSTEXPR auto parse(basic_format_parse_context& ctx) -> decltype(ctx.begin()) { auto range = do_parse(ctx); format_str = basic_string_view( &*range.begin, detail::to_unsigned(range.end - range.begin)); return range.end; } template auto format(const duration& d, FormatContext& ctx) const -> decltype(ctx.out()) { auto specs_copy = specs; auto precision_copy = precision; auto begin = format_str.begin(), end = format_str.end(); // As a possible future optimization, we could avoid extra copying if width // is not specified. basic_memory_buffer buf; auto out = std::back_inserter(buf); detail::handle_dynamic_spec(specs_copy.width, width_ref, ctx); detail::handle_dynamic_spec(precision_copy, precision_ref, ctx); if (begin == end || *begin == '}') { out = detail::format_duration_value(out, d.count(), precision_copy); detail::format_duration_unit(out); } else { detail::chrono_formatter f( ctx, out, d); f.precision = precision_copy; f.localized = localized; detail::parse_chrono_format(begin, end, f); } return detail::write( ctx.out(), basic_string_view(buf.data(), buf.size()), specs_copy); } }; template struct formatter, Char> : formatter { FMT_CONSTEXPR formatter() { basic_string_view default_specs = detail::string_literal{}; this->do_parse(default_specs.begin(), default_specs.end()); } template auto format(std::chrono::time_point val, FormatContext& ctx) const -> decltype(ctx.out()) { return formatter::format(localtime(val), ctx); } }; template struct formatter { private: enum class spec { unknown, year_month_day, hh_mm_ss, }; spec spec_ = spec::unknown; basic_string_view specs; protected: template FMT_CONSTEXPR auto do_parse(It begin, It end) -> It { if (begin != end && *begin == ':') ++begin; end = detail::parse_chrono_format(begin, end, detail::tm_format_checker()); // Replace default spec only if the new spec is not empty. if (end != begin) specs = {begin, detail::to_unsigned(end - begin)}; return end; } public: FMT_CONSTEXPR auto parse(basic_format_parse_context& ctx) -> decltype(ctx.begin()) { auto end = this->do_parse(ctx.begin(), ctx.end()); // basic_string_view<>::compare isn't constexpr before C++17. if (specs.size() == 2 && specs[0] == Char('%')) { if (specs[1] == Char('F')) spec_ = spec::year_month_day; else if (specs[1] == Char('T')) spec_ = spec::hh_mm_ss; } return end; } template auto format(const std::tm& tm, FormatContext& ctx) const -> decltype(ctx.out()) { const auto loc_ref = ctx.locale(); detail::get_locale loc(static_cast(loc_ref), loc_ref); auto w = detail::tm_writer(loc, ctx.out(), tm); if (spec_ == spec::year_month_day) w.on_iso_date(); else if (spec_ == spec::hh_mm_ss) w.on_iso_time(); else detail::parse_chrono_format(specs.begin(), specs.end(), w); return w.out(); } }; FMT_MODULE_EXPORT_END FMT_END_NAMESPACE #endif // FMT_CHRONO_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/color.h ================================================ // Formatting library for C++ - color support // // Copyright (c) 2018 - present, Victor Zverovich and fmt contributors // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_COLOR_H_ #define FMT_COLOR_H_ #include "format.h" FMT_BEGIN_NAMESPACE FMT_MODULE_EXPORT_BEGIN enum class color : uint32_t { alice_blue = 0xF0F8FF, // rgb(240,248,255) antique_white = 0xFAEBD7, // rgb(250,235,215) aqua = 0x00FFFF, // rgb(0,255,255) aquamarine = 0x7FFFD4, // rgb(127,255,212) azure = 0xF0FFFF, // rgb(240,255,255) beige = 0xF5F5DC, // rgb(245,245,220) bisque = 0xFFE4C4, // rgb(255,228,196) black = 0x000000, // rgb(0,0,0) blanched_almond = 0xFFEBCD, // rgb(255,235,205) blue = 0x0000FF, // rgb(0,0,255) blue_violet = 0x8A2BE2, // rgb(138,43,226) brown = 0xA52A2A, // rgb(165,42,42) burly_wood = 0xDEB887, // rgb(222,184,135) cadet_blue = 0x5F9EA0, // rgb(95,158,160) chartreuse = 0x7FFF00, // rgb(127,255,0) chocolate = 0xD2691E, // rgb(210,105,30) coral = 0xFF7F50, // rgb(255,127,80) cornflower_blue = 0x6495ED, // rgb(100,149,237) cornsilk = 0xFFF8DC, // rgb(255,248,220) crimson = 0xDC143C, // rgb(220,20,60) cyan = 0x00FFFF, // rgb(0,255,255) dark_blue = 0x00008B, // rgb(0,0,139) dark_cyan = 0x008B8B, // rgb(0,139,139) dark_golden_rod = 0xB8860B, // rgb(184,134,11) dark_gray = 0xA9A9A9, // rgb(169,169,169) dark_green = 0x006400, // rgb(0,100,0) dark_khaki = 0xBDB76B, // rgb(189,183,107) dark_magenta = 0x8B008B, // rgb(139,0,139) dark_olive_green = 0x556B2F, // rgb(85,107,47) dark_orange = 0xFF8C00, // rgb(255,140,0) dark_orchid = 0x9932CC, // rgb(153,50,204) dark_red = 0x8B0000, // rgb(139,0,0) dark_salmon = 0xE9967A, // rgb(233,150,122) dark_sea_green = 0x8FBC8F, // rgb(143,188,143) dark_slate_blue = 0x483D8B, // rgb(72,61,139) dark_slate_gray = 0x2F4F4F, // rgb(47,79,79) dark_turquoise = 0x00CED1, // rgb(0,206,209) dark_violet = 0x9400D3, // rgb(148,0,211) deep_pink = 0xFF1493, // rgb(255,20,147) deep_sky_blue = 0x00BFFF, // rgb(0,191,255) dim_gray = 0x696969, // rgb(105,105,105) dodger_blue = 0x1E90FF, // rgb(30,144,255) fire_brick = 0xB22222, // rgb(178,34,34) floral_white = 0xFFFAF0, // rgb(255,250,240) forest_green = 0x228B22, // rgb(34,139,34) fuchsia = 0xFF00FF, // rgb(255,0,255) gainsboro = 0xDCDCDC, // rgb(220,220,220) ghost_white = 0xF8F8FF, // rgb(248,248,255) gold = 0xFFD700, // rgb(255,215,0) golden_rod = 0xDAA520, // rgb(218,165,32) gray = 0x808080, // rgb(128,128,128) green = 0x008000, // rgb(0,128,0) green_yellow = 0xADFF2F, // rgb(173,255,47) honey_dew = 0xF0FFF0, // rgb(240,255,240) hot_pink = 0xFF69B4, // rgb(255,105,180) indian_red = 0xCD5C5C, // rgb(205,92,92) indigo = 0x4B0082, // rgb(75,0,130) ivory = 0xFFFFF0, // rgb(255,255,240) khaki = 0xF0E68C, // rgb(240,230,140) lavender = 0xE6E6FA, // rgb(230,230,250) lavender_blush = 0xFFF0F5, // rgb(255,240,245) lawn_green = 0x7CFC00, // rgb(124,252,0) lemon_chiffon = 0xFFFACD, // rgb(255,250,205) light_blue = 0xADD8E6, // rgb(173,216,230) light_coral = 0xF08080, // rgb(240,128,128) light_cyan = 0xE0FFFF, // rgb(224,255,255) light_golden_rod_yellow = 0xFAFAD2, // rgb(250,250,210) light_gray = 0xD3D3D3, // rgb(211,211,211) light_green = 0x90EE90, // rgb(144,238,144) light_pink = 0xFFB6C1, // rgb(255,182,193) light_salmon = 0xFFA07A, // rgb(255,160,122) light_sea_green = 0x20B2AA, // rgb(32,178,170) light_sky_blue = 0x87CEFA, // rgb(135,206,250) light_slate_gray = 0x778899, // rgb(119,136,153) light_steel_blue = 0xB0C4DE, // rgb(176,196,222) light_yellow = 0xFFFFE0, // rgb(255,255,224) lime = 0x00FF00, // rgb(0,255,0) lime_green = 0x32CD32, // rgb(50,205,50) linen = 0xFAF0E6, // rgb(250,240,230) magenta = 0xFF00FF, // rgb(255,0,255) maroon = 0x800000, // rgb(128,0,0) medium_aquamarine = 0x66CDAA, // rgb(102,205,170) medium_blue = 0x0000CD, // rgb(0,0,205) medium_orchid = 0xBA55D3, // rgb(186,85,211) medium_purple = 0x9370DB, // rgb(147,112,219) medium_sea_green = 0x3CB371, // rgb(60,179,113) medium_slate_blue = 0x7B68EE, // rgb(123,104,238) medium_spring_green = 0x00FA9A, // rgb(0,250,154) medium_turquoise = 0x48D1CC, // rgb(72,209,204) medium_violet_red = 0xC71585, // rgb(199,21,133) midnight_blue = 0x191970, // rgb(25,25,112) mint_cream = 0xF5FFFA, // rgb(245,255,250) misty_rose = 0xFFE4E1, // rgb(255,228,225) moccasin = 0xFFE4B5, // rgb(255,228,181) navajo_white = 0xFFDEAD, // rgb(255,222,173) navy = 0x000080, // rgb(0,0,128) old_lace = 0xFDF5E6, // rgb(253,245,230) olive = 0x808000, // rgb(128,128,0) olive_drab = 0x6B8E23, // rgb(107,142,35) orange = 0xFFA500, // rgb(255,165,0) orange_red = 0xFF4500, // rgb(255,69,0) orchid = 0xDA70D6, // rgb(218,112,214) pale_golden_rod = 0xEEE8AA, // rgb(238,232,170) pale_green = 0x98FB98, // rgb(152,251,152) pale_turquoise = 0xAFEEEE, // rgb(175,238,238) pale_violet_red = 0xDB7093, // rgb(219,112,147) papaya_whip = 0xFFEFD5, // rgb(255,239,213) peach_puff = 0xFFDAB9, // rgb(255,218,185) peru = 0xCD853F, // rgb(205,133,63) pink = 0xFFC0CB, // rgb(255,192,203) plum = 0xDDA0DD, // rgb(221,160,221) powder_blue = 0xB0E0E6, // rgb(176,224,230) purple = 0x800080, // rgb(128,0,128) rebecca_purple = 0x663399, // rgb(102,51,153) red = 0xFF0000, // rgb(255,0,0) rosy_brown = 0xBC8F8F, // rgb(188,143,143) royal_blue = 0x4169E1, // rgb(65,105,225) saddle_brown = 0x8B4513, // rgb(139,69,19) salmon = 0xFA8072, // rgb(250,128,114) sandy_brown = 0xF4A460, // rgb(244,164,96) sea_green = 0x2E8B57, // rgb(46,139,87) sea_shell = 0xFFF5EE, // rgb(255,245,238) sienna = 0xA0522D, // rgb(160,82,45) silver = 0xC0C0C0, // rgb(192,192,192) sky_blue = 0x87CEEB, // rgb(135,206,235) slate_blue = 0x6A5ACD, // rgb(106,90,205) slate_gray = 0x708090, // rgb(112,128,144) snow = 0xFFFAFA, // rgb(255,250,250) spring_green = 0x00FF7F, // rgb(0,255,127) steel_blue = 0x4682B4, // rgb(70,130,180) tan = 0xD2B48C, // rgb(210,180,140) teal = 0x008080, // rgb(0,128,128) thistle = 0xD8BFD8, // rgb(216,191,216) tomato = 0xFF6347, // rgb(255,99,71) turquoise = 0x40E0D0, // rgb(64,224,208) violet = 0xEE82EE, // rgb(238,130,238) wheat = 0xF5DEB3, // rgb(245,222,179) white = 0xFFFFFF, // rgb(255,255,255) white_smoke = 0xF5F5F5, // rgb(245,245,245) yellow = 0xFFFF00, // rgb(255,255,0) yellow_green = 0x9ACD32 // rgb(154,205,50) }; // enum class color enum class terminal_color : uint8_t { black = 30, red, green, yellow, blue, magenta, cyan, white, bright_black = 90, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white }; enum class emphasis : uint8_t { bold = 1, faint = 1 << 1, italic = 1 << 2, underline = 1 << 3, blink = 1 << 4, reverse = 1 << 5, conceal = 1 << 6, strikethrough = 1 << 7, }; // rgb is a struct for red, green and blue colors. // Using the name "rgb" makes some editors show the color in a tooltip. struct rgb { FMT_CONSTEXPR rgb() : r(0), g(0), b(0) {} FMT_CONSTEXPR rgb(uint8_t r_, uint8_t g_, uint8_t b_) : r(r_), g(g_), b(b_) {} FMT_CONSTEXPR rgb(uint32_t hex) : r((hex >> 16) & 0xFF), g((hex >> 8) & 0xFF), b(hex & 0xFF) {} FMT_CONSTEXPR rgb(color hex) : r((uint32_t(hex) >> 16) & 0xFF), g((uint32_t(hex) >> 8) & 0xFF), b(uint32_t(hex) & 0xFF) {} uint8_t r; uint8_t g; uint8_t b; }; FMT_BEGIN_DETAIL_NAMESPACE // color is a struct of either a rgb color or a terminal color. struct color_type { FMT_CONSTEXPR color_type() noexcept : is_rgb(), value{} {} FMT_CONSTEXPR color_type(color rgb_color) noexcept : is_rgb(true), value{} { value.rgb_color = static_cast(rgb_color); } FMT_CONSTEXPR color_type(rgb rgb_color) noexcept : is_rgb(true), value{} { value.rgb_color = (static_cast(rgb_color.r) << 16) | (static_cast(rgb_color.g) << 8) | rgb_color.b; } FMT_CONSTEXPR color_type(terminal_color term_color) noexcept : is_rgb(), value{} { value.term_color = static_cast(term_color); } bool is_rgb; union color_union { uint8_t term_color; uint32_t rgb_color; } value; }; FMT_END_DETAIL_NAMESPACE /** A text style consisting of foreground and background colors and emphasis. */ class text_style { public: FMT_CONSTEXPR text_style(emphasis em = emphasis()) noexcept : set_foreground_color(), set_background_color(), ems(em) {} FMT_CONSTEXPR text_style& operator|=(const text_style& rhs) { if (!set_foreground_color) { set_foreground_color = rhs.set_foreground_color; foreground_color = rhs.foreground_color; } else if (rhs.set_foreground_color) { if (!foreground_color.is_rgb || !rhs.foreground_color.is_rgb) FMT_THROW(format_error("can't OR a terminal color")); foreground_color.value.rgb_color |= rhs.foreground_color.value.rgb_color; } if (!set_background_color) { set_background_color = rhs.set_background_color; background_color = rhs.background_color; } else if (rhs.set_background_color) { if (!background_color.is_rgb || !rhs.background_color.is_rgb) FMT_THROW(format_error("can't OR a terminal color")); background_color.value.rgb_color |= rhs.background_color.value.rgb_color; } ems = static_cast(static_cast(ems) | static_cast(rhs.ems)); return *this; } friend FMT_CONSTEXPR text_style operator|(text_style lhs, const text_style& rhs) { return lhs |= rhs; } FMT_CONSTEXPR bool has_foreground() const noexcept { return set_foreground_color; } FMT_CONSTEXPR bool has_background() const noexcept { return set_background_color; } FMT_CONSTEXPR bool has_emphasis() const noexcept { return static_cast(ems) != 0; } FMT_CONSTEXPR detail::color_type get_foreground() const noexcept { FMT_ASSERT(has_foreground(), "no foreground specified for this style"); return foreground_color; } FMT_CONSTEXPR detail::color_type get_background() const noexcept { FMT_ASSERT(has_background(), "no background specified for this style"); return background_color; } FMT_CONSTEXPR emphasis get_emphasis() const noexcept { FMT_ASSERT(has_emphasis(), "no emphasis specified for this style"); return ems; } private: FMT_CONSTEXPR text_style(bool is_foreground, detail::color_type text_color) noexcept : set_foreground_color(), set_background_color(), ems() { if (is_foreground) { foreground_color = text_color; set_foreground_color = true; } else { background_color = text_color; set_background_color = true; } } friend FMT_CONSTEXPR text_style fg(detail::color_type foreground) noexcept; friend FMT_CONSTEXPR text_style bg(detail::color_type background) noexcept; detail::color_type foreground_color; detail::color_type background_color; bool set_foreground_color; bool set_background_color; emphasis ems; }; /** Creates a text style from the foreground (text) color. */ FMT_CONSTEXPR inline text_style fg(detail::color_type foreground) noexcept { return text_style(true, foreground); } /** Creates a text style from the background color. */ FMT_CONSTEXPR inline text_style bg(detail::color_type background) noexcept { return text_style(false, background); } FMT_CONSTEXPR inline text_style operator|(emphasis lhs, emphasis rhs) noexcept { return text_style(lhs) | rhs; } FMT_BEGIN_DETAIL_NAMESPACE template struct ansi_color_escape { FMT_CONSTEXPR ansi_color_escape(detail::color_type text_color, const char* esc) noexcept { // If we have a terminal color, we need to output another escape code // sequence. if (!text_color.is_rgb) { bool is_background = esc == string_view("\x1b[48;2;"); uint32_t value = text_color.value.term_color; // Background ASCII codes are the same as the foreground ones but with // 10 more. if (is_background) value += 10u; size_t index = 0; buffer[index++] = static_cast('\x1b'); buffer[index++] = static_cast('['); if (value >= 100u) { buffer[index++] = static_cast('1'); value %= 100u; } buffer[index++] = static_cast('0' + value / 10u); buffer[index++] = static_cast('0' + value % 10u); buffer[index++] = static_cast('m'); buffer[index++] = static_cast('\0'); return; } for (int i = 0; i < 7; i++) { buffer[i] = static_cast(esc[i]); } rgb color(text_color.value.rgb_color); to_esc(color.r, buffer + 7, ';'); to_esc(color.g, buffer + 11, ';'); to_esc(color.b, buffer + 15, 'm'); buffer[19] = static_cast(0); } FMT_CONSTEXPR ansi_color_escape(emphasis em) noexcept { uint8_t em_codes[num_emphases] = {}; if (has_emphasis(em, emphasis::bold)) em_codes[0] = 1; if (has_emphasis(em, emphasis::faint)) em_codes[1] = 2; if (has_emphasis(em, emphasis::italic)) em_codes[2] = 3; if (has_emphasis(em, emphasis::underline)) em_codes[3] = 4; if (has_emphasis(em, emphasis::blink)) em_codes[4] = 5; if (has_emphasis(em, emphasis::reverse)) em_codes[5] = 7; if (has_emphasis(em, emphasis::conceal)) em_codes[6] = 8; if (has_emphasis(em, emphasis::strikethrough)) em_codes[7] = 9; size_t index = 0; for (size_t i = 0; i < num_emphases; ++i) { if (!em_codes[i]) continue; buffer[index++] = static_cast('\x1b'); buffer[index++] = static_cast('['); buffer[index++] = static_cast('0' + em_codes[i]); buffer[index++] = static_cast('m'); } buffer[index++] = static_cast(0); } FMT_CONSTEXPR operator const Char*() const noexcept { return buffer; } FMT_CONSTEXPR const Char* begin() const noexcept { return buffer; } FMT_CONSTEXPR_CHAR_TRAITS const Char* end() const noexcept { return buffer + std::char_traits::length(buffer); } private: static constexpr size_t num_emphases = 8; Char buffer[7u + 3u * num_emphases + 1u]; static FMT_CONSTEXPR void to_esc(uint8_t c, Char* out, char delimiter) noexcept { out[0] = static_cast('0' + c / 100); out[1] = static_cast('0' + c / 10 % 10); out[2] = static_cast('0' + c % 10); out[3] = static_cast(delimiter); } static FMT_CONSTEXPR bool has_emphasis(emphasis em, emphasis mask) noexcept { return static_cast(em) & static_cast(mask); } }; template FMT_CONSTEXPR ansi_color_escape make_foreground_color( detail::color_type foreground) noexcept { return ansi_color_escape(foreground, "\x1b[38;2;"); } template FMT_CONSTEXPR ansi_color_escape make_background_color( detail::color_type background) noexcept { return ansi_color_escape(background, "\x1b[48;2;"); } template FMT_CONSTEXPR ansi_color_escape make_emphasis(emphasis em) noexcept { return ansi_color_escape(em); } template inline void fputs(const Char* chars, FILE* stream) { int result = std::fputs(chars, stream); if (result < 0) FMT_THROW(system_error(errno, FMT_STRING("cannot write to file"))); } template <> inline void fputs(const wchar_t* chars, FILE* stream) { int result = std::fputws(chars, stream); if (result < 0) FMT_THROW(system_error(errno, FMT_STRING("cannot write to file"))); } template inline void reset_color(FILE* stream) { fputs("\x1b[0m", stream); } template <> inline void reset_color(FILE* stream) { fputs(L"\x1b[0m", stream); } template inline void reset_color(buffer& buffer) { auto reset_color = string_view("\x1b[0m"); buffer.append(reset_color.begin(), reset_color.end()); } template struct styled_arg { const T& value; text_style style; }; template void vformat_to(buffer& buf, const text_style& ts, basic_string_view format_str, basic_format_args>> args) { bool has_style = false; if (ts.has_emphasis()) { has_style = true; auto emphasis = detail::make_emphasis(ts.get_emphasis()); buf.append(emphasis.begin(), emphasis.end()); } if (ts.has_foreground()) { has_style = true; auto foreground = detail::make_foreground_color(ts.get_foreground()); buf.append(foreground.begin(), foreground.end()); } if (ts.has_background()) { has_style = true; auto background = detail::make_background_color(ts.get_background()); buf.append(background.begin(), background.end()); } detail::vformat_to(buf, format_str, args, {}); if (has_style) detail::reset_color(buf); } FMT_END_DETAIL_NAMESPACE template > void vprint(std::FILE* f, const text_style& ts, const S& format, basic_format_args>> args) { basic_memory_buffer buf; detail::vformat_to(buf, ts, detail::to_string_view(format), args); if (detail::is_utf8()) { detail::print(f, basic_string_view(buf.begin(), buf.size())); } else { buf.push_back(Char(0)); detail::fputs(buf.data(), f); } } /** \rst Formats a string and prints it to the specified file stream using ANSI escape sequences to specify text formatting. **Example**:: fmt::print(fmt::emphasis::bold | fg(fmt::color::red), "Elapsed time: {0:.2f} seconds", 1.23); \endrst */ template ::value)> void print(std::FILE* f, const text_style& ts, const S& format_str, const Args&... args) { vprint(f, ts, format_str, fmt::make_format_args>>(args...)); } /** \rst Formats a string and prints it to stdout using ANSI escape sequences to specify text formatting. **Example**:: fmt::print(fmt::emphasis::bold | fg(fmt::color::red), "Elapsed time: {0:.2f} seconds", 1.23); \endrst */ template ::value)> void print(const text_style& ts, const S& format_str, const Args&... args) { return print(stdout, ts, format_str, args...); } template > inline std::basic_string vformat( const text_style& ts, const S& format_str, basic_format_args>> args) { basic_memory_buffer buf; detail::vformat_to(buf, ts, detail::to_string_view(format_str), args); return fmt::to_string(buf); } /** \rst Formats arguments and returns the result as a string using ANSI escape sequences to specify text formatting. **Example**:: #include std::string message = fmt::format(fmt::emphasis::bold | fg(fmt::color::red), "The answer is {}", 42); \endrst */ template > inline std::basic_string format(const text_style& ts, const S& format_str, const Args&... args) { return fmt::vformat(ts, detail::to_string_view(format_str), fmt::make_format_args>(args...)); } /** Formats a string with the given text_style and writes the output to ``out``. */ template ::value)> OutputIt vformat_to( OutputIt out, const text_style& ts, basic_string_view format_str, basic_format_args>> args) { auto&& buf = detail::get_buffer(out); detail::vformat_to(buf, ts, format_str, args); return detail::get_iterator(buf); } /** \rst Formats arguments with the given text_style, writes the result to the output iterator ``out`` and returns the iterator past the end of the output range. **Example**:: std::vector out; fmt::format_to(std::back_inserter(out), fmt::emphasis::bold | fg(fmt::color::red), "{}", 42); \endrst */ template >::value&& detail::is_string::value> inline auto format_to(OutputIt out, const text_style& ts, const S& format_str, Args&&... args) -> typename std::enable_if::type { return vformat_to(out, ts, detail::to_string_view(format_str), fmt::make_format_args>>(args...)); } template struct formatter, Char> : formatter { template auto format(const detail::styled_arg& arg, FormatContext& ctx) const -> decltype(ctx.out()) { const auto& ts = arg.style; const auto& value = arg.value; auto out = ctx.out(); bool has_style = false; if (ts.has_emphasis()) { has_style = true; auto emphasis = detail::make_emphasis(ts.get_emphasis()); out = std::copy(emphasis.begin(), emphasis.end(), out); } if (ts.has_foreground()) { has_style = true; auto foreground = detail::make_foreground_color(ts.get_foreground()); out = std::copy(foreground.begin(), foreground.end(), out); } if (ts.has_background()) { has_style = true; auto background = detail::make_background_color(ts.get_background()); out = std::copy(background.begin(), background.end(), out); } out = formatter::format(value, ctx); if (has_style) { auto reset_color = string_view("\x1b[0m"); out = std::copy(reset_color.begin(), reset_color.end(), out); } return out; } }; /** \rst Returns an argument that will be formatted using ANSI escape sequences, to be used in a formatting function. **Example**:: fmt::print("Elapsed time: {0:.2f} seconds", fmt::styled(1.23, fmt::fg(fmt::color::green) | fmt::bg(fmt::color::blue))); \endrst */ template FMT_CONSTEXPR auto styled(const T& value, text_style ts) -> detail::styled_arg> { return detail::styled_arg>{value, ts}; } FMT_MODULE_EXPORT_END FMT_END_NAMESPACE #endif // FMT_COLOR_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/compile.h ================================================ // Formatting library for C++ - experimental format string compilation // // Copyright (c) 2012 - present, Victor Zverovich and fmt contributors // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_COMPILE_H_ #define FMT_COMPILE_H_ #include "format.h" FMT_BEGIN_NAMESPACE namespace detail { template FMT_CONSTEXPR inline counting_iterator copy_str(InputIt begin, InputIt end, counting_iterator it) { return it + (end - begin); } template class truncating_iterator_base { protected: OutputIt out_; size_t limit_; size_t count_ = 0; truncating_iterator_base() : out_(), limit_(0) {} truncating_iterator_base(OutputIt out, size_t limit) : out_(out), limit_(limit) {} public: using iterator_category = std::output_iterator_tag; using value_type = typename std::iterator_traits::value_type; using difference_type = std::ptrdiff_t; using pointer = void; using reference = void; FMT_UNCHECKED_ITERATOR(truncating_iterator_base); OutputIt base() const { return out_; } size_t count() const { return count_; } }; // An output iterator that truncates the output and counts the number of objects // written to it. template ::value_type>::type> class truncating_iterator; template class truncating_iterator : public truncating_iterator_base { mutable typename truncating_iterator_base::value_type blackhole_; public: using value_type = typename truncating_iterator_base::value_type; truncating_iterator() = default; truncating_iterator(OutputIt out, size_t limit) : truncating_iterator_base(out, limit) {} truncating_iterator& operator++() { if (this->count_++ < this->limit_) ++this->out_; return *this; } truncating_iterator operator++(int) { auto it = *this; ++*this; return it; } value_type& operator*() const { return this->count_ < this->limit_ ? *this->out_ : blackhole_; } }; template class truncating_iterator : public truncating_iterator_base { public: truncating_iterator() = default; truncating_iterator(OutputIt out, size_t limit) : truncating_iterator_base(out, limit) {} template truncating_iterator& operator=(T val) { if (this->count_++ < this->limit_) *this->out_++ = val; return *this; } truncating_iterator& operator++() { return *this; } truncating_iterator& operator++(int) { return *this; } truncating_iterator& operator*() { return *this; } }; // A compile-time string which is compiled into fast formatting code. class compiled_string {}; template struct is_compiled_string : std::is_base_of {}; /** \rst Converts a string literal *s* into a format string that will be parsed at compile time and converted into efficient formatting code. Requires C++17 ``constexpr if`` compiler support. **Example**:: // Converts 42 into std::string using the most efficient method and no // runtime format string processing. std::string s = fmt::format(FMT_COMPILE("{}"), 42); \endrst */ #if defined(__cpp_if_constexpr) && defined(__cpp_return_type_deduction) # define FMT_COMPILE(s) \ FMT_STRING_IMPL(s, fmt::detail::compiled_string, explicit) #else # define FMT_COMPILE(s) FMT_STRING(s) #endif #if FMT_USE_NONTYPE_TEMPLATE_ARGS template Str> struct udl_compiled_string : compiled_string { using char_type = Char; explicit constexpr operator basic_string_view() const { return {Str.data, N - 1}; } }; #endif template const T& first(const T& value, const Tail&...) { return value; } #if defined(__cpp_if_constexpr) && defined(__cpp_return_type_deduction) template struct type_list {}; // Returns a reference to the argument at index N from [first, rest...]. template constexpr const auto& get([[maybe_unused]] const T& first, [[maybe_unused]] const Args&... rest) { static_assert(N < 1 + sizeof...(Args), "index is out of bounds"); if constexpr (N == 0) return first; else return detail::get(rest...); } template constexpr int get_arg_index_by_name(basic_string_view name, type_list) { return get_arg_index_by_name(name); } template struct get_type_impl; template struct get_type_impl> { using type = remove_cvref_t(std::declval()...))>; }; template using get_type = typename get_type_impl::type; template struct is_compiled_format : std::false_type {}; template struct text { basic_string_view data; using char_type = Char; template constexpr OutputIt format(OutputIt out, const Args&...) const { return write(out, data); } }; template struct is_compiled_format> : std::true_type {}; template constexpr text make_text(basic_string_view s, size_t pos, size_t size) { return {{&s[pos], size}}; } template struct code_unit { Char value; using char_type = Char; template constexpr OutputIt format(OutputIt out, const Args&...) const { return write(out, value); } }; // This ensures that the argument type is convertible to `const T&`. template constexpr const T& get_arg_checked(const Args&... args) { const auto& arg = detail::get(args...); if constexpr (detail::is_named_arg>()) { return arg.value; } else { return arg; } } template struct is_compiled_format> : std::true_type {}; // A replacement field that refers to argument N. template struct field { using char_type = Char; template constexpr OutputIt format(OutputIt out, const Args&... args) const { return write(out, get_arg_checked(args...)); } }; template struct is_compiled_format> : std::true_type {}; // A replacement field that refers to argument with name. template struct runtime_named_field { using char_type = Char; basic_string_view name; template constexpr static bool try_format_argument( OutputIt& out, // [[maybe_unused]] due to unused-but-set-parameter warning in GCC 7,8,9 [[maybe_unused]] basic_string_view arg_name, const T& arg) { if constexpr (is_named_arg::type>::value) { if (arg_name == arg.name) { out = write(out, arg.value); return true; } } return false; } template constexpr OutputIt format(OutputIt out, const Args&... args) const { bool found = (try_format_argument(out, name, args) || ...); if (!found) { FMT_THROW(format_error("argument with specified name is not found")); } return out; } }; template struct is_compiled_format> : std::true_type {}; // A replacement field that refers to argument N and has format specifiers. template struct spec_field { using char_type = Char; formatter fmt; template constexpr FMT_INLINE OutputIt format(OutputIt out, const Args&... args) const { const auto& vargs = fmt::make_format_args>(args...); basic_format_context ctx(out, vargs); return fmt.format(get_arg_checked(args...), ctx); } }; template struct is_compiled_format> : std::true_type {}; template struct concat { L lhs; R rhs; using char_type = typename L::char_type; template constexpr OutputIt format(OutputIt out, const Args&... args) const { out = lhs.format(out, args...); return rhs.format(out, args...); } }; template struct is_compiled_format> : std::true_type {}; template constexpr concat make_concat(L lhs, R rhs) { return {lhs, rhs}; } struct unknown_format {}; template constexpr size_t parse_text(basic_string_view str, size_t pos) { for (size_t size = str.size(); pos != size; ++pos) { if (str[pos] == '{' || str[pos] == '}') break; } return pos; } template constexpr auto compile_format_string(S format_str); template constexpr auto parse_tail(T head, S format_str) { if constexpr (POS != basic_string_view(format_str).size()) { constexpr auto tail = compile_format_string(format_str); if constexpr (std::is_same, unknown_format>()) return tail; else return make_concat(head, tail); } else { return head; } } template struct parse_specs_result { formatter fmt; size_t end; int next_arg_id; }; constexpr int manual_indexing_id = -1; template constexpr parse_specs_result parse_specs(basic_string_view str, size_t pos, int next_arg_id) { str.remove_prefix(pos); auto ctx = compile_parse_context(str, max_value(), nullptr, {}, next_arg_id); auto f = formatter(); auto end = f.parse(ctx); return {f, pos + fmt::detail::to_unsigned(end - str.data()), next_arg_id == 0 ? manual_indexing_id : ctx.next_arg_id()}; } template struct arg_id_handler { arg_ref arg_id; constexpr int operator()() { FMT_ASSERT(false, "handler cannot be used with automatic indexing"); return 0; } constexpr int operator()(int id) { arg_id = arg_ref(id); return 0; } constexpr int operator()(basic_string_view id) { arg_id = arg_ref(id); return 0; } constexpr void on_error(const char* message) { FMT_THROW(format_error(message)); } }; template struct parse_arg_id_result { arg_ref arg_id; const Char* arg_id_end; }; template constexpr auto parse_arg_id(const Char* begin, const Char* end) { auto handler = arg_id_handler{arg_ref{}}; auto arg_id_end = parse_arg_id(begin, end, handler); return parse_arg_id_result{handler.arg_id, arg_id_end}; } template struct field_type { using type = remove_cvref_t; }; template struct field_type::value>> { using type = remove_cvref_t; }; template constexpr auto parse_replacement_field_then_tail(S format_str) { using char_type = typename S::char_type; constexpr auto str = basic_string_view(format_str); constexpr char_type c = END_POS != str.size() ? str[END_POS] : char_type(); if constexpr (c == '}') { return parse_tail( field::type, ARG_INDEX>(), format_str); } else if constexpr (c != ':') { FMT_THROW(format_error("expected ':'")); } else { constexpr auto result = parse_specs::type>( str, END_POS + 1, NEXT_ID == manual_indexing_id ? 0 : NEXT_ID); if constexpr (result.end >= str.size() || str[result.end] != '}') { FMT_THROW(format_error("expected '}'")); return 0; } else { return parse_tail( spec_field::type, ARG_INDEX>{ result.fmt}, format_str); } } } // Compiles a non-empty format string and returns the compiled representation // or unknown_format() on unrecognized input. template constexpr auto compile_format_string(S format_str) { using char_type = typename S::char_type; constexpr auto str = basic_string_view(format_str); if constexpr (str[POS] == '{') { if constexpr (POS + 1 == str.size()) FMT_THROW(format_error("unmatched '{' in format string")); if constexpr (str[POS + 1] == '{') { return parse_tail(make_text(str, POS, 1), format_str); } else if constexpr (str[POS + 1] == '}' || str[POS + 1] == ':') { static_assert(ID != manual_indexing_id, "cannot switch from manual to automatic argument indexing"); constexpr auto next_id = ID != manual_indexing_id ? ID + 1 : manual_indexing_id; return parse_replacement_field_then_tail, Args, POS + 1, ID, next_id>( format_str); } else { constexpr auto arg_id_result = parse_arg_id(str.data() + POS + 1, str.data() + str.size()); constexpr auto arg_id_end_pos = arg_id_result.arg_id_end - str.data(); constexpr char_type c = arg_id_end_pos != str.size() ? str[arg_id_end_pos] : char_type(); static_assert(c == '}' || c == ':', "missing '}' in format string"); if constexpr (arg_id_result.arg_id.kind == arg_id_kind::index) { static_assert( ID == manual_indexing_id || ID == 0, "cannot switch from automatic to manual argument indexing"); constexpr auto arg_index = arg_id_result.arg_id.val.index; return parse_replacement_field_then_tail, Args, arg_id_end_pos, arg_index, manual_indexing_id>( format_str); } else if constexpr (arg_id_result.arg_id.kind == arg_id_kind::name) { constexpr auto arg_index = get_arg_index_by_name(arg_id_result.arg_id.val.name, Args{}); if constexpr (arg_index != invalid_arg_index) { constexpr auto next_id = ID != manual_indexing_id ? ID + 1 : manual_indexing_id; return parse_replacement_field_then_tail< decltype(get_type::value), Args, arg_id_end_pos, arg_index, next_id>(format_str); } else { if constexpr (c == '}') { return parse_tail( runtime_named_field{arg_id_result.arg_id.val.name}, format_str); } else if constexpr (c == ':') { return unknown_format(); // no type info for specs parsing } } } } } else if constexpr (str[POS] == '}') { if constexpr (POS + 1 == str.size()) FMT_THROW(format_error("unmatched '}' in format string")); return parse_tail(make_text(str, POS, 1), format_str); } else { constexpr auto end = parse_text(str, POS + 1); if constexpr (end - POS > 1) { return parse_tail(make_text(str, POS, end - POS), format_str); } else { return parse_tail(code_unit{str[POS]}, format_str); } } } template ::value)> constexpr auto compile(S format_str) { constexpr auto str = basic_string_view(format_str); if constexpr (str.size() == 0) { return detail::make_text(str, 0, 0); } else { constexpr auto result = detail::compile_format_string, 0, 0>( format_str); return result; } } #endif // defined(__cpp_if_constexpr) && defined(__cpp_return_type_deduction) } // namespace detail FMT_MODULE_EXPORT_BEGIN #if defined(__cpp_if_constexpr) && defined(__cpp_return_type_deduction) template ::value)> FMT_INLINE std::basic_string format(const CompiledFormat& cf, const Args&... args) { auto s = std::basic_string(); cf.format(std::back_inserter(s), args...); return s; } template ::value)> constexpr FMT_INLINE OutputIt format_to(OutputIt out, const CompiledFormat& cf, const Args&... args) { return cf.format(out, args...); } template ::value)> FMT_INLINE std::basic_string format(const S&, Args&&... args) { if constexpr (std::is_same::value) { constexpr auto str = basic_string_view(S()); if constexpr (str.size() == 2 && str[0] == '{' && str[1] == '}') { const auto& first = detail::first(args...); if constexpr (detail::is_named_arg< remove_cvref_t>::value) { return fmt::to_string(first.value); } else { return fmt::to_string(first); } } } constexpr auto compiled = detail::compile(S()); if constexpr (std::is_same, detail::unknown_format>()) { return fmt::format( static_cast>(S()), std::forward(args)...); } else { return fmt::format(compiled, std::forward(args)...); } } template ::value)> FMT_CONSTEXPR OutputIt format_to(OutputIt out, const S&, Args&&... args) { constexpr auto compiled = detail::compile(S()); if constexpr (std::is_same, detail::unknown_format>()) { return fmt::format_to( out, static_cast>(S()), std::forward(args)...); } else { return fmt::format_to(out, compiled, std::forward(args)...); } } #endif template ::value)> format_to_n_result format_to_n(OutputIt out, size_t n, const S& format_str, Args&&... args) { auto it = fmt::format_to(detail::truncating_iterator(out, n), format_str, std::forward(args)...); return {it.base(), it.count()}; } template ::value)> FMT_CONSTEXPR20 size_t formatted_size(const S& format_str, const Args&... args) { return fmt::format_to(detail::counting_iterator(), format_str, args...) .count(); } template ::value)> void print(std::FILE* f, const S& format_str, const Args&... args) { memory_buffer buffer; fmt::format_to(std::back_inserter(buffer), format_str, args...); detail::print(f, {buffer.data(), buffer.size()}); } template ::value)> void print(const S& format_str, const Args&... args) { print(stdout, format_str, args...); } #if FMT_USE_NONTYPE_TEMPLATE_ARGS inline namespace literals { template constexpr auto operator""_cf() { using char_t = remove_cvref_t; return detail::udl_compiled_string(); } } // namespace literals #endif FMT_MODULE_EXPORT_END FMT_END_NAMESPACE #endif // FMT_COMPILE_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/core.h ================================================ // Formatting library for C++ - the core API for char/UTF-8 // // Copyright (c) 2012 - present, Victor Zverovich // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_CORE_H_ #define FMT_CORE_H_ #include // std::byte #include // std::FILE #include // std::strlen #include #include #include #include // The fmt library version in the form major * 10000 + minor * 100 + patch. #define FMT_VERSION 90100 #if defined(__clang__) && !defined(__ibmxl__) # define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__) #else # define FMT_CLANG_VERSION 0 #endif #if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && \ !defined(__NVCOMPILER) # define FMT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) #else # define FMT_GCC_VERSION 0 #endif #ifndef FMT_GCC_PRAGMA // Workaround _Pragma bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59884. # if FMT_GCC_VERSION >= 504 # define FMT_GCC_PRAGMA(arg) _Pragma(arg) # else # define FMT_GCC_PRAGMA(arg) # endif #endif #ifdef __ICL # define FMT_ICC_VERSION __ICL #elif defined(__INTEL_COMPILER) # define FMT_ICC_VERSION __INTEL_COMPILER #else # define FMT_ICC_VERSION 0 #endif #ifdef _MSC_VER # define FMT_MSC_VERSION _MSC_VER # define FMT_MSC_WARNING(...) __pragma(warning(__VA_ARGS__)) #else # define FMT_MSC_VERSION 0 # define FMT_MSC_WARNING(...) #endif #ifdef _MSVC_LANG # define FMT_CPLUSPLUS _MSVC_LANG #else # define FMT_CPLUSPLUS __cplusplus #endif #ifdef __has_feature # define FMT_HAS_FEATURE(x) __has_feature(x) #else # define FMT_HAS_FEATURE(x) 0 #endif #if (defined(__has_include) || FMT_ICC_VERSION >= 1600 || \ FMT_MSC_VERSION > 1900) && \ !defined(__INTELLISENSE__) # define FMT_HAS_INCLUDE(x) __has_include(x) #else # define FMT_HAS_INCLUDE(x) 0 #endif #ifdef __has_cpp_attribute # define FMT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) #else # define FMT_HAS_CPP_ATTRIBUTE(x) 0 #endif #define FMT_HAS_CPP14_ATTRIBUTE(attribute) \ (FMT_CPLUSPLUS >= 201402L && FMT_HAS_CPP_ATTRIBUTE(attribute)) #define FMT_HAS_CPP17_ATTRIBUTE(attribute) \ (FMT_CPLUSPLUS >= 201703L && FMT_HAS_CPP_ATTRIBUTE(attribute)) // Check if relaxed C++14 constexpr is supported. // GCC doesn't allow throw in constexpr until version 6 (bug 67371). #ifndef FMT_USE_CONSTEXPR # if (FMT_HAS_FEATURE(cxx_relaxed_constexpr) || FMT_MSC_VERSION >= 1912 || \ (FMT_GCC_VERSION >= 600 && FMT_CPLUSPLUS >= 201402L)) && \ !FMT_ICC_VERSION && !defined(__NVCC__) # define FMT_USE_CONSTEXPR 1 # else # define FMT_USE_CONSTEXPR 0 # endif #endif #if FMT_USE_CONSTEXPR # define FMT_CONSTEXPR constexpr #else # define FMT_CONSTEXPR #endif #if ((FMT_CPLUSPLUS >= 202002L) && \ (!defined(_GLIBCXX_RELEASE) || _GLIBCXX_RELEASE > 9)) || \ (FMT_CPLUSPLUS >= 201709L && FMT_GCC_VERSION >= 1002) # define FMT_CONSTEXPR20 constexpr #else # define FMT_CONSTEXPR20 #endif // Check if constexpr std::char_traits<>::{compare,length} are supported. #if defined(__GLIBCXX__) # if FMT_CPLUSPLUS >= 201703L && defined(_GLIBCXX_RELEASE) && \ _GLIBCXX_RELEASE >= 7 // GCC 7+ libstdc++ has _GLIBCXX_RELEASE. # define FMT_CONSTEXPR_CHAR_TRAITS constexpr # endif #elif defined(_LIBCPP_VERSION) && FMT_CPLUSPLUS >= 201703L && \ _LIBCPP_VERSION >= 4000 # define FMT_CONSTEXPR_CHAR_TRAITS constexpr #elif FMT_MSC_VERSION >= 1914 && FMT_CPLUSPLUS >= 201703L # define FMT_CONSTEXPR_CHAR_TRAITS constexpr #endif #ifndef FMT_CONSTEXPR_CHAR_TRAITS # define FMT_CONSTEXPR_CHAR_TRAITS #endif // Check if exceptions are disabled. #ifndef FMT_EXCEPTIONS # if (defined(__GNUC__) && !defined(__EXCEPTIONS)) || \ (FMT_MSC_VERSION && !_HAS_EXCEPTIONS) # define FMT_EXCEPTIONS 0 # else # define FMT_EXCEPTIONS 1 # endif #endif #ifndef FMT_DEPRECATED # if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VERSION >= 1900 # define FMT_DEPRECATED [[deprecated]] # else # if (defined(__GNUC__) && !defined(__LCC__)) || defined(__clang__) # define FMT_DEPRECATED __attribute__((deprecated)) # elif FMT_MSC_VERSION # define FMT_DEPRECATED __declspec(deprecated) # else # define FMT_DEPRECATED /* deprecated */ # endif # endif #endif // [[noreturn]] is disabled on MSVC and NVCC because of bogus unreachable code // warnings. #if FMT_EXCEPTIONS && FMT_HAS_CPP_ATTRIBUTE(noreturn) && !FMT_MSC_VERSION && \ !defined(__NVCC__) # define FMT_NORETURN [[noreturn]] #else # define FMT_NORETURN #endif #if FMT_HAS_CPP17_ATTRIBUTE(fallthrough) # define FMT_FALLTHROUGH [[fallthrough]] #elif defined(__clang__) # define FMT_FALLTHROUGH [[clang::fallthrough]] #elif FMT_GCC_VERSION >= 700 && \ (!defined(__EDG_VERSION__) || __EDG_VERSION__ >= 520) # define FMT_FALLTHROUGH [[gnu::fallthrough]] #else # define FMT_FALLTHROUGH #endif #ifndef FMT_NODISCARD # if FMT_HAS_CPP17_ATTRIBUTE(nodiscard) # define FMT_NODISCARD [[nodiscard]] # else # define FMT_NODISCARD # endif #endif #ifndef FMT_USE_FLOAT # define FMT_USE_FLOAT 1 #endif #ifndef FMT_USE_DOUBLE # define FMT_USE_DOUBLE 1 #endif #ifndef FMT_USE_LONG_DOUBLE # define FMT_USE_LONG_DOUBLE 1 #endif #ifndef FMT_INLINE # if FMT_GCC_VERSION || FMT_CLANG_VERSION # define FMT_INLINE inline __attribute__((always_inline)) # else # define FMT_INLINE inline # endif #endif // An inline std::forward replacement. #define FMT_FORWARD(...) static_cast(__VA_ARGS__) #ifdef _MSC_VER # define FMT_UNCHECKED_ITERATOR(It) \ using _Unchecked_type = It // Mark iterator as checked. #else # define FMT_UNCHECKED_ITERATOR(It) using unchecked_type = It #endif #ifndef FMT_BEGIN_NAMESPACE # define FMT_BEGIN_NAMESPACE \ namespace fmt { \ inline namespace v9 { # define FMT_END_NAMESPACE \ } \ } #endif #ifndef FMT_MODULE_EXPORT # define FMT_MODULE_EXPORT # define FMT_MODULE_EXPORT_BEGIN # define FMT_MODULE_EXPORT_END # define FMT_BEGIN_DETAIL_NAMESPACE namespace detail { # define FMT_END_DETAIL_NAMESPACE } #endif #if !defined(FMT_HEADER_ONLY) && defined(_WIN32) # define FMT_CLASS_API FMT_MSC_WARNING(suppress : 4275) # ifdef FMT_EXPORT # define FMT_API __declspec(dllexport) # elif defined(FMT_SHARED) # define FMT_API __declspec(dllimport) # endif #else # define FMT_CLASS_API # if defined(FMT_EXPORT) || defined(FMT_SHARED) # if defined(__GNUC__) || defined(__clang__) # define FMT_API __attribute__((visibility("default"))) # endif # endif #endif #ifndef FMT_API # define FMT_API #endif // libc++ supports string_view in pre-c++17. #if FMT_HAS_INCLUDE() && \ (FMT_CPLUSPLUS >= 201703L || defined(_LIBCPP_VERSION)) # include # define FMT_USE_STRING_VIEW #elif FMT_HAS_INCLUDE("experimental/string_view") && FMT_CPLUSPLUS >= 201402L # include # define FMT_USE_EXPERIMENTAL_STRING_VIEW #endif #ifndef FMT_UNICODE # define FMT_UNICODE !FMT_MSC_VERSION #endif #ifndef FMT_CONSTEVAL # if ((FMT_GCC_VERSION >= 1000 || FMT_CLANG_VERSION >= 1101) && \ FMT_CPLUSPLUS >= 202002L && !defined(__apple_build_version__)) || \ (defined(__cpp_consteval) && \ (!FMT_MSC_VERSION || _MSC_FULL_VER >= 193030704)) // consteval is broken in MSVC before VS2022 and Apple clang 13. # define FMT_CONSTEVAL consteval # define FMT_HAS_CONSTEVAL # else # define FMT_CONSTEVAL # endif #endif #ifndef FMT_USE_NONTYPE_TEMPLATE_ARGS # if defined(__cpp_nontype_template_args) && \ ((FMT_GCC_VERSION >= 903 && FMT_CPLUSPLUS >= 201709L) || \ __cpp_nontype_template_args >= 201911L) && \ !defined(__NVCOMPILER) # define FMT_USE_NONTYPE_TEMPLATE_ARGS 1 # else # define FMT_USE_NONTYPE_TEMPLATE_ARGS 0 # endif #endif // Enable minimal optimizations for more compact code in debug mode. FMT_GCC_PRAGMA("GCC push_options") #if !defined(__OPTIMIZE__) && !defined(__NVCOMPILER) FMT_GCC_PRAGMA("GCC optimize(\"Og\")") #endif FMT_BEGIN_NAMESPACE FMT_MODULE_EXPORT_BEGIN // Implementations of enable_if_t and other metafunctions for older systems. template using enable_if_t = typename std::enable_if::type; template using conditional_t = typename std::conditional::type; template using bool_constant = std::integral_constant; template using remove_reference_t = typename std::remove_reference::type; template using remove_const_t = typename std::remove_const::type; template using remove_cvref_t = typename std::remove_cv>::type; template struct type_identity { using type = T; }; template using type_identity_t = typename type_identity::type; template using underlying_t = typename std::underlying_type::type; template struct disjunction : std::false_type {}; template struct disjunction

: P {}; template struct disjunction : conditional_t> {}; template struct conjunction : std::true_type {}; template struct conjunction

: P {}; template struct conjunction : conditional_t, P1> {}; struct monostate { constexpr monostate() {} }; // An enable_if helper to be used in template parameters which results in much // shorter symbols: https://godbolt.org/z/sWw4vP. Extra parentheses are needed // to workaround a bug in MSVC 2019 (see #1140 and #1186). #ifdef FMT_DOC # define FMT_ENABLE_IF(...) #else # define FMT_ENABLE_IF(...) enable_if_t<(__VA_ARGS__), int> = 0 #endif FMT_BEGIN_DETAIL_NAMESPACE // Suppresses "unused variable" warnings with the method described in // https://herbsutter.com/2009/10/18/mailbag-shutting-up-compiler-warnings/. // (void)var does not work on many Intel compilers. template FMT_CONSTEXPR void ignore_unused(const T&...) {} constexpr FMT_INLINE auto is_constant_evaluated( bool default_value = false) noexcept -> bool { #ifdef __cpp_lib_is_constant_evaluated ignore_unused(default_value); return std::is_constant_evaluated(); #else return default_value; #endif } // Suppresses "conditional expression is constant" warnings. template constexpr FMT_INLINE auto const_check(T value) -> T { return value; } FMT_NORETURN FMT_API void assert_fail(const char* file, int line, const char* message); #ifndef FMT_ASSERT # ifdef NDEBUG // FMT_ASSERT is not empty to avoid -Wempty-body. # define FMT_ASSERT(condition, message) \ ::fmt::detail::ignore_unused((condition), (message)) # else # define FMT_ASSERT(condition, message) \ ((condition) /* void() fails with -Winvalid-constexpr on clang 4.0.1 */ \ ? (void)0 \ : ::fmt::detail::assert_fail(__FILE__, __LINE__, (message))) # endif #endif #if defined(FMT_USE_STRING_VIEW) template using std_string_view = std::basic_string_view; #elif defined(FMT_USE_EXPERIMENTAL_STRING_VIEW) template using std_string_view = std::experimental::basic_string_view; #else template struct std_string_view {}; #endif #ifdef FMT_USE_INT128 // Do nothing. #elif defined(__SIZEOF_INT128__) && !defined(__NVCC__) && \ !(FMT_CLANG_VERSION && FMT_MSC_VERSION) # define FMT_USE_INT128 1 using int128_opt = __int128_t; // An optional native 128-bit integer. using uint128_opt = __uint128_t; template inline auto convert_for_visit(T value) -> T { return value; } #else # define FMT_USE_INT128 0 #endif #if !FMT_USE_INT128 enum class int128_opt {}; enum class uint128_opt {}; // Reduce template instantiations. template auto convert_for_visit(T) -> monostate { return {}; } #endif // Casts a nonnegative integer to unsigned. template FMT_CONSTEXPR auto to_unsigned(Int value) -> typename std::make_unsigned::type { FMT_ASSERT(std::is_unsigned::value || value >= 0, "negative value"); return static_cast::type>(value); } FMT_MSC_WARNING(suppress : 4566) constexpr unsigned char micro[] = "\u00B5"; constexpr auto is_utf8() -> bool { // Avoid buggy sign extensions in MSVC's constant evaluation mode (#2297). using uchar = unsigned char; return FMT_UNICODE || (sizeof(micro) == 3 && uchar(micro[0]) == 0xC2 && uchar(micro[1]) == 0xB5); } FMT_END_DETAIL_NAMESPACE /** An implementation of ``std::basic_string_view`` for pre-C++17. It provides a subset of the API. ``fmt::basic_string_view`` is used for format strings even if ``std::string_view`` is available to prevent issues when a library is compiled with a different ``-std`` option than the client code (which is not recommended). */ template class basic_string_view { private: const Char* data_; size_t size_; public: using value_type = Char; using iterator = const Char*; constexpr basic_string_view() noexcept : data_(nullptr), size_(0) {} /** Constructs a string reference object from a C string and a size. */ constexpr basic_string_view(const Char* s, size_t count) noexcept : data_(s), size_(count) {} /** \rst Constructs a string reference object from a C string computing the size with ``std::char_traits::length``. \endrst */ FMT_CONSTEXPR_CHAR_TRAITS FMT_INLINE basic_string_view(const Char* s) : data_(s), size_(detail::const_check(std::is_same::value && !detail::is_constant_evaluated(true)) ? std::strlen(reinterpret_cast(s)) : std::char_traits::length(s)) {} /** Constructs a string reference from a ``std::basic_string`` object. */ template FMT_CONSTEXPR basic_string_view( const std::basic_string& s) noexcept : data_(s.data()), size_(s.size()) {} template >::value)> FMT_CONSTEXPR basic_string_view(S s) noexcept : data_(s.data()), size_(s.size()) {} /** Returns a pointer to the string data. */ constexpr auto data() const noexcept -> const Char* { return data_; } /** Returns the string size. */ constexpr auto size() const noexcept -> size_t { return size_; } constexpr auto begin() const noexcept -> iterator { return data_; } constexpr auto end() const noexcept -> iterator { return data_ + size_; } constexpr auto operator[](size_t pos) const noexcept -> const Char& { return data_[pos]; } FMT_CONSTEXPR void remove_prefix(size_t n) noexcept { data_ += n; size_ -= n; } // Lexicographically compare this string reference to other. FMT_CONSTEXPR_CHAR_TRAITS auto compare(basic_string_view other) const -> int { size_t str_size = size_ < other.size_ ? size_ : other.size_; int result = std::char_traits::compare(data_, other.data_, str_size); if (result == 0) result = size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1); return result; } FMT_CONSTEXPR_CHAR_TRAITS friend auto operator==(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) == 0; } friend auto operator!=(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) != 0; } friend auto operator<(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) < 0; } friend auto operator<=(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) <= 0; } friend auto operator>(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) > 0; } friend auto operator>=(basic_string_view lhs, basic_string_view rhs) -> bool { return lhs.compare(rhs) >= 0; } }; using string_view = basic_string_view; /** Specifies if ``T`` is a character type. Can be specialized by users. */ template struct is_char : std::false_type {}; template <> struct is_char : std::true_type {}; FMT_BEGIN_DETAIL_NAMESPACE // A base class for compile-time strings. struct compile_string {}; template struct is_compile_string : std::is_base_of {}; // Returns a string view of `s`. template ::value)> FMT_INLINE auto to_string_view(const Char* s) -> basic_string_view { return s; } template inline auto to_string_view(const std::basic_string& s) -> basic_string_view { return s; } template constexpr auto to_string_view(basic_string_view s) -> basic_string_view { return s; } template >::value)> inline auto to_string_view(std_string_view s) -> basic_string_view { return s; } template ::value)> constexpr auto to_string_view(const S& s) -> basic_string_view { return basic_string_view(s); } void to_string_view(...); // Specifies whether S is a string type convertible to fmt::basic_string_view. // It should be a constexpr function but MSVC 2017 fails to compile it in // enable_if and MSVC 2015 fails to compile it as an alias template. // ADL invocation of to_string_view is DEPRECATED! template struct is_string : std::is_class()))> { }; template struct char_t_impl {}; template struct char_t_impl::value>> { using result = decltype(to_string_view(std::declval())); using type = typename result::value_type; }; enum class type { none_type, // Integer types should go first, int_type, uint_type, long_long_type, ulong_long_type, int128_type, uint128_type, bool_type, char_type, last_integer_type = char_type, // followed by floating-point types. float_type, double_type, long_double_type, last_numeric_type = long_double_type, cstring_type, string_type, pointer_type, custom_type }; // Maps core type T to the corresponding type enum constant. template struct type_constant : std::integral_constant {}; #define FMT_TYPE_CONSTANT(Type, constant) \ template \ struct type_constant \ : std::integral_constant {} FMT_TYPE_CONSTANT(int, int_type); FMT_TYPE_CONSTANT(unsigned, uint_type); FMT_TYPE_CONSTANT(long long, long_long_type); FMT_TYPE_CONSTANT(unsigned long long, ulong_long_type); FMT_TYPE_CONSTANT(int128_opt, int128_type); FMT_TYPE_CONSTANT(uint128_opt, uint128_type); FMT_TYPE_CONSTANT(bool, bool_type); FMT_TYPE_CONSTANT(Char, char_type); FMT_TYPE_CONSTANT(float, float_type); FMT_TYPE_CONSTANT(double, double_type); FMT_TYPE_CONSTANT(long double, long_double_type); FMT_TYPE_CONSTANT(const Char*, cstring_type); FMT_TYPE_CONSTANT(basic_string_view, string_type); FMT_TYPE_CONSTANT(const void*, pointer_type); constexpr bool is_integral_type(type t) { return t > type::none_type && t <= type::last_integer_type; } constexpr bool is_arithmetic_type(type t) { return t > type::none_type && t <= type::last_numeric_type; } FMT_NORETURN FMT_API void throw_format_error(const char* message); struct error_handler { constexpr error_handler() = default; constexpr error_handler(const error_handler&) = default; // This function is intentionally not constexpr to give a compile-time error. FMT_NORETURN void on_error(const char* message) { throw_format_error(message); } }; FMT_END_DETAIL_NAMESPACE /** String's character type. */ template using char_t = typename detail::char_t_impl::type; /** \rst Parsing context consisting of a format string range being parsed and an argument counter for automatic indexing. You can use the ``format_parse_context`` type alias for ``char`` instead. \endrst */ template class basic_format_parse_context : private ErrorHandler { private: basic_string_view format_str_; int next_arg_id_; FMT_CONSTEXPR void do_check_arg_id(int id); public: using char_type = Char; using iterator = typename basic_string_view::iterator; explicit constexpr basic_format_parse_context( basic_string_view format_str, ErrorHandler eh = {}, int next_arg_id = 0) : ErrorHandler(eh), format_str_(format_str), next_arg_id_(next_arg_id) {} /** Returns an iterator to the beginning of the format string range being parsed. */ constexpr auto begin() const noexcept -> iterator { return format_str_.begin(); } /** Returns an iterator past the end of the format string range being parsed. */ constexpr auto end() const noexcept -> iterator { return format_str_.end(); } /** Advances the begin iterator to ``it``. */ FMT_CONSTEXPR void advance_to(iterator it) { format_str_.remove_prefix(detail::to_unsigned(it - begin())); } /** Reports an error if using the manual argument indexing; otherwise returns the next argument index and switches to the automatic indexing. */ FMT_CONSTEXPR auto next_arg_id() -> int { if (next_arg_id_ < 0) { on_error("cannot switch from manual to automatic argument indexing"); return 0; } int id = next_arg_id_++; do_check_arg_id(id); return id; } /** Reports an error if using the automatic argument indexing; otherwise switches to the manual indexing. */ FMT_CONSTEXPR void check_arg_id(int id) { if (next_arg_id_ > 0) { on_error("cannot switch from automatic to manual argument indexing"); return; } next_arg_id_ = -1; do_check_arg_id(id); } FMT_CONSTEXPR void check_arg_id(basic_string_view) {} FMT_CONSTEXPR void check_dynamic_spec(int arg_id); FMT_CONSTEXPR void on_error(const char* message) { ErrorHandler::on_error(message); } constexpr auto error_handler() const -> ErrorHandler { return *this; } }; using format_parse_context = basic_format_parse_context; FMT_BEGIN_DETAIL_NAMESPACE // A parse context with extra data used only in compile-time checks. template class compile_parse_context : public basic_format_parse_context { private: int num_args_; const type* types_; using base = basic_format_parse_context; public: explicit FMT_CONSTEXPR compile_parse_context( basic_string_view format_str, int num_args, const type* types, ErrorHandler eh = {}, int next_arg_id = 0) : base(format_str, eh, next_arg_id), num_args_(num_args), types_(types) {} constexpr auto num_args() const -> int { return num_args_; } constexpr auto arg_type(int id) const -> type { return types_[id]; } FMT_CONSTEXPR auto next_arg_id() -> int { int id = base::next_arg_id(); if (id >= num_args_) this->on_error("argument not found"); return id; } FMT_CONSTEXPR void check_arg_id(int id) { base::check_arg_id(id); if (id >= num_args_) this->on_error("argument not found"); } using base::check_arg_id; FMT_CONSTEXPR void check_dynamic_spec(int arg_id) { if (arg_id < num_args_ && types_ && !is_integral_type(types_[arg_id])) this->on_error("width/precision is not integer"); } }; FMT_END_DETAIL_NAMESPACE template FMT_CONSTEXPR void basic_format_parse_context::do_check_arg_id(int id) { // Argument id is only checked at compile-time during parsing because // formatting has its own validation. if (detail::is_constant_evaluated() && FMT_GCC_VERSION >= 1200) { using context = detail::compile_parse_context; if (id >= static_cast(this)->num_args()) on_error("argument not found"); } } template FMT_CONSTEXPR void basic_format_parse_context::check_dynamic_spec(int arg_id) { if (detail::is_constant_evaluated()) { using context = detail::compile_parse_context; static_cast(this)->check_dynamic_spec(arg_id); } } template class basic_format_arg; template class basic_format_args; template class dynamic_format_arg_store; // A formatter for objects of type T. template struct formatter { // A deleted default constructor indicates a disabled formatter. formatter() = delete; }; // Specifies if T has an enabled formatter specialization. A type can be // formattable even if it doesn't have a formatter e.g. via a conversion. template using has_formatter = std::is_constructible>; // Checks whether T is a container with contiguous storage. template struct is_contiguous : std::false_type {}; template struct is_contiguous> : std::true_type {}; class appender; FMT_BEGIN_DETAIL_NAMESPACE template constexpr auto has_const_formatter_impl(T*) -> decltype(typename Context::template formatter_type().format( std::declval(), std::declval()), true) { return true; } template constexpr auto has_const_formatter_impl(...) -> bool { return false; } template constexpr auto has_const_formatter() -> bool { return has_const_formatter_impl(static_cast(nullptr)); } // Extracts a reference to the container from back_insert_iterator. template inline auto get_container(std::back_insert_iterator it) -> Container& { using base = std::back_insert_iterator; struct accessor : base { accessor(base b) : base(b) {} using base::container; }; return *accessor(it).container; } template FMT_CONSTEXPR auto copy_str(InputIt begin, InputIt end, OutputIt out) -> OutputIt { while (begin != end) *out++ = static_cast(*begin++); return out; } template , U>::value&& is_char::value)> FMT_CONSTEXPR auto copy_str(T* begin, T* end, U* out) -> U* { if (is_constant_evaluated()) return copy_str(begin, end, out); auto size = to_unsigned(end - begin); memcpy(out, begin, size * sizeof(U)); return out + size; } /** \rst A contiguous memory buffer with an optional growing ability. It is an internal class and shouldn't be used directly, only via `~fmt::basic_memory_buffer`. \endrst */ template class buffer { private: T* ptr_; size_t size_; size_t capacity_; protected: // Don't initialize ptr_ since it is not accessed to save a few cycles. FMT_MSC_WARNING(suppress : 26495) buffer(size_t sz) noexcept : size_(sz), capacity_(sz) {} FMT_CONSTEXPR20 buffer(T* p = nullptr, size_t sz = 0, size_t cap = 0) noexcept : ptr_(p), size_(sz), capacity_(cap) {} FMT_CONSTEXPR20 ~buffer() = default; buffer(buffer&&) = default; /** Sets the buffer data and capacity. */ FMT_CONSTEXPR void set(T* buf_data, size_t buf_capacity) noexcept { ptr_ = buf_data; capacity_ = buf_capacity; } /** Increases the buffer capacity to hold at least *capacity* elements. */ virtual FMT_CONSTEXPR20 void grow(size_t capacity) = 0; public: using value_type = T; using const_reference = const T&; buffer(const buffer&) = delete; void operator=(const buffer&) = delete; auto begin() noexcept -> T* { return ptr_; } auto end() noexcept -> T* { return ptr_ + size_; } auto begin() const noexcept -> const T* { return ptr_; } auto end() const noexcept -> const T* { return ptr_ + size_; } /** Returns the size of this buffer. */ constexpr auto size() const noexcept -> size_t { return size_; } /** Returns the capacity of this buffer. */ constexpr auto capacity() const noexcept -> size_t { return capacity_; } /** Returns a pointer to the buffer data. */ FMT_CONSTEXPR auto data() noexcept -> T* { return ptr_; } /** Returns a pointer to the buffer data. */ FMT_CONSTEXPR auto data() const noexcept -> const T* { return ptr_; } /** Clears this buffer. */ void clear() { size_ = 0; } // Tries resizing the buffer to contain *count* elements. If T is a POD type // the new elements may not be initialized. FMT_CONSTEXPR20 void try_resize(size_t count) { try_reserve(count); size_ = count <= capacity_ ? count : capacity_; } // Tries increasing the buffer capacity to *new_capacity*. It can increase the // capacity by a smaller amount than requested but guarantees there is space // for at least one additional element either by increasing the capacity or by // flushing the buffer if it is full. FMT_CONSTEXPR20 void try_reserve(size_t new_capacity) { if (new_capacity > capacity_) grow(new_capacity); } FMT_CONSTEXPR20 void push_back(const T& value) { try_reserve(size_ + 1); ptr_[size_++] = value; } /** Appends data to the end of the buffer. */ template void append(const U* begin, const U* end); template FMT_CONSTEXPR auto operator[](Idx index) -> T& { return ptr_[index]; } template FMT_CONSTEXPR auto operator[](Idx index) const -> const T& { return ptr_[index]; } }; struct buffer_traits { explicit buffer_traits(size_t) {} auto count() const -> size_t { return 0; } auto limit(size_t size) -> size_t { return size; } }; class fixed_buffer_traits { private: size_t count_ = 0; size_t limit_; public: explicit fixed_buffer_traits(size_t limit) : limit_(limit) {} auto count() const -> size_t { return count_; } auto limit(size_t size) -> size_t { size_t n = limit_ > count_ ? limit_ - count_ : 0; count_ += size; return size < n ? size : n; } }; // A buffer that writes to an output iterator when flushed. template class iterator_buffer final : public Traits, public buffer { private: OutputIt out_; enum { buffer_size = 256 }; T data_[buffer_size]; protected: FMT_CONSTEXPR20 void grow(size_t) override { if (this->size() == buffer_size) flush(); } void flush() { auto size = this->size(); this->clear(); out_ = copy_str(data_, data_ + this->limit(size), out_); } public: explicit iterator_buffer(OutputIt out, size_t n = buffer_size) : Traits(n), buffer(data_, 0, buffer_size), out_(out) {} iterator_buffer(iterator_buffer&& other) : Traits(other), buffer(data_, 0, buffer_size), out_(other.out_) {} ~iterator_buffer() { flush(); } auto out() -> OutputIt { flush(); return out_; } auto count() const -> size_t { return Traits::count() + this->size(); } }; template class iterator_buffer final : public fixed_buffer_traits, public buffer { private: T* out_; enum { buffer_size = 256 }; T data_[buffer_size]; protected: FMT_CONSTEXPR20 void grow(size_t) override { if (this->size() == this->capacity()) flush(); } void flush() { size_t n = this->limit(this->size()); if (this->data() == out_) { out_ += n; this->set(data_, buffer_size); } this->clear(); } public: explicit iterator_buffer(T* out, size_t n = buffer_size) : fixed_buffer_traits(n), buffer(out, 0, n), out_(out) {} iterator_buffer(iterator_buffer&& other) : fixed_buffer_traits(other), buffer(std::move(other)), out_(other.out_) { if (this->data() != out_) { this->set(data_, buffer_size); this->clear(); } } ~iterator_buffer() { flush(); } auto out() -> T* { flush(); return out_; } auto count() const -> size_t { return fixed_buffer_traits::count() + this->size(); } }; template class iterator_buffer final : public buffer { protected: FMT_CONSTEXPR20 void grow(size_t) override {} public: explicit iterator_buffer(T* out, size_t = 0) : buffer(out, 0, ~size_t()) {} auto out() -> T* { return &*this->end(); } }; // A buffer that writes to a container with the contiguous storage. template class iterator_buffer, enable_if_t::value, typename Container::value_type>> final : public buffer { private: Container& container_; protected: FMT_CONSTEXPR20 void grow(size_t capacity) override { container_.resize(capacity); this->set(&container_[0], capacity); } public: explicit iterator_buffer(Container& c) : buffer(c.size()), container_(c) {} explicit iterator_buffer(std::back_insert_iterator out, size_t = 0) : iterator_buffer(get_container(out)) {} auto out() -> std::back_insert_iterator { return std::back_inserter(container_); } }; // A buffer that counts the number of code units written discarding the output. template class counting_buffer final : public buffer { private: enum { buffer_size = 256 }; T data_[buffer_size]; size_t count_ = 0; protected: FMT_CONSTEXPR20 void grow(size_t) override { if (this->size() != buffer_size) return; count_ += this->size(); this->clear(); } public: counting_buffer() : buffer(data_, 0, buffer_size) {} auto count() -> size_t { return count_ + this->size(); } }; template using buffer_appender = conditional_t::value, appender, std::back_insert_iterator>>; // Maps an output iterator to a buffer. template auto get_buffer(OutputIt out) -> iterator_buffer { return iterator_buffer(out); } template auto get_iterator(Buffer& buf) -> decltype(buf.out()) { return buf.out(); } template auto get_iterator(buffer& buf) -> buffer_appender { return buffer_appender(buf); } template struct fallback_formatter { fallback_formatter() = delete; }; // Specifies if T has an enabled fallback_formatter specialization. template using has_fallback_formatter = #ifdef FMT_DEPRECATED_OSTREAM std::is_constructible>; #else std::false_type; #endif struct view {}; template struct named_arg : view { const Char* name; const T& value; named_arg(const Char* n, const T& v) : name(n), value(v) {} }; template struct named_arg_info { const Char* name; int id; }; template struct arg_data { // args_[0].named_args points to named_args_ to avoid bloating format_args. // +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning. T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : +1)]; named_arg_info named_args_[NUM_NAMED_ARGS]; template arg_data(const U&... init) : args_{T(named_args_, NUM_NAMED_ARGS), init...} {} arg_data(const arg_data& other) = delete; auto args() const -> const T* { return args_ + 1; } auto named_args() -> named_arg_info* { return named_args_; } }; template struct arg_data { // +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning. T args_[NUM_ARGS != 0 ? NUM_ARGS : +1]; template FMT_CONSTEXPR FMT_INLINE arg_data(const U&... init) : args_{init...} {} FMT_CONSTEXPR FMT_INLINE auto args() const -> const T* { return args_; } FMT_CONSTEXPR FMT_INLINE auto named_args() -> std::nullptr_t { return nullptr; } }; template inline void init_named_args(named_arg_info*, int, int) {} template struct is_named_arg : std::false_type {}; template struct is_statically_named_arg : std::false_type {}; template struct is_named_arg> : std::true_type {}; template ::value)> void init_named_args(named_arg_info* named_args, int arg_count, int named_arg_count, const T&, const Tail&... args) { init_named_args(named_args, arg_count + 1, named_arg_count, args...); } template ::value)> void init_named_args(named_arg_info* named_args, int arg_count, int named_arg_count, const T& arg, const Tail&... args) { named_args[named_arg_count++] = {arg.name, arg_count}; init_named_args(named_args, arg_count + 1, named_arg_count, args...); } template FMT_CONSTEXPR FMT_INLINE void init_named_args(std::nullptr_t, int, int, const Args&...) {} template constexpr auto count() -> size_t { return B ? 1 : 0; } template constexpr auto count() -> size_t { return (B1 ? 1 : 0) + count(); } template constexpr auto count_named_args() -> size_t { return count::value...>(); } template constexpr auto count_statically_named_args() -> size_t { return count::value...>(); } struct unformattable {}; struct unformattable_char : unformattable {}; struct unformattable_const : unformattable {}; struct unformattable_pointer : unformattable {}; template struct string_value { const Char* data; size_t size; }; template struct named_arg_value { const named_arg_info* data; size_t size; }; template struct custom_value { using parse_context = typename Context::parse_context_type; void* value; void (*format)(void* arg, parse_context& parse_ctx, Context& ctx); }; // A formatting argument value. template class value { public: using char_type = typename Context::char_type; union { monostate no_value; int int_value; unsigned uint_value; long long long_long_value; unsigned long long ulong_long_value; int128_opt int128_value; uint128_opt uint128_value; bool bool_value; char_type char_value; float float_value; double double_value; long double long_double_value; const void* pointer; string_value string; custom_value custom; named_arg_value named_args; }; constexpr FMT_INLINE value() : no_value() {} constexpr FMT_INLINE value(int val) : int_value(val) {} constexpr FMT_INLINE value(unsigned val) : uint_value(val) {} constexpr FMT_INLINE value(long long val) : long_long_value(val) {} constexpr FMT_INLINE value(unsigned long long val) : ulong_long_value(val) {} FMT_INLINE value(int128_opt val) : int128_value(val) {} FMT_INLINE value(uint128_opt val) : uint128_value(val) {} constexpr FMT_INLINE value(float val) : float_value(val) {} constexpr FMT_INLINE value(double val) : double_value(val) {} FMT_INLINE value(long double val) : long_double_value(val) {} constexpr FMT_INLINE value(bool val) : bool_value(val) {} constexpr FMT_INLINE value(char_type val) : char_value(val) {} FMT_CONSTEXPR FMT_INLINE value(const char_type* val) { string.data = val; if (is_constant_evaluated()) string.size = {}; } FMT_CONSTEXPR FMT_INLINE value(basic_string_view val) { string.data = val.data(); string.size = val.size(); } FMT_INLINE value(const void* val) : pointer(val) {} FMT_INLINE value(const named_arg_info* args, size_t size) : named_args{args, size} {} template FMT_CONSTEXPR FMT_INLINE value(T& val) { using value_type = remove_cvref_t; custom.value = const_cast(&val); // Get the formatter type through the context to allow different contexts // have different extension points, e.g. `formatter` for `format` and // `printf_formatter` for `printf`. custom.format = format_custom_arg< value_type, conditional_t::value, typename Context::template formatter_type, fallback_formatter>>; } value(unformattable); value(unformattable_char); value(unformattable_const); value(unformattable_pointer); private: // Formats an argument of a custom type, such as a user-defined class. template static void format_custom_arg(void* arg, typename Context::parse_context_type& parse_ctx, Context& ctx) { auto f = Formatter(); parse_ctx.advance_to(f.parse(parse_ctx)); using qualified_type = conditional_t(), const T, T>; ctx.advance_to(f.format(*static_cast(arg), ctx)); } }; template FMT_CONSTEXPR auto make_arg(T&& value) -> basic_format_arg; // To minimize the number of types we need to deal with, long is translated // either to int or to long long depending on its size. enum { long_short = sizeof(long) == sizeof(int) }; using long_type = conditional_t; using ulong_type = conditional_t; #ifdef __cpp_lib_byte inline auto format_as(std::byte b) -> unsigned char { return static_cast(b); } #endif template struct has_format_as { template ::value&& std::is_integral::value)> static auto check(U*) -> std::true_type; static auto check(...) -> std::false_type; enum { value = decltype(check(static_cast(nullptr)))::value }; }; // Maps formatting arguments to core types. // arg_mapper reports errors by returning unformattable instead of using // static_assert because it's used in the is_formattable trait. template struct arg_mapper { using char_type = typename Context::char_type; FMT_CONSTEXPR FMT_INLINE auto map(signed char val) -> int { return val; } FMT_CONSTEXPR FMT_INLINE auto map(unsigned char val) -> unsigned { return val; } FMT_CONSTEXPR FMT_INLINE auto map(short val) -> int { return val; } FMT_CONSTEXPR FMT_INLINE auto map(unsigned short val) -> unsigned { return val; } FMT_CONSTEXPR FMT_INLINE auto map(int val) -> int { return val; } FMT_CONSTEXPR FMT_INLINE auto map(unsigned val) -> unsigned { return val; } FMT_CONSTEXPR FMT_INLINE auto map(long val) -> long_type { return val; } FMT_CONSTEXPR FMT_INLINE auto map(unsigned long val) -> ulong_type { return val; } FMT_CONSTEXPR FMT_INLINE auto map(long long val) -> long long { return val; } FMT_CONSTEXPR FMT_INLINE auto map(unsigned long long val) -> unsigned long long { return val; } FMT_CONSTEXPR FMT_INLINE auto map(int128_opt val) -> int128_opt { return val; } FMT_CONSTEXPR FMT_INLINE auto map(uint128_opt val) -> uint128_opt { return val; } FMT_CONSTEXPR FMT_INLINE auto map(bool val) -> bool { return val; } template ::value || std::is_same::value)> FMT_CONSTEXPR FMT_INLINE auto map(T val) -> char_type { return val; } template ::value || #ifdef __cpp_char8_t std::is_same::value || #endif std::is_same::value || std::is_same::value) && !std::is_same::value, int> = 0> FMT_CONSTEXPR FMT_INLINE auto map(T) -> unformattable_char { return {}; } FMT_CONSTEXPR FMT_INLINE auto map(float val) -> float { return val; } FMT_CONSTEXPR FMT_INLINE auto map(double val) -> double { return val; } FMT_CONSTEXPR FMT_INLINE auto map(long double val) -> long double { return val; } FMT_CONSTEXPR FMT_INLINE auto map(char_type* val) -> const char_type* { return val; } FMT_CONSTEXPR FMT_INLINE auto map(const char_type* val) -> const char_type* { return val; } template ::value && !std::is_pointer::value && std::is_same>::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> basic_string_view { return to_string_view(val); } template ::value && !std::is_pointer::value && !std::is_same>::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T&) -> unformattable_char { return {}; } template >::value && !is_string::value && !has_formatter::value && !has_fallback_formatter::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> basic_string_view { return basic_string_view(val); } template >::value && !std::is_convertible>::value && !is_string::value && !has_formatter::value && !has_fallback_formatter::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> basic_string_view { return std_string_view(val); } FMT_CONSTEXPR FMT_INLINE auto map(void* val) -> const void* { return val; } FMT_CONSTEXPR FMT_INLINE auto map(const void* val) -> const void* { return val; } FMT_CONSTEXPR FMT_INLINE auto map(std::nullptr_t val) -> const void* { return val; } // We use SFINAE instead of a const T* parameter to avoid conflicting with // the C array overload. template < typename T, FMT_ENABLE_IF( std::is_pointer::value || std::is_member_pointer::value || std::is_function::type>::value || (std::is_convertible::value && !std::is_convertible::value && !has_formatter::value))> FMT_CONSTEXPR auto map(const T&) -> unformattable_pointer { return {}; } template ::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T (&values)[N]) -> const T (&)[N] { return values; } template ::value&& std::is_convertible::value && !has_format_as::value && !has_formatter::value && !has_fallback_formatter::value)> FMT_DEPRECATED FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(std::declval().map( static_cast>(val))) { return map(static_cast>(val)); } template ::value && !has_formatter::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(std::declval().map(format_as(T()))) { return map(format_as(val)); } template > struct formattable : bool_constant() || !std::is_const>::value || has_fallback_formatter::value> {}; #if (FMT_MSC_VERSION != 0 && FMT_MSC_VERSION < 1910) || \ FMT_ICC_VERSION != 0 || defined(__NVCC__) // Workaround a bug in MSVC and Intel (Issue 2746). template FMT_CONSTEXPR FMT_INLINE auto do_map(T&& val) -> T& { return val; } #else template ::value)> FMT_CONSTEXPR FMT_INLINE auto do_map(T&& val) -> T& { return val; } template ::value)> FMT_CONSTEXPR FMT_INLINE auto do_map(T&&) -> unformattable_const { return {}; } #endif template , FMT_ENABLE_IF(!is_string::value && !is_char::value && !std::is_array::value && !std::is_pointer::value && !has_format_as::value && (has_formatter::value || has_fallback_formatter::value))> FMT_CONSTEXPR FMT_INLINE auto map(T&& val) -> decltype(this->do_map(std::forward(val))) { return do_map(std::forward(val)); } template ::value)> FMT_CONSTEXPR FMT_INLINE auto map(const T& named_arg) -> decltype(std::declval().map(named_arg.value)) { return map(named_arg.value); } auto map(...) -> unformattable { return {}; } }; // A type constant after applying arg_mapper. template using mapped_type_constant = type_constant().map(std::declval())), typename Context::char_type>; enum { packed_arg_bits = 4 }; // Maximum number of arguments with packed types. enum { max_packed_args = 62 / packed_arg_bits }; enum : unsigned long long { is_unpacked_bit = 1ULL << 63 }; enum : unsigned long long { has_named_args_bit = 1ULL << 62 }; FMT_END_DETAIL_NAMESPACE // An output iterator that appends to a buffer. // It is used to reduce symbol sizes for the common case. class appender : public std::back_insert_iterator> { using base = std::back_insert_iterator>; template friend auto get_buffer(appender out) -> detail::buffer& { return detail::get_container(out); } public: using std::back_insert_iterator>::back_insert_iterator; appender(base it) noexcept : base(it) {} FMT_UNCHECKED_ITERATOR(appender); auto operator++() noexcept -> appender& { return *this; } auto operator++(int) noexcept -> appender { return *this; } }; // A formatting argument. It is a trivially copyable/constructible type to // allow storage in basic_memory_buffer. template class basic_format_arg { private: detail::value value_; detail::type type_; template friend FMT_CONSTEXPR auto detail::make_arg(T&& value) -> basic_format_arg; template friend FMT_CONSTEXPR auto visit_format_arg(Visitor&& vis, const basic_format_arg& arg) -> decltype(vis(0)); friend class basic_format_args; friend class dynamic_format_arg_store; using char_type = typename Context::char_type; template friend struct detail::arg_data; basic_format_arg(const detail::named_arg_info* args, size_t size) : value_(args, size) {} public: class handle { public: explicit handle(detail::custom_value custom) : custom_(custom) {} void format(typename Context::parse_context_type& parse_ctx, Context& ctx) const { custom_.format(custom_.value, parse_ctx, ctx); } private: detail::custom_value custom_; }; constexpr basic_format_arg() : type_(detail::type::none_type) {} constexpr explicit operator bool() const noexcept { return type_ != detail::type::none_type; } auto type() const -> detail::type { return type_; } auto is_integral() const -> bool { return detail::is_integral_type(type_); } auto is_arithmetic() const -> bool { return detail::is_arithmetic_type(type_); } }; /** \rst Visits an argument dispatching to the appropriate visit method based on the argument type. For example, if the argument type is ``double`` then ``vis(value)`` will be called with the value of type ``double``. \endrst */ template FMT_CONSTEXPR FMT_INLINE auto visit_format_arg( Visitor&& vis, const basic_format_arg& arg) -> decltype(vis(0)) { switch (arg.type_) { case detail::type::none_type: break; case detail::type::int_type: return vis(arg.value_.int_value); case detail::type::uint_type: return vis(arg.value_.uint_value); case detail::type::long_long_type: return vis(arg.value_.long_long_value); case detail::type::ulong_long_type: return vis(arg.value_.ulong_long_value); case detail::type::int128_type: return vis(detail::convert_for_visit(arg.value_.int128_value)); case detail::type::uint128_type: return vis(detail::convert_for_visit(arg.value_.uint128_value)); case detail::type::bool_type: return vis(arg.value_.bool_value); case detail::type::char_type: return vis(arg.value_.char_value); case detail::type::float_type: return vis(arg.value_.float_value); case detail::type::double_type: return vis(arg.value_.double_value); case detail::type::long_double_type: return vis(arg.value_.long_double_value); case detail::type::cstring_type: return vis(arg.value_.string.data); case detail::type::string_type: using sv = basic_string_view; return vis(sv(arg.value_.string.data, arg.value_.string.size)); case detail::type::pointer_type: return vis(arg.value_.pointer); case detail::type::custom_type: return vis(typename basic_format_arg::handle(arg.value_.custom)); } return vis(monostate()); } FMT_BEGIN_DETAIL_NAMESPACE template auto copy_str(InputIt begin, InputIt end, appender out) -> appender { get_container(out).append(begin, end); return out; } template FMT_CONSTEXPR auto copy_str(R&& rng, OutputIt out) -> OutputIt { return detail::copy_str(rng.begin(), rng.end(), out); } #if FMT_GCC_VERSION && FMT_GCC_VERSION < 500 // A workaround for gcc 4.8 to make void_t work in a SFINAE context. template struct void_t_impl { using type = void; }; template using void_t = typename detail::void_t_impl::type; #else template using void_t = void; #endif template struct is_output_iterator : std::false_type {}; template struct is_output_iterator< It, T, void_t::iterator_category, decltype(*std::declval() = std::declval())>> : std::true_type {}; template struct is_back_insert_iterator : std::false_type {}; template struct is_back_insert_iterator> : std::true_type {}; template struct is_contiguous_back_insert_iterator : std::false_type {}; template struct is_contiguous_back_insert_iterator> : is_contiguous {}; template <> struct is_contiguous_back_insert_iterator : std::true_type {}; // A type-erased reference to an std::locale to avoid a heavy include. class locale_ref { private: const void* locale_; // A type-erased pointer to std::locale. public: constexpr locale_ref() : locale_(nullptr) {} template explicit locale_ref(const Locale& loc); explicit operator bool() const noexcept { return locale_ != nullptr; } template auto get() const -> Locale; }; template constexpr auto encode_types() -> unsigned long long { return 0; } template constexpr auto encode_types() -> unsigned long long { return static_cast(mapped_type_constant::value) | (encode_types() << packed_arg_bits); } template FMT_CONSTEXPR FMT_INLINE auto make_value(T&& val) -> value { const auto& arg = arg_mapper().map(FMT_FORWARD(val)); constexpr bool formattable_char = !std::is_same::value; static_assert(formattable_char, "Mixing character types is disallowed."); constexpr bool formattable_const = !std::is_same::value; static_assert(formattable_const, "Cannot format a const argument."); // Formatting of arbitrary pointers is disallowed. If you want to output // a pointer cast it to "void *" or "const void *". In particular, this // forbids formatting of "[const] volatile char *" which is printed as bool // by iostreams. constexpr bool formattable_pointer = !std::is_same::value; static_assert(formattable_pointer, "Formatting of non-void pointers is disallowed."); constexpr bool formattable = !std::is_same::value; static_assert( formattable, "Cannot format an argument. To make type T formattable provide a " "formatter specialization: https://fmt.dev/latest/api.html#udt"); return {arg}; } template FMT_CONSTEXPR auto make_arg(T&& value) -> basic_format_arg { basic_format_arg arg; arg.type_ = mapped_type_constant::value; arg.value_ = make_value(value); return arg; } // The type template parameter is there to avoid an ODR violation when using // a fallback formatter in one translation unit and an implicit conversion in // another (not recommended). template FMT_CONSTEXPR FMT_INLINE auto make_arg(T&& val) -> value { return make_value(val); } template FMT_CONSTEXPR inline auto make_arg(T&& value) -> basic_format_arg { return make_arg(value); } FMT_END_DETAIL_NAMESPACE // Formatting context. template class basic_format_context { public: /** The character type for the output. */ using char_type = Char; private: OutputIt out_; basic_format_args args_; detail::locale_ref loc_; public: using iterator = OutputIt; using format_arg = basic_format_arg; using parse_context_type = basic_format_parse_context; template using formatter_type = formatter; basic_format_context(basic_format_context&&) = default; basic_format_context(const basic_format_context&) = delete; void operator=(const basic_format_context&) = delete; /** Constructs a ``basic_format_context`` object. References to the arguments are stored in the object so make sure they have appropriate lifetimes. */ constexpr basic_format_context( OutputIt out, basic_format_args ctx_args, detail::locale_ref loc = detail::locale_ref()) : out_(out), args_(ctx_args), loc_(loc) {} constexpr auto arg(int id) const -> format_arg { return args_.get(id); } FMT_CONSTEXPR auto arg(basic_string_view name) -> format_arg { return args_.get(name); } FMT_CONSTEXPR auto arg_id(basic_string_view name) -> int { return args_.get_id(name); } auto args() const -> const basic_format_args& { return args_; } FMT_CONSTEXPR auto error_handler() -> detail::error_handler { return {}; } void on_error(const char* message) { error_handler().on_error(message); } // Returns an iterator to the beginning of the output range. FMT_CONSTEXPR auto out() -> iterator { return out_; } // Advances the begin iterator to ``it``. void advance_to(iterator it) { if (!detail::is_back_insert_iterator()) out_ = it; } FMT_CONSTEXPR auto locale() -> detail::locale_ref { return loc_; } }; template using buffer_context = basic_format_context, Char>; using format_context = buffer_context; // Workaround an alias issue: https://stackoverflow.com/q/62767544/471164. #define FMT_BUFFER_CONTEXT(Char) \ basic_format_context, Char> template using is_formattable = bool_constant< !std::is_base_of>().map( std::declval()))>::value && !detail::has_fallback_formatter::value>; /** \rst An array of references to arguments. It can be implicitly converted into `~fmt::basic_format_args` for passing into type-erased formatting functions such as `~fmt::vformat`. \endrst */ template class format_arg_store #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 // Workaround a GCC template argument substitution bug. : public basic_format_args #endif { private: static const size_t num_args = sizeof...(Args); static const size_t num_named_args = detail::count_named_args(); static const bool is_packed = num_args <= detail::max_packed_args; using value_type = conditional_t, basic_format_arg>; detail::arg_data data_; friend class basic_format_args; static constexpr unsigned long long desc = (is_packed ? detail::encode_types() : detail::is_unpacked_bit | num_args) | (num_named_args != 0 ? static_cast(detail::has_named_args_bit) : 0); public: template FMT_CONSTEXPR FMT_INLINE format_arg_store(T&&... args) : #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 basic_format_args(*this), #endif data_{detail::make_arg< is_packed, Context, detail::mapped_type_constant, Context>::value>( FMT_FORWARD(args))...} { detail::init_named_args(data_.named_args(), 0, 0, args...); } }; /** \rst Constructs a `~fmt::format_arg_store` object that contains references to arguments and can be implicitly converted to `~fmt::format_args`. `Context` can be omitted in which case it defaults to `~fmt::context`. See `~fmt::arg` for lifetime considerations. \endrst */ template constexpr auto make_format_args(Args&&... args) -> format_arg_store...> { return {FMT_FORWARD(args)...}; } /** \rst Returns a named argument to be used in a formatting function. It should only be used in a call to a formatting function or `dynamic_format_arg_store::push_back`. **Example**:: fmt::print("Elapsed time: {s:.2f} seconds", fmt::arg("s", 1.23)); \endrst */ template inline auto arg(const Char* name, const T& arg) -> detail::named_arg { static_assert(!detail::is_named_arg(), "nested named arguments"); return {name, arg}; } /** \rst A view of a collection of formatting arguments. To avoid lifetime issues it should only be used as a parameter type in type-erased functions such as ``vformat``:: void vlog(string_view format_str, format_args args); // OK format_args args = make_format_args(42); // Error: dangling reference \endrst */ template class basic_format_args { public: using size_type = int; using format_arg = basic_format_arg; private: // A descriptor that contains information about formatting arguments. // If the number of arguments is less or equal to max_packed_args then // argument types are passed in the descriptor. This reduces binary code size // per formatting function call. unsigned long long desc_; union { // If is_packed() returns true then argument values are stored in values_; // otherwise they are stored in args_. This is done to improve cache // locality and reduce compiled code size since storing larger objects // may require more code (at least on x86-64) even if the same amount of // data is actually copied to stack. It saves ~10% on the bloat test. const detail::value* values_; const format_arg* args_; }; constexpr auto is_packed() const -> bool { return (desc_ & detail::is_unpacked_bit) == 0; } auto has_named_args() const -> bool { return (desc_ & detail::has_named_args_bit) != 0; } FMT_CONSTEXPR auto type(int index) const -> detail::type { int shift = index * detail::packed_arg_bits; unsigned int mask = (1 << detail::packed_arg_bits) - 1; return static_cast((desc_ >> shift) & mask); } constexpr FMT_INLINE basic_format_args(unsigned long long desc, const detail::value* values) : desc_(desc), values_(values) {} constexpr basic_format_args(unsigned long long desc, const format_arg* args) : desc_(desc), args_(args) {} public: constexpr basic_format_args() : desc_(0), args_(nullptr) {} /** \rst Constructs a `basic_format_args` object from `~fmt::format_arg_store`. \endrst */ template constexpr FMT_INLINE basic_format_args( const format_arg_store& store) : basic_format_args(format_arg_store::desc, store.data_.args()) {} /** \rst Constructs a `basic_format_args` object from `~fmt::dynamic_format_arg_store`. \endrst */ constexpr FMT_INLINE basic_format_args( const dynamic_format_arg_store& store) : basic_format_args(store.get_types(), store.data()) {} /** \rst Constructs a `basic_format_args` object from a dynamic set of arguments. \endrst */ constexpr basic_format_args(const format_arg* args, int count) : basic_format_args(detail::is_unpacked_bit | detail::to_unsigned(count), args) {} /** Returns the argument with the specified id. */ FMT_CONSTEXPR auto get(int id) const -> format_arg { format_arg arg; if (!is_packed()) { if (id < max_size()) arg = args_[id]; return arg; } if (id >= detail::max_packed_args) return arg; arg.type_ = type(id); if (arg.type_ == detail::type::none_type) return arg; arg.value_ = values_[id]; return arg; } template auto get(basic_string_view name) const -> format_arg { int id = get_id(name); return id >= 0 ? get(id) : format_arg(); } template auto get_id(basic_string_view name) const -> int { if (!has_named_args()) return -1; const auto& named_args = (is_packed() ? values_[-1] : args_[-1].value_).named_args; for (size_t i = 0; i < named_args.size; ++i) { if (named_args.data[i].name == name) return named_args.data[i].id; } return -1; } auto max_size() const -> int { unsigned long long max_packed = detail::max_packed_args; return static_cast(is_packed() ? max_packed : desc_ & ~detail::is_unpacked_bit); } }; /** An alias to ``basic_format_args``. */ // A separate type would result in shorter symbols but break ABI compatibility // between clang and gcc on ARM (#1919). using format_args = basic_format_args; // We cannot use enum classes as bit fields because of a gcc bug, so we put them // in namespaces instead (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61414). // Additionally, if an underlying type is specified, older gcc incorrectly warns // that the type is too small. Both bugs are fixed in gcc 9.3. #if FMT_GCC_VERSION && FMT_GCC_VERSION < 903 # define FMT_ENUM_UNDERLYING_TYPE(type) #else # define FMT_ENUM_UNDERLYING_TYPE(type) : type #endif namespace align { enum type FMT_ENUM_UNDERLYING_TYPE(unsigned char){none, left, right, center, numeric}; } using align_t = align::type; namespace sign { enum type FMT_ENUM_UNDERLYING_TYPE(unsigned char){none, minus, plus, space}; } using sign_t = sign::type; FMT_BEGIN_DETAIL_NAMESPACE // Workaround an array initialization issue in gcc 4.8. template struct fill_t { private: enum { max_size = 4 }; Char data_[max_size] = {Char(' '), Char(0), Char(0), Char(0)}; unsigned char size_ = 1; public: FMT_CONSTEXPR void operator=(basic_string_view s) { auto size = s.size(); if (size > max_size) return throw_format_error("invalid fill"); for (size_t i = 0; i < size; ++i) data_[i] = s[i]; size_ = static_cast(size); } constexpr auto size() const -> size_t { return size_; } constexpr auto data() const -> const Char* { return data_; } FMT_CONSTEXPR auto operator[](size_t index) -> Char& { return data_[index]; } FMT_CONSTEXPR auto operator[](size_t index) const -> const Char& { return data_[index]; } }; FMT_END_DETAIL_NAMESPACE enum class presentation_type : unsigned char { none, // Integer types should go first, dec, // 'd' oct, // 'o' hex_lower, // 'x' hex_upper, // 'X' bin_lower, // 'b' bin_upper, // 'B' hexfloat_lower, // 'a' hexfloat_upper, // 'A' exp_lower, // 'e' exp_upper, // 'E' fixed_lower, // 'f' fixed_upper, // 'F' general_lower, // 'g' general_upper, // 'G' chr, // 'c' string, // 's' pointer, // 'p' debug // '?' }; // Format specifiers for built-in and string types. template struct basic_format_specs { int width; int precision; presentation_type type; align_t align : 4; sign_t sign : 3; bool alt : 1; // Alternate form ('#'). bool localized : 1; detail::fill_t fill; constexpr basic_format_specs() : width(0), precision(-1), type(presentation_type::none), align(align::none), sign(sign::none), alt(false), localized(false) {} }; using format_specs = basic_format_specs; FMT_BEGIN_DETAIL_NAMESPACE enum class arg_id_kind { none, index, name }; // An argument reference. template struct arg_ref { FMT_CONSTEXPR arg_ref() : kind(arg_id_kind::none), val() {} FMT_CONSTEXPR explicit arg_ref(int index) : kind(arg_id_kind::index), val(index) {} FMT_CONSTEXPR explicit arg_ref(basic_string_view name) : kind(arg_id_kind::name), val(name) {} FMT_CONSTEXPR auto operator=(int idx) -> arg_ref& { kind = arg_id_kind::index; val.index = idx; return *this; } arg_id_kind kind; union value { FMT_CONSTEXPR value(int id = 0) : index{id} {} FMT_CONSTEXPR value(basic_string_view n) : name(n) {} int index; basic_string_view name; } val; }; // Format specifiers with width and precision resolved at formatting rather // than parsing time to allow re-using the same parsed specifiers with // different sets of arguments (precompilation of format strings). template struct dynamic_format_specs : basic_format_specs { arg_ref width_ref; arg_ref precision_ref; }; struct auto_id {}; // A format specifier handler that sets fields in basic_format_specs. template class specs_setter { protected: basic_format_specs& specs_; public: explicit FMT_CONSTEXPR specs_setter(basic_format_specs& specs) : specs_(specs) {} FMT_CONSTEXPR specs_setter(const specs_setter& other) : specs_(other.specs_) {} FMT_CONSTEXPR void on_align(align_t align) { specs_.align = align; } FMT_CONSTEXPR void on_fill(basic_string_view fill) { specs_.fill = fill; } FMT_CONSTEXPR void on_sign(sign_t s) { specs_.sign = s; } FMT_CONSTEXPR void on_hash() { specs_.alt = true; } FMT_CONSTEXPR void on_localized() { specs_.localized = true; } FMT_CONSTEXPR void on_zero() { if (specs_.align == align::none) specs_.align = align::numeric; specs_.fill[0] = Char('0'); } FMT_CONSTEXPR void on_width(int width) { specs_.width = width; } FMT_CONSTEXPR void on_precision(int precision) { specs_.precision = precision; } FMT_CONSTEXPR void end_precision() {} FMT_CONSTEXPR void on_type(presentation_type type) { specs_.type = type; } }; // Format spec handler that saves references to arguments representing dynamic // width and precision to be resolved at formatting time. template class dynamic_specs_handler : public specs_setter { public: using char_type = typename ParseContext::char_type; FMT_CONSTEXPR dynamic_specs_handler(dynamic_format_specs& specs, ParseContext& ctx) : specs_setter(specs), specs_(specs), context_(ctx) {} FMT_CONSTEXPR dynamic_specs_handler(const dynamic_specs_handler& other) : specs_setter(other), specs_(other.specs_), context_(other.context_) {} template FMT_CONSTEXPR void on_dynamic_width(Id arg_id) { specs_.width_ref = make_arg_ref(arg_id); } template FMT_CONSTEXPR void on_dynamic_precision(Id arg_id) { specs_.precision_ref = make_arg_ref(arg_id); } FMT_CONSTEXPR void on_error(const char* message) { context_.on_error(message); } private: dynamic_format_specs& specs_; ParseContext& context_; using arg_ref_type = arg_ref; FMT_CONSTEXPR auto make_arg_ref(int arg_id) -> arg_ref_type { context_.check_arg_id(arg_id); context_.check_dynamic_spec(arg_id); return arg_ref_type(arg_id); } FMT_CONSTEXPR auto make_arg_ref(auto_id) -> arg_ref_type { int arg_id = context_.next_arg_id(); context_.check_dynamic_spec(arg_id); return arg_ref_type(arg_id); } FMT_CONSTEXPR auto make_arg_ref(basic_string_view arg_id) -> arg_ref_type { context_.check_arg_id(arg_id); basic_string_view format_str( context_.begin(), to_unsigned(context_.end() - context_.begin())); return arg_ref_type(arg_id); } }; template constexpr bool is_ascii_letter(Char c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } // Converts a character to ASCII. Returns a number > 127 on conversion failure. template ::value)> constexpr auto to_ascii(Char c) -> Char { return c; } template ::value)> constexpr auto to_ascii(Char c) -> underlying_t { return c; } FMT_CONSTEXPR inline auto code_point_length_impl(char c) -> int { return "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\0\0\0\0\0\0\0\0\2\2\2\2\3\3\4" [static_cast(c) >> 3]; } template FMT_CONSTEXPR auto code_point_length(const Char* begin) -> int { if (const_check(sizeof(Char) != 1)) return 1; int len = code_point_length_impl(static_cast(*begin)); // Compute the pointer to the next character early so that the next // iteration can start working on the next character. Neither Clang // nor GCC figure out this reordering on their own. return len + !len; } // Return the result via the out param to workaround gcc bug 77539. template FMT_CONSTEXPR auto find(Ptr first, Ptr last, T value, Ptr& out) -> bool { for (out = first; out != last; ++out) { if (*out == value) return true; } return false; } template <> inline auto find(const char* first, const char* last, char value, const char*& out) -> bool { out = static_cast( std::memchr(first, value, to_unsigned(last - first))); return out != nullptr; } // Parses the range [begin, end) as an unsigned integer. This function assumes // that the range is non-empty and the first character is a digit. template FMT_CONSTEXPR auto parse_nonnegative_int(const Char*& begin, const Char* end, int error_value) noexcept -> int { FMT_ASSERT(begin != end && '0' <= *begin && *begin <= '9', ""); unsigned value = 0, prev = 0; auto p = begin; do { prev = value; value = value * 10 + unsigned(*p - '0'); ++p; } while (p != end && '0' <= *p && *p <= '9'); auto num_digits = p - begin; begin = p; if (num_digits <= std::numeric_limits::digits10) return static_cast(value); // Check for overflow. const unsigned max = to_unsigned((std::numeric_limits::max)()); return num_digits == std::numeric_limits::digits10 + 1 && prev * 10ull + unsigned(p[-1] - '0') <= max ? static_cast(value) : error_value; } // Parses fill and alignment. template FMT_CONSTEXPR auto parse_align(const Char* begin, const Char* end, Handler&& handler) -> const Char* { FMT_ASSERT(begin != end, ""); auto align = align::none; auto p = begin + code_point_length(begin); if (end - p <= 0) p = begin; for (;;) { switch (to_ascii(*p)) { case '<': align = align::left; break; case '>': align = align::right; break; case '^': align = align::center; break; default: break; } if (align != align::none) { if (p != begin) { auto c = *begin; if (c == '{') return handler.on_error("invalid fill character '{'"), begin; handler.on_fill(basic_string_view(begin, to_unsigned(p - begin))); begin = p + 1; } else ++begin; handler.on_align(align); break; } else if (p == begin) { break; } p = begin; } return begin; } template FMT_CONSTEXPR bool is_name_start(Char c) { return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || '_' == c; } template FMT_CONSTEXPR auto do_parse_arg_id(const Char* begin, const Char* end, IDHandler&& handler) -> const Char* { FMT_ASSERT(begin != end, ""); Char c = *begin; if (c >= '0' && c <= '9') { int index = 0; if (c != '0') index = parse_nonnegative_int(begin, end, (std::numeric_limits::max)()); else ++begin; if (begin == end || (*begin != '}' && *begin != ':')) handler.on_error("invalid format string"); else handler(index); return begin; } if (!is_name_start(c)) { handler.on_error("invalid format string"); return begin; } auto it = begin; do { ++it; } while (it != end && (is_name_start(c = *it) || ('0' <= c && c <= '9'))); handler(basic_string_view(begin, to_unsigned(it - begin))); return it; } template FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end, IDHandler&& handler) -> const Char* { Char c = *begin; if (c != '}' && c != ':') return do_parse_arg_id(begin, end, handler); handler(); return begin; } template FMT_CONSTEXPR auto parse_width(const Char* begin, const Char* end, Handler&& handler) -> const Char* { using detail::auto_id; struct width_adapter { Handler& handler; FMT_CONSTEXPR void operator()() { handler.on_dynamic_width(auto_id()); } FMT_CONSTEXPR void operator()(int id) { handler.on_dynamic_width(id); } FMT_CONSTEXPR void operator()(basic_string_view id) { handler.on_dynamic_width(id); } FMT_CONSTEXPR void on_error(const char* message) { if (message) handler.on_error(message); } }; FMT_ASSERT(begin != end, ""); if ('0' <= *begin && *begin <= '9') { int width = parse_nonnegative_int(begin, end, -1); if (width != -1) handler.on_width(width); else handler.on_error("number is too big"); } else if (*begin == '{') { ++begin; if (begin != end) begin = parse_arg_id(begin, end, width_adapter{handler}); if (begin == end || *begin != '}') return handler.on_error("invalid format string"), begin; ++begin; } return begin; } template FMT_CONSTEXPR auto parse_precision(const Char* begin, const Char* end, Handler&& handler) -> const Char* { using detail::auto_id; struct precision_adapter { Handler& handler; FMT_CONSTEXPR void operator()() { handler.on_dynamic_precision(auto_id()); } FMT_CONSTEXPR void operator()(int id) { handler.on_dynamic_precision(id); } FMT_CONSTEXPR void operator()(basic_string_view id) { handler.on_dynamic_precision(id); } FMT_CONSTEXPR void on_error(const char* message) { if (message) handler.on_error(message); } }; ++begin; auto c = begin != end ? *begin : Char(); if ('0' <= c && c <= '9') { auto precision = parse_nonnegative_int(begin, end, -1); if (precision != -1) handler.on_precision(precision); else handler.on_error("number is too big"); } else if (c == '{') { ++begin; if (begin != end) begin = parse_arg_id(begin, end, precision_adapter{handler}); if (begin == end || *begin++ != '}') return handler.on_error("invalid format string"), begin; } else { return handler.on_error("missing precision specifier"), begin; } handler.end_precision(); return begin; } template FMT_CONSTEXPR auto parse_presentation_type(Char type) -> presentation_type { switch (to_ascii(type)) { case 'd': return presentation_type::dec; case 'o': return presentation_type::oct; case 'x': return presentation_type::hex_lower; case 'X': return presentation_type::hex_upper; case 'b': return presentation_type::bin_lower; case 'B': return presentation_type::bin_upper; case 'a': return presentation_type::hexfloat_lower; case 'A': return presentation_type::hexfloat_upper; case 'e': return presentation_type::exp_lower; case 'E': return presentation_type::exp_upper; case 'f': return presentation_type::fixed_lower; case 'F': return presentation_type::fixed_upper; case 'g': return presentation_type::general_lower; case 'G': return presentation_type::general_upper; case 'c': return presentation_type::chr; case 's': return presentation_type::string; case 'p': return presentation_type::pointer; case '?': return presentation_type::debug; default: return presentation_type::none; } } // Parses standard format specifiers and sends notifications about parsed // components to handler. template FMT_CONSTEXPR FMT_INLINE auto parse_format_specs(const Char* begin, const Char* end, SpecHandler&& handler) -> const Char* { if (1 < end - begin && begin[1] == '}' && is_ascii_letter(*begin) && *begin != 'L') { presentation_type type = parse_presentation_type(*begin++); if (type == presentation_type::none) handler.on_error("invalid type specifier"); handler.on_type(type); return begin; } if (begin == end) return begin; begin = parse_align(begin, end, handler); if (begin == end) return begin; // Parse sign. switch (to_ascii(*begin)) { case '+': handler.on_sign(sign::plus); ++begin; break; case '-': handler.on_sign(sign::minus); ++begin; break; case ' ': handler.on_sign(sign::space); ++begin; break; default: break; } if (begin == end) return begin; if (*begin == '#') { handler.on_hash(); if (++begin == end) return begin; } // Parse zero flag. if (*begin == '0') { handler.on_zero(); if (++begin == end) return begin; } begin = parse_width(begin, end, handler); if (begin == end) return begin; // Parse precision. if (*begin == '.') { begin = parse_precision(begin, end, handler); if (begin == end) return begin; } if (*begin == 'L') { handler.on_localized(); ++begin; } // Parse type. if (begin != end && *begin != '}') { presentation_type type = parse_presentation_type(*begin++); if (type == presentation_type::none) handler.on_error("invalid type specifier"); handler.on_type(type); } return begin; } template FMT_CONSTEXPR auto parse_replacement_field(const Char* begin, const Char* end, Handler&& handler) -> const Char* { struct id_adapter { Handler& handler; int arg_id; FMT_CONSTEXPR void operator()() { arg_id = handler.on_arg_id(); } FMT_CONSTEXPR void operator()(int id) { arg_id = handler.on_arg_id(id); } FMT_CONSTEXPR void operator()(basic_string_view id) { arg_id = handler.on_arg_id(id); } FMT_CONSTEXPR void on_error(const char* message) { if (message) handler.on_error(message); } }; ++begin; if (begin == end) return handler.on_error("invalid format string"), end; if (*begin == '}') { handler.on_replacement_field(handler.on_arg_id(), begin); } else if (*begin == '{') { handler.on_text(begin, begin + 1); } else { auto adapter = id_adapter{handler, 0}; begin = parse_arg_id(begin, end, adapter); Char c = begin != end ? *begin : Char(); if (c == '}') { handler.on_replacement_field(adapter.arg_id, begin); } else if (c == ':') { begin = handler.on_format_specs(adapter.arg_id, begin + 1, end); if (begin == end || *begin != '}') return handler.on_error("unknown format specifier"), end; } else { return handler.on_error("missing '}' in format string"), end; } } return begin + 1; } template FMT_CONSTEXPR FMT_INLINE void parse_format_string( basic_string_view format_str, Handler&& handler) { // Workaround a name-lookup bug in MSVC's modules implementation. using detail::find; auto begin = format_str.data(); auto end = begin + format_str.size(); if (end - begin < 32) { // Use a simple loop instead of memchr for small strings. const Char* p = begin; while (p != end) { auto c = *p++; if (c == '{') { handler.on_text(begin, p - 1); begin = p = parse_replacement_field(p - 1, end, handler); } else if (c == '}') { if (p == end || *p != '}') return handler.on_error("unmatched '}' in format string"); handler.on_text(begin, p); begin = ++p; } } handler.on_text(begin, end); return; } struct writer { FMT_CONSTEXPR void operator()(const Char* from, const Char* to) { if (from == to) return; for (;;) { const Char* p = nullptr; if (!find(from, to, Char('}'), p)) return handler_.on_text(from, to); ++p; if (p == to || *p != '}') return handler_.on_error("unmatched '}' in format string"); handler_.on_text(from, p); from = p + 1; } } Handler& handler_; } write = {handler}; while (begin != end) { // Doing two passes with memchr (one for '{' and another for '}') is up to // 2.5x faster than the naive one-pass implementation on big format strings. const Char* p = begin; if (*begin != '{' && !find(begin + 1, end, Char('{'), p)) return write(begin, end); write(begin, p); begin = parse_replacement_field(p, end, handler); } } template ::value> struct strip_named_arg { using type = T; }; template struct strip_named_arg { using type = remove_cvref_t; }; template FMT_CONSTEXPR auto parse_format_specs(ParseContext& ctx) -> decltype(ctx.begin()) { using char_type = typename ParseContext::char_type; using context = buffer_context; using stripped_type = typename strip_named_arg::type; using mapped_type = conditional_t< mapped_type_constant::value != type::custom_type, decltype(arg_mapper().map(std::declval())), stripped_type>; auto f = conditional_t::value, formatter, fallback_formatter>(); return f.parse(ctx); } template FMT_CONSTEXPR void check_int_type_spec(presentation_type type, ErrorHandler&& eh) { if (type > presentation_type::bin_upper && type != presentation_type::chr) eh.on_error("invalid type specifier"); } // Checks char specs and returns true if the type spec is char (and not int). template FMT_CONSTEXPR auto check_char_specs(const basic_format_specs& specs, ErrorHandler&& eh = {}) -> bool { if (specs.type != presentation_type::none && specs.type != presentation_type::chr && specs.type != presentation_type::debug) { check_int_type_spec(specs.type, eh); return false; } if (specs.align == align::numeric || specs.sign != sign::none || specs.alt) eh.on_error("invalid format specifier for char"); return true; } // A floating-point presentation format. enum class float_format : unsigned char { general, // General: exponent notation or fixed point based on magnitude. exp, // Exponent notation with the default precision of 6, e.g. 1.2e-3. fixed, // Fixed point with the default precision of 6, e.g. 0.0012. hex }; struct float_specs { int precision; float_format format : 8; sign_t sign : 8; bool upper : 1; bool locale : 1; bool binary32 : 1; bool showpoint : 1; }; template FMT_CONSTEXPR auto parse_float_type_spec(const basic_format_specs& specs, ErrorHandler&& eh = {}) -> float_specs { auto result = float_specs(); result.showpoint = specs.alt; result.locale = specs.localized; switch (specs.type) { case presentation_type::none: result.format = float_format::general; break; case presentation_type::general_upper: result.upper = true; FMT_FALLTHROUGH; case presentation_type::general_lower: result.format = float_format::general; break; case presentation_type::exp_upper: result.upper = true; FMT_FALLTHROUGH; case presentation_type::exp_lower: result.format = float_format::exp; result.showpoint |= specs.precision != 0; break; case presentation_type::fixed_upper: result.upper = true; FMT_FALLTHROUGH; case presentation_type::fixed_lower: result.format = float_format::fixed; result.showpoint |= specs.precision != 0; break; case presentation_type::hexfloat_upper: result.upper = true; FMT_FALLTHROUGH; case presentation_type::hexfloat_lower: result.format = float_format::hex; break; default: eh.on_error("invalid type specifier"); break; } return result; } template FMT_CONSTEXPR auto check_cstring_type_spec(presentation_type type, ErrorHandler&& eh = {}) -> bool { if (type == presentation_type::none || type == presentation_type::string || type == presentation_type::debug) return true; if (type != presentation_type::pointer) eh.on_error("invalid type specifier"); return false; } template FMT_CONSTEXPR void check_string_type_spec(presentation_type type, ErrorHandler&& eh = {}) { if (type != presentation_type::none && type != presentation_type::string && type != presentation_type::debug) eh.on_error("invalid type specifier"); } template FMT_CONSTEXPR void check_pointer_type_spec(presentation_type type, ErrorHandler&& eh) { if (type != presentation_type::none && type != presentation_type::pointer) eh.on_error("invalid type specifier"); } // A parse_format_specs handler that checks if specifiers are consistent with // the argument type. template class specs_checker : public Handler { private: detail::type arg_type_; FMT_CONSTEXPR void require_numeric_argument() { if (!is_arithmetic_type(arg_type_)) this->on_error("format specifier requires numeric argument"); } public: FMT_CONSTEXPR specs_checker(const Handler& handler, detail::type arg_type) : Handler(handler), arg_type_(arg_type) {} FMT_CONSTEXPR void on_align(align_t align) { if (align == align::numeric) require_numeric_argument(); Handler::on_align(align); } FMT_CONSTEXPR void on_sign(sign_t s) { require_numeric_argument(); if (is_integral_type(arg_type_) && arg_type_ != type::int_type && arg_type_ != type::long_long_type && arg_type_ != type::int128_type && arg_type_ != type::char_type) { this->on_error("format specifier requires signed argument"); } Handler::on_sign(s); } FMT_CONSTEXPR void on_hash() { require_numeric_argument(); Handler::on_hash(); } FMT_CONSTEXPR void on_localized() { require_numeric_argument(); Handler::on_localized(); } FMT_CONSTEXPR void on_zero() { require_numeric_argument(); Handler::on_zero(); } FMT_CONSTEXPR void end_precision() { if (is_integral_type(arg_type_) || arg_type_ == type::pointer_type) this->on_error("precision not allowed for this argument type"); } }; constexpr int invalid_arg_index = -1; #if FMT_USE_NONTYPE_TEMPLATE_ARGS template constexpr auto get_arg_index_by_name(basic_string_view name) -> int { if constexpr (detail::is_statically_named_arg()) { if (name == T::name) return N; } if constexpr (sizeof...(Args) > 0) return get_arg_index_by_name(name); (void)name; // Workaround an MSVC bug about "unused" parameter. return invalid_arg_index; } #endif template FMT_CONSTEXPR auto get_arg_index_by_name(basic_string_view name) -> int { #if FMT_USE_NONTYPE_TEMPLATE_ARGS if constexpr (sizeof...(Args) > 0) return get_arg_index_by_name<0, Args...>(name); #endif (void)name; return invalid_arg_index; } template class format_string_checker { private: // In the future basic_format_parse_context will replace compile_parse_context // here and will use is_constant_evaluated and downcasting to access the data // needed for compile-time checks: https://godbolt.org/z/GvWzcTjh1. using parse_context_type = compile_parse_context; static constexpr int num_args = sizeof...(Args); // Format specifier parsing function. using parse_func = const Char* (*)(parse_context_type&); parse_context_type context_; parse_func parse_funcs_[num_args > 0 ? static_cast(num_args) : 1]; type types_[num_args > 0 ? static_cast(num_args) : 1]; public: explicit FMT_CONSTEXPR format_string_checker( basic_string_view format_str, ErrorHandler eh) : context_(format_str, num_args, types_, eh), parse_funcs_{&parse_format_specs...}, types_{ mapped_type_constant>::value...} { } FMT_CONSTEXPR void on_text(const Char*, const Char*) {} FMT_CONSTEXPR auto on_arg_id() -> int { return context_.next_arg_id(); } FMT_CONSTEXPR auto on_arg_id(int id) -> int { return context_.check_arg_id(id), id; } FMT_CONSTEXPR auto on_arg_id(basic_string_view id) -> int { #if FMT_USE_NONTYPE_TEMPLATE_ARGS auto index = get_arg_index_by_name(id); if (index == invalid_arg_index) on_error("named argument is not found"); return context_.check_arg_id(index), index; #else (void)id; on_error("compile-time checks for named arguments require C++20 support"); return 0; #endif } FMT_CONSTEXPR void on_replacement_field(int, const Char*) {} FMT_CONSTEXPR auto on_format_specs(int id, const Char* begin, const Char*) -> const Char* { context_.advance_to(context_.begin() + (begin - &*context_.begin())); // id >= 0 check is a workaround for gcc 10 bug (#2065). return id >= 0 && id < num_args ? parse_funcs_[id](context_) : begin; } FMT_CONSTEXPR void on_error(const char* message) { context_.on_error(message); } }; // Reports a compile-time error if S is not a valid format string. template ::value)> FMT_INLINE void check_format_string(const S&) { #ifdef FMT_ENFORCE_COMPILE_STRING static_assert(is_compile_string::value, "FMT_ENFORCE_COMPILE_STRING requires all format strings to use " "FMT_STRING."); #endif } template ::value)> void check_format_string(S format_str) { FMT_CONSTEXPR auto s = basic_string_view(format_str); using checker = format_string_checker...>; FMT_CONSTEXPR bool invalid_format = (parse_format_string(s, checker(s, {})), true); ignore_unused(invalid_format); } template void vformat_to( buffer& buf, basic_string_view fmt, basic_format_args)> args, locale_ref loc = {}); FMT_API void vprint_mojibake(std::FILE*, string_view, format_args); #ifndef _WIN32 inline void vprint_mojibake(std::FILE*, string_view, format_args) {} #endif FMT_END_DETAIL_NAMESPACE // A formatter specialization for the core types corresponding to detail::type // constants. template struct formatter::value != detail::type::custom_type>> { private: detail::dynamic_format_specs specs_; public: // Parses format specifiers stopping either at the end of the range or at the // terminating '}'. template FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { auto begin = ctx.begin(), end = ctx.end(); if (begin == end) return begin; using handler_type = detail::dynamic_specs_handler; auto type = detail::type_constant::value; auto checker = detail::specs_checker(handler_type(specs_, ctx), type); auto it = detail::parse_format_specs(begin, end, checker); auto eh = ctx.error_handler(); switch (type) { case detail::type::none_type: FMT_ASSERT(false, "invalid argument type"); break; case detail::type::bool_type: if (specs_.type == presentation_type::none || specs_.type == presentation_type::string) { break; } FMT_FALLTHROUGH; case detail::type::int_type: case detail::type::uint_type: case detail::type::long_long_type: case detail::type::ulong_long_type: case detail::type::int128_type: case detail::type::uint128_type: detail::check_int_type_spec(specs_.type, eh); break; case detail::type::char_type: detail::check_char_specs(specs_, eh); break; case detail::type::float_type: if (detail::const_check(FMT_USE_FLOAT)) detail::parse_float_type_spec(specs_, eh); else FMT_ASSERT(false, "float support disabled"); break; case detail::type::double_type: if (detail::const_check(FMT_USE_DOUBLE)) detail::parse_float_type_spec(specs_, eh); else FMT_ASSERT(false, "double support disabled"); break; case detail::type::long_double_type: if (detail::const_check(FMT_USE_LONG_DOUBLE)) detail::parse_float_type_spec(specs_, eh); else FMT_ASSERT(false, "long double support disabled"); break; case detail::type::cstring_type: detail::check_cstring_type_spec(specs_.type, eh); break; case detail::type::string_type: detail::check_string_type_spec(specs_.type, eh); break; case detail::type::pointer_type: detail::check_pointer_type_spec(specs_.type, eh); break; case detail::type::custom_type: // Custom format specifiers are checked in parse functions of // formatter specializations. break; } return it; } template ::value, enable_if_t<(U == detail::type::string_type || U == detail::type::cstring_type || U == detail::type::char_type), int> = 0> FMT_CONSTEXPR void set_debug_format() { specs_.type = presentation_type::debug; } template FMT_CONSTEXPR auto format(const T& val, FormatContext& ctx) const -> decltype(ctx.out()); }; #define FMT_FORMAT_AS(Type, Base) \ template \ struct formatter : formatter { \ template \ auto format(Type const& val, FormatContext& ctx) const \ -> decltype(ctx.out()) { \ return formatter::format(static_cast(val), ctx); \ } \ } FMT_FORMAT_AS(signed char, int); FMT_FORMAT_AS(unsigned char, unsigned); FMT_FORMAT_AS(short, int); FMT_FORMAT_AS(unsigned short, unsigned); FMT_FORMAT_AS(long, long long); FMT_FORMAT_AS(unsigned long, unsigned long long); FMT_FORMAT_AS(Char*, const Char*); FMT_FORMAT_AS(std::basic_string, basic_string_view); FMT_FORMAT_AS(std::nullptr_t, const void*); FMT_FORMAT_AS(detail::std_string_view, basic_string_view); template struct basic_runtime { basic_string_view str; }; /** A compile-time format string. */ template class basic_format_string { private: basic_string_view str_; public: template >::value)> FMT_CONSTEVAL FMT_INLINE basic_format_string(const S& s) : str_(s) { static_assert( detail::count< (std::is_base_of>::value && std::is_reference::value)...>() == 0, "passing views as lvalues is disallowed"); #ifdef FMT_HAS_CONSTEVAL if constexpr (detail::count_named_args() == detail::count_statically_named_args()) { using checker = detail::format_string_checker...>; detail::parse_format_string(str_, checker(s, {})); } #else detail::check_format_string(s); #endif } basic_format_string(basic_runtime r) : str_(r.str) {} FMT_INLINE operator basic_string_view() const { return str_; } }; #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 // Workaround broken conversion on older gcc. template using format_string = string_view; inline auto runtime(string_view s) -> string_view { return s; } #else template using format_string = basic_format_string...>; /** \rst Creates a runtime format string. **Example**:: // Check format string at runtime instead of compile-time. fmt::print(fmt::runtime("{:d}"), "I am not a number"); \endrst */ inline auto runtime(string_view s) -> basic_runtime { return {{s}}; } #endif FMT_API auto vformat(string_view fmt, format_args args) -> std::string; /** \rst Formats ``args`` according to specifications in ``fmt`` and returns the result as a string. **Example**:: #include std::string message = fmt::format("The answer is {}.", 42); \endrst */ template FMT_NODISCARD FMT_INLINE auto format(format_string fmt, T&&... args) -> std::string { return vformat(fmt, fmt::make_format_args(args...)); } /** Formats a string and writes the output to ``out``. */ template ::value)> auto vformat_to(OutputIt out, string_view fmt, format_args args) -> OutputIt { using detail::get_buffer; auto&& buf = get_buffer(out); detail::vformat_to(buf, fmt, args, {}); return detail::get_iterator(buf); } /** \rst Formats ``args`` according to specifications in ``fmt``, writes the result to the output iterator ``out`` and returns the iterator past the end of the output range. `format_to` does not append a terminating null character. **Example**:: auto out = std::vector(); fmt::format_to(std::back_inserter(out), "{}", 42); \endrst */ template ::value)> FMT_INLINE auto format_to(OutputIt out, format_string fmt, T&&... args) -> OutputIt { return vformat_to(out, fmt, fmt::make_format_args(args...)); } template struct format_to_n_result { /** Iterator past the end of the output range. */ OutputIt out; /** Total (not truncated) output size. */ size_t size; }; template ::value)> auto vformat_to_n(OutputIt out, size_t n, string_view fmt, format_args args) -> format_to_n_result { using traits = detail::fixed_buffer_traits; auto buf = detail::iterator_buffer(out, n); detail::vformat_to(buf, fmt, args, {}); return {buf.out(), buf.count()}; } /** \rst Formats ``args`` according to specifications in ``fmt``, writes up to ``n`` characters of the result to the output iterator ``out`` and returns the total (not truncated) output size and the iterator past the end of the output range. `format_to_n` does not append a terminating null character. \endrst */ template ::value)> FMT_INLINE auto format_to_n(OutputIt out, size_t n, format_string fmt, T&&... args) -> format_to_n_result { return vformat_to_n(out, n, fmt, fmt::make_format_args(args...)); } /** Returns the number of chars in the output of ``format(fmt, args...)``. */ template FMT_NODISCARD FMT_INLINE auto formatted_size(format_string fmt, T&&... args) -> size_t { auto buf = detail::counting_buffer<>(); detail::vformat_to(buf, string_view(fmt), fmt::make_format_args(args...), {}); return buf.count(); } FMT_API void vprint(string_view fmt, format_args args); FMT_API void vprint(std::FILE* f, string_view fmt, format_args args); /** \rst Formats ``args`` according to specifications in ``fmt`` and writes the output to ``stdout``. **Example**:: fmt::print("Elapsed time: {0:.2f} seconds", 1.23); \endrst */ template FMT_INLINE void print(format_string fmt, T&&... args) { const auto& vargs = fmt::make_format_args(args...); return detail::is_utf8() ? vprint(fmt, vargs) : detail::vprint_mojibake(stdout, fmt, vargs); } /** \rst Formats ``args`` according to specifications in ``fmt`` and writes the output to the file ``f``. **Example**:: fmt::print(stderr, "Don't {}!", "panic"); \endrst */ template FMT_INLINE void print(std::FILE* f, format_string fmt, T&&... args) { const auto& vargs = fmt::make_format_args(args...); return detail::is_utf8() ? vprint(f, fmt, vargs) : detail::vprint_mojibake(f, fmt, vargs); } FMT_MODULE_EXPORT_END FMT_GCC_PRAGMA("GCC pop_options") FMT_END_NAMESPACE #ifdef FMT_HEADER_ONLY # include "format.h" #endif #endif // FMT_CORE_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/format-inl.h ================================================ // Formatting library for C++ - implementation // // Copyright (c) 2012 - 2016, Victor Zverovich // All rights reserved. // // For the license information refer to format.h. #ifndef FMT_FORMAT_INL_H_ #define FMT_FORMAT_INL_H_ #include #include #include // errno #include #include #include #include // std::memmove #include #include #ifndef FMT_STATIC_THOUSANDS_SEPARATOR # include #endif #ifdef _WIN32 # include // _isatty #endif #include "format.h" FMT_BEGIN_NAMESPACE namespace detail { FMT_FUNC void assert_fail(const char* file, int line, const char* message) { // Use unchecked std::fprintf to avoid triggering another assertion when // writing to stderr fails std::fprintf(stderr, "%s:%d: assertion failed: %s", file, line, message); // Chosen instead of std::abort to satisfy Clang in CUDA mode during device // code pass. std::terminate(); } FMT_FUNC void throw_format_error(const char* message) { FMT_THROW(format_error(message)); } FMT_FUNC void format_error_code(detail::buffer& out, int error_code, string_view message) noexcept { // Report error code making sure that the output fits into // inline_buffer_size to avoid dynamic memory allocation and potential // bad_alloc. out.try_resize(0); static const char SEP[] = ": "; static const char ERROR_STR[] = "error "; // Subtract 2 to account for terminating null characters in SEP and ERROR_STR. size_t error_code_size = sizeof(SEP) + sizeof(ERROR_STR) - 2; auto abs_value = static_cast>(error_code); if (detail::is_negative(error_code)) { abs_value = 0 - abs_value; ++error_code_size; } error_code_size += detail::to_unsigned(detail::count_digits(abs_value)); auto it = buffer_appender(out); if (message.size() <= inline_buffer_size - error_code_size) format_to(it, FMT_STRING("{}{}"), message, SEP); format_to(it, FMT_STRING("{}{}"), ERROR_STR, error_code); FMT_ASSERT(out.size() <= inline_buffer_size, ""); } FMT_FUNC void report_error(format_func func, int error_code, const char* message) noexcept { memory_buffer full_message; func(full_message, error_code, message); // Don't use fwrite_fully because the latter may throw. if (std::fwrite(full_message.data(), full_message.size(), 1, stderr) > 0) std::fputc('\n', stderr); } // A wrapper around fwrite that throws on error. inline void fwrite_fully(const void* ptr, size_t size, size_t count, FILE* stream) { size_t written = std::fwrite(ptr, size, count, stream); if (written < count) FMT_THROW(system_error(errno, FMT_STRING("cannot write to file"))); } #ifndef FMT_STATIC_THOUSANDS_SEPARATOR template locale_ref::locale_ref(const Locale& loc) : locale_(&loc) { static_assert(std::is_same::value, ""); } template Locale locale_ref::get() const { static_assert(std::is_same::value, ""); return locale_ ? *static_cast(locale_) : std::locale(); } template FMT_FUNC auto thousands_sep_impl(locale_ref loc) -> thousands_sep_result { auto& facet = std::use_facet>(loc.get()); auto grouping = facet.grouping(); auto thousands_sep = grouping.empty() ? Char() : facet.thousands_sep(); return {std::move(grouping), thousands_sep}; } template FMT_FUNC Char decimal_point_impl(locale_ref loc) { return std::use_facet>(loc.get()) .decimal_point(); } #else template FMT_FUNC auto thousands_sep_impl(locale_ref) -> thousands_sep_result { return {"\03", FMT_STATIC_THOUSANDS_SEPARATOR}; } template FMT_FUNC Char decimal_point_impl(locale_ref) { return '.'; } #endif } // namespace detail #if !FMT_MSC_VERSION FMT_API FMT_FUNC format_error::~format_error() noexcept = default; #endif FMT_FUNC std::system_error vsystem_error(int error_code, string_view format_str, format_args args) { auto ec = std::error_code(error_code, std::generic_category()); return std::system_error(ec, vformat(format_str, args)); } namespace detail { template inline bool operator==(basic_fp x, basic_fp y) { return x.f == y.f && x.e == y.e; } // Compilers should be able to optimize this into the ror instruction. FMT_CONSTEXPR inline uint32_t rotr(uint32_t n, uint32_t r) noexcept { r &= 31; return (n >> r) | (n << (32 - r)); } FMT_CONSTEXPR inline uint64_t rotr(uint64_t n, uint32_t r) noexcept { r &= 63; return (n >> r) | (n << (64 - r)); } // Computes 128-bit result of multiplication of two 64-bit unsigned integers. inline uint128_fallback umul128(uint64_t x, uint64_t y) noexcept { #if FMT_USE_INT128 auto p = static_cast(x) * static_cast(y); return {static_cast(p >> 64), static_cast(p)}; #elif defined(_MSC_VER) && defined(_M_X64) auto result = uint128_fallback(); result.lo_ = _umul128(x, y, &result.hi_); return result; #else const uint64_t mask = static_cast(max_value()); uint64_t a = x >> 32; uint64_t b = x & mask; uint64_t c = y >> 32; uint64_t d = y & mask; uint64_t ac = a * c; uint64_t bc = b * c; uint64_t ad = a * d; uint64_t bd = b * d; uint64_t intermediate = (bd >> 32) + (ad & mask) + (bc & mask); return {ac + (intermediate >> 32) + (ad >> 32) + (bc >> 32), (intermediate << 32) + (bd & mask)}; #endif } // Implementation of Dragonbox algorithm: https://github.com/jk-jeon/dragonbox. namespace dragonbox { // Computes upper 64 bits of multiplication of two 64-bit unsigned integers. inline uint64_t umul128_upper64(uint64_t x, uint64_t y) noexcept { #if FMT_USE_INT128 auto p = static_cast(x) * static_cast(y); return static_cast(p >> 64); #elif defined(_MSC_VER) && defined(_M_X64) return __umulh(x, y); #else return umul128(x, y).high(); #endif } // Computes upper 128 bits of multiplication of a 64-bit unsigned integer and a // 128-bit unsigned integer. inline uint128_fallback umul192_upper128(uint64_t x, uint128_fallback y) noexcept { uint128_fallback r = umul128(x, y.high()); r += umul128_upper64(x, y.low()); return r; } // Computes upper 64 bits of multiplication of a 32-bit unsigned integer and a // 64-bit unsigned integer. inline uint64_t umul96_upper64(uint32_t x, uint64_t y) noexcept { return umul128_upper64(static_cast(x) << 32, y); } // Computes lower 128 bits of multiplication of a 64-bit unsigned integer and a // 128-bit unsigned integer. inline uint128_fallback umul192_lower128(uint64_t x, uint128_fallback y) noexcept { uint64_t high = x * y.high(); uint128_fallback high_low = umul128(x, y.low()); return {high + high_low.high(), high_low.low()}; } // Computes lower 64 bits of multiplication of a 32-bit unsigned integer and a // 64-bit unsigned integer. inline uint64_t umul96_lower64(uint32_t x, uint64_t y) noexcept { return x * y; } // Computes floor(log10(pow(2, e))) for e in [-2620, 2620] using the method from // https://fmt.dev/papers/Dragonbox.pdf#page=28, section 6.1. inline int floor_log10_pow2(int e) noexcept { FMT_ASSERT(e <= 2620 && e >= -2620, "too large exponent"); static_assert((-1 >> 1) == -1, "right shift is not arithmetic"); return (e * 315653) >> 20; } // Various fast log computations. inline int floor_log2_pow10(int e) noexcept { FMT_ASSERT(e <= 1233 && e >= -1233, "too large exponent"); return (e * 1741647) >> 19; } inline int floor_log10_pow2_minus_log10_4_over_3(int e) noexcept { FMT_ASSERT(e <= 2936 && e >= -2985, "too large exponent"); return (e * 631305 - 261663) >> 21; } static constexpr struct { uint32_t divisor; int shift_amount; } div_small_pow10_infos[] = {{10, 16}, {100, 16}}; // Replaces n by floor(n / pow(10, N)) returning true if and only if n is // divisible by pow(10, N). // Precondition: n <= pow(10, N + 1). template bool check_divisibility_and_divide_by_pow10(uint32_t& n) noexcept { // The numbers below are chosen such that: // 1. floor(n/d) = floor(nm / 2^k) where d=10 or d=100, // 2. nm mod 2^k < m if and only if n is divisible by d, // where m is magic_number, k is shift_amount // and d is divisor. // // Item 1 is a common technique of replacing division by a constant with // multiplication, see e.g. "Division by Invariant Integers Using // Multiplication" by Granlund and Montgomery (1994). magic_number (m) is set // to ceil(2^k/d) for large enough k. // The idea for item 2 originates from Schubfach. constexpr auto info = div_small_pow10_infos[N - 1]; FMT_ASSERT(n <= info.divisor * 10, "n is too large"); constexpr uint32_t magic_number = (1u << info.shift_amount) / info.divisor + 1; n *= magic_number; const uint32_t comparison_mask = (1u << info.shift_amount) - 1; bool result = (n & comparison_mask) < magic_number; n >>= info.shift_amount; return result; } // Computes floor(n / pow(10, N)) for small n and N. // Precondition: n <= pow(10, N + 1). template uint32_t small_division_by_pow10(uint32_t n) noexcept { constexpr auto info = div_small_pow10_infos[N - 1]; FMT_ASSERT(n <= info.divisor * 10, "n is too large"); constexpr uint32_t magic_number = (1u << info.shift_amount) / info.divisor + 1; return (n * magic_number) >> info.shift_amount; } // Computes floor(n / 10^(kappa + 1)) (float) inline uint32_t divide_by_10_to_kappa_plus_1(uint32_t n) noexcept { // 1374389535 = ceil(2^37/100) return static_cast((static_cast(n) * 1374389535) >> 37); } // Computes floor(n / 10^(kappa + 1)) (double) inline uint64_t divide_by_10_to_kappa_plus_1(uint64_t n) noexcept { // 2361183241434822607 = ceil(2^(64+7)/1000) return umul128_upper64(n, 2361183241434822607ull) >> 7; } // Various subroutines using pow10 cache template struct cache_accessor; template <> struct cache_accessor { using carrier_uint = float_info::carrier_uint; using cache_entry_type = uint64_t; static uint64_t get_cached_power(int k) noexcept { FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, "k is out of range"); static constexpr const uint64_t pow10_significands[] = { 0x81ceb32c4b43fcf5, 0xa2425ff75e14fc32, 0xcad2f7f5359a3b3f, 0xfd87b5f28300ca0e, 0x9e74d1b791e07e49, 0xc612062576589ddb, 0xf79687aed3eec552, 0x9abe14cd44753b53, 0xc16d9a0095928a28, 0xf1c90080baf72cb2, 0x971da05074da7bef, 0xbce5086492111aeb, 0xec1e4a7db69561a6, 0x9392ee8e921d5d08, 0xb877aa3236a4b44a, 0xe69594bec44de15c, 0x901d7cf73ab0acda, 0xb424dc35095cd810, 0xe12e13424bb40e14, 0x8cbccc096f5088cc, 0xafebff0bcb24aaff, 0xdbe6fecebdedd5bf, 0x89705f4136b4a598, 0xabcc77118461cefd, 0xd6bf94d5e57a42bd, 0x8637bd05af6c69b6, 0xa7c5ac471b478424, 0xd1b71758e219652c, 0x83126e978d4fdf3c, 0xa3d70a3d70a3d70b, 0xcccccccccccccccd, 0x8000000000000000, 0xa000000000000000, 0xc800000000000000, 0xfa00000000000000, 0x9c40000000000000, 0xc350000000000000, 0xf424000000000000, 0x9896800000000000, 0xbebc200000000000, 0xee6b280000000000, 0x9502f90000000000, 0xba43b74000000000, 0xe8d4a51000000000, 0x9184e72a00000000, 0xb5e620f480000000, 0xe35fa931a0000000, 0x8e1bc9bf04000000, 0xb1a2bc2ec5000000, 0xde0b6b3a76400000, 0x8ac7230489e80000, 0xad78ebc5ac620000, 0xd8d726b7177a8000, 0x878678326eac9000, 0xa968163f0a57b400, 0xd3c21bcecceda100, 0x84595161401484a0, 0xa56fa5b99019a5c8, 0xcecb8f27f4200f3a, 0x813f3978f8940985, 0xa18f07d736b90be6, 0xc9f2c9cd04674edf, 0xfc6f7c4045812297, 0x9dc5ada82b70b59e, 0xc5371912364ce306, 0xf684df56c3e01bc7, 0x9a130b963a6c115d, 0xc097ce7bc90715b4, 0xf0bdc21abb48db21, 0x96769950b50d88f5, 0xbc143fa4e250eb32, 0xeb194f8e1ae525fe, 0x92efd1b8d0cf37bf, 0xb7abc627050305ae, 0xe596b7b0c643c71a, 0x8f7e32ce7bea5c70, 0xb35dbf821ae4f38c, 0xe0352f62a19e306f}; return pow10_significands[k - float_info::min_k]; } struct compute_mul_result { carrier_uint result; bool is_integer; }; struct compute_mul_parity_result { bool parity; bool is_integer; }; static compute_mul_result compute_mul( carrier_uint u, const cache_entry_type& cache) noexcept { auto r = umul96_upper64(u, cache); return {static_cast(r >> 32), static_cast(r) == 0}; } static uint32_t compute_delta(const cache_entry_type& cache, int beta) noexcept { return static_cast(cache >> (64 - 1 - beta)); } static compute_mul_parity_result compute_mul_parity( carrier_uint two_f, const cache_entry_type& cache, int beta) noexcept { FMT_ASSERT(beta >= 1, ""); FMT_ASSERT(beta < 64, ""); auto r = umul96_lower64(two_f, cache); return {((r >> (64 - beta)) & 1) != 0, static_cast(r >> (32 - beta)) == 0}; } static carrier_uint compute_left_endpoint_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return static_cast( (cache - (cache >> (num_significand_bits() + 2))) >> (64 - num_significand_bits() - 1 - beta)); } static carrier_uint compute_right_endpoint_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return static_cast( (cache + (cache >> (num_significand_bits() + 1))) >> (64 - num_significand_bits() - 1 - beta)); } static carrier_uint compute_round_up_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return (static_cast( cache >> (64 - num_significand_bits() - 2 - beta)) + 1) / 2; } }; template <> struct cache_accessor { using carrier_uint = float_info::carrier_uint; using cache_entry_type = uint128_fallback; static uint128_fallback get_cached_power(int k) noexcept { FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, "k is out of range"); static constexpr const uint128_fallback pow10_significands[] = { #if FMT_USE_FULL_CACHE_DRAGONBOX {0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7b}, {0x9faacf3df73609b1, 0x77b191618c54e9ad}, {0xc795830d75038c1d, 0xd59df5b9ef6a2418}, {0xf97ae3d0d2446f25, 0x4b0573286b44ad1e}, {0x9becce62836ac577, 0x4ee367f9430aec33}, {0xc2e801fb244576d5, 0x229c41f793cda740}, {0xf3a20279ed56d48a, 0x6b43527578c11110}, {0x9845418c345644d6, 0x830a13896b78aaaa}, {0xbe5691ef416bd60c, 0x23cc986bc656d554}, {0xedec366b11c6cb8f, 0x2cbfbe86b7ec8aa9}, {0x94b3a202eb1c3f39, 0x7bf7d71432f3d6aa}, {0xb9e08a83a5e34f07, 0xdaf5ccd93fb0cc54}, {0xe858ad248f5c22c9, 0xd1b3400f8f9cff69}, {0x91376c36d99995be, 0x23100809b9c21fa2}, {0xb58547448ffffb2d, 0xabd40a0c2832a78b}, {0xe2e69915b3fff9f9, 0x16c90c8f323f516d}, {0x8dd01fad907ffc3b, 0xae3da7d97f6792e4}, {0xb1442798f49ffb4a, 0x99cd11cfdf41779d}, {0xdd95317f31c7fa1d, 0x40405643d711d584}, {0x8a7d3eef7f1cfc52, 0x482835ea666b2573}, {0xad1c8eab5ee43b66, 0xda3243650005eed0}, {0xd863b256369d4a40, 0x90bed43e40076a83}, {0x873e4f75e2224e68, 0x5a7744a6e804a292}, {0xa90de3535aaae202, 0x711515d0a205cb37}, {0xd3515c2831559a83, 0x0d5a5b44ca873e04}, {0x8412d9991ed58091, 0xe858790afe9486c3}, {0xa5178fff668ae0b6, 0x626e974dbe39a873}, {0xce5d73ff402d98e3, 0xfb0a3d212dc81290}, {0x80fa687f881c7f8e, 0x7ce66634bc9d0b9a}, {0xa139029f6a239f72, 0x1c1fffc1ebc44e81}, {0xc987434744ac874e, 0xa327ffb266b56221}, {0xfbe9141915d7a922, 0x4bf1ff9f0062baa9}, {0x9d71ac8fada6c9b5, 0x6f773fc3603db4aa}, {0xc4ce17b399107c22, 0xcb550fb4384d21d4}, {0xf6019da07f549b2b, 0x7e2a53a146606a49}, {0x99c102844f94e0fb, 0x2eda7444cbfc426e}, {0xc0314325637a1939, 0xfa911155fefb5309}, {0xf03d93eebc589f88, 0x793555ab7eba27cb}, {0x96267c7535b763b5, 0x4bc1558b2f3458df}, {0xbbb01b9283253ca2, 0x9eb1aaedfb016f17}, {0xea9c227723ee8bcb, 0x465e15a979c1cadd}, {0x92a1958a7675175f, 0x0bfacd89ec191eca}, {0xb749faed14125d36, 0xcef980ec671f667c}, {0xe51c79a85916f484, 0x82b7e12780e7401b}, {0x8f31cc0937ae58d2, 0xd1b2ecb8b0908811}, {0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa16}, {0xdfbdcece67006ac9, 0x67a791e093e1d49b}, {0x8bd6a141006042bd, 0xe0c8bb2c5c6d24e1}, {0xaecc49914078536d, 0x58fae9f773886e19}, {0xda7f5bf590966848, 0xaf39a475506a899f}, {0x888f99797a5e012d, 0x6d8406c952429604}, {0xaab37fd7d8f58178, 0xc8e5087ba6d33b84}, {0xd5605fcdcf32e1d6, 0xfb1e4a9a90880a65}, {0x855c3be0a17fcd26, 0x5cf2eea09a550680}, {0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481f}, {0xd0601d8efc57b08b, 0xf13b94daf124da27}, {0x823c12795db6ce57, 0x76c53d08d6b70859}, {0xa2cb1717b52481ed, 0x54768c4b0c64ca6f}, {0xcb7ddcdda26da268, 0xa9942f5dcf7dfd0a}, {0xfe5d54150b090b02, 0xd3f93b35435d7c4d}, {0x9efa548d26e5a6e1, 0xc47bc5014a1a6db0}, {0xc6b8e9b0709f109a, 0x359ab6419ca1091c}, {0xf867241c8cc6d4c0, 0xc30163d203c94b63}, {0x9b407691d7fc44f8, 0x79e0de63425dcf1e}, {0xc21094364dfb5636, 0x985915fc12f542e5}, {0xf294b943e17a2bc4, 0x3e6f5b7b17b2939e}, {0x979cf3ca6cec5b5a, 0xa705992ceecf9c43}, {0xbd8430bd08277231, 0x50c6ff782a838354}, {0xece53cec4a314ebd, 0xa4f8bf5635246429}, {0x940f4613ae5ed136, 0x871b7795e136be9a}, {0xb913179899f68584, 0x28e2557b59846e40}, {0xe757dd7ec07426e5, 0x331aeada2fe589d0}, {0x9096ea6f3848984f, 0x3ff0d2c85def7622}, {0xb4bca50b065abe63, 0x0fed077a756b53aa}, {0xe1ebce4dc7f16dfb, 0xd3e8495912c62895}, {0x8d3360f09cf6e4bd, 0x64712dd7abbbd95d}, {0xb080392cc4349dec, 0xbd8d794d96aacfb4}, {0xdca04777f541c567, 0xecf0d7a0fc5583a1}, {0x89e42caaf9491b60, 0xf41686c49db57245}, {0xac5d37d5b79b6239, 0x311c2875c522ced6}, {0xd77485cb25823ac7, 0x7d633293366b828c}, {0x86a8d39ef77164bc, 0xae5dff9c02033198}, {0xa8530886b54dbdeb, 0xd9f57f830283fdfd}, {0xd267caa862a12d66, 0xd072df63c324fd7c}, {0x8380dea93da4bc60, 0x4247cb9e59f71e6e}, {0xa46116538d0deb78, 0x52d9be85f074e609}, {0xcd795be870516656, 0x67902e276c921f8c}, {0x806bd9714632dff6, 0x00ba1cd8a3db53b7}, {0xa086cfcd97bf97f3, 0x80e8a40eccd228a5}, {0xc8a883c0fdaf7df0, 0x6122cd128006b2ce}, {0xfad2a4b13d1b5d6c, 0x796b805720085f82}, {0x9cc3a6eec6311a63, 0xcbe3303674053bb1}, {0xc3f490aa77bd60fc, 0xbedbfc4411068a9d}, {0xf4f1b4d515acb93b, 0xee92fb5515482d45}, {0x991711052d8bf3c5, 0x751bdd152d4d1c4b}, {0xbf5cd54678eef0b6, 0xd262d45a78a0635e}, {0xef340a98172aace4, 0x86fb897116c87c35}, {0x9580869f0e7aac0e, 0xd45d35e6ae3d4da1}, {0xbae0a846d2195712, 0x8974836059cca10a}, {0xe998d258869facd7, 0x2bd1a438703fc94c}, {0x91ff83775423cc06, 0x7b6306a34627ddd0}, {0xb67f6455292cbf08, 0x1a3bc84c17b1d543}, {0xe41f3d6a7377eeca, 0x20caba5f1d9e4a94}, {0x8e938662882af53e, 0x547eb47b7282ee9d}, {0xb23867fb2a35b28d, 0xe99e619a4f23aa44}, {0xdec681f9f4c31f31, 0x6405fa00e2ec94d5}, {0x8b3c113c38f9f37e, 0xde83bc408dd3dd05}, {0xae0b158b4738705e, 0x9624ab50b148d446}, {0xd98ddaee19068c76, 0x3badd624dd9b0958}, {0x87f8a8d4cfa417c9, 0xe54ca5d70a80e5d7}, {0xa9f6d30a038d1dbc, 0x5e9fcf4ccd211f4d}, {0xd47487cc8470652b, 0x7647c32000696720}, {0x84c8d4dfd2c63f3b, 0x29ecd9f40041e074}, {0xa5fb0a17c777cf09, 0xf468107100525891}, {0xcf79cc9db955c2cc, 0x7182148d4066eeb5}, {0x81ac1fe293d599bf, 0xc6f14cd848405531}, {0xa21727db38cb002f, 0xb8ada00e5a506a7d}, {0xca9cf1d206fdc03b, 0xa6d90811f0e4851d}, {0xfd442e4688bd304a, 0x908f4a166d1da664}, {0x9e4a9cec15763e2e, 0x9a598e4e043287ff}, {0xc5dd44271ad3cdba, 0x40eff1e1853f29fe}, {0xf7549530e188c128, 0xd12bee59e68ef47d}, {0x9a94dd3e8cf578b9, 0x82bb74f8301958cf}, {0xc13a148e3032d6e7, 0xe36a52363c1faf02}, {0xf18899b1bc3f8ca1, 0xdc44e6c3cb279ac2}, {0x96f5600f15a7b7e5, 0x29ab103a5ef8c0ba}, {0xbcb2b812db11a5de, 0x7415d448f6b6f0e8}, {0xebdf661791d60f56, 0x111b495b3464ad22}, {0x936b9fcebb25c995, 0xcab10dd900beec35}, {0xb84687c269ef3bfb, 0x3d5d514f40eea743}, {0xe65829b3046b0afa, 0x0cb4a5a3112a5113}, {0x8ff71a0fe2c2e6dc, 0x47f0e785eaba72ac}, {0xb3f4e093db73a093, 0x59ed216765690f57}, {0xe0f218b8d25088b8, 0x306869c13ec3532d}, {0x8c974f7383725573, 0x1e414218c73a13fc}, {0xafbd2350644eeacf, 0xe5d1929ef90898fb}, {0xdbac6c247d62a583, 0xdf45f746b74abf3a}, {0x894bc396ce5da772, 0x6b8bba8c328eb784}, {0xab9eb47c81f5114f, 0x066ea92f3f326565}, {0xd686619ba27255a2, 0xc80a537b0efefebe}, {0x8613fd0145877585, 0xbd06742ce95f5f37}, {0xa798fc4196e952e7, 0x2c48113823b73705}, {0xd17f3b51fca3a7a0, 0xf75a15862ca504c6}, {0x82ef85133de648c4, 0x9a984d73dbe722fc}, {0xa3ab66580d5fdaf5, 0xc13e60d0d2e0ebbb}, {0xcc963fee10b7d1b3, 0x318df905079926a9}, {0xffbbcfe994e5c61f, 0xfdf17746497f7053}, {0x9fd561f1fd0f9bd3, 0xfeb6ea8bedefa634}, {0xc7caba6e7c5382c8, 0xfe64a52ee96b8fc1}, {0xf9bd690a1b68637b, 0x3dfdce7aa3c673b1}, {0x9c1661a651213e2d, 0x06bea10ca65c084f}, {0xc31bfa0fe5698db8, 0x486e494fcff30a63}, {0xf3e2f893dec3f126, 0x5a89dba3c3efccfb}, {0x986ddb5c6b3a76b7, 0xf89629465a75e01d}, {0xbe89523386091465, 0xf6bbb397f1135824}, {0xee2ba6c0678b597f, 0x746aa07ded582e2d}, {0x94db483840b717ef, 0xa8c2a44eb4571cdd}, {0xba121a4650e4ddeb, 0x92f34d62616ce414}, {0xe896a0d7e51e1566, 0x77b020baf9c81d18}, {0x915e2486ef32cd60, 0x0ace1474dc1d122f}, {0xb5b5ada8aaff80b8, 0x0d819992132456bb}, {0xe3231912d5bf60e6, 0x10e1fff697ed6c6a}, {0x8df5efabc5979c8f, 0xca8d3ffa1ef463c2}, {0xb1736b96b6fd83b3, 0xbd308ff8a6b17cb3}, {0xddd0467c64bce4a0, 0xac7cb3f6d05ddbdf}, {0x8aa22c0dbef60ee4, 0x6bcdf07a423aa96c}, {0xad4ab7112eb3929d, 0x86c16c98d2c953c7}, {0xd89d64d57a607744, 0xe871c7bf077ba8b8}, {0x87625f056c7c4a8b, 0x11471cd764ad4973}, {0xa93af6c6c79b5d2d, 0xd598e40d3dd89bd0}, {0xd389b47879823479, 0x4aff1d108d4ec2c4}, {0x843610cb4bf160cb, 0xcedf722a585139bb}, {0xa54394fe1eedb8fe, 0xc2974eb4ee658829}, {0xce947a3da6a9273e, 0x733d226229feea33}, {0x811ccc668829b887, 0x0806357d5a3f5260}, {0xa163ff802a3426a8, 0xca07c2dcb0cf26f8}, {0xc9bcff6034c13052, 0xfc89b393dd02f0b6}, {0xfc2c3f3841f17c67, 0xbbac2078d443ace3}, {0x9d9ba7832936edc0, 0xd54b944b84aa4c0e}, {0xc5029163f384a931, 0x0a9e795e65d4df12}, {0xf64335bcf065d37d, 0x4d4617b5ff4a16d6}, {0x99ea0196163fa42e, 0x504bced1bf8e4e46}, {0xc06481fb9bcf8d39, 0xe45ec2862f71e1d7}, {0xf07da27a82c37088, 0x5d767327bb4e5a4d}, {0x964e858c91ba2655, 0x3a6a07f8d510f870}, {0xbbe226efb628afea, 0x890489f70a55368c}, {0xeadab0aba3b2dbe5, 0x2b45ac74ccea842f}, {0x92c8ae6b464fc96f, 0x3b0b8bc90012929e}, {0xb77ada0617e3bbcb, 0x09ce6ebb40173745}, {0xe55990879ddcaabd, 0xcc420a6a101d0516}, {0x8f57fa54c2a9eab6, 0x9fa946824a12232e}, {0xb32df8e9f3546564, 0x47939822dc96abfa}, {0xdff9772470297ebd, 0x59787e2b93bc56f8}, {0x8bfbea76c619ef36, 0x57eb4edb3c55b65b}, {0xaefae51477a06b03, 0xede622920b6b23f2}, {0xdab99e59958885c4, 0xe95fab368e45ecee}, {0x88b402f7fd75539b, 0x11dbcb0218ebb415}, {0xaae103b5fcd2a881, 0xd652bdc29f26a11a}, {0xd59944a37c0752a2, 0x4be76d3346f04960}, {0x857fcae62d8493a5, 0x6f70a4400c562ddc}, {0xa6dfbd9fb8e5b88e, 0xcb4ccd500f6bb953}, {0xd097ad07a71f26b2, 0x7e2000a41346a7a8}, {0x825ecc24c873782f, 0x8ed400668c0c28c9}, {0xa2f67f2dfa90563b, 0x728900802f0f32fb}, {0xcbb41ef979346bca, 0x4f2b40a03ad2ffba}, {0xfea126b7d78186bc, 0xe2f610c84987bfa9}, {0x9f24b832e6b0f436, 0x0dd9ca7d2df4d7ca}, {0xc6ede63fa05d3143, 0x91503d1c79720dbc}, {0xf8a95fcf88747d94, 0x75a44c6397ce912b}, {0x9b69dbe1b548ce7c, 0xc986afbe3ee11abb}, {0xc24452da229b021b, 0xfbe85badce996169}, {0xf2d56790ab41c2a2, 0xfae27299423fb9c4}, {0x97c560ba6b0919a5, 0xdccd879fc967d41b}, {0xbdb6b8e905cb600f, 0x5400e987bbc1c921}, {0xed246723473e3813, 0x290123e9aab23b69}, {0x9436c0760c86e30b, 0xf9a0b6720aaf6522}, {0xb94470938fa89bce, 0xf808e40e8d5b3e6a}, {0xe7958cb87392c2c2, 0xb60b1d1230b20e05}, {0x90bd77f3483bb9b9, 0xb1c6f22b5e6f48c3}, {0xb4ecd5f01a4aa828, 0x1e38aeb6360b1af4}, {0xe2280b6c20dd5232, 0x25c6da63c38de1b1}, {0x8d590723948a535f, 0x579c487e5a38ad0f}, {0xb0af48ec79ace837, 0x2d835a9df0c6d852}, {0xdcdb1b2798182244, 0xf8e431456cf88e66}, {0x8a08f0f8bf0f156b, 0x1b8e9ecb641b5900}, {0xac8b2d36eed2dac5, 0xe272467e3d222f40}, {0xd7adf884aa879177, 0x5b0ed81dcc6abb10}, {0x86ccbb52ea94baea, 0x98e947129fc2b4ea}, {0xa87fea27a539e9a5, 0x3f2398d747b36225}, {0xd29fe4b18e88640e, 0x8eec7f0d19a03aae}, {0x83a3eeeef9153e89, 0x1953cf68300424ad}, {0xa48ceaaab75a8e2b, 0x5fa8c3423c052dd8}, {0xcdb02555653131b6, 0x3792f412cb06794e}, {0x808e17555f3ebf11, 0xe2bbd88bbee40bd1}, {0xa0b19d2ab70e6ed6, 0x5b6aceaeae9d0ec5}, {0xc8de047564d20a8b, 0xf245825a5a445276}, {0xfb158592be068d2e, 0xeed6e2f0f0d56713}, {0x9ced737bb6c4183d, 0x55464dd69685606c}, {0xc428d05aa4751e4c, 0xaa97e14c3c26b887}, {0xf53304714d9265df, 0xd53dd99f4b3066a9}, {0x993fe2c6d07b7fab, 0xe546a8038efe402a}, {0xbf8fdb78849a5f96, 0xde98520472bdd034}, {0xef73d256a5c0f77c, 0x963e66858f6d4441}, {0x95a8637627989aad, 0xdde7001379a44aa9}, {0xbb127c53b17ec159, 0x5560c018580d5d53}, {0xe9d71b689dde71af, 0xaab8f01e6e10b4a7}, {0x9226712162ab070d, 0xcab3961304ca70e9}, {0xb6b00d69bb55c8d1, 0x3d607b97c5fd0d23}, {0xe45c10c42a2b3b05, 0x8cb89a7db77c506b}, {0x8eb98a7a9a5b04e3, 0x77f3608e92adb243}, {0xb267ed1940f1c61c, 0x55f038b237591ed4}, {0xdf01e85f912e37a3, 0x6b6c46dec52f6689}, {0x8b61313bbabce2c6, 0x2323ac4b3b3da016}, {0xae397d8aa96c1b77, 0xabec975e0a0d081b}, {0xd9c7dced53c72255, 0x96e7bd358c904a22}, {0x881cea14545c7575, 0x7e50d64177da2e55}, {0xaa242499697392d2, 0xdde50bd1d5d0b9ea}, {0xd4ad2dbfc3d07787, 0x955e4ec64b44e865}, {0x84ec3c97da624ab4, 0xbd5af13bef0b113f}, {0xa6274bbdd0fadd61, 0xecb1ad8aeacdd58f}, {0xcfb11ead453994ba, 0x67de18eda5814af3}, {0x81ceb32c4b43fcf4, 0x80eacf948770ced8}, {0xa2425ff75e14fc31, 0xa1258379a94d028e}, {0xcad2f7f5359a3b3e, 0x096ee45813a04331}, {0xfd87b5f28300ca0d, 0x8bca9d6e188853fd}, {0x9e74d1b791e07e48, 0x775ea264cf55347e}, {0xc612062576589dda, 0x95364afe032a819e}, {0xf79687aed3eec551, 0x3a83ddbd83f52205}, {0x9abe14cd44753b52, 0xc4926a9672793543}, {0xc16d9a0095928a27, 0x75b7053c0f178294}, {0xf1c90080baf72cb1, 0x5324c68b12dd6339}, {0x971da05074da7bee, 0xd3f6fc16ebca5e04}, {0xbce5086492111aea, 0x88f4bb1ca6bcf585}, {0xec1e4a7db69561a5, 0x2b31e9e3d06c32e6}, {0x9392ee8e921d5d07, 0x3aff322e62439fd0}, {0xb877aa3236a4b449, 0x09befeb9fad487c3}, {0xe69594bec44de15b, 0x4c2ebe687989a9b4}, {0x901d7cf73ab0acd9, 0x0f9d37014bf60a11}, {0xb424dc35095cd80f, 0x538484c19ef38c95}, {0xe12e13424bb40e13, 0x2865a5f206b06fba}, {0x8cbccc096f5088cb, 0xf93f87b7442e45d4}, {0xafebff0bcb24aafe, 0xf78f69a51539d749}, {0xdbe6fecebdedd5be, 0xb573440e5a884d1c}, {0x89705f4136b4a597, 0x31680a88f8953031}, {0xabcc77118461cefc, 0xfdc20d2b36ba7c3e}, {0xd6bf94d5e57a42bc, 0x3d32907604691b4d}, {0x8637bd05af6c69b5, 0xa63f9a49c2c1b110}, {0xa7c5ac471b478423, 0x0fcf80dc33721d54}, {0xd1b71758e219652b, 0xd3c36113404ea4a9}, {0x83126e978d4fdf3b, 0x645a1cac083126ea}, {0xa3d70a3d70a3d70a, 0x3d70a3d70a3d70a4}, {0xcccccccccccccccc, 0xcccccccccccccccd}, {0x8000000000000000, 0x0000000000000000}, {0xa000000000000000, 0x0000000000000000}, {0xc800000000000000, 0x0000000000000000}, {0xfa00000000000000, 0x0000000000000000}, {0x9c40000000000000, 0x0000000000000000}, {0xc350000000000000, 0x0000000000000000}, {0xf424000000000000, 0x0000000000000000}, {0x9896800000000000, 0x0000000000000000}, {0xbebc200000000000, 0x0000000000000000}, {0xee6b280000000000, 0x0000000000000000}, {0x9502f90000000000, 0x0000000000000000}, {0xba43b74000000000, 0x0000000000000000}, {0xe8d4a51000000000, 0x0000000000000000}, {0x9184e72a00000000, 0x0000000000000000}, {0xb5e620f480000000, 0x0000000000000000}, {0xe35fa931a0000000, 0x0000000000000000}, {0x8e1bc9bf04000000, 0x0000000000000000}, {0xb1a2bc2ec5000000, 0x0000000000000000}, {0xde0b6b3a76400000, 0x0000000000000000}, {0x8ac7230489e80000, 0x0000000000000000}, {0xad78ebc5ac620000, 0x0000000000000000}, {0xd8d726b7177a8000, 0x0000000000000000}, {0x878678326eac9000, 0x0000000000000000}, {0xa968163f0a57b400, 0x0000000000000000}, {0xd3c21bcecceda100, 0x0000000000000000}, {0x84595161401484a0, 0x0000000000000000}, {0xa56fa5b99019a5c8, 0x0000000000000000}, {0xcecb8f27f4200f3a, 0x0000000000000000}, {0x813f3978f8940984, 0x4000000000000000}, {0xa18f07d736b90be5, 0x5000000000000000}, {0xc9f2c9cd04674ede, 0xa400000000000000}, {0xfc6f7c4045812296, 0x4d00000000000000}, {0x9dc5ada82b70b59d, 0xf020000000000000}, {0xc5371912364ce305, 0x6c28000000000000}, {0xf684df56c3e01bc6, 0xc732000000000000}, {0x9a130b963a6c115c, 0x3c7f400000000000}, {0xc097ce7bc90715b3, 0x4b9f100000000000}, {0xf0bdc21abb48db20, 0x1e86d40000000000}, {0x96769950b50d88f4, 0x1314448000000000}, {0xbc143fa4e250eb31, 0x17d955a000000000}, {0xeb194f8e1ae525fd, 0x5dcfab0800000000}, {0x92efd1b8d0cf37be, 0x5aa1cae500000000}, {0xb7abc627050305ad, 0xf14a3d9e40000000}, {0xe596b7b0c643c719, 0x6d9ccd05d0000000}, {0x8f7e32ce7bea5c6f, 0xe4820023a2000000}, {0xb35dbf821ae4f38b, 0xdda2802c8a800000}, {0xe0352f62a19e306e, 0xd50b2037ad200000}, {0x8c213d9da502de45, 0x4526f422cc340000}, {0xaf298d050e4395d6, 0x9670b12b7f410000}, {0xdaf3f04651d47b4c, 0x3c0cdd765f114000}, {0x88d8762bf324cd0f, 0xa5880a69fb6ac800}, {0xab0e93b6efee0053, 0x8eea0d047a457a00}, {0xd5d238a4abe98068, 0x72a4904598d6d880}, {0x85a36366eb71f041, 0x47a6da2b7f864750}, {0xa70c3c40a64e6c51, 0x999090b65f67d924}, {0xd0cf4b50cfe20765, 0xfff4b4e3f741cf6d}, {0x82818f1281ed449f, 0xbff8f10e7a8921a5}, {0xa321f2d7226895c7, 0xaff72d52192b6a0e}, {0xcbea6f8ceb02bb39, 0x9bf4f8a69f764491}, {0xfee50b7025c36a08, 0x02f236d04753d5b5}, {0x9f4f2726179a2245, 0x01d762422c946591}, {0xc722f0ef9d80aad6, 0x424d3ad2b7b97ef6}, {0xf8ebad2b84e0d58b, 0xd2e0898765a7deb3}, {0x9b934c3b330c8577, 0x63cc55f49f88eb30}, {0xc2781f49ffcfa6d5, 0x3cbf6b71c76b25fc}, {0xf316271c7fc3908a, 0x8bef464e3945ef7b}, {0x97edd871cfda3a56, 0x97758bf0e3cbb5ad}, {0xbde94e8e43d0c8ec, 0x3d52eeed1cbea318}, {0xed63a231d4c4fb27, 0x4ca7aaa863ee4bde}, {0x945e455f24fb1cf8, 0x8fe8caa93e74ef6b}, {0xb975d6b6ee39e436, 0xb3e2fd538e122b45}, {0xe7d34c64a9c85d44, 0x60dbbca87196b617}, {0x90e40fbeea1d3a4a, 0xbc8955e946fe31ce}, {0xb51d13aea4a488dd, 0x6babab6398bdbe42}, {0xe264589a4dcdab14, 0xc696963c7eed2dd2}, {0x8d7eb76070a08aec, 0xfc1e1de5cf543ca3}, {0xb0de65388cc8ada8, 0x3b25a55f43294bcc}, {0xdd15fe86affad912, 0x49ef0eb713f39ebf}, {0x8a2dbf142dfcc7ab, 0x6e3569326c784338}, {0xacb92ed9397bf996, 0x49c2c37f07965405}, {0xd7e77a8f87daf7fb, 0xdc33745ec97be907}, {0x86f0ac99b4e8dafd, 0x69a028bb3ded71a4}, {0xa8acd7c0222311bc, 0xc40832ea0d68ce0d}, {0xd2d80db02aabd62b, 0xf50a3fa490c30191}, {0x83c7088e1aab65db, 0x792667c6da79e0fb}, {0xa4b8cab1a1563f52, 0x577001b891185939}, {0xcde6fd5e09abcf26, 0xed4c0226b55e6f87}, {0x80b05e5ac60b6178, 0x544f8158315b05b5}, {0xa0dc75f1778e39d6, 0x696361ae3db1c722}, {0xc913936dd571c84c, 0x03bc3a19cd1e38ea}, {0xfb5878494ace3a5f, 0x04ab48a04065c724}, {0x9d174b2dcec0e47b, 0x62eb0d64283f9c77}, {0xc45d1df942711d9a, 0x3ba5d0bd324f8395}, {0xf5746577930d6500, 0xca8f44ec7ee3647a}, {0x9968bf6abbe85f20, 0x7e998b13cf4e1ecc}, {0xbfc2ef456ae276e8, 0x9e3fedd8c321a67f}, {0xefb3ab16c59b14a2, 0xc5cfe94ef3ea101f}, {0x95d04aee3b80ece5, 0xbba1f1d158724a13}, {0xbb445da9ca61281f, 0x2a8a6e45ae8edc98}, {0xea1575143cf97226, 0xf52d09d71a3293be}, {0x924d692ca61be758, 0x593c2626705f9c57}, {0xb6e0c377cfa2e12e, 0x6f8b2fb00c77836d}, {0xe498f455c38b997a, 0x0b6dfb9c0f956448}, {0x8edf98b59a373fec, 0x4724bd4189bd5ead}, {0xb2977ee300c50fe7, 0x58edec91ec2cb658}, {0xdf3d5e9bc0f653e1, 0x2f2967b66737e3ee}, {0x8b865b215899f46c, 0xbd79e0d20082ee75}, {0xae67f1e9aec07187, 0xecd8590680a3aa12}, {0xda01ee641a708de9, 0xe80e6f4820cc9496}, {0x884134fe908658b2, 0x3109058d147fdcde}, {0xaa51823e34a7eede, 0xbd4b46f0599fd416}, {0xd4e5e2cdc1d1ea96, 0x6c9e18ac7007c91b}, {0x850fadc09923329e, 0x03e2cf6bc604ddb1}, {0xa6539930bf6bff45, 0x84db8346b786151d}, {0xcfe87f7cef46ff16, 0xe612641865679a64}, {0x81f14fae158c5f6e, 0x4fcb7e8f3f60c07f}, {0xa26da3999aef7749, 0xe3be5e330f38f09e}, {0xcb090c8001ab551c, 0x5cadf5bfd3072cc6}, {0xfdcb4fa002162a63, 0x73d9732fc7c8f7f7}, {0x9e9f11c4014dda7e, 0x2867e7fddcdd9afb}, {0xc646d63501a1511d, 0xb281e1fd541501b9}, {0xf7d88bc24209a565, 0x1f225a7ca91a4227}, {0x9ae757596946075f, 0x3375788de9b06959}, {0xc1a12d2fc3978937, 0x0052d6b1641c83af}, {0xf209787bb47d6b84, 0xc0678c5dbd23a49b}, {0x9745eb4d50ce6332, 0xf840b7ba963646e1}, {0xbd176620a501fbff, 0xb650e5a93bc3d899}, {0xec5d3fa8ce427aff, 0xa3e51f138ab4cebf}, {0x93ba47c980e98cdf, 0xc66f336c36b10138}, {0xb8a8d9bbe123f017, 0xb80b0047445d4185}, {0xe6d3102ad96cec1d, 0xa60dc059157491e6}, {0x9043ea1ac7e41392, 0x87c89837ad68db30}, {0xb454e4a179dd1877, 0x29babe4598c311fc}, {0xe16a1dc9d8545e94, 0xf4296dd6fef3d67b}, {0x8ce2529e2734bb1d, 0x1899e4a65f58660d}, {0xb01ae745b101e9e4, 0x5ec05dcff72e7f90}, {0xdc21a1171d42645d, 0x76707543f4fa1f74}, {0x899504ae72497eba, 0x6a06494a791c53a9}, {0xabfa45da0edbde69, 0x0487db9d17636893}, {0xd6f8d7509292d603, 0x45a9d2845d3c42b7}, {0x865b86925b9bc5c2, 0x0b8a2392ba45a9b3}, {0xa7f26836f282b732, 0x8e6cac7768d7141f}, {0xd1ef0244af2364ff, 0x3207d795430cd927}, {0x8335616aed761f1f, 0x7f44e6bd49e807b9}, {0xa402b9c5a8d3a6e7, 0x5f16206c9c6209a7}, {0xcd036837130890a1, 0x36dba887c37a8c10}, {0x802221226be55a64, 0xc2494954da2c978a}, {0xa02aa96b06deb0fd, 0xf2db9baa10b7bd6d}, {0xc83553c5c8965d3d, 0x6f92829494e5acc8}, {0xfa42a8b73abbf48c, 0xcb772339ba1f17fa}, {0x9c69a97284b578d7, 0xff2a760414536efc}, {0xc38413cf25e2d70d, 0xfef5138519684abb}, {0xf46518c2ef5b8cd1, 0x7eb258665fc25d6a}, {0x98bf2f79d5993802, 0xef2f773ffbd97a62}, {0xbeeefb584aff8603, 0xaafb550ffacfd8fb}, {0xeeaaba2e5dbf6784, 0x95ba2a53f983cf39}, {0x952ab45cfa97a0b2, 0xdd945a747bf26184}, {0xba756174393d88df, 0x94f971119aeef9e5}, {0xe912b9d1478ceb17, 0x7a37cd5601aab85e}, {0x91abb422ccb812ee, 0xac62e055c10ab33b}, {0xb616a12b7fe617aa, 0x577b986b314d600a}, {0xe39c49765fdf9d94, 0xed5a7e85fda0b80c}, {0x8e41ade9fbebc27d, 0x14588f13be847308}, {0xb1d219647ae6b31c, 0x596eb2d8ae258fc9}, {0xde469fbd99a05fe3, 0x6fca5f8ed9aef3bc}, {0x8aec23d680043bee, 0x25de7bb9480d5855}, {0xada72ccc20054ae9, 0xaf561aa79a10ae6b}, {0xd910f7ff28069da4, 0x1b2ba1518094da05}, {0x87aa9aff79042286, 0x90fb44d2f05d0843}, {0xa99541bf57452b28, 0x353a1607ac744a54}, {0xd3fa922f2d1675f2, 0x42889b8997915ce9}, {0x847c9b5d7c2e09b7, 0x69956135febada12}, {0xa59bc234db398c25, 0x43fab9837e699096}, {0xcf02b2c21207ef2e, 0x94f967e45e03f4bc}, {0x8161afb94b44f57d, 0x1d1be0eebac278f6}, {0xa1ba1ba79e1632dc, 0x6462d92a69731733}, {0xca28a291859bbf93, 0x7d7b8f7503cfdcff}, {0xfcb2cb35e702af78, 0x5cda735244c3d43f}, {0x9defbf01b061adab, 0x3a0888136afa64a8}, {0xc56baec21c7a1916, 0x088aaa1845b8fdd1}, {0xf6c69a72a3989f5b, 0x8aad549e57273d46}, {0x9a3c2087a63f6399, 0x36ac54e2f678864c}, {0xc0cb28a98fcf3c7f, 0x84576a1bb416a7de}, {0xf0fdf2d3f3c30b9f, 0x656d44a2a11c51d6}, {0x969eb7c47859e743, 0x9f644ae5a4b1b326}, {0xbc4665b596706114, 0x873d5d9f0dde1fef}, {0xeb57ff22fc0c7959, 0xa90cb506d155a7eb}, {0x9316ff75dd87cbd8, 0x09a7f12442d588f3}, {0xb7dcbf5354e9bece, 0x0c11ed6d538aeb30}, {0xe5d3ef282a242e81, 0x8f1668c8a86da5fb}, {0x8fa475791a569d10, 0xf96e017d694487bd}, {0xb38d92d760ec4455, 0x37c981dcc395a9ad}, {0xe070f78d3927556a, 0x85bbe253f47b1418}, {0x8c469ab843b89562, 0x93956d7478ccec8f}, {0xaf58416654a6babb, 0x387ac8d1970027b3}, {0xdb2e51bfe9d0696a, 0x06997b05fcc0319f}, {0x88fcf317f22241e2, 0x441fece3bdf81f04}, {0xab3c2fddeeaad25a, 0xd527e81cad7626c4}, {0xd60b3bd56a5586f1, 0x8a71e223d8d3b075}, {0x85c7056562757456, 0xf6872d5667844e4a}, {0xa738c6bebb12d16c, 0xb428f8ac016561dc}, {0xd106f86e69d785c7, 0xe13336d701beba53}, {0x82a45b450226b39c, 0xecc0024661173474}, {0xa34d721642b06084, 0x27f002d7f95d0191}, {0xcc20ce9bd35c78a5, 0x31ec038df7b441f5}, {0xff290242c83396ce, 0x7e67047175a15272}, {0x9f79a169bd203e41, 0x0f0062c6e984d387}, {0xc75809c42c684dd1, 0x52c07b78a3e60869}, {0xf92e0c3537826145, 0xa7709a56ccdf8a83}, {0x9bbcc7a142b17ccb, 0x88a66076400bb692}, {0xc2abf989935ddbfe, 0x6acff893d00ea436}, {0xf356f7ebf83552fe, 0x0583f6b8c4124d44}, {0x98165af37b2153de, 0xc3727a337a8b704b}, {0xbe1bf1b059e9a8d6, 0x744f18c0592e4c5d}, {0xeda2ee1c7064130c, 0x1162def06f79df74}, {0x9485d4d1c63e8be7, 0x8addcb5645ac2ba9}, {0xb9a74a0637ce2ee1, 0x6d953e2bd7173693}, {0xe8111c87c5c1ba99, 0xc8fa8db6ccdd0438}, {0x910ab1d4db9914a0, 0x1d9c9892400a22a3}, {0xb54d5e4a127f59c8, 0x2503beb6d00cab4c}, {0xe2a0b5dc971f303a, 0x2e44ae64840fd61e}, {0x8da471a9de737e24, 0x5ceaecfed289e5d3}, {0xb10d8e1456105dad, 0x7425a83e872c5f48}, {0xdd50f1996b947518, 0xd12f124e28f7771a}, {0x8a5296ffe33cc92f, 0x82bd6b70d99aaa70}, {0xace73cbfdc0bfb7b, 0x636cc64d1001550c}, {0xd8210befd30efa5a, 0x3c47f7e05401aa4f}, {0x8714a775e3e95c78, 0x65acfaec34810a72}, {0xa8d9d1535ce3b396, 0x7f1839a741a14d0e}, {0xd31045a8341ca07c, 0x1ede48111209a051}, {0x83ea2b892091e44d, 0x934aed0aab460433}, {0xa4e4b66b68b65d60, 0xf81da84d56178540}, {0xce1de40642e3f4b9, 0x36251260ab9d668f}, {0x80d2ae83e9ce78f3, 0xc1d72b7c6b42601a}, {0xa1075a24e4421730, 0xb24cf65b8612f820}, {0xc94930ae1d529cfc, 0xdee033f26797b628}, {0xfb9b7cd9a4a7443c, 0x169840ef017da3b2}, {0x9d412e0806e88aa5, 0x8e1f289560ee864f}, {0xc491798a08a2ad4e, 0xf1a6f2bab92a27e3}, {0xf5b5d7ec8acb58a2, 0xae10af696774b1dc}, {0x9991a6f3d6bf1765, 0xacca6da1e0a8ef2a}, {0xbff610b0cc6edd3f, 0x17fd090a58d32af4}, {0xeff394dcff8a948e, 0xddfc4b4cef07f5b1}, {0x95f83d0a1fb69cd9, 0x4abdaf101564f98f}, {0xbb764c4ca7a4440f, 0x9d6d1ad41abe37f2}, {0xea53df5fd18d5513, 0x84c86189216dc5ee}, {0x92746b9be2f8552c, 0x32fd3cf5b4e49bb5}, {0xb7118682dbb66a77, 0x3fbc8c33221dc2a2}, {0xe4d5e82392a40515, 0x0fabaf3feaa5334b}, {0x8f05b1163ba6832d, 0x29cb4d87f2a7400f}, {0xb2c71d5bca9023f8, 0x743e20e9ef511013}, {0xdf78e4b2bd342cf6, 0x914da9246b255417}, {0x8bab8eefb6409c1a, 0x1ad089b6c2f7548f}, {0xae9672aba3d0c320, 0xa184ac2473b529b2}, {0xda3c0f568cc4f3e8, 0xc9e5d72d90a2741f}, {0x8865899617fb1871, 0x7e2fa67c7a658893}, {0xaa7eebfb9df9de8d, 0xddbb901b98feeab8}, {0xd51ea6fa85785631, 0x552a74227f3ea566}, {0x8533285c936b35de, 0xd53a88958f872760}, {0xa67ff273b8460356, 0x8a892abaf368f138}, {0xd01fef10a657842c, 0x2d2b7569b0432d86}, {0x8213f56a67f6b29b, 0x9c3b29620e29fc74}, {0xa298f2c501f45f42, 0x8349f3ba91b47b90}, {0xcb3f2f7642717713, 0x241c70a936219a74}, {0xfe0efb53d30dd4d7, 0xed238cd383aa0111}, {0x9ec95d1463e8a506, 0xf4363804324a40ab}, {0xc67bb4597ce2ce48, 0xb143c6053edcd0d6}, {0xf81aa16fdc1b81da, 0xdd94b7868e94050b}, {0x9b10a4e5e9913128, 0xca7cf2b4191c8327}, {0xc1d4ce1f63f57d72, 0xfd1c2f611f63a3f1}, {0xf24a01a73cf2dccf, 0xbc633b39673c8ced}, {0x976e41088617ca01, 0xd5be0503e085d814}, {0xbd49d14aa79dbc82, 0x4b2d8644d8a74e19}, {0xec9c459d51852ba2, 0xddf8e7d60ed1219f}, {0x93e1ab8252f33b45, 0xcabb90e5c942b504}, {0xb8da1662e7b00a17, 0x3d6a751f3b936244}, {0xe7109bfba19c0c9d, 0x0cc512670a783ad5}, {0x906a617d450187e2, 0x27fb2b80668b24c6}, {0xb484f9dc9641e9da, 0xb1f9f660802dedf7}, {0xe1a63853bbd26451, 0x5e7873f8a0396974}, {0x8d07e33455637eb2, 0xdb0b487b6423e1e9}, {0xb049dc016abc5e5f, 0x91ce1a9a3d2cda63}, {0xdc5c5301c56b75f7, 0x7641a140cc7810fc}, {0x89b9b3e11b6329ba, 0xa9e904c87fcb0a9e}, {0xac2820d9623bf429, 0x546345fa9fbdcd45}, {0xd732290fbacaf133, 0xa97c177947ad4096}, {0x867f59a9d4bed6c0, 0x49ed8eabcccc485e}, {0xa81f301449ee8c70, 0x5c68f256bfff5a75}, {0xd226fc195c6a2f8c, 0x73832eec6fff3112}, {0x83585d8fd9c25db7, 0xc831fd53c5ff7eac}, {0xa42e74f3d032f525, 0xba3e7ca8b77f5e56}, {0xcd3a1230c43fb26f, 0x28ce1bd2e55f35ec}, {0x80444b5e7aa7cf85, 0x7980d163cf5b81b4}, {0xa0555e361951c366, 0xd7e105bcc3326220}, {0xc86ab5c39fa63440, 0x8dd9472bf3fefaa8}, {0xfa856334878fc150, 0xb14f98f6f0feb952}, {0x9c935e00d4b9d8d2, 0x6ed1bf9a569f33d4}, {0xc3b8358109e84f07, 0x0a862f80ec4700c9}, {0xf4a642e14c6262c8, 0xcd27bb612758c0fb}, {0x98e7e9cccfbd7dbd, 0x8038d51cb897789d}, {0xbf21e44003acdd2c, 0xe0470a63e6bd56c4}, {0xeeea5d5004981478, 0x1858ccfce06cac75}, {0x95527a5202df0ccb, 0x0f37801e0c43ebc9}, {0xbaa718e68396cffd, 0xd30560258f54e6bb}, {0xe950df20247c83fd, 0x47c6b82ef32a206a}, {0x91d28b7416cdd27e, 0x4cdc331d57fa5442}, {0xb6472e511c81471d, 0xe0133fe4adf8e953}, {0xe3d8f9e563a198e5, 0x58180fddd97723a7}, {0x8e679c2f5e44ff8f, 0x570f09eaa7ea7649}, {0xb201833b35d63f73, 0x2cd2cc6551e513db}, {0xde81e40a034bcf4f, 0xf8077f7ea65e58d2}, {0x8b112e86420f6191, 0xfb04afaf27faf783}, {0xadd57a27d29339f6, 0x79c5db9af1f9b564}, {0xd94ad8b1c7380874, 0x18375281ae7822bd}, {0x87cec76f1c830548, 0x8f2293910d0b15b6}, {0xa9c2794ae3a3c69a, 0xb2eb3875504ddb23}, {0xd433179d9c8cb841, 0x5fa60692a46151ec}, {0x849feec281d7f328, 0xdbc7c41ba6bcd334}, {0xa5c7ea73224deff3, 0x12b9b522906c0801}, {0xcf39e50feae16bef, 0xd768226b34870a01}, {0x81842f29f2cce375, 0xe6a1158300d46641}, {0xa1e53af46f801c53, 0x60495ae3c1097fd1}, {0xca5e89b18b602368, 0x385bb19cb14bdfc5}, {0xfcf62c1dee382c42, 0x46729e03dd9ed7b6}, {0x9e19db92b4e31ba9, 0x6c07a2c26a8346d2}, {0xc5a05277621be293, 0xc7098b7305241886}, { 0xf70867153aa2db38, 0xb8cbee4fc66d1ea8 } #else {0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7b}, {0xce5d73ff402d98e3, 0xfb0a3d212dc81290}, {0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481f}, {0x86a8d39ef77164bc, 0xae5dff9c02033198}, {0xd98ddaee19068c76, 0x3badd624dd9b0958}, {0xafbd2350644eeacf, 0xe5d1929ef90898fb}, {0x8df5efabc5979c8f, 0xca8d3ffa1ef463c2}, {0xe55990879ddcaabd, 0xcc420a6a101d0516}, {0xb94470938fa89bce, 0xf808e40e8d5b3e6a}, {0x95a8637627989aad, 0xdde7001379a44aa9}, {0xf1c90080baf72cb1, 0x5324c68b12dd6339}, {0xc350000000000000, 0x0000000000000000}, {0x9dc5ada82b70b59d, 0xf020000000000000}, {0xfee50b7025c36a08, 0x02f236d04753d5b5}, {0xcde6fd5e09abcf26, 0xed4c0226b55e6f87}, {0xa6539930bf6bff45, 0x84db8346b786151d}, {0x865b86925b9bc5c2, 0x0b8a2392ba45a9b3}, {0xd910f7ff28069da4, 0x1b2ba1518094da05}, {0xaf58416654a6babb, 0x387ac8d1970027b3}, {0x8da471a9de737e24, 0x5ceaecfed289e5d3}, {0xe4d5e82392a40515, 0x0fabaf3feaa5334b}, {0xb8da1662e7b00a17, 0x3d6a751f3b936244}, { 0x95527a5202df0ccb, 0x0f37801e0c43ebc9 } #endif }; #if FMT_USE_FULL_CACHE_DRAGONBOX return pow10_significands[k - float_info::min_k]; #else static constexpr const uint64_t powers_of_5_64[] = { 0x0000000000000001, 0x0000000000000005, 0x0000000000000019, 0x000000000000007d, 0x0000000000000271, 0x0000000000000c35, 0x0000000000003d09, 0x000000000001312d, 0x000000000005f5e1, 0x00000000001dcd65, 0x00000000009502f9, 0x0000000002e90edd, 0x000000000e8d4a51, 0x0000000048c27395, 0x000000016bcc41e9, 0x000000071afd498d, 0x0000002386f26fc1, 0x000000b1a2bc2ec5, 0x000003782dace9d9, 0x00001158e460913d, 0x000056bc75e2d631, 0x0001b1ae4d6e2ef5, 0x000878678326eac9, 0x002a5a058fc295ed, 0x00d3c21bcecceda1, 0x0422ca8b0a00a425, 0x14adf4b7320334b9}; static const int compression_ratio = 27; // Compute base index. int cache_index = (k - float_info::min_k) / compression_ratio; int kb = cache_index * compression_ratio + float_info::min_k; int offset = k - kb; // Get base cache. uint128_fallback base_cache = pow10_significands[cache_index]; if (offset == 0) return base_cache; // Compute the required amount of bit-shift. int alpha = floor_log2_pow10(kb + offset) - floor_log2_pow10(kb) - offset; FMT_ASSERT(alpha > 0 && alpha < 64, "shifting error detected"); // Try to recover the real cache. uint64_t pow5 = powers_of_5_64[offset]; uint128_fallback recovered_cache = umul128(base_cache.high(), pow5); uint128_fallback middle_low = umul128(base_cache.low(), pow5); recovered_cache += middle_low.high(); uint64_t high_to_middle = recovered_cache.high() << (64 - alpha); uint64_t middle_to_low = recovered_cache.low() << (64 - alpha); recovered_cache = uint128_fallback{(recovered_cache.low() >> alpha) | high_to_middle, ((middle_low.low() >> alpha) | middle_to_low)}; FMT_ASSERT(recovered_cache.low() + 1 != 0, ""); return {recovered_cache.high(), recovered_cache.low() + 1}; #endif } struct compute_mul_result { carrier_uint result; bool is_integer; }; struct compute_mul_parity_result { bool parity; bool is_integer; }; static compute_mul_result compute_mul( carrier_uint u, const cache_entry_type& cache) noexcept { auto r = umul192_upper128(u, cache); return {r.high(), r.low() == 0}; } static uint32_t compute_delta(cache_entry_type const& cache, int beta) noexcept { return static_cast(cache.high() >> (64 - 1 - beta)); } static compute_mul_parity_result compute_mul_parity( carrier_uint two_f, const cache_entry_type& cache, int beta) noexcept { FMT_ASSERT(beta >= 1, ""); FMT_ASSERT(beta < 64, ""); auto r = umul192_lower128(two_f, cache); return {((r.high() >> (64 - beta)) & 1) != 0, ((r.high() << beta) | (r.low() >> (64 - beta))) == 0}; } static carrier_uint compute_left_endpoint_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return (cache.high() - (cache.high() >> (num_significand_bits() + 2))) >> (64 - num_significand_bits() - 1 - beta); } static carrier_uint compute_right_endpoint_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return (cache.high() + (cache.high() >> (num_significand_bits() + 1))) >> (64 - num_significand_bits() - 1 - beta); } static carrier_uint compute_round_up_for_shorter_interval_case( const cache_entry_type& cache, int beta) noexcept { return ((cache.high() >> (64 - num_significand_bits() - 2 - beta)) + 1) / 2; } }; // Various integer checks template bool is_left_endpoint_integer_shorter_interval(int exponent) noexcept { const int case_shorter_interval_left_endpoint_lower_threshold = 2; const int case_shorter_interval_left_endpoint_upper_threshold = 3; return exponent >= case_shorter_interval_left_endpoint_lower_threshold && exponent <= case_shorter_interval_left_endpoint_upper_threshold; } // Remove trailing zeros from n and return the number of zeros removed (float) FMT_INLINE int remove_trailing_zeros(uint32_t& n) noexcept { FMT_ASSERT(n != 0, ""); const uint32_t mod_inv_5 = 0xcccccccd; const uint32_t mod_inv_25 = mod_inv_5 * mod_inv_5; int s = 0; while (true) { auto q = rotr(n * mod_inv_25, 2); if (q > max_value() / 100) break; n = q; s += 2; } auto q = rotr(n * mod_inv_5, 1); if (q <= max_value() / 10) { n = q; s |= 1; } return s; } // Removes trailing zeros and returns the number of zeros removed (double) FMT_INLINE int remove_trailing_zeros(uint64_t& n) noexcept { FMT_ASSERT(n != 0, ""); // This magic number is ceil(2^90 / 10^8). constexpr uint64_t magic_number = 12379400392853802749ull; auto nm = umul128(n, magic_number); // Is n is divisible by 10^8? if ((nm.high() & ((1ull << (90 - 64)) - 1)) == 0 && nm.low() < magic_number) { // If yes, work with the quotient. auto n32 = static_cast(nm.high() >> (90 - 64)); const uint32_t mod_inv_5 = 0xcccccccd; const uint32_t mod_inv_25 = mod_inv_5 * mod_inv_5; int s = 8; while (true) { auto q = rotr(n32 * mod_inv_25, 2); if (q > max_value() / 100) break; n32 = q; s += 2; } auto q = rotr(n32 * mod_inv_5, 1); if (q <= max_value() / 10) { n32 = q; s |= 1; } n = n32; return s; } // If n is not divisible by 10^8, work with n itself. const uint64_t mod_inv_5 = 0xcccccccccccccccd; const uint64_t mod_inv_25 = mod_inv_5 * mod_inv_5; int s = 0; while (true) { auto q = rotr(n * mod_inv_25, 2); if (q > max_value() / 100) break; n = q; s += 2; } auto q = rotr(n * mod_inv_5, 1); if (q <= max_value() / 10) { n = q; s |= 1; } return s; } // The main algorithm for shorter interval case template FMT_INLINE decimal_fp shorter_interval_case(int exponent) noexcept { decimal_fp ret_value; // Compute k and beta const int minus_k = floor_log10_pow2_minus_log10_4_over_3(exponent); const int beta = exponent + floor_log2_pow10(-minus_k); // Compute xi and zi using cache_entry_type = typename cache_accessor::cache_entry_type; const cache_entry_type cache = cache_accessor::get_cached_power(-minus_k); auto xi = cache_accessor::compute_left_endpoint_for_shorter_interval_case( cache, beta); auto zi = cache_accessor::compute_right_endpoint_for_shorter_interval_case( cache, beta); // If the left endpoint is not an integer, increase it if (!is_left_endpoint_integer_shorter_interval(exponent)) ++xi; // Try bigger divisor ret_value.significand = zi / 10; // If succeed, remove trailing zeros if necessary and return if (ret_value.significand * 10 >= xi) { ret_value.exponent = minus_k + 1; ret_value.exponent += remove_trailing_zeros(ret_value.significand); return ret_value; } // Otherwise, compute the round-up of y ret_value.significand = cache_accessor::compute_round_up_for_shorter_interval_case(cache, beta); ret_value.exponent = minus_k; // When tie occurs, choose one of them according to the rule if (exponent >= float_info::shorter_interval_tie_lower_threshold && exponent <= float_info::shorter_interval_tie_upper_threshold) { ret_value.significand = ret_value.significand % 2 == 0 ? ret_value.significand : ret_value.significand - 1; } else if (ret_value.significand < xi) { ++ret_value.significand; } return ret_value; } template decimal_fp to_decimal(T x) noexcept { // Step 1: integer promotion & Schubfach multiplier calculation. using carrier_uint = typename float_info::carrier_uint; using cache_entry_type = typename cache_accessor::cache_entry_type; auto br = bit_cast(x); // Extract significand bits and exponent bits. const carrier_uint significand_mask = (static_cast(1) << num_significand_bits()) - 1; carrier_uint significand = (br & significand_mask); int exponent = static_cast((br & exponent_mask()) >> num_significand_bits()); if (exponent != 0) { // Check if normal. exponent -= exponent_bias() + num_significand_bits(); // Shorter interval case; proceed like Schubfach. // In fact, when exponent == 1 and significand == 0, the interval is // regular. However, it can be shown that the end-results are anyway same. if (significand == 0) return shorter_interval_case(exponent); significand |= (static_cast(1) << num_significand_bits()); } else { // Subnormal case; the interval is always regular. if (significand == 0) return {0, 0}; exponent = std::numeric_limits::min_exponent - num_significand_bits() - 1; } const bool include_left_endpoint = (significand % 2 == 0); const bool include_right_endpoint = include_left_endpoint; // Compute k and beta. const int minus_k = floor_log10_pow2(exponent) - float_info::kappa; const cache_entry_type cache = cache_accessor::get_cached_power(-minus_k); const int beta = exponent + floor_log2_pow10(-minus_k); // Compute zi and deltai. // 10^kappa <= deltai < 10^(kappa + 1) const uint32_t deltai = cache_accessor::compute_delta(cache, beta); const carrier_uint two_fc = significand << 1; // For the case of binary32, the result of integer check is not correct for // 29711844 * 2^-82 // = 6.1442653300000000008655037797566933477355632930994033813476... * 10^-18 // and 29711844 * 2^-81 // = 1.2288530660000000001731007559513386695471126586198806762695... * 10^-17, // and they are the unique counterexamples. However, since 29711844 is even, // this does not cause any problem for the endpoints calculations; it can only // cause a problem when we need to perform integer check for the center. // Fortunately, with these inputs, that branch is never executed, so we are // fine. const typename cache_accessor::compute_mul_result z_mul = cache_accessor::compute_mul((two_fc | 1) << beta, cache); // Step 2: Try larger divisor; remove trailing zeros if necessary. // Using an upper bound on zi, we might be able to optimize the division // better than the compiler; we are computing zi / big_divisor here. decimal_fp ret_value; ret_value.significand = divide_by_10_to_kappa_plus_1(z_mul.result); uint32_t r = static_cast(z_mul.result - float_info::big_divisor * ret_value.significand); if (r < deltai) { // Exclude the right endpoint if necessary. if (r == 0 && (z_mul.is_integer & !include_right_endpoint)) { --ret_value.significand; r = float_info::big_divisor; goto small_divisor_case_label; } } else if (r > deltai) { goto small_divisor_case_label; } else { // r == deltai; compare fractional parts. const typename cache_accessor::compute_mul_parity_result x_mul = cache_accessor::compute_mul_parity(two_fc - 1, cache, beta); if (!(x_mul.parity | (x_mul.is_integer & include_left_endpoint))) goto small_divisor_case_label; } ret_value.exponent = minus_k + float_info::kappa + 1; // We may need to remove trailing zeros. ret_value.exponent += remove_trailing_zeros(ret_value.significand); return ret_value; // Step 3: Find the significand with the smaller divisor. small_divisor_case_label: ret_value.significand *= 10; ret_value.exponent = minus_k + float_info::kappa; uint32_t dist = r - (deltai / 2) + (float_info::small_divisor / 2); const bool approx_y_parity = ((dist ^ (float_info::small_divisor / 2)) & 1) != 0; // Is dist divisible by 10^kappa? const bool divisible_by_small_divisor = check_divisibility_and_divide_by_pow10::kappa>(dist); // Add dist / 10^kappa to the significand. ret_value.significand += dist; if (!divisible_by_small_divisor) return ret_value; // Check z^(f) >= epsilon^(f). // We have either yi == zi - epsiloni or yi == (zi - epsiloni) - 1, // where yi == zi - epsiloni if and only if z^(f) >= epsilon^(f). // Since there are only 2 possibilities, we only need to care about the // parity. Also, zi and r should have the same parity since the divisor // is an even number. const auto y_mul = cache_accessor::compute_mul_parity(two_fc, cache, beta); // If z^(f) >= epsilon^(f), we might have a tie when z^(f) == epsilon^(f), // or equivalently, when y is an integer. if (y_mul.parity != approx_y_parity) --ret_value.significand; else if (y_mul.is_integer & (ret_value.significand % 2 != 0)) --ret_value.significand; return ret_value; } } // namespace dragonbox #ifdef _MSC_VER FMT_FUNC auto fmt_snprintf(char* buf, size_t size, const char* fmt, ...) -> int { auto args = va_list(); va_start(args, fmt); int result = vsnprintf_s(buf, size, _TRUNCATE, fmt, args); va_end(args); return result; } #endif } // namespace detail template <> struct formatter { FMT_CONSTEXPR auto parse(format_parse_context& ctx) -> format_parse_context::iterator { return ctx.begin(); } template auto format(const detail::bigint& n, FormatContext& ctx) const -> typename FormatContext::iterator { auto out = ctx.out(); bool first = true; for (auto i = n.bigits_.size(); i > 0; --i) { auto value = n.bigits_[i - 1u]; if (first) { out = format_to(out, FMT_STRING("{:x}"), value); first = false; continue; } out = format_to(out, FMT_STRING("{:08x}"), value); } if (n.exp_ > 0) out = format_to(out, FMT_STRING("p{}"), n.exp_ * detail::bigint::bigit_bits); return out; } }; FMT_FUNC detail::utf8_to_utf16::utf8_to_utf16(string_view s) { for_each_codepoint(s, [this](uint32_t cp, string_view) { if (cp == invalid_code_point) FMT_THROW(std::runtime_error("invalid utf8")); if (cp <= 0xFFFF) { buffer_.push_back(static_cast(cp)); } else { cp -= 0x10000; buffer_.push_back(static_cast(0xD800 + (cp >> 10))); buffer_.push_back(static_cast(0xDC00 + (cp & 0x3FF))); } return true; }); buffer_.push_back(0); } FMT_FUNC void format_system_error(detail::buffer& out, int error_code, const char* message) noexcept { FMT_TRY { auto ec = std::error_code(error_code, std::generic_category()); write(std::back_inserter(out), std::system_error(ec, message).what()); return; } FMT_CATCH(...) {} format_error_code(out, error_code, message); } FMT_FUNC void report_system_error(int error_code, const char* message) noexcept { report_error(format_system_error, error_code, message); } FMT_FUNC std::string vformat(string_view fmt, format_args args) { // Don't optimize the "{}" case to keep the binary size small and because it // can be better optimized in fmt::format anyway. auto buffer = memory_buffer(); detail::vformat_to(buffer, fmt, args); return to_string(buffer); } namespace detail { #ifdef _WIN32 using dword = conditional_t; extern "C" __declspec(dllimport) int __stdcall WriteConsoleW( // void*, const void*, dword, dword*, void*); FMT_FUNC bool write_console(std::FILE* f, string_view text) { auto fd = _fileno(f); if (_isatty(fd)) { detail::utf8_to_utf16 u16(string_view(text.data(), text.size())); auto written = detail::dword(); if (detail::WriteConsoleW(reinterpret_cast(_get_osfhandle(fd)), u16.c_str(), static_cast(u16.size()), &written, nullptr)) { return true; } } // We return false if the file descriptor was not TTY, or it was but // SetConsoleW failed which can happen if the output has been redirected to // NUL. In both cases when we return false, we should attempt to do regular // write via fwrite or std::ostream::write. return false; } #endif FMT_FUNC void print(std::FILE* f, string_view text) { #ifdef _WIN32 if (write_console(f, text)) return; #endif detail::fwrite_fully(text.data(), 1, text.size(), f); } } // namespace detail FMT_FUNC void vprint(std::FILE* f, string_view format_str, format_args args) { memory_buffer buffer; detail::vformat_to(buffer, format_str, args); detail::print(f, {buffer.data(), buffer.size()}); } #ifdef _WIN32 // Print assuming legacy (non-Unicode) encoding. FMT_FUNC void detail::vprint_mojibake(std::FILE* f, string_view format_str, format_args args) { memory_buffer buffer; detail::vformat_to(buffer, format_str, basic_format_args>(args)); fwrite_fully(buffer.data(), 1, buffer.size(), f); } #endif FMT_FUNC void vprint(string_view format_str, format_args args) { vprint(stdout, format_str, args); } namespace detail { struct singleton { unsigned char upper; unsigned char lower_count; }; inline auto is_printable(uint16_t x, const singleton* singletons, size_t singletons_size, const unsigned char* singleton_lowers, const unsigned char* normal, size_t normal_size) -> bool { auto upper = x >> 8; auto lower_start = 0; for (size_t i = 0; i < singletons_size; ++i) { auto s = singletons[i]; auto lower_end = lower_start + s.lower_count; if (upper < s.upper) break; if (upper == s.upper) { for (auto j = lower_start; j < lower_end; ++j) { if (singleton_lowers[j] == (x & 0xff)) return false; } } lower_start = lower_end; } auto xsigned = static_cast(x); auto current = true; for (size_t i = 0; i < normal_size; ++i) { auto v = static_cast(normal[i]); auto len = (v & 0x80) != 0 ? (v & 0x7f) << 8 | normal[++i] : v; xsigned -= len; if (xsigned < 0) break; current = !current; } return current; } // This code is generated by support/printable.py. FMT_FUNC auto is_printable(uint32_t cp) -> bool { static constexpr singleton singletons0[] = { {0x00, 1}, {0x03, 5}, {0x05, 6}, {0x06, 3}, {0x07, 6}, {0x08, 8}, {0x09, 17}, {0x0a, 28}, {0x0b, 25}, {0x0c, 20}, {0x0d, 16}, {0x0e, 13}, {0x0f, 4}, {0x10, 3}, {0x12, 18}, {0x13, 9}, {0x16, 1}, {0x17, 5}, {0x18, 2}, {0x19, 3}, {0x1a, 7}, {0x1c, 2}, {0x1d, 1}, {0x1f, 22}, {0x20, 3}, {0x2b, 3}, {0x2c, 2}, {0x2d, 11}, {0x2e, 1}, {0x30, 3}, {0x31, 2}, {0x32, 1}, {0xa7, 2}, {0xa9, 2}, {0xaa, 4}, {0xab, 8}, {0xfa, 2}, {0xfb, 5}, {0xfd, 4}, {0xfe, 3}, {0xff, 9}, }; static constexpr unsigned char singletons0_lower[] = { 0xad, 0x78, 0x79, 0x8b, 0x8d, 0xa2, 0x30, 0x57, 0x58, 0x8b, 0x8c, 0x90, 0x1c, 0x1d, 0xdd, 0x0e, 0x0f, 0x4b, 0x4c, 0xfb, 0xfc, 0x2e, 0x2f, 0x3f, 0x5c, 0x5d, 0x5f, 0xb5, 0xe2, 0x84, 0x8d, 0x8e, 0x91, 0x92, 0xa9, 0xb1, 0xba, 0xbb, 0xc5, 0xc6, 0xc9, 0xca, 0xde, 0xe4, 0xe5, 0xff, 0x00, 0x04, 0x11, 0x12, 0x29, 0x31, 0x34, 0x37, 0x3a, 0x3b, 0x3d, 0x49, 0x4a, 0x5d, 0x84, 0x8e, 0x92, 0xa9, 0xb1, 0xb4, 0xba, 0xbb, 0xc6, 0xca, 0xce, 0xcf, 0xe4, 0xe5, 0x00, 0x04, 0x0d, 0x0e, 0x11, 0x12, 0x29, 0x31, 0x34, 0x3a, 0x3b, 0x45, 0x46, 0x49, 0x4a, 0x5e, 0x64, 0x65, 0x84, 0x91, 0x9b, 0x9d, 0xc9, 0xce, 0xcf, 0x0d, 0x11, 0x29, 0x45, 0x49, 0x57, 0x64, 0x65, 0x8d, 0x91, 0xa9, 0xb4, 0xba, 0xbb, 0xc5, 0xc9, 0xdf, 0xe4, 0xe5, 0xf0, 0x0d, 0x11, 0x45, 0x49, 0x64, 0x65, 0x80, 0x84, 0xb2, 0xbc, 0xbe, 0xbf, 0xd5, 0xd7, 0xf0, 0xf1, 0x83, 0x85, 0x8b, 0xa4, 0xa6, 0xbe, 0xbf, 0xc5, 0xc7, 0xce, 0xcf, 0xda, 0xdb, 0x48, 0x98, 0xbd, 0xcd, 0xc6, 0xce, 0xcf, 0x49, 0x4e, 0x4f, 0x57, 0x59, 0x5e, 0x5f, 0x89, 0x8e, 0x8f, 0xb1, 0xb6, 0xb7, 0xbf, 0xc1, 0xc6, 0xc7, 0xd7, 0x11, 0x16, 0x17, 0x5b, 0x5c, 0xf6, 0xf7, 0xfe, 0xff, 0x80, 0x0d, 0x6d, 0x71, 0xde, 0xdf, 0x0e, 0x0f, 0x1f, 0x6e, 0x6f, 0x1c, 0x1d, 0x5f, 0x7d, 0x7e, 0xae, 0xaf, 0xbb, 0xbc, 0xfa, 0x16, 0x17, 0x1e, 0x1f, 0x46, 0x47, 0x4e, 0x4f, 0x58, 0x5a, 0x5c, 0x5e, 0x7e, 0x7f, 0xb5, 0xc5, 0xd4, 0xd5, 0xdc, 0xf0, 0xf1, 0xf5, 0x72, 0x73, 0x8f, 0x74, 0x75, 0x96, 0x2f, 0x5f, 0x26, 0x2e, 0x2f, 0xa7, 0xaf, 0xb7, 0xbf, 0xc7, 0xcf, 0xd7, 0xdf, 0x9a, 0x40, 0x97, 0x98, 0x30, 0x8f, 0x1f, 0xc0, 0xc1, 0xce, 0xff, 0x4e, 0x4f, 0x5a, 0x5b, 0x07, 0x08, 0x0f, 0x10, 0x27, 0x2f, 0xee, 0xef, 0x6e, 0x6f, 0x37, 0x3d, 0x3f, 0x42, 0x45, 0x90, 0x91, 0xfe, 0xff, 0x53, 0x67, 0x75, 0xc8, 0xc9, 0xd0, 0xd1, 0xd8, 0xd9, 0xe7, 0xfe, 0xff, }; static constexpr singleton singletons1[] = { {0x00, 6}, {0x01, 1}, {0x03, 1}, {0x04, 2}, {0x08, 8}, {0x09, 2}, {0x0a, 5}, {0x0b, 2}, {0x0e, 4}, {0x10, 1}, {0x11, 2}, {0x12, 5}, {0x13, 17}, {0x14, 1}, {0x15, 2}, {0x17, 2}, {0x19, 13}, {0x1c, 5}, {0x1d, 8}, {0x24, 1}, {0x6a, 3}, {0x6b, 2}, {0xbc, 2}, {0xd1, 2}, {0xd4, 12}, {0xd5, 9}, {0xd6, 2}, {0xd7, 2}, {0xda, 1}, {0xe0, 5}, {0xe1, 2}, {0xe8, 2}, {0xee, 32}, {0xf0, 4}, {0xf8, 2}, {0xf9, 2}, {0xfa, 2}, {0xfb, 1}, }; static constexpr unsigned char singletons1_lower[] = { 0x0c, 0x27, 0x3b, 0x3e, 0x4e, 0x4f, 0x8f, 0x9e, 0x9e, 0x9f, 0x06, 0x07, 0x09, 0x36, 0x3d, 0x3e, 0x56, 0xf3, 0xd0, 0xd1, 0x04, 0x14, 0x18, 0x36, 0x37, 0x56, 0x57, 0x7f, 0xaa, 0xae, 0xaf, 0xbd, 0x35, 0xe0, 0x12, 0x87, 0x89, 0x8e, 0x9e, 0x04, 0x0d, 0x0e, 0x11, 0x12, 0x29, 0x31, 0x34, 0x3a, 0x45, 0x46, 0x49, 0x4a, 0x4e, 0x4f, 0x64, 0x65, 0x5c, 0xb6, 0xb7, 0x1b, 0x1c, 0x07, 0x08, 0x0a, 0x0b, 0x14, 0x17, 0x36, 0x39, 0x3a, 0xa8, 0xa9, 0xd8, 0xd9, 0x09, 0x37, 0x90, 0x91, 0xa8, 0x07, 0x0a, 0x3b, 0x3e, 0x66, 0x69, 0x8f, 0x92, 0x6f, 0x5f, 0xee, 0xef, 0x5a, 0x62, 0x9a, 0x9b, 0x27, 0x28, 0x55, 0x9d, 0xa0, 0xa1, 0xa3, 0xa4, 0xa7, 0xa8, 0xad, 0xba, 0xbc, 0xc4, 0x06, 0x0b, 0x0c, 0x15, 0x1d, 0x3a, 0x3f, 0x45, 0x51, 0xa6, 0xa7, 0xcc, 0xcd, 0xa0, 0x07, 0x19, 0x1a, 0x22, 0x25, 0x3e, 0x3f, 0xc5, 0xc6, 0x04, 0x20, 0x23, 0x25, 0x26, 0x28, 0x33, 0x38, 0x3a, 0x48, 0x4a, 0x4c, 0x50, 0x53, 0x55, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x63, 0x65, 0x66, 0x6b, 0x73, 0x78, 0x7d, 0x7f, 0x8a, 0xa4, 0xaa, 0xaf, 0xb0, 0xc0, 0xd0, 0xae, 0xaf, 0x79, 0xcc, 0x6e, 0x6f, 0x93, }; static constexpr unsigned char normal0[] = { 0x00, 0x20, 0x5f, 0x22, 0x82, 0xdf, 0x04, 0x82, 0x44, 0x08, 0x1b, 0x04, 0x06, 0x11, 0x81, 0xac, 0x0e, 0x80, 0xab, 0x35, 0x28, 0x0b, 0x80, 0xe0, 0x03, 0x19, 0x08, 0x01, 0x04, 0x2f, 0x04, 0x34, 0x04, 0x07, 0x03, 0x01, 0x07, 0x06, 0x07, 0x11, 0x0a, 0x50, 0x0f, 0x12, 0x07, 0x55, 0x07, 0x03, 0x04, 0x1c, 0x0a, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x02, 0x03, 0x03, 0x03, 0x0c, 0x04, 0x05, 0x03, 0x0b, 0x06, 0x01, 0x0e, 0x15, 0x05, 0x3a, 0x03, 0x11, 0x07, 0x06, 0x05, 0x10, 0x07, 0x57, 0x07, 0x02, 0x07, 0x15, 0x0d, 0x50, 0x04, 0x43, 0x03, 0x2d, 0x03, 0x01, 0x04, 0x11, 0x06, 0x0f, 0x0c, 0x3a, 0x04, 0x1d, 0x25, 0x5f, 0x20, 0x6d, 0x04, 0x6a, 0x25, 0x80, 0xc8, 0x05, 0x82, 0xb0, 0x03, 0x1a, 0x06, 0x82, 0xfd, 0x03, 0x59, 0x07, 0x15, 0x0b, 0x17, 0x09, 0x14, 0x0c, 0x14, 0x0c, 0x6a, 0x06, 0x0a, 0x06, 0x1a, 0x06, 0x59, 0x07, 0x2b, 0x05, 0x46, 0x0a, 0x2c, 0x04, 0x0c, 0x04, 0x01, 0x03, 0x31, 0x0b, 0x2c, 0x04, 0x1a, 0x06, 0x0b, 0x03, 0x80, 0xac, 0x06, 0x0a, 0x06, 0x21, 0x3f, 0x4c, 0x04, 0x2d, 0x03, 0x74, 0x08, 0x3c, 0x03, 0x0f, 0x03, 0x3c, 0x07, 0x38, 0x08, 0x2b, 0x05, 0x82, 0xff, 0x11, 0x18, 0x08, 0x2f, 0x11, 0x2d, 0x03, 0x20, 0x10, 0x21, 0x0f, 0x80, 0x8c, 0x04, 0x82, 0x97, 0x19, 0x0b, 0x15, 0x88, 0x94, 0x05, 0x2f, 0x05, 0x3b, 0x07, 0x02, 0x0e, 0x18, 0x09, 0x80, 0xb3, 0x2d, 0x74, 0x0c, 0x80, 0xd6, 0x1a, 0x0c, 0x05, 0x80, 0xff, 0x05, 0x80, 0xdf, 0x0c, 0xee, 0x0d, 0x03, 0x84, 0x8d, 0x03, 0x37, 0x09, 0x81, 0x5c, 0x14, 0x80, 0xb8, 0x08, 0x80, 0xcb, 0x2a, 0x38, 0x03, 0x0a, 0x06, 0x38, 0x08, 0x46, 0x08, 0x0c, 0x06, 0x74, 0x0b, 0x1e, 0x03, 0x5a, 0x04, 0x59, 0x09, 0x80, 0x83, 0x18, 0x1c, 0x0a, 0x16, 0x09, 0x4c, 0x04, 0x80, 0x8a, 0x06, 0xab, 0xa4, 0x0c, 0x17, 0x04, 0x31, 0xa1, 0x04, 0x81, 0xda, 0x26, 0x07, 0x0c, 0x05, 0x05, 0x80, 0xa5, 0x11, 0x81, 0x6d, 0x10, 0x78, 0x28, 0x2a, 0x06, 0x4c, 0x04, 0x80, 0x8d, 0x04, 0x80, 0xbe, 0x03, 0x1b, 0x03, 0x0f, 0x0d, }; static constexpr unsigned char normal1[] = { 0x5e, 0x22, 0x7b, 0x05, 0x03, 0x04, 0x2d, 0x03, 0x66, 0x03, 0x01, 0x2f, 0x2e, 0x80, 0x82, 0x1d, 0x03, 0x31, 0x0f, 0x1c, 0x04, 0x24, 0x09, 0x1e, 0x05, 0x2b, 0x05, 0x44, 0x04, 0x0e, 0x2a, 0x80, 0xaa, 0x06, 0x24, 0x04, 0x24, 0x04, 0x28, 0x08, 0x34, 0x0b, 0x01, 0x80, 0x90, 0x81, 0x37, 0x09, 0x16, 0x0a, 0x08, 0x80, 0x98, 0x39, 0x03, 0x63, 0x08, 0x09, 0x30, 0x16, 0x05, 0x21, 0x03, 0x1b, 0x05, 0x01, 0x40, 0x38, 0x04, 0x4b, 0x05, 0x2f, 0x04, 0x0a, 0x07, 0x09, 0x07, 0x40, 0x20, 0x27, 0x04, 0x0c, 0x09, 0x36, 0x03, 0x3a, 0x05, 0x1a, 0x07, 0x04, 0x0c, 0x07, 0x50, 0x49, 0x37, 0x33, 0x0d, 0x33, 0x07, 0x2e, 0x08, 0x0a, 0x81, 0x26, 0x52, 0x4e, 0x28, 0x08, 0x2a, 0x56, 0x1c, 0x14, 0x17, 0x09, 0x4e, 0x04, 0x1e, 0x0f, 0x43, 0x0e, 0x19, 0x07, 0x0a, 0x06, 0x48, 0x08, 0x27, 0x09, 0x75, 0x0b, 0x3f, 0x41, 0x2a, 0x06, 0x3b, 0x05, 0x0a, 0x06, 0x51, 0x06, 0x01, 0x05, 0x10, 0x03, 0x05, 0x80, 0x8b, 0x62, 0x1e, 0x48, 0x08, 0x0a, 0x80, 0xa6, 0x5e, 0x22, 0x45, 0x0b, 0x0a, 0x06, 0x0d, 0x13, 0x39, 0x07, 0x0a, 0x36, 0x2c, 0x04, 0x10, 0x80, 0xc0, 0x3c, 0x64, 0x53, 0x0c, 0x48, 0x09, 0x0a, 0x46, 0x45, 0x1b, 0x48, 0x08, 0x53, 0x1d, 0x39, 0x81, 0x07, 0x46, 0x0a, 0x1d, 0x03, 0x47, 0x49, 0x37, 0x03, 0x0e, 0x08, 0x0a, 0x06, 0x39, 0x07, 0x0a, 0x81, 0x36, 0x19, 0x80, 0xb7, 0x01, 0x0f, 0x32, 0x0d, 0x83, 0x9b, 0x66, 0x75, 0x0b, 0x80, 0xc4, 0x8a, 0xbc, 0x84, 0x2f, 0x8f, 0xd1, 0x82, 0x47, 0xa1, 0xb9, 0x82, 0x39, 0x07, 0x2a, 0x04, 0x02, 0x60, 0x26, 0x0a, 0x46, 0x0a, 0x28, 0x05, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x04, 0x39, 0x07, 0x11, 0x40, 0x05, 0x0b, 0x02, 0x0e, 0x97, 0xf8, 0x08, 0x84, 0xd6, 0x2a, 0x09, 0xa2, 0xf7, 0x81, 0x1f, 0x31, 0x03, 0x11, 0x04, 0x08, 0x81, 0x8c, 0x89, 0x04, 0x6b, 0x05, 0x0d, 0x03, 0x09, 0x07, 0x10, 0x93, 0x60, 0x80, 0xf6, 0x0a, 0x73, 0x08, 0x6e, 0x17, 0x46, 0x80, 0x9a, 0x14, 0x0c, 0x57, 0x09, 0x19, 0x80, 0x87, 0x81, 0x47, 0x03, 0x85, 0x42, 0x0f, 0x15, 0x85, 0x50, 0x2b, 0x80, 0xd5, 0x2d, 0x03, 0x1a, 0x04, 0x02, 0x81, 0x70, 0x3a, 0x05, 0x01, 0x85, 0x00, 0x80, 0xd7, 0x29, 0x4c, 0x04, 0x0a, 0x04, 0x02, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x3c, 0x06, 0x01, 0x04, 0x55, 0x05, 0x1b, 0x34, 0x02, 0x81, 0x0e, 0x2c, 0x04, 0x64, 0x0c, 0x56, 0x0a, 0x80, 0xae, 0x38, 0x1d, 0x0d, 0x2c, 0x04, 0x09, 0x07, 0x02, 0x0e, 0x06, 0x80, 0x9a, 0x83, 0xd8, 0x08, 0x0d, 0x03, 0x0d, 0x03, 0x74, 0x0c, 0x59, 0x07, 0x0c, 0x14, 0x0c, 0x04, 0x38, 0x08, 0x0a, 0x06, 0x28, 0x08, 0x22, 0x4e, 0x81, 0x54, 0x0c, 0x15, 0x03, 0x03, 0x05, 0x07, 0x09, 0x19, 0x07, 0x07, 0x09, 0x03, 0x0d, 0x07, 0x29, 0x80, 0xcb, 0x25, 0x0a, 0x84, 0x06, }; auto lower = static_cast(cp); if (cp < 0x10000) { return is_printable(lower, singletons0, sizeof(singletons0) / sizeof(*singletons0), singletons0_lower, normal0, sizeof(normal0)); } if (cp < 0x20000) { return is_printable(lower, singletons1, sizeof(singletons1) / sizeof(*singletons1), singletons1_lower, normal1, sizeof(normal1)); } if (0x2a6de <= cp && cp < 0x2a700) return false; if (0x2b735 <= cp && cp < 0x2b740) return false; if (0x2b81e <= cp && cp < 0x2b820) return false; if (0x2cea2 <= cp && cp < 0x2ceb0) return false; if (0x2ebe1 <= cp && cp < 0x2f800) return false; if (0x2fa1e <= cp && cp < 0x30000) return false; if (0x3134b <= cp && cp < 0xe0100) return false; if (0xe01f0 <= cp && cp < 0x110000) return false; return cp < 0x110000; } } // namespace detail FMT_END_NAMESPACE #endif // FMT_FORMAT_INL_H_ ================================================ FILE: native/iosTest/Pods/fmt/include/fmt/format.h ================================================ /* Formatting library for C++ Copyright (c) 2012 - present, Victor Zverovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Optional exception to the license --- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices. */ #ifndef FMT_FORMAT_H_ #define FMT_FORMAT_H_ #include // std::signbit #include // uint32_t #include // std::memcpy #include // std::numeric_limits #include // std::uninitialized_copy #include // std::runtime_error #include // std::system_error #ifdef __cpp_lib_bit_cast # include // std::bitcast #endif #include "core.h" #if FMT_GCC_VERSION # define FMT_GCC_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) #else # define FMT_GCC_VISIBILITY_HIDDEN #endif #ifdef __NVCC__ # define FMT_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__) #else # define FMT_CUDA_VERSION 0 #endif #ifdef __has_builtin # define FMT_HAS_BUILTIN(x) __has_builtin(x) #else # define FMT_HAS_BUILTIN(x) 0 #endif #if FMT_GCC_VERSION || FMT_CLANG_VERSION # define FMT_NOINLINE __attribute__((noinline)) #else # define FMT_NOINLINE #endif #if FMT_MSC_VERSION # define FMT_MSC_DEFAULT = default #else # define FMT_MSC_DEFAULT #endif #ifndef FMT_THROW # if FMT_EXCEPTIONS # if FMT_MSC_VERSION || defined(__NVCC__) FMT_BEGIN_NAMESPACE namespace detail { template inline void do_throw(const Exception& x) { // Silence unreachable code warnings in MSVC and NVCC because these // are nearly impossible to fix in a generic code. volatile bool b = true; if (b) throw x; } } // namespace detail FMT_END_NAMESPACE # define FMT_THROW(x) detail::do_throw(x) # else # define FMT_THROW(x) throw x # endif # else # define FMT_THROW(x) \ do { \ FMT_ASSERT(false, (x).what()); \ } while (false) # endif #endif #if FMT_EXCEPTIONS # define FMT_TRY try # define FMT_CATCH(x) catch (x) #else # define FMT_TRY if (true) # define FMT_CATCH(x) if (false) #endif #ifndef FMT_MAYBE_UNUSED # if FMT_HAS_CPP17_ATTRIBUTE(maybe_unused) # define FMT_MAYBE_UNUSED [[maybe_unused]] # else # define FMT_MAYBE_UNUSED # endif #endif #ifndef FMT_USE_USER_DEFINED_LITERALS // EDG based compilers (Intel, NVIDIA, Elbrus, etc), GCC and MSVC support UDLs. # if (FMT_HAS_FEATURE(cxx_user_literals) || FMT_GCC_VERSION >= 407 || \ FMT_MSC_VERSION >= 1900) && \ (!defined(__EDG_VERSION__) || __EDG_VERSION__ >= /* UDL feature */ 480) # define FMT_USE_USER_DEFINED_LITERALS 1 # else # define FMT_USE_USER_DEFINED_LITERALS 0 # endif #endif // Defining FMT_REDUCE_INT_INSTANTIATIONS to 1, will reduce the number of // integer formatter template instantiations to just one by only using the // largest integer type. This results in a reduction in binary size but will // cause a decrease in integer formatting performance. #if !defined(FMT_REDUCE_INT_INSTANTIATIONS) # define FMT_REDUCE_INT_INSTANTIATIONS 0 #endif // __builtin_clz is broken in clang with Microsoft CodeGen: // https://github.com/fmtlib/fmt/issues/519. #if !FMT_MSC_VERSION # if FMT_HAS_BUILTIN(__builtin_clz) || FMT_GCC_VERSION || FMT_ICC_VERSION # define FMT_BUILTIN_CLZ(n) __builtin_clz(n) # endif # if FMT_HAS_BUILTIN(__builtin_clzll) || FMT_GCC_VERSION || FMT_ICC_VERSION # define FMT_BUILTIN_CLZLL(n) __builtin_clzll(n) # endif #endif // __builtin_ctz is broken in Intel Compiler Classic on Windows: // https://github.com/fmtlib/fmt/issues/2510. #ifndef __ICL # if FMT_HAS_BUILTIN(__builtin_ctz) || FMT_GCC_VERSION || FMT_ICC_VERSION || \ defined(__NVCOMPILER) # define FMT_BUILTIN_CTZ(n) __builtin_ctz(n) # endif # if FMT_HAS_BUILTIN(__builtin_ctzll) || FMT_GCC_VERSION || \ FMT_ICC_VERSION || defined(__NVCOMPILER) # define FMT_BUILTIN_CTZLL(n) __builtin_ctzll(n) # endif #endif #if FMT_MSC_VERSION # include // _BitScanReverse[64], _BitScanForward[64], _umul128 #endif // Some compilers masquerade as both MSVC and GCC-likes or otherwise support // __builtin_clz and __builtin_clzll, so only define FMT_BUILTIN_CLZ using the // MSVC intrinsics if the clz and clzll builtins are not available. #if FMT_MSC_VERSION && !defined(FMT_BUILTIN_CLZLL) && \ !defined(FMT_BUILTIN_CTZLL) FMT_BEGIN_NAMESPACE namespace detail { // Avoid Clang with Microsoft CodeGen's -Wunknown-pragmas warning. # if !defined(__clang__) # pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanReverse) # if defined(_WIN64) # pragma intrinsic(_BitScanForward64) # pragma intrinsic(_BitScanReverse64) # endif # endif inline auto clz(uint32_t x) -> int { unsigned long r = 0; _BitScanReverse(&r, x); FMT_ASSERT(x != 0, ""); // Static analysis complains about using uninitialized data // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_MSC_WARNING(suppress : 6102) return 31 ^ static_cast(r); } # define FMT_BUILTIN_CLZ(n) detail::clz(n) inline auto clzll(uint64_t x) -> int { unsigned long r = 0; # ifdef _WIN64 _BitScanReverse64(&r, x); # else // Scan the high 32 bits. if (_BitScanReverse(&r, static_cast(x >> 32))) return 63 ^ (r + 32); // Scan the low 32 bits. _BitScanReverse(&r, static_cast(x)); # endif FMT_ASSERT(x != 0, ""); FMT_MSC_WARNING(suppress : 6102) // Suppress a bogus static analysis warning. return 63 ^ static_cast(r); } # define FMT_BUILTIN_CLZLL(n) detail::clzll(n) inline auto ctz(uint32_t x) -> int { unsigned long r = 0; _BitScanForward(&r, x); FMT_ASSERT(x != 0, ""); FMT_MSC_WARNING(suppress : 6102) // Suppress a bogus static analysis warning. return static_cast(r); } # define FMT_BUILTIN_CTZ(n) detail::ctz(n) inline auto ctzll(uint64_t x) -> int { unsigned long r = 0; FMT_ASSERT(x != 0, ""); FMT_MSC_WARNING(suppress : 6102) // Suppress a bogus static analysis warning. # ifdef _WIN64 _BitScanForward64(&r, x); # else // Scan the low 32 bits. if (_BitScanForward(&r, static_cast(x))) return static_cast(r); // Scan the high 32 bits. _BitScanForward(&r, static_cast(x >> 32)); r += 32; # endif return static_cast(r); } # define FMT_BUILTIN_CTZLL(n) detail::ctzll(n) } // namespace detail FMT_END_NAMESPACE #endif FMT_BEGIN_NAMESPACE namespace detail { FMT_CONSTEXPR inline void abort_fuzzing_if(bool condition) { ignore_unused(condition); #ifdef FMT_FUZZ if (condition) throw std::runtime_error("fuzzing limit reached"); #endif } template struct string_literal { static constexpr CharT value[sizeof...(C)] = {C...}; constexpr operator basic_string_view() const { return {value, sizeof...(C)}; } }; #if FMT_CPLUSPLUS < 201703L template constexpr CharT string_literal::value[sizeof...(C)]; #endif template class formatbuf : public Streambuf { private: using char_type = typename Streambuf::char_type; using streamsize = decltype(std::declval().sputn(nullptr, 0)); using int_type = typename Streambuf::int_type; using traits_type = typename Streambuf::traits_type; buffer& buffer_; public: explicit formatbuf(buffer& buf) : buffer_(buf) {} protected: // The put area is always empty. This makes the implementation simpler and has // the advantage that the streambuf and the buffer are always in sync and // sputc never writes into uninitialized memory. A disadvantage is that each // call to sputc always results in a (virtual) call to overflow. There is no // disadvantage here for sputn since this always results in a call to xsputn. auto overflow(int_type ch) -> int_type override { if (!traits_type::eq_int_type(ch, traits_type::eof())) buffer_.push_back(static_cast(ch)); return ch; } auto xsputn(const char_type* s, streamsize count) -> streamsize override { buffer_.append(s, s + count); return count; } }; // Implementation of std::bit_cast for pre-C++20. template FMT_CONSTEXPR20 auto bit_cast(const From& from) -> To { #ifdef __cpp_lib_bit_cast if (is_constant_evaluated()) return std::bit_cast(from); #endif auto to = To(); // The cast suppresses a bogus -Wclass-memaccess on GCC. std::memcpy(static_cast(&to), &from, sizeof(to)); return to; } inline auto is_big_endian() -> bool { #ifdef _WIN32 return false; #elif defined(__BIG_ENDIAN__) return true; #elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) return __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__; #else struct bytes { char data[sizeof(int)]; }; return bit_cast(1).data[0] == 0; #endif } class uint128_fallback { private: uint64_t lo_, hi_; friend uint128_fallback umul128(uint64_t x, uint64_t y) noexcept; public: constexpr uint128_fallback(uint64_t hi, uint64_t lo) : lo_(lo), hi_(hi) {} constexpr uint128_fallback(uint64_t value = 0) : lo_(value), hi_(0) {} constexpr uint64_t high() const noexcept { return hi_; } constexpr uint64_t low() const noexcept { return lo_; } template ::value)> constexpr explicit operator T() const { return static_cast(lo_); } friend constexpr auto operator==(const uint128_fallback& lhs, const uint128_fallback& rhs) -> bool { return lhs.hi_ == rhs.hi_ && lhs.lo_ == rhs.lo_; } friend constexpr auto operator!=(const uint128_fallback& lhs, const uint128_fallback& rhs) -> bool { return !(lhs == rhs); } friend constexpr auto operator>(const uint128_fallback& lhs, const uint128_fallback& rhs) -> bool { return lhs.hi_ != rhs.hi_ ? lhs.hi_ > rhs.hi_ : lhs.lo_ > rhs.lo_; } friend constexpr auto operator|(const uint128_fallback& lhs, const uint128_fallback& rhs) -> uint128_fallback { return {lhs.hi_ | rhs.hi_, lhs.lo_ | rhs.lo_}; } friend constexpr auto operator&(const uint128_fallback& lhs, const uint128_fallback& rhs) -> uint128_fallback { return {lhs.hi_ & rhs.hi_, lhs.lo_ & rhs.lo_}; } friend auto operator+(const uint128_fallback& lhs, const uint128_fallback& rhs) -> uint128_fallback { auto result = uint128_fallback(lhs); result += rhs; return result; } friend auto operator*(const uint128_fallback& lhs, uint32_t rhs) -> uint128_fallback { FMT_ASSERT(lhs.hi_ == 0, ""); uint64_t hi = (lhs.lo_ >> 32) * rhs; uint64_t lo = (lhs.lo_ & ~uint32_t()) * rhs; uint64_t new_lo = (hi << 32) + lo; return {(hi >> 32) + (new_lo < lo ? 1 : 0), new_lo}; } friend auto operator-(const uint128_fallback& lhs, uint64_t rhs) -> uint128_fallback { return {lhs.hi_ - (lhs.lo_ < rhs ? 1 : 0), lhs.lo_ - rhs}; } FMT_CONSTEXPR auto operator>>(int shift) const -> uint128_fallback { if (shift == 64) return {0, hi_}; if (shift > 64) return uint128_fallback(0, hi_) >> (shift - 64); return {hi_ >> shift, (hi_ << (64 - shift)) | (lo_ >> shift)}; } FMT_CONSTEXPR auto operator<<(int shift) const -> uint128_fallback { if (shift == 64) return {lo_, 0}; if (shift > 64) return uint128_fallback(lo_, 0) << (shift - 64); return {hi_ << shift | (lo_ >> (64 - shift)), (lo_ << shift)}; } FMT_CONSTEXPR auto operator>>=(int shift) -> uint128_fallback& { return *this = *this >> shift; } FMT_CONSTEXPR void operator+=(uint128_fallback n) { uint64_t new_lo = lo_ + n.lo_; uint64_t new_hi = hi_ + n.hi_ + (new_lo < lo_ ? 1 : 0); FMT_ASSERT(new_hi >= hi_, ""); lo_ = new_lo; hi_ = new_hi; } FMT_CONSTEXPR20 uint128_fallback& operator+=(uint64_t n) noexcept { if (is_constant_evaluated()) { lo_ += n; hi_ += (lo_ < n ? 1 : 0); return *this; } #if FMT_HAS_BUILTIN(__builtin_addcll) && !defined(__ibmxl__) unsigned long long carry; lo_ = __builtin_addcll(lo_, n, 0, &carry); hi_ += carry; #elif FMT_HAS_BUILTIN(__builtin_ia32_addcarryx_u64) && !defined(__ibmxl__) unsigned long long result; auto carry = __builtin_ia32_addcarryx_u64(0, lo_, n, &result); lo_ = result; hi_ += carry; #elif defined(_MSC_VER) && defined(_M_X64) auto carry = _addcarry_u64(0, lo_, n, &lo_); _addcarry_u64(carry, hi_, 0, &hi_); #else lo_ += n; hi_ += (lo_ < n ? 1 : 0); #endif return *this; } }; using uint128_t = conditional_t; #ifdef UINTPTR_MAX using uintptr_t = ::uintptr_t; #else using uintptr_t = uint128_t; #endif // Returns the largest possible value for type T. Same as // std::numeric_limits::max() but shorter and not affected by the max macro. template constexpr auto max_value() -> T { return (std::numeric_limits::max)(); } template constexpr auto num_bits() -> int { return std::numeric_limits::digits; } // std::numeric_limits::digits may return 0 for 128-bit ints. template <> constexpr auto num_bits() -> int { return 128; } template <> constexpr auto num_bits() -> int { return 128; } // A heterogeneous bit_cast used for converting 96-bit long double to uint128_t // and 128-bit pointers to uint128_fallback. template sizeof(From))> inline auto bit_cast(const From& from) -> To { constexpr auto size = static_cast(sizeof(From) / sizeof(unsigned)); struct data_t { unsigned value[static_cast(size)]; } data = bit_cast(from); auto result = To(); if (const_check(is_big_endian())) { for (int i = 0; i < size; ++i) result = (result << num_bits()) | data.value[i]; } else { for (int i = size - 1; i >= 0; --i) result = (result << num_bits()) | data.value[i]; } return result; } FMT_INLINE void assume(bool condition) { (void)condition; #if FMT_HAS_BUILTIN(__builtin_assume) && !FMT_ICC_VERSION __builtin_assume(condition); #endif } // An approximation of iterator_t for pre-C++20 systems. template using iterator_t = decltype(std::begin(std::declval())); template using sentinel_t = decltype(std::end(std::declval())); // A workaround for std::string not having mutable data() until C++17. template inline auto get_data(std::basic_string& s) -> Char* { return &s[0]; } template inline auto get_data(Container& c) -> typename Container::value_type* { return c.data(); } #if defined(_SECURE_SCL) && _SECURE_SCL // Make a checked iterator to avoid MSVC warnings. template using checked_ptr = stdext::checked_array_iterator; template constexpr auto make_checked(T* p, size_t size) -> checked_ptr { return {p, size}; } #else template using checked_ptr = T*; template constexpr auto make_checked(T* p, size_t) -> T* { return p; } #endif // Attempts to reserve space for n extra characters in the output range. // Returns a pointer to the reserved range or a reference to it. template ::value)> #if FMT_CLANG_VERSION >= 307 && !FMT_ICC_VERSION __attribute__((no_sanitize("undefined"))) #endif inline auto reserve(std::back_insert_iterator it, size_t n) -> checked_ptr { Container& c = get_container(it); size_t size = c.size(); c.resize(size + n); return make_checked(get_data(c) + size, n); } template inline auto reserve(buffer_appender it, size_t n) -> buffer_appender { buffer& buf = get_container(it); buf.try_reserve(buf.size() + n); return it; } template constexpr auto reserve(Iterator& it, size_t) -> Iterator& { return it; } template using reserve_iterator = remove_reference_t(), 0))>; template constexpr auto to_pointer(OutputIt, size_t) -> T* { return nullptr; } template auto to_pointer(buffer_appender it, size_t n) -> T* { buffer& buf = get_container(it); auto size = buf.size(); if (buf.capacity() < size + n) return nullptr; buf.try_resize(size + n); return buf.data() + size; } template ::value)> inline auto base_iterator(std::back_insert_iterator& it, checked_ptr) -> std::back_insert_iterator { return it; } template constexpr auto base_iterator(Iterator, Iterator it) -> Iterator { return it; } // is spectacularly slow to compile in C++20 so use a simple fill_n // instead (#1998). template FMT_CONSTEXPR auto fill_n(OutputIt out, Size count, const T& value) -> OutputIt { for (Size i = 0; i < count; ++i) *out++ = value; return out; } template FMT_CONSTEXPR20 auto fill_n(T* out, Size count, char value) -> T* { if (is_constant_evaluated()) { return fill_n(out, count, value); } std::memset(out, value, to_unsigned(count)); return out + count; } #ifdef __cpp_char8_t using char8_type = char8_t; #else enum char8_type : unsigned char {}; #endif template FMT_CONSTEXPR FMT_NOINLINE auto copy_str_noinline(InputIt begin, InputIt end, OutputIt out) -> OutputIt { return copy_str(begin, end, out); } // A public domain branchless UTF-8 decoder by Christopher Wellons: // https://github.com/skeeto/branchless-utf8 /* Decode the next character, c, from s, reporting errors in e. * * Since this is a branchless decoder, four bytes will be read from the * buffer regardless of the actual length of the next character. This * means the buffer _must_ have at least three bytes of zero padding * following the end of the data stream. * * Errors are reported in e, which will be non-zero if the parsed * character was somehow invalid: invalid byte sequence, non-canonical * encoding, or a surrogate half. * * The function returns a pointer to the next character. When an error * occurs, this pointer will be a guess that depends on the particular * error, but it will always advance at least one byte. */ FMT_CONSTEXPR inline auto utf8_decode(const char* s, uint32_t* c, int* e) -> const char* { constexpr const int masks[] = {0x00, 0x7f, 0x1f, 0x0f, 0x07}; constexpr const uint32_t mins[] = {4194304, 0, 128, 2048, 65536}; constexpr const int shiftc[] = {0, 18, 12, 6, 0}; constexpr const int shifte[] = {0, 6, 4, 2, 0}; int len = code_point_length_impl(*s); // Compute the pointer to the next character early so that the next // iteration can start working on the next character. Neither Clang // nor GCC figure out this reordering on their own. const char* next = s + len + !len; using uchar = unsigned char; // Assume a four-byte character and load four bytes. Unused bits are // shifted out. *c = uint32_t(uchar(s[0]) & masks[len]) << 18; *c |= uint32_t(uchar(s[1]) & 0x3f) << 12; *c |= uint32_t(uchar(s[2]) & 0x3f) << 6; *c |= uint32_t(uchar(s[3]) & 0x3f) << 0; *c >>= shiftc[len]; // Accumulate the various error conditions. *e = (*c < mins[len]) << 6; // non-canonical encoding *e |= ((*c >> 11) == 0x1b) << 7; // surrogate half? *e |= (*c > 0x10FFFF) << 8; // out of range? *e |= (uchar(s[1]) & 0xc0) >> 2; *e |= (uchar(s[2]) & 0xc0) >> 4; *e |= uchar(s[3]) >> 6; *e ^= 0x2a; // top two bits of each tail byte correct? *e >>= shifte[len]; return next; } constexpr uint32_t invalid_code_point = ~uint32_t(); // Invokes f(cp, sv) for every code point cp in s with sv being the string view // corresponding to the code point. cp is invalid_code_point on error. template FMT_CONSTEXPR void for_each_codepoint(string_view s, F f) { auto decode = [f](const char* buf_ptr, const char* ptr) { auto cp = uint32_t(); auto error = 0; auto end = utf8_decode(buf_ptr, &cp, &error); bool result = f(error ? invalid_code_point : cp, string_view(ptr, error ? 1 : to_unsigned(end - buf_ptr))); return result ? (error ? buf_ptr + 1 : end) : nullptr; }; auto p = s.data(); const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars. if (s.size() >= block_size) { for (auto end = p + s.size() - block_size + 1; p < end;) { p = decode(p, p); if (!p) return; } } if (auto num_chars_left = s.data() + s.size() - p) { char buf[2 * block_size - 1] = {}; copy_str(p, p + num_chars_left, buf); const char* buf_ptr = buf; do { auto end = decode(buf_ptr, p); if (!end) return; p += end - buf_ptr; buf_ptr = end; } while (buf_ptr - buf < num_chars_left); } } template inline auto compute_width(basic_string_view s) -> size_t { return s.size(); } // Computes approximate display width of a UTF-8 string. FMT_CONSTEXPR inline size_t compute_width(string_view s) { size_t num_code_points = 0; // It is not a lambda for compatibility with C++14. struct count_code_points { size_t* count; FMT_CONSTEXPR auto operator()(uint32_t cp, string_view) const -> bool { *count += detail::to_unsigned( 1 + (cp >= 0x1100 && (cp <= 0x115f || // Hangul Jamo init. consonants cp == 0x2329 || // LEFT-POINTING ANGLE BRACKET cp == 0x232a || // RIGHT-POINTING ANGLE BRACKET // CJK ... Yi except IDEOGRAPHIC HALF FILL SPACE: (cp >= 0x2e80 && cp <= 0xa4cf && cp != 0x303f) || (cp >= 0xac00 && cp <= 0xd7a3) || // Hangul Syllables (cp >= 0xf900 && cp <= 0xfaff) || // CJK Compatibility Ideographs (cp >= 0xfe10 && cp <= 0xfe19) || // Vertical Forms (cp >= 0xfe30 && cp <= 0xfe6f) || // CJK Compatibility Forms (cp >= 0xff00 && cp <= 0xff60) || // Fullwidth Forms (cp >= 0xffe0 && cp <= 0xffe6) || // Fullwidth Forms (cp >= 0x20000 && cp <= 0x2fffd) || // CJK (cp >= 0x30000 && cp <= 0x3fffd) || // Miscellaneous Symbols and Pictographs + Emoticons: (cp >= 0x1f300 && cp <= 0x1f64f) || // Supplemental Symbols and Pictographs: (cp >= 0x1f900 && cp <= 0x1f9ff)))); return true; } }; for_each_codepoint(s, count_code_points{&num_code_points}); return num_code_points; } inline auto compute_width(basic_string_view s) -> size_t { return compute_width( string_view(reinterpret_cast(s.data()), s.size())); } template inline auto code_point_index(basic_string_view s, size_t n) -> size_t { size_t size = s.size(); return n < size ? n : size; } // Calculates the index of the nth code point in a UTF-8 string. inline auto code_point_index(string_view s, size_t n) -> size_t { const char* data = s.data(); size_t num_code_points = 0; for (size_t i = 0, size = s.size(); i != size; ++i) { if ((data[i] & 0xc0) != 0x80 && ++num_code_points > n) return i; } return s.size(); } inline auto code_point_index(basic_string_view s, size_t n) -> size_t { return code_point_index( string_view(reinterpret_cast(s.data()), s.size()), n); } #ifndef FMT_USE_FLOAT128 # ifdef __SIZEOF_FLOAT128__ # define FMT_USE_FLOAT128 1 # else # define FMT_USE_FLOAT128 0 # endif #endif #if FMT_USE_FLOAT128 using float128 = __float128; #else using float128 = void; #endif template using is_float128 = std::is_same; template using is_floating_point = bool_constant::value || is_float128::value>; template ::value> struct is_fast_float : bool_constant::is_iec559 && sizeof(T) <= sizeof(double)> {}; template struct is_fast_float : std::false_type {}; template using is_double_double = bool_constant::digits == 106>; #ifndef FMT_USE_FULL_CACHE_DRAGONBOX # define FMT_USE_FULL_CACHE_DRAGONBOX 0 #endif template template void buffer::append(const U* begin, const U* end) { while (begin != end) { auto count = to_unsigned(end - begin); try_reserve(size_ + count); auto free_cap = capacity_ - size_; if (free_cap < count) count = free_cap; std::uninitialized_copy_n(begin, count, make_checked(ptr_ + size_, count)); size_ += count; begin += count; } } template struct is_locale : std::false_type {}; template struct is_locale> : std::true_type {}; } // namespace detail FMT_MODULE_EXPORT_BEGIN // The number of characters to store in the basic_memory_buffer object itself // to avoid dynamic memory allocation. enum { inline_buffer_size = 500 }; /** \rst A dynamically growing memory buffer for trivially copyable/constructible types with the first ``SIZE`` elements stored in the object itself. You can use the ``memory_buffer`` type alias for ``char`` instead. **Example**:: auto out = fmt::memory_buffer(); format_to(std::back_inserter(out), "The answer is {}.", 42); This will append the following output to the ``out`` object: .. code-block:: none The answer is 42. The output can be converted to an ``std::string`` with ``to_string(out)``. \endrst */ template > class basic_memory_buffer final : public detail::buffer { private: T store_[SIZE]; // Don't inherit from Allocator avoid generating type_info for it. Allocator alloc_; // Deallocate memory allocated by the buffer. FMT_CONSTEXPR20 void deallocate() { T* data = this->data(); if (data != store_) alloc_.deallocate(data, this->capacity()); } protected: FMT_CONSTEXPR20 void grow(size_t size) override; public: using value_type = T; using const_reference = const T&; FMT_CONSTEXPR20 explicit basic_memory_buffer( const Allocator& alloc = Allocator()) : alloc_(alloc) { this->set(store_, SIZE); if (detail::is_constant_evaluated()) detail::fill_n(store_, SIZE, T()); } FMT_CONSTEXPR20 ~basic_memory_buffer() { deallocate(); } private: // Move data from other to this buffer. FMT_CONSTEXPR20 void move(basic_memory_buffer& other) { alloc_ = std::move(other.alloc_); T* data = other.data(); size_t size = other.size(), capacity = other.capacity(); if (data == other.store_) { this->set(store_, capacity); detail::copy_str(other.store_, other.store_ + size, detail::make_checked(store_, capacity)); } else { this->set(data, capacity); // Set pointer to the inline array so that delete is not called // when deallocating. other.set(other.store_, 0); other.clear(); } this->resize(size); } public: /** \rst Constructs a :class:`fmt::basic_memory_buffer` object moving the content of the other object to it. \endrst */ FMT_CONSTEXPR20 basic_memory_buffer(basic_memory_buffer&& other) noexcept { move(other); } /** \rst Moves the content of the other ``basic_memory_buffer`` object to this one. \endrst */ auto operator=(basic_memory_buffer&& other) noexcept -> basic_memory_buffer& { FMT_ASSERT(this != &other, ""); deallocate(); move(other); return *this; } // Returns a copy of the allocator associated with this buffer. auto get_allocator() const -> Allocator { return alloc_; } /** Resizes the buffer to contain *count* elements. If T is a POD type new elements may not be initialized. */ FMT_CONSTEXPR20 void resize(size_t count) { this->try_resize(count); } /** Increases the buffer capacity to *new_capacity*. */ void reserve(size_t new_capacity) { this->try_reserve(new_capacity); } // Directly append data into the buffer using detail::buffer::append; template void append(const ContiguousRange& range) { append(range.data(), range.data() + range.size()); } }; template FMT_CONSTEXPR20 void basic_memory_buffer::grow( size_t size) { detail::abort_fuzzing_if(size > 5000); const size_t max_size = std::allocator_traits::max_size(alloc_); size_t old_capacity = this->capacity(); size_t new_capacity = old_capacity + old_capacity / 2; if (size > new_capacity) new_capacity = size; else if (new_capacity > max_size) new_capacity = size > max_size ? size : max_size; T* old_data = this->data(); T* new_data = std::allocator_traits::allocate(alloc_, new_capacity); // The following code doesn't throw, so the raw pointer above doesn't leak. std::uninitialized_copy(old_data, old_data + this->size(), detail::make_checked(new_data, new_capacity)); this->set(new_data, new_capacity); // deallocate must not throw according to the standard, but even if it does, // the buffer already uses the new storage and will deallocate it in // destructor. if (old_data != store_) alloc_.deallocate(old_data, old_capacity); } using memory_buffer = basic_memory_buffer; template struct is_contiguous> : std::true_type { }; namespace detail { #ifdef _WIN32 FMT_API bool write_console(std::FILE* f, string_view text); #endif FMT_API void print(std::FILE*, string_view); } // namespace detail /** A formatting error such as invalid format string. */ FMT_CLASS_API class FMT_API format_error : public std::runtime_error { public: explicit format_error(const char* message) : std::runtime_error(message) {} explicit format_error(const std::string& message) : std::runtime_error(message) {} format_error(const format_error&) = default; format_error& operator=(const format_error&) = default; format_error(format_error&&) = default; format_error& operator=(format_error&&) = default; ~format_error() noexcept override FMT_MSC_DEFAULT; }; namespace detail_exported { #if FMT_USE_NONTYPE_TEMPLATE_ARGS template struct fixed_string { constexpr fixed_string(const Char (&str)[N]) { detail::copy_str(static_cast(str), str + N, data); } Char data[N] = {}; }; #endif // Converts a compile-time string to basic_string_view. template constexpr auto compile_string_to_view(const Char (&s)[N]) -> basic_string_view { // Remove trailing NUL character if needed. Won't be present if this is used // with a raw character array (i.e. not defined as a string). return {s, N - (std::char_traits::to_int_type(s[N - 1]) == 0 ? 1 : 0)}; } template constexpr auto compile_string_to_view(detail::std_string_view s) -> basic_string_view { return {s.data(), s.size()}; } } // namespace detail_exported FMT_BEGIN_DETAIL_NAMESPACE template struct is_integral : std::is_integral {}; template <> struct is_integral : std::true_type {}; template <> struct is_integral : std::true_type {}; template using is_signed = std::integral_constant::is_signed || std::is_same::value>; // Returns true if value is negative, false otherwise. // Same as `value < 0` but doesn't produce warnings if T is an unsigned type. template ::value)> constexpr auto is_negative(T value) -> bool { return value < 0; } template ::value)> constexpr auto is_negative(T) -> bool { return false; } template FMT_CONSTEXPR auto is_supported_floating_point(T) -> bool { if (std::is_same()) return FMT_USE_FLOAT; if (std::is_same()) return FMT_USE_DOUBLE; if (std::is_same()) return FMT_USE_LONG_DOUBLE; return true; } // Smallest of uint32_t, uint64_t, uint128_t that is large enough to // represent all values of an integral type T. template using uint32_or_64_or_128_t = conditional_t() <= 32 && !FMT_REDUCE_INT_INSTANTIATIONS, uint32_t, conditional_t() <= 64, uint64_t, uint128_t>>; template using uint64_or_128_t = conditional_t() <= 64, uint64_t, uint128_t>; #define FMT_POWERS_OF_10(factor) \ factor * 10, (factor)*100, (factor)*1000, (factor)*10000, (factor)*100000, \ (factor)*1000000, (factor)*10000000, (factor)*100000000, \ (factor)*1000000000 // Converts value in the range [0, 100) to a string. constexpr const char* digits2(size_t value) { // GCC generates slightly better code when value is pointer-size. return &"0001020304050607080910111213141516171819" "2021222324252627282930313233343536373839" "4041424344454647484950515253545556575859" "6061626364656667686970717273747576777879" "8081828384858687888990919293949596979899"[value * 2]; } // Sign is a template parameter to workaround a bug in gcc 4.8. template constexpr Char sign(Sign s) { #if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 604 static_assert(std::is_same::value, ""); #endif return static_cast("\0-+ "[s]); } template FMT_CONSTEXPR auto count_digits_fallback(T n) -> int { int count = 1; for (;;) { // Integer division is slow so do it for a group of four digits instead // of for every digit. The idea comes from the talk by Alexandrescu // "Three Optimization Tips for C++". See speed-test for a comparison. if (n < 10) return count; if (n < 100) return count + 1; if (n < 1000) return count + 2; if (n < 10000) return count + 3; n /= 10000u; count += 4; } } #if FMT_USE_INT128 FMT_CONSTEXPR inline auto count_digits(uint128_opt n) -> int { return count_digits_fallback(n); } #endif #ifdef FMT_BUILTIN_CLZLL // It is a separate function rather than a part of count_digits to workaround // the lack of static constexpr in constexpr functions. inline auto do_count_digits(uint64_t n) -> int { // This has comparable performance to the version by Kendall Willets // (https://github.com/fmtlib/format-benchmark/blob/master/digits10) // but uses smaller tables. // Maps bsr(n) to ceil(log10(pow(2, bsr(n) + 1) - 1)). static constexpr uint8_t bsr2log10[] = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20}; auto t = bsr2log10[FMT_BUILTIN_CLZLL(n | 1) ^ 63]; static constexpr const uint64_t zero_or_powers_of_10[] = { 0, 0, FMT_POWERS_OF_10(1U), FMT_POWERS_OF_10(1000000000ULL), 10000000000000000000ULL}; return t - (n < zero_or_powers_of_10[t]); } #endif // Returns the number of decimal digits in n. Leading zeros are not counted // except for n == 0 in which case count_digits returns 1. FMT_CONSTEXPR20 inline auto count_digits(uint64_t n) -> int { #ifdef FMT_BUILTIN_CLZLL if (!is_constant_evaluated()) { return do_count_digits(n); } #endif return count_digits_fallback(n); } // Counts the number of digits in n. BITS = log2(radix). template FMT_CONSTEXPR auto count_digits(UInt n) -> int { #ifdef FMT_BUILTIN_CLZ if (!is_constant_evaluated() && num_bits() == 32) return (FMT_BUILTIN_CLZ(static_cast(n) | 1) ^ 31) / BITS + 1; #endif // Lambda avoids unreachable code warnings from NVHPC. return [](UInt m) { int num_digits = 0; do { ++num_digits; } while ((m >>= BITS) != 0); return num_digits; }(n); } #ifdef FMT_BUILTIN_CLZ // It is a separate function rather than a part of count_digits to workaround // the lack of static constexpr in constexpr functions. FMT_INLINE auto do_count_digits(uint32_t n) -> int { // An optimization by Kendall Willets from https://bit.ly/3uOIQrB. // This increments the upper 32 bits (log10(T) - 1) when >= T is added. # define FMT_INC(T) (((sizeof(# T) - 1ull) << 32) - T) static constexpr uint64_t table[] = { FMT_INC(0), FMT_INC(0), FMT_INC(0), // 8 FMT_INC(10), FMT_INC(10), FMT_INC(10), // 64 FMT_INC(100), FMT_INC(100), FMT_INC(100), // 512 FMT_INC(1000), FMT_INC(1000), FMT_INC(1000), // 4096 FMT_INC(10000), FMT_INC(10000), FMT_INC(10000), // 32k FMT_INC(100000), FMT_INC(100000), FMT_INC(100000), // 256k FMT_INC(1000000), FMT_INC(1000000), FMT_INC(1000000), // 2048k FMT_INC(10000000), FMT_INC(10000000), FMT_INC(10000000), // 16M FMT_INC(100000000), FMT_INC(100000000), FMT_INC(100000000), // 128M FMT_INC(1000000000), FMT_INC(1000000000), FMT_INC(1000000000), // 1024M FMT_INC(1000000000), FMT_INC(1000000000) // 4B }; auto inc = table[FMT_BUILTIN_CLZ(n | 1) ^ 31]; return static_cast((n + inc) >> 32); } #endif // Optional version of count_digits for better performance on 32-bit platforms. FMT_CONSTEXPR20 inline auto count_digits(uint32_t n) -> int { #ifdef FMT_BUILTIN_CLZ if (!is_constant_evaluated()) { return do_count_digits(n); } #endif return count_digits_fallback(n); } template constexpr auto digits10() noexcept -> int { return std::numeric_limits::digits10; } template <> constexpr auto digits10() noexcept -> int { return 38; } template <> constexpr auto digits10() noexcept -> int { return 38; } template struct thousands_sep_result { std::string grouping; Char thousands_sep; }; template FMT_API auto thousands_sep_impl(locale_ref loc) -> thousands_sep_result; template inline auto thousands_sep(locale_ref loc) -> thousands_sep_result { auto result = thousands_sep_impl(loc); return {result.grouping, Char(result.thousands_sep)}; } template <> inline auto thousands_sep(locale_ref loc) -> thousands_sep_result { return thousands_sep_impl(loc); } template FMT_API auto decimal_point_impl(locale_ref loc) -> Char; template inline auto decimal_point(locale_ref loc) -> Char { return Char(decimal_point_impl(loc)); } template <> inline auto decimal_point(locale_ref loc) -> wchar_t { return decimal_point_impl(loc); } // Compares two characters for equality. template auto equal2(const Char* lhs, const char* rhs) -> bool { return lhs[0] == Char(rhs[0]) && lhs[1] == Char(rhs[1]); } inline auto equal2(const char* lhs, const char* rhs) -> bool { return memcmp(lhs, rhs, 2) == 0; } // Copies two characters from src to dst. template FMT_CONSTEXPR20 FMT_INLINE void copy2(Char* dst, const char* src) { if (!is_constant_evaluated() && sizeof(Char) == sizeof(char)) { memcpy(dst, src, 2); return; } *dst++ = static_cast(*src++); *dst = static_cast(*src); } template struct format_decimal_result { Iterator begin; Iterator end; }; // Formats a decimal unsigned integer value writing into out pointing to a // buffer of specified size. The caller must ensure that the buffer is large // enough. template FMT_CONSTEXPR20 auto format_decimal(Char* out, UInt value, int size) -> format_decimal_result { FMT_ASSERT(size >= count_digits(value), "invalid digit count"); out += size; Char* end = out; while (value >= 100) { // Integer division is slow so do it for a group of two digits instead // of for every digit. The idea comes from the talk by Alexandrescu // "Three Optimization Tips for C++". See speed-test for a comparison. out -= 2; copy2(out, digits2(static_cast(value % 100))); value /= 100; } if (value < 10) { *--out = static_cast('0' + value); return {out, end}; } out -= 2; copy2(out, digits2(static_cast(value))); return {out, end}; } template >::value)> FMT_CONSTEXPR inline auto format_decimal(Iterator out, UInt value, int size) -> format_decimal_result { // Buffer is large enough to hold all digits (digits10 + 1). Char buffer[digits10() + 1]; auto end = format_decimal(buffer, value, size).end; return {out, detail::copy_str_noinline(buffer, end, out)}; } template FMT_CONSTEXPR auto format_uint(Char* buffer, UInt value, int num_digits, bool upper = false) -> Char* { buffer += num_digits; Char* end = buffer; do { const char* digits = upper ? "0123456789ABCDEF" : "0123456789abcdef"; unsigned digit = static_cast(value & ((1 << BASE_BITS) - 1)); *--buffer = static_cast(BASE_BITS < 4 ? static_cast('0' + digit) : digits[digit]); } while ((value >>= BASE_BITS) != 0); return end; } template inline auto format_uint(It out, UInt value, int num_digits, bool upper = false) -> It { if (auto ptr = to_pointer(out, to_unsigned(num_digits))) { format_uint(ptr, value, num_digits, upper); return out; } // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1). char buffer[num_bits() / BASE_BITS + 1]; format_uint(buffer, value, num_digits, upper); return detail::copy_str_noinline(buffer, buffer + num_digits, out); } // A converter from UTF-8 to UTF-16. class utf8_to_utf16 { private: basic_memory_buffer buffer_; public: FMT_API explicit utf8_to_utf16(string_view s); operator basic_string_view() const { return {&buffer_[0], size()}; } auto size() const -> size_t { return buffer_.size() - 1; } auto c_str() const -> const wchar_t* { return &buffer_[0]; } auto str() const -> std::wstring { return {&buffer_[0], size()}; } }; namespace dragonbox { // Type-specific information that Dragonbox uses. template struct float_info; template <> struct float_info { using carrier_uint = uint32_t; static const int exponent_bits = 8; static const int kappa = 1; static const int big_divisor = 100; static const int small_divisor = 10; static const int min_k = -31; static const int max_k = 46; static const int shorter_interval_tie_lower_threshold = -35; static const int shorter_interval_tie_upper_threshold = -35; }; template <> struct float_info { using carrier_uint = uint64_t; static const int exponent_bits = 11; static const int kappa = 2; static const int big_divisor = 1000; static const int small_divisor = 100; static const int min_k = -292; static const int max_k = 326; static const int shorter_interval_tie_lower_threshold = -77; static const int shorter_interval_tie_upper_threshold = -77; }; // An 80- or 128-bit floating point number. template struct float_info::digits == 64 || std::numeric_limits::digits == 113 || is_float128::value>> { using carrier_uint = detail::uint128_t; static const int exponent_bits = 15; }; // A double-double floating point number. template struct float_info::value>> { using carrier_uint = detail::uint128_t; }; template struct decimal_fp { using significand_type = typename float_info::carrier_uint; significand_type significand; int exponent; }; template FMT_API auto to_decimal(T x) noexcept -> decimal_fp; } // namespace dragonbox // Returns true iff Float has the implicit bit which is not stored. template constexpr bool has_implicit_bit() { // An 80-bit FP number has a 64-bit significand an no implicit bit. return std::numeric_limits::digits != 64; } // Returns the number of significand bits stored in Float. The implicit bit is // not counted since it is not stored. template constexpr int num_significand_bits() { // std::numeric_limits may not support __float128. return is_float128() ? 112 : (std::numeric_limits::digits - (has_implicit_bit() ? 1 : 0)); } template constexpr auto exponent_mask() -> typename dragonbox::float_info::carrier_uint { using uint = typename dragonbox::float_info::carrier_uint; return ((uint(1) << dragonbox::float_info::exponent_bits) - 1) << num_significand_bits(); } template constexpr auto exponent_bias() -> int { // std::numeric_limits may not support __float128. return is_float128() ? 16383 : std::numeric_limits::max_exponent - 1; } // Writes the exponent exp in the form "[+-]d{2,3}" to buffer. template FMT_CONSTEXPR auto write_exponent(int exp, It it) -> It { FMT_ASSERT(-10000 < exp && exp < 10000, "exponent out of range"); if (exp < 0) { *it++ = static_cast('-'); exp = -exp; } else { *it++ = static_cast('+'); } if (exp >= 100) { const char* top = digits2(to_unsigned(exp / 100)); if (exp >= 1000) *it++ = static_cast(top[0]); *it++ = static_cast(top[1]); exp %= 100; } const char* d = digits2(to_unsigned(exp)); *it++ = static_cast(d[0]); *it++ = static_cast(d[1]); return it; } // A floating-point number f * pow(2, e) where F is an unsigned type. template struct basic_fp { F f; int e; static constexpr const int num_significand_bits = static_cast(sizeof(F) * num_bits()); constexpr basic_fp() : f(0), e(0) {} constexpr basic_fp(uint64_t f_val, int e_val) : f(f_val), e(e_val) {} // Constructs fp from an IEEE754 floating-point number. template FMT_CONSTEXPR basic_fp(Float n) { assign(n); } // Assigns n to this and return true iff predecessor is closer than successor. template ::value)> FMT_CONSTEXPR auto assign(Float n) -> bool { static_assert(std::numeric_limits::digits <= 113, "unsupported FP"); // Assume Float is in the format [sign][exponent][significand]. using carrier_uint = typename dragonbox::float_info::carrier_uint; const auto num_float_significand_bits = detail::num_significand_bits(); const auto implicit_bit = carrier_uint(1) << num_float_significand_bits; const auto significand_mask = implicit_bit - 1; auto u = bit_cast(n); f = static_cast(u & significand_mask); auto biased_e = static_cast((u & exponent_mask()) >> num_float_significand_bits); // The predecessor is closer if n is a normalized power of 2 (f == 0) // other than the smallest normalized number (biased_e > 1). auto is_predecessor_closer = f == 0 && biased_e > 1; if (biased_e == 0) biased_e = 1; // Subnormals use biased exponent 1 (min exponent). else if (has_implicit_bit()) f += static_cast(implicit_bit); e = biased_e - exponent_bias() - num_float_significand_bits; if (!has_implicit_bit()) ++e; return is_predecessor_closer; } template ::value)> FMT_CONSTEXPR auto assign(Float n) -> bool { static_assert(std::numeric_limits::is_iec559, "unsupported FP"); return assign(static_cast(n)); } }; using fp = basic_fp; // Normalizes the value converted from double and multiplied by (1 << SHIFT). template FMT_CONSTEXPR basic_fp normalize(basic_fp value) { // Handle subnormals. const auto implicit_bit = F(1) << num_significand_bits(); const auto shifted_implicit_bit = implicit_bit << SHIFT; while ((value.f & shifted_implicit_bit) == 0) { value.f <<= 1; --value.e; } // Subtract 1 to account for hidden bit. const auto offset = basic_fp::num_significand_bits - num_significand_bits() - SHIFT - 1; value.f <<= offset; value.e -= offset; return value; } // Computes lhs * rhs / pow(2, 64) rounded to nearest with half-up tie breaking. FMT_CONSTEXPR inline uint64_t multiply(uint64_t lhs, uint64_t rhs) { #if FMT_USE_INT128 auto product = static_cast<__uint128_t>(lhs) * rhs; auto f = static_cast(product >> 64); return (static_cast(product) & (1ULL << 63)) != 0 ? f + 1 : f; #else // Multiply 32-bit parts of significands. uint64_t mask = (1ULL << 32) - 1; uint64_t a = lhs >> 32, b = lhs & mask; uint64_t c = rhs >> 32, d = rhs & mask; uint64_t ac = a * c, bc = b * c, ad = a * d, bd = b * d; // Compute mid 64-bit of result and round. uint64_t mid = (bd >> 32) + (ad & mask) + (bc & mask) + (1U << 31); return ac + (ad >> 32) + (bc >> 32) + (mid >> 32); #endif } FMT_CONSTEXPR inline fp operator*(fp x, fp y) { return {multiply(x.f, y.f), x.e + y.e + 64}; } template struct basic_data { // Normalized 64-bit significands of pow(10, k), for k = -348, -340, ..., 340. // These are generated by support/compute-powers.py. static constexpr uint64_t pow10_significands[87] = { 0xfa8fd5a0081c0288, 0xbaaee17fa23ebf76, 0x8b16fb203055ac76, 0xcf42894a5dce35ea, 0x9a6bb0aa55653b2d, 0xe61acf033d1a45df, 0xab70fe17c79ac6ca, 0xff77b1fcbebcdc4f, 0xbe5691ef416bd60c, 0x8dd01fad907ffc3c, 0xd3515c2831559a83, 0x9d71ac8fada6c9b5, 0xea9c227723ee8bcb, 0xaecc49914078536d, 0x823c12795db6ce57, 0xc21094364dfb5637, 0x9096ea6f3848984f, 0xd77485cb25823ac7, 0xa086cfcd97bf97f4, 0xef340a98172aace5, 0xb23867fb2a35b28e, 0x84c8d4dfd2c63f3b, 0xc5dd44271ad3cdba, 0x936b9fcebb25c996, 0xdbac6c247d62a584, 0xa3ab66580d5fdaf6, 0xf3e2f893dec3f126, 0xb5b5ada8aaff80b8, 0x87625f056c7c4a8b, 0xc9bcff6034c13053, 0x964e858c91ba2655, 0xdff9772470297ebd, 0xa6dfbd9fb8e5b88f, 0xf8a95fcf88747d94, 0xb94470938fa89bcf, 0x8a08f0f8bf0f156b, 0xcdb02555653131b6, 0x993fe2c6d07b7fac, 0xe45c10c42a2b3b06, 0xaa242499697392d3, 0xfd87b5f28300ca0e, 0xbce5086492111aeb, 0x8cbccc096f5088cc, 0xd1b71758e219652c, 0x9c40000000000000, 0xe8d4a51000000000, 0xad78ebc5ac620000, 0x813f3978f8940984, 0xc097ce7bc90715b3, 0x8f7e32ce7bea5c70, 0xd5d238a4abe98068, 0x9f4f2726179a2245, 0xed63a231d4c4fb27, 0xb0de65388cc8ada8, 0x83c7088e1aab65db, 0xc45d1df942711d9a, 0x924d692ca61be758, 0xda01ee641a708dea, 0xa26da3999aef774a, 0xf209787bb47d6b85, 0xb454e4a179dd1877, 0x865b86925b9bc5c2, 0xc83553c5c8965d3d, 0x952ab45cfa97a0b3, 0xde469fbd99a05fe3, 0xa59bc234db398c25, 0xf6c69a72a3989f5c, 0xb7dcbf5354e9bece, 0x88fcf317f22241e2, 0xcc20ce9bd35c78a5, 0x98165af37b2153df, 0xe2a0b5dc971f303a, 0xa8d9d1535ce3b396, 0xfb9b7cd9a4a7443c, 0xbb764c4ca7a44410, 0x8bab8eefb6409c1a, 0xd01fef10a657842c, 0x9b10a4e5e9913129, 0xe7109bfba19c0c9d, 0xac2820d9623bf429, 0x80444b5e7aa7cf85, 0xbf21e44003acdd2d, 0x8e679c2f5e44ff8f, 0xd433179d9c8cb841, 0x9e19db92b4e31ba9, 0xeb96bf6ebadf77d9, 0xaf87023b9bf0ee6b, }; #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wnarrowing" #endif // Binary exponents of pow(10, k), for k = -348, -340, ..., 340, corresponding // to significands above. static constexpr int16_t pow10_exponents[87] = { -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, 907, 933, 960, 986, 1013, 1039, 1066}; #if FMT_GCC_VERSION && FMT_GCC_VERSION < 409 # pragma GCC diagnostic pop #endif static constexpr uint64_t power_of_10_64[20] = { 1, FMT_POWERS_OF_10(1ULL), FMT_POWERS_OF_10(1000000000ULL), 10000000000000000000ULL}; }; #if FMT_CPLUSPLUS < 201703L template constexpr uint64_t basic_data::pow10_significands[]; template constexpr int16_t basic_data::pow10_exponents[]; template constexpr uint64_t basic_data::power_of_10_64[]; #endif // This is a struct rather than an alias to avoid shadowing warnings in gcc. struct data : basic_data<> {}; // Returns a cached power of 10 `c_k = c_k.f * pow(2, c_k.e)` such that its // (binary) exponent satisfies `min_exponent <= c_k.e <= min_exponent + 28`. FMT_CONSTEXPR inline fp get_cached_power(int min_exponent, int& pow10_exponent) { const int shift = 32; // log10(2) = 0x0.4d104d427de7fbcc... const int64_t significand = 0x4d104d427de7fbcc; int index = static_cast( ((min_exponent + fp::num_significand_bits - 1) * (significand >> shift) + ((int64_t(1) << shift) - 1)) // ceil >> 32 // arithmetic shift ); // Decimal exponent of the first (smallest) cached power of 10. const int first_dec_exp = -348; // Difference between 2 consecutive decimal exponents in cached powers of 10. const int dec_exp_step = 8; index = (index - first_dec_exp - 1) / dec_exp_step + 1; pow10_exponent = first_dec_exp + index * dec_exp_step; // Using *(x + index) instead of x[index] avoids an issue with some compilers // using the EDG frontend (e.g. nvhpc/22.3 in C++17 mode). return {*(data::pow10_significands + index), *(data::pow10_exponents + index)}; } #ifndef _MSC_VER # define FMT_SNPRINTF snprintf #else FMT_API auto fmt_snprintf(char* buf, size_t size, const char* fmt, ...) -> int; # define FMT_SNPRINTF fmt_snprintf #endif // _MSC_VER // Formats a floating-point number with snprintf using the hexfloat format. template auto snprintf_float(T value, int precision, float_specs specs, buffer& buf) -> int { // Buffer capacity must be non-zero, otherwise MSVC's vsnprintf_s will fail. FMT_ASSERT(buf.capacity() > buf.size(), "empty buffer"); FMT_ASSERT(specs.format == float_format::hex, ""); static_assert(!std::is_same::value, ""); // Build the format string. char format[7]; // The longest format is "%#.*Le". char* format_ptr = format; *format_ptr++ = '%'; if (specs.showpoint) *format_ptr++ = '#'; if (precision >= 0) { *format_ptr++ = '.'; *format_ptr++ = '*'; } if (std::is_same()) *format_ptr++ = 'L'; *format_ptr++ = specs.upper ? 'A' : 'a'; *format_ptr = '\0'; // Format using snprintf. auto offset = buf.size(); for (;;) { auto begin = buf.data() + offset; auto capacity = buf.capacity() - offset; abort_fuzzing_if(precision > 100000); // Suppress the warning about a nonliteral format string. // Cannot use auto because of a bug in MinGW (#1532). int (*snprintf_ptr)(char*, size_t, const char*, ...) = FMT_SNPRINTF; int result = precision >= 0 ? snprintf_ptr(begin, capacity, format, precision, value) : snprintf_ptr(begin, capacity, format, value); if (result < 0) { // The buffer will grow exponentially. buf.try_reserve(buf.capacity() + 1); continue; } auto size = to_unsigned(result); // Size equal to capacity means that the last character was truncated. if (size < capacity) { buf.try_resize(size + offset); return 0; } buf.try_reserve(size + offset + 1); // Add 1 for the terminating '\0'. } } template using convert_float_result = conditional_t::value || sizeof(T) == sizeof(double), double, T>; template constexpr auto convert_float(T value) -> convert_float_result { return static_cast>(value); } template FMT_NOINLINE FMT_CONSTEXPR auto fill(OutputIt it, size_t n, const fill_t& fill) -> OutputIt { auto fill_size = fill.size(); if (fill_size == 1) return detail::fill_n(it, n, fill[0]); auto data = fill.data(); for (size_t i = 0; i < n; ++i) it = copy_str(data, data + fill_size, it); return it; } // Writes the output of f, padded according to format specifications in specs. // size: output size in code units. // width: output display width in (terminal) column positions. template FMT_CONSTEXPR auto write_padded(OutputIt out, const basic_format_specs& specs, size_t size, size_t width, F&& f) -> OutputIt { static_assert(align == align::left || align == align::right, ""); unsigned spec_width = to_unsigned(specs.width); size_t padding = spec_width > width ? spec_width - width : 0; // Shifts are encoded as string literals because static constexpr is not // supported in constexpr functions. auto* shifts = align == align::left ? "\x1f\x1f\x00\x01" : "\x00\x1f\x00\x01"; size_t left_padding = padding >> shifts[specs.align]; size_t right_padding = padding - left_padding; auto it = reserve(out, size + padding * specs.fill.size()); if (left_padding != 0) it = fill(it, left_padding, specs.fill); it = f(it); if (right_padding != 0) it = fill(it, right_padding, specs.fill); return base_iterator(out, it); } template constexpr auto write_padded(OutputIt out, const basic_format_specs& specs, size_t size, F&& f) -> OutputIt { return write_padded(out, specs, size, size, f); } template FMT_CONSTEXPR auto write_bytes(OutputIt out, string_view bytes, const basic_format_specs& specs) -> OutputIt { return write_padded( out, specs, bytes.size(), [bytes](reserve_iterator it) { const char* data = bytes.data(); return copy_str(data, data + bytes.size(), it); }); } template auto write_ptr(OutputIt out, UIntPtr value, const basic_format_specs* specs) -> OutputIt { int num_digits = count_digits<4>(value); auto size = to_unsigned(num_digits) + size_t(2); auto write = [=](reserve_iterator it) { *it++ = static_cast('0'); *it++ = static_cast('x'); return format_uint<4, Char>(it, value, num_digits); }; return specs ? write_padded(out, *specs, size, write) : base_iterator(out, write(reserve(out, size))); } // Returns true iff the code point cp is printable. FMT_API auto is_printable(uint32_t cp) -> bool; inline auto needs_escape(uint32_t cp) -> bool { return cp < 0x20 || cp == 0x7f || cp == '"' || cp == '\\' || !is_printable(cp); } template struct find_escape_result { const Char* begin; const Char* end; uint32_t cp; }; template using make_unsigned_char = typename conditional_t::value, std::make_unsigned, type_identity>::type; template auto find_escape(const Char* begin, const Char* end) -> find_escape_result { for (; begin != end; ++begin) { uint32_t cp = static_cast>(*begin); if (const_check(sizeof(Char) == 1) && cp >= 0x80) continue; if (needs_escape(cp)) return {begin, begin + 1, cp}; } return {begin, nullptr, 0}; } inline auto find_escape(const char* begin, const char* end) -> find_escape_result { if (!is_utf8()) return find_escape(begin, end); auto result = find_escape_result{end, nullptr, 0}; for_each_codepoint(string_view(begin, to_unsigned(end - begin)), [&](uint32_t cp, string_view sv) { if (needs_escape(cp)) { result = {sv.begin(), sv.end(), cp}; return false; } return true; }); return result; } #define FMT_STRING_IMPL(s, base, explicit) \ [] { \ /* Use the hidden visibility as a workaround for a GCC bug (#1973). */ \ /* Use a macro-like name to avoid shadowing warnings. */ \ struct FMT_GCC_VISIBILITY_HIDDEN FMT_COMPILE_STRING : base { \ using char_type FMT_MAYBE_UNUSED = fmt::remove_cvref_t; \ FMT_MAYBE_UNUSED FMT_CONSTEXPR explicit \ operator fmt::basic_string_view() const { \ return fmt::detail_exported::compile_string_to_view(s); \ } \ }; \ return FMT_COMPILE_STRING(); \ }() /** \rst Constructs a compile-time format string from a string literal *s*. **Example**:: // A compile-time error because 'd' is an invalid specifier for strings. std::string s = fmt::format(FMT_STRING("{:d}"), "foo"); \endrst */ #define FMT_STRING(s) FMT_STRING_IMPL(s, fmt::detail::compile_string, ) template auto write_codepoint(OutputIt out, char prefix, uint32_t cp) -> OutputIt { *out++ = static_cast('\\'); *out++ = static_cast(prefix); Char buf[width]; fill_n(buf, width, static_cast('0')); format_uint<4>(buf, cp, width); return copy_str(buf, buf + width, out); } template auto write_escaped_cp(OutputIt out, const find_escape_result& escape) -> OutputIt { auto c = static_cast(escape.cp); switch (escape.cp) { case '\n': *out++ = static_cast('\\'); c = static_cast('n'); break; case '\r': *out++ = static_cast('\\'); c = static_cast('r'); break; case '\t': *out++ = static_cast('\\'); c = static_cast('t'); break; case '"': FMT_FALLTHROUGH; case '\'': FMT_FALLTHROUGH; case '\\': *out++ = static_cast('\\'); break; default: if (is_utf8()) { if (escape.cp < 0x100) { return write_codepoint<2, Char>(out, 'x', escape.cp); } if (escape.cp < 0x10000) { return write_codepoint<4, Char>(out, 'u', escape.cp); } if (escape.cp < 0x110000) { return write_codepoint<8, Char>(out, 'U', escape.cp); } } for (Char escape_char : basic_string_view( escape.begin, to_unsigned(escape.end - escape.begin))) { out = write_codepoint<2, Char>(out, 'x', static_cast(escape_char) & 0xFF); } return out; } *out++ = c; return out; } template auto write_escaped_string(OutputIt out, basic_string_view str) -> OutputIt { *out++ = static_cast('"'); auto begin = str.begin(), end = str.end(); do { auto escape = find_escape(begin, end); out = copy_str(begin, escape.begin, out); begin = escape.end; if (!begin) break; out = write_escaped_cp(out, escape); } while (begin != end); *out++ = static_cast('"'); return out; } template auto write_escaped_char(OutputIt out, Char v) -> OutputIt { *out++ = static_cast('\''); if ((needs_escape(static_cast(v)) && v != static_cast('"')) || v == static_cast('\'')) { out = write_escaped_cp( out, find_escape_result{&v, &v + 1, static_cast(v)}); } else { *out++ = v; } *out++ = static_cast('\''); return out; } template FMT_CONSTEXPR auto write_char(OutputIt out, Char value, const basic_format_specs& specs) -> OutputIt { bool is_debug = specs.type == presentation_type::debug; return write_padded(out, specs, 1, [=](reserve_iterator it) { if (is_debug) return write_escaped_char(it, value); *it++ = value; return it; }); } template FMT_CONSTEXPR auto write(OutputIt out, Char value, const basic_format_specs& specs, locale_ref loc = {}) -> OutputIt { return check_char_specs(specs) ? write_char(out, value, specs) : write(out, static_cast(value), specs, loc); } // Data for write_int that doesn't depend on output iterator type. It is used to // avoid template code bloat. template struct write_int_data { size_t size; size_t padding; FMT_CONSTEXPR write_int_data(int num_digits, unsigned prefix, const basic_format_specs& specs) : size((prefix >> 24) + to_unsigned(num_digits)), padding(0) { if (specs.align == align::numeric) { auto width = to_unsigned(specs.width); if (width > size) { padding = width - size; size = width; } } else if (specs.precision > num_digits) { size = (prefix >> 24) + to_unsigned(specs.precision); padding = to_unsigned(specs.precision - num_digits); } } }; // Writes an integer in the format // // where are written by write_digits(it). // prefix contains chars in three lower bytes and the size in the fourth byte. template FMT_CONSTEXPR FMT_INLINE auto write_int(OutputIt out, int num_digits, unsigned prefix, const basic_format_specs& specs, W write_digits) -> OutputIt { // Slightly faster check for specs.width == 0 && specs.precision == -1. if ((specs.width | (specs.precision + 1)) == 0) { auto it = reserve(out, to_unsigned(num_digits) + (prefix >> 24)); if (prefix != 0) { for (unsigned p = prefix & 0xffffff; p != 0; p >>= 8) *it++ = static_cast(p & 0xff); } return base_iterator(out, write_digits(it)); } auto data = write_int_data(num_digits, prefix, specs); return write_padded( out, specs, data.size, [=](reserve_iterator it) { for (unsigned p = prefix & 0xffffff; p != 0; p >>= 8) *it++ = static_cast(p & 0xff); it = detail::fill_n(it, data.padding, static_cast('0')); return write_digits(it); }); } template class digit_grouping { private: thousands_sep_result sep_; struct next_state { std::string::const_iterator group; int pos; }; next_state initial_state() const { return {sep_.grouping.begin(), 0}; } // Returns the next digit group separator position. int next(next_state& state) const { if (!sep_.thousands_sep) return max_value(); if (state.group == sep_.grouping.end()) return state.pos += sep_.grouping.back(); if (*state.group <= 0 || *state.group == max_value()) return max_value(); state.pos += *state.group++; return state.pos; } public: explicit digit_grouping(locale_ref loc, bool localized = true) { if (localized) sep_ = thousands_sep(loc); else sep_.thousands_sep = Char(); } explicit digit_grouping(thousands_sep_result sep) : sep_(sep) {} Char separator() const { return sep_.thousands_sep; } int count_separators(int num_digits) const { int count = 0; auto state = initial_state(); while (num_digits > next(state)) ++count; return count; } // Applies grouping to digits and write the output to out. template Out apply(Out out, basic_string_view digits) const { auto num_digits = static_cast(digits.size()); auto separators = basic_memory_buffer(); separators.push_back(0); auto state = initial_state(); while (int i = next(state)) { if (i >= num_digits) break; separators.push_back(i); } for (int i = 0, sep_index = static_cast(separators.size() - 1); i < num_digits; ++i) { if (num_digits - i == separators[sep_index]) { *out++ = separator(); --sep_index; } *out++ = static_cast(digits[to_unsigned(i)]); } return out; } }; template auto write_int_localized(OutputIt out, UInt value, unsigned prefix, const basic_format_specs& specs, const digit_grouping& grouping) -> OutputIt { static_assert(std::is_same, UInt>::value, ""); int num_digits = count_digits(value); char digits[40]; format_decimal(digits, value, num_digits); unsigned size = to_unsigned((prefix != 0 ? 1 : 0) + num_digits + grouping.count_separators(num_digits)); return write_padded( out, specs, size, size, [&](reserve_iterator it) { if (prefix != 0) { char sign = static_cast(prefix); *it++ = static_cast(sign); } return grouping.apply(it, string_view(digits, to_unsigned(num_digits))); }); } template auto write_int_localized(OutputIt& out, UInt value, unsigned prefix, const basic_format_specs& specs, locale_ref loc) -> bool { auto grouping = digit_grouping(loc); out = write_int_localized(out, value, prefix, specs, grouping); return true; } FMT_CONSTEXPR inline void prefix_append(unsigned& prefix, unsigned value) { prefix |= prefix != 0 ? value << 8 : value; prefix += (1u + (value > 0xff ? 1 : 0)) << 24; } template struct write_int_arg { UInt abs_value; unsigned prefix; }; template FMT_CONSTEXPR auto make_write_int_arg(T value, sign_t sign) -> write_int_arg> { auto prefix = 0u; auto abs_value = static_cast>(value); if (is_negative(value)) { prefix = 0x01000000 | '-'; abs_value = 0 - abs_value; } else { constexpr const unsigned prefixes[4] = {0, 0, 0x1000000u | '+', 0x1000000u | ' '}; prefix = prefixes[sign]; } return {abs_value, prefix}; } template FMT_CONSTEXPR FMT_INLINE auto write_int(OutputIt out, write_int_arg arg, const basic_format_specs& specs, locale_ref loc) -> OutputIt { static_assert(std::is_same>::value, ""); auto abs_value = arg.abs_value; auto prefix = arg.prefix; switch (specs.type) { case presentation_type::none: case presentation_type::dec: { if (specs.localized && write_int_localized(out, static_cast>(abs_value), prefix, specs, loc)) { return out; } auto num_digits = count_digits(abs_value); return write_int( out, num_digits, prefix, specs, [=](reserve_iterator it) { return format_decimal(it, abs_value, num_digits).end; }); } case presentation_type::hex_lower: case presentation_type::hex_upper: { bool upper = specs.type == presentation_type::hex_upper; if (specs.alt) prefix_append(prefix, unsigned(upper ? 'X' : 'x') << 8 | '0'); int num_digits = count_digits<4>(abs_value); return write_int( out, num_digits, prefix, specs, [=](reserve_iterator it) { return format_uint<4, Char>(it, abs_value, num_digits, upper); }); } case presentation_type::bin_lower: case presentation_type::bin_upper: { bool upper = specs.type == presentation_type::bin_upper; if (specs.alt) prefix_append(prefix, unsigned(upper ? 'B' : 'b') << 8 | '0'); int num_digits = count_digits<1>(abs_value); return write_int(out, num_digits, prefix, specs, [=](reserve_iterator it) { return format_uint<1, Char>(it, abs_value, num_digits); }); } case presentation_type::oct: { int num_digits = count_digits<3>(abs_value); // Octal prefix '0' is counted as a digit, so only add it if precision // is not greater than the number of digits. if (specs.alt && specs.precision <= num_digits && abs_value != 0) prefix_append(prefix, '0'); return write_int(out, num_digits, prefix, specs, [=](reserve_iterator it) { return format_uint<3, Char>(it, abs_value, num_digits); }); } case presentation_type::chr: return write_char(out, static_cast(abs_value), specs); default: throw_format_error("invalid type specifier"); } return out; } template FMT_CONSTEXPR FMT_NOINLINE auto write_int_noinline( OutputIt out, write_int_arg arg, const basic_format_specs& specs, locale_ref loc) -> OutputIt { return write_int(out, arg, specs, loc); } template ::value && !std::is_same::value && std::is_same>::value)> FMT_CONSTEXPR FMT_INLINE auto write(OutputIt out, T value, const basic_format_specs& specs, locale_ref loc) -> OutputIt { return write_int_noinline(out, make_write_int_arg(value, specs.sign), specs, loc); } // An inlined version of write used in format string compilation. template ::value && !std::is_same::value && !std::is_same>::value)> FMT_CONSTEXPR FMT_INLINE auto write(OutputIt out, T value, const basic_format_specs& specs, locale_ref loc) -> OutputIt { return write_int(out, make_write_int_arg(value, specs.sign), specs, loc); } // An output iterator that counts the number of objects written to it and // discards them. class counting_iterator { private: size_t count_; public: using iterator_category = std::output_iterator_tag; using difference_type = std::ptrdiff_t; using pointer = void; using reference = void; FMT_UNCHECKED_ITERATOR(counting_iterator); struct value_type { template FMT_CONSTEXPR void operator=(const T&) {} }; FMT_CONSTEXPR counting_iterator() : count_(0) {} FMT_CONSTEXPR size_t count() const { return count_; } FMT_CONSTEXPR counting_iterator& operator++() { ++count_; return *this; } FMT_CONSTEXPR counting_iterator operator++(int) { auto it = *this; ++*this; return it; } FMT_CONSTEXPR friend counting_iterator operator+(counting_iterator it, difference_type n) { it.count_ += static_cast(n); return it; } FMT_CONSTEXPR value_type operator*() const { return {}; } }; template FMT_CONSTEXPR auto write(OutputIt out, basic_string_view s, const basic_format_specs& specs) -> OutputIt { auto data = s.data(); auto size = s.size(); if (specs.precision >= 0 && to_unsigned(specs.precision) < size) size = code_point_index(s, to_unsigned(specs.precision)); bool is_debug = specs.type == presentation_type::debug; size_t width = 0; if (specs.width != 0) { if (is_debug) width = write_escaped_string(counting_iterator{}, s).count(); else width = compute_width(basic_string_view(data, size)); } return write_padded(out, specs, size, width, [=](reserve_iterator it) { if (is_debug) return write_escaped_string(it, s); return copy_str(data, data + size, it); }); } template FMT_CONSTEXPR auto write(OutputIt out, basic_string_view> s, const basic_format_specs& specs, locale_ref) -> OutputIt { check_string_type_spec(specs.type); return write(out, s, specs); } template FMT_CONSTEXPR auto write(OutputIt out, const Char* s, const basic_format_specs& specs, locale_ref) -> OutputIt { return check_cstring_type_spec(specs.type) ? write(out, basic_string_view(s), specs, {}) : write_ptr(out, bit_cast(s), &specs); } template ::value && !std::is_same::value && !std::is_same::value)> FMT_CONSTEXPR auto write(OutputIt out, T value) -> OutputIt { auto abs_value = static_cast>(value); bool negative = is_negative(value); // Don't do -abs_value since it trips unsigned-integer-overflow sanitizer. if (negative) abs_value = ~abs_value + 1; int num_digits = count_digits(abs_value); auto size = (negative ? 1 : 0) + static_cast(num_digits); auto it = reserve(out, size); if (auto ptr = to_pointer(it, size)) { if (negative) *ptr++ = static_cast('-'); format_decimal(ptr, abs_value, num_digits); return out; } if (negative) *it++ = static_cast('-'); it = format_decimal(it, abs_value, num_digits).end; return base_iterator(out, it); } template FMT_CONSTEXPR20 auto write_nonfinite(OutputIt out, bool isnan, basic_format_specs specs, const float_specs& fspecs) -> OutputIt { auto str = isnan ? (fspecs.upper ? "NAN" : "nan") : (fspecs.upper ? "INF" : "inf"); constexpr size_t str_size = 3; auto sign = fspecs.sign; auto size = str_size + (sign ? 1 : 0); // Replace '0'-padding with space for non-finite values. const bool is_zero_fill = specs.fill.size() == 1 && *specs.fill.data() == static_cast('0'); if (is_zero_fill) specs.fill[0] = static_cast(' '); return write_padded(out, specs, size, [=](reserve_iterator it) { if (sign) *it++ = detail::sign(sign); return copy_str(str, str + str_size, it); }); } // A decimal floating-point number significand * pow(10, exp). struct big_decimal_fp { const char* significand; int significand_size; int exponent; }; constexpr auto get_significand_size(const big_decimal_fp& f) -> int { return f.significand_size; } template inline auto get_significand_size(const dragonbox::decimal_fp& f) -> int { return count_digits(f.significand); } template constexpr auto write_significand(OutputIt out, const char* significand, int significand_size) -> OutputIt { return copy_str(significand, significand + significand_size, out); } template inline auto write_significand(OutputIt out, UInt significand, int significand_size) -> OutputIt { return format_decimal(out, significand, significand_size).end; } template FMT_CONSTEXPR20 auto write_significand(OutputIt out, T significand, int significand_size, int exponent, const Grouping& grouping) -> OutputIt { if (!grouping.separator()) { out = write_significand(out, significand, significand_size); return detail::fill_n(out, exponent, static_cast('0')); } auto buffer = memory_buffer(); write_significand(appender(buffer), significand, significand_size); detail::fill_n(appender(buffer), exponent, '0'); return grouping.apply(out, string_view(buffer.data(), buffer.size())); } template ::value)> inline auto write_significand(Char* out, UInt significand, int significand_size, int integral_size, Char decimal_point) -> Char* { if (!decimal_point) return format_decimal(out, significand, significand_size).end; out += significand_size + 1; Char* end = out; int floating_size = significand_size - integral_size; for (int i = floating_size / 2; i > 0; --i) { out -= 2; copy2(out, digits2(static_cast(significand % 100))); significand /= 100; } if (floating_size % 2 != 0) { *--out = static_cast('0' + significand % 10); significand /= 10; } *--out = decimal_point; format_decimal(out - integral_size, significand, integral_size); return end; } template >::value)> inline auto write_significand(OutputIt out, UInt significand, int significand_size, int integral_size, Char decimal_point) -> OutputIt { // Buffer is large enough to hold digits (digits10 + 1) and a decimal point. Char buffer[digits10() + 2]; auto end = write_significand(buffer, significand, significand_size, integral_size, decimal_point); return detail::copy_str_noinline(buffer, end, out); } template FMT_CONSTEXPR auto write_significand(OutputIt out, const char* significand, int significand_size, int integral_size, Char decimal_point) -> OutputIt { out = detail::copy_str_noinline(significand, significand + integral_size, out); if (!decimal_point) return out; *out++ = decimal_point; return detail::copy_str_noinline(significand + integral_size, significand + significand_size, out); } template FMT_CONSTEXPR20 auto write_significand(OutputIt out, T significand, int significand_size, int integral_size, Char decimal_point, const Grouping& grouping) -> OutputIt { if (!grouping.separator()) { return write_significand(out, significand, significand_size, integral_size, decimal_point); } auto buffer = basic_memory_buffer(); write_significand(buffer_appender(buffer), significand, significand_size, integral_size, decimal_point); grouping.apply( out, basic_string_view(buffer.data(), to_unsigned(integral_size))); return detail::copy_str_noinline(buffer.data() + integral_size, buffer.end(), out); } template > FMT_CONSTEXPR20 auto do_write_float(OutputIt out, const DecimalFP& f, const basic_format_specs& specs, float_specs fspecs, locale_ref loc) -> OutputIt { auto significand = f.significand; int significand_size = get_significand_size(f); const Char zero = static_cast('0'); auto sign = fspecs.sign; size_t size = to_unsigned(significand_size) + (sign ? 1 : 0); using iterator = reserve_iterator; Char decimal_point = fspecs.locale ? detail::decimal_point(loc) : static_cast('.'); int output_exp = f.exponent + significand_size - 1; auto use_exp_format = [=]() { if (fspecs.format == float_format::exp) return true; if (fspecs.format != float_format::general) return false; // Use the fixed notation if the exponent is in [exp_lower, exp_upper), // e.g. 0.0001 instead of 1e-04. Otherwise use the exponent notation. const int exp_lower = -4, exp_upper = 16; return output_exp < exp_lower || output_exp >= (fspecs.precision > 0 ? fspecs.precision : exp_upper); }; if (use_exp_format()) { int num_zeros = 0; if (fspecs.showpoint) { num_zeros = fspecs.precision - significand_size; if (num_zeros < 0) num_zeros = 0; size += to_unsigned(num_zeros); } else if (significand_size == 1) { decimal_point = Char(); } auto abs_output_exp = output_exp >= 0 ? output_exp : -output_exp; int exp_digits = 2; if (abs_output_exp >= 100) exp_digits = abs_output_exp >= 1000 ? 4 : 3; size += to_unsigned((decimal_point ? 1 : 0) + 2 + exp_digits); char exp_char = fspecs.upper ? 'E' : 'e'; auto write = [=](iterator it) { if (sign) *it++ = detail::sign(sign); // Insert a decimal point after the first digit and add an exponent. it = write_significand(it, significand, significand_size, 1, decimal_point); if (num_zeros > 0) it = detail::fill_n(it, num_zeros, zero); *it++ = static_cast(exp_char); return write_exponent(output_exp, it); }; return specs.width > 0 ? write_padded(out, specs, size, write) : base_iterator(out, write(reserve(out, size))); } int exp = f.exponent + significand_size; if (f.exponent >= 0) { // 1234e5 -> 123400000[.0+] size += to_unsigned(f.exponent); int num_zeros = fspecs.precision - exp; abort_fuzzing_if(num_zeros > 5000); if (fspecs.showpoint) { ++size; if (num_zeros <= 0 && fspecs.format != float_format::fixed) num_zeros = 1; if (num_zeros > 0) size += to_unsigned(num_zeros); } auto grouping = Grouping(loc, fspecs.locale); size += to_unsigned(grouping.count_separators(exp)); return write_padded(out, specs, size, [&](iterator it) { if (sign) *it++ = detail::sign(sign); it = write_significand(it, significand, significand_size, f.exponent, grouping); if (!fspecs.showpoint) return it; *it++ = decimal_point; return num_zeros > 0 ? detail::fill_n(it, num_zeros, zero) : it; }); } else if (exp > 0) { // 1234e-2 -> 12.34[0+] int num_zeros = fspecs.showpoint ? fspecs.precision - significand_size : 0; size += 1 + to_unsigned(num_zeros > 0 ? num_zeros : 0); auto grouping = Grouping(loc, fspecs.locale); size += to_unsigned(grouping.count_separators(significand_size)); return write_padded(out, specs, size, [&](iterator it) { if (sign) *it++ = detail::sign(sign); it = write_significand(it, significand, significand_size, exp, decimal_point, grouping); return num_zeros > 0 ? detail::fill_n(it, num_zeros, zero) : it; }); } // 1234e-6 -> 0.001234 int num_zeros = -exp; if (significand_size == 0 && fspecs.precision >= 0 && fspecs.precision < num_zeros) { num_zeros = fspecs.precision; } bool pointy = num_zeros != 0 || significand_size != 0 || fspecs.showpoint; size += 1 + (pointy ? 1 : 0) + to_unsigned(num_zeros); return write_padded(out, specs, size, [&](iterator it) { if (sign) *it++ = detail::sign(sign); *it++ = zero; if (!pointy) return it; *it++ = decimal_point; it = detail::fill_n(it, num_zeros, zero); return write_significand(it, significand, significand_size); }); } template class fallback_digit_grouping { public: constexpr fallback_digit_grouping(locale_ref, bool) {} constexpr Char separator() const { return Char(); } constexpr int count_separators(int) const { return 0; } template constexpr Out apply(Out out, basic_string_view) const { return out; } }; template FMT_CONSTEXPR20 auto write_float(OutputIt out, const DecimalFP& f, const basic_format_specs& specs, float_specs fspecs, locale_ref loc) -> OutputIt { if (is_constant_evaluated()) { return do_write_float>(out, f, specs, fspecs, loc); } else { return do_write_float(out, f, specs, fspecs, loc); } } template constexpr bool isnan(T value) { return !(value >= value); // std::isnan doesn't support __float128. } template struct has_isfinite : std::false_type {}; template struct has_isfinite> : std::true_type {}; template ::value&& has_isfinite::value)> FMT_CONSTEXPR20 bool isfinite(T value) { constexpr T inf = T(std::numeric_limits::infinity()); if (is_constant_evaluated()) return !detail::isnan(value) && value != inf && value != -inf; return std::isfinite(value); } template ::value)> FMT_CONSTEXPR bool isfinite(T value) { T inf = T(std::numeric_limits::infinity()); // std::isfinite doesn't support __float128. return !detail::isnan(value) && value != inf && value != -inf; } template ::value)> FMT_INLINE FMT_CONSTEXPR bool signbit(T value) { if (is_constant_evaluated()) { #ifdef __cpp_if_constexpr if constexpr (std::numeric_limits::is_iec559) { auto bits = detail::bit_cast(static_cast(value)); return (bits >> (num_bits() - 1)) != 0; } #endif } return std::signbit(static_cast(value)); } enum class round_direction { unknown, up, down }; // Given the divisor (normally a power of 10), the remainder = v % divisor for // some number v and the error, returns whether v should be rounded up, down, or // whether the rounding direction can't be determined due to error. // error should be less than divisor / 2. FMT_CONSTEXPR inline round_direction get_round_direction(uint64_t divisor, uint64_t remainder, uint64_t error) { FMT_ASSERT(remainder < divisor, ""); // divisor - remainder won't overflow. FMT_ASSERT(error < divisor, ""); // divisor - error won't overflow. FMT_ASSERT(error < divisor - error, ""); // error * 2 won't overflow. // Round down if (remainder + error) * 2 <= divisor. if (remainder <= divisor - remainder && error * 2 <= divisor - remainder * 2) return round_direction::down; // Round up if (remainder - error) * 2 >= divisor. if (remainder >= error && remainder - error >= divisor - (remainder - error)) { return round_direction::up; } return round_direction::unknown; } namespace digits { enum result { more, // Generate more digits. done, // Done generating digits. error // Digit generation cancelled due to an error. }; } struct gen_digits_handler { char* buf; int size; int precision; int exp10; bool fixed; FMT_CONSTEXPR digits::result on_digit(char digit, uint64_t divisor, uint64_t remainder, uint64_t error, bool integral) { FMT_ASSERT(remainder < divisor, ""); buf[size++] = digit; if (!integral && error >= remainder) return digits::error; if (size < precision) return digits::more; if (!integral) { // Check if error * 2 < divisor with overflow prevention. // The check is not needed for the integral part because error = 1 // and divisor > (1 << 32) there. if (error >= divisor || error >= divisor - error) return digits::error; } else { FMT_ASSERT(error == 1 && divisor > 2, ""); } auto dir = get_round_direction(divisor, remainder, error); if (dir != round_direction::up) return dir == round_direction::down ? digits::done : digits::error; ++buf[size - 1]; for (int i = size - 1; i > 0 && buf[i] > '9'; --i) { buf[i] = '0'; ++buf[i - 1]; } if (buf[0] > '9') { buf[0] = '1'; if (fixed) buf[size++] = '0'; else ++exp10; } return digits::done; } }; inline FMT_CONSTEXPR20 void adjust_precision(int& precision, int exp10) { // Adjust fixed precision by exponent because it is relative to decimal // point. if (exp10 > 0 && precision > max_value() - exp10) FMT_THROW(format_error("number is too big")); precision += exp10; } // Generates output using the Grisu digit-gen algorithm. // error: the size of the region (lower, upper) outside of which numbers // definitely do not round to value (Delta in Grisu3). FMT_INLINE FMT_CONSTEXPR20 auto grisu_gen_digits(fp value, uint64_t error, int& exp, gen_digits_handler& handler) -> digits::result { const fp one(1ULL << -value.e, value.e); // The integral part of scaled value (p1 in Grisu) = value / one. It cannot be // zero because it contains a product of two 64-bit numbers with MSB set (due // to normalization) - 1, shifted right by at most 60 bits. auto integral = static_cast(value.f >> -one.e); FMT_ASSERT(integral != 0, ""); FMT_ASSERT(integral == value.f >> -one.e, ""); // The fractional part of scaled value (p2 in Grisu) c = value % one. uint64_t fractional = value.f & (one.f - 1); exp = count_digits(integral); // kappa in Grisu. // Non-fixed formats require at least one digit and no precision adjustment. if (handler.fixed) { adjust_precision(handler.precision, exp + handler.exp10); // Check if precision is satisfied just by leading zeros, e.g. // format("{:.2f}", 0.001) gives "0.00" without generating any digits. if (handler.precision <= 0) { if (handler.precision < 0) return digits::done; // Divide by 10 to prevent overflow. uint64_t divisor = data::power_of_10_64[exp - 1] << -one.e; auto dir = get_round_direction(divisor, value.f / 10, error * 10); if (dir == round_direction::unknown) return digits::error; handler.buf[handler.size++] = dir == round_direction::up ? '1' : '0'; return digits::done; } } // Generate digits for the integral part. This can produce up to 10 digits. do { uint32_t digit = 0; auto divmod_integral = [&](uint32_t divisor) { digit = integral / divisor; integral %= divisor; }; // This optimization by Milo Yip reduces the number of integer divisions by // one per iteration. switch (exp) { case 10: divmod_integral(1000000000); break; case 9: divmod_integral(100000000); break; case 8: divmod_integral(10000000); break; case 7: divmod_integral(1000000); break; case 6: divmod_integral(100000); break; case 5: divmod_integral(10000); break; case 4: divmod_integral(1000); break; case 3: divmod_integral(100); break; case 2: divmod_integral(10); break; case 1: digit = integral; integral = 0; break; default: FMT_ASSERT(false, "invalid number of digits"); } --exp; auto remainder = (static_cast(integral) << -one.e) + fractional; auto result = handler.on_digit(static_cast('0' + digit), data::power_of_10_64[exp] << -one.e, remainder, error, true); if (result != digits::more) return result; } while (exp > 0); // Generate digits for the fractional part. for (;;) { fractional *= 10; error *= 10; char digit = static_cast('0' + (fractional >> -one.e)); fractional &= one.f - 1; --exp; auto result = handler.on_digit(digit, one.f, fractional, error, false); if (result != digits::more) return result; } } class bigint { private: // A bigint is stored as an array of bigits (big digits), with bigit at index // 0 being the least significant one. using bigit = uint32_t; using double_bigit = uint64_t; enum { bigits_capacity = 32 }; basic_memory_buffer bigits_; int exp_; FMT_CONSTEXPR20 bigit operator[](int index) const { return bigits_[to_unsigned(index)]; } FMT_CONSTEXPR20 bigit& operator[](int index) { return bigits_[to_unsigned(index)]; } static constexpr const int bigit_bits = num_bits(); friend struct formatter; FMT_CONSTEXPR20 void subtract_bigits(int index, bigit other, bigit& borrow) { auto result = static_cast((*this)[index]) - other - borrow; (*this)[index] = static_cast(result); borrow = static_cast(result >> (bigit_bits * 2 - 1)); } FMT_CONSTEXPR20 void remove_leading_zeros() { int num_bigits = static_cast(bigits_.size()) - 1; while (num_bigits > 0 && (*this)[num_bigits] == 0) --num_bigits; bigits_.resize(to_unsigned(num_bigits + 1)); } // Computes *this -= other assuming aligned bigints and *this >= other. FMT_CONSTEXPR20 void subtract_aligned(const bigint& other) { FMT_ASSERT(other.exp_ >= exp_, "unaligned bigints"); FMT_ASSERT(compare(*this, other) >= 0, ""); bigit borrow = 0; int i = other.exp_ - exp_; for (size_t j = 0, n = other.bigits_.size(); j != n; ++i, ++j) subtract_bigits(i, other.bigits_[j], borrow); while (borrow > 0) subtract_bigits(i, 0, borrow); remove_leading_zeros(); } FMT_CONSTEXPR20 void multiply(uint32_t value) { const double_bigit wide_value = value; bigit carry = 0; for (size_t i = 0, n = bigits_.size(); i < n; ++i) { double_bigit result = bigits_[i] * wide_value + carry; bigits_[i] = static_cast(result); carry = static_cast(result >> bigit_bits); } if (carry != 0) bigits_.push_back(carry); } template ::value || std::is_same::value)> FMT_CONSTEXPR20 void multiply(UInt value) { using half_uint = conditional_t::value, uint64_t, uint32_t>; const int shift = num_bits() - bigit_bits; const UInt lower = static_cast(value); const UInt upper = value >> num_bits(); UInt carry = 0; for (size_t i = 0, n = bigits_.size(); i < n; ++i) { UInt result = lower * bigits_[i] + static_cast(carry); carry = (upper * bigits_[i] << shift) + (result >> bigit_bits) + (carry >> bigit_bits); bigits_[i] = static_cast(result); } while (carry != 0) { bigits_.push_back(static_cast(carry)); carry >>= bigit_bits; } } template ::value || std::is_same::value)> FMT_CONSTEXPR20 void assign(UInt n) { size_t num_bigits = 0; do { bigits_[num_bigits++] = static_cast(n); n >>= bigit_bits; } while (n != 0); bigits_.resize(num_bigits); exp_ = 0; } public: FMT_CONSTEXPR20 bigint() : exp_(0) {} explicit bigint(uint64_t n) { assign(n); } bigint(const bigint&) = delete; void operator=(const bigint&) = delete; FMT_CONSTEXPR20 void assign(const bigint& other) { auto size = other.bigits_.size(); bigits_.resize(size); auto data = other.bigits_.data(); std::copy(data, data + size, make_checked(bigits_.data(), size)); exp_ = other.exp_; } template FMT_CONSTEXPR20 void operator=(Int n) { FMT_ASSERT(n > 0, ""); assign(uint64_or_128_t(n)); } FMT_CONSTEXPR20 int num_bigits() const { return static_cast(bigits_.size()) + exp_; } FMT_NOINLINE FMT_CONSTEXPR20 bigint& operator<<=(int shift) { FMT_ASSERT(shift >= 0, ""); exp_ += shift / bigit_bits; shift %= bigit_bits; if (shift == 0) return *this; bigit carry = 0; for (size_t i = 0, n = bigits_.size(); i < n; ++i) { bigit c = bigits_[i] >> (bigit_bits - shift); bigits_[i] = (bigits_[i] << shift) + carry; carry = c; } if (carry != 0) bigits_.push_back(carry); return *this; } template FMT_CONSTEXPR20 bigint& operator*=(Int value) { FMT_ASSERT(value > 0, ""); multiply(uint32_or_64_or_128_t(value)); return *this; } friend FMT_CONSTEXPR20 int compare(const bigint& lhs, const bigint& rhs) { int num_lhs_bigits = lhs.num_bigits(), num_rhs_bigits = rhs.num_bigits(); if (num_lhs_bigits != num_rhs_bigits) return num_lhs_bigits > num_rhs_bigits ? 1 : -1; int i = static_cast(lhs.bigits_.size()) - 1; int j = static_cast(rhs.bigits_.size()) - 1; int end = i - j; if (end < 0) end = 0; for (; i >= end; --i, --j) { bigit lhs_bigit = lhs[i], rhs_bigit = rhs[j]; if (lhs_bigit != rhs_bigit) return lhs_bigit > rhs_bigit ? 1 : -1; } if (i != j) return i > j ? 1 : -1; return 0; } // Returns compare(lhs1 + lhs2, rhs). friend FMT_CONSTEXPR20 int add_compare(const bigint& lhs1, const bigint& lhs2, const bigint& rhs) { auto minimum = [](int a, int b) { return a < b ? a : b; }; auto maximum = [](int a, int b) { return a > b ? a : b; }; int max_lhs_bigits = maximum(lhs1.num_bigits(), lhs2.num_bigits()); int num_rhs_bigits = rhs.num_bigits(); if (max_lhs_bigits + 1 < num_rhs_bigits) return -1; if (max_lhs_bigits > num_rhs_bigits) return 1; auto get_bigit = [](const bigint& n, int i) -> bigit { return i >= n.exp_ && i < n.num_bigits() ? n[i - n.exp_] : 0; }; double_bigit borrow = 0; int min_exp = minimum(minimum(lhs1.exp_, lhs2.exp_), rhs.exp_); for (int i = num_rhs_bigits - 1; i >= min_exp; --i) { double_bigit sum = static_cast(get_bigit(lhs1, i)) + get_bigit(lhs2, i); bigit rhs_bigit = get_bigit(rhs, i); if (sum > rhs_bigit + borrow) return 1; borrow = rhs_bigit + borrow - sum; if (borrow > 1) return -1; borrow <<= bigit_bits; } return borrow != 0 ? -1 : 0; } // Assigns pow(10, exp) to this bigint. FMT_CONSTEXPR20 void assign_pow10(int exp) { FMT_ASSERT(exp >= 0, ""); if (exp == 0) return *this = 1; // Find the top bit. int bitmask = 1; while (exp >= bitmask) bitmask <<= 1; bitmask >>= 1; // pow(10, exp) = pow(5, exp) * pow(2, exp). First compute pow(5, exp) by // repeated squaring and multiplication. *this = 5; bitmask >>= 1; while (bitmask != 0) { square(); if ((exp & bitmask) != 0) *this *= 5; bitmask >>= 1; } *this <<= exp; // Multiply by pow(2, exp) by shifting. } FMT_CONSTEXPR20 void square() { int num_bigits = static_cast(bigits_.size()); int num_result_bigits = 2 * num_bigits; basic_memory_buffer n(std::move(bigits_)); bigits_.resize(to_unsigned(num_result_bigits)); auto sum = uint128_t(); for (int bigit_index = 0; bigit_index < num_bigits; ++bigit_index) { // Compute bigit at position bigit_index of the result by adding // cross-product terms n[i] * n[j] such that i + j == bigit_index. for (int i = 0, j = bigit_index; j >= 0; ++i, --j) { // Most terms are multiplied twice which can be optimized in the future. sum += static_cast(n[i]) * n[j]; } (*this)[bigit_index] = static_cast(sum); sum >>= num_bits(); // Compute the carry. } // Do the same for the top half. for (int bigit_index = num_bigits; bigit_index < num_result_bigits; ++bigit_index) { for (int j = num_bigits - 1, i = bigit_index - j; i < num_bigits;) sum += static_cast(n[i++]) * n[j--]; (*this)[bigit_index] = static_cast(sum); sum >>= num_bits(); } remove_leading_zeros(); exp_ *= 2; } // If this bigint has a bigger exponent than other, adds trailing zero to make // exponents equal. This simplifies some operations such as subtraction. FMT_CONSTEXPR20 void align(const bigint& other) { int exp_difference = exp_ - other.exp_; if (exp_difference <= 0) return; int num_bigits = static_cast(bigits_.size()); bigits_.resize(to_unsigned(num_bigits + exp_difference)); for (int i = num_bigits - 1, j = i + exp_difference; i >= 0; --i, --j) bigits_[j] = bigits_[i]; std::uninitialized_fill_n(bigits_.data(), exp_difference, 0); exp_ -= exp_difference; } // Divides this bignum by divisor, assigning the remainder to this and // returning the quotient. FMT_CONSTEXPR20 int divmod_assign(const bigint& divisor) { FMT_ASSERT(this != &divisor, ""); if (compare(*this, divisor) < 0) return 0; FMT_ASSERT(divisor.bigits_[divisor.bigits_.size() - 1u] != 0, ""); align(divisor); int quotient = 0; do { subtract_aligned(divisor); ++quotient; } while (compare(*this, divisor) >= 0); return quotient; } }; // format_dragon flags. enum dragon { predecessor_closer = 1, fixup = 2, // Run fixup to correct exp10 which can be off by one. fixed = 4, }; // Formats a floating-point number using a variation of the Fixed-Precision // Positive Floating-Point Printout ((FPP)^2) algorithm by Steele & White: // https://fmt.dev/papers/p372-steele.pdf. FMT_CONSTEXPR20 inline void format_dragon(basic_fp value, unsigned flags, int num_digits, buffer& buf, int& exp10) { bigint numerator; // 2 * R in (FPP)^2. bigint denominator; // 2 * S in (FPP)^2. // lower and upper are differences between value and corresponding boundaries. bigint lower; // (M^- in (FPP)^2). bigint upper_store; // upper's value if different from lower. bigint* upper = nullptr; // (M^+ in (FPP)^2). // Shift numerator and denominator by an extra bit or two (if lower boundary // is closer) to make lower and upper integers. This eliminates multiplication // by 2 during later computations. bool is_predecessor_closer = (flags & dragon::predecessor_closer) != 0; int shift = is_predecessor_closer ? 2 : 1; if (value.e >= 0) { numerator = value.f; numerator <<= value.e + shift; lower = 1; lower <<= value.e; if (is_predecessor_closer) { upper_store = 1; upper_store <<= value.e + 1; upper = &upper_store; } denominator.assign_pow10(exp10); denominator <<= shift; } else if (exp10 < 0) { numerator.assign_pow10(-exp10); lower.assign(numerator); if (is_predecessor_closer) { upper_store.assign(numerator); upper_store <<= 1; upper = &upper_store; } numerator *= value.f; numerator <<= shift; denominator = 1; denominator <<= shift - value.e; } else { numerator = value.f; numerator <<= shift; denominator.assign_pow10(exp10); denominator <<= shift - value.e; lower = 1; if (is_predecessor_closer) { upper_store = 1ULL << 1; upper = &upper_store; } } int even = static_cast((value.f & 1) == 0); if (!upper) upper = &lower; if ((flags & dragon::fixup) != 0) { if (add_compare(numerator, *upper, denominator) + even <= 0) { --exp10; numerator *= 10; if (num_digits < 0) { lower *= 10; if (upper != &lower) *upper *= 10; } } if ((flags & dragon::fixed) != 0) adjust_precision(num_digits, exp10 + 1); } // Invariant: value == (numerator / denominator) * pow(10, exp10). if (num_digits < 0) { // Generate the shortest representation. num_digits = 0; char* data = buf.data(); for (;;) { int digit = numerator.divmod_assign(denominator); bool low = compare(numerator, lower) - even < 0; // numerator <[=] lower. // numerator + upper >[=] pow10: bool high = add_compare(numerator, *upper, denominator) + even > 0; data[num_digits++] = static_cast('0' + digit); if (low || high) { if (!low) { ++data[num_digits - 1]; } else if (high) { int result = add_compare(numerator, numerator, denominator); // Round half to even. if (result > 0 || (result == 0 && (digit % 2) != 0)) ++data[num_digits - 1]; } buf.try_resize(to_unsigned(num_digits)); exp10 -= num_digits - 1; return; } numerator *= 10; lower *= 10; if (upper != &lower) *upper *= 10; } } // Generate the given number of digits. exp10 -= num_digits - 1; if (num_digits == 0) { denominator *= 10; auto digit = add_compare(numerator, numerator, denominator) > 0 ? '1' : '0'; buf.push_back(digit); return; } buf.try_resize(to_unsigned(num_digits)); for (int i = 0; i < num_digits - 1; ++i) { int digit = numerator.divmod_assign(denominator); buf[i] = static_cast('0' + digit); numerator *= 10; } int digit = numerator.divmod_assign(denominator); auto result = add_compare(numerator, numerator, denominator); if (result > 0 || (result == 0 && (digit % 2) != 0)) { if (digit == 9) { const auto overflow = '0' + 10; buf[num_digits - 1] = overflow; // Propagate the carry. for (int i = num_digits - 1; i > 0 && buf[i] == overflow; --i) { buf[i] = '0'; ++buf[i - 1]; } if (buf[0] == overflow) { buf[0] = '1'; ++exp10; } return; } ++digit; } buf[num_digits - 1] = static_cast('0' + digit); } template FMT_CONSTEXPR20 auto format_float(Float value, int precision, float_specs specs, buffer& buf) -> int { // float is passed as double to reduce the number of instantiations. static_assert(!std::is_same::value, ""); FMT_ASSERT(value >= 0, "value is negative"); auto converted_value = convert_float(value); const bool fixed = specs.format == float_format::fixed; if (value <= 0) { // <= instead of == to silence a warning. if (precision <= 0 || !fixed) { buf.push_back('0'); return 0; } buf.try_resize(to_unsigned(precision)); fill_n(buf.data(), precision, '0'); return -precision; } int exp = 0; bool use_dragon = true; unsigned dragon_flags = 0; if (!is_fast_float()) { const auto inv_log2_10 = 0.3010299956639812; // 1 / log2(10) using info = dragonbox::float_info; const auto f = basic_fp(converted_value); // Compute exp, an approximate power of 10, such that // 10^(exp - 1) <= value < 10^exp or 10^exp <= value < 10^(exp + 1). // This is based on log10(value) == log2(value) / log2(10) and approximation // of log2(value) by e + num_fraction_bits idea from double-conversion. exp = static_cast( std::ceil((f.e + count_digits<1>(f.f) - 1) * inv_log2_10 - 1e-10)); dragon_flags = dragon::fixup; } else if (!is_constant_evaluated() && precision < 0) { // Use Dragonbox for the shortest format. if (specs.binary32) { auto dec = dragonbox::to_decimal(static_cast(value)); write(buffer_appender(buf), dec.significand); return dec.exponent; } auto dec = dragonbox::to_decimal(static_cast(value)); write(buffer_appender(buf), dec.significand); return dec.exponent; } else { // Use Grisu + Dragon4 for the given precision: // https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf. const int min_exp = -60; // alpha in Grisu. int cached_exp10 = 0; // K in Grisu. fp normalized = normalize(fp(converted_value)); const auto cached_pow = get_cached_power( min_exp - (normalized.e + fp::num_significand_bits), cached_exp10); normalized = normalized * cached_pow; gen_digits_handler handler{buf.data(), 0, precision, -cached_exp10, fixed}; if (grisu_gen_digits(normalized, 1, exp, handler) != digits::error && !is_constant_evaluated()) { exp += handler.exp10; buf.try_resize(to_unsigned(handler.size)); use_dragon = false; } else { exp += handler.size - cached_exp10 - 1; precision = handler.precision; } } if (use_dragon) { auto f = basic_fp(); bool is_predecessor_closer = specs.binary32 ? f.assign(static_cast(value)) : f.assign(converted_value); if (is_predecessor_closer) dragon_flags |= dragon::predecessor_closer; if (fixed) dragon_flags |= dragon::fixed; // Limit precision to the maximum possible number of significant digits in // an IEEE754 double because we don't need to generate zeros. const int max_double_digits = 767; if (precision > max_double_digits) precision = max_double_digits; format_dragon(f, dragon_flags, precision, buf, exp); } if (!fixed && !specs.showpoint) { // Remove trailing zeros. auto num_digits = buf.size(); while (num_digits > 0 && buf[num_digits - 1] == '0') { --num_digits; ++exp; } buf.try_resize(num_digits); } return exp; } template ::value)> FMT_CONSTEXPR20 auto write(OutputIt out, T value, basic_format_specs specs, locale_ref loc = {}) -> OutputIt { if (const_check(!is_supported_floating_point(value))) return out; float_specs fspecs = parse_float_type_spec(specs); fspecs.sign = specs.sign; if (detail::signbit(value)) { // value < 0 is false for NaN so use signbit. fspecs.sign = sign::minus; value = -value; } else if (fspecs.sign == sign::minus) { fspecs.sign = sign::none; } if (!detail::isfinite(value)) return write_nonfinite(out, detail::isnan(value), specs, fspecs); if (specs.align == align::numeric && fspecs.sign) { auto it = reserve(out, 1); *it++ = detail::sign(fspecs.sign); out = base_iterator(out, it); fspecs.sign = sign::none; if (specs.width != 0) --specs.width; } memory_buffer buffer; if (fspecs.format == float_format::hex) { if (fspecs.sign) buffer.push_back(detail::sign(fspecs.sign)); snprintf_float(convert_float(value), specs.precision, fspecs, buffer); return write_bytes(out, {buffer.data(), buffer.size()}, specs); } int precision = specs.precision >= 0 || specs.type == presentation_type::none ? specs.precision : 6; if (fspecs.format == float_format::exp) { if (precision == max_value()) throw_format_error("number is too big"); else ++precision; } else if (fspecs.format != float_format::fixed && precision == 0) { precision = 1; } if (const_check(std::is_same())) fspecs.binary32 = true; int exp = format_float(convert_float(value), precision, fspecs, buffer); fspecs.precision = precision; auto f = big_decimal_fp{buffer.data(), static_cast(buffer.size()), exp}; return write_float(out, f, specs, fspecs, loc); } template ::value)> FMT_CONSTEXPR20 auto write(OutputIt out, T value) -> OutputIt { if (is_constant_evaluated()) return write(out, value, basic_format_specs()); if (const_check(!is_supported_floating_point(value))) return out; auto fspecs = float_specs(); if (detail::signbit(value)) { fspecs.sign = sign::minus; value = -value; } constexpr auto specs = basic_format_specs(); using floaty = conditional_t::value, double, T>; using uint = typename dragonbox::float_info::carrier_uint; uint mask = exponent_mask(); if ((bit_cast(value) & mask) == mask) return write_nonfinite(out, std::isnan(value), specs, fspecs); auto dec = dragonbox::to_decimal(static_cast(value)); return write_float(out, dec, specs, fspecs, {}); } template ::value && !is_fast_float::value)> inline auto write(OutputIt out, T value) -> OutputIt { return write(out, value, basic_format_specs()); } template auto write(OutputIt out, monostate, basic_format_specs = {}, locale_ref = {}) -> OutputIt { FMT_ASSERT(false, ""); return out; } template FMT_CONSTEXPR auto write(OutputIt out, basic_string_view value) -> OutputIt { auto it = reserve(out, value.size()); it = copy_str_noinline(value.begin(), value.end(), it); return base_iterator(out, it); } template ::value)> constexpr auto write(OutputIt out, const T& value) -> OutputIt { return write(out, to_string_view(value)); } // FMT_ENABLE_IF() condition separated to workaround an MSVC bug. template < typename Char, typename OutputIt, typename T, bool check = std::is_enum::value && !std::is_same::value && mapped_type_constant>::value != type::custom_type, FMT_ENABLE_IF(check)> FMT_CONSTEXPR auto write(OutputIt out, T value) -> OutputIt { return write(out, static_cast>(value)); } template ::value)> FMT_CONSTEXPR auto write(OutputIt out, T value, const basic_format_specs& specs = {}, locale_ref = {}) -> OutputIt { return specs.type != presentation_type::none && specs.type != presentation_type::string ? write(out, value ? 1 : 0, specs, {}) : write_bytes(out, value ? "true" : "false", specs); } template FMT_CONSTEXPR auto write(OutputIt out, Char value) -> OutputIt { auto it = reserve(out, 1); *it++ = value; return base_iterator(out, it); } template FMT_CONSTEXPR_CHAR_TRAITS auto write(OutputIt out, const Char* value) -> OutputIt { if (!value) { throw_format_error("string pointer is null"); } else { out = write(out, basic_string_view(value)); } return out; } template ::value)> auto write(OutputIt out, const T* value, const basic_format_specs& specs = {}, locale_ref = {}) -> OutputIt { check_pointer_type_spec(specs.type, error_handler()); return write_ptr(out, bit_cast(value), &specs); } // A write overload that handles implicit conversions. template > FMT_CONSTEXPR auto write(OutputIt out, const T& value) -> enable_if_t< std::is_class::value && !is_string::value && !is_floating_point::value && !std::is_same::value && !std::is_same().map(value))>::value, OutputIt> { return write(out, arg_mapper().map(value)); } template > FMT_CONSTEXPR auto write(OutputIt out, const T& value) -> enable_if_t::value == type::custom_type, OutputIt> { using formatter_type = conditional_t::value, typename Context::template formatter_type, fallback_formatter>; auto ctx = Context(out, {}, {}); return formatter_type().format(value, ctx); } // An argument visitor that formats the argument and writes it via the output // iterator. It's a class and not a generic lambda for compatibility with C++11. template struct default_arg_formatter { using iterator = buffer_appender; using context = buffer_context; iterator out; basic_format_args args; locale_ref loc; template auto operator()(T value) -> iterator { return write(out, value); } auto operator()(typename basic_format_arg::handle h) -> iterator { basic_format_parse_context parse_ctx({}); context format_ctx(out, args, loc); h.format(parse_ctx, format_ctx); return format_ctx.out(); } }; template struct arg_formatter { using iterator = buffer_appender; using context = buffer_context; iterator out; const basic_format_specs& specs; locale_ref locale; template FMT_CONSTEXPR FMT_INLINE auto operator()(T value) -> iterator { return detail::write(out, value, specs, locale); } auto operator()(typename basic_format_arg::handle) -> iterator { // User-defined types are handled separately because they require access // to the parse context. return out; } }; template struct custom_formatter { basic_format_parse_context& parse_ctx; buffer_context& ctx; void operator()( typename basic_format_arg>::handle h) const { h.format(parse_ctx, ctx); } template void operator()(T) const {} }; template using is_integer = bool_constant::value && !std::is_same::value && !std::is_same::value && !std::is_same::value>; template class width_checker { public: explicit FMT_CONSTEXPR width_checker(ErrorHandler& eh) : handler_(eh) {} template ::value)> FMT_CONSTEXPR auto operator()(T value) -> unsigned long long { if (is_negative(value)) handler_.on_error("negative width"); return static_cast(value); } template ::value)> FMT_CONSTEXPR auto operator()(T) -> unsigned long long { handler_.on_error("width is not integer"); return 0; } private: ErrorHandler& handler_; }; template class precision_checker { public: explicit FMT_CONSTEXPR precision_checker(ErrorHandler& eh) : handler_(eh) {} template ::value)> FMT_CONSTEXPR auto operator()(T value) -> unsigned long long { if (is_negative(value)) handler_.on_error("negative precision"); return static_cast(value); } template ::value)> FMT_CONSTEXPR auto operator()(T) -> unsigned long long { handler_.on_error("precision is not integer"); return 0; } private: ErrorHandler& handler_; }; template