Full Code of ptmt/react-native-macos for AI

master 1bb1d251116b cached
2756 files
11.4 MB
3.1M tokens
9892 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,528K chars total). Download the full file to get everything.
Repository: ptmt/react-native-macos
Branch: master
Commit: 1bb1d251116b
Files: 2756
Total size: 11.4 MB

Directory structure:
gitextract_omq0812w/

├── .buckconfig
├── .circleci/
│   └── config.yml
├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .flowconfig
├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug.md
│       └── feature.md
├── .gitignore
├── .npmignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ContainerShip/
│   ├── Dockerfile.android
│   ├── Dockerfile.android-base
│   ├── Dockerfile.javascript
│   └── scripts/
│       ├── run-android-ci-instrumentation-tests.js
│       ├── run-android-docker-instrumentation-tests.sh
│       ├── run-android-docker-unit-tests.sh
│       ├── run-ci-e2e-tests.sh
│       └── run-instrumentation-tests-via-adb-shell.sh
├── DockerTests.md
├── IntegrationTests/
│   ├── AccessibilityManagerTest.js
│   ├── AppEventsTest.js
│   ├── AsyncStorageTest.js
│   ├── ImageCachePolicyTest.js
│   ├── ImageSnapshotTest.js
│   ├── IntegrationTestHarnessTest.js
│   ├── IntegrationTestsApp.js
│   ├── LayoutEventsTest.js
│   ├── LoggingTestModule.js
│   ├── PromiseTest.js
│   ├── PropertiesUpdateTest.js
│   ├── RCTRootViewIntegrationTestApp.js
│   ├── ReactContentSizeUpdateTest.js
│   ├── SimpleSnapshotTest.js
│   ├── SizeFlexibilityUpdateTest.js
│   ├── SyncMethodTest.js
│   ├── TimersTest.js
│   ├── WebSocketTest.js
│   ├── WebViewTest.js
│   ├── launchWebSocketServer.command
│   └── websocket_integration_test_server.js
├── Jenkinsfile
├── LICENSE
├── LICENSE-docs
├── Libraries/
│   ├── .eslintrc
│   ├── ART/
│   │   ├── ART.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── ARTCGFloatArray.h
│   │   ├── ARTContainer.h
│   │   ├── ARTGroup.h
│   │   ├── ARTGroup.m
│   │   ├── ARTNode.h
│   │   ├── ARTNode.m
│   │   ├── ARTRenderable.h
│   │   ├── ARTRenderable.m
│   │   ├── ARTSerializablePath.js
│   │   ├── ARTShape.h
│   │   ├── ARTShape.m
│   │   ├── ARTSurfaceView.h
│   │   ├── ARTSurfaceView.m
│   │   ├── ARTText.h
│   │   ├── ARTText.m
│   │   ├── ARTTextFrame.h
│   │   ├── Brushes/
│   │   │   ├── ARTBrush.h
│   │   │   ├── ARTBrush.m
│   │   │   ├── ARTLinearGradient.h
│   │   │   ├── ARTLinearGradient.m
│   │   │   ├── ARTPattern.h
│   │   │   ├── ARTPattern.m
│   │   │   ├── ARTRadialGradient.h
│   │   │   ├── ARTRadialGradient.m
│   │   │   ├── ARTSolidColor.h
│   │   │   └── ARTSolidColor.m
│   │   ├── RCTConvert+ART.h
│   │   ├── RCTConvert+ART.m
│   │   ├── ReactNativeART.js
│   │   └── ViewManagers/
│   │       ├── ARTGroupManager.h
│   │       ├── ARTGroupManager.m
│   │       ├── ARTNodeManager.h
│   │       ├── ARTNodeManager.m
│   │       ├── ARTRenderableManager.h
│   │       ├── ARTRenderableManager.m
│   │       ├── ARTShapeManager.h
│   │       ├── ARTShapeManager.m
│   │       ├── ARTSurfaceViewManager.h
│   │       ├── ARTSurfaceViewManager.m
│   │       ├── ARTTextManager.h
│   │       └── ARTTextManager.m
│   ├── ActionSheetIOS/
│   │   ├── ActionSheetIOS.js
│   │   ├── RCTActionSheet.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTActionSheetManager.h
│   │   └── RCTActionSheetManager.m
│   ├── Alert/
│   │   ├── Alert.js
│   │   ├── AlertIOS.js
│   │   ├── RCTAlertManager.android.js
│   │   └── RCTAlertManager.ios.js
│   ├── Animated/
│   │   ├── examples/
│   │   │   ├── demo.html
│   │   │   └── style.css
│   │   ├── release/
│   │   │   ├── gulpfile.js
│   │   │   └── package.json
│   │   └── src/
│   │       ├── Animated.js
│   │       ├── AnimatedEvent.js
│   │       ├── AnimatedImplementation.js
│   │       ├── AnimatedWeb.js
│   │       ├── Easing.js
│   │       ├── NativeAnimatedHelper.js
│   │       ├── SpringConfig.js
│   │       ├── __tests__/
│   │       │   ├── Animated-test.js
│   │       │   ├── AnimatedNative-test.js
│   │       │   ├── Easing-test.js
│   │       │   ├── Interpolation-test.js
│   │       │   └── bezier-test.js
│   │       ├── animations/
│   │       │   ├── Animation.js
│   │       │   ├── DecayAnimation.js
│   │       │   ├── SpringAnimation.js
│   │       │   └── TimingAnimation.js
│   │       ├── bezier.js
│   │       ├── createAnimatedComponent.js
│   │       ├── nodes/
│   │       │   ├── AnimatedAddition.js
│   │       │   ├── AnimatedDiffClamp.js
│   │       │   ├── AnimatedDivision.js
│   │       │   ├── AnimatedInterpolation.js
│   │       │   ├── AnimatedModulo.js
│   │       │   ├── AnimatedMultiplication.js
│   │       │   ├── AnimatedNode.js
│   │       │   ├── AnimatedProps.js
│   │       │   ├── AnimatedStyle.js
│   │       │   ├── AnimatedTracking.js
│   │       │   ├── AnimatedTransform.js
│   │       │   ├── AnimatedValue.js
│   │       │   ├── AnimatedValueXY.js
│   │       │   └── AnimatedWithChildren.js
│   │       └── polyfills/
│   │           ├── InteractionManager.js
│   │           ├── Set.js
│   │           └── flattenStyle.js
│   ├── AppState/
│   │   └── AppState.js
│   ├── BatchedBridge/
│   │   ├── BatchedBridge.js
│   │   ├── MessageQueue.js
│   │   ├── NativeModules.js
│   │   ├── __mocks__/
│   │   │   ├── MessageQueueTestConfig.js
│   │   │   └── MessageQueueTestModule.js
│   │   └── __tests__/
│   │       ├── MessageQueue-test.js
│   │       └── NativeModules-test.js
│   ├── Blob/
│   │   ├── Blob.js
│   │   ├── BlobTypes.js
│   │   ├── RCTBlob.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTBlobManager.h
│   │   ├── RCTBlobManager.m
│   │   └── URL.js
│   ├── BugReporting/
│   │   ├── BugReporting.js
│   │   ├── dumpReactTree.js
│   │   └── getReactData.js
│   ├── CameraRoll/
│   │   ├── CameraRoll.js
│   │   ├── ImagePickerIOS.js
│   │   ├── RCTAssetsLibraryRequestHandler.h
│   │   ├── RCTAssetsLibraryRequestHandler.m
│   │   ├── RCTCameraRoll.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTCameraRollManager.h
│   │   ├── RCTCameraRollManager.m
│   │   ├── RCTImagePickerManager.h
│   │   ├── RCTImagePickerManager.m
│   │   ├── RCTPhotoLibraryImageLoader.h
│   │   └── RCTPhotoLibraryImageLoader.m
│   ├── Components/
│   │   ├── AccessibilityInfo/
│   │   │   ├── AccessibilityInfo.android.js
│   │   │   ├── AccessibilityInfo.ios.js
│   │   │   └── AccessibilityInfo.macos.js
│   │   ├── ActivityIndicator/
│   │   │   └── ActivityIndicator.js
│   │   ├── AppleTV/
│   │   │   ├── TVEventHandler.android.js
│   │   │   ├── TVEventHandler.ios.js
│   │   │   ├── TVEventHandler.macos.js
│   │   │   └── TVViewPropTypes.js
│   │   ├── Button.js
│   │   ├── CheckBox/
│   │   │   ├── CheckBox.android.js
│   │   │   ├── CheckBox.ios.js
│   │   │   └── CheckBox.macos.js
│   │   ├── Clipboard/
│   │   │   └── Clipboard.js
│   │   ├── Cursor/
│   │   │   └── Cursor.macos.js
│   │   ├── DatePicker/
│   │   │   └── DatePickerIOS.macos.js
│   │   ├── DatePickerAndroid/
│   │   │   ├── DatePickerAndroid.android.js
│   │   │   ├── DatePickerAndroid.ios.js
│   │   │   └── DatePickerAndroid.macos.js
│   │   ├── DrawerAndroid/
│   │   │   ├── DrawerLayoutAndroid.android.js
│   │   │   └── DrawerLayoutAndroid.macos.js
│   │   ├── Intent/
│   │   │   └── IntentAndroid.macos.js
│   │   ├── Keyboard/
│   │   │   ├── Keyboard.ios.js
│   │   │   ├── Keyboard.macos.js
│   │   │   └── KeyboardAvoidingView.js
│   │   ├── LazyRenderer.js
│   │   ├── MaskedView/
│   │   │   ├── MaskedViewIOS.android.js
│   │   │   ├── MaskedViewIOS.ios.js
│   │   │   └── MaskedViewIOS.macos.js
│   │   ├── Navigation/
│   │   │   ├── NavigatorIOS.ios.js
│   │   │   └── NavigatorIOS.macos.js
│   │   ├── Picker/
│   │   │   ├── Picker.js
│   │   │   ├── PickerAndroid.android.js
│   │   │   ├── PickerAndroid.ios.js
│   │   │   ├── PickerIOS.android.js
│   │   │   └── PickerIOS.ios.js
│   │   ├── ProgressBarAndroid/
│   │   │   ├── ProgressBarAndroid.android.js
│   │   │   └── ProgressBarAndroid.macos.js
│   │   ├── ProgressViewIOS/
│   │   │   ├── ProgressViewIOS.android.js
│   │   │   ├── ProgressViewIOS.ios.js
│   │   │   └── ProgressViewIOS.macos.js
│   │   ├── RefreshControl/
│   │   │   ├── RefreshControl.js
│   │   │   └── __mocks__/
│   │   │       └── RefreshControlMock.js
│   │   ├── SafeAreaView/
│   │   │   ├── SafeAreaView.android.js
│   │   │   ├── SafeAreaView.ios.js
│   │   │   └── SafeAreaView.macos.js
│   │   ├── ScrollResponder.js
│   │   ├── ScrollView/
│   │   │   ├── RecyclerViewBackedScrollView.macos.js
│   │   │   ├── ScrollView.js
│   │   │   ├── ScrollViewStickyHeader.js
│   │   │   ├── __mocks__/
│   │   │   │   └── ScrollViewMock.js
│   │   │   └── processDecelerationRate.js
│   │   ├── SegmentedControlIOS/
│   │   │   ├── SegmentedControlIOS.android.js
│   │   │   └── SegmentedControlIOS.macos.js
│   │   ├── Slider/
│   │   │   └── Slider.js
│   │   ├── StaticContainer.react.js
│   │   ├── StaticRenderer.js
│   │   ├── StatusBar/
│   │   │   ├── StatusBar.js
│   │   │   ├── StatusBarIOS.android.js
│   │   │   ├── StatusBarIOS.ios.js
│   │   │   └── StatusBarIOS.macos.js
│   │   ├── Subscribable.js
│   │   ├── Switch/
│   │   │   └── Switch.js
│   │   ├── TabBarIOS/
│   │   │   ├── TabBarIOS.android.js
│   │   │   ├── TabBarIOS.ios.js
│   │   │   ├── TabBarIOS.macos.js
│   │   │   ├── TabBarItemIOS.android.js
│   │   │   └── TabBarItemIOS.ios.js
│   │   ├── TextInput/
│   │   │   ├── TextInput.js
│   │   │   └── TextInputState.js
│   │   ├── TimePickerAndroid/
│   │   │   ├── TimePickerAndroid.android.js
│   │   │   ├── TimePickerAndroid.ios.js
│   │   │   └── TimePickerAndroid.macos.js
│   │   ├── ToastAndroid/
│   │   │   ├── ToastAndroid.android.js
│   │   │   └── ToastAndroid.ios.js
│   │   ├── ToolbarAndroid/
│   │   │   ├── ToolbarAndroid.android.js
│   │   │   └── ToolbarAndroid.ios.js
│   │   ├── Touchable/
│   │   │   ├── BoundingDimensions.js
│   │   │   ├── PooledClass.js
│   │   │   ├── Position.js
│   │   │   ├── Touchable.js
│   │   │   ├── TouchableBounce.js
│   │   │   ├── TouchableHighlight.js
│   │   │   ├── TouchableNativeFeedback.android.js
│   │   │   ├── TouchableNativeFeedback.ios.js
│   │   │   ├── TouchableNativeFeedback.macos.js
│   │   │   ├── TouchableOpacity.js
│   │   │   ├── TouchableWithoutFeedback.js
│   │   │   ├── __mocks__/
│   │   │   │   └── ensureComponentIsNative.js
│   │   │   ├── __tests__/
│   │   │   │   ├── TouchableHighlight-test.js
│   │   │   │   └── __snapshots__/
│   │   │   │       └── TouchableHighlight-test.js.snap
│   │   │   ├── ensureComponentIsNative.js
│   │   │   └── ensurePositiveDelayProps.js
│   │   ├── UnimplementedViews/
│   │   │   └── UnimplementedView.js
│   │   ├── View/
│   │   │   ├── PlatformViewPropTypes.android.js
│   │   │   ├── PlatformViewPropTypes.ios.js
│   │   │   ├── PlatformViewPropTypes.macos.js
│   │   │   ├── ReactNativeStyleAttributes.js
│   │   │   ├── ReactNativeViewAttributes.js
│   │   │   ├── ShadowPropTypesIOS.js
│   │   │   ├── View.js
│   │   │   ├── View.js.flow
│   │   │   ├── ViewAccessibility.js
│   │   │   ├── ViewPropTypes.js
│   │   │   └── ViewStylePropTypes.js
│   │   ├── ViewPager/
│   │   │   ├── ViewPagerAndroid.android.js
│   │   │   ├── ViewPagerAndroid.ios.js
│   │   │   └── ViewPagerAndroid.macos.js
│   │   └── WebView/
│   │       ├── WebView.android.js
│   │       └── WebView.macos.js
│   ├── Core/
│   │   ├── Devtools/
│   │   │   ├── __tests__/
│   │   │   │   └── parseErrorStack-test.js
│   │   │   ├── getDevServer.js
│   │   │   ├── openFileInEditor.js
│   │   │   ├── parseErrorStack.js
│   │   │   ├── setupDevtools.js
│   │   │   └── symbolicateStackTrace.js
│   │   ├── ExceptionsManager.js
│   │   ├── InitializeCore.js
│   │   ├── ReactNativeVersion.js
│   │   ├── ReactNativeVersionCheck.js
│   │   ├── Timers/
│   │   │   └── JSTimers.js
│   │   ├── __mocks__/
│   │   │   └── ErrorUtils.js
│   │   └── __tests__/
│   │       └── ReactNativeVersionCheck-test.js
│   ├── EventEmitter/
│   │   ├── MissingNativeEventEmitterShim.js
│   │   ├── NativeEventEmitter.js
│   │   ├── RCTDeviceEventEmitter.js
│   │   ├── RCTEventEmitter.js
│   │   ├── RCTNativeAppEventEmitter.js
│   │   └── __mocks__/
│   │       └── NativeEventEmitter.js
│   ├── Experimental/
│   │   ├── Incremental.js
│   │   ├── IncrementalExample.js
│   │   ├── IncrementalGroup.js
│   │   ├── IncrementalPresenter.js
│   │   ├── SwipeableRow/
│   │   │   ├── SwipeableFlatList.js
│   │   │   ├── SwipeableListView.js
│   │   │   ├── SwipeableListViewDataSource.js
│   │   │   ├── SwipeableQuickActionButton.js
│   │   │   ├── SwipeableQuickActions.js
│   │   │   └── SwipeableRow.js
│   │   └── WindowedListView.js
│   ├── Geolocation/
│   │   ├── Geolocation.js
│   │   ├── RCTGeolocation.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTLocationObserver.h
│   │   └── RCTLocationObserver.m
│   ├── Image/
│   │   ├── AssetRegistry.js
│   │   ├── AssetSourceResolver.js
│   │   ├── Image.android.js
│   │   ├── Image.macos.js
│   │   ├── ImageBackground.js
│   │   ├── ImageEditor.js
│   │   ├── ImageResizeMode.js
│   │   ├── ImageSource.js
│   │   ├── ImageSourcePropType.js
│   │   ├── ImageStore.js
│   │   ├── ImageStylePropTypes.js
│   │   ├── RCTGIFImageDecoder.h
│   │   ├── RCTGIFImageDecoder.m
│   │   ├── RCTImage.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTImageBlurUtils.h
│   │   ├── RCTImageBlurUtils.m
│   │   ├── RCTImageCache.h
│   │   ├── RCTImageCache.m
│   │   ├── RCTImageEditingManager.h
│   │   ├── RCTImageEditingManager.m
│   │   ├── RCTImageLoader.h
│   │   ├── RCTImageLoader.m
│   │   ├── RCTImageShadowView.h
│   │   ├── RCTImageShadowView.m
│   │   ├── RCTImageStoreManager.h
│   │   ├── RCTImageStoreManager.m
│   │   ├── RCTImageUtils.h
│   │   ├── RCTImageUtils.m
│   │   ├── RCTImageView.h
│   │   ├── RCTImageView.m
│   │   ├── RCTImageViewManager.h
│   │   ├── RCTImageViewManager.m
│   │   ├── RCTLocalAssetImageLoader.h
│   │   ├── RCTLocalAssetImageLoader.m
│   │   ├── RCTResizeMode.h
│   │   ├── RCTResizeMode.m
│   │   ├── RelativeImageStub.js
│   │   ├── __tests__/
│   │   │   ├── __snapshots__/
│   │   │   │   └── assetRelativePathInSnapshot.js.snap
│   │   │   ├── assetRelativePathInSnapshot.js
│   │   │   └── resolveAssetSource-test.js
│   │   ├── nativeImageSource.js
│   │   └── resolveAssetSource.js
│   ├── Inspector/
│   │   ├── BorderBox.js
│   │   ├── BoxInspector.js
│   │   ├── ElementBox.js
│   │   ├── ElementProperties.js
│   │   ├── Inspector.js
│   │   ├── InspectorOverlay.js
│   │   ├── InspectorPanel.js
│   │   ├── NetworkOverlay.js
│   │   ├── PerformanceOverlay.js
│   │   ├── StyleInspector.js
│   │   └── resolveBoxStyle.js
│   ├── Interaction/
│   │   ├── Batchinator.js
│   │   ├── BridgeSpyStallHandler.js
│   │   ├── FrameRateLogger.js
│   │   ├── InteractionManager.js
│   │   ├── InteractionMixin.js
│   │   ├── InteractionStallDebugger.js
│   │   ├── JSEventLoopWatchdog.js
│   │   ├── PanResponder.js
│   │   ├── ReactPerfStallHandler.js
│   │   ├── TaskQueue.js
│   │   └── __tests__/
│   │       ├── Batchinator-test.js
│   │       ├── InteractionManager-test.js
│   │       ├── InteractionMixin-test.js
│   │       └── TaskQueue-test.js
│   ├── JSInspector/
│   │   ├── InspectorAgent.js
│   │   ├── JSInspector.js
│   │   └── NetworkAgent.js
│   ├── LayoutAnimation/
│   │   └── LayoutAnimation.js
│   ├── Linking/
│   │   └── Linking.js
│   ├── LinkingIOS/
│   │   ├── RCTLinking.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTLinkingManager.h
│   │   └── RCTLinkingManager.m
│   ├── Lists/
│   │   ├── FillRateHelper.js
│   │   ├── FlatList.js
│   │   ├── ListView/
│   │   │   ├── ListView.js
│   │   │   ├── ListViewDataSource.js
│   │   │   └── __mocks__/
│   │   │       └── ListViewMock.js
│   │   ├── MetroListView.js
│   │   ├── SectionList.js
│   │   ├── ViewabilityHelper.js
│   │   ├── VirtualizeUtils.js
│   │   ├── VirtualizedList.js
│   │   ├── VirtualizedSectionList.js
│   │   ├── __flowtests__/
│   │   │   ├── FlatList-flowtest.js
│   │   │   └── SectionList-flowtest.js
│   │   └── __tests__/
│   │       ├── FillRateHelper-test.js
│   │       ├── FlatList-test.js
│   │       ├── SectionList-test.js
│   │       ├── ViewabilityHelper-test.js
│   │       ├── VirtualizeUtils-test.js
│   │       ├── VirtualizedList-test.js
│   │       └── __snapshots__/
│   │           ├── FlatList-test.js.snap
│   │           ├── SectionList-test.js.snap
│   │           ├── VirtualizeUtils-test.js.snap
│   │           └── VirtualizedList-test.js.snap
│   ├── Menu/
│   │   └── MenuManager.js
│   ├── Modal/
│   │   └── Modal.js
│   ├── NativeAnimation/
│   │   ├── Drivers/
│   │   │   ├── RCTAnimationDriver.h
│   │   │   ├── RCTDecayAnimation.h
│   │   │   ├── RCTDecayAnimation.m
│   │   │   ├── RCTEventAnimation.h
│   │   │   ├── RCTEventAnimation.m
│   │   │   ├── RCTFrameAnimation.h
│   │   │   ├── RCTFrameAnimation.m
│   │   │   ├── RCTSpringAnimation.h
│   │   │   └── RCTSpringAnimation.m
│   │   ├── Nodes/
│   │   │   ├── RCTAdditionAnimatedNode.h
│   │   │   ├── RCTAdditionAnimatedNode.m
│   │   │   ├── RCTAnimatedNode.h
│   │   │   ├── RCTAnimatedNode.m
│   │   │   ├── RCTDiffClampAnimatedNode.h
│   │   │   ├── RCTDiffClampAnimatedNode.m
│   │   │   ├── RCTDivisionAnimatedNode.h
│   │   │   ├── RCTDivisionAnimatedNode.m
│   │   │   ├── RCTInterpolationAnimatedNode.h
│   │   │   ├── RCTInterpolationAnimatedNode.m
│   │   │   ├── RCTModuloAnimatedNode.h
│   │   │   ├── RCTModuloAnimatedNode.m
│   │   │   ├── RCTMultiplicationAnimatedNode.h
│   │   │   ├── RCTMultiplicationAnimatedNode.m
│   │   │   ├── RCTPropsAnimatedNode.h
│   │   │   ├── RCTPropsAnimatedNode.m
│   │   │   ├── RCTStyleAnimatedNode.h
│   │   │   ├── RCTStyleAnimatedNode.m
│   │   │   ├── RCTTransformAnimatedNode.h
│   │   │   ├── RCTTransformAnimatedNode.m
│   │   │   ├── RCTValueAnimatedNode.h
│   │   │   └── RCTValueAnimatedNode.m
│   │   ├── RCTAnimation.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTAnimationUtils.h
│   │   ├── RCTAnimationUtils.m
│   │   ├── RCTNativeAnimatedModule.h
│   │   ├── RCTNativeAnimatedModule.m
│   │   ├── RCTNativeAnimatedNodesManager.h
│   │   └── RCTNativeAnimatedNodesManager.m
│   ├── NavigationExperimental/
│   │   └── NavigationReducer.js
│   ├── Network/
│   │   ├── FormData.js
│   │   ├── NetInfo.js
│   │   ├── RCTDataRequestHandler.h
│   │   ├── RCTDataRequestHandler.m
│   │   ├── RCTFileRequestHandler.h
│   │   ├── RCTFileRequestHandler.m
│   │   ├── RCTHTTPRequestHandler.h
│   │   ├── RCTHTTPRequestHandler.mm
│   │   ├── RCTNetInfo.h
│   │   ├── RCTNetInfo.m
│   │   ├── RCTNetwork.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTNetworkTask.h
│   │   ├── RCTNetworkTask.m
│   │   ├── RCTNetworking.android.js
│   │   ├── RCTNetworking.h
│   │   ├── RCTNetworking.ios.js
│   │   ├── RCTNetworking.macos.js
│   │   ├── RCTNetworking.mm
│   │   ├── XHRInterceptor.js
│   │   ├── XMLHttpRequest.js
│   │   ├── __tests__/
│   │   │   ├── FormData-test.js
│   │   │   └── XMLHttpRequest-test.js
│   │   ├── convertRequestBody.js
│   │   └── fetch.js
│   ├── Performance/
│   │   ├── QuickPerformanceLogger.js
│   │   ├── SamplingProfiler.js
│   │   └── Systrace.js
│   ├── PermissionsAndroid/
│   │   └── PermissionsAndroid.js
│   ├── Picker/
│   │   └── PickerIOS.macos.js
│   ├── Promise.js
│   ├── PushNotificationIOS/
│   │   ├── PushNotificationIOS.js
│   │   ├── RCTPushNotification.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTPushNotificationManager.h
│   │   └── RCTPushNotificationManager.m
│   ├── RCTTest/
│   │   ├── FBSnapshotTestCase/
│   │   │   ├── FBSnapshotTestCase.h
│   │   │   ├── FBSnapshotTestCase.m
│   │   │   ├── FBSnapshotTestController.h
│   │   │   ├── FBSnapshotTestController.m
│   │   │   ├── UIImage+Compare.h
│   │   │   ├── UIImage+Compare.m
│   │   │   ├── UIImage+Diff.h
│   │   │   └── UIImage+Diff.m
│   │   ├── RCTSnapshotManager.h
│   │   ├── RCTSnapshotManager.m
│   │   ├── RCTTest.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTTestModule.h
│   │   ├── RCTTestModule.m
│   │   ├── RCTTestRunner.h
│   │   ├── RCTTestRunner.m
│   │   ├── SnapshotViewIOS.android.js
│   │   ├── SnapshotViewIOS.ios.js
│   │   └── SnapshotViewIOS.macos.js
│   ├── ReactNative/
│   │   ├── AppContainer.js
│   │   ├── AppRegistry.js
│   │   ├── I18nManager.js
│   │   ├── ReactNativeFeatureFlags.js
│   │   ├── UIManager.js
│   │   ├── UIManagerStatTracker.js
│   │   ├── YellowBox.js
│   │   ├── queryLayoutByID.js
│   │   ├── renderApplication.js
│   │   ├── requireNativeComponent.js
│   │   └── verifyPropTypes.js
│   ├── Renderer/
│   │   ├── REVISION
│   │   ├── ReactNativeRenderer-dev.js
│   │   ├── ReactNativeRenderer-prod.js
│   │   └── shims/
│   │       ├── NativeMethodsMixin.js
│   │       ├── ReactDebugTool.js
│   │       ├── ReactFeatureFlags.js
│   │       ├── ReactGlobalSharedState.js
│   │       ├── ReactNative.js
│   │       ├── ReactNativeBridgeEventPlugin.js
│   │       ├── ReactNativeComponentTree.js
│   │       ├── ReactNativePropRegistry.js
│   │       ├── ReactNativeTypes.js
│   │       ├── ReactPerf.js
│   │       ├── ReactTypes.js
│   │       ├── TouchHistoryMath.js
│   │       ├── createReactNativeComponentClass.js
│   │       └── takeSnapshot.js
│   ├── Sample/
│   │   ├── Sample.android.js
│   │   ├── Sample.h
│   │   ├── Sample.ios.js
│   │   ├── Sample.m
│   │   ├── Sample.xcodeproj/
│   │   │   └── project.pbxproj
│   │   └── package.json
│   ├── Settings/
│   │   ├── RCTSettings.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTSettingsManager.h
│   │   ├── RCTSettingsManager.m
│   │   ├── Settings.android.js
│   │   ├── Settings.ios.js
│   │   └── Settings.macos.js
│   ├── Share/
│   │   └── Share.js
│   ├── Storage/
│   │   └── AsyncStorage.js
│   ├── StyleSheet/
│   │   ├── ColorPropType.js
│   │   ├── EdgeInsetsPropType.js
│   │   ├── LayoutPropTypes.js
│   │   ├── PointPropType.js
│   │   ├── StyleSheet.js
│   │   ├── StyleSheetPropType.js
│   │   ├── StyleSheetTypes.js
│   │   ├── StyleSheetValidation.js
│   │   ├── TransformPropTypes.js
│   │   ├── __tests__/
│   │   │   ├── __snapshots__/
│   │   │   │   └── processTransform-test.js.snap
│   │   │   ├── flattenStyle-test.js
│   │   │   ├── normalizeColor-test.js
│   │   │   ├── processColor-test.js
│   │   │   ├── processTransform-test.js
│   │   │   └── setNormalizedColorAlpha-test.js
│   │   ├── flattenStyle.js
│   │   ├── normalizeColor.js
│   │   ├── processColor.js
│   │   ├── processTransform.js
│   │   └── setNormalizedColorAlpha.js
│   ├── SurfaceBackedComponent/
│   │   ├── RCTSurfaceBackedComponent.h
│   │   ├── RCTSurfaceBackedComponent.mm
│   │   ├── RCTSurfaceBackedComponentState.h
│   │   └── RCTSurfaceBackedComponentState.mm
│   ├── SurfaceHostingComponent/
│   │   ├── RCTSurfaceHostingComponent+Internal.h
│   │   ├── RCTSurfaceHostingComponent.h
│   │   ├── RCTSurfaceHostingComponent.mm
│   │   ├── RCTSurfaceHostingComponentController.h
│   │   ├── RCTSurfaceHostingComponentController.mm
│   │   ├── RCTSurfaceHostingComponentOptions.h
│   │   ├── RCTSurfaceHostingComponentState.h
│   │   └── RCTSurfaceHostingComponentState.mm
│   ├── Text/
│   │   ├── RCTConvert+Text.h
│   │   ├── RCTConvert+Text.m
│   │   ├── RCTFontAttributes.h
│   │   ├── RCTFontAttributes.m
│   │   ├── RCTFontAttributesDelegate.h
│   │   ├── RCTRawTextShadowView.h
│   │   ├── RCTRawTextShadowView.m
│   │   ├── RCTRawTextViewManager.h
│   │   ├── RCTRawTextViewManager.m
│   │   ├── RCTSecureTextField.h
│   │   ├── RCTSecureTextField.m
│   │   ├── RCTText.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTTextField.h
│   │   ├── RCTTextField.m
│   │   ├── RCTTextFieldManager.m
│   │   ├── RCTTextView.m
│   │   ├── RCTTextViewManager.m
│   │   ├── Text/
│   │   │   ├── RCTTextShadowView.h
│   │   │   ├── RCTTextShadowView.m
│   │   │   ├── RCTTextView.h
│   │   │   ├── RCTTextView.m
│   │   │   ├── RCTTextViewManager.h
│   │   │   └── RCTTextViewManager.m
│   │   ├── Text.js
│   │   ├── TextInput/
│   │   │   ├── Multiline/
│   │   │   │   ├── RCTMultilineTextInputShadowView.h
│   │   │   │   ├── RCTMultilineTextInputShadowView.m
│   │   │   │   ├── RCTMultilineTextInputView.h
│   │   │   │   ├── RCTMultilineTextInputView.m
│   │   │   │   ├── RCTMultilineTextInputViewManager.h
│   │   │   │   ├── RCTMultilineTextInputViewManager.m
│   │   │   │   ├── RCTUITextView.h
│   │   │   │   └── RCTUITextView.m
│   │   │   ├── RCTBackedTextInputDelegate.h
│   │   │   ├── RCTBackedTextInputDelegateAdapter.h
│   │   │   ├── RCTBackedTextInputDelegateAdapter.m
│   │   │   ├── RCTBackedTextInputViewProtocol.h
│   │   │   ├── RCTBaseTextInputView.h
│   │   │   ├── RCTBaseTextInputView.m
│   │   │   ├── RCTBaseTextInputViewManager.h
│   │   │   ├── RCTBaseTextInputViewManager.m
│   │   │   ├── RCTTextSelection.h
│   │   │   ├── RCTTextSelection.m
│   │   │   └── Singleline/
│   │   │       ├── RCTSinglelineTextInputShadowView.h
│   │   │       ├── RCTSinglelineTextInputShadowView.m
│   │   │       ├── RCTSinglelineTextInputView.h
│   │   │       ├── RCTSinglelineTextInputView.m
│   │   │       ├── RCTSinglelineTextInputViewManager.h
│   │   │       ├── RCTSinglelineTextInputViewManager.m
│   │   │       ├── RCTUITextField.h
│   │   │       └── RCTUITextField.m
│   │   ├── TextInputLegacy/
│   │   │   ├── RCTMultilineTextInputView.h
│   │   │   ├── RCTMultilineTextInputView.m
│   │   │   ├── RCTSecureTextField.h
│   │   │   ├── RCTSecureTextField.m
│   │   │   ├── RCTShadowTextField.h
│   │   │   ├── RCTShadowTextField.m
│   │   │   ├── RCTShadowTextView.h
│   │   │   ├── RCTShadowTextView.m
│   │   │   ├── RCTTextField.h
│   │   │   ├── RCTTextField.m
│   │   │   ├── RCTTextFieldManager.h
│   │   │   ├── RCTTextFieldManager.m
│   │   │   ├── RCTTextManager.h
│   │   │   ├── RCTTextManager.m
│   │   │   ├── RCTTextSelection.h
│   │   │   ├── RCTTextSelection.m
│   │   │   ├── RCTTextViewManager.h
│   │   │   ├── RCTTextViewManager.m
│   │   │   ├── RCTUITextView.h
│   │   │   └── RCTUITextView.m
│   │   ├── TextProps.js
│   │   ├── TextStylePropTypes.js
│   │   └── TextUpdateTest.js
│   ├── Types/
│   │   └── CoreEventTypes.js
│   ├── Utilities/
│   │   ├── Appearance.js
│   │   ├── BackAndroid.js
│   │   ├── BackHandler.android.js
│   │   ├── BackHandler.ios.js
│   │   ├── BackHandler.macos.js
│   │   ├── CSSVarConfig.js
│   │   ├── DebugEnvironment.js
│   │   ├── DeviceInfo.js
│   │   ├── Dimensions.js
│   │   ├── HMRClient.js
│   │   ├── HMRLoadingView.android.js
│   │   ├── HMRLoadingView.ios.js
│   │   ├── HMRLoadingView.macos.js
│   │   ├── HeapCapture.js
│   │   ├── MatrixMath.js
│   │   ├── PerformanceLogger.js
│   │   ├── PixelRatio.js
│   │   ├── Platform.android.js
│   │   ├── Platform.ios.js
│   │   ├── Platform.macos.js
│   │   ├── PlatformOS.android.js
│   │   ├── PlatformOS.ios.js
│   │   ├── RCTLog.js
│   │   ├── SceneTracker.js
│   │   ├── __mocks__/
│   │   │   ├── BackHandler.js
│   │   │   └── PixelRatio.js
│   │   ├── __tests__/
│   │   │   ├── MatrixMath-test.js
│   │   │   ├── Platform-test.js
│   │   │   ├── SceneTracker-test.js
│   │   │   ├── buildStyleInterpolator-test.js
│   │   │   ├── deepFreezeAndThrowOnMutationInDev-test.js
│   │   │   ├── groupByEveryN-test.js
│   │   │   ├── mapWithSeparator-test.js
│   │   │   ├── truncate-test.js
│   │   │   └── utf8-test.js
│   │   ├── asyncRequire.js
│   │   ├── binaryToBase64.js
│   │   ├── buildStyleInterpolator.js
│   │   ├── clamp.js
│   │   ├── createStrictShapeTypeChecker.js
│   │   ├── deepFreezeAndThrowOnMutationInDev.js
│   │   ├── defineLazyObjectProperty.js
│   │   ├── deprecatedPropType.js
│   │   ├── differ/
│   │   │   ├── __tests__/
│   │   │   │   └── deepDiffer-test.js
│   │   │   ├── deepDiffer.js
│   │   │   ├── insetsDiffer.js
│   │   │   ├── matricesDiffer.js
│   │   │   ├── pointsDiffer.js
│   │   │   └── sizesDiffer.js
│   │   ├── dismissKeyboard.js
│   │   ├── groupByEveryN.js
│   │   ├── infoLog.js
│   │   ├── logError.js
│   │   ├── mapWithSeparator.js
│   │   ├── mergeFast.js
│   │   ├── mergeIntoFast.js
│   │   ├── stringifySafe.js
│   │   ├── truncate.js
│   │   └── utf8.js
│   ├── Vibration/
│   │   ├── RCTVibration.h
│   │   ├── RCTVibration.m
│   │   ├── RCTVibration.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── Vibration.js
│   │   ├── VibrationIOS.android.js
│   │   ├── VibrationIOS.ios.js
│   │   └── VibrationIOS.macos.js
│   ├── WebSocket/
│   │   ├── RCTReconnectingWebSocket.h
│   │   ├── RCTReconnectingWebSocket.m
│   │   ├── RCTSRWebSocket.h
│   │   ├── RCTSRWebSocket.m
│   │   ├── RCTWebSocket.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTWebSocketExecutor.h
│   │   ├── RCTWebSocketExecutor.m
│   │   ├── RCTWebSocketModule.h
│   │   ├── RCTWebSocketModule.m
│   │   ├── WebSocket.js
│   │   ├── WebSocketEvent.js
│   │   ├── WebSocketInterceptor.js
│   │   ├── __mocks__/
│   │   │   └── event-target-shim.js
│   │   └── __tests__/
│   │       └── WebSocket-test.js
│   ├── Wrapper/
│   │   ├── Example/
│   │   │   ├── RCTWrapperExampleView.h
│   │   │   ├── RCTWrapperExampleView.m
│   │   │   ├── RCTWrapperExampleViewController.h
│   │   │   ├── RCTWrapperExampleViewController.m
│   │   │   ├── RCTWrapperReactRootViewController.h
│   │   │   ├── RCTWrapperReactRootViewController.m
│   │   │   ├── RCTWrapperReactRootViewManager.h
│   │   │   └── RCTWrapperReactRootViewManager.m
│   │   ├── RCTWrapper.h
│   │   ├── RCTWrapperShadowView.h
│   │   ├── RCTWrapperShadowView.m
│   │   ├── RCTWrapperView.h
│   │   ├── RCTWrapperView.m
│   │   ├── RCTWrapperViewControllerHostingView.h
│   │   ├── RCTWrapperViewControllerHostingView.m
│   │   ├── RCTWrapperViewManager.h
│   │   └── RCTWrapperViewManager.m
│   ├── fishhook/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── fishhook.c
│   │   └── fishhook.h
│   ├── polyfills/
│   │   ├── Array.es6.js
│   │   ├── Array.prototype.es6.js
│   │   ├── Number.es6.js
│   │   ├── Object.es6.js
│   │   ├── Object.es7.js
│   │   ├── String.prototype.es6.js
│   │   ├── __tests__/
│   │   │   └── Object.es7-test.js
│   │   ├── babelHelpers.js
│   │   ├── console.js
│   │   └── error-guard.js
│   ├── promiseRejectionIsError.js
│   ├── react-native/
│   │   ├── React.js
│   │   ├── react-native-implementation.js
│   │   └── react-native-interface.js
│   └── vendor/
│       ├── core/
│       │   ├── ErrorUtils.js
│       │   ├── Map.js
│       │   ├── Set.js
│       │   ├── _shouldPolyfillES6Collection.js
│       │   ├── getObjectValues.js
│       │   ├── guid.js
│       │   ├── isEmpty.js
│       │   ├── merge.js
│       │   ├── mergeHelpers.js
│       │   ├── mergeInto.js
│       │   └── toIterator.js
│       ├── document/
│       │   └── selection/
│       │       └── DocumentSelectionState.js
│       ├── emitter/
│       │   ├── EmitterSubscription.js
│       │   ├── EventEmitter.js
│       │   ├── EventEmitterWithHolding.js
│       │   ├── EventHolder.js
│       │   ├── EventSubscription.js
│       │   ├── EventSubscriptionVendor.js
│       │   ├── EventValidator.js
│       │   └── mixInEventEmitter.js
│       ├── react/
│       │   └── vendor/
│       │       └── core/
│       │           └── ExecutionEnvironment.macos.js
│       └── tinycolor/
│           └── tinycolor.js
├── README.md
├── RNTester/
│   ├── .eslintrc
│   ├── README.md
│   ├── RNTester/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Base.lproj/
│   │   │   └── LaunchScreen.xib
│   │   ├── Images.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   ├── NavBarButtonPlus.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── story-background.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── tabnav_list.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── tabnav_notification.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── tabnav_settings.imageset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── NativeExampleViews/
│   │   │   ├── FlexibleSizeExampleView.h
│   │   │   ├── FlexibleSizeExampleView.m
│   │   │   ├── UpdatePropertiesExampleView.h
│   │   │   └── UpdatePropertiesExampleView.m
│   │   ├── RNTesterBundle/
│   │   │   ├── Info.plist
│   │   │   └── OtherImages.xcassets/
│   │   │       ├── Contents.json
│   │   │       └── ImageInAssetCatalog.imageset/
│   │   │           └── Contents.json
│   │   └── main.m
│   ├── RNTester-tvOS/
│   │   └── Info.plist
│   ├── RNTester.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── RNTester-tvOS.xcscheme
│   │           └── RNTester.xcscheme
│   ├── RNTesterIntegrationTests/
│   │   ├── Info.plist
│   │   ├── RCTLoggingTests.m
│   │   ├── RCTRootViewIntegrationTests.m
│   │   ├── RCTUIManagerScenarioTests.m
│   │   ├── RNTesterIntegrationTests.m
│   │   ├── RNTesterSnapshotTests.m
│   │   └── RNTesterTestModule.m
│   ├── RNTesterLegacy.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── RNTester-tvOS.xcscheme
│   │           └── RNTester.xcscheme
│   ├── RNTesterUnitTests/
│   │   ├── Info.plist
│   │   ├── OCMock/
│   │   │   ├── NSNotificationCenter+OCMAdditions.h
│   │   │   ├── OCMArg.h
│   │   │   ├── OCMConstraint.h
│   │   │   ├── OCMLocation.h
│   │   │   ├── OCMMacroState.h
│   │   │   ├── OCMRecorder.h
│   │   │   ├── OCMStubRecorder.h
│   │   │   ├── OCMock.h
│   │   │   └── OCMockObject.h
│   │   ├── RCTAllocationTests.m
│   │   ├── RCTAnimationUtilsTests.m
│   │   ├── RCTBridgeTests.m
│   │   ├── RCTBundleURLProviderTests.m
│   │   ├── RCTComponentPropsTests.m
│   │   ├── RCTConvert_NSURLTests.m
│   │   ├── RCTConvert_YGValueTests.m
│   │   ├── RCTDevMenuTests.m
│   │   ├── RCTEventDispatcherTests.m
│   │   ├── RCTFontTests.m
│   │   ├── RCTGzipTests.m
│   │   ├── RCTImageLoaderHelpers.h
│   │   ├── RCTImageLoaderHelpers.m
│   │   ├── RCTImageLoaderTests.m
│   │   ├── RCTImageUtilTests.m
│   │   ├── RCTJSCExecutorTests.m
│   │   ├── RCTJSONTests.m
│   │   ├── RCTMethodArgumentTests.m
│   │   ├── RCTModuleInitNotificationRaceTests.m
│   │   ├── RCTModuleInitTests.m
│   │   ├── RCTModuleMethodTests.mm
│   │   ├── RCTMultipartStreamReaderTests.m
│   │   ├── RCTNativeAnimatedNodesManagerTests.m
│   │   ├── RCTShadowViewTests.m
│   │   ├── RCTUIManagerTests.m
│   │   ├── RCTURLUtilsTests.m
│   │   ├── RCTUnicodeDecodeTests.m
│   │   ├── RNTesterUnitTestsBundle.js
│   │   └── libOCMock.a
│   ├── android/
│   │   └── app/
│   │       ├── BUCK
│   │       ├── build.gradle
│   │       ├── gradle.properties
│   │       ├── proguard-rules.pro
│   │       ├── react.gradle
│   │       └── src/
│   │           └── main/
│   │               ├── AndroidManifest.xml
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── facebook/
│   │               │           └── react/
│   │               │               └── uiapp/
│   │               │                   ├── RNTesterActivity.java
│   │               │                   └── RNTesterApplication.java
│   │               └── res/
│   │                   ├── layout/
│   │                   │   └── activity_main.xml
│   │                   └── values/
│   │                       ├── strings.xml
│   │                       └── styles.xml
│   └── js/
│       ├── ARTExample.js
│       ├── AccessibilityAndroidExample.android.js
│       ├── AccessibilityIOSExample.js
│       ├── ActionSheetIOSExample.js
│       ├── ActivityIndicatorExample.js
│       ├── AlertExample.js
│       ├── AlertIOSExample.js
│       ├── AlertOSXExample.js
│       ├── AnimatedExample.js
│       ├── AnimatedGratuitousApp/
│       │   ├── AnExApp.js
│       │   ├── AnExBobble.js
│       │   ├── AnExChained.js
│       │   ├── AnExScroll.js
│       │   ├── AnExSet.js
│       │   ├── AnExSlides.md
│       │   └── AnExTilt.js
│       ├── AppStateExample.js
│       ├── AppearanceContext.js
│       ├── AppearanceExample.macos.js
│       ├── AssetScaledImageExample.js
│       ├── AsyncStorageExample.js
│       ├── BorderExample.js
│       ├── BoxShadowExample.js
│       ├── ButtonExample.js
│       ├── CameraRollExample.js
│       ├── CameraRollView.js
│       ├── CheckBoxExample.js
│       ├── ClipboardExample.js
│       ├── DatePickerAndroidExample.js
│       ├── DatePickerIOSExample.js
│       ├── DimensionsExample.js
│       ├── DragnDropExample.macos.js
│       ├── ExampleTypes.js
│       ├── FlatListExample.js
│       ├── GeolocationExample.js
│       ├── ImageCapInsetsExample.js
│       ├── ImageEditingExample.js
│       ├── ImageExample.js
│       ├── KeyboardAvoidingViewExample.js
│       ├── LayoutAnimationExample.js
│       ├── LayoutEventsExample.js
│       ├── LayoutExample.js
│       ├── LinkingExample.js
│       ├── ListExampleShared.js
│       ├── ListViewExample.js
│       ├── ListViewGridLayoutExample.js
│       ├── ListViewPagingExample.js
│       ├── MaskedViewExample.js
│       ├── MenuExample.macos.js
│       ├── ModalExample.js
│       ├── MultiColumnExample.js
│       ├── NativeAnimationsExample.js
│       ├── NavigatorIOSBarStyleExample.js
│       ├── NavigatorIOSColorsExample.js
│       ├── NavigatorIOSExample.js
│       ├── NetInfoExample.js
│       ├── OrientationChangeExample.js
│       ├── PanResponderExample.js
│       ├── PermissionsExampleAndroid.android.js
│       ├── PickerExample.js
│       ├── PickerIOSExample.js
│       ├── PointerEventsExample.js
│       ├── ProgressBarAndroidExample.android.js
│       ├── ProgressViewIOSExample.js
│       ├── PushNotificationIOSExample.js
│       ├── RCTRootViewIOSExample.js
│       ├── RNTesterActions.js
│       ├── RNTesterApp.android.js
│       ├── RNTesterApp.ios.js
│       ├── RNTesterApp.macos.js
│       ├── RNTesterBlock.js
│       ├── RNTesterButton.js
│       ├── RNTesterExampleContainer.js
│       ├── RNTesterExampleList.js
│       ├── RNTesterList.android.js
│       ├── RNTesterList.ios.js
│       ├── RNTesterList.macos.js
│       ├── RNTesterNavigationReducer.js
│       ├── RNTesterPage.js
│       ├── RNTesterSettingSwitchRow.js
│       ├── RNTesterStatePersister.js
│       ├── RNTesterTitle.js
│       ├── RTLExample.js
│       ├── RefreshControlExample.js
│       ├── RootViewSizeFlexibilityExampleApp.js
│       ├── SafeAreaViewExample.js
│       ├── ScrollViewExample.js
│       ├── ScrollViewSimpleExample.js
│       ├── SectionListExample.js
│       ├── SegmentedControlIOSExample.js
│       ├── SetPropertiesExampleApp.js
│       ├── ShareExample.js
│       ├── SliderExample.js
│       ├── SnapshotExample.js
│       ├── StatusBarExample.js
│       ├── SwipeableFlatListExample.js
│       ├── SwipeableListViewExample.js
│       ├── SwitchExample.js
│       ├── TVEventHandlerExample.js
│       ├── TabBarIOSBarStyleExample.js
│       ├── TabBarIOSExample.js
│       ├── TextExample.android.js
│       ├── TextExample.ios.js
│       ├── TextExample.macos.js
│       ├── TextInputExample.android.js
│       ├── TextInputExample.ios.js
│       ├── TextInputExample.macos.js
│       ├── TimePickerAndroidExample.js
│       ├── TimerExample.js
│       ├── ToastAndroidExample.android.js
│       ├── ToolbarAndroidExample.android.js
│       ├── TouchableExample.js
│       ├── TransformExample.js
│       ├── TransparentHitTestExample.js
│       ├── URIActionMap.js
│       ├── VibrationExample.js
│       ├── VibrationIOSExample.js
│       ├── ViewExample.js
│       ├── ViewPagerAndroidExample.android.js
│       ├── WebSocketExample.js
│       ├── WebViewExample.js
│       ├── XHRExample.js
│       ├── XHRExampleBinaryUpload.js
│       ├── XHRExampleCookies.js
│       ├── XHRExampleDownload.js
│       ├── XHRExampleFetch.js
│       ├── XHRExampleFormData.js
│       ├── XHRExampleHeaders.js
│       ├── XHRExampleOnTimeOut.js
│       ├── createExamplePage.js
│       ├── helloworld.html
│       ├── http_test_server.js
│       ├── messagingtest.html
│       └── websocket_test_server.js
├── React/
│   ├── Base/
│   │   ├── RCTAssert.h
│   │   ├── RCTAssert.m
│   │   ├── RCTBatchedBridge.mm
│   │   ├── RCTBridge+Private.h
│   │   ├── RCTBridge.h
│   │   ├── RCTBridge.m
│   │   ├── RCTBridgeDelegate.h
│   │   ├── RCTBridgeMethod.h
│   │   ├── RCTBridgeModule.h
│   │   ├── RCTBundleURLProvider.h
│   │   ├── RCTBundleURLProvider.m
│   │   ├── RCTConvert.h
│   │   ├── RCTConvert.m
│   │   ├── RCTCxxConvert.h
│   │   ├── RCTCxxConvert.m
│   │   ├── RCTDefines.h
│   │   ├── RCTDisplayLink.h
│   │   ├── RCTDisplayLink.m
│   │   ├── RCTErrorCustomizer.h
│   │   ├── RCTErrorInfo.h
│   │   ├── RCTErrorInfo.m
│   │   ├── RCTEventDispatcher.h
│   │   ├── RCTEventDispatcher.m
│   │   ├── RCTFrameUpdate.h
│   │   ├── RCTFrameUpdate.m
│   │   ├── RCTImageSource.h
│   │   ├── RCTImageSource.m
│   │   ├── RCTInvalidating.h
│   │   ├── RCTJSCErrorHandling.h
│   │   ├── RCTJSCErrorHandling.mm
│   │   ├── RCTJSStackFrame.h
│   │   ├── RCTJSStackFrame.m
│   │   ├── RCTJavaScriptExecutor.h
│   │   ├── RCTJavaScriptLoader.h
│   │   ├── RCTJavaScriptLoader.mm
│   │   ├── RCTKeyCommands.h
│   │   ├── RCTKeyCommands.m
│   │   ├── RCTLog.h
│   │   ├── RCTLog.mm
│   │   ├── RCTManagedPointer.h
│   │   ├── RCTManagedPointer.mm
│   │   ├── RCTModuleData.h
│   │   ├── RCTModuleData.mm
│   │   ├── RCTModuleMethod.h
│   │   ├── RCTModuleMethod.m
│   │   ├── RCTModuleMethod.mm
│   │   ├── RCTMultipartDataTask.h
│   │   ├── RCTMultipartDataTask.m
│   │   ├── RCTMultipartStreamReader.h
│   │   ├── RCTMultipartStreamReader.m
│   │   ├── RCTNullability.h
│   │   ├── RCTParserUtils.h
│   │   ├── RCTParserUtils.m
│   │   ├── RCTPerformanceLogger.h
│   │   ├── RCTPerformanceLogger.m
│   │   ├── RCTPlatform.h
│   │   ├── RCTPlatform.m
│   │   ├── RCTReloadCommand.h
│   │   ├── RCTReloadCommand.m
│   │   ├── RCTRootContentView.h
│   │   ├── RCTRootContentView.m
│   │   ├── RCTRootView.h
│   │   ├── RCTRootView.m
│   │   ├── RCTRootViewDelegate.h
│   │   ├── RCTRootViewInternal.h
│   │   ├── RCTTVRemoteHandler.h
│   │   ├── RCTTVRemoteHandler.m
│   │   ├── RCTTouchEvent.h
│   │   ├── RCTTouchEvent.m
│   │   ├── RCTTouchHandler.h
│   │   ├── RCTTouchHandler.m
│   │   ├── RCTURLRequestDelegate.h
│   │   ├── RCTURLRequestHandler.h
│   │   ├── RCTUtils.h
│   │   ├── RCTUtils.m
│   │   ├── RCTVersion.h
│   │   ├── Surface/
│   │   │   ├── RCTSurface.h
│   │   │   ├── RCTSurface.mm
│   │   │   ├── RCTSurfaceDelegate.h
│   │   │   ├── RCTSurfaceRootShadowView.h
│   │   │   ├── RCTSurfaceRootShadowView.m
│   │   │   ├── RCTSurfaceRootShadowViewDelegate.h
│   │   │   ├── RCTSurfaceRootView.h
│   │   │   ├── RCTSurfaceRootView.mm
│   │   │   ├── RCTSurfaceStage.h
│   │   │   ├── RCTSurfaceStage.m
│   │   │   ├── RCTSurfaceView+Internal.h
│   │   │   ├── RCTSurfaceView.h
│   │   │   ├── RCTSurfaceView.mm
│   │   │   └── SurfaceHostingView/
│   │   │       ├── RCTSurfaceHostingView.h
│   │   │       ├── RCTSurfaceHostingView.mm
│   │   │       └── RCTSurfaceSizeMeasureMode.h
│   │   ├── UIImageUtils.h
│   │   └── UIImageUtils.m
│   ├── CxxBridge/
│   │   ├── NSDataBigString.h
│   │   ├── NSDataBigString.mm
│   │   ├── RCTCxxBridge.mm
│   │   ├── RCTCxxBridgeDelegate.h
│   │   ├── RCTJSCHelpers.h
│   │   ├── RCTJSCHelpers.mm
│   │   ├── RCTMessageThread.h
│   │   ├── RCTMessageThread.mm
│   │   ├── RCTObjcExecutor.h
│   │   └── RCTObjcExecutor.mm
│   ├── CxxModule/
│   │   ├── DispatchMessageQueueThread.h
│   │   ├── RCTCxxMethod.h
│   │   ├── RCTCxxMethod.mm
│   │   ├── RCTCxxModule.h
│   │   ├── RCTCxxModule.mm
│   │   ├── RCTCxxUtils.h
│   │   ├── RCTCxxUtils.mm
│   │   ├── RCTNativeModule.h
│   │   └── RCTNativeModule.mm
│   ├── CxxUtils/
│   │   ├── RCTFollyConvert.h
│   │   └── RCTFollyConvert.mm
│   ├── DevSupport/
│   │   ├── RCTDevLoadingView.h
│   │   ├── RCTDevLoadingView.m
│   │   ├── RCTDevMenu.h
│   │   ├── RCTDevMenu.m
│   │   ├── RCTInspectorDevServerHelper.h
│   │   ├── RCTInspectorDevServerHelper.mm
│   │   ├── RCTPackagerClient.h
│   │   ├── RCTPackagerClient.m
│   │   ├── RCTPackagerConnection.h
│   │   └── RCTPackagerConnection.mm
│   ├── Executors/
│   │   ├── RCTJSCExecutor.h
│   │   ├── RCTJSCExecutor.mm
│   │   ├── RCTWebViewExecutor.h
│   │   └── RCTWebViewExecutor.m
│   ├── Inspector/
│   │   ├── RCTInspector.h
│   │   ├── RCTInspector.mm
│   │   ├── RCTInspectorPackagerConnection.h
│   │   └── RCTInspectorPackagerConnection.m
│   ├── Modules/
│   │   ├── RCTAccessibilityManager.h
│   │   ├── RCTAccessibilityManager.m
│   │   ├── RCTAlertManager.h
│   │   ├── RCTAlertManager.m
│   │   ├── RCTAppState.h
│   │   ├── RCTAppState.m
│   │   ├── RCTAppearance.h
│   │   ├── RCTAppearance.m
│   │   ├── RCTAsyncLocalStorage.h
│   │   ├── RCTAsyncLocalStorage.m
│   │   ├── RCTClipboard.h
│   │   ├── RCTClipboard.m
│   │   ├── RCTCursorManager.h
│   │   ├── RCTCursorManager.m
│   │   ├── RCTDevSettings.h
│   │   ├── RCTDevSettings.mm
│   │   ├── RCTDeviceInfo.h
│   │   ├── RCTDeviceInfo.m
│   │   ├── RCTEventEmitter.h
│   │   ├── RCTEventEmitter.m
│   │   ├── RCTExceptionsManager.h
│   │   ├── RCTExceptionsManager.m
│   │   ├── RCTI18nManager.h
│   │   ├── RCTI18nManager.m
│   │   ├── RCTI18nUtil.h
│   │   ├── RCTI18nUtil.m
│   │   ├── RCTJSCSamplingProfiler.h
│   │   ├── RCTJSCSamplingProfiler.m
│   │   ├── RCTKeyboardObserver.h
│   │   ├── RCTKeyboardObserver.m
│   │   ├── RCTLayoutAnimation.h
│   │   ├── RCTLayoutAnimation.m
│   │   ├── RCTLayoutAnimationGroup.h
│   │   ├── RCTLayoutAnimationGroup.m
│   │   ├── RCTMenuManager.h
│   │   ├── RCTMenuManager.m
│   │   ├── RCTRedBox.h
│   │   ├── RCTRedBox.m
│   │   ├── RCTRedBoxExtraDataViewController.h
│   │   ├── RCTRedBoxExtraDataViewController.m
│   │   ├── RCTSourceCode.h
│   │   ├── RCTSourceCode.m
│   │   ├── RCTStatusBarManager.h
│   │   ├── RCTStatusBarManager.m
│   │   ├── RCTTVNavigationEventEmitter.h
│   │   ├── RCTTVNavigationEventEmitter.m
│   │   ├── RCTTiming.h
│   │   ├── RCTTiming.m
│   │   ├── RCTUIManager.h
│   │   ├── RCTUIManager.m
│   │   ├── RCTUIManagerObserverCoordinator.h
│   │   ├── RCTUIManagerObserverCoordinator.mm
│   │   ├── RCTUIManagerUtils.h
│   │   └── RCTUIManagerUtils.m
│   ├── Profiler/
│   │   ├── RCTFPSGraph.h
│   │   ├── RCTFPSGraph.m
│   │   ├── RCTJSCProfiler.m
│   │   ├── RCTMacros.h
│   │   ├── RCTPerfMonitor.m
│   │   ├── RCTProfile.h
│   │   ├── RCTProfile.m
│   │   ├── RCTProfileTrampoline-arm.S
│   │   ├── RCTProfileTrampoline-arm64.S
│   │   ├── RCTProfileTrampoline-i386.S
│   │   └── RCTProfileTrampoline-x86_64.S
│   ├── React.xcodeproj/
│   │   └── project.pbxproj
│   ├── ReactLegacy.xcodeproj/
│   │   └── project.pbxproj
│   ├── Views/
│   │   ├── NSView+NSViewAnimationWithBlocks.h
│   │   ├── NSView+NSViewAnimationWithBlocks.m
│   │   ├── NSView+Private.h
│   │   ├── NSView+React.h
│   │   ├── NSView+React.m
│   │   ├── RCTActivityIndicatorView.h
│   │   ├── RCTActivityIndicatorView.m
│   │   ├── RCTActivityIndicatorViewManager.h
│   │   ├── RCTActivityIndicatorViewManager.m
│   │   ├── RCTAnimationType.h
│   │   ├── RCTAutoInsetsProtocol.h
│   │   ├── RCTBorderDrawing.h
│   │   ├── RCTBorderDrawing.m
│   │   ├── RCTBorderStyle.h
│   │   ├── RCTButton.h
│   │   ├── RCTButton.m
│   │   ├── RCTButtonManager.h
│   │   ├── RCTButtonManager.m
│   │   ├── RCTComponent.h
│   │   ├── RCTComponentData.h
│   │   ├── RCTComponentData.m
│   │   ├── RCTConvert+CoreLocation.h
│   │   ├── RCTConvert+CoreLocation.m
│   │   ├── RCTConvert+Transform.h
│   │   ├── RCTConvert+Transform.m
│   │   ├── RCTDatePicker.h
│   │   ├── RCTDatePicker.m
│   │   ├── RCTDatePickerManager.h
│   │   ├── RCTDatePickerManager.m
│   │   ├── RCTFont.h
│   │   ├── RCTFont.mm
│   │   ├── RCTMaskedView.h
│   │   ├── RCTMaskedView.m
│   │   ├── RCTMaskedViewManager.h
│   │   ├── RCTMaskedViewManager.m
│   │   ├── RCTModalHostView.h
│   │   ├── RCTModalHostView.m
│   │   ├── RCTModalHostViewController.h
│   │   ├── RCTModalHostViewController.m
│   │   ├── RCTModalHostViewManager.h
│   │   ├── RCTModalHostViewManager.m
│   │   ├── RCTModalManager.h
│   │   ├── RCTModalManager.m
│   │   ├── RCTNavItem.h
│   │   ├── RCTNavItem.m
│   │   ├── RCTNavItemManager.h
│   │   ├── RCTNavItemManager.m
│   │   ├── RCTNavigator.h
│   │   ├── RCTNavigator.m
│   │   ├── RCTNavigatorManager.h
│   │   ├── RCTNavigatorManager.m
│   │   ├── RCTPicker.h
│   │   ├── RCTPicker.m
│   │   ├── RCTPickerManager.h
│   │   ├── RCTPickerManager.m
│   │   ├── RCTPointerEvents.h
│   │   ├── RCTProgressViewManager.h
│   │   ├── RCTProgressViewManager.m
│   │   ├── RCTRefreshControl.m
│   │   ├── RCTRefreshControlManager.m
│   │   ├── RCTRootShadowView.h
│   │   ├── RCTRootShadowView.m
│   │   ├── RCTSegmentedControl.h
│   │   ├── RCTSegmentedControl.m
│   │   ├── RCTSegmentedControlManager.h
│   │   ├── RCTSegmentedControlManager.m
│   │   ├── RCTShadowView+Internal.h
│   │   ├── RCTShadowView+Internal.m
│   │   ├── RCTShadowView+Layout.h
│   │   ├── RCTShadowView+Layout.m
│   │   ├── RCTShadowView.h
│   │   ├── RCTShadowView.m
│   │   ├── RCTSlider.h
│   │   ├── RCTSlider.m
│   │   ├── RCTSliderManager.h
│   │   ├── RCTSliderManager.m
│   │   ├── RCTSwitch.h
│   │   ├── RCTSwitch.m
│   │   ├── RCTSwitchManager.h
│   │   ├── RCTSwitchManager.m
│   │   ├── RCTTVView.h
│   │   ├── RCTTVView.m
│   │   ├── RCTTabBar.h
│   │   ├── RCTTabBar.m
│   │   ├── RCTTabBarItem.h
│   │   ├── RCTTabBarItem.m
│   │   ├── RCTTabBarItemManager.h
│   │   ├── RCTTabBarItemManager.m
│   │   ├── RCTTabBarManager.h
│   │   ├── RCTTabBarManager.m
│   │   ├── RCTTextDecorationLineType.h
│   │   ├── RCTView.h
│   │   ├── RCTView.m
│   │   ├── RCTViewControllerProtocol.h
│   │   ├── RCTViewManager.h
│   │   ├── RCTViewManager.m
│   │   ├── RCTWebView.h
│   │   ├── RCTWebView.m
│   │   ├── RCTWebViewManager.h
│   │   ├── RCTWebViewManager.m
│   │   ├── RCTWrapperViewController.h
│   │   ├── RCTWrapperViewController.m
│   │   ├── SafeAreaView/
│   │   │   ├── RCTSafeAreaShadowView.h
│   │   │   ├── RCTSafeAreaShadowView.m
│   │   │   ├── RCTSafeAreaView.h
│   │   │   ├── RCTSafeAreaView.m
│   │   │   ├── RCTSafeAreaViewLocalData.h
│   │   │   ├── RCTSafeAreaViewLocalData.m
│   │   │   ├── RCTSafeAreaViewManager.h
│   │   │   └── RCTSafeAreaViewManager.m
│   │   └── ScrollView/
│   │       ├── RCTScrollContentShadowView.h
│   │       ├── RCTScrollContentShadowView.m
│   │       ├── RCTScrollContentView.h
│   │       ├── RCTScrollContentView.m
│   │       ├── RCTScrollContentViewManager.h
│   │       ├── RCTScrollContentViewManager.m
│   │       ├── RCTScrollView.h
│   │       ├── RCTScrollView.m
│   │       ├── RCTScrollViewManager.h
│   │       ├── RCTScrollViewManager.m
│   │       └── RCTScrollableProtocol.h
│   └── third-party.xcconfig
├── React.podspec
├── ReactAndroid/
│   ├── DEFS
│   ├── DevExperience.md
│   ├── README.md
│   ├── build.gradle
│   ├── gradle.properties
│   ├── libs/
│   │   └── BUCK
│   ├── release.gradle
│   └── src/
│       ├── androidTest/
│       │   ├── assets/
│       │   │   └── BUCK
│       │   ├── buck-runner/
│       │   │   └── BUCK
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           └── react/
│       │   │               ├── testing/
│       │   │               │   ├── AbstractScrollViewTestCase.java
│       │   │               │   ├── BUCK
│       │   │               │   ├── FakeWebSocketModule.java
│       │   │               │   ├── InstanceSpecForTestPackage.java
│       │   │               │   ├── ReactAppInstrumentationTestCase.java
│       │   │               │   ├── ReactAppTestActivity.java
│       │   │               │   ├── ReactInstanceSpecForTest.java
│       │   │               │   ├── ReactIntegrationTestCase.java
│       │   │               │   ├── ReactSettingsForTests.java
│       │   │               │   ├── ReactTestAppShell.java
│       │   │               │   ├── ReactTestApplicationImpl.java
│       │   │               │   ├── ReactTestFactory.java
│       │   │               │   ├── ReactTestHelper.java
│       │   │               │   ├── ScreenshotingFrameLayout.java
│       │   │               │   ├── idledetection/
│       │   │               │   │   ├── BUCK
│       │   │               │   │   ├── IdleWaiter.java
│       │   │               │   │   ├── ReactBridgeIdleSignaler.java
│       │   │               │   │   └── ReactIdleDetectionUtil.java
│       │   │               │   └── network/
│       │   │               │       ├── BUCK
│       │   │               │       └── NetworkRecordingModuleMock.java
│       │   │               └── tests/
│       │   │                   ├── BUCK
│       │   │                   ├── CatalystMeasureLayoutTest.java
│       │   │                   ├── CatalystMultitouchHandlingTestCase.java
│       │   │                   ├── CatalystNativeJSToJavaParametersTestCase.java
│       │   │                   ├── CatalystNativeJavaToJSArgumentsTestCase.java
│       │   │                   ├── CatalystNativeJavaToJSReturnValuesTestCase.java
│       │   │                   ├── CatalystSubviewsClippingTestCase.java
│       │   │                   ├── CatalystTouchBubblingTestCase.java
│       │   │                   ├── CatalystUIManagerTestCase.java
│       │   │                   ├── DatePickerDialogTestCase.java
│       │   │                   ├── InitialPropsTestCase.java
│       │   │                   ├── JSLocaleTest.java
│       │   │                   ├── JSResponderTestCase.java
│       │   │                   ├── LayoutEventsTestCase.java
│       │   │                   ├── NativeIdTestCase.java
│       │   │                   ├── ProgressBarTestCase.java
│       │   │                   ├── ReactPickerTestCase.java
│       │   │                   ├── ReactRootViewTestCase.java
│       │   │                   ├── ReactSwipeRefreshLayoutTestCase.java
│       │   │                   ├── ShareTestCase.java
│       │   │                   ├── TestIdTestCase.java
│       │   │                   ├── TextInputTestCase.java
│       │   │                   ├── TimePickerDialogTestCase.java
│       │   │                   └── ViewRenderingTestCase.java
│       │   └── js/
│       │       ├── Asserts.js
│       │       ├── CatalystRootViewTestModule.js
│       │       ├── DatePickerDialogTestModule.js
│       │       ├── InitialPropsTestApp.js
│       │       ├── JSResponderTestApp.js
│       │       ├── LayoutEventsTestApp.js
│       │       ├── MeasureLayoutTestModule.js
│       │       ├── MultitouchHandlingTestAppModule.js
│       │       ├── NativeIdTestModule.js
│       │       ├── PickerAndroidTestModule.js
│       │       ├── ProgressBarTestModule.js
│       │       ├── ScrollViewTestModule.js
│       │       ├── ShareTestModule.js
│       │       ├── SubviewsClippingTestModule.js
│       │       ├── SwipeRefreshLayoutTestModule.js
│       │       ├── TestBundle.js
│       │       ├── TestIdTestModule.js
│       │       ├── TestJSLocaleModule.js
│       │       ├── TestJSToJavaParametersModule.js
│       │       ├── TestJavaToJSArgumentsModule.js
│       │       ├── TestJavaToJSReturnValuesModule.js
│       │       ├── TextInputTestModule.js
│       │       ├── TimePickerDialogTestModule.js
│       │       ├── TouchBubblingTestAppModule.js
│       │       ├── UIManagerTestModule.js
│       │       └── ViewRenderingTestModule.js
│       ├── main/
│       │   ├── android_res/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           └── catalyst/
│       │   │               └── appcompat/
│       │   │                   └── BUCK
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           ├── BUCK
│       │   │           ├── debug/
│       │   │           │   ├── debugoverlay/
│       │   │           │   │   └── model/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── DebugOverlayTag.java
│       │   │           │   ├── holder/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── NoopPrinter.java
│       │   │           │   │   ├── Printer.java
│       │   │           │   │   └── PrinterHolder.java
│       │   │           │   └── tags/
│       │   │           │       ├── BUCK
│       │   │           │       └── ReactDebugOverlayTags.java
│       │   │           ├── jni/
│       │   │           │   ├── BUCK
│       │   │           │   ├── Countable.java
│       │   │           │   ├── CpuCapabilitiesJni.java
│       │   │           │   ├── DestructorThread.java
│       │   │           │   ├── HybridClassBase.java
│       │   │           │   ├── HybridData.java
│       │   │           │   ├── IteratorHelper.java
│       │   │           │   ├── JniTerminateHandler.java
│       │   │           │   ├── MapIteratorHelper.java
│       │   │           │   ├── NativeRunnable.java
│       │   │           │   ├── ThreadScopeSupport.java
│       │   │           │   └── fbjni.pro
│       │   │           ├── perftest/
│       │   │           │   └── BUCK
│       │   │           ├── proguard/
│       │   │           │   └── annotations/
│       │   │           │       └── BUCK
│       │   │           ├── react/
│       │   │           │   ├── BUCK
│       │   │           │   ├── CompositeReactPackage.java
│       │   │           │   ├── CoreModulesPackage.java
│       │   │           │   ├── DebugCorePackage.java
│       │   │           │   ├── EagerModuleProvider.java
│       │   │           │   ├── HeadlessJsTaskService.java
│       │   │           │   ├── LazyReactPackage.java
│       │   │           │   ├── MemoryPressureRouter.java
│       │   │           │   ├── NativeModuleRegistryBuilder.java
│       │   │           │   ├── ReactActivity.java
│       │   │           │   ├── ReactActivityDelegate.java
│       │   │           │   ├── ReactApplication.java
│       │   │           │   ├── ReactFragmentActivity.java
│       │   │           │   ├── ReactInstanceManager.java
│       │   │           │   ├── ReactInstanceManagerBuilder.java
│       │   │           │   ├── ReactInstancePackage.java
│       │   │           │   ├── ReactNativeHost.java
│       │   │           │   ├── ReactPackage.java
│       │   │           │   ├── ReactPackageLogger.java
│       │   │           │   ├── ReactRootView.java
│       │   │           │   ├── ViewManagerOnDemandReactPackage.java
│       │   │           │   ├── animated/
│       │   │           │   │   ├── AdditionAnimatedNode.java
│       │   │           │   │   ├── AnimatedNode.java
│       │   │           │   │   ├── AnimatedNodeValueListener.java
│       │   │           │   │   ├── AnimationDriver.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── DecayAnimation.java
│       │   │           │   │   ├── DiffClampAnimatedNode.java
│       │   │           │   │   ├── DivisionAnimatedNode.java
│       │   │           │   │   ├── EventAnimationDriver.java
│       │   │           │   │   ├── FrameBasedAnimationDriver.java
│       │   │           │   │   ├── InterpolationAnimatedNode.java
│       │   │           │   │   ├── ModulusAnimatedNode.java
│       │   │           │   │   ├── MultiplicationAnimatedNode.java
│       │   │           │   │   ├── NativeAnimatedModule.java
│       │   │           │   │   ├── NativeAnimatedNodesManager.java
│       │   │           │   │   ├── PropsAnimatedNode.java
│       │   │           │   │   ├── SpringAnimation.java
│       │   │           │   │   ├── StyleAnimatedNode.java
│       │   │           │   │   ├── TransformAnimatedNode.java
│       │   │           │   │   └── ValueAnimatedNode.java
│       │   │           │   ├── animation/
│       │   │           │   │   ├── AbstractFloatPairPropertyUpdater.java
│       │   │           │   │   ├── AbstractSingleFloatProperyUpdater.java
│       │   │           │   │   ├── AnimationPropertyUpdater.java
│       │   │           │   │   └── BUCK
│       │   │           │   ├── bridge/
│       │   │           │   │   ├── ActivityEventListener.java
│       │   │           │   │   ├── Arguments.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BaseActivityEventListener.java
│       │   │           │   │   ├── BaseJavaModule.java
│       │   │           │   │   ├── CallbackImpl.java
│       │   │           │   │   ├── CatalystInstance.java
│       │   │           │   │   ├── CatalystInstanceImpl.java
│       │   │           │   │   ├── ContextBaseJavaModule.java
│       │   │           │   │   ├── CxxCallbackImpl.java
│       │   │           │   │   ├── CxxModuleWrapper.java
│       │   │           │   │   ├── CxxModuleWrapperBase.java
│       │   │           │   │   ├── Dynamic.java
│       │   │           │   │   ├── DynamicFromArray.java
│       │   │           │   │   ├── DynamicFromMap.java
│       │   │           │   │   ├── FallbackJSBundleLoader.java
│       │   │           │   │   ├── GuardedRunnable.java
│       │   │           │   │   ├── Inspector.java
│       │   │           │   │   ├── JSBundleLoader.java
│       │   │           │   │   ├── JSCJavaScriptExecutor.java
│       │   │           │   │   ├── JSCJavaScriptExecutorFactory.java
│       │   │           │   │   ├── JSInstance.java
│       │   │           │   │   ├── JavaJSExecutor.java
│       │   │           │   │   ├── JavaMethodWrapper.java
│       │   │           │   │   ├── JavaModuleWrapper.java
│       │   │           │   │   ├── JavaOnlyArray.java
│       │   │           │   │   ├── JavaOnlyMap.java
│       │   │           │   │   ├── JavaScriptContextHolder.java
│       │   │           │   │   ├── JavaScriptExecutor.java
│       │   │           │   │   ├── JavaScriptExecutorFactory.java
│       │   │           │   │   ├── JavaScriptModuleRegistry.java
│       │   │           │   │   ├── JsonWriter.java
│       │   │           │   │   ├── JsonWriterHelper.java
│       │   │           │   │   ├── LifecycleEventListener.java
│       │   │           │   │   ├── MemoryPressure.java
│       │   │           │   │   ├── MemoryPressureListener.java
│       │   │           │   │   ├── ModuleHolder.java
│       │   │           │   │   ├── ModuleSpec.java
│       │   │           │   │   ├── NativeArray.java
│       │   │           │   │   ├── NativeMap.java
│       │   │           │   │   ├── NativeModule.java
│       │   │           │   │   ├── NativeModuleRegistry.java
│       │   │           │   │   ├── PerformanceCounter.java
│       │   │           │   │   ├── Promise.java
│       │   │           │   │   ├── ProxyJavaScriptExecutor.java
│       │   │           │   │   ├── ReactBridge.java
│       │   │           │   │   ├── ReactCallback.java
│       │   │           │   │   ├── ReactContext.java
│       │   │           │   │   ├── ReactMarker.java
│       │   │           │   │   ├── ReactMarkerConstants.java
│       │   │           │   │   ├── ReactMethod.java
│       │   │           │   │   ├── ReactModuleWithSpec.java
│       │   │           │   │   ├── ReadableArray.java
│       │   │           │   │   ├── ReadableMap.java
│       │   │           │   │   ├── ReadableNativeArray.java
│       │   │           │   │   ├── ReadableNativeMap.java
│       │   │           │   │   ├── WritableNativeArray.java
│       │   │           │   │   ├── WritableNativeMap.java
│       │   │           │   │   ├── bridge.pro
│       │   │           │   │   ├── queue/
│       │   │           │   │   │   ├── MessageQueueThread.java
│       │   │           │   │   │   ├── MessageQueueThreadImpl.java
│       │   │           │   │   │   ├── MessageQueueThreadSpec.java
│       │   │           │   │   │   ├── NativeRunnable.java
│       │   │           │   │   │   ├── ReactQueueConfiguration.java
│       │   │           │   │   │   ├── ReactQueueConfigurationImpl.java
│       │   │           │   │   │   └── ReactQueueConfigurationSpec.java
│       │   │           │   │   └── reactnative.pro
│       │   │           │   ├── common/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── ClearableSynchronizedPool.java
│       │   │           │   │   ├── DebugServerException.java
│       │   │           │   │   ├── JavascriptException.java
│       │   │           │   │   ├── LifecycleState.java
│       │   │           │   │   ├── ShakeDetector.java
│       │   │           │   │   ├── SingleThreadAsserter.java
│       │   │           │   │   ├── SystemClock.java
│       │   │           │   │   ├── build/
│       │   │           │   │   │   └── ReactBuildConfig.java
│       │   │           │   │   └── network/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── OkHttpCallUtil.java
│       │   │           │   ├── devsupport/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BundleDownloader.java
│       │   │           │   │   ├── DebugOverlayController.java
│       │   │           │   │   ├── DevInternalSettings.java
│       │   │           │   │   ├── DevLoadingViewController.java
│       │   │           │   │   ├── DevServerHelper.java
│       │   │           │   │   ├── DevSettingsActivity.java
│       │   │           │   │   ├── DevSupportManagerFactory.java
│       │   │           │   │   ├── DevSupportManagerImpl.java
│       │   │           │   │   ├── DisabledDevSupportManager.java
│       │   │           │   │   ├── DoubleTapReloadRecognizer.java
│       │   │           │   │   ├── FpsView.java
│       │   │           │   │   ├── InspectorPackagerConnection.java
│       │   │           │   │   ├── JSCHeapCapture.java
│       │   │           │   │   ├── JSCSamplingProfiler.java
│       │   │           │   │   ├── JSDebuggerWebSocketClient.java
│       │   │           │   │   ├── JSException.java
│       │   │           │   │   ├── MultipartStreamReader.java
│       │   │           │   │   ├── ReactInstanceManagerDevHelper.java
│       │   │           │   │   ├── RedBoxDialog.java
│       │   │           │   │   ├── RedBoxHandler.java
│       │   │           │   │   ├── StackTraceHelper.java
│       │   │           │   │   ├── WebsocketJavaScriptExecutor.java
│       │   │           │   │   ├── WindowOverlayCompat.java
│       │   │           │   │   └── interfaces/
│       │   │           │   │       ├── DevBundleDownloadListener.java
│       │   │           │   │       ├── DevOptionHandler.java
│       │   │           │   │       ├── DevSupportManager.java
│       │   │           │   │       ├── ErrorCustomizer.java
│       │   │           │   │       ├── PackagerStatusCallback.java
│       │   │           │   │       └── StackFrame.java
│       │   │           │   ├── flat/
│       │   │           │   │   ├── AbstractDrawBorder.java
│       │   │           │   │   ├── AbstractDrawCommand.java
│       │   │           │   │   ├── AndroidView.java
│       │   │           │   │   ├── AttachDetachListener.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BitmapUpdateListener.java
│       │   │           │   │   ├── ClippingDrawCommandManager.java
│       │   │           │   │   ├── DrawBackgroundColor.java
│       │   │           │   │   ├── DrawBorder.java
│       │   │           │   │   ├── DrawCommand.java
│       │   │           │   │   ├── DrawCommandManager.java
│       │   │           │   │   ├── DrawImage.java
│       │   │           │   │   ├── DrawImageWithDrawee.java
│       │   │           │   │   ├── DrawTextLayout.java
│       │   │           │   │   ├── DrawView.java
│       │   │           │   │   ├── DraweeRequestHelper.java
│       │   │           │   │   ├── ElementsList.java
│       │   │           │   │   ├── FlatARTSurfaceViewManager.java
│       │   │           │   │   ├── FlatARTSurfaceViewShadowNode.java
│       │   │           │   │   ├── FlatMeasuredViewGroup.java
│       │   │           │   │   ├── FlatNativeViewHierarchyManager.java
│       │   │           │   │   ├── FlatReactModalShadowNode.java
│       │   │           │   │   ├── FlatRootShadowNode.java
│       │   │           │   │   ├── FlatRootViewManager.java
│       │   │           │   │   ├── FlatShadowNode.java
│       │   │           │   │   ├── FlatTextShadowNode.java
│       │   │           │   │   ├── FlatUIImplementation.java
│       │   │           │   │   ├── FlatUIViewOperationQueue.java
│       │   │           │   │   ├── FlatViewGroup.java
│       │   │           │   │   ├── FlatViewManager.java
│       │   │           │   │   ├── FontStylingSpan.java
│       │   │           │   │   ├── HitSlopNodeRegion.java
│       │   │           │   │   ├── HorizontalDrawCommandManager.java
│       │   │           │   │   ├── InlineImageSpanWithPipeline.java
│       │   │           │   │   ├── MoveProxy.java
│       │   │           │   │   ├── NativeViewWrapper.java
│       │   │           │   │   ├── NodeRegion.java
│       │   │           │   │   ├── PipelineRequestHelper.java
│       │   │           │   │   ├── RCTImageView.java
│       │   │           │   │   ├── RCTImageViewManager.java
│       │   │           │   │   ├── RCTModalHostManager.java
│       │   │           │   │   ├── RCTRawText.java
│       │   │           │   │   ├── RCTRawTextManager.java
│       │   │           │   │   ├── RCTText.java
│       │   │           │   │   ├── RCTTextInlineImage.java
│       │   │           │   │   ├── RCTTextInlineImageManager.java
│       │   │           │   │   ├── RCTTextInput.java
│       │   │           │   │   ├── RCTTextInputManager.java
│       │   │           │   │   ├── RCTTextManager.java
│       │   │           │   │   ├── RCTView.java
│       │   │           │   │   ├── RCTViewManager.java
│       │   │           │   │   ├── RCTViewPagerManager.java
│       │   │           │   │   ├── RCTVirtualText.java
│       │   │           │   │   ├── RCTVirtualTextManager.java
│       │   │           │   │   ├── README.md
│       │   │           │   │   ├── ShadowStyleSpan.java
│       │   │           │   │   ├── StateBuilder.java
│       │   │           │   │   ├── TextNodeRegion.java
│       │   │           │   │   ├── TypefaceCache.java
│       │   │           │   │   ├── VerticalDrawCommandManager.java
│       │   │           │   │   ├── ViewResolver.java
│       │   │           │   │   └── VirtualViewManager.java
│       │   │           │   ├── jstasks/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── HeadlessJsTaskConfig.java
│       │   │           │   │   ├── HeadlessJsTaskContext.java
│       │   │           │   │   └── HeadlessJsTaskEventListener.java
│       │   │           │   ├── module/
│       │   │           │   │   ├── annotations/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ReactModule.java
│       │   │           │   │   │   └── ReactModuleList.java
│       │   │           │   │   ├── model/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ReactModuleInfo.java
│       │   │           │   │   │   └── ReactModuleInfoProvider.java
│       │   │           │   │   └── processing/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── ReactModuleSpecProcessor.java
│       │   │           │   ├── modules/
│       │   │           │   │   ├── accessibilityinfo/
│       │   │           │   │   │   ├── AccessibilityInfoModule.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── appregistry/
│       │   │           │   │   │   ├── AppRegistry.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── appstate/
│       │   │           │   │   │   ├── AppStateModule.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── blob/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── BlobModule.java
│       │   │           │   │   │   └── BlobProvider.java
│       │   │           │   │   ├── camera/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── CameraRollManager.java
│       │   │           │   │   │   ├── ImageEditingManager.java
│       │   │           │   │   │   └── ImageStoreManager.java
│       │   │           │   │   ├── clipboard/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ClipboardModule.java
│       │   │           │   │   ├── common/
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── core/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ChoreographerCompat.java
│       │   │           │   │   │   ├── DeviceEventManagerModule.java
│       │   │           │   │   │   ├── ExceptionsManagerModule.java
│       │   │           │   │   │   ├── HeadlessJsTaskSupportModule.java
│       │   │           │   │   │   ├── JSTimers.java
│       │   │           │   │   │   ├── PermissionAwareActivity.java
│       │   │           │   │   │   ├── PermissionListener.java
│       │   │           │   │   │   ├── ReactChoreographer.java
│       │   │           │   │   │   └── Timing.java
│       │   │           │   │   ├── datepicker/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DatePickerDialogFragment.java
│       │   │           │   │   │   ├── DatePickerDialogModule.java
│       │   │           │   │   │   ├── DatePickerMode.java
│       │   │           │   │   │   └── DismissableDatePickerDialog.java
│       │   │           │   │   ├── debug/
│       │   │           │   │   │   ├── AnimationsDebugModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DidJSUpdateUiDuringFrameDetector.java
│       │   │           │   │   │   ├── FpsDebugFrameCallback.java
│       │   │           │   │   │   ├── SourceCodeModule.java
│       │   │           │   │   │   └── interfaces/
│       │   │           │   │   │       └── DeveloperSettings.java
│       │   │           │   │   ├── deviceinfo/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── DeviceInfoModule.java
│       │   │           │   │   ├── dialog/
│       │   │           │   │   │   ├── AlertFragment.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DialogModule.java
│       │   │           │   │   │   └── SupportAlertFragment.java
│       │   │           │   │   ├── fresco/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── FrescoModule.java
│       │   │           │   │   │   ├── ReactNetworkImageRequest.java
│       │   │           │   │   │   ├── ReactOkHttpNetworkFetcher.java
│       │   │           │   │   │   └── SystraceRequestListener.java
│       │   │           │   │   ├── i18nmanager/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── I18nManagerModule.java
│       │   │           │   │   │   └── I18nUtil.java
│       │   │           │   │   ├── image/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ImageLoaderModule.java
│       │   │           │   │   ├── intent/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── IntentModule.java
│       │   │           │   │   ├── location/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── LocationModule.java
│       │   │           │   │   │   └── PositionError.java
│       │   │           │   │   ├── netinfo/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── NetInfoModule.java
│       │   │           │   │   ├── network/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── CookieJarContainer.java
│       │   │           │   │   │   ├── NetworkInterceptorCreator.java
│       │   │           │   │   │   ├── NetworkingModule.java
│       │   │           │   │   │   ├── OkHttpClientProvider.java
│       │   │           │   │   │   ├── ProgressListener.java
│       │   │           │   │   │   ├── ProgressRequestBody.java
│       │   │           │   │   │   ├── ProgressResponseBody.java
│       │   │           │   │   │   ├── ReactCookieJarContainer.java
│       │   │           │   │   │   ├── RequestBodyUtil.java
│       │   │           │   │   │   ├── ResponseUtil.java
│       │   │           │   │   │   └── TLSSocketFactory.java
│       │   │           │   │   ├── permissions/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── PermissionsModule.java
│       │   │           │   │   ├── share/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ShareModule.java
│       │   │           │   │   ├── statusbar/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── StatusBarModule.java
│       │   │           │   │   ├── storage/
│       │   │           │   │   │   ├── AsyncLocalStorageUtil.java
│       │   │           │   │   │   ├── AsyncStorageModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactDatabaseSupplier.java
│       │   │           │   │   ├── systeminfo/
│       │   │           │   │   │   ├── AndroidInfoHelpers.java
│       │   │           │   │   │   ├── AndroidInfoModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactNativeVersion.java
│       │   │           │   │   ├── timepicker/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DismissableTimePickerDialog.java
│       │   │           │   │   │   ├── TimePickerDialogFragment.java
│       │   │           │   │   │   ├── TimePickerDialogModule.java
│       │   │           │   │   │   └── TimePickerMode.java
│       │   │           │   │   ├── toast/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ToastModule.java
│       │   │           │   │   ├── vibration/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── VibrationModule.java
│       │   │           │   │   └── websocket/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── WebSocketModule.java
│       │   │           │   ├── packagerconnection/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── FileIoHandler.java
│       │   │           │   │   ├── JSPackagerClient.java
│       │   │           │   │   ├── NotificationOnlyHandler.java
│       │   │           │   │   ├── PackagerConnectionSettings.java
│       │   │           │   │   ├── ReconnectingWebSocket.java
│       │   │           │   │   ├── RequestHandler.java
│       │   │           │   │   ├── RequestOnlyHandler.java
│       │   │           │   │   ├── Responder.java
│       │   │           │   │   └── SamplingProfilerPackagerMethod.java
│       │   │           │   ├── processing/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   └── ReactPropertyProcessor.java
│       │   │           │   ├── shell/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── MainPackageConfig.java
│       │   │           │   │   └── MainReactPackage.java
│       │   │           │   ├── touch/
│       │   │           │   │   └── BUCK
│       │   │           │   ├── uimanager/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BaseViewManager.java
│       │   │           │   │   ├── DisplayMetricsHolder.java
│       │   │           │   │   ├── FloatUtil.java
│       │   │           │   │   ├── GuardedFrameCallback.java
│       │   │           │   │   ├── JSTouchDispatcher.java
│       │   │           │   │   ├── LayoutShadowNode.java
│       │   │           │   │   ├── MatrixMathHelper.java
│       │   │           │   │   ├── MeasureSpecProvider.java
│       │   │           │   │   ├── NativeViewHierarchyManager.java
│       │   │           │   │   ├── NativeViewHierarchyOptimizer.java
│       │   │           │   │   ├── OnLayoutEvent.java
│       │   │           │   │   ├── ReactClippingViewGroup.java
│       │   │           │   │   ├── ReactClippingViewGroupHelper.java
│       │   │           │   │   ├── ReactCompoundView.java
│       │   │           │   │   ├── ReactRootViewTagGenerator.java
│       │   │           │   │   ├── ReactShadowNode.java
│       │   │           │   │   ├── ReactShadowNodeImpl.java
│       │   │           │   │   ├── ReactStylesDiffMap.java
│       │   │           │   │   ├── ReactZIndexedViewGroup.java
│       │   │           │   │   ├── ShadowNodeRegistry.java
│       │   │           │   │   ├── SizeMonitoringFrameLayout.java
│       │   │           │   │   ├── Spacing.java
│       │   │           │   │   ├── ThemedReactContext.java
│       │   │           │   │   ├── TouchTargetHelper.java
│       │   │           │   │   ├── TransformHelper.java
│       │   │           │   │   ├── UIBlock.java
│       │   │           │   │   ├── UIImplementation.java
│       │   │           │   │   ├── UIImplementationProvider.java
│       │   │           │   │   ├── UIManagerModule.java
│       │   │           │   │   ├── UIManagerModuleConstants.java
│       │   │           │   │   ├── UIManagerModuleConstantsHelper.java
│       │   │           │   │   ├── UIManagerModuleListener.java
│       │   │           │   │   ├── UIViewOperationQueue.java
│       │   │           │   │   ├── ViewGroupDrawingOrderHelper.java
│       │   │           │   │   ├── ViewGroupManager.java
│       │   │           │   │   ├── ViewHierarchyDumper.java
│       │   │           │   │   ├── ViewManager.java
│       │   │           │   │   ├── ViewManagerPropertyUpdater.java
│       │   │           │   │   ├── ViewManagerRegistry.java
│       │   │           │   │   ├── ViewManagersPropertyCache.java
│       │   │           │   │   ├── ViewProps.java
│       │   │           │   │   ├── YogaNodePool.java
│       │   │           │   │   ├── annotations/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactProp.java
│       │   │           │   │   ├── events/
│       │   │           │   │   │   ├── ContentSizeChangeEvent.java
│       │   │           │   │   │   ├── Event.java
│       │   │           │   │   │   ├── EventDispatcher.java
│       │   │           │   │   │   ├── EventDispatcherListener.java
│       │   │           │   │   │   ├── TouchEvent.java
│       │   │           │   │   │   ├── TouchEventCoalescingKeyHelper.java
│       │   │           │   │   │   └── TouchesHelper.java
│       │   │           │   │   ├── layoutanimation/
│       │   │           │   │   │   ├── AbstractLayoutAnimation.java
│       │   │           │   │   │   ├── BaseLayoutAnimation.java
│       │   │           │   │   │   ├── LayoutAnimationController.java
│       │   │           │   │   │   ├── LayoutAnimationListener.java
│       │   │           │   │   │   ├── LayoutAnimationType.java
│       │   │           │   │   │   ├── LayoutDeleteAnimation.java
│       │   │           │   │   │   ├── OpacityAnimation.java
│       │   │           │   │   │   └── PositionAndSizeAnimation.java
│       │   │           │   │   └── util/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── ReactFindViewUtil.java
│       │   │           │   ├── util/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   └── JSStackTrace.java
│       │   │           │   └── views/
│       │   │           │       ├── art/
│       │   │           │       │   ├── ARTGroupShadowNode.java
│       │   │           │       │   ├── ARTGroupViewManager.java
│       │   │           │       │   ├── ARTRenderableViewManager.java
│       │   │           │       │   ├── ARTShapeShadowNode.java
│       │   │           │       │   ├── ARTShapeViewManager.java
│       │   │           │       │   ├── ARTSurfaceView.java
│       │   │           │       │   ├── ARTSurfaceViewManager.java
│       │   │           │       │   ├── ARTSurfaceViewShadowNode.java
│       │   │           │       │   ├── ARTTextViewManager.java
│       │   │           │       │   ├── ARTVirtualNode.java
│       │   │           │       │   └── BUCK
│       │   │           │       ├── checkbox/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactCheckBox.java
│       │   │           │       │   ├── ReactCheckBoxEvent.java
│       │   │           │       │   └── ReactCheckBoxManager.java
│       │   │           │       ├── common/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   └── ViewHelper.java
│       │   │           │       ├── drawer/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactDrawerLayoutManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       ├── DrawerClosedEvent.java
│       │   │           │       │       ├── DrawerOpenedEvent.java
│       │   │           │       │       ├── DrawerSlideEvent.java
│       │   │           │       │       └── DrawerStateChangedEvent.java
│       │   │           │       ├── image/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── GlobalImageLoadListener.java
│       │   │           │       │   ├── ImageLoadEvent.java
│       │   │           │       │   ├── ImageResizeMethod.java
│       │   │           │       │   ├── ImageResizeMode.java
│       │   │           │       │   ├── ReactImageManager.java
│       │   │           │       │   └── ReactImageView.java
│       │   │           │       ├── imagehelper/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ImageSource.java
│       │   │           │       │   ├── MultiSourceHelper.java
│       │   │           │       │   └── ResourceDrawableIdHelper.java
│       │   │           │       ├── modal/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ModalHostHelper.java
│       │   │           │       │   ├── ModalHostShadowNode.java
│       │   │           │       │   ├── ReactModalHostManager.java
│       │   │           │       │   ├── ReactModalHostView.java
│       │   │           │       │   ├── RequestCloseEvent.java
│       │   │           │       │   └── ShowEvent.java
│       │   │           │       ├── picker/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactDialogPickerManager.java
│       │   │           │       │   ├── ReactDropdownPickerManager.java
│       │   │           │       │   ├── ReactPicker.java
│       │   │           │       │   ├── ReactPickerManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       └── PickerItemSelectEvent.java
│       │   │           │       ├── progressbar/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ProgressBarContainerView.java
│       │   │           │       │   ├── ProgressBarShadowNode.java
│       │   │           │       │   └── ReactProgressBarViewManager.java
│       │   │           │       ├── scroll/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── FpsListener.java
│       │   │           │       │   ├── OnScrollDispatchHelper.java
│       │   │           │       │   ├── ReactHorizontalScrollContainerView.java
│       │   │           │       │   ├── ReactHorizontalScrollContainerViewManager.java
│       │   │           │       │   ├── ReactHorizontalScrollView.java
│       │   │           │       │   ├── ReactHorizontalScrollViewManager.java
│       │   │           │       │   ├── ReactScrollView.java
│       │   │           │       │   ├── ReactScrollViewCommandHelper.java
│       │   │           │       │   ├── ReactScrollViewHelper.java
│       │   │           │       │   ├── ReactScrollViewManager.java
│       │   │           │       │   ├── ScrollEvent.java
│       │   │           │       │   ├── ScrollEventType.java
│       │   │           │       │   └── VelocityHelper.java
│       │   │           │       ├── slider/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSlider.java
│       │   │           │       │   ├── ReactSliderEvent.java
│       │   │           │       │   ├── ReactSliderManager.java
│       │   │           │       │   └── ReactSlidingCompleteEvent.java
│       │   │           │       ├── swiperefresh/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSwipeRefreshLayout.java
│       │   │           │       │   ├── RefreshEvent.java
│       │   │           │       │   └── SwipeRefreshLayoutManager.java
│       │   │           │       ├── switchview/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSwitch.java
│       │   │           │       │   ├── ReactSwitchEvent.java
│       │   │           │       │   └── ReactSwitchManager.java
│       │   │           │       ├── text/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── CustomLineHeightSpan.java
│       │   │           │       │   ├── ReactBaseTextShadowNode.java
│       │   │           │       │   ├── ReactRawTextManager.java
│       │   │           │       │   ├── ReactRawTextShadowNode.java
│       │   │           │       │   ├── ReactTextAnchorViewManager.java
│       │   │           │       │   ├── ReactTextInlineImageShadowNode.java
│       │   │           │       │   ├── ReactTextShadowNode.java
│       │   │           │       │   ├── ReactTextUpdate.java
│       │   │           │       │   ├── ReactTextView.java
│       │   │           │       │   ├── ReactTextViewManager.java
│       │   │           │       │   ├── ReactVirtualTextShadowNode.java
│       │   │           │       │   ├── ReactVirtualTextViewManager.java
│       │   │           │       │   ├── TextInlineImageSpan.java
│       │   │           │       │   └── frescosupport/
│       │   │           │       │       ├── BUCK
│       │   │           │       │       ├── FrescoBasedReactTextInlineImageShadowNode.java
│       │   │           │       │       ├── FrescoBasedReactTextInlineImageSpan.java
│       │   │           │       │       └── FrescoBasedReactTextInlineImageViewManager.java
│       │   │           │       ├── textinput/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ContentSizeWatcher.java
│       │   │           │       │   ├── ReactContentSizeChangedEvent.java
│       │   │           │       │   ├── ReactEditText.java
│       │   │           │       │   ├── ReactEditTextInputConnectionWrapper.java
│       │   │           │       │   ├── ReactTextChangedEvent.java
│       │   │           │       │   ├── ReactTextInputBlurEvent.java
│       │   │           │       │   ├── ReactTextInputEndEditingEvent.java
│       │   │           │       │   ├── ReactTextInputEvent.java
│       │   │           │       │   ├── ReactTextInputFocusEvent.java
│       │   │           │       │   ├── ReactTextInputKeyPressEvent.java
│       │   │           │       │   ├── ReactTextInputLocalData.java
│       │   │           │       │   ├── ReactTextInputManager.java
│       │   │           │       │   ├── ReactTextInputSelectionEvent.java
│       │   │           │       │   ├── ReactTextInputShadowNode.java
│       │   │           │       │   ├── ReactTextInputSubmitEditingEvent.java
│       │   │           │       │   └── ScrollWatcher.java
│       │   │           │       ├── toolbar/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactToolbar.java
│       │   │           │       │   ├── ReactToolbarManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       └── ToolbarClickEvent.java
│       │   │           │       ├── view/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── MeasureUtil.java
│       │   │           │       │   ├── ReactViewBackgroundDrawable.java
│       │   │           │       │   ├── ReactViewBackgroundManager.java
│       │   │           │       │   ├── ReactViewGroup.java
│       │   │           │       │   └── ReactViewManager.java
│       │   │           │       ├── viewpager/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── PageScrollEvent.java
│       │   │           │       │   ├── PageScrollStateChangedEvent.java
│       │   │           │       │   ├── PageSelectedEvent.java
│       │   │           │       │   ├── ReactViewPager.java
│       │   │           │       │   └── ReactViewPagerManager.java
│       │   │           │       └── webview/
│       │   │           │           ├── BUCK
│       │   │           │           ├── ReactWebViewManager.java
│       │   │           │           └── events/
│       │   │           │               ├── TopLoadingErrorEvent.java
│       │   │           │               ├── TopLoadingFinishEvent.java
│       │   │           │               ├── TopLoadingStartEvent.java
│       │   │           │               └── TopMessageEvent.java
│       │   │           ├── systrace/
│       │   │           │   ├── BUCK
│       │   │           │   └── Systrace.java
│       │   │           └── yoga/
│       │   │               ├── YogaAlign.java
│       │   │               ├── YogaBaselineFunction.java
│       │   │               ├── YogaConfig.java
│       │   │               ├── YogaConstants.java
│       │   │               ├── YogaDimension.java
│       │   │               ├── YogaDirection.java
│       │   │               ├── YogaDisplay.java
│       │   │               ├── YogaEdge.java
│       │   │               ├── YogaExperimentalFeature.java
│       │   │               ├── YogaFlexDirection.java
│       │   │               ├── YogaJustify.java
│       │   │               ├── YogaLogLevel.java
│       │   │               ├── YogaLogger.java
│       │   │               ├── YogaMeasureFunction.java
│       │   │               ├── YogaMeasureMode.java
│       │   │               ├── YogaMeasureOutput.java
│       │   │               ├── YogaNode.java
│       │   │               ├── YogaNodeType.java
│       │   │               ├── YogaOverflow.java
│       │   │               ├── YogaPositionType.java
│       │   │               ├── YogaPrintOptions.java
│       │   │               ├── YogaUnit.java
│       │   │               ├── YogaValue.java
│       │   │               └── YogaWrap.java
│       │   ├── jni/
│       │   │   ├── Application.mk
│       │   │   ├── first-party/
│       │   │   │   ├── fb/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── Doxyfile
│       │   │   │   │   ├── include/
│       │   │   │   │   │   ├── fb/
│       │   │   │   │   │   │   ├── ALog.h
│       │   │   │   │   │   │   ├── Build.h
│       │   │   │   │   │   │   ├── Countable.h
│       │   │   │   │   │   │   ├── Doxyfile
│       │   │   │   │   │   │   ├── Environment.h
│       │   │   │   │   │   │   ├── ProgramLocation.h
│       │   │   │   │   │   │   ├── RefPtr.h
│       │   │   │   │   │   │   ├── StaticInitialized.h
│       │   │   │   │   │   │   ├── ThreadLocal.h
│       │   │   │   │   │   │   ├── assert.h
│       │   │   │   │   │   │   ├── fbjni/
│       │   │   │   │   │   │   │   ├── Boxed.h
│       │   │   │   │   │   │   │   ├── ByteBuffer.h
│       │   │   │   │   │   │   │   ├── Common.h
│       │   │   │   │   │   │   │   ├── Context.h
│       │   │   │   │   │   │   │   ├── CoreClasses-inl.h
│       │   │   │   │   │   │   │   ├── CoreClasses.h
│       │   │   │   │   │   │   │   ├── Exceptions.h
│       │   │   │   │   │   │   │   ├── File.h
│       │   │   │   │   │   │   │   ├── Hybrid.h
│       │   │   │   │   │   │   │   ├── Iterator-inl.h
│       │   │   │   │   │   │   │   ├── Iterator.h
│       │   │   │   │   │   │   │   ├── JThread.h
│       │   │   │   │   │   │   │   ├── JWeakReference.h
│       │   │   │   │   │   │   │   ├── Meta-forward.h
│       │   │   │   │   │   │   │   ├── Meta-inl.h
│       │   │   │   │   │   │   │   ├── Meta.h
│       │   │   │   │   │   │   │   ├── MetaConvert.h
│       │   │   │   │   │   │   │   ├── NativeRunnable.h
│       │   │   │   │   │   │   │   ├── ReferenceAllocators-inl.h
│       │   │   │   │   │   │   │   ├── ReferenceAllocators.h
│       │   │   │   │   │   │   │   ├── References-forward.h
│       │   │   │   │   │   │   │   ├── References-inl.h
│       │   │   │   │   │   │   │   ├── References.h
│       │   │   │   │   │   │   │   ├── Registration-inl.h
│       │   │   │   │   │   │   │   ├── Registration.h
│       │   │   │   │   │   │   │   └── TypeTraits.h
│       │   │   │   │   │   │   ├── fbjni.h
│       │   │   │   │   │   │   ├── log.h
│       │   │   │   │   │   │   ├── lyra.h
│       │   │   │   │   │   │   ├── noncopyable.h
│       │   │   │   │   │   │   ├── nonmovable.h
│       │   │   │   │   │   │   └── visibility.h
│       │   │   │   │   │   └── jni/
│       │   │   │   │   │       ├── Countable.h
│       │   │   │   │   │       ├── GlobalReference.h
│       │   │   │   │   │       ├── JniTerminateHandler.h
│       │   │   │   │   │       ├── LocalReference.h
│       │   │   │   │   │       ├── LocalString.h
│       │   │   │   │   │       ├── Registration.h
│       │   │   │   │   │       ├── WeakReference.h
│       │   │   │   │   │       └── jni_helpers.h
│       │   │   │   │   ├── jni/
│       │   │   │   │   │   ├── ByteBuffer.cpp
│       │   │   │   │   │   ├── Countable.cpp
│       │   │   │   │   │   ├── Environment.cpp
│       │   │   │   │   │   ├── Exceptions.cpp
│       │   │   │   │   │   ├── Hybrid.cpp
│       │   │   │   │   │   ├── LocalString.cpp
│       │   │   │   │   │   ├── OnLoad.cpp
│       │   │   │   │   │   ├── References.cpp
│       │   │   │   │   │   ├── WeakReference.cpp
│       │   │   │   │   │   ├── android/
│       │   │   │   │   │   │   ├── CpuCapabilities.cpp
│       │   │   │   │   │   │   └── ReferenceChecking.cpp
│       │   │   │   │   │   ├── fbjni.cpp
│       │   │   │   │   │   ├── java/
│       │   │   │   │   │   │   ├── BUCK
│       │   │   │   │   │   │   ├── CppException.java
│       │   │   │   │   │   │   ├── CppSystemErrorException.java
│       │   │   │   │   │   │   └── UnknownCppException.java
│       │   │   │   │   │   └── jni_helpers.cpp
│       │   │   │   │   ├── lyra/
│       │   │   │   │   │   └── lyra.cpp
│       │   │   │   │   └── onload.cpp
│       │   │   │   ├── fbgloginit/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── fb/
│       │   │   │   │   │   └── glog_init.h
│       │   │   │   │   └── glog_init.cpp
│       │   │   │   ├── jni-hack/
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── README.md
│       │   │   │   │   ├── jni.h
│       │   │   │   │   └── real/
│       │   │   │   │       └── jni.h
│       │   │   │   └── yogajni/
│       │   │   │       ├── Android.mk
│       │   │   │       ├── BUCK
│       │   │   │       └── jni/
│       │   │   │           └── YGJNI.cpp
│       │   │   ├── packagerconnection/
│       │   │   │   ├── Android.mk
│       │   │   │   ├── BUCK
│       │   │   │   ├── JSPackagerClientResponder.cpp
│       │   │   │   ├── JSPackagerClientResponder.h
│       │   │   │   ├── OnLoad.cpp
│       │   │   │   ├── SamplingProfilerJniMethod.cpp
│       │   │   │   └── SamplingProfilerJniMethod.h
│       │   │   ├── prebuilt/
│       │   │   │   └── BUCK
│       │   │   ├── react/
│       │   │   │   ├── jni/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── AndroidJSCFactory.cpp
│       │   │   │   │   ├── AndroidJSCFactory.h
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── CatalystInstanceImpl.cpp
│       │   │   │   │   ├── CatalystInstanceImpl.h
│       │   │   │   │   ├── CxxModuleWrapper.cpp
│       │   │   │   │   ├── CxxModuleWrapper.h
│       │   │   │   │   ├── CxxModuleWrapperBase.h
│       │   │   │   │   ├── CxxSharedModuleWrapper.h
│       │   │   │   │   ├── JCallback.h
│       │   │   │   │   ├── JInspector.cpp
│       │   │   │   │   ├── JInspector.h
│       │   │   │   │   ├── JMessageQueueThread.cpp
│       │   │   │   │   ├── JMessageQueueThread.h
│       │   │   │   │   ├── JNativeRunnable.h
│       │   │   │   │   ├── JSCPerfLogging.cpp
│       │   │   │   │   ├── JSCPerfLogging.h
│       │   │   │   │   ├── JSLoader.cpp
│       │   │   │   │   ├── JSLoader.h
│       │   │   │   │   ├── JSLogging.cpp
│       │   │   │   │   ├── JSLogging.h
│       │   │   │   │   ├── JavaModuleWrapper.cpp
│       │   │   │   │   ├── JavaModuleWrapper.h
│       │   │   │   │   ├── JavaScriptExecutorHolder.h
│       │   │   │   │   ├── JniJSModulesUnbundle.cpp
│       │   │   │   │   ├── JniJSModulesUnbundle.h
│       │   │   │   │   ├── MethodInvoker.cpp
│       │   │   │   │   ├── MethodInvoker.h
│       │   │   │   │   ├── ModuleRegistryBuilder.cpp
│       │   │   │   │   ├── ModuleRegistryBuilder.h
│       │   │   │   │   ├── NativeArray.cpp
│       │   │   │   │   ├── NativeArray.h
│       │   │   │   │   ├── NativeCommon.cpp
│       │   │   │   │   ├── NativeCommon.h
│       │   │   │   │   ├── NativeMap.cpp
│       │   │   │   │   ├── NativeMap.h
│       │   │   │   │   ├── OnLoad.cpp
│       │   │   │   │   ├── OnLoad.h
│       │   │   │   │   ├── ProxyExecutor.cpp
│       │   │   │   │   ├── ProxyExecutor.h
│       │   │   │   │   ├── ReactMarker.cpp
│       │   │   │   │   ├── ReactMarker.h
│       │   │   │   │   ├── ReadableNativeArray.cpp
│       │   │   │   │   ├── ReadableNativeArray.h
│       │   │   │   │   ├── ReadableNativeMap.cpp
│       │   │   │   │   ├── ReadableNativeMap.h
│       │   │   │   │   ├── WritableNativeArray.cpp
│       │   │   │   │   ├── WritableNativeArray.h
│       │   │   │   │   ├── WritableNativeMap.cpp
│       │   │   │   │   └── WritableNativeMap.h
│       │   │   │   └── perftests/
│       │   │   │       ├── BUCK
│       │   │   │       └── OnLoad.cpp
│       │   │   └── third-party/
│       │   │       ├── android-ndk/
│       │   │       │   └── BUCK
│       │   │       ├── boost/
│       │   │       │   └── Android.mk
│       │   │       ├── folly/
│       │   │       │   └── Android.mk
│       │   │       └── glibc/
│       │   │           └── BUCK
│       │   ├── libraries/
│       │   │   ├── fbcore/
│       │   │   │   └── src/
│       │   │   │       ├── main/
│       │   │   │       │   └── java/
│       │   │   │       │       └── com/
│       │   │   │       │           └── facebook/
│       │   │   │       │               └── common/
│       │   │   │       │                   └── logging/
│       │   │   │       │                       └── BUCK
│       │   │   │       └── test/
│       │   │   │           └── java/
│       │   │   │               └── com/
│       │   │   │                   └── facebook/
│       │   │   │                       └── powermock/
│       │   │   │                           └── BUCK
│       │   │   ├── fresco/
│       │   │   │   └── fresco-react-native/
│       │   │   │       └── BUCK
│       │   │   ├── soloader/
│       │   │   │   └── java/
│       │   │   │       └── com/
│       │   │   │           └── facebook/
│       │   │   │               └── soloader/
│       │   │   │                   └── BUCK
│       │   │   └── textlayoutbuilder/
│       │   │       └── BUCK
│       │   ├── res/
│       │   │   ├── BUCK
│       │   │   ├── devsupport/
│       │   │   │   ├── layout/
│       │   │   │   │   ├── dev_loading_view.xml
│       │   │   │   │   └── redbox_view.xml
│       │   │   │   ├── values/
│       │   │   │   │   ├── strings.xml
│       │   │   │   │   └── styles.xml
│       │   │   │   └── xml/
│       │   │   │       └── preferences.xml
│       │   │   ├── shell/
│       │   │   │   └── values/
│       │   │   │       └── styles.xml
│       │   │   └── views/
│       │   │       ├── modal/
│       │   │       │   ├── anim/
│       │   │       │   │   ├── catalyst_fade_in.xml
│       │   │       │   │   ├── catalyst_fade_out.xml
│       │   │       │   │   ├── catalyst_slide_down.xml
│       │   │       │   │   └── catalyst_slide_up.xml
│       │   │       │   └── values/
│       │   │       │       └── themes.xml
│       │   │       └── uimanager/
│       │   │           └── values/
│       │   │               └── ids.xml
│       │   └── third-party/
│       │       ├── android/
│       │       │   ├── support/
│       │       │   │   ├── v4/
│       │       │   │   │   └── BUCK
│       │       │   │   └── v7/
│       │       │   │       └── appcompat-orig/
│       │       │   │           └── BUCK
│       │       │   └── support-annotations/
│       │       │       └── BUCK
│       │       └── java/
│       │           ├── asm/
│       │           │   └── BUCK
│       │           ├── buck-android-support/
│       │           │   ├── BUCK
│       │           │   └── buck-android-support.jar
│       │           ├── fest/
│       │           │   └── BUCK
│       │           ├── infer-annotations/
│       │           │   ├── BUCK
│       │           │   └── infer-annotations-4.0.jar
│       │           ├── javapoet/
│       │           │   └── BUCK
│       │           ├── jsr-305/
│       │           │   └── BUCK
│       │           ├── jsr-330/
│       │           │   └── BUCK
│       │           ├── junit/
│       │           │   └── BUCK
│       │           ├── mockito/
│       │           │   └── BUCK
│       │           ├── okhttp/
│       │           │   └── BUCK
│       │           ├── okio/
│       │           │   └── BUCK
│       │           ├── robolectric3/
│       │           │   └── robolectric/
│       │           │       └── BUCK
│       │           ├── sqlite/
│       │           │   └── BUCK
│       │           └── testing-support-lib/
│       │               └── BUCK
│       └── test/
│           └── java/
│               ├── com/
│               │   └── facebook/
│               │       ├── common/
│               │       │   └── logging/
│               │       │       ├── BUCK
│               │       │       └── FakeLoggingDelegate.java
│               │       └── react/
│               │           ├── BUCK
│               │           ├── CompositeReactPackageTest.java
│               │           ├── RootViewTest.java
│               │           ├── animated/
│               │           │   ├── BUCK
│               │           │   ├── NativeAnimatedInterpolationTest.java
│               │           │   └── NativeAnimatedNodeTraversalTest.java
│               │           ├── bridge/
│               │           │   ├── BUCK
│               │           │   ├── BaseJavaModuleTest.java
│               │           │   ├── FallbackJSBundleLoaderTest.java
│               │           │   ├── JavaOnlyArrayTest.java
│               │           │   ├── JsonWriterTest.java
│               │           │   └── ModuleSpecTest.java
│               │           ├── devsupport/
│               │           │   ├── BUCK
│               │           │   ├── JSDebuggerWebSocketClientTest.java
│               │           │   ├── MultipartStreamReaderTest.java
│               │           │   └── StackTraceHelperTest.java
│               │           ├── modules/
│               │           │   ├── BUCK
│               │           │   ├── camera/
│               │           │   │   └── ImageStoreManagerTest.java
│               │           │   ├── clipboard/
│               │           │   │   └── ClipboardModuleTest.java
│               │           │   ├── dialog/
│               │           │   │   └── DialogModuleTest.java
│               │           │   ├── network/
│               │           │   │   └── NetworkingModuleTest.java
│               │           │   ├── share/
│               │           │   │   └── ShareModuleTest.java
│               │           │   └── timing/
│               │           │       └── TimingModuleTest.java
│               │           ├── packagerconnection/
│               │           │   ├── BUCK
│               │           │   └── JSPackagerClientTest.java
│               │           ├── uimanager/
│               │           │   ├── BUCK
│               │           │   ├── LayoutPropertyApplicatorTest.java
│               │           │   ├── MatrixMathHelperTest.java
│               │           │   ├── ReactPropConstantsTest.java
│               │           │   ├── ReactPropForShadowNodeSetterTest.java
│               │           │   ├── ReactPropForShadowNodeSpecTest.java
│               │           │   ├── UIManagerModuleConstantsTest.java
│               │           │   └── UIManagerModuleTest.java
│               │           └── views/
│               │               ├── BUCK
│               │               ├── image/
│               │               │   ├── ImageResizeModeTest.java
│               │               │   └── ReactImagePropertyTest.java
│               │               ├── slider/
│               │               │   └── ReactSliderPropertyTest.java
│               │               ├── text/
│               │               │   ├── CustomLineHeightSpanTest.java
│               │               │   └── ReactTextTest.java
│               │               └── textinput/
│               │                   ├── ReactTextInputPropertyTest.java
│               │                   └── TextInputTest.java
│               └── org/
│                   └── mockito/
│                       └── configuration/
│                           └── BUCK
├── ReactCommon/
│   ├── DEFS
│   ├── cxxreact/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── CxxModule.h
│   │   ├── CxxNativeModule.cpp
│   │   ├── CxxNativeModule.h
│   │   ├── Instance.cpp
│   │   ├── Instance.h
│   │   ├── JSBigString.cpp
│   │   ├── JSBigString.h
│   │   ├── JSBundleType.cpp
│   │   ├── JSBundleType.h
│   │   ├── JSCExecutor.cpp
│   │   ├── JSCExecutor.h
│   │   ├── JSCLegacyTracing.cpp
│   │   ├── JSCLegacyTracing.h
│   │   ├── JSCMemory.cpp
│   │   ├── JSCMemory.h
│   │   ├── JSCNativeModules.cpp
│   │   ├── JSCNativeModules.h
│   │   ├── JSCPerfStats.cpp
│   │   ├── JSCPerfStats.h
│   │   ├── JSCSamplingProfiler.cpp
│   │   ├── JSCSamplingProfiler.h
│   │   ├── JSCTracing.cpp
│   │   ├── JSCTracing.h
│   │   ├── JSCUtils.cpp
│   │   ├── JSCUtils.h
│   │   ├── JSExecutor.h
│   │   ├── JSIndexedRAMBundle.cpp
│   │   ├── JSIndexedRAMBundle.h
│   │   ├── JSModulesUnbundle.h
│   │   ├── JsArgumentHelpers-inl.h
│   │   ├── JsArgumentHelpers.h
│   │   ├── MessageQueueThread.h
│   │   ├── MethodCall.cpp
│   │   ├── MethodCall.h
│   │   ├── ModuleRegistry.cpp
│   │   ├── ModuleRegistry.h
│   │   ├── NativeModule.h
│   │   ├── NativeToJsBridge.cpp
│   │   ├── NativeToJsBridge.h
│   │   ├── Platform.cpp
│   │   ├── Platform.h
│   │   ├── RAMBundleRegistry.cpp
│   │   ├── RAMBundleRegistry.h
│   │   ├── RecoverableError.h
│   │   ├── SampleCxxModule.cpp
│   │   ├── SampleCxxModule.h
│   │   ├── SharedProxyCxxModule.h
│   │   ├── SystraceSection.h
│   │   ├── oss-compat-util.h
│   │   └── tests/
│   │       ├── BUCK
│   │       ├── RecoverableErrorTest.cpp
│   │       ├── jsarg_helpers.cpp
│   │       ├── jsbigstring.cpp
│   │       ├── jscexecutor.cpp
│   │       ├── jsclogging.cpp
│   │       ├── methodcall.cpp
│   │       └── value.cpp
│   ├── jschelpers/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── JSCHelpers.cpp
│   │   ├── JSCHelpers.h
│   │   ├── JSCWrapper.cpp
│   │   ├── JSCWrapper.h
│   │   ├── JavaScriptCore.h
│   │   ├── Unicode.cpp
│   │   ├── Unicode.h
│   │   ├── Value.cpp
│   │   ├── Value.h
│   │   ├── noncopyable.h
│   │   └── systemJSCWrapper.cpp
│   ├── jsinspector/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── InspectorInterfaces.cpp
│   │   └── InspectorInterfaces.h
│   ├── microprofiler/
│   │   ├── BUCK
│   │   ├── MicroProfiler.cpp
│   │   └── MicroProfiler.h
│   ├── privatedata/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── PrivateDataBase.cpp
│   │   └── PrivateDataBase.h
│   └── yoga/
│       ├── Android.mk
│       ├── BUCK
│       ├── yoga/
│       │   ├── YGEnums.cpp
│       │   ├── YGEnums.h
│       │   ├── YGMacros.h
│       │   ├── YGNode.cpp
│       │   ├── YGNode.h
│       │   ├── YGNodePrint.cpp
│       │   ├── YGNodePrint.h
│       │   ├── Yoga-internal.h
│       │   ├── Yoga.cpp
│       │   └── Yoga.h
│       └── yoga.podspec
├── Releases.md
├── babel-preset/
│   ├── README.md
│   ├── configs/
│   │   ├── hmr.js
│   │   └── main.js
│   ├── index.js
│   ├── lib/
│   │   └── resolvePlugins.js
│   ├── package.json
│   ├── plugins.js
│   └── transforms/
│       └── transform-symbol-member.js
├── blog/
│   ├── 2015-03-26-react-native-bringing-modern-web-techniques-to-mobile.md
│   ├── 2015-09-14-react-native-for-android.md
│   ├── 2015-11-23-making-react-native-apps-accessible.md
│   ├── 2016-03-24-introducing-hot-reloading.md
│   ├── 2016-03-28-dive-into-react-native-performance.md
│   ├── 2016-04-13-react-native-a-year-in-review.md
│   ├── 2016-07-06-toward-better-documentation.md
│   ├── 2016-08-12-react-native-meetup-san-francisco.md
│   ├── 2016-08-19-right-to-left-support-for-react-native-apps.md
│   ├── 2016-09-08-exponent-talks-unraveling-navigation.md
│   ├── 2016-10-25-0.36-headless-js-the-keyboard-api-and-more.md
│   ├── 2016-11-08-introducing-button-yarn-and-a-public-roadmap.md
│   ├── 2016-12-05-easier-upgrades.md
│   ├── 2017-01-07-monthly-release-cadence.md
│   ├── 2017-02-14-using-native-driver-for-animated.md
│   ├── 2017-03-13-better-list-views.md
│   ├── 2017-03-13-idx-the-existential-function.md
│   ├── 2017-03-13-introducing-create-react-native-app.md
│   ├── 2017-06-21-react-native-monthly-1.md
│   ├── 2017-07-28-react-native-monthly-2.md
│   ├── 2017-08-07-react-native-performance-in-marketplace.md
│   ├── 2017-08-30-react-native-monthly-3.md
│   ├── 2017-09-21-react-native-monthly-4.md
│   └── 2017-11-06-react-native-monthly-5.md
├── bots/
│   ├── IssueCommands.txt
│   ├── NewIssueGreeting.md
│   ├── QuestionGreeting.md
│   ├── code-analysis-bot.js
│   ├── pr-inactivity-bookmarklet.js
│   └── question-bookmarklet.js
├── breaking-changes.md
├── build.gradle
├── cli.js
├── danger/
│   ├── .babelrc
│   ├── README.md
│   ├── dangerfile.js
│   └── package.json
├── flow/
│   ├── Map.js
│   ├── Position.js
│   ├── Promise.js
│   ├── Set.js
│   ├── console.js
│   ├── create-react-class.js
│   ├── fbjs.js
│   └── prop-types.js
├── flow-github/
│   └── metro.js
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── jest/
│   ├── .eslintrc
│   ├── assetFileTransformer.js
│   ├── mockComponent.js
│   ├── preprocessor.js
│   └── setup.js
├── jest-preset.json
├── keystores/
│   ├── BUCK
│   ├── debug.keystore
│   └── debug.keystore.properties
├── lib/
│   ├── InitializeJavaScriptAppEngine.js
│   ├── RCTEventEmitter.js
│   ├── README
│   ├── TextInputState.js
│   ├── UIManager.js
│   ├── UIManagerStatTracker.js
│   ├── View.js
│   ├── deepDiffer.js
│   ├── deepFreezeAndThrowOnMutationInDev.js
│   └── flattenStyle.js
├── local-cli/
│   ├── .eslintrc
│   ├── __mocks__/
│   │   ├── beeper.js
│   │   └── fs.js
│   ├── __tests__/
│   │   └── fs-mock-test.js
│   ├── bundle/
│   │   ├── __mocks__/
│   │   │   └── sign.js
│   │   ├── __tests__/
│   │   │   ├── filterPlatformAssetScales-test.js
│   │   │   ├── getAssetDestPathAndroid-test.js
│   │   │   └── getAssetDestPathIOS-test.js
│   │   ├── assetPathUtils.js
│   │   ├── buildBundle.js
│   │   ├── bundle.js
│   │   ├── bundleCommandLineArgs.js
│   │   ├── filterPlatformAssetScales.js
│   │   ├── getAssetDestPathAndroid.js
│   │   ├── getAssetDestPathIOS.js
│   │   ├── saveAssets.js
│   │   ├── types.flow.js
│   │   └── unbundle.js
│   ├── cli.js
│   ├── cliEntry.js
│   ├── commands.js
│   ├── core/
│   │   ├── Constants.js
│   │   ├── __fixtures__/
│   │   │   ├── android.js
│   │   │   ├── commands.js
│   │   │   ├── dependencies.js
│   │   │   ├── files/
│   │   │   │   ├── AndroidManifest-debug.xml
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── Main.java
│   │   │   │   ├── ReactPackage.java
│   │   │   │   ├── ReactPackage.kt
│   │   │   │   ├── package.json
│   │   │   │   └── project.pbxproj
│   │   │   ├── ios.js
│   │   │   └── projects.js
│   │   ├── __tests__/
│   │   │   ├── android/
│   │   │   │   ├── findAndroidAppFolder.spec.js
│   │   │   │   ├── findManifest.spec.js
│   │   │   │   ├── findPackageClassName.spec.js
│   │   │   │   ├── getDependencyConfig.spec.js
│   │   │   │   ├── getProjectConfig.spec.js
│   │   │   │   └── readManifest.spec.js
│   │   │   ├── findAssets.spec.js
│   │   │   ├── findPlugins.spec.js
│   │   │   ├── ios/
│   │   │   │   ├── findPodfilePath.spec.js
│   │   │   │   ├── findPodspecName.spec.js
│   │   │   │   ├── findProject.spec.js
│   │   │   │   └── getProjectConfig.spec.js
│   │   │   └── makeCommand.spec.js
│   │   ├── android/
│   │   │   ├── findAndroidAppFolder.js
│   │   │   ├── findManifest.js
│   │   │   ├── findPackageClassName.js
│   │   │   ├── index.js
│   │   │   └── readManifest.js
│   │   ├── default.config.js
│   │   ├── findAssets.js
│   │   ├── findPlugins.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── findPodfilePath.js
│   │   │   ├── findPodspecName.js
│   │   │   ├── findProject.js
│   │   │   └── index.js
│   │   ├── macos/
│   │   │   ├── findProject.js
│   │   │   └── index.js
│   │   ├── makeCommand.js
│   │   ├── windows/
│   │   │   ├── findNamespace.js
│   │   │   ├── findPackageClassName.js
│   │   │   ├── findProject.js
│   │   │   ├── findWindowsSolution.js
│   │   │   ├── generateGUID.js
│   │   │   └── index.js
│   │   └── wrapCommands.js
│   ├── dependencies/
│   │   └── dependencies.js
│   ├── eject/
│   │   └── eject.js
│   ├── generator/
│   │   ├── copyProjectTemplateAndReplace.js
│   │   ├── printRunInstructions.js
│   │   ├── promptSync.js
│   │   └── templates.js
│   ├── index.js
│   ├── info/
│   │   └── info.js
│   ├── init/
│   │   └── init.js
│   ├── install/
│   │   ├── install.js
│   │   └── uninstall.js
│   ├── library/
│   │   └── library.js
│   ├── link/
│   │   ├── __fixtures__/
│   │   │   ├── Info.plist
│   │   │   ├── android/
│   │   │   │   ├── 0.17/
│   │   │   │   │   ├── MainActivity.java
│   │   │   │   │   └── patchedMainActivity.java
│   │   │   │   ├── 0.18/
│   │   │   │   │   ├── MainActivity.java
│   │   │   │   │   └── patchedMainActivity.java
│   │   │   │   ├── 0.20/
│   │   │   │   │   └── MainActivity.java
│   │   │   │   ├── build.gradle
│   │   │   │   ├── patchedBuild.gradle
│   │   │   │   ├── patchedSettings.gradle
│   │   │   │   └── settings.gradle
│   │   │   ├── linearGradient.pbxproj
│   │   │   ├── pods/
│   │   │   │   ├── PodfileSimple
│   │   │   │   ├── PodfileWithFunction
│   │   │   │   ├── PodfileWithMarkers
│   │   │   │   └── PodfileWithTarget
│   │   │   └── project.pbxproj
│   │   ├── __tests__/
│   │   │   ├── android/
│   │   │   │   ├── applyPatch.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   ├── makeBuildPatch.spec.js
│   │   │   │   ├── makeImportPatch.spec.js
│   │   │   │   ├── makePackagePatch.spec.js
│   │   │   │   ├── makeSettingsPatch.spec.js
│   │   │   │   └── makeStringsPatch.spec.js
│   │   │   ├── getDependencyConfig.spec.js
│   │   │   ├── getProjectDependencies.spec.js
│   │   │   ├── groupFilesByType.spec.js
│   │   │   ├── ios/
│   │   │   │   ├── addFileToProject.spec.js
│   │   │   │   ├── addProjectToLibraries.spec.js
│   │   │   │   ├── addSharedLibraries.spec.js
│   │   │   │   ├── createGroup.spec.js
│   │   │   │   ├── getBuildProperty.spec.js
│   │   │   │   ├── getGroup.spec.js
│   │   │   │   ├── getHeaderSearchPath.spec.js
│   │   │   │   ├── getHeadersInFolder.spec.js
│   │   │   │   ├── getPlist.spec.js
│   │   │   │   ├── getPlistPath.spec.js
│   │   │   │   ├── getProducts.spec.js
│   │   │   │   ├── hasLibraryImported.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   ├── mapHeaderSearchPaths.spec.js
│   │   │   │   ├── removeProjectFromLibraries.js
│   │   │   │   ├── removeProjectFromProject.spec.js
│   │   │   │   ├── removeSharedLibrary.spec.js
│   │   │   │   └── writePlist.spec.js
│   │   │   ├── link.spec.js
│   │   │   ├── pods/
│   │   │   │   ├── findLineToAddPod.spec.js
│   │   │   │   ├── findMarkedLinesInPodfile.spec.js
│   │   │   │   ├── findPodTargetLine.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   └── removePodEntry.spec.js
│   │   │   └── promiseWaterfall.spec.js
│   │   ├── android/
│   │   │   ├── copyAssets.js
│   │   │   ├── fs.js
│   │   │   ├── isInstalled.js
│   │   │   ├── patches/
│   │   │   │   ├── applyParams.js
│   │   │   │   ├── applyPatch.js
│   │   │   │   ├── makeBuildPatch.js
│   │   │   │   ├── makeImportPatch.js
│   │   │   │   ├── makePackagePatch.js
│   │   │   │   ├── makeSettingsPatch.js
│   │   │   │   ├── makeStringsPatch.js
│   │   │   │   └── revokePatch.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── unlinkAssets.js
│   │   │   └── unregisterNativeModule.js
│   │   ├── commandStub.js
│   │   ├── getDependencyConfig.js
│   │   ├── getProjectDependencies.js
│   │   ├── groupFilesByType.js
│   │   ├── ios/
│   │   │   ├── addFileToProject.js
│   │   │   ├── addProjectToLibraries.js
│   │   │   ├── addSharedLibraries.js
│   │   │   ├── addToHeaderSearchPaths.js
│   │   │   ├── copyAssets.js
│   │   │   ├── createGroup.js
│   │   │   ├── createGroupWithMessage.js
│   │   │   ├── getBuildProperty.js
│   │   │   ├── getGroup.js
│   │   │   ├── getHeaderSearchPath.js
│   │   │   ├── getHeadersInFolder.js
│   │   │   ├── getPlist.js
│   │   │   ├── getPlistPath.js
│   │   │   ├── getProducts.js
│   │   │   ├── hasLibraryImported.js
│   │   │   ├── isInstalled.js
│   │   │   ├── mapHeaderSearchPaths.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── removeFromHeaderSearchPaths.js
│   │   │   ├── removeFromPbxItemContainerProxySection.js
│   │   │   ├── removeFromPbxReferenceProxySection.js
│   │   │   ├── removeFromProjectReferences.js
│   │   │   ├── removeFromStaticLibraries.js
│   │   │   ├── removeProductGroup.js
│   │   │   ├── removeProjectFromLibraries.js
│   │   │   ├── removeProjectFromProject.js
│   │   │   ├── removeSharedLibraries.js
│   │   │   ├── unlinkAssets.js
│   │   │   ├── unregisterNativeModule.js
│   │   │   └── writePlist.js
│   │   ├── link.js
│   │   ├── pods/
│   │   │   ├── addPodEntry.js
│   │   │   ├── findLineToAddPod.js
│   │   │   ├── findMarkedLinesInPodfile.js
│   │   │   ├── findPodTargetLine.js
│   │   │   ├── isInstalled.js
│   │   │   ├── readPodfile.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── removePodEntry.js
│   │   │   ├── savePodFile.js
│   │   │   └── unregisterNativeModule.js
│   │   ├── pollParams.js
│   │   ├── promiseWaterfall.js
│   │   ├── promisify.js
│   │   ├── unlink.js
│   │   └── windows/
│   │       ├── isInstalled.js
│   │       ├── patches/
│   │       │   ├── applyParams.js
│   │       │   ├── applyPatch.js
│   │       │   ├── makePackagePatch.js
│   │       │   ├── makeProjectPatch.js
│   │       │   ├── makeSolutionPatch.js
│   │       │   ├── makeUsingPatch.js
│   │       │   └── revokePatch.js
│   │       ├── registerNativeModule.js
│   │       └── unregisterNativeModule.js
│   ├── logAndroid/
│   │   └── logAndroid.js
│   ├── logIOS/
│   │   └── logIOS.js
│   ├── platform.js
│   ├── runAndroid/
│   │   ├── adb.js
│   │   └── runAndroid.js
│   ├── runIOS/
│   │   ├── __tests__/
│   │   │   ├── findMatchingSimulator-test.js
│   │   │   ├── findXcodeProject-test.js
│   │   │   └── parseIOSDevicesList-test.js
│   │   ├── findMatchingSimulator.js
│   │   ├── findXcodeProject.js
│   │   ├── parseIOSDevicesList.js
│   │   └── runIOS.js
│   ├── runMacOS/
│   │   ├── findXcodeProject.js
│   │   └── runMacOS.js
│   ├── server/
│   │   ├── checkNodeVersion.js
│   │   ├── middleware/
│   │   │   ├── copyToClipBoardMiddleware.js
│   │   │   ├── getDevToolsMiddleware.js
│   │   │   ├── getFlowTypeCheckMiddleware.js
│   │   │   ├── index.html
│   │   │   ├── indexPage.js
│   │   │   ├── loadRawBodyMiddleware.js
│   │   │   ├── openStackFrameInEditorMiddleware.js
│   │   │   ├── statusPageMiddleware.js
│   │   │   ├── systraceProfileMiddleware.js
│   │   │   └── unless.js
│   │   ├── runServer.js
│   │   ├── server.js
│   │   └── util/
│   │       ├── attachWebsocketServer.js
│   │       ├── copyToClipBoard.js
│   │       ├── debugger-ui/
│   │       │   ├── DeltaPatcher.js
│   │       │   ├── debuggerWorker.js
│   │       │   ├── deltaUrlToBlobUrl.js
│   │       │   └── index.html
│   │       ├── external/
│   │       │   └── xsel
│   │       ├── jsPackagerClient.js
│   │       ├── launchChrome.js
│   │       ├── launchEditor.js
│   │       ├── messageSocket.js
│   │       └── webSocketProxy.js
│   ├── setup_env.bat
│   ├── setup_env.sh
│   ├── templates/
│   │   ├── HelloNavigation/
│   │   │   ├── App.js
│   │   │   ├── README.md
│   │   │   ├── components/
│   │   │   │   ├── KeyboardSpacer.js
│   │   │   │   └── ListItem.js
│   │   │   ├── dependencies.json
│   │   │   ├── lib/
│   │   │   │   └── Backend.js
│   │   │   └── views/
│   │   │       ├── HomeScreenTabNavigator.js
│   │   │       ├── chat/
│   │   │       │   ├── ChatListScreen.js
│   │   │       │   └── ChatScreen.js
│   │   │       └── welcome/
│   │   │           ├── WelcomeScreen.js
│   │   │           ├── WelcomeText.android.js
│   │   │           └── WelcomeText.ios.js
│   │   ├── HelloWorld/
│   │   │   ├── App.js
│   │   │   ├── __tests__/
│   │   │   │   ├── App.js
│   │   │   │   └── index.macos.js
│   │   │   ├── _babelrc
│   │   │   ├── _flowconfig
│   │   │   ├── _gitattributes
│   │   │   ├── _gitignore
│   │   │   ├── _watchmanconfig
│   │   │   ├── android/
│   │   │   │   └── app/
│   │   │   │       ├── build.gradle
│   │   │   │       └── src/
│   │   │   │           └── main/
│   │   │   │               └── java/
│   │   │   │                   └── com/
│   │   │   │                       └── helloworld/
│   │   │   │                           └── MainApplication.java
│   │   │   ├── index.js
│   │   │   ├── ios/
│   │   │   │   └── HelloWorld/
│   │   │   │       ├── AppDelegate.m
│   │   │   │       └── Images.xcassets/
│   │   │   │           └── Contents.json
│   │   │   ├── macos/
│   │   │   │   ├── HelloWorld/
│   │   │   │   │   ├── AppDelegate.h
│   │   │   │   │   ├── AppDelegate.m
│   │   │   │   │   ├── Images.xcassets/
│   │   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │   │       └── Contents.json
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   └── main.m
│   │   │   │   ├── HelloWorld-tvOS/
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── HelloWorld-tvOSTests/
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── HelloWorld.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           ├── HelloWorld-tvOS.xcscheme
│   │   │   │   │           └── HelloWorld.xcscheme
│   │   │   │   └── HelloWorldTests/
│   │   │   │       ├── HelloWorldTests.m
│   │   │   │       └── Info.plist
│   │   │   └── rn-cli.config.js
│   │   └── README.md
│   ├── upgrade/
│   │   └── upgrade.js
│   ├── util/
│   │   ├── Config.js
│   │   ├── PackageManager.js
│   │   ├── __mocks__/
│   │   │   └── log.js
│   │   ├── __tests__/
│   │   │   └── findSymlinkedModules-test.js
│   │   ├── assertRequiredOptions.js
│   │   ├── copyAndReplace.js
│   │   ├── findReactNativeScripts.js
│   │   ├── findSymlinkedModules.js
│   │   ├── findSymlinksPaths.js
│   │   ├── isPackagerRunning.js
│   │   ├── isValidPackageName.js
│   │   ├── log.js
│   │   ├── parseCommandLine.js
│   │   ├── walk.js
│   │   └── yarn.js
│   └── wrong-react-native.js
├── package.json
├── react-native-git-upgrade/
│   ├── README.md
│   ├── checks.js
│   ├── cli.js
│   ├── cliEntry.js
│   ├── index.js
│   ├── package.json
│   └── yarn.js
├── react-native-macos-cli/
│   ├── index.js
│   └── package.json
├── react.gradle
├── rn-cli.config.js
├── rn-get-polyfills.js
├── runXcodeTests.sh
├── scripts/
│   ├── android-e2e-test.js
│   ├── bump-oss-version.js
│   ├── circle-ci-android-setup.sh
│   ├── e2e-sinopia.config.yml
│   ├── e2e-test.sh
│   ├── ios-configure-glog.sh
│   ├── ios-install-third-party.sh
│   ├── launchPackager.bat
│   ├── launchPackager.command
│   ├── macos-configure-folly.sh
│   ├── macos-configure-glog.sh
│   ├── macos-install-third-party.sh
│   ├── objc-test-ios.sh
│   ├── objc-test-macos.sh
│   ├── objc-test-tvos.sh
│   ├── objc-test.sh
│   ├── packager.sh
│   ├── process-podspecs.sh
│   ├── publish-npm.js
│   ├── react-native-xcode.sh
│   ├── run-android-ci-instrumentation-tests.js
│   ├── run-android-emulator.sh
│   ├── run-android-local-integration-tests.sh
│   ├── run-android-local-unit-tests.sh
│   ├── run-ci-e2e-tests.js
│   ├── run-instrumentation-tests-via-adb-shell.sh
│   ├── sync-css-layout.sh
│   ├── test-manual-e2e.sh
│   ├── try-n-times.js
│   ├── validate-android-device-env.sh
│   ├── validate-android-sdk.sh
│   ├── validate-android-test-env.sh
│   └── versiontemplates/
│       ├── RCTVersion.h.template
│       ├── ReactNativeVersion.java.template
│       └── ReactNativeVersion.js.template
├── settings.gradle
├── setupBabel.js
└── third-party-podspecs/
    ├── DoubleConversion.podspec
    ├── Folly.podspec
    └── GLog.podspec

================================================
FILE CONTENTS
================================================

================================================
FILE: .buckconfig
================================================

[android]
  target = Google Inc.:Google APIs:23

[download]
  max_number_of_retries = 3

[maven_repositories]
  central = https://repo1.maven.org/maven2

[alias]
  rntester = //RNTester/android/app:app


================================================
FILE: .circleci/config.yml
================================================
aliases:
  - &restore-node-cache
    keys:
      - v1-dependencies-{{ arch }}-{{ checksum "package.json" }}
      # Fallback in case checksum fails
      - v1-dependencies-{{ arch }}-

  - &save-node-cache
    paths:
      - node_modules
    key: v1-dependencies-{{ arch }}-{{ checksum "package.json" }}

  - &restore-cache-analysis
    keys:
      - v1-analysis-dependencies-{{ arch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}
      # Fallback in case checksum fails
      - v1-analysis-dependencies-{{ arch }}-
  - &save-cache-analysis
    paths:
      - danger/node_modules
      - node_modules
    key: v1-analysis-dependencies-{{ arch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}

  - &restore-cache-android-packages
    keys:
      - v2-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}
      # Fallback in case checksum fails
      - v2-android-sdkmanager-packages-{{ arch }}-
  - &save-cache-android-packages
    paths:
      - /opt/android/sdk
    key: v2-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}

  - &restore-cache-ndk
    keys:
      - v1-android-ndk-{{ arch }}-r10e-32-64

  - &install-ndk
    |
      source scripts/circle-ci-android-setup.sh && getAndroidNDK

  - &save-cache-ndk
    paths:
      - /opt/ndk
    key: v1-android-ndk-{{ arch }}-r10e-32-64

  - &restore-cache-buck
    keys:
      - v2-buck-{{ arch }}-v2017.11.16.01
  - &save-cache-buck
    paths:
      - ~/buck
    key: v2-buck-{{ arch }}-v2017.11.16.01

  - &restore-cache-watchman
    keys:
      - v1-watchman-{{ arch }}-v4.9.0
  - &save-cache-watchman
    paths:
      - ~/watchman
    key: v1-watchman-{{ arch }}-v4.9.0

  - &install-node-dependencies
    |
      npm install --no-package-lock --no-spin --no-progress

  - &install-buck
    |
      if [[ ! -e ~/buck ]]; then
        git clone https://github.com/facebook/buck.git ~/buck --branch v2017.11.16.01 --depth=1
      fi
      cd ~/buck && ant
      buck --version

  - &install-node
    |
      curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
      sudo apt-get install -y nodejs

  - &run-node-tests
    |
      npm test -- --maxWorkers=2

  - &run-lint-checks
    |
      npm run lint

  - &run-flow-checks
    |
      npm run flow -- check


  - &filter-only-master-stable
    branches:
      only:
        - /.*-stable/
        - master

  - &filter-only-stable
    branches:
      only:
        - /.*-stable/

  - &filter-ignore-gh-pages
    branches:
      ignore: gh-pages

  - &filter-ignore-master-stable
    branches:
      ignore:
        - master
        - /.*-stable/
        - gh-pages

  - &create-ndk-directory
    |
      if [[ ! -e /opt/ndk ]]; then
        sudo mkdir /opt/ndk
      fi
      sudo chown ${USER:=$(/usr/bin/id -run)}:$USER /opt/ndk

  # CircleCI does not support interpolating env variables in the environment
  #  https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables
  - &configure-android-path
    |
      echo 'export PATH=${ANDROID_NDK}:~/react-native/gradle-2.9/bin:~/buck/bin:$PATH' >> $BASH_ENV
      source $BASH_ENV

  - &install-android-packages
    |
      source scripts/circle-ci-android-setup.sh && getAndroidSDK

  - &install-build-dependencies
    |
      sudo apt-get update -y
      sudo apt-get install ant autoconf automake g++ gcc libqt5widgets5 lib32z1 lib32stdc++6  make maven python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev file -y

  - &build-android-app
    name: Build Android App
    command: |
      buck build ReactAndroid/src/main/java/com/facebook/react
      buck build ReactAndroid/src/main/java/com/facebook/react/shell

  - &wait-for-avd
    name: Wait for Android Virtual Device
    command: source scripts/circle-ci-android-setup.sh && waitForAVD

  - &check-js-bundle
    name: Check for JavaScript Bundle
    command: |
      if [[ ! -e ReactAndroid/src/androidTest/assets/AndroidTestBundle.js ]]; then
        echo "JavaScript bundle missing, verify build-js-bundle step"; exit 1;
      else
        echo "JavaScript bundle found.";
      fi

  - &compile-native-libs
    name: Compile Native Libs for Unit and Integration Tests
    command: ./gradlew :ReactAndroid:packageReactNdkLibsForBuck -Pjobs=$BUILD_THREADS -Pcom.android.build.threadPoolSize=1
    no_output_timeout: 6m

  - &run-android-unit-tests
    name: Unit Tests
    command: buck test ReactAndroid/src/test/... --config build.threads=$BUILD_THREADS

  - &run-android-integration-tests
    name: Build and Install Test APK
    command: source scripts/circle-ci-android-setup.sh && NO_BUCKD=1 retry3 buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=$BUILD_THREADS

  - &collect-android-test-results
    name: Collect Test Results
    command: |
      mkdir -p ~/junit/
      find . -type f -regex ".*/build/test-results/debug/.*xml" -exec cp {} ~/junit/ \;
      find . -type f -regex ".*/outputs/androidTest-results/connected/.*xml" -exec cp {} ~/junit/ \;
    when: always

defaults: &defaults
  working_directory: ~/react-native

android_defaults: &android_defaults
  <<: *defaults
  docker:
    - image: circleci/android:api-26-alpha
  resource_class: "large"
  environment:
    - TERM: "dumb"
    - ADB_INSTALL_TIMEOUT: 10
    - _JAVA_OPTIONS: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"
    - GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-XX:+HeapDumpOnOutOfMemoryError"'
    - ANDROID_NDK: '/opt/ndk/android-ndk-r10e'
    - BUILD_THREADS: 2

version: 2
jobs:
  # Runs JavaScript lint and flow checks
  run-js-checks:
    <<: *defaults
    docker:
      - image: circleci/node:8
    steps:
      - checkout
      - restore-cache: *restore-node-cache
      - run: *install-node-dependencies
      - save-cache: *save-node-cache
      - run: *run-lint-checks
      - run: *run-flow-checks

  # Runs JavaScript tests on Node 8
  test-js-node-8:
    <<: *defaults
    docker:
      - image: circleci/node:8
    steps:
      - checkout
      - restore-cache: *restore-node-cache
      - run: *install-node-dependencies
      - save-cache: *save-node-cache
      - run: *run-node-tests

  # Runs JavaScript tests on Node 6
  test-js-node-6:
    <<: *defaults
    docker:
      - image: circleci/node:6
    steps:
      - checkout
      - restore-cache: *restore-node-cache
      - run: *install-node-dependencies
      - save-cache: *save-node-cache
      - run: *run-node-tests

  # Runs unit tests on iOS devices
  test-objc-ios:
    <<: *defaults
    macos:
      xcode: "9.0"
    dependencies:
      pre:
        - xcrun instruments -w "iPhone 5s (10.3.1)" || true
    steps:
      - checkout
      - restore-cache: *restore-node-cache
      - run: *install-node-dependencies
      - save-cache: *save-node-cache
      - run: ./scripts/objc-test-ios.sh

  # Runs end to end tests
  test-objc-e2e:
    <<: *defaults
    macos:
      xcode: "9.0"
    dependencies:
      pre:
        - xcrun instruments -w "iPhone 5s (10.3.1)" || true
    steps:
      - checkout
      - restore-cache: *restore-node-cache
      - run: *install-node-dependencies
      - save-cache: *save-node-cache
      - run: node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3;

  # # Checks podspec
  # test-podspec:
  #   <<: *defaults
  #   macos:
  #     xcode: "9.0"
  #   steps:
  #     - checkout
  #     - restore-cache: *restore-node-cache
  #     - run: *install-node-dependencies
  #     - save-cache: *save-node-cache
  #     - run: ./scripts/process-podspecs.sh
  #
  # # Publishes new version onto npm
  # deploy:
  #   <<: *android_defaults
  #   steps:
  #     - checkout
  #
  #     # Configure Android dependencies
  #     - run: *configure-android-path
  #     - run: *install-build-dependencies
  #     - restore-cache: *restore-cache-android-packages
  #     - run: *install-android-packages
  #     - save-cache: *save-cache-android-packages
  #     - run: *create-ndk-directory
  #     - restore-cache: *restore-cache-ndk
  #     - run: *install-ndk
  #     - save-cache: *save-cache-ndk
  #     - restore-cache: *restore-cache-buck
  #     - run: *install-buck
  #     - save-cache: *save-cache-buck
  #     - run: *install-node
  #     - restore-cache: *restore-node-cache
  #     - run: *install-node-dependencies
  #     - save-cache: *save-node-cache
  #     - run: buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
  #     - run: buck fetch ReactAndroid/src/main/java/com/facebook/react
  #     - run: buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
  #     - run: buck fetch ReactAndroid/src/test/...
  #     - run: buck fetch ReactAndroid/src/androidTest/...
  #     - run: ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
  #
  #     - run:
  #         name: Publish React Native Package
  #         command: |
  #           if [ -z "$CIRCLE_PULL_REQUEST" ]; then
  #             echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc
  #             git config --global user.email "reactjs-bot@users.noreply.github.com"
  #             git config --global user.name "npm Deployment Script"
  #             echo "machine github.com login reactjs-bot password $GITHUB_TOKEN" > ~/.netrc
  #             node ./scripts/publish-npm.js
  #           else
  #             echo "Skipping deploy."
  #           fi

# Workflows enables us to run multiple jobs in parallel
workflows:
  version: 2

  build:
    jobs:

      # Run lint and flow checks
      - run-js-checks:
          filters: *filter-ignore-gh-pages

      # Test JavaScript on Node 8 and 6
      - test-js-node-8:
          filters: *filter-ignore-gh-pages
      - test-js-node-6:
          filters: *filter-ignore-gh-pages

      # Test iOS & tvOS
      - test-objc-ios:
          filters: *filter-ignore-gh-pages
      - test-objc-e2e:
          filters: *filter-ignore-gh-pages

      # # If we are on a stable branch, deploy to `npm`
      # - hold:
      #     type: approval
      # - deploy:
      #     filters: *filter-only-stable
      #     requires:
      #       - hold

      - analyze-pull-request:
          filters: *filter-ignore-master-stable


================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2

[*.gradle]
indent_size = 4


================================================
FILE: .eslintignore
================================================
# node_modules ignored by default

**/staticBundle.js
**/main.js
Libraries/vendor/**/*
Libraries/Renderer/*
pr-inactivity-bookmarklet.js
question-bookmarklet.js
flow/
danger/


================================================
FILE: .eslintrc
================================================
{
  "root": true,

  "parser": "babel-eslint",

  "ecmaFeatures": {
    "jsx": true
  },

  "env": {
    "es6": true,
    "jest": true,
  },

  "plugins": [
    "eslint-comments",
    "flowtype",
    "prettier",
    "react",
    "jest"
  ],

  // Map from global var to bool specifying if it can be redefined
  "globals": {
    "__DEV__": true,
    "__dirname": false,
    "__fbBatchedBridgeConfig": false,
    "alert": false,
    "cancelAnimationFrame": false,
    "cancelIdleCallback": false,
    "clearImmediate": true,
    "clearInterval": false,
    "clearTimeout": false,
    "console": false,
    "document": false,
    "escape": false,
    "Event": false,
    "EventTarget": false,
    "exports": false,
    "fetch": false,
    "FormData": false,
    "global": false,
    "jest": false,
    "Map": true,
    "module": false,
    "navigator": false,
    "process": false,
    "Promise": true,
    "requestAnimationFrame": true,
    "requestIdleCallback": true,
    "require": false,
    "Set": true,
    "setImmediate": true,
    "setInterval": false,
    "setTimeout": false,
    "window": false,
    "XMLHttpRequest": false,
    "pit": false
  },

  "rules": {
  // General

    // This must be disallowed in this repo because the minimum supported
    // version of node is 4 which doesn't support trailing commas.
    // Once the minimum supported version is 8 or greater this can be changed
    "comma-dangle": [2, {            // disallow trailing commas in object literals
        "arrays": "ignore",
        "objects": "ignore",
        "imports": "ignore",
        "exports": "ignore",
        "functions": "never"
    }],

    "no-cond-assign": 1,             // disallow assignment in conditional expressions
    "no-console": 0,                 // disallow use of console (off by default in the node environment)
    "no-const-assign": 2,            // disallow assignment to const-declared variables
    "no-constant-condition": 0,      // disallow use of constant expressions in conditions
    "no-control-regex": 1,           // disallow control characters in regular expressions
    "no-debugger": 1,                // disallow use of debugger
    "no-dupe-keys": 2,               // disallow duplicate keys when creating object literals
    "no-empty": 0,                   // disallow empty statements
    "no-ex-assign": 1,               // disallow assigning to the exception in a catch block
    "no-extra-boolean-cast": 1,      // disallow double-negation boolean casts in a boolean context
    "no-extra-parens": 0,            // disallow unnecessary parentheses (off by default)
    "no-extra-semi": 1,              // disallow unnecessary semicolons
    "no-func-assign": 1,             // disallow overwriting functions written as function declarations
    "no-inner-declarations": 0,      // disallow function or variable declarations in nested blocks
    "no-invalid-regexp": 1,          // disallow invalid regular expression strings in the RegExp constructor
    "no-negated-in-lhs": 1,          // disallow negation of the left operand of an in expression
    "no-obj-calls": 1,               // disallow the use of object properties of the global object (Math and JSON) as functions
    "no-regex-spaces": 1,            // disallow multiple spaces in a regular expression literal
    "no-reserved-keys": 0,           // disallow reserved words being used as object literal keys (off by default)
    "no-sparse-arrays": 1,           // disallow sparse arrays
    "no-unreachable": 2,             // disallow unreachable statements after a return, throw, continue, or break statement
    "use-isnan": 1,                  // disallow comparisons with the value NaN
    "valid-jsdoc": 0,                // Ensure JSDoc comments are valid (off by default)
    "valid-typeof": 1,               // Ensure that the results of typeof are compared against a valid string

  // Best Practices
  // These are rules designed to prevent you from making mistakes. They either prescribe a better way of doing something or help you avoid footguns.

    "block-scoped-var": 0,           // treat var statements as if they were block scoped (off by default)
    "complexity": 0,                 // specify the maximum cyclomatic complexity allowed in a program (off by default)
    "consistent-return": 0,          // require return statements to either always or never specify values
    "curly": 1,                      // specify curly brace conventions for all control statements
    "default-case": 0,               // require default case in switch statements (off by default)
    "dot-notation": 1,               // encourages use of dot notation whenever possible
    "eqeqeq": [1, "allow-null"],     // require the use of === and !==
    "guard-for-in": 0,               // make sure for-in loops have an if statement (off by default)
    "no-alert": 1,                   // disallow the use of alert, confirm, and prompt
    "no-caller": 1,                  // disallow use of arguments.caller or arguments.callee
    "no-div-regex": 1,               // disallow division operators explicitly at beginning of regular expression (off by default)
    "no-else-return": 0,             // disallow else after a return in an if (off by default)
    "no-eq-null": 0,                 // disallow comparisons to null without a type-checking operator (off by default)
    "no-eval": 2,                    // disallow use of eval()
    "no-extend-native": 1,           // disallow adding to native types
    "no-extra-bind": 1,              // disallow unnecessary function binding
    "no-fallthrough": 1,             // disallow fallthrough of case statements
    "no-floating-decimal": 1,        // disallow the use of leading or trailing decimal points in numeric literals (off by default)
    "no-implied-eval": 1,            // disallow use of eval()-like methods
    "no-labels": 1,                  // disallow use of labeled statements
    "no-iterator": 1,                // disallow usage of __iterator__ property
    "no-lone-blocks": 1,             // disallow unnecessary nested blocks
    "no-loop-func": 0,               // disallow creation of functions within loops
    "no-multi-str": 0,               // disallow use of multiline strings
    "no-native-reassign": 0,         // disallow reassignments of native objects
    "no-new": 1,                     // disallow use of new operator when not part of the assignment or comparison
    "no-new-func": 2,                // disallow use of new operator for Function object
    "no-new-wrappers": 1,            // disallows creating new instances of String,Number, and Boolean
    "no-octal": 1,                   // disallow use of octal literals
    "no-octal-escape": 1,            // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251";
    "no-proto": 1,                   // disallow usage of __proto__ property
    "no-redeclare": 0,               // disallow declaring the same variable more then once
    "no-return-assign": 1,           // disallow use of assignment in return statement
    "no-script-url": 1,              // disallow use of javascript: urls.
    "no-self-compare": 1,            // disallow comparisons where both sides are exactly the same (off by default)
    "no-sequences": 1,               // disallow use of comma operator
    "no-unused-expressions": 0,      // disallow usage of expressions in statement position
    "no-void": 1,                    // disallow use of void operator (off by default)
    "no-warning-comments": 0,        // disallow usage of configurable warning terms in comments": 1,                        // e.g. TODO or FIXME (off by default)
    "no-with": 1,                    // disallow use of the with statement
    "radix": 1,                      // require use of the second argument for parseInt() (off by default)
    "semi-spacing": 1,	             // require a space after a semi-colon
    "vars-on-top": 0,                // requires to declare all vars on top of their containing scope (off by default)
    "wrap-iife": 0,                  // require immediate function invocation to be wrapped in parentheses (off by default)
    "yoda": 1,                       // require or disallow Yoda conditions

  // Variables
  // These rules have to do with variable declarations.

    "no-catch-shadow": 1,            // disallow the catch clause parameter name being the same as a variable in the outer scope (off by default in the node environment)
    "no-delete-var": 1,              // disallow deletion of variables
    "no-label-var": 1,               // disallow labels that share a name with a variable
    "no-shadow": 1,                  // disallow declaration of variables already declared in the outer scope
    "no-shadow-restricted-names": 1, // disallow shadowing of names such as arguments
    "no-undef": 2,                   // disallow use of undeclared variables unless mentioned in a /*global */ block
    "no-undefined": 0,               // disallow use of undefined variable (off by default)
    "no-undef-init": 1,              // disallow use of undefined when initializing variables
    "no-unused-vars": [1, {"vars": "all", "args": "none"}], // disallow declaration of variables that are not used in the code
    "no-use-before-define": 0,       // disallow use of variables before they are defined

  // Node.js
  // These rules are specific to JavaScript running on Node.js.

    "handle-callback-err": 1,        // enforces error handling in callbacks (off by default) (on by default in the node environment)
    "no-mixed-requires": 1,          // disallow mixing regular variable and require declarations (off by default) (on by default in the node environment)
    "no-new-require": 1,             // disallow use of new operator with the require function (off by default) (on by default in the node environment)
    "no-path-concat": 1,             // disallow string concatenation with __dirname and __filename (off by default) (on by default in the node environment)
    "no-process-exit": 0,            // disallow process.exit() (on by default in the node environment)
    "no-restricted-modules": 1,      // restrict usage of specified node modules (off by default)
    "no-sync": 0,                    // disallow use of synchronous methods (off by default)

  // ESLint Comments Plugin
  // The following rules are made available via `eslint-plugin-eslint-comments`
    'eslint-comments/no-aggregating-enable': 1, // disallows eslint-enable comments for multiple eslint-disable comments
    'eslint-comments/no-unlimited-disable': 1, // disallows eslint-disable comments without rule names
    'eslint-comments/no-unused-disable': 1, // disallow disables that don't cover any errors
    'eslint-comments/no-unused-enable': 1, // // disallow enables that don't enable anything or enable rules that weren't disabled

  // Flow Plugin
  // The following rules are made available via `eslint-plugin-flowtype`
    "flowtype/define-flow-type": 1,
    "flowtype/use-flow-type": 1,

  // Prettier Plugin
  // https://github.com/prettier/eslint-plugin-prettier
    "prettier/prettier": [2, "fb", "@format"],

  // Stylistic Issues
  // These rules are purely matters of style and are quite subjective.

    "key-spacing": 0,
    "keyword-spacing": 1,            // enforce spacing before and after keywords
    "jsx-quotes": [1, "prefer-double"], // enforces the usage of double quotes for all JSX attribute values which doesn’t contain a double quote
    "comma-spacing": 0,
    "no-multi-spaces": 0,
    "brace-style": 0,                // enforce one true brace style (off by default)
    "camelcase": 0,                  // require camel case names
    "consistent-this": 1,            // enforces consistent naming when capturing the current execution context (off by default)
    "eol-last": 1,                   // enforce newline at the end of file, with no multiple empty lines
    "func-names": 0,                 // require function expressions to have a name (off by default)
    "func-style": 0,                 // enforces use of function declarations or expressions (off by default)
    "new-cap": 0,                    // require a capital letter for constructors
    "new-parens": 1,                 // disallow the omission of parentheses when invoking a constructor with no arguments
    "no-nested-ternary": 0,          // disallow nested ternary expressions (off by default)
    "no-array-constructor": 1,       // disallow use of the Array constructor
    'no-empty-character-class': 1,   // disallow the use of empty character classes in regular expressions
    "no-lonely-if": 0,               // disallow if as the only statement in an else block (off by default)
    "no-new-object": 1,              // disallow use of the Object constructor
    "no-spaced-func": 1,             // disallow space between function identifier and application
    "no-ternary": 0,                 // disallow the use of ternary operators (off by default)
    "no-trailing-spaces": 1,         // disallow trailing whitespace at the end of lines
    "no-underscore-dangle": 0,       // disallow dangling underscores in identifiers
    "no-mixed-spaces-and-tabs": 1,   // disallow mixed spaces and tabs for indentation
    "quotes": [1, "single", "avoid-escape"], // specify whether double or single quotes should be used
    "quote-props": 0,                // require quotes around object literal property names (off by default)
    "semi": 1,                       // require or disallow use of semicolons instead of ASI
    "sort-vars": 0,                  // sort variables within the same declaration block (off by default)
    "space-in-brackets": 0,          // require or disallow spaces inside brackets (off by default)
    "space-in-parens": 0,            // require or disallow spaces inside parentheses (off by default)
    "space-infix-ops": 1,            // require spaces around operators
    "space-unary-ops": [1, { "words": true, "nonwords": false }], // require or disallow spaces before/after unary operators (words on by default, nonwords off by default)
    "max-nested-callbacks": 0,       // specify the maximum depth callbacks can be nested (off by default)
    "one-var": 0,                    // allow just one var statement per function (off by default)
    "wrap-regex": 0,                 // require regex literals to be wrapped in parentheses (off by default)

  // Legacy
  // The following rules are included for compatibility with JSHint and JSLint. While the names of the rules may not match up with the JSHint/JSLint counterpart, the functionality is the same.

    "max-depth": 0,                  // specify the maximum depth that blocks can be nested (off by default)
    "max-len": 0,                    // specify the maximum length of a line in your program (off by default)
    "max-params": 0,                 // limits the number of parameters that can be used in the function declaration. (off by default)
    "max-statements": 0,             // specify the maximum number of statement allowed in a function (off by default)
    "no-bitwise": 1,                 // disallow use of bitwise operators (off by default)
    "no-plusplus": 0,                // disallow use of unary operators, ++ and -- (off by default)

  // React Plugin
  // The following rules are made available via `eslint-plugin-react`.

    "react/display-name": 0,
    "react/jsx-boolean-value": 0,
    "react/jsx-no-comment-textnodes": 1,
    "react/jsx-no-duplicate-props": 2,
    "react/jsx-no-undef": 2,
    "react/jsx-sort-props": 0,
    "react/jsx-uses-react": 1,
    "react/jsx-uses-vars": 1,
    "react/no-did-mount-set-state": 1,
    "react/no-did-update-set-state": 1,
    "react/no-multi-comp": 0,
    "react/no-string-refs": 1,
    "react/no-unknown-property": 0,
    "react/prop-types": 0,
    "react/react-in-jsx-scope": 1,
    "react/self-closing-comp": 1,
    "react/wrap-multilines": 0,

  // Jest Plugin
  // The following rules are made available via `eslint-plugin-jest`.
    "jest/no-disabled-tests": 1,
    "jest/no-focused-tests": 1,
    "jest/no-identical-title": 1,
    "jest/valid-expect": 1,
  }
}


================================================
FILE: .flowconfig
================================================
[ignore]
; We fork some components by platform
.*/*[.]android.js
.*/*[.]ios.js

; Ignore templates for 'react-native init'
.*/local-cli/templates/.*

; Ignore the Dangerfile
<PROJECT_ROOT>/danger/dangerfile.js

; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/

; Ignore unexpected extra "@providesModule"
.*/node_modules/.*/node_modules/fbjs/.*

; Ignore duplicate module providers
; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js

; Ignore polyfills
.*/Libraries/polyfills/.*

; Ignore metro
.*/node_modules/metro/.*

[include]

[libs]
Libraries/react-native/react-native-interface.js
flow/
flow-github/

[options]
emoji=true

module.system=haste

munge_underscores=true

module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
module.name_mapper='react-native' -> 'react-native-macos'

suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState

suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*[react_native_oss|react_native_fb][a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*[react_native_oss|react_native_fb][a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError

[version]
^0.66.0


================================================
FILE: .gitattributes
================================================
# Force LF line endings for Bash scripts.   On Windows the rest of the source
# files will typically have CR+LF endings (Git default on Windows), but Bash
# scripts need to have LF endings to work (under Cygwin), thus override to force
# that.
gradlew text eol=lf
*.sh text eol=lf


================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: 🐛 Bug report
labels: "bug"
about: Create a report to help us improve
---

## 🐛 Bug Report

(A clear and concise description of what the bug is.)

## To Reproduce

Steps to reproduce the behavior:

## Expected Behavior

(A clear and concise description of what you expected to happen.)

## Minimal Reproduction

(For bugs that cannot be reproduced within RNTester, please provide a [minimal](https://stackoverflow.com/help/mcve) repository.)

## Environment

- macOS v10.x.x
- react-native-macos v0.x.x


================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: 🚀 Feature Proposal
labels: "proposal"
about: Submit a proposal for a new feature
---

## 🚀 Feature Proposal

(A clear and concise description of what the feature is.)

## Motivation

(Please outline the motivation for the proposal.)

## Example

(Please provide an example for how this feature would be used.)


================================================
FILE: .gitignore
================================================
# Xcode
!**/*.xcodeproj
!**/*.pbxproj
!**/*.xcworkspacedata
!**/*.xcsettings
!**/*.xcscheme
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace

# Gradle
/build/
/RNTester/android/app/build/
/RNTester/android/app/gradle/
/RNTester/android/app/gradlew
/RNTester/android/app/gradlew.bat
/ReactAndroid/build/

# Buck
.buckd
buck-out
/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/
/ReactAndroid/src/main/jni/prebuilt/lib/x86/
/ReactAndroid/src/main/gen

# Android
.idea
.gradle
local.properties
*.iml
/android/

# Node
node_modules
*.log
.nvm
/danger/node_modules/

# OS X
.DS_Store
*.tgz

# Test generated files
/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js
*.js.meta

/coverage
/third-party


================================================
FILE: .npmignore
================================================
# rnpm
/local-cli/rnpm
/local-cli/server/middleware/heapCapture/bundle.js


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# [Open Source Code of Conduct](https://code.facebook.com/codeofconduct)

This code of conduct outlines our expectations for participants within the **Facebook Open Source** community, as well as steps to reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored. Anyone who violates this code of conduct may be banned from the community.

Our open source community strives to:

* **Be friendly and patient.**
* **Be welcoming:** We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.
* **Be considerate:** Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we’re a world-wide community, so you might not be communicating in someone else’s primary language.
* **Be respectful:** Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.
* **Be careful in the words that you choose:** we are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren’t acceptable. This includes, but is not limited to:
  * Violent threats or language directed against another person.
  * Discriminatory jokes and language.
  * Posting sexually explicit or violent material.
  * Posting (or threatening to post) other people’s personally identifying information (“doxing”).
  * Personal insults, especially those using racist or sexist terms.
  * Unwelcome sexual attention.
  * Advocating for, or encouraging, any of the above behavior.
  * Repeated harassment of others. In general, if someone asks you to stop, then stop.
* **When we disagree, try to understand why:** Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively.
* **Remember that we’re different.** The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.

This code is not exhaustive or complete. It serves to distill our common understanding of a collaborative, shared environment, and goals. We expect it to be followed in spirit as much as in the letter.

## Diversity Statement

We encourage everyone to participate and are committed to building a community for all. Although we may not be able to satisfy everyone, we all agree that everyone is equal. Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.

Although this list cannot be exhaustive, we explicitly honor diversity in age, gender, gender identity or expression, culture, ethnicity, language, national origin, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected characteristics above, including participants with disabilities.

## Reporting Issues

If you experience or witness unacceptable behavior—or have any other concerns—please report it by contacting us via opensource@fb.com. All reports will be handled with discretion. In your report please include:

* Your contact information.
* Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional witnesses, please include them as well. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g. a mailing list archive or a public IRC logger), please include a link.
* Any additional information that may be helpful.

After filing a report, a representative will contact you personally. If the person who is harassing you is part of the response team, they will recuse themselves from handling your incident. A representative will then review the incident, follow up with any additional questions, and make a decision as to how to respond. We will respect confidentiality requests for the purpose of protecting victims of abuse.

Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the representative may take any action they deem appropriate, up to and including a permanent ban from our community without warning.

_This Code Of Conduct follows the [template](http://todogroup.org/opencodeofconduct/) established by the [TODO Group](http://todogroup.org/)._


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to React Native

<!-- generated_contributing_start -->
React Native is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody using Facebook's mobile apps. If you're interested in contributing to React Native, hopefully this document makes the process for contributing clear.

## [Code of Conduct](https://code.facebook.com/codeofconduct)

Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.facebook.com/codeofconduct) so that you can understand what actions will and will not be tolerated.

## Get involved

There are many ways to contribute to React Native, and many of them do not involve writing any code. Here's a few ideas to get started:

* Simply start using React Native. Go through the [Getting Started](https://facebook.github.io/react-native/docs/getting-started.html) guide. Does everything work as expected? If not, we're always looking for improvements. Let us know by [opening an issue](https://facebook.github.io/react-native/docs/contributing.html#reporting-new-issues).
* Look through the [open issues](https://github.com/facebook/react-native/issues). Provide workarounds, ask for clarification, or suggest labels. Help [triage issues](https://facebook.github.io/react-native/docs/contributing.html#triaging-issues-and-pull-requests).
* If you find an issue you would like to fix, [open a pull request](https://facebook.github.io/react-native/docs/contributing.html#your-first-pull-request). Issues tagged as [_Good first issue_](https://github.com/facebook/react-native/labels/Good%20first%20issue) are a good place to get started.
* Read through the [React Native docs](https://facebook.github.io/react-native/docs/getting-started.html). If you find anything that is confusing or can be improved, you can make edits by clicking "Improve this page" at the bottom of most docs.
* Browse [Stack Overflow](https://stackoverflow.com/questions/tagged/react-native) and answer questions. This will help you get familiarized with common pitfalls or misunderstandings, which can be useful when contributing updates to the documentation.
* Take a look at the [features requested](https://react-native.canny.io/feature-requests) by others in the community and consider opening a pull request if you see something you want to work on.

Contributions are very welcome. If you think you need help planning your contribution, please hop into [#react-native](https://discord.gg/0ZcbPKXt5bZjGY5n) and let people know you're looking for a mentor.

Core contributors to React Native meet monthly and post their meeting notes on the [React Native blog](https://facebook.github.io/react-native/blog). You can also find ad hoc discussions in the [React Native Core Contributors](https://www.facebook.com/groups/reactnativeoss/) Facebook group.

### Triaging issues and pull requests

One great way you can contribute to the project without writing any code is to help triage issues and pull requests as they come in.

* Ask for more information if the issue does not provide all the details required by the template.
* Suggest [labels](https://github.com/facebook/react-native/labels) that can help categorize issues.
* Flag issues that are stale or that should be closed.
* Ask for test plans and review code.

You can learn more about handling issues in the [maintainer's guide](docs/maintainers.html#handling-issues).

## Our development process

Some of the core team will be working directly on [GitHub](https://github.com/facebook/react-native). These changes will be public from the beginning. Other changesets will come via a bridge with Facebook's internal source control. This is a necessity as it allows engineers at Facebook outside of the core team to move fast and contribute from an environment they are comfortable in.

When a change made on GitHub is approved, it will first be imported into Facebook's internal source control. The change will eventually sync back to GitHub as a single commit once it has passed all internal tests.

### Branch organization

We will do our best to keep `master` in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We will do our best to [communicate these changes](https://github.com/facebook/react-native/releases) and version appropriately so you can lock into a specific version if need be.

To see what changes are coming and provide better feedback to React Native contributors, use the [latest release candidate](https://facebook.github.io/react-native/versions.html) when possible. By the time a release candidate is released, the changes it contains will have been shipped in production Facebook apps for over two weeks.

## Bugs

We use [GitHub Issues](https://github.com/facebook/react-native/issues) for our public bugs. If you would like to report a problem, take a look around and see if someone already opened an issue about it. If you a are certain this is a new, unreported bug, you can submit a [bug report](https://facebook.github.io/react-native/docs/contributing.html#reporting-new-issues).

If you have questions about using React Native, the [Community page](https://facebook.github.io/react-native/help.html) list various resources that should help you get started.

We also have a [place where you can request features or enhancements](https://react-native.canny.io/feature-requests). If you see anything you'd like to be implemented, vote it up and explain your use case.

## Reporting new issues

When [opening a new issue](https://github.com/facebook/react-native/issues/new), always make sure to fill out the [issue template](https://raw.githubusercontent.com/facebook/react-native/master/.github/ISSUE_TEMPLATE.md). **This step is very important!** Not doing so may result in your issue getting closed. Don't take this personally if this happens, and feel free to open a new issue once you've gathered all the information required by the template.

* **One issue, one bug:** Please report a single bug per issue.
* **Provide a Snack:** The best way to get attention on your issue is to provide a reduced test case. You can use [Snack](https://snack.expo.io/) to demonstrate the issue.
* **Provide reproduction steps:** List all the steps necessary to reproduce the issue. Provide a Snack or upload a sample project to GitHub. The person reading your bug report should be able to follow these steps to reproduce your issue with minimal effort.
* **Try out the latest version:** Verify that the issue can be reproduced locally by updating your project to use [React Native from `master`](https://facebook.github.io/react-native/versions.html). The bug may have already been fixed!

We're not able to provide support through GitHub Issues. If you're looking for help with your code, consider asking on [Stack Overflow](https://stackoverflow.com/questions/tagged/react-native) or reaching out to the community through [other channels](https://facebook.github.io/react-native/support.html).

### Security bugs

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page.

## Pull requests

### Your first pull request

So you have decided to contribute code back to upstream by opening a pull request. You've invested a good chunk of time, and we appreciate it. We will do our best to work with you and get the PR looked at.

Working on your first Pull Request? You can learn how from this free video series:

[**How to Contribute to an Open Source Project on GitHub**](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)

We have a list of [beginner friendly issues](https://github.com/facebook/react-native/labels/Good%20First%20Task) to help you get your feet wet in the React Native codebase and familiar with our contribution process. This is a great place to get started.

### Proposing a change

If you would like to request a new feature or enhancement but are not yet thinking about opening a pull request, we have a [place to track feature requests](https://react-native.canny.io/feature-requests).

If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend [filing an issue](https://github.com/facebook/react-native/issues/new?title=%5BProposal%5D) that includes `[Proposal]` in the title. This lets us reach an agreement on your proposal before you put significant effort into it. These types of issues should be rare. If you have been contributing to the project long enough, you will probably already have access to the [React Native Core Contributors](https://www.facebook.com/groups/reactnativeoss/) Facebook Group, where this sort of discussion is usually held.

If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.

### Sending a pull request

Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it.

Please make sure the following is done when submitting a pull request:

1. Fork [the repository](https://github.com/facebook/react-native) and create your branch from `master`.
2. Add the copyright notice to the top of any new files you've added.
3. Describe your [**test plan**](https://facebook.github.io/react-native/docs/contributing.html#test-plan) in your pull request description. Make sure to [test your changes](https://facebook.github.io/react-native/docs/testing.html)!
4. Make sure your code lints (`npm run lint`).
5. If you haven't already, [sign the CLA](https://code.facebook.com/cla).

All pull requests should be opened against the `master` branch. After opening your pull request, ensure [**all tests pass**](https://facebook.github.io/react-native/docs/contributing.html#contrinuous-integration-tests) on Circle CI. If a test fails and you believe it is unrelated to your change, leave a comment on the pull request explaining why.

> **Note:** It is not necessary to keep clicking `Merge master to your branch` on the PR page. You would want to merge master if there are conflicts or tests are failing. The Facebook-GitHub-Bot ultimately squashes all commits to a single one before merging your PR.

#### Test plan

A good test plan has the exact commands you ran and their output, provides screenshots or videos if the pull request changes UI.

* If you've added code that should be tested, add tests!
* If you've changed APIs, update the documentation.

See [What is a Test Plan?](https://medium.com/@martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9) to learn more.

#### Continuous integration tests

Make sure all **tests pass** on [Circle CI][circle]. PRs that break tests are unlikely to be merged. Learn more about [testing your changes here](https://facebook.github.io/react-native/docs/testing.html).

[circle]: https://circleci.com/gh/facebook/react-native

#### Breaking changes

When adding a new breaking change, follow this template in your pull request:

```
### New breaking change here

* **Who does this affect**:
* **How to migrate**:
* **Why make this breaking change**:
* **Severity (number of people affected x effort)**:
```

If your pull request is merged, a core contributor will update the [list of breaking changes](https://github.com/facebook/react-native/wiki/Breaking-Changes) which is then used to populate the release notes.

#### Copyright Notice for files

Copy and paste this to the top of your new file(s):

```JS
/**
 * Copyright (c) 2015-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.
 */
```

If you've added a new module, add a `@providesModule <moduleName>` at the end of the comment. This will allow the haste package manager to find it.

#### Contributor License Agreement (CLA)

In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, the Facebook GitHub Bot will reply with a link to the CLA form. You may also [complete your CLA here](https://code.facebook.com/cla).

### What happens next?

The core team will be monitoring for pull requests. Read [what to expect from maintainers](https://facebook.github.io/react-native/docs/maintainers.html#handling-pull-requests) to understand what may happen after you open a pull request.

## Style Guide

Our linter will catch most styling issues that may exist in your code. You can check the status of your code styling by simply running `npm run lint`.

However, there are still some styles that the linter cannot pick up.

### Code Conventions

#### General

* **Most important: Look around.** Match the style you see used in the rest of the project. This includes formatting, naming things in code, naming things in documentation.
* Add trailing commas,
* 2 spaces for indentation (no tabs)
* "Attractive"

#### JavaScript

* Use semicolons;
* ES6 standards
* Prefer `'` over `"`
* Do not use the optional parameters of `setTimeout` and `setInterval`
* 80 character line length

#### JSX

* Prefer `"` over `'` for string literal props
* When wrapping opening tags over multiple lines, place one prop per line
* `{}` of props should hug their values (no spaces)
* Place the closing `>` of opening tags on the same line as the last prop
* Place the closing `/>` of self-closing tags on their own line and left-align them with the opening `<`

#### Objective-C

* Space after `@property` declarations
* Brackets on *every* `if`, on the *same* line
* `- method`, `@interface`, and `@implementation` brackets on the following line
* *Try* to keep it around 80 characters line length (sometimes it's just not possible...)
* `*` operator goes with the variable name (e.g. `NSObject *variableName;`)

#### Java

* If a method call spans multiple lines closing bracket is on the same line as the last argument.
* If a method header doesn't fit on one line each argument goes on a separate line.
* 100 character line length

### Documentation

* Do not wrap lines at 80 characters - configure your editor to soft-wrap when editing documentation.

## License

By contributing to React Native, you agree that your contributions will be licensed under its BSD license.
<!-- generated_contributing_end -->


================================================
FILE: ContainerShip/Dockerfile.android
================================================
FROM hramos/android-base:latest

# set default environment variables
ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=\"-Xmx512m -XX:+HeapDumpOnOutOfMemoryError\""
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"

# add ReactAndroid directory
ADD .buckconfig /app/.buckconfig
ADD .buckjavaargs /app/.buckjavaargs
ADD ReactAndroid /app/ReactAndroid
ADD ReactCommon /app/ReactCommon
ADD keystores /app/keystores

# set workdir
WORKDIR /app

# run buck fetches
RUN buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
RUN buck fetch ReactAndroid/src/main/java/com/facebook/react
RUN buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
RUN buck fetch ReactAndroid/src/test/...
RUN buck fetch ReactAndroid/src/androidTest/...

# build app
RUN buck build ReactAndroid/src/main/java/com/facebook/react
RUN buck build ReactAndroid/src/main/java/com/facebook/react/shell

ADD gradle /app/gradle
ADD gradlew /app/gradlew
ADD settings.gradle /app/settings.gradle
ADD build.gradle /app/build.gradle
ADD react.gradle /app/react.gradle

# run gradle downloads
RUN ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders

# compile native libs with Gradle script, we need bridge for unit and integration tests
RUN ./gradlew :ReactAndroid:packageReactNdkLibsForBuck -Pjobs=1 -Pcom.android.build.threadPoolSize=1

# add all react-native code
ADD . /app
WORKDIR /app

# https://github.com/npm/npm/issues/13306
RUN cd $(npm root -g)/npm && npm install fs-extra && sed -i -e s/graceful-fs/fs-extra/ -e s/fs.rename/fs.move/ ./lib/utils/rename.js

# build node dependencies
RUN npm install

WORKDIR /app


================================================
FILE: ContainerShip/Dockerfile.android-base
================================================
FROM library/ubuntu:16.04

# set default build arguments
ARG ANDROID_TOOLS_VERSION=25.2.5
ARG BUCK_VERSION=v2017.11.16.01
ARG NDK_VERSION=10e
ARG NODE_VERSION=6.2.0
ARG WATCHMAN_VERSION=4.7.0

# set default environment variables
ENV ADB_INSTALL_TIMEOUT=10
ENV PATH=${PATH}:/opt/buck/bin/
ENV ANDROID_HOME=/opt/android
ENV ANDROID_SDK_HOME=${ANDROID_HOME}
ENV PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
ENV ANDROID_NDK=/opt/ndk/android-ndk-r$NDK_VERSION
ENV PATH=${PATH}:${ANDROID_NDK}

# install system dependencies
RUN apt-get update && apt-get install ant autoconf automake curl g++ gcc git libqt5widgets5 lib32z1 lib32stdc++6 make maven npm openjdk-8* python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev unzip -y

# configure npm
RUN npm config set spin=false
RUN npm config set progress=false

# install node
RUN npm install n -g
RUN n $NODE_VERSION

# download buck
RUN git clone https://github.com/facebook/buck.git /opt/buck --branch $BUCK_VERSION --depth=1
WORKDIR /opt/buck

# build buck
RUN ant

# download watchman
RUN git clone https://github.com/facebook/watchman.git /opt/watchman
WORKDIR /opt/watchman
RUN git checkout v$WATCHMAN_VERSION

# build watchman
RUN ./autogen.sh
RUN ./configure
RUN make
RUN make install

# Full reference at https://dl.google.com/android/repository/repository2-1.xml
# download and unpack android
RUN mkdir /opt/android
WORKDIR /opt/android
RUN curl --silent https://dl.google.com/android/repository/tools_r$ANDROID_TOOLS_VERSION-linux.zip > android.zip
RUN unzip android.zip
RUN rm android.zip

# download and unpack NDK
RUN mkdir /opt/ndk
WORKDIR /opt/ndk
RUN curl --silent https://dl.google.com/android/repository/android-ndk-r$NDK_VERSION-linux-x86_64.zip > ndk.zip
RUN unzip ndk.zip

# cleanup NDK
RUN rm ndk.zip

# Add android SDK tools
RUN echo "y" | sdkmanager "system-images;android-19;google_apis;armeabi-v7a"
RUN echo "y" | sdkmanager "platforms;android-23"
RUN echo "y" | sdkmanager "platforms;android-19"
RUN echo "y" | sdkmanager "build-tools;23.0.1"
RUN echo "y" | sdkmanager "add-ons;addon-google_apis-google-23"
RUN echo "y" | sdkmanager "extras;android;m2repository"

# Link adb executable
RUN ln -s /opt/android/platform-tools/adb /usr/bin/adb

# clean up unnecessary directories
RUN rm -rf /opt/android/system-images/android-19/default/x86


================================================
FILE: ContainerShip/Dockerfile.javascript
================================================
FROM library/node:6.9.2

ENV YARN_VERSION=0.27.5

# install dependencies
RUN apt-get update && apt-get install ocaml libelf-dev -y
RUN npm install yarn@$YARN_VERSION -g

# add code
RUN mkdir /app
ADD . /app

WORKDIR /app
RUN yarn install --ignore-engines

WORKDIR website
RUN yarn install --ignore-engines --ignore-platform

WORKDIR /app


================================================
FILE: ContainerShip/scripts/run-android-ci-instrumentation-tests.js
================================================
/**
 * Copyright (c) 2015-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.
 */

'use strict';

/**
 * This script runs instrumentation tests one by one with retries
 * Instrumentation tests tend to be flaky, so rerunning them individually increases
 * chances for success and reduces total average execution time.
 *
 * We assume that all instrumentation tests are flat in one folder
 * Available arguments:
 * --path - path to all .java files with tests
 * --package - com.facebook.react.tests
 * --retries [num] - how many times to retry possible flaky commands: npm install and running tests, default 1
 */

const argv = require('yargs').argv;
const async = require('async');
const child_process = require('child_process');
const fs = require('fs');
const path = require('path');

const colors = {
    GREEN: '\x1b[32m',
    RED: '\x1b[31m',
    RESET: '\x1b[0m'
};

const test_opts = {
    FILTER: new RegExp(argv.filter || '.*', 'i'),
    IGNORE: argv.ignore || null,
    PACKAGE: argv.package || 'com.facebook.react.tests',
    PATH: argv.path || './ReactAndroid/src/androidTest/java/com/facebook/react/tests',
    RETRIES: parseInt(argv.retries || 2, 10),

    TEST_TIMEOUT: parseInt(argv['test-timeout'] || 1000 * 60 * 10),

    OFFSET: argv.offset,
    COUNT: argv.count
};

let max_test_class_length = Number.NEGATIVE_INFINITY;

let testClasses = fs.readdirSync(path.resolve(process.cwd(), test_opts.PATH))
    .filter((file) => {
        return file.endsWith('.java');
    }).map((clazz) => {
        return path.basename(clazz, '.java');
    });

if (test_opts.IGNORE) {
    test_opts.IGNORE = new RegExp(test_opts.IGNORE, 'i');
    testClasses = testClasses.filter(className => {
        return !test_opts.IGNORE.test(className);
    });
}

testClasses = testClasses.map((clazz) => {
    return test_opts.PACKAGE + '.' + clazz;
}).filter((clazz) => {
    return test_opts.FILTER.test(clazz);
});

// only process subset of the tests at corresponding offset and count if args provided
if (test_opts.COUNT != null && test_opts.OFFSET != null) {
    const testCount = testClasses.length;
    const start = test_opts.COUNT * test_opts.OFFSET;
    const end = start + test_opts.COUNT;

    if (start >= testClasses.length) {
        testClasses = [];
    } else if (end >= testClasses.length) {
        testClasses = testClasses.slice(start);
    } else {
        testClasses = testClasses.slice(start, end);
    }
}

return async.mapSeries(testClasses, (clazz, callback) => {
    if (clazz.length > max_test_class_length) {
        max_test_class_length = clazz.length;
    }

    return async.retry(test_opts.RETRIES, (retryCb) => {
        const test_process = child_process.spawn('./ContainerShip/scripts/run-instrumentation-tests-via-adb-shell.sh', [test_opts.PACKAGE, clazz], {
            stdio: 'inherit'
        });

        const timeout = setTimeout(() => {
            test_process.kill();
        }, test_opts.TEST_TIMEOUT);

        test_process.on('error', (err) => {
            clearTimeout(timeout);
            retryCb(err);
        });

        test_process.on('exit', (code) => {
            clearTimeout(timeout);

            if (code !== 0) {
                return retryCb(new Error(`Process exited with code: ${code}`));
            }

            return retryCb();
        });
    }, (err) => {
        return callback(null, {
            name: clazz,
            status: err ? 'failure' : 'success'
        });
    });
}, (err, results) => {
    print_test_suite_results(results);

    const failures = results.filter((test) => {
        return test.status === 'failure';
    });

    return failures.length === 0 ? process.exit(0) : process.exit(1);
});

function print_test_suite_results(results) {
    console.log('\n\nTest Suite Results:\n');

    let color;
    let failing_suites = 0;
    let passing_suites = 0;

    function pad_output(num_chars) {
        let i = 0;

        while (i < num_chars) {
            process.stdout.write(' ');
            i++;
        }
    }
    results.forEach((test) => {
        if (test.status === 'success') {
            color = colors.GREEN;
            passing_suites++;
        } else if (test.status === 'failure') {
            color = colors.RED;
            failing_suites++;
        }

        process.stdout.write(color);
        process.stdout.write(test.name);
        pad_output((max_test_class_length - test.name.length) + 8);
        process.stdout.write(test.status);
        process.stdout.write(`${colors.RESET}\n`);
    });

    console.log(`\n${passing_suites} passing, ${failing_suites} failing!`);
}


================================================
FILE: ContainerShip/scripts/run-android-docker-instrumentation-tests.sh
================================================
#!/bin/bash

# for buck gen
mount -o remount,exec /dev/shm

AVD_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)

# create virtual device
echo no | android create avd -n $AVD_UUID -f -t android-19 --abi default/armeabi-v7a

# emulator setup
emulator64-arm -avd $AVD_UUID -no-skin -no-audio -no-window -no-boot-anim &
bootanim=""
until [[ "$bootanim" =~ "stopped" ]]; do
    sleep 5
    bootanim=$(adb -e shell getprop init.svc.bootanim 2>&1)
    echo "boot animation status=$bootanim"
done

set -x

# solve issue with max user watches limit
echo 65536 | tee -a /proc/sys/fs/inotify/max_user_watches
watchman shutdown-server

# integration tests
# build JS bundle for instrumentation tests
node local-cli/cli.js bundle --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js

# build test APK
source ./scripts/circle-ci-android-setup.sh && NO_BUCKD=1 retry3 buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=1

# run installed apk with tests
node ./ContainerShip/scripts/run-android-ci-instrumentation-tests.js $*
exit $?


================================================
FILE: ContainerShip/scripts/run-android-docker-unit-tests.sh
================================================
#!/bin/bash

# set default environment variables
UNIT_TESTS_BUILD_THREADS="${UNIT_TESTS_BUILD_THREADS:-1}"

# for buck gen
mount -o remount,exec /dev/shm

set -x

# run unit tests
buck test ReactAndroid/src/test/... --config build.threads=$UNIT_TESTS_BUILD_THREADS


================================================
FILE: ContainerShip/scripts/run-ci-e2e-tests.sh
================================================
#!/bin/bash

set -ex

# set default environment variables
ROOT=$(pwd)
SCRIPTS=$(pwd)/scripts

RUN_ANDROID=0
RUN_CLI_INSTALL=1
RUN_IOS=0
RUN_JS=0

RETRY_COUNT=${RETRY_COUNT:-2}
AVD_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)

ANDROID_NPM_DEPS="appium@1.5.1 mocha@2.4.5 wd@0.3.11 colors@1.0.3 pretty-data2@0.40.1"
CLI_PACKAGE=$ROOT/react-native-cli/react-native-cli-*.tgz
PACKAGE=$ROOT/react-native-*.tgz

# solve issue with max user watches limit
echo 65536 | tee -a /proc/sys/fs/inotify/max_user_watches
watchman shutdown-server

# retries command on failure
# $1 -- max attempts
# $2 -- command to run
function retry() {
    local -r -i max_attempts="$1"; shift
    local -r cmd="$@"
    local -i attempt_num=1

    until $cmd; do
        if (( attempt_num == max_attempts )); then
            echo "Execution of '$cmd' failed; no more attempts left"
            return 1
        else
            (( attempt_num++ ))
            echo "Execution of '$cmd' failed; retrying for attempt number $attempt_num..."
        fi
    done
}

# parse command line args & flags
while :; do
  case "$1" in
    --android)
      RUN_ANDROID=1
      shift
      ;;

    --ios)
      RUN_IOS=1
      shift
      ;;

    --js)
      RUN_JS=1
      shift
      ;;

    --skip-cli-install)
      RUN_CLI_INSTALL=0
      shift
      ;;

    --tvos)
      RUN_IOS=1
      shift
      ;;

    *)
      break
  esac
done

function e2e_suite() {
    cd $ROOT

    if [ $RUN_ANDROID -eq 0 ] && [ $RUN_IOS -eq 0 ] && [ $RUN_JS -eq 0 ]; then
      echo "No e2e tests specified!"
      return 0
    fi

    # create temp dir
    TEMP_DIR=$(mktemp -d /tmp/react-native-XXXXXXXX)

    # To make sure we actually installed the local version
    # of react-native, we will create a temp file inside the template
    # and check that it exists after `react-native init
    IOS_MARKER=$(mktemp $ROOT/local-cli/templates/HelloWorld/ios/HelloWorld/XXXXXXXX)
    ANDROID_MARKER=$(mktemp ${ROOT}/local-cli/templates/HelloWorld/android/XXXXXXXX)

    # install CLI
    cd react-native-cli
    npm pack
    cd ..

    # can skip cli install for non sudo mode
    if [ $RUN_CLI_INSTALL -ne 0 ]; then
      npm install -g $CLI_PACKAGE
      if [ $? -ne 0 ]; then
        echo "Could not install react-native-cli globally, please run in su mode"
        echo "Or with --skip-cli-install to skip this step"
        return 1
      fi
    fi

    if [ $RUN_ANDROID -ne 0 ]; then
        set +ex

        # create virtual device
        if ! android list avd | grep "$AVD_UUID" > /dev/null; then
            echo no | android create avd -n $AVD_UUID -f -t android-19 --abi default/armeabi-v7a
        fi

        # newline at end of adb devices call and first line is headers
        DEVICE_COUNT=$(adb devices | wc -l)
        ((DEVICE_COUNT -= 2))

        # will always kill an existing emulator if one exists for fresh setup
        if [[ $DEVICE_COUNT -ge 1 ]]; then
            adb emu kill
        fi

        # emulator setup
        emulator64-arm -avd $AVD_UUID -no-skin -no-audio -no-window -no-boot-anim &

        bootanim=""
        until [[ "$bootanim" =~ "stopped" ]]; do
            sleep 5
            bootanim=$(adb -e shell getprop init.svc.bootanim 2>&1)
            echo "boot animation status=$bootanim"
        done

        set -ex

      ./gradlew :ReactAndroid:installArchives -Pjobs=1 -Dorg.gradle.jvmargs="-Xmx512m -XX:+HeapDumpOnOutOfMemoryError"
      if [ $? -ne 0 ]; then
        echo "Failed to compile Android binaries"
        return 1
      fi
    fi

    npm pack
    if [ $? -ne 0 ]; then
      echo "Failed to pack react-native"
      return 1
    fi

    cd $TEMP_DIR

    retry $RETRY_COUNT react-native init EndToEndTest --version $PACKAGE --npm
    if [ $? -ne 0 ]; then
      echo "Failed to execute react-native init"
      echo "Most common reason is npm registry connectivity, try again"
      return 1
    fi

    cd EndToEndTest

    # android tests
    if [ $RUN_ANDROID -ne 0 ]; then
      echo "Running an Android e2e test"
      echo "Installing e2e framework"

      retry $RETRY_COUNT npm install --save-dev $ANDROID_NPM_DEPS --silent >> /dev/null
      if [ $? -ne 0 ]; then
        echo "Failed to install appium"
        echo "Most common reason is npm registry connectivity, try again"
        return 1
      fi

      cp $SCRIPTS/android-e2e-test.js android-e2e-test.js

      cd android
      echo "Downloading Maven deps"
      ./gradlew :app:copyDownloadableDepsToLibs

      cd ..
      keytool -genkey -v -keystore android/keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"

      node ./node_modules/.bin/appium >> /dev/null &
      APPIUM_PID=$!
      echo "Starting appium server $APPIUM_PID"

      echo "Building app"
      buck build android/app

      # hack to get node unhung (kill buckd)
      kill -9 $(pgrep java)

      if [ $? -ne 0 ]; then
        echo "could not execute Buck build, is it installed and in PATH?"
        return 1
      fi

      echo "Starting packager server"
      npm start >> /dev/null &
      SERVER_PID=$!
      sleep 15

      echo "Executing android e2e test"
      retry $RETRY_COUNT node node_modules/.bin/_mocha android-e2e-test.js
      if [ $? -ne 0 ]; then
        echo "Failed to run Android e2e tests"
        echo "Most likely the code is broken"
        return 1
      fi

      # kill packager process
      if kill -0 $SERVER_PID; then
        echo "Killing packager $SERVER_PID"
        kill -9 $SERVER_PID
      fi

      # kill appium process
      if kill -0 $APPIUM_PID; then
        echo "Killing appium $APPIUM_PID"
        kill -9 $APPIUM_PID
      fi

    fi

    # ios tests
    if [ $RUN_IOS -ne 0 ]; then
      echo "Running ios e2e tests not yet implemented for docker!"
    fi

    # js tests
    if [ $RUN_JS -ne 0 ]; then
      # Check the packager produces a bundle (doesn't throw an error)
      react-native bundle --max-workers 1 --platform android --dev true --entry-file index.js --bundle-output android-bundle.js
      if [ $? -ne 0 ]; then
        echo "Could not build android bundle"
        return 1
      fi

      react-native bundle --max-workers 1 --platform ios --dev true --entry-file index.js --bundle-output ios-bundle.js
      if [ $? -ne 0 ]; then
        echo "Could not build iOS bundle"
        return 1
      fi
    fi

    # directory cleanup
    rm $IOS_MARKER
    rm $ANDROID_MARKER

    return 0
}

retry $RETRY_COUNT e2e_suite


================================================
FILE: ContainerShip/scripts/run-instrumentation-tests-via-adb-shell.sh
================================================
#!/bin/bash

# Python script to run instrumentation tests, copied from https://github.com/circleci/circle-dummy-android
# Example: ./scripts/run-android-instrumentation-tests.sh com.facebook.react.tests com.facebook.react.tests.ReactPickerTestCase
#
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH"

# clear the logs
adb logcat -c

# run tests and check output
python - $1 $2 << END

import re
import subprocess as sp
import sys
import threading
import time

done = False

test_app = sys.argv[1]
test_class = None

if len(sys.argv) > 2:
  test_class = sys.argv[2]
  
def update():
  # prevent CircleCI from killing the process for inactivity
  while not done:
    time.sleep(5)
    print "Running in background.  Waiting for 'adb' command response..."

t = threading.Thread(target=update)
t.dameon = True
t.start()

def run():
  sp.Popen(['adb', 'wait-for-device']).communicate()
  if (test_class != None):
    p = sp.Popen('adb shell am instrument -w -e class %s %s/android.support.test.runner.AndroidJUnitRunner' 
      % (test_class, test_app), shell=True, stdout=sp.PIPE, stderr=sp.PIPE, stdin=sp.PIPE)
  else :
    p = sp.Popen('adb shell am instrument -w %s/android.support.test.runner.AndroidJUnitRunner' 
      % (test_app), shell=True, stdout=sp.PIPE, stderr=sp.PIPE, stdin=sp.PIPE)
  return p.communicate()

success = re.compile(r'OK \(\d+ test(s)?\)')
stdout, stderr = run()

done = True
print stderr
print stdout

if success.search(stderr + stdout):
  sys.exit(0)
else:
  # dump the logs
  sp.Popen(['adb', 'logcat', '-d']).communicate()
  sys.exit(1) # make sure we fail if the test failed
END

RETVAL=$?

exit $RETVAL


================================================
FILE: DockerTests.md
================================================
# Dockerfile Tests

This is a high level overview of the test configuration using docker. It explains how to run the tests locally
and how they integrate with the Jenkins Pipeline script to run the automated tests on ContainerShip <https://www.containership.io/>.

## Docker Installation

It is required to have Docker running on your machine in order to build and run the tests in the Dockerfiles.
See <https://docs.docker.com/engine/installation/> for more information on how to install.

## Convenience NPM Run Scripts

We have added a number of default run scripts to the `package.json` file to simplify building and running your tests.

`npm run test-android-setup` - Pulls down the base android docker image used for running the tests

`npm run test-android-build` - Builds the docker image used to run the tests

`npm run test-android-run-unit` - Runs all the unit tests that have been built in the latest react/android docker image (note: you need to run test-android-build before executing this, if the image does not exist it will fail)

`npm run test-android-run-instrumentation` - Runs all the instrumentation tests that have been built in the latest react/android docker image (note: you need to run test-android-build before executing this, if the image does not exist it will fail). You can also pass additional flags to filter which tests instrumentation tests are run. Ex: `npm run test-android-run-instrumentation -- --filter=TestIdTestCase` to only run the TestIdTestCase instrumentation test. See below for more information
on the instrumentation test flags.

`npm run test-android-run-e2e` - Runs all the end to end tests that have been built in the latest react/android docker image (note: you need to run test-android-build before executing this, if the image does not exist it will fail)

`npm run test-android-unit` - Builds and runs the android unit tests.

`npm run test-android-instrumentation` - Builds and runs the android instrumentation tests.

`npm run test-android-e2e` - Builds and runs the android end to end tests.

## Detailed Android Setup

There are two Dockerfiles for use with the Android codebase.

The `Dockerfile.android-base` contains all the necessary prerequisites required to run the React Android tests. It is
separated out into a separate Dockerfile because these are dependencies that rarely change and also because it is quite
a beastly image since it contains all the Android depedencies for running android and the emulators (~9GB).

The good news is you should rarely have to build or pull down the base image! All iterative code updates happen as
part of the `Dockerfile.android` image build.

So step one...

`docker pull containership/android-base:latest`

This will take quite some time depending on your connection and you need to ensure you have ~10GB of free disk space.

Once this is done, you can run tests locally by executing two simple commands:

1. `docker build -t react/android -f ./ContainerShip/Dockerfile.android .`
2. `docker run --cap-add=SYS_ADMIN -it react/android bash ContainerShip/scripts/run-android-docker-unit-tests.sh`

> Note: `--cap-add=SYS_ADMIN` flag is required for the `ContainerShip/scripts/run-android-docker-unit-tests.sh` and
`ContainerShip/scripts/run-android-docker-instrumentation-tests.sh` in order to allow the remounting of `/dev/shm` as writeable
so the `buck` build system may write temporary output to that location

Every time you make any modifications to the codebase, you should re-run the `docker build ...` command in order for your
updates to be included in your local docker image.

The following shell scripts have been provided for android testing:

`ContainerShip/scripts/run-android-docker-unit-tests.sh` - Runs the standard android unit tests

`ContainerShip/scripts/run-android-docker-instrumentation-tests.sh` - Runs the android instrumentation tests on the emulator. *Note* that these
tests take quite some time to run so there are various flags you can pass in order to filter which tests are run (see below)

`ContainerShip/scripts/run-ci-e2e-tests.sh` - Runs the android end to end tests

#### ContainerShip/scripts/run-android-docker-instrumentation-tests.sh

The instrumentation test script accepts the following flags in order to customize the execution of the tests:

`--filter` - A regex that filters which instrumentation tests will be run. (Defaults to .*)

`--package` - Name of the java package containing the instrumentation tests (Defaults to com.facebook.react.tests)

`--path` - Path to the directory containing the instrumentation tests. (Defaults to ./ReactAndroid/src/androidTest/java/com/facebook/react/tests)

`--retries` - Number of times to retry a failed test before declaring a failure (Defaults to 2)

For example, if locally you only wanted to run the InitialPropsTestCase, you could do the following:

`docker run --cap-add=SYS_ADMIN -it react/android bash ContainerShip/scripts/run-android-docker-instrumentation-tests.sh --filter="InitialPropsTestCase"`

# Javascript Setup

There is a single Dockerfile for use with the javascript codebase.

The `Dockerfile.javascript` base requires all the necessary dependencies for running Javascript tests.

Any time you make an update to the codebase, you can build and run the javascript tests with the following three commands:

1. `docker build -t react/js -f ./ContainerShip/Dockerfile.javascript .`
2. `docker run -it react/js yarn test --maxWorkers=4`
3. `docker run -it react/js yarn run flow -- check`


================================================
FILE: IntegrationTests/AccessibilityManagerTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule AccessibilityManagerTest
 */
'use strict';

const React = require('react');
const ReactNative = require('react-native');
const { View } = ReactNative;
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
const {
  TestModule,
  AccessibilityManager,
} = ReactNative.NativeModules;


class AccessibilityManagerTest extends React.Component<{}> {
  componentDidMount() {
    AccessibilityManager.setAccessibilityContentSizeMultipliers({
      'extraSmall': 1.0,
      'small': 2.0,
      'medium': 3.0,
      'large': 4.0,
      'extraLarge': 5.0,
      'extraExtraLarge': 6.0,
      'extraExtraExtraLarge': 7.0,
      'accessibilityMedium': 8.0,
      'accessibilityLarge': 9.0,
      'accessibilityExtraLarge': 10.0,
      'accessibilityExtraExtraLarge': 11.0,
      'accessibilityExtraExtraExtraLarge': 12.0,
    });
    RCTDeviceEventEmitter.addListener('didUpdateDimensions', update => {
      TestModule.markTestPassed(update.window.fontScale === 4.0);
    });
  }

  render(): React.Node {
    return <View />;
  }
}

AccessibilityManagerTest.displayName = 'AccessibilityManagerTest';

module.exports = AccessibilityManagerTest;


================================================
FILE: IntegrationTests/AppEventsTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule AppEventsTest
 * @flow
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var {
  NativeAppEventEmitter,
  StyleSheet,
  Text,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

var deepDiffer = require('deepDiffer');

var TEST_PAYLOAD = {foo: 'bar'};

type AppEvent = { data: Object, ts: number, };
type State = {
  sent: 'none' | AppEvent,
  received: 'none' | AppEvent,
  elapsed?: string,
};

class AppEventsTest extends React.Component<{}, State> {
  state: State = {sent: 'none', received: 'none'};

  componentDidMount() {
    NativeAppEventEmitter.addListener('testEvent', this.receiveEvent);
    var event = {data: TEST_PAYLOAD, ts: Date.now()};
    TestModule.sendAppEvent('testEvent', event);
    this.setState({sent: event});
  }

  receiveEvent = (event: any) => {
    if (deepDiffer(event.data, TEST_PAYLOAD)) {
      throw new Error('Received wrong event: ' + JSON.stringify(event));
    }
    var elapsed = (Date.now() - event.ts) + 'ms';
    this.setState({received: event, elapsed}, () => {
      TestModule.markTestCompleted();
    });
  };

  render() {
    return (
      <View style={styles.container}>
        <Text>
          {JSON.stringify(this.state, null, '  ')}
        </Text>
      </View>
    );
  }
}

AppEventsTest.displayName = 'AppEventsTest';

var styles = StyleSheet.create({
  container: {
    margin: 40,
  },
});

module.exports = AppEventsTest;


================================================
FILE: IntegrationTests/AsyncStorageTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule AsyncStorageTest
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var {
  AsyncStorage,
  Text,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

var deepDiffer = require('deepDiffer');

var DEBUG = false;

var KEY_1 = 'key_1';
var VAL_1 = 'val_1';
var KEY_2 = 'key_2';
var VAL_2 = 'val_2';
var KEY_MERGE = 'key_merge';
var VAL_MERGE_1 = {'foo': 1, 'bar': {'hoo': 1, 'boo': 1}, 'moo': {'a': 3}};
var VAL_MERGE_2 = {'bar': {'hoo': 2}, 'baz': 2, 'moo': {'a': 3}};
var VAL_MERGE_EXPECT =
  {'foo': 1, 'bar': {'hoo': 2, 'boo': 1}, 'baz': 2, 'moo': {'a': 3}};

// setup in componentDidMount
var done = (result : ?boolean) => {};
var updateMessage = (message : string ) => {};

function runTestCase(description : string, fn) {
  updateMessage(description);
  fn();
}

function expectTrue(condition : boolean, message : string) {
  if (!condition) {
    throw new Error(message);
  }
}

function expectEqual(lhs, rhs, testname : string) {
  expectTrue(
    !deepDiffer(lhs, rhs),
    'Error in test ' + testname + ': expected\n' + JSON.stringify(rhs) +
      '\ngot\n' + JSON.stringify(lhs)
  );
}

function expectAsyncNoError(place, err) {
  if (err instanceof Error) {
    err = err.message;
  }
  expectTrue(err === null, 'Unexpected error in ' + place + ': ' + JSON.stringify(err));
}

function testSetAndGet() {
  AsyncStorage.setItem(KEY_1, VAL_1, (err1) => {
    expectAsyncNoError('testSetAndGet/setItem', err1);
    AsyncStorage.getItem(KEY_1, (err2, result) => {
      expectAsyncNoError('testSetAndGet/getItem', err2);
      expectEqual(result, VAL_1, 'testSetAndGet setItem');
      updateMessage('get(key_1) correctly returned ' + result);
      runTestCase('should get null for missing key', testMissingGet);
    });
  });
}

function testMissingGet() {
  AsyncStorage.getItem(KEY_2, (err, result) => {
    expectAsyncNoError('testMissingGet/setItem', err);
    expectEqual(result, null, 'testMissingGet');
    updateMessage('missing get(key_2) correctly returned ' + result);
    runTestCase('check set twice results in a single key', testSetTwice);
  });
}

function testSetTwice() {
  AsyncStorage.setItem(KEY_1, VAL_1, ()=>{
    AsyncStorage.setItem(KEY_1, VAL_1, ()=>{
      AsyncStorage.getItem(KEY_1, (err, result) => {
        expectAsyncNoError('testSetTwice/setItem', err);
        expectEqual(result, VAL_1, 'testSetTwice');
        updateMessage('setTwice worked as expected');
        runTestCase('test removeItem', testRemoveItem);
      });
    });
  });
}

function testRemoveItem() {
  AsyncStorage.setItem(KEY_1, VAL_1, ()=>{
    AsyncStorage.setItem(KEY_2, VAL_2, ()=>{
      AsyncStorage.getAllKeys((err, result) => {
        expectAsyncNoError('testRemoveItem/getAllKeys', err);
        expectTrue(
          result.indexOf(KEY_1) >= 0 && result.indexOf(KEY_2) >= 0,
          'Missing KEY_1 or KEY_2 in ' + '(' + result + ')'
        );
        updateMessage('testRemoveItem - add two items');
        AsyncStorage.removeItem(KEY_1, (err2) => {
          expectAsyncNoError('testRemoveItem/removeItem', err2);
          updateMessage('delete successful ');
          AsyncStorage.getItem(KEY_1, (err3, result2) => {
            expectAsyncNoError('testRemoveItem/getItem', err3);
            expectEqual(
              result2,
              null,
              'testRemoveItem: key_1 present after delete'
            );
            updateMessage('key properly removed ');
            AsyncStorage.getAllKeys((err4, result3) => {
             expectAsyncNoError('testRemoveItem/getAllKeys', err4);
             expectTrue(
               result3.indexOf(KEY_1) === -1,
               'Unexpected: KEY_1 present in ' + result3
             );
             updateMessage('proper length returned.');
             runTestCase('should merge values', testMerge);
            });
          });
        });
      });
    });
  });
}

function testMerge() {
  AsyncStorage.setItem(KEY_MERGE, JSON.stringify(VAL_MERGE_1), (err1) => {
    expectAsyncNoError('testMerge/setItem', err1);
    AsyncStorage.mergeItem(KEY_MERGE, JSON.stringify(VAL_MERGE_2), (err2) => {
      expectAsyncNoError('testMerge/mergeItem', err2);
      AsyncStorage.getItem(KEY_MERGE, (err3, result) => {
        expectAsyncNoError('testMerge/setItem', err3);
        expectEqual(JSON.parse(result), VAL_MERGE_EXPECT, 'testMerge');
        updateMessage('objects deeply merged\nDone!');
        runTestCase('multi set and get', testOptimizedMultiGet);
      });
    });
  });
}

function testOptimizedMultiGet() {
  let batch = [[KEY_1, VAL_1], [KEY_2, VAL_2]];
  let keys = batch.map(([key, value]) => key);
  AsyncStorage.multiSet(batch, (err1) => {
    // yes, twice on purpose
    [1, 2].forEach((i) => {
      expectAsyncNoError(`${i} testOptimizedMultiGet/multiSet`, err1);
      AsyncStorage.multiGet(keys, (err2, result) => {
        expectAsyncNoError(`${i} testOptimizedMultiGet/multiGet`, err2);
        expectEqual(result, batch, `${i} testOptimizedMultiGet multiGet`);
        updateMessage('multiGet([key_1, key_2]) correctly returned ' + JSON.stringify(result));
        done();
      });
    });
  });
}


class AsyncStorageTest extends React.Component<{}, $FlowFixMeState> {
  state = {
    messages: 'Initializing...',
    done: false,
  };

  componentDidMount() {
    done = () => this.setState({done: true}, () => {
      TestModule.markTestCompleted();
    });
    updateMessage = (msg) => {
      this.setState({messages: this.state.messages.concat('\n' + msg)});
      DEBUG && console.log(msg);
    };
    AsyncStorage.clear(testSetAndGet);
  }

  render() {
    return (
      <View style={{backgroundColor: 'white', padding: 40}}>
        <Text>
          {
            /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This
             * comment suppresses an error found when Flow v0.54 was deployed.
             * To see the error delete this comment and run Flow. */
            this.constructor.displayName + ': '}
          {this.state.done ? 'Done' : 'Testing...'}
          {'\n\n' + this.state.messages}
        </Text>
      </View>
    );
  }
}

AsyncStorageTest.displayName = 'AsyncStorageTest';

module.exports = AsyncStorageTest;


================================================
FILE: IntegrationTests/ImageCachePolicyTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule ImageCachePolicyTest
 */
'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {
  Image,
  View,
  Text,
  StyleSheet,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

/*
 * The reload and force-cache tests don't actually verify that the complete functionality.
 *
 * reload: Should have the server set a long cache header, then swap the image on next load
 * with the test comparing the old image to the new image and making sure they are different.
 *
 * force-cache: Should do the above but set a no-cache header. The test should compare the first
 * image with the new one and make sure they are the same.
 */

const TESTS = ['only-if-cached', 'default', 'reload', 'force-cache'];

type Props = {}
type State = {
  'only-if-cached'?: boolean,
  'default'?: boolean,
  'reload'?: boolean,
  'force-cache'?: boolean,
}

class ImageCachePolicyTest extends React.Component<Props, $FlowFixMeState> {
  state = {}

  shouldComponentUpdate(nextProps: Props, nextState: State) {
    const results: Array<?boolean> = TESTS.map(x => nextState[x]);

    if (!results.includes(undefined)) {
      const result: boolean = results.reduce((x,y) => x === y === true, true);
      TestModule.markTestPassed(result);
    }

    return false;
  }

  testComplete(name: string, pass: boolean) {
    this.setState({[name]: pass});
  }

  render() {
    return (
      <View style={{flex: 1}}>
        <Text>Hello</Text>
      <Image
        source={{
              uri: 'https://facebook.github.io/react-native/img/favicon.png?cacheBust=notinCache' + Date.now(),
              cache: 'only-if-cached'
            }}
        onLoad={() => this.testComplete('only-if-cached', false)}
        onError={() => this.testComplete('only-if-cached', true)}
        style={styles.base}
      />
        <Image
          source={{
              uri: 'https://facebook.github.io/react-native/img/favicon.png?cacheBust=notinCache' + Date.now(),
              cache: 'default'
            }}
          onLoad={() => this.testComplete('default', true)}
          onError={() => this.testComplete('default', false)}
          style={styles.base}
        />
        <Image
          source={{
              uri: 'https://facebook.github.io/react-native/img/favicon.png?cacheBust=notinCache' + Date.now(),
              cache: 'reload'
            }}
          onLoad={() => this.testComplete('reload', true)}
          onError={() => this.testComplete('reload', false)}
          style={styles.base}
        />
        <Image
          source={{
              uri: 'https://facebook.github.io/react-native/img/favicon.png?cacheBust=notinCache' + Date.now(),
              cache: 'force-cache'
            }}
          onLoad={() => this.testComplete('force-cache', true)}
          onError={() => this.testComplete('force-cache', false)}
          style={styles.base}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  base: {
    width: 100,
    height: 100,
  },
});

ImageCachePolicyTest.displayName = 'ImageCachePolicyTest';

module.exports = ImageCachePolicyTest;


================================================
FILE: IntegrationTests/ImageSnapshotTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule ImageSnapshotTest
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var {
  Image,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

class ImageSnapshotTest extends React.Component<{}> {
  componentDidMount() {
    if (!TestModule.verifySnapshot) {
      throw new Error('TestModule.verifySnapshot not defined.');
    }
  }

  done = (success : boolean) => {
    TestModule.markTestPassed(success);
  };

  render() {
    return (
      <Image
        source={require('./blue_square.png')}
        defaultSource={require('./red_square.png')}
        onLoad={() => TestModule.verifySnapshot(this.done)} />
    );
  }
}

ImageSnapshotTest.displayName = 'ImageSnapshotTest';

module.exports = ImageSnapshotTest;


================================================
FILE: IntegrationTests/IntegrationTestHarnessTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule IntegrationTestHarnessTest
 */
'use strict';

/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error
 * found when Flow v0.54 was deployed. To see the error delete this comment and
 * run Flow. */
var requestAnimationFrame = require('fbjs/lib/requestAnimationFrame');
var React = require('react');
var PropTypes = require('prop-types');
var ReactNative = require('react-native');
var { Text, View } = ReactNative;
var { TestModule } = ReactNative.NativeModules;

class IntegrationTestHarnessTest extends React.Component<{
  shouldThrow?: boolean,
  waitOneFrame?: boolean,
}, $FlowFixMeState> {
  static propTypes = {
    shouldThrow: PropTypes.bool,
    waitOneFrame: PropTypes.bool,
  };

  state = {
    done: false,
  };

  componentDidMount() {
    if (this.props.waitOneFrame) {
      requestAnimationFrame(this.runTest);
    } else {
      this.runTest();
    }
  }

  runTest = () => {
    if (this.props.shouldThrow) {
      throw new Error('Throwing error because shouldThrow');
    }
    if (!TestModule) {
      throw new Error('RCTTestModule is not registered.');
    } else if (!TestModule.markTestCompleted) {
      throw new Error('RCTTestModule.markTestCompleted not defined.');
    }
    this.setState({ done: true }, () => {
      TestModule.markTestCompleted();
    });
  };

  render() {
    return (
      <View style={{ backgroundColor: 'white', padding: 40 }}>
        <Text>
          {
            /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This
             * comment suppresses an error found when Flow v0.54 was deployed.
             * To see the error delete this comment and run Flow. */
            this.constructor.displayName + ': '}
          {this.state.done ? 'Done' : 'Testing...'}
        </Text>
      </View>
    );
  }
}

IntegrationTestHarnessTest.displayName = 'IntegrationTestHarnessTest';

module.exports = IntegrationTestHarnessTest;


================================================
FILE: IntegrationTests/IntegrationTestsApp.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule IntegrationTestsApp
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var {
  AppRegistry,
  ScrollView,
  StyleSheet,
  Text,
  TouchableOpacity,
  View,
} = ReactNative;

// Keep this list in sync with RNTesterIntegrationTests.m
var TESTS = [
  require('./IntegrationTestHarnessTest'),
  require('./TimersTest'),
  require('./AsyncStorageTest'),
  require('./LayoutEventsTest'),
  require('./AppEventsTest'),
  require('./SimpleSnapshotTest'),
  require('./ImageCachePolicyTest'),
  require('./ImageSnapshotTest'),
  require('./PromiseTest'),
  require('./WebViewTest'),
  require('./SyncMethodTest'),
  require('./WebSocketTest'),
  require('./AccessibilityManagerTest'),
];

TESTS.forEach(
  /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This comment
   * suppresses an error found when Flow v0.54 was deployed. To see the error
   * delete this comment and run Flow. */
  (test) => AppRegistry.registerComponent(test.displayName, () => test)
);

// Modules required for integration tests
require('LoggingTestModule');

type Test = any;

class IntegrationTestsApp extends React.Component<{}, $FlowFixMeState> {
  state = {
    test: (null: ?Test),
  };

  render() {
    if (this.state.test) {
      return (
        <ScrollView>
          {/* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This
            * comment suppresses an error when upgrading Flow's support for
            * React. To see the error delete this comment and run Flow. */}
          <this.state.test />
        </ScrollView>
      );
    }
    return (
      <View style={styles.container}>
        <Text style={styles.row}>
          Click on a test to run it in this shell for easier debugging and
          development.  Run all tests in the testing environment with cmd+U in
          Xcode.
        </Text>
        <View style={styles.separator} />
        <ScrollView>
          {TESTS.map((test) => [
            <TouchableOpacity
              onPress={() => this.setState({test})}
              style={styles.row}>
              <Text style={styles.testName}>
                {test.displayName}
              </Text>
            </TouchableOpacity>,
            <View style={styles.separator} />
          ])}
        </ScrollView>
      </View>
    );
  }
}

var styles = StyleSheet.create({
  container: {
    backgroundColor: 'white',
    marginTop: 40,
    margin: 15,
  },
  row: {
    padding: 10,
  },
  testName: {
    fontWeight: '500',
  },
  separator: {
    height: 1,
    backgroundColor: '#bbbbbb',
  },
});

AppRegistry.registerComponent('IntegrationTestsApp', () => IntegrationTestsApp);


================================================
FILE: IntegrationTests/LayoutEventsTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule LayoutEventsTest
 * @flow
 */
'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var {
  Image,
  LayoutAnimation,
  StyleSheet,
  Text,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

var deepDiffer = require('deepDiffer');

function debug(...args) {
  // console.log.apply(null, arguments);
}

import type {Layout, LayoutEvent} from 'CoreEventTypes';
type Style = {
  margin?: number,
  padding?: number,
  borderColor?: string,
  borderWidth?: number,
  backgroundColor?: string,
  width?: number,
};

type State = {
  didAnimation: boolean,
  extraText?: string,
  imageLayout?: Layout,
  textLayout?: Layout,
  viewLayout?: Layout,
  viewStyle?: Style,
  containerStyle?: Style,
};

var LayoutEventsTest = createReactClass({
  displayName: 'LayoutEventsTest',
  getInitialState(): State {
    return {
      didAnimation: false,
    };
  },
  animateViewLayout: function() {
    debug('animateViewLayout invoked');
    LayoutAnimation.configureNext(
      LayoutAnimation.Presets.spring,
      () => {
        debug('animateViewLayout done');
        this.checkLayout(this.addWrapText);
      }
    );
    this.setState({viewStyle: {margin: 60}});
  },
  addWrapText: function() {
    debug('addWrapText invoked');
    this.setState(
      {extraText: '  And a bunch more text to wrap around a few lines.'},
      () => this.checkLayout(this.changeContainer)
    );
  },
  changeContainer: function() {
    debug('changeContainer invoked');
    this.setState(
      {containerStyle: {width: 280}},
      () => this.checkLayout(TestModule.markTestCompleted)
    );
  },
  checkLayout: function(next?: ?Function) {
    if (!this.isMounted()) {
      return;
    }
    this.refs.view.measure((x, y, width, height) => {
      this.compare('view', {x, y, width, height}, this.state.viewLayout);
      if (typeof next === 'function') {
        next();
      } else if (!this.state.didAnimation) {
        // Trigger first state change after onLayout fires
        this.animateViewLayout();
        this.state.didAnimation = true;
      }
    });
    this.refs.txt.measure((x, y, width, height) => {
      this.compare('txt', {x, y, width, height}, this.state.textLayout);
    });
    this.refs.img.measure((x, y, width, height) => {
      this.compare('img', {x, y, width, height}, this.state.imageLayout);
    });
  },
  compare: function(node: string, measured: any, onLayout: any): void {
    if (deepDiffer(measured, onLayout)) {
      var data = {measured, onLayout};
      throw new Error(
        node + ' onLayout mismatch with measure ' +
          JSON.stringify(data, null, '  ')
      );
    }
  },
  onViewLayout: function(e: LayoutEvent) {
    debug('received view layout event\n', e.nativeEvent);
    this.setState({viewLayout: e.nativeEvent.layout}, this.checkLayout);
  },
  onTextLayout: function(e: LayoutEvent) {
    debug('received text layout event\n', e.nativeEvent);
    this.setState({textLayout: e.nativeEvent.layout}, this.checkLayout);
  },
  onImageLayout: function(e: LayoutEvent) {
    debug('received image layout event\n', e.nativeEvent);
    this.setState({imageLayout: e.nativeEvent.layout}, this.checkLayout);
  },
  render: function() {
    var viewStyle = [styles.view, this.state.viewStyle];
    var textLayout = this.state.textLayout || {width: '?', height: '?'};
    var imageLayout = this.state.imageLayout || {x: '?', y: '?'};
    debug('viewLayout', this.state.viewLayout);
    return (
      <View style={[styles.container, this.state.containerStyle]}>
        <View ref="view" onLayout={this.onViewLayout} style={viewStyle}>
          <Image
            ref="img"
            onLayout={this.onImageLayout}
            style={styles.image}
            source={{uri: 'uie_thumb_big.png'}}
          />
          <Text ref="txt" onLayout={this.onTextLayout} style={styles.text}>
            A simple piece of text.{this.state.extraText}
          </Text>
          <Text>
            {'\n'}
            Text w/h: {textLayout.width}/{textLayout.height + '\n'}
            Image x/y: {imageLayout.x}/{imageLayout.y}
          </Text>
        </View>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    margin: 40,
  },
  view: {
    margin: 20,
    padding: 12,
    borderColor: 'black',
    borderWidth: 0.5,
    backgroundColor: 'transparent',
  },
  text: {
    alignSelf: 'flex-start',
    borderColor: 'rgba(0, 0, 255, 0.2)',
    borderWidth: 0.5,
  },
  image: {
    width: 50,
    height: 50,
    marginBottom: 10,
    alignSelf: 'center',
  },
});

LayoutEventsTest.displayName = 'LayoutEventsTest';

module.exports = LayoutEventsTest;


================================================
FILE: IntegrationTests/LoggingTestModule.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule LoggingTestModule
 */
'use strict';

var BatchedBridge = require('BatchedBridge');

var warning = require('fbjs/lib/warning');
var invariant = require('fbjs/lib/invariant');

var LoggingTestModule = {
  logToConsole: function(str) {
    console.log(str);
  },
  logToConsoleAfterWait: function(str,timeout_ms) {
    setTimeout(function() {
      console.log(str);
    }, timeout_ms);
  },
  warning: function(str) {
    warning(false, str);
  },
  invariant: function(str) {
    invariant(false, str);
  },
  logErrorToConsole: function(str) {
    console.error(str);
  },
  throwError: function(str) {
    throw new Error(str);
  }
};

BatchedBridge.registerCallableModule(
  'LoggingTestModule',
  LoggingTestModule
);

module.exports = LoggingTestModule;


================================================
FILE: IntegrationTests/PromiseTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule PromiseTest
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var { View } = ReactNative;
var { TestModule } = ReactNative.NativeModules;

class PromiseTest extends React.Component<{}> {
  shouldResolve = false;
  shouldReject = false;
  shouldSucceedAsync = false;
  shouldThrowAsync = false;

  componentDidMount() {
    Promise.all([
      this.testShouldResolve(),
      this.testShouldReject(),
      this.testShouldSucceedAsync(),
      this.testShouldThrowAsync(),
    ]).then(() => TestModule.markTestPassed(
      this.shouldResolve && this.shouldReject &&
      this.shouldSucceedAsync && this.shouldThrowAsync
    ));
  }

  testShouldResolve = () => {
    return TestModule
      .shouldResolve()
      .then(() => this.shouldResolve = true)
      .catch(() => this.shouldResolve = false);
  };

  testShouldReject = () => {
    return TestModule
      .shouldReject()
      .then(() => this.shouldReject = false)
      .catch(() => this.shouldReject = true);
  };

  testShouldSucceedAsync = async (): Promise<any> => {
    try {
      await TestModule.shouldResolve();
      this.shouldSucceedAsync = true;
    } catch (e) {
      this.shouldSucceedAsync = false;
    }
  };

  testShouldThrowAsync = async (): Promise<any> => {
    try {
      await TestModule.shouldReject();
      this.shouldThrowAsync = false;
    } catch (e) {
      this.shouldThrowAsync = true;
    }
  };

  render(): React.Node {
    return <View />;
  }
}

PromiseTest.displayName = 'PromiseTest';

module.exports = PromiseTest;


================================================
FILE: IntegrationTests/PropertiesUpdateTest.js
================================================
/**
 * Copyright (c) 2015-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.
 * @providesModule PropertiesUpdateTest
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
var {
  View,
} = ReactNative;

var { TestModule } = ReactNative.NativeModules;

class PropertiesUpdateTest extends React.Component {
  render() {
    if (this.props.markTestPassed) {
      TestModule.markTestPassed(true);
    }
    return (
      <View/>
    );
  }
}

PropertiesUpdateTest.displayName = 'PropertiesUpdateTest';

module.exports = PropertiesUpdateTest;


================================================
FILE: IntegrationTests/RCTRootViewIntegrationTestApp.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule RCTRootViewIntegrationTestApp
 */
'use strict';

require('regenerator-runtime/runtime');

var React = require('React');
var ReactNative = require('react-native');

var {
  AppRegistry,
  ScrollView,
  StyleSheet,
  Text,
  TouchableOpacity,
  View,
} = ReactNative;

/* Keep this list in sync with RCTRootViewIntegrationTests.m */
var TESTS = [
  require('./PropertiesUpdateTest'),
  require('./ReactContentSizeUpdateTest'),
  require('./SizeFlexibilityUpdateTest'),
];

TESTS.forEach(
  (test) => AppRegistry.registerComponent(test.displayName, () => test)
);

class RCTRootViewIntegrationTestApp extends React.Component {
  state = {
    test: null,
  };

  render() {
    if (this.state.test) {
      return (
        <ScrollView>
          <this.state.test />
        </ScrollView>
      );
    }
    return (
      <View style={styles.container}>
        <Text style={styles.row}>
          Click on a test to run it in this shell for easier debugging and
          development.  Run all tests in the testing environment with cmd+U in
          Xcode.
        </Text>
        <View style={styles.separator} />
        <ScrollView>
          {TESTS.map((test) => [
            <TouchableOpacity
              onPress={() => this.setState({test})}
              style={styles.row}>
              <Text style={styles.testName}>
                {test.displayName}
              </Text>
            </TouchableOpacity>,
            <View style={styles.separator} />
          ])}
        </ScrollView>
      </View>
    );
  }
}

var styles = StyleSheet.create({
  container: {
    backgroundColor: 'white',
    marginTop: 40,
    margin: 15,
  },
  row: {
    padding: 10,
  },
  testName: {
    fontWeight: '500',
  },
  separator: {
    height: 1,
    backgroundColor: '#bbbbbb',
  },
});

AppRegistry.registerComponent('RCTRootViewIntegrationTestApp', () => RCTRootViewIntegrationTestApp);


================================================
FILE: IntegrationTests/ReactContentSizeUpdateTest.js
================================================
/**
 * Copyright (c) 2015-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.
 * @providesModule ReactContentSizeUpdateTest
 */
'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var RCTNativeAppEventEmitter = require('RCTNativeAppEventEmitter');
var Subscribable = require('Subscribable');
var TimerMixin = require('react-timer-mixin');

var { View } = ReactNative;

var { TestModule } = ReactNative.NativeModules;

var reactViewWidth = 101;
var reactViewHeight = 102;
var newReactViewWidth = 201;
var newReactViewHeight = 202;

var ReactContentSizeUpdateTest = createReactClass({
  displayName: 'ReactContentSizeUpdateTest',
  mixins: [Subscribable.Mixin,
           TimerMixin],

  componentWillMount: function() {
    this.addListenerOn(
      RCTNativeAppEventEmitter,
      'rootViewDidChangeIntrinsicSize',
      this.rootViewDidChangeIntrinsicSize
    );
  },

  getInitialState: function() {
    return {
      height: reactViewHeight,
      width: reactViewWidth,
    };
  },

  updateViewSize: function() {
    this.setState({
      height: newReactViewHeight,
      width: newReactViewWidth,
    });
  },

  componentDidMount: function() {
    this.setTimeout(
      () => { this.updateViewSize(); },
      1000
    );
  },

  rootViewDidChangeIntrinsicSize: function(intrinsicSize) {
    if (intrinsicSize.height === newReactViewHeight && intrinsicSize.width === newReactViewWidth) {
      TestModule.markTestPassed(true);
    }
  },

  render() {
    return (
      <View style={{'height':this.state.height, 'width':this.state.width}}/>
    );
  }
});

ReactContentSizeUpdateTest.displayName = 'ReactContentSizeUpdateTest';

module.exports = ReactContentSizeUpdateTest;


================================================
FILE: IntegrationTests/SimpleSnapshotTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule SimpleSnapshotTest
 */
'use strict';

var React = require('React');
var ReactNative = require('react-native');
/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error
 * found when Flow v0.54 was deployed. To see the error delete this comment and
 * run Flow. */
var requestAnimationFrame = require('fbjs/lib/requestAnimationFrame');

var {
  StyleSheet,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

class SimpleSnapshotTest extends React.Component<{}> {
  componentDidMount() {
    if (!TestModule.verifySnapshot) {
      throw new Error('TestModule.verifySnapshot not defined.');
    }
    requestAnimationFrame(() => TestModule.verifySnapshot(this.done));
  }

  done = (success : boolean) => {
    TestModule.markTestPassed(success);
  };

  render() {
    return (
      <View style={{backgroundColor: 'white', padding: 100}}>
        <View style={styles.box1} />
        <View style={styles.box2} />
      </View>
    );
  }
}

var styles = StyleSheet.create({
  box1: {
    width: 80,
    height: 50,
    backgroundColor: 'red',
  },
  box2: {
    top: -10,
    left: 20,
    width: 70,
    height: 90,
    backgroundColor: 'blue',
  },
});

SimpleSnapshotTest.displayName = 'SimpleSnapshotTest';

module.exports = SimpleSnapshotTest;


================================================
FILE: IntegrationTests/SizeFlexibilityUpdateTest.js
================================================
/**
 * Copyright (c) 2015-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.
 * @providesModule SizeFlexibilityUpdateTest
 */
'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var RCTNativeAppEventEmitter = require('RCTNativeAppEventEmitter');
var Subscribable = require('Subscribable');
var { View } = ReactNative;

var { TestModule } = ReactNative.NativeModules;

var reactViewWidth = 111;
var reactViewHeight = 222;

var finalState = false;

var SizeFlexibilityUpdateTest = createReactClass({
  displayName: 'SizeFlexibilityUpdateTest',
  mixins: [Subscribable.Mixin],

  componentWillMount: function() {
    this.addListenerOn(
      RCTNativeAppEventEmitter,
      'rootViewDidChangeIntrinsicSize',
      this.rootViewDidChangeIntrinsicSize
    );
  },

  markPassed: function() {
    TestModule.markTestPassed(true);
    finalState = true;
  },

  rootViewDidChangeIntrinsicSize: function(intrinsicSize) {

    if (finalState) {
      // If a test reaches its final state, it is not expected to do anything more
      TestModule.markTestPassed(false);
      return;
    }

    if (this.props.both) {
      if (intrinsicSize.width === reactViewWidth && intrinsicSize.height === reactViewHeight) {
        this.markPassed();
        return;
      }
    }
    if (this.props.height) {
      if (intrinsicSize.width !== reactViewWidth && intrinsicSize.height === reactViewHeight) {
        this.markPassed();
        return;
      }
    }
    if (this.props.width) {
      if (intrinsicSize.width === reactViewWidth && intrinsicSize.height !== reactViewHeight) {
        this.markPassed();
        return;
      }
    }
    if (this.props.none) {
      if (intrinsicSize.width !== reactViewWidth && intrinsicSize.height !== reactViewHeight) {
        this.markPassed();
        return;
      }
    }
  },

  render() {
    return (
      <View style={{'height':reactViewHeight, 'width':reactViewWidth}}/>
    );
  }
});

SizeFlexibilityUpdateTest.displayName = 'SizeFlexibilityUpdateTest';

module.exports = SizeFlexibilityUpdateTest;


================================================
FILE: IntegrationTests/SyncMethodTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule SyncMethodTest
 */
'use strict';

var React = require('react');
var ReactNative = require('react-native');
var { View } = ReactNative;

const {
  TestModule,
  RNTesterTestModule,
} = ReactNative.NativeModules;


class SyncMethodTest extends React.Component<{}> {
  componentDidMount() {
    if (RNTesterTestModule.echoString('test string value') !== 'test string value') {
      throw new Error('Something wrong with sync method export');
    }
    if (RNTesterTestModule.methodThatReturnsNil() != null) {
      throw new Error('Something wrong with sync method export');
    }
    TestModule.markTestCompleted();
  }

  render(): React.Node {
    return <View />;
  }
}

SyncMethodTest.displayName = 'SyncMethodTest';

module.exports = SyncMethodTest;


================================================
FILE: IntegrationTests/TimersTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule TimersTest
 */
'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error
 * found when Flow v0.54 was deployed. To see the error delete this comment and
 * run Flow. */
var TimerMixin = require('react-timer-mixin');

var {
  StyleSheet,
  Text,
  View,
} = ReactNative;
var { TestModule  } = ReactNative.NativeModules;

var TimersTest = createReactClass({
  displayName: 'TimersTest',
  mixins: [TimerMixin],

  _nextTest: () => {},
  _interval: -1,

  getInitialState() {
    return {
      count: 0,
      done: false,
    };
  },

  componentDidMount() {
    this.setTimeout(this.testSetTimeout0, 1000);
  },

  testSetTimeout0() {
    this.setTimeout(this.testSetTimeout1, 0);
  },

  testSetTimeout1() {
    this.setTimeout(this.testSetTimeout50, 1);
  },

  testSetTimeout50() {
    this.setTimeout(this.testRequestAnimationFrame, 50);
  },

  testRequestAnimationFrame() {
    this.requestAnimationFrame(this.testSetInterval0);
  },

  testSetInterval0() {
    this._nextTest = this.testSetInterval20;
    this._interval = this.setInterval(this._incrementInterval, 0);
  },

  testSetInterval20() {
    this._nextTest = this.testSetImmediate;
    this._interval = this.setInterval(this._incrementInterval, 20);
  },

  testSetImmediate() {
    this.setImmediate(this.testClearTimeout0);
  },

  testClearTimeout0() {
    var timeout = this.setTimeout(() => this._fail('testClearTimeout0'), 0);
    this.clearTimeout(timeout);
    this.testClearTimeout30();
  },

  testClearTimeout30() {
    var timeout = this.setTimeout(() => this._fail('testClearTimeout30'), 30);
    this.clearTimeout(timeout);
    this.setTimeout(this.testClearMulti, 50);
  },

  testClearMulti() {
    var fails = [];
    fails.push(this.setTimeout(() => this._fail('testClearMulti-1'), 20));
    fails.push(this.setTimeout(() => this._fail('testClearMulti-2'), 50));
    var delayClear = this.setTimeout(() => this._fail('testClearMulti-3'), 50);
    fails.push(this.setTimeout(() => this._fail('testClearMulti-4'), 0));
    fails.push(this.setTimeout(() => this._fail('testClearMulti-5'), 10));

    fails.forEach((timeout) => this.clearTimeout(timeout));
    this.setTimeout(() => this.clearTimeout(delayClear), 20);

    this.setTimeout(this.testOrdering, 50);
  },

  testOrdering() {
    // Clear timers are set first because it's more likely to uncover bugs.
    var fail0;
    this.setImmediate(() => this.clearTimeout(fail0));
    fail0 = this.setTimeout(
      () => this._fail('testOrdering-t0, setImmediate should happen before ' +
        'setTimeout 0'),
      0
    );
    var failAnim; // This should fail without the t=0 fastpath feature.
    this.setTimeout(() => this.cancelAnimationFrame(failAnim), 0);
    failAnim = this.requestAnimationFrame(
      () => this._fail('testOrdering-Anim, setTimeout 0 should happen before ' +
        'requestAnimationFrame')
    );
    var fail25;
    this.setTimeout(() => { this.clearTimeout(fail25); }, 20);
    fail25 = this.setTimeout(
      () => this._fail('testOrdering-t25, setTimeout 20 should happen before ' +
        'setTimeout 25'),
      25
    );
    this.setTimeout(this.done, 50);
  },

  done() {
    this.setState({done: true}, () => {
      TestModule.markTestCompleted();
    });
  },

  render() {
    return (
      <View style={styles.container}>
        <Text>
          {this.constructor.displayName + ': \n'}
          Intervals: {this.state.count + '\n'}
          {this.state.done ? 'Done' : 'Testing...'}
        </Text>
      </View>
    );
  },

  _incrementInterval() {
    if (this.state.count > 3) {
      throw new Error('interval incremented past end.');
    }
    if (this.state.count === 3) {
      this.clearInterval(this._interval);
      this.setState({count: 0}, this._nextTest);
      return;
    }
    this.setState({count: this.state.count + 1});
  },

  _fail(caller : string) : void {
    throw new Error('_fail called by ' + caller);
  },
});

var styles = StyleSheet.create({
  container: {
    backgroundColor: 'white',
    padding: 40,
  },
});

TimersTest.displayName = 'TimersTest';

module.exports = TimersTest;


================================================
FILE: IntegrationTests/WebSocketTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule WebSocketTest
 */
'use strict';

var React = require('react');
var ReactNative = require('react-native');
var { View } = ReactNative;
var { TestModule } = ReactNative.NativeModules;

const DEFAULT_WS_URL = 'ws://localhost:5555/';

const WS_EVENTS = [
  'close',
  'error',
  'message',
  'open',
];
const WS_STATES = [
  /* 0 */ 'CONNECTING',
  /* 1 */ 'OPEN',
  /* 2 */ 'CLOSING',
  /* 3 */ 'CLOSED',
];

type State = {
  url: string;
  fetchStatus: ?string;
  socket: ?WebSocket;
  socketState: ?number;
  lastSocketEvent: ?string;
  lastMessage: ?string | ?ArrayBuffer;
  testMessage: string;
  testExpectedResponse: string;
};

class WebSocketTest extends React.Component<{}, State> {
  state: State = {
    url: DEFAULT_WS_URL,
    fetchStatus: null,
    socket: null,
    socketState: null,
    lastSocketEvent: null,
    lastMessage: null,
    testMessage: 'testMessage',
    testExpectedResponse: 'testMessage_response'
  };

  _waitFor = (condition: any, timeout: any, callback: any) => {
    var remaining = timeout;
    var t;
    var timeoutFunction =  function() {
      if (condition()) {
        callback(true);
        return;
      }
      remaining--;
      if (remaining === 0) {
        callback(false);
      } else {
        t = setTimeout(timeoutFunction,1000);
      }
    };
    t = setTimeout(timeoutFunction,1000);
  }

  _connect = () => {
    const socket = new WebSocket(this.state.url);
    WS_EVENTS.forEach(ev => socket.addEventListener(ev, this._onSocketEvent));
    this.setState({
      socket,
      socketState: socket.readyState,
    });
  };

  _socketIsConnected = () => {
    return this.state.socketState === 1; //'OPEN'
  }

  _socketIsDisconnected = () => {
    return this.state.socketState === 3; //'CLOSED'
  }

  _disconnect = () => {
    if (!this.state.socket) {
      return;
    }
    this.state.socket.close();
  };

  _onSocketEvent = (event: any) => {
    const state: any = {
      socketState: event.target.readyState,
      lastSocketEvent: event.type,
    };
    if (event.type === 'message') {
      state.lastMessage = event.data;
    }
    this.setState(state);
  };

  _sendText = (text: string) => {
    if (!this.state.socket) {
      return;
    }
    this.state.socket.send(text);
  };

  _sendTestMessage = () => {
    this._sendText(this.state.testMessage);
  };

  _receivedTestExpectedResponse = () => {
    return (this.state.lastMessage === this.state.testExpectedResponse);
  };

  componentDidMount() {
    this.testConnect();
  }

  testConnect = () => {
    var component = this;
    component._connect();
    component._waitFor(component._socketIsConnected, 5, function(connectSucceeded) {
      if (!connectSucceeded) {
        TestModule.markTestPassed(false);
        return;
      }
      component.testSendAndReceive();
    });
  }

  testSendAndReceive = () => {
    var component = this;
    component._sendTestMessage();
    component._waitFor(component._receivedTestExpectedResponse, 5, function(messageReceived) {
      if (!messageReceived) {
        TestModule.markTestPassed(false);
        return;
      }
      component.testDisconnect();
    });
  }

  testDisconnect = () => {
    var component = this;
    component._disconnect();
    component._waitFor(component._socketIsDisconnected, 5, function(disconnectSucceeded) {
      TestModule.markTestPassed(disconnectSucceeded);
    });
  }

  render(): React.Node {
    return <View />;
  }
}

WebSocketTest.displayName = 'WebSocketTest';

module.exports = WebSocketTest;


================================================
FILE: IntegrationTests/WebViewTest.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule WebViewTest
 */
'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {
  WebView,
} = ReactNative;

var { TestModule } = ReactNative.NativeModules;

class WebViewTest extends React.Component {

  render() {
    var firstMessageReceived = false;
    var secondMessageReceived = false;
    function processMessage(e) {
      var message = e.nativeEvent.data;
      if (message === 'First') {firstMessageReceived = true;}
      if (message === 'Second') {secondMessageReceived = true;}

      // got both messages
      if (firstMessageReceived && secondMessageReceived) {TestModule.markTestPassed(true);}
      // wait for next message
      else if (firstMessageReceived && !secondMessageReceived) {return;}
      // first message got lost
      else if (!firstMessageReceived && secondMessageReceived) {throw new Error('First message got lost');}
    }
    var html = 'Hello world'
      + '<script>'
      + "window.setTimeout(function(){window.postMessage('First'); window.postMessage('Second')}, 0)"
      + '</script>';

    // fail if messages didn't get through;
    window.setTimeout(function() { throw new Error(firstMessageReceived ? 'Both messages got lost' : 'Second message got lost');}, 10000);

    var source = {
      html: html,
      };

    return (
      <WebView
        source={source}
        onMessage = {processMessage}
        />
    );
  }
}

WebViewTest.displayName = 'WebViewTest';

module.exports = WebViewTest;


================================================
FILE: IntegrationTests/launchWebSocketServer.command
================================================
#!/usr/bin/env bash

# Copyright (c) 2015-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.

# Set terminal title
echo -en "\033]0;Web Socket Test Server\a"
clear

THIS_DIR=$(dirname "$0")
pushd "$THIS_DIR"
./websocket_integration_test_server.js
popd

echo "Process terminated. Press <enter> to close the window"
read


================================================
FILE: IntegrationTests/websocket_integration_test_server.js
================================================
#!/usr/bin/env node

/**
 * Copyright (c) 2015-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.
 *
 * @flow
 * @providesModule websocket_integration_test_server
 */
'use strict';

/* eslint-env node */

/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error
 * found when Flow v0.54 was deployed. To see the error delete this comment and
 * run Flow. */
const WebSocket = require('ws');

console.log(`\
WebSocket integration test server

This will send each incoming message back, with the string '_response' appended.
An incoming message of 'exit' will shut down the server.

`);

const server = new WebSocket.Server({port: 5555});
server.on('connection', (ws) => {
  ws.on('message', (message) => {
    console.log('Received message:', message);
    if (message === 'exit') {
      console.log('WebSocket integration test server exit');
      process.exit(0);
    }
    console.log('Cookie:', ws.upgradeReq.headers.cookie);
    ws.send(message + '_response');
  });

  ws.send('hello');
});


================================================
FILE: Jenkinsfile
================================================
import groovy.json.JsonSlurperClassic

def runPipeline() {
    try {
        ansiColor('xterm') {
            runStages();
        }
    } catch(err) {
        echo "Error: ${err}"
        currentBuild.result = "FAILED"
    }
}

def pullDockerImage(imageName) {
    def result = sh(script: "docker pull ${imageName}", returnStatus: true)

    if (result != 0) {
        throw new Exception("Failed to pull image[${imageName}]")
    }
}

def buildDockerfile(dockerfilePath = "Dockerfile", imageName) {
    def buildCmd = "docker build -f ${dockerfilePath} -t ${imageName} ."
    echo "${buildCmd}"

    def result = sh(script: buildCmd, returnStatus: true)

    if (result != 0) {
        throw new Exception("Failed to build image[${imageName}] from '${dockerfilePath}'")
    }
}

def runCmdOnDockerImage(imageName, cmd, run_opts = '') {
    def result = sh(script: "docker run ${run_opts} -i ${imageName} sh -c '${cmd}'", returnStatus: true)

    if(result != 0) {
        throw new Exception("Failed to run cmd[${cmd}] on image[${imageName}]")
    }
}

def calculateGithubInfo() {
    return [
        branch: env.BRANCH_NAME,
        sha: sh(returnStdout: true, script: 'git rev-parse HEAD').trim(),
        tag: null,
        isPR: "${env.CHANGE_URL}".contains('/pull/')
    ]
}

def getParallelInstrumentationTests(testDir, parallelCount, imageName) {
    def integrationTests = [:]
    def testCount = sh(script: "ls ${testDir} | wc -l", returnStdout: true).trim().toInteger()
    def testPerParallel = testCount.intdiv(parallelCount) + 1

    def ignoredTests = 'CatalystNativeJavaToJSReturnValuesTestCase|CatalystUIManagerTestCase|CatalystMeasureLayoutTest|CatalystNativeJavaToJSArgumentsTestCase|CatalystNativeJSToJavaParametersTestCase|ReactScrollViewTestCase|ReactHorizontalScrollViewTestCase|ViewRenderingTestCase';

    for (def x = 0; (x*testPerParallel) < testCount; x++) {
        def offset = x
        integrationTests["android integration tests: ${offset}"] = {
            run: {
                runCmdOnDockerImage(imageName, "bash /app/ContainerShip/scripts/run-android-docker-instrumentation-tests.sh --offset=${offset} --count=${testPerParallel} --ignore=\"${ignoredTests}\"", '--privileged --rm')
            }
        }
    }

    return integrationTests
}

def runStages() {
    def buildInfo = [
        image: [
            name: "facebook/react-native",
            tag: null
        ],
        scm: [
            branch: null,
            sha: null,
            tag: null,
            isPR: false
        ]
    ]

    node {
        def jsDockerBuild, androidDockerBuild
        def jsTag, androidTag, jsImageName, androidImageName, parallelInstrumentationTests

        try {
            stage('Setup') {
                parallel(
                    'pull images': {
                        pullDockerImage('containership/android-base:latest')
                    }
                )
            }

            stage('Build') {
                checkout scm

                def githubInfo = calculateGithubInfo()
                buildInfo.scm.branch = githubInfo.branch
                buildInfo.scm.sha = githubInfo.sha
                buildInfo.scm.tag = githubInfo.tag
                buildInfo.scm.isPR = githubInfo.isPR
                buildInfo.image.tag = "${buildInfo.scm.sha}-${env.BUILD_TAG.replace(" ", "-").replace("/", "-").replace("%2F", "-")}"

                jsTag = "${buildInfo.image.tag}"
                androidTag = "${buildInfo.image.tag}"
                jsImageName = "${buildInfo.image.name}-js:${jsTag}"
                androidImageName = "${buildInfo.image.name}-android:${androidTag}"

                parallelInstrumentationTests = getParallelInstrumentationTests('./ReactAndroid/src/androidTest/java/com/facebook/react/tests', 3, androidImageName)

                parallel(
                    'javascript build': {
                        jsDockerBuild = docker.build("${jsImageName}", "-f ContainerShip/Dockerfile.javascript .")
                    },
                    'android build': {
                        androidDockerBuild = docker.build("${androidImageName}", "-f ContainerShip/Dockerfile.android .")
                    }
                )

            }

            stage('Tests JS') {
                try {
                    parallel(
                        'javascript flow': {
                            runCmdOnDockerImage(jsImageName, 'yarn run flow -- check', '--rm')
                        },
                        'javascript tests': {
                            runCmdOnDockerImage(jsImageName, 'yarn test --maxWorkers=4', '--rm')
                        },
                        'documentation tests': {
                            runCmdOnDockerImage(jsImageName, 'cd website && yarn test', '--rm')
                        },
                        'documentation generation': {
                            runCmdOnDockerImage(jsImageName, 'cd website && node ./server/generate.js', '--rm')
                        }
                    )
                } catch(e) {
                    currentBuild.result = "FAILED"
                    echo "Test JS Stage Error: ${e}"
                }
            }

            stage('Tests Android') {
                try {
                    parallel(
                        'android unit tests': {
                            runCmdOnDockerImage(androidImageName, 'bash /app/ContainerShip/scripts/run-android-docker-unit-tests.sh', '--privileged --rm')
                        },
                        'android e2e tests': {
                            runCmdOnDockerImage(androidImageName, 'bash /app/ContainerShip/scripts/run-ci-e2e-tests.sh --android --js', '--privileged --rm')
                        }
                    )
                } catch(e) {
                    currentBuild.result = "FAILED"
                    echo "Tests Android Stage Error: ${e}"
                }
            }

            stage('Tests Android Instrumentation') {
                // run all tests in parallel
                try {
                    parallel(parallelInstrumentationTests)
                } catch(e) {
                    currentBuild.result = "FAILED"
                    echo "Tests Android Instrumentation Stage Error: ${e}"
                }
            }

            stage('Cleanup') {
                cleanupImage(jsDockerBuild)
                cleanupImage(androidDockerBuild)
            }
        } catch(err) {
            cleanupImage(jsDockerBuild)
            cleanupImage(androidDockerBuild)

            throw err
        }
    }

}

def isMasterBranch() {
    return env.GIT_BRANCH == 'master'
}

def gitCommit() {
    return sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
}

def cleanupImage(image) {
    if (image) {
        try {
            sh "docker ps -a | awk '{ print \$1,\$2 }' | grep ${image.id} | awk '{print \$1 }' | xargs -I {} docker rm {}"
            sh "docker rmi -f ${image.id}"
        } catch(e) {
            echo "Error cleaning up ${image.id}"
            echo "${e}"
        }
    }
}

runPipeline()


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2015-present, Facebook, 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: LICENSE-docs
================================================
Attribution 4.0 International

=======================================================================

Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.

     Considerations for licensors: Our public licenses are
     intended for use by those authorized to give the public
     permission to use material in ways otherwise restricted by
     copyright and certain other rights. Our licenses are
     irrevocable. Licensors should read and understand the terms
     and conditions of the license they choose before applying it.
     Licensors should also secure all rights necessary before
     applying our licenses so that the public can reuse the
     material as expected. Licensors should clearly mark any
     material not subject to the license. This includes other CC-
     licensed material, or material used under an exception or
     limitation to copyright. More considerations for licensors:
  wiki.creativecommons.org/Considerations_for_licensors

     Considerations for the public: By using one of our public
     licenses, a licensor grants the public permission to use the
     licensed material under specified terms and conditions. If
     the licensor's permission is not necessary for any reason--for
     example, because of any applicable exception or limitation to
     copyright--then that use is not regulated by the license. Our
     licenses grant only permissions under copyright and certain
     other rights that a licensor has authority to grant. Use of
     the licensed material may still be restricted for other
     reasons, including because others have copyright or other
     rights in the material. A licensor may make special requests,
     such as asking that all changes be marked or described.
     Although not required by our licenses, you are encouraged to
     respect those requests where reasonable. More_considerations
     for the public:
  wiki.creativecommons.org/Considerations_for_licensees

=======================================================================

Creative Commons Attribution 4.0 International Public License

By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.


Section 1 -- Definitions.

  a. Adapted Material means material subject to Copyright and Similar
     Rights that is derived from or based upon the Licensed Material
     and in which the Licensed Material is translated, altered,
     arranged, transformed, or otherwise modified in a manner requiring
     permission under the Copyright and Similar Rights held by the
     Licensor. For purposes of this Public License, where the Licensed
     Material is a musical work, performance, or sound recording,
     Adapted Material is always produced where the Licensed Material is
     synched in timed relation with a moving image.

  b. Adapter's License means the license You apply to Your Copyright
     and Similar Rights in Your contributions to Adapted Material in
     accordance with the terms and conditions of this Public License.

  c. Copyright and Similar Rights means copyright and/or similar rights
     closely related to copyright including, without limitation,
     performance, broadcast, sound recording, and Sui Generis Database
     Rights, without regard to how the rights are labeled or
     categorized. For purposes of this Public License, the rights
     specified in Section 2(b)(1)-(2) are not Copyright and Similar
     Rights.

  d. Effective Technological Measures means those measures that, in the
     absence of proper authority, may not be circumvented under laws
     fulfilling obligations under Article 11 of the WIPO Copyright
     Treaty adopted on December 20, 1996, and/or similar international
     agreements.

  e. Exceptions and Limitations means fair use, fair dealing, and/or
     any other exception or limitation to Copyright and Similar Rights
     that applies to Your use of the Licensed Material.

  f. Licensed Material means the artistic or literary work, database,
     or other material to which the Licensor applied this Public
     License.

  g. Licensed Rights means the rights granted to You subject to the
     terms and conditions of this Public License, which are limited to
     all Copyright and Similar Rights that apply to Your use of the
     Licensed Material and that the Licensor has authority to license.

  h. Licensor means the individual(s) or entity(ies) granting rights
     under this Public License.

  i. Share means to provide material to the public by any means or
     process that requires permission under the Licensed Rights, such
     as reproduction, public display, public performance, distribution,
     dissemination, communication, or importation, and to make material
     available to the public including in ways that members of the
     public may access the material from a place and at a time
     individually chosen by them.

  j. Sui Generis Database Rights means rights other than copyright
     resulting from Directive 96/9/EC of the European Parliament and of
     the Council of 11 March 1996 on the legal protection of databases,
     as amended and/or succeeded, as well as other essentially
     equivalent rights anywhere in the world.

  k. You means the individual or entity exercising the Licensed Rights
     under this Public License. Your has a corresponding meaning.


Section 2 -- Scope.

  a. License grant.

       1. Subject to the terms and conditions of this Public License,
          the Licensor hereby grants You a worldwide, royalty-free,
          non-sublicensable, non-exclusive, irrevocable license to
          exercise the Licensed Rights in the Licensed Material to:

            a. reproduce and Share the Licensed Material, in whole or
               in part; and

            b. produce, reproduce, and Share Adapted Material.

       2. Exceptions and Limitations. For the avoidance of doubt, where
          Exceptions and Limitations apply to Your use, this Public
          License does not apply, and You do not need to comply with
          its terms and conditions.

       3. Term. The term of this Public License is specified in Section
          6(a).

       4. Media and formats; technical modifications allowed. The
          Licensor authorizes You to exercise the Licensed Rights in
          all media and formats whether now known or hereafter created,
          and to make technical modifications necessary to do so. The
          Licensor waives and/or agrees not to assert any right or
          authority to forbid You from making technical modifications
          necessary to exercise the Licensed Rights, including
          technical modifications necessary to circumvent Effective
          Technological Measures. For purposes of this Public License,
          simply making modifications authorized by this Section 2(a)
          (4) never produces Adapted Material.

       5. Downstream recipients.

            a. Offer from the Licensor -- Licensed Material. Every
               recipient of the Licensed Material automatically
               receives an offer from the Licensor to exercise the
               Licensed Rights under the terms and conditions of this
               Public License.

            b. No downstream restrictions. You may not offer or impose
               any additional or different terms or conditions on, or
               apply any Effective Technological Measures to, the
               Licensed Material if doing so restricts exercise of the
               Licensed Rights by any recipient of the Licensed
               Material.

       6. No endorsement. Nothing in this Public License constitutes or
          may be construed as permission to assert or imply that You
          are, or that Your use of the Licensed Material is, connected
          with, or sponsored, endorsed, or granted official status by,
          the Licensor or others designated to receive attribution as
          provided in Section 3(a)(1)(A)(i).

  b. Other rights.

       1. Moral rights, such as the right of integrity, are not
          licensed under this Public License, nor are publicity,
          privacy, and/or other similar personality rights; however, to
          the extent possible, the Licensor waives and/or agrees not to
          assert any such rights held by the Licensor to the limited
          extent necessary to allow You to exercise the Licensed
          Rights, but not otherwise.

       2. Patent and trademark rights are not licensed under this
          Public License.

       3. To the extent possible, the Licensor waives any right to
          collect royalties from You for the exercise of the Licensed
          Rights, whether directly or through a collecting society
          under any voluntary or waivable statutory or compulsory
          licensing scheme. In all other cases the Licensor expressly
          reserves any right to collect such royalties.


Section 3 -- License Conditions.

Your exercise of the Licensed Rights is expressly made subject to the
following conditions.

  a. Attribution.

       1. If You Share the Licensed Material (including in modified
          form), You must:

            a. retain the following if it is supplied by the Licensor
               with the Licensed Material:

                 i. identification of the creator(s) of the Licensed
                    Material and any others designated to receive
                    attribution, in any reasonable manner requested by
                    the Licensor (including by pseudonym if
                    designated);

                ii. a copyright notice;

               iii. a notice that refers to this Public License;

                iv. a notice that refers to the disclaimer of
                    warranties;

                 v. a URI or hyperlink to the Licensed Material to the
                    extent reasonably practicable;

            b. indicate if You modified the Licensed Material and
               retain an indication of any previous modifications; and

            c. indicate the Licensed Material is licensed under this
               Public License, and include the text of, or the URI or
               hyperlink to, this Public License.

       2. You may satisfy the conditions in Section 3(a)(1) in any
          reasonable manner based on the medium, means, and context in
          which You Share the Licensed Material. For example, it may be
          reasonable to satisfy the conditions by providing a URI or
          hyperlink to a resource that includes the required
          information.

       3. If requested by the Licensor, You must remove any of the
          information required by Section 3(a)(1)(A) to the extent
          reasonably practicable.

       4. If You Share Adapted Material You produce, the Adapter's
          License You apply must not prevent recipients of the Adapted
          Material from complying with this Public License.


Section 4 -- Sui Generis Database Rights.

Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:

  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
     to extract, reuse, reproduce, and Share all or a substantial
     portion of the contents of the database;

  b. if You include all or a substantial portion of the database
     contents in a database in which You have Sui Generis Database
     Rights, then the database in which You have Sui Generis Database
     Rights (but not its individual contents) is Adapted Material; and

  c. You must comply with the conditions in Section 3(a) if You Share
     all or a substantial portion of the contents of the database.

For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.


Section 5 -- Disclaimer of Warranties and Limitation of Liability.

  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.

  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.

  c. The disclaimer of warranties and limitation of liability provided
     above shall be interpreted in a manner that, to the extent
     possible, most closely approximates an absolute disclaimer and
     waiver of all liability.


Section 6 -- Term and Termination.

  a. This Public License applies for the term of the Copyright and
     Similar Rights licensed here. However, if You fail to comply with
     this Public License, then Your rights under this Public License
     terminate automatically.

  b. Where Your right to use the Licensed Material has terminated under
     Section 6(a), it reinstates:

       1. automatically as of the date the violation is cured, provided
          it is cured within 30 days of Your discovery of the
          violation; or

       2. upon express reinstatement by the Licensor.

     For the avoidance of doubt, this Section 6(b) does not affect any
     right the Licensor may have to seek remedies for Your violations
     of this Public License.

  c. For the avoidance of doubt, the Licensor may also offer the
     Licensed Material under separate terms or conditions or stop
     distributing the Licensed Material at any time; however, doing so
     will not terminate this Public License.

  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
     License.


Section 7 -- Other Terms and Conditions.

  a. The Licensor shall not be bound by any additional or different
     terms or conditions communicated by You unless expressly agreed.

  b. Any arrangements, understandings, or agreements regarding the
     Licensed Material not stated herein are separate from and
     independent of the terms and conditions of this Public License.


Section 8 -- Interpretation.

  a. For the avoidance of doubt, this Public License does not, and
     shall not be interpreted to, reduce, limit, restrict, or impose
     conditions on any use of the Licensed Material that could lawfully
     be made without permission under this Public License.

  b. To the extent possible, if any provision of this Public License is
     deemed unenforceable, it shall be automatically reformed to the
     minimum extent necessary to make it enforceable. If the provision
     cannot be reformed, it shall be severed from this Public License
     without affecting the enforceability of the remaining terms and
     conditions.

  c. No term or condition of this Public License will be waived and no
     failure to comply consented to unless expressly agreed to by the
     Licensor.

  d. Nothing in this Public License constitutes or may be interpreted
     as a limitation upon, or waiver of, any privileges and immunities
     that apply to the Licensor or You, including from the legal
     processes of any jurisdiction or authority.


=======================================================================

Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the "Licensor." Except for the limited purpose of indicating
that material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.

Creative Commons may be contacted at creativecommons.org.


================================================
FILE: Libraries/.eslintrc
================================================
{
  "rules": {
    // This folder currently runs through babel and doesn't need to be
    // compatible with node 4
    "comma-dangle": 0
  }
}


================================================
FILE: Libraries/ART/ART.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		0CF68B051AF0549300FF9E5C /* ARTGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68ADE1AF0549300FF9E5C /* ARTGroup.m */; };
		0CF68B061AF0549300FF9E5C /* ARTNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE01AF0549300FF9E5C /* ARTNode.m */; };
		0CF68B071AF0549300FF9E5C /* ARTRenderable.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE21AF0549300FF9E5C /* ARTRenderable.m */; };
		0CF68B081AF0549300FF9E5C /* ARTShape.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE41AF0549300FF9E5C /* ARTShape.m */; };
		0CF68B091AF0549300FF9E5C /* ARTSurfaceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE61AF0549300FF9E5C /* ARTSurfaceView.m */; };
		0CF68B0A1AF0549300FF9E5C /* ARTText.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE81AF0549300FF9E5C /* ARTText.m */; };
		0CF68B0B1AF0549300FF9E5C /* ARTBrush.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AEC1AF0549300FF9E5C /* ARTBrush.m */; };
		0CF68B0C1AF0549300FF9E5C /* ARTLinearGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AEE1AF0549300FF9E5C /* ARTLinearGradient.m */; };
		0CF68B0D1AF0549300FF9E5C /* ARTPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF01AF0549300FF9E5C /* ARTPattern.m */; };
		0CF68B0E1AF0549300FF9E5C /* ARTRadialGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF21AF0549300FF9E5C /* ARTRadialGradient.m */; };
		0CF68B0F1AF0549300FF9E5C /* ARTSolidColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF41AF0549300FF9E5C /* ARTSolidColor.m */; };
		0CF68B101AF0549300FF9E5C /* RCTConvert+ART.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF71AF0549300FF9E5C /* RCTConvert+ART.m */; };
		0CF68B111AF0549300FF9E5C /* ARTGroupManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFA1AF0549300FF9E5C /* ARTGroupManager.m */; };
		0CF68B121AF0549300FF9E5C /* ARTNodeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFC1AF0549300FF9E5C /* ARTNodeManager.m */; };
		0CF68B131AF0549300FF9E5C /* ARTRenderableManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFE1AF0549300FF9E5C /* ARTRenderableManager.m */; };
		0CF68B141AF0549300FF9E5C /* ARTShapeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B001AF0549300FF9E5C /* ARTShapeManager.m */; };
		0CF68B151AF0549300FF9E5C /* ARTSurfaceViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B021AF0549300FF9E5C /* ARTSurfaceViewManager.m */; };
		0CF68B161AF0549300FF9E5C /* ARTTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B041AF0549300FF9E5C /* ARTTextManager.m */; };
		325CF7AD1E5F2ABA00AC9606 /* ARTBrush.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AEC1AF0549300FF9E5C /* ARTBrush.m */; };
		325CF7AE1E5F2ABA00AC9606 /* ARTLinearGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AEE1AF0549300FF9E5C /* ARTLinearGradient.m */; };
		325CF7AF1E5F2ABA00AC9606 /* ARTPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF01AF0549300FF9E5C /* ARTPattern.m */; };
		325CF7B01E5F2ABA00AC9606 /* ARTRadialGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF21AF0549300FF9E5C /* ARTRadialGradient.m */; };
		325CF7B11E5F2ABA00AC9606 /* ARTSolidColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF41AF0549300FF9E5C /* ARTSolidColor.m */; };
		325CF7B21E5F2ABA00AC9606 /* ARTGroupManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFA1AF0549300FF9E5C /* ARTGroupManager.m */; };
		325CF7B31E5F2ABA00AC9606 /* ARTNodeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFC1AF0549300FF9E5C /* ARTNodeManager.m */; };
		325CF7B41E5F2ABA00AC9606 /* ARTRenderableManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AFE1AF0549300FF9E5C /* ARTRenderableManager.m */; };
		325CF7B51E5F2ABA00AC9606 /* ARTShapeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B001AF0549300FF9E5C /* ARTShapeManager.m */; };
		325CF7B61E5F2ABA00AC9606 /* ARTSurfaceViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B021AF0549300FF9E5C /* ARTSurfaceViewManager.m */; };
		325CF7B71E5F2ABA00AC9606 /* ARTTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68B041AF0549300FF9E5C /* ARTTextManager.m */; };
		325CF7B81E5F2ABA00AC9606 /* ARTGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68ADE1AF0549300FF9E5C /* ARTGroup.m */; };
		325CF7B91E5F2ABA00AC9606 /* ARTNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE01AF0549300FF9E5C /* ARTNode.m */; };
		325CF7BA1E5F2ABA00AC9606 /* ARTRenderable.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE21AF0549300FF9E5C /* ARTRenderable.m */; };
		325CF7BB1E5F2ABA00AC9606 /* ARTShape.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE41AF0549300FF9E5C /* ARTShape.m */; };
		325CF7BC1E5F2ABA00AC9606 /* ARTSurfaceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE61AF0549300FF9E5C /* ARTSurfaceView.m */; };
		325CF7BD1E5F2ABA00AC9606 /* ARTText.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AE81AF0549300FF9E5C /* ARTText.m */; };
		325CF7BE1E5F2ABA00AC9606 /* RCTConvert+ART.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF68AF71AF0549300FF9E5C /* RCTConvert+ART.m */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		0CF68ABF1AF0540F00FF9E5C /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "include/$(PRODUCT_NAME)";
			dstSubfolderSpec = 16;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		323A12851E5F266B004975B8 /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "include/$(PRODUCT_NAME)";
			dstSubfolderSpec = 16;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		0CF68AC11AF0540F00FF9E5C /* libART.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libART.a; sourceTree = BUILT_PRODUCTS_DIR; };
		0CF68ADB1AF0549300FF9E5C /* ARTCGFloatArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTCGFloatArray.h; sourceTree = "<group>"; };
		0CF68ADC1AF0549300FF9E5C /* ARTContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTContainer.h; sourceTree = "<group>"; };
		0CF68ADD1AF0549300FF9E5C /* ARTGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTGroup.h; sourceTree = "<group>"; };
		0CF68ADE1AF0549300FF9E5C /* ARTGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTGroup.m; sourceTree = "<group>"; };
		0CF68ADF1AF0549300FF9E5C /* ARTNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTNode.h; sourceTree = "<group>"; };
		0CF68AE01AF0549300FF9E5C /* ARTNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTNode.m; sourceTree = "<group>"; };
		0CF68AE11AF0549300FF9E5C /* ARTRenderable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRenderable.h; sourceTree = "<group>"; };
		0CF68AE21AF0549300FF9E5C /* ARTRenderable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRenderable.m; sourceTree = "<group>"; };
		0CF68AE31AF0549300FF9E5C /* ARTShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTShape.h; sourceTree = "<group>"; };
		0CF68AE41AF0549300FF9E5C /* ARTShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTShape.m; sourceTree = "<group>"; };
		0CF68AE51AF0549300FF9E5C /* ARTSurfaceView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTSurfaceView.h; sourceTree = "<group>"; };
		0CF68AE61AF0549300FF9E5C /* ARTSurfaceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTSurfaceView.m; sourceTree = "<group>"; };
		0CF68AE71AF0549300FF9E5C /* ARTText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTText.h; sourceTree = "<group>"; };
		0CF68AE81AF0549300FF9E5C /* ARTText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTText.m; sourceTree = "<group>"; };
		0CF68AE91AF0549300FF9E5C /* ARTTextFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTTextFrame.h; sourceTree = "<group>"; };
		0CF68AEB1AF0549300FF9E5C /* ARTBrush.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTBrush.h; sourceTree = "<group>"; };
		0CF68AEC1AF0549300FF9E5C /* ARTBrush.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTBrush.m; sourceTree = "<group>"; };
		0CF68AED1AF0549300FF9E5C /* ARTLinearGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTLinearGradient.h; sourceTree = "<group>"; };
		0CF68AEE1AF0549300FF9E5C /* ARTLinearGradient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTLinearGradient.m; sourceTree = "<group>"; };
		0CF68AEF1AF0549300FF9E5C /* ARTPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTPattern.h; sourceTree = "<group>"; };
		0CF68AF01AF0549300FF9E5C /* ARTPattern.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTPattern.m; sourceTree = "<group>"; };
		0CF68AF11AF0549300FF9E5C /* ARTRadialGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRadialGradient.h; sourceTree = "<group>"; };
		0CF68AF21AF0549300FF9E5C /* ARTRadialGradient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRadialGradient.m; sourceTree = "<group>"; };
		0CF68AF31AF0549300FF9E5C /* ARTSolidColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTSolidColor.h; sourceTree = "<group>"; };
		0CF68AF41AF0549300FF9E5C /* ARTSolidColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTSolidColor.m; sourceTree = "<group>"; };
		0CF68AF61AF0549300FF9E5C /* RCTConvert+ART.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+ART.h"; sourceTree = "<group>"; };
		0CF68AF71AF0549300FF9E5C /* RCTConvert+ART.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+ART.m"; sourceTree = "<group>"; };
		0CF68AF91AF0549300FF9E5C /* ARTGroupManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTGroupManager.h; sourceTree = "<group>"; };
		0CF68AFA1AF0549300FF9E5C /* ARTGroupManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTGroupManager.m; sourceTree = "<group>"; };
		0CF68AFB1AF0549300FF9E5C /* ARTNodeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTNodeManager.h; sourceTree = "<group>"; };
		0CF68AFC1AF0549300FF9E5C /* ARTNodeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTNodeManager.m; sourceTree = "<group>"; };
		0CF68AFD1AF0549300FF9E5C /* ARTRenderableManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTRenderableManager.h; sourceTree = "<group>"; };
		0CF68AFE1AF0549300FF9E5C /* ARTRenderableManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTRenderableManager.m; sourceTree = "<group>"; };
		0CF68AFF1AF0549300FF9E5C /* ARTShapeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTShapeManager.h; sourceTree = "<group>"; };
		0CF68B001AF0549300FF9E5C /* ARTShapeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTShapeManager.m; sourceTree = "<group>"; };
		0CF68B011AF0549300FF9E5C /* ARTSurfaceViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTSurfaceViewManager.h; sourceTree = "<group>"; };
		0CF68B021AF0549300FF9E5C /* ARTSurfaceViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTSurfaceViewManager.m; sourceTree = "<group>"; };
		0CF68B031AF0549300FF9E5C /* ARTTextManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTTextManager.h; sourceTree = "<group>"; };
		0CF68B041AF0549300FF9E5C /* ARTTextManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTTextManager.m; sourceTree = "<group>"; };
		323A12871E5F266B004975B8 /* libART-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libART-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		0CF68ABE1AF0540F00FF9E5C /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		323A12841E5F266B004975B8 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		0CF68AB81AF0540F00FF9E5C = {
			isa = PBXGroup;
			children = (
				0CF68AEA1AF0549300FF9E5C /* Brushes */,
				0CF68AF81AF0549300FF9E5C /* ViewManagers */,
				0CF68ADB1AF0549300FF9E5C /* ARTCGFloatArray.h */,
				0CF68ADC1AF0549300FF9E5C /* ARTContainer.h */,
				0CF68ADD1AF0549300FF9E5C /* ARTGroup.h */,
				0CF68ADE1AF0549300FF9E5C /* ARTGroup.m */,
				0CF68ADF1AF0549300FF9E5C /* ARTNode.h */,
				0CF68AE01AF0549300FF9E5C /* ARTNode.m */,
				0CF68AE11AF0549300FF9E5C /* ARTRenderable.h */,
				0CF68AE21AF0549300FF9E5C /* ARTRenderable.m */,
				0CF68AE31AF0549300FF9E5C /* ARTShape.h */,
				0CF68AE41AF0549300FF9E5C /* ARTShape.m */,
				0CF68AE51AF0549300FF9E5C /* ARTSurfaceView.h */,
				0CF68AE61AF0549300FF9E5C /* ARTSurfaceView.m */,
				0CF68AE71AF0549300FF9E5C /* ARTText.h */,
				0CF68AE81AF0549300FF9E5C /* ARTText.m */,
				0CF68AE91AF0549300FF9E5C /* ARTTextFrame.h */,
				0CF68AF61AF0549300FF9E5C /* RCTConvert+ART.h */,
				0CF68AF71AF0549300FF9E5C /* RCTConvert+ART.m */,
				0CF68AC21AF0540F00FF9E5C /* Products */,
			);
			indentWidth = 2;
			sourceTree = "<group>";
			tabWidth = 2;
			usesTabs = 0;
		};
		0CF68AC21AF0540F00FF9E5C /* Products */ = {
			isa = PBXGroup;
			children = (
				0CF68AC11AF0540F00FF9E5C /* libART.a */,
				323A12871E5F266B004975B8 /* libART-tvOS.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		0CF68AEA1AF0549300FF9E5C /* Brushes */ = {
			isa = PBXGroup;
			children = (
				0CF68AEB1AF0549300FF9E5C /* ARTBrush.h */,
				0CF68AEC1AF0549300FF9E5C /* ARTBrush.m */,
				0CF68AED1AF0549300FF9E5C /* ARTLinearGradient.h */,
				0CF68AEE1AF0549300FF9E5C /* ARTLinearGradient.m */,
				0CF68AEF1AF0549300FF9E5C /* ARTPattern.h */,
				0CF68AF01AF0549300FF9E5C /* ARTPattern.m */,
				0CF68AF11AF0549300FF9E5C /* ARTRadialGradient.h */,
				0CF68AF21AF0549300FF9E5C /* ARTRadialGradient.m */,
				0CF68AF31AF0549300FF9E5C /* ARTSolidColor.h */,
				0CF68AF41AF0549300FF9E5C /* ARTSolidColor.m */,
			);
			path = Brushes;
			sourceTree = "<group>";
		};
		0CF68AF81AF0549300FF9E5C /* ViewManagers */ = {
			isa = PBXGroup;
			children = (
				0CF68AF91AF0549300FF9E5C /* ARTGroupManager.h */,
				0CF68AFA1AF0549300FF9E5C /* ARTGroupManager.m */,
				0CF68AFB1AF0549300FF9E5C /* ARTNodeManager.h */,
				0CF68AFC1AF0549300FF9E5C /* ARTNodeManager.m */,
				0CF68AFD1AF0549300FF9E5C /* ARTRenderableManager.h */,
				0CF68AFE1AF0549300FF9E5C /* ARTRenderableManager.m */,
				0CF68AFF1AF0549300FF9E5C /* ARTShapeManager.h */,
				0CF68B001AF0549300FF9E5C /* ARTShapeManager.m */,
				0CF68B011AF0549300FF9E5C /* ARTSurfaceViewManager.h */,
				0CF68B021AF0549300FF9E5C /* ARTSurfaceViewManager.m */,
				0CF68B031AF0549300FF9E5C /* ARTTextManager.h */,
				0CF68B041AF0549300FF9E5C /* ARTTextManager.m */,
			);
			path = ViewManagers;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		0CF68AC01AF0540F00FF9E5C /* ART */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0CF68AD51AF0540F00FF9E5C /* Build configuration list for PBXNativeTarget "ART" */;
			buildPhases = (
				0CF68ABD1AF0540F00FF9E5C /* Sources */,
				0CF68ABE1AF0540F00FF9E5C /* Frameworks */,
				0CF68ABF1AF0540F00FF9E5C /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = ART;
			productName = ART;
			productReference = 0CF68AC11AF0540F00FF9E5C /* libART.a */;
			productType = "com.apple.product-type.library.static";
		};
		323A12861E5F266B004975B8 /* ART-tvOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 323A128D1E5F266B004975B8 /* Build configuration list for PBXNativeTarget "ART-tvOS" */;
			buildPhases = (
				323A12831E5F266B004975B8 /* Sources */,
				323A12841E5F266B004975B8 /* Frameworks */,
				323A12851E5F266B004975B8 /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "ART-tvOS";
			productName = "ART-tvOS";
			productReference = 323A12871E5F266B004975B8 /* libART-tvOS.a */;
			productType = "com.apple.product-type.library.static";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		0CF68AB91AF0540F00FF9E5C /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0620;
				TargetAttributes = {
					0CF68AC01AF0540F00FF9E5C = {
						CreatedOnToolsVersion = 6.2;
					};
					323A12861E5F266B004975B8 = {
						CreatedOnToolsVersion = 6.2;
						ProvisioningStyle = Automatic;
					};
				};
			};
			buildConfigurationList = 0CF68ABC1AF0540F00FF9E5C /* Build configuration list for PBXProject "ART" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 0CF68AB81AF0540F00FF9E5C;
			productRefGroup = 0CF68AC21AF0540F00FF9E5C /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				0CF68AC01AF0540F00FF9E5C /* ART */,
				323A12861E5F266B004975B8 /* ART-tvOS */,
			);
		};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
		0CF68ABD1AF0540F00FF9E5C /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0CF68B161AF0549300FF9E5C /* ARTTextManager.m in Sources */,
				0CF68B111AF0549300FF9E5C /* ARTGroupManager.m in Sources */,
				0CF68B0D1AF0549300FF9E5C /* ARTPattern.m in Sources */,
				0CF68B0A1AF0549300FF9E5C /* ARTText.m in Sources */,
				0CF68B121AF0549300FF9E5C /* ARTNodeManager.m in Sources */,
				0CF68B051AF0549300FF9E5C /* ARTGroup.m in Sources */,
				0CF68B131AF0549300FF9E5C /* ARTRenderableManager.m in Sources */,
				0CF68B091AF0549300FF9E5C /* ARTSurfaceView.m in Sources */,
				0CF68B0E1AF0549300FF9E5C /* ARTRadialGradient.m in Sources */,
				0CF68B151AF0549300FF9E5C /* ARTSurfaceViewManager.m in Sources */,
				0CF68B081AF0549300FF9E5C /* ARTShape.m in Sources */,
				0CF68B071AF0549300FF9E5C /* ARTRenderable.m in Sources */,
				0CF68B101AF0549300FF9E5C /* RCTConvert+ART.m in Sources */,
				0CF68B061AF0549300FF9E5C /* ARTNode.m in Sources */,
				0CF68B0F1AF0549300FF9E5C /* ARTSolidColor.m in Sources */,
				0CF68B0C1AF0549300FF9E5C /* ARTLinearGradient.m in Sources */,
				0CF68B0B1AF0549300FF9E5C /* ARTBrush.m in Sources */,
				0CF68B141AF0549300FF9E5C /* ARTShapeManager.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		323A12831E5F266B004975B8 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				325CF7B71E5F2ABA00AC9606 /* ARTTextManager.m in Sources */,
				325CF7B21E5F2ABA00AC9606 /* ARTGroupManager.m in Sources */,
				325CF7AF1E5F2ABA00AC9606 /* ARTPattern.m in Sources */,
				325CF7BD1E5F2ABA00AC9606 /* ARTText.m in Sources */,
				325CF7B31E5F2ABA00AC9606 /* ARTNodeManager.m in Sources */,
				325CF7B81E5F2ABA00AC9606 /* ARTGroup.m in Sources */,
				325CF7B41E5F2ABA00AC9606 /* ARTRenderableManager.m in Sources */,
				325CF7BC1E5F2ABA00AC9606 /* ARTSurfaceView.m in Sources */,
				325CF7B01E5F2ABA00AC9606 /* ARTRadialGradient.m in Sources */,
				325CF7B61E5F2ABA00AC9606 /* ARTSurfaceViewManager.m in Sources */,
				325CF7BB1E5F2ABA00AC9606 /* ARTShape.m in Sources */,
				325CF7BA1E5F2ABA00AC9606 /* ARTRenderable.m in Sources */,
				325CF7BE1E5F2ABA00AC9606 /* RCTConvert+ART.m in Sources */,
				325CF7B91E5F2ABA00AC9606 /* ARTNode.m in Sources */,
				325CF7B11E5F2ABA00AC9606 /* ARTSolidColor.m in Sources */,
				325CF7AE1E5F2ABA00AC9606 /* ARTLinearGradient.m in Sources */,
				325CF7AD1E5F2ABA00AC9606 /* ARTBrush.m in Sources */,
				325CF7B51E5F2ABA00AC9606 /* ARTShapeManager.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		0CF68AD31AF0540F00FF9E5C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				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 = 8.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SKIP_INSTALL = YES;
			};
			name = Debug;
		};
		0CF68AD41AF0540F00FF9E5C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				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 = 8.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SKIP_INSTALL = YES;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		0CF68AD61AF0540F00FF9E5C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				OTHER_LDFLAGS = "-ObjC";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
			};
			name = Debug;
		};
		0CF68AD71AF0540F00FF9E5C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				OTHER_LDFLAGS = "-ObjC";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
			};
			name = Release;
		};
		323A128E1E5F266B004975B8 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_TESTABILITY = YES;
				GCC_NO_COMMON_BLOCKS = YES;
				OTHER_LDFLAGS = "-ObjC";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				TVOS_DEPLOYMENT_TARGET = 9.2;
			};
			name = Debug;
		};
		323A128F1E5F266B004975B8 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_NO_COMMON_BLOCKS = YES;
				OTHER_LDFLAGS = "-ObjC";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				TVOS_DEPLOYMENT_TARGET = 9.2;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		0CF68ABC1AF0540F00FF9E5C /* Build configuration list for PBXProject "ART" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0CF68AD31AF0540F00FF9E5C /* Debug */,
				0CF68AD41AF0540F00FF9E5C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		0CF68AD51AF0540F00FF9E5C /* Build configuration list for PBXNativeTarget "ART" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0CF68AD61AF0540F00FF9E5C /* Debug */,
				0CF68AD71AF0540F00FF9E5C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		323A128D1E5F266B004975B8 /* Build configuration list for PBXNativeTarget "ART-tvOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				323A128E1E5F266B004975B8 /* Debug */,
				323A128F1E5F266B004975B8 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 0CF68AB91AF0540F00FF9E5C /* Project object */;
}


================================================
FILE: Libraries/ART/ARTCGFloatArray.h
================================================
/**
 * Copyright (c) 2015-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.
 */

// A little helper to make sure we have the right memory allocation ready for use.
// We assume that we will only this in one place so no reference counting is necessary.
// Needs to be freed when dealloced.

// This is fragile since this relies on these values not getting reused. Consider
// wrapping these in an Obj-C class or some ARC hackery to get refcounting.

typedef struct {
  size_t count;
  CGFloat *array;
} ARTCGFloatArray;


================================================
FILE: Libraries/ART/ARTContainer.h
================================================
/**
 * Copyright (c) 2015-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 <Foundation/Foundation.h>

@protocol ARTContainer <NSObject>

// This is used as a hook for child to mark it's parent as dirty.
// This bubbles up to the root which gets marked as dirty.
- (void)invalidate;

@end


================================================
FILE: Libraries/ART/ARTGroup.h
================================================
/**
 * Copyright (c) 2015-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 <Foundation/Foundation.h>

#import "ARTContainer.h"
#import "ARTNode.h"

@interface ARTGroup : ARTNode <ARTContainer>

@property (nonatomic, assign) CGRect clipping;

@end


================================================
FILE: Libraries/ART/ARTGroup.m
================================================
/**
 * Copyright (c) 2015-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 "ARTGroup.h"

@implementation ARTGroup

- (void)renderLayerTo:(CGContextRef)context
{

  if (!CGRectIsEmpty(self.clipping)) {
    CGContextClipToRect(context, self.clipping);
  }

  for (ARTNode *node in self.subviews) {
    [node renderTo:context];
  }
}

@end


================================================
FILE: Libraries/ART/ARTNode.h
================================================
/**
 * Copyright (c) 2015-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 <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import "React/NSView+React.h"

/**
 * ART nodes are implemented as empty UIViews but this is just an implementation detail to fit
 * into the existing view management. They should also be shadow views and painted on a background
 * thread.
 */

@interface ARTNode : NSView

@property (nonatomic, assign) CGFloat opacity;

- (void)invalidate;
- (void)renderTo:(CGContextRef)context;

/**
 * renderTo will take opacity into account and draw renderLayerTo off-screen if there is opacity
 * specified, then composite that onto the context. renderLayerTo always draws at opacity=1.
 * @abstract
 */
- (void)renderLayerTo:(CGContextRef)context;

@end


================================================
FILE: Libraries/ART/ARTNode.m
================================================
/**
 * Copyright (c) 2015-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 "ARTNode.h"

#import "ARTContainer.h"

@implementation ARTNode {
    CGAffineTransform _transform;
    //BOOL *_shouldBeTransformed;
}

- (BOOL)isFlipped
{
  return YES;
}

- (void)insertReactSubview:(NSView *)subview atIndex:(NSInteger)atIndex
{
    [super insertReactSubview:subview atIndex:atIndex];
    [self addSubview:subview];
    [self invalidate];
}

- (void)removeReactSubview:(NSView *)subview
{
    [super removeReactSubview:subview];
    [self invalidate];
}


- (void)didUpdateReactSubviews
{
  // Do nothing, as subviews are inserted by insertReactSubview:
}

- (void)setOpacity:(CGFloat)opacity
{
  [self invalidate];
  _opacity = opacity;
}

- (void)setTransform:(CGAffineTransform)transform
{
  [self invalidate];
  self.layer.affineTransform = _transform;
  _transform = transform;
}

- (void)invalidate
{
  id<ARTContainer> container = (id<ARTContainer>)self.superview;
  [container invalidate];
}

- (void)renderTo:(CGContextRef)context
{
  if (self.opacity <= 0) {
    // Nothing to paint
    return;
  }
  if (self.opacity >= 1) {
    // Just paint at full opacity
    CGContextSaveGState(context);
    CGContextConcatCTM(context, self.layer.affineTransform);
    CGContextSetAlpha(context, 1);
    [self renderLayerTo:context];
    CGContextRestoreGState(context);
    return;
  }
  // This needs to be painted on a layer before being composited.
  CGContextSaveGState(context);
  CGContextConcatCTM(context, self.layer.affineTransform);
  CGContextSetAlpha(context, self.opacity);
  CGContextBeginTransparencyLayer(context, NULL);
  [self renderLayerTo:context];
  CGContextEndTransparencyLayer(context);
  CGContextRestoreGState(context);
}

- (void)renderLayerTo:(CGContextRef)context
{
  // abstract
}

- (void)layout
{
  [super layout];
  self.layer.affineTransform = _transform;
}

@end


================================================
FILE: Libraries/ART/ARTRenderable.h
================================================
/**
 * Copyright (c) 2015-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 <Foundation/Foundation.h>

#import "ARTBrush.h"
#import "ARTCGFloatArray.h"
#import "ARTNode.h"

@interface ARTRenderable : ARTNode

@property (nonatomic, strong) ARTBrush *fill;
@property (nonatomic, assign) CGColorRef stroke;
@property (nonatomic, assign) CGFloat strokeWidth;
@property (nonatomic, assign) CGLineCap strokeCap;
@property (nonatomic, assign) CGLineJoin strokeJoin;
@property (nonatomic, assign) ARTCGFloatArray strokeDash;

@end


================================================
FILE: Libraries/ART/ARTRenderable.m
================================================
/**
 * Copyright (c) 2015-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 "ARTRenderable.h"

@implementation ARTRenderable

- (void)setFill:(ARTBrush *)fill
{
  [self invalidate];
  _fill = fill;
}

- (void)setStroke:(CGColorRef)stroke
{
  if (stroke == _stroke) {
    return;
  }
  [self invalidate];
  CGColorRelease(_stroke);
  _stroke = CGColorRetain(stroke);
}

- (void)setStrokeWidth:(CGFloat)strokeWidth
{
  [self invalidate];
  _strokeWidth = strokeWidth;
}

- (void)setStrokeCap:(CGLineCap)strokeCap
{
  [self invalidate];
  _strokeCap = strokeCap;
}

- (void)setStrokeJoin:(CGLineJoin)strokeJoin
{
  [self invalidate];
  _strokeJoin = strokeJoin;
}

- (void)setStrokeDash:(ARTCGFloatArray)strokeDash
{
  if (strokeDash.array == _strokeDash.array) {
    return;
  }
  if (_strokeDash.array) {
    free(_strokeDash.array);
  }
  [self invalidate];
  _strokeDash = strokeDash;
}

- (void)dealloc
{
  CGColorRelease(_stroke);
  if (_strokeDash.array) {
    free(_strokeDash.array);
  }
}

- (void)renderTo:(CGContextRef)context
{
  if (self.opacity <= 0 || self.opacity >= 1 || (self.fill && self.stroke)) {
    // If we have both fill and stroke, we will need to paint this using normal compositing
    [super renderTo: context];
    return;
  }
  // This is a terminal with only one painting. Therefore we don't need to paint this
  // off-screen. We can just composite it straight onto the buffer.
  CGContextSaveGState(context);
  CGContextConcatCTM(context, self.layer.affineTransform);
  CGContextSetAlpha(context, self.opacity);
  [self renderLayerTo:context];
  CGContextRestoreGState(context);
}

- (void)renderLayerTo:(CGContextRef)context
{
  // abstract
}

@end


================================================
FILE: Libraries/ART/ARTSerializablePath.js
================================================
/**
 * Copyright (c) 2015-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.
 *
 * @providesModule ARTSerializablePath
 */
'use strict';

// TODO: Move this into an ART mode called "serialized" or something

var Class = require('art/core/class.js');
var Path = require('art/core/path.js');

var MOVE_TO = 0;
var CLOSE = 1;
var LINE_TO = 2;
var CURVE_TO = 3;
var ARC = 4;

var SerializablePath = Class(Path, {

  initialize: function(path) {
    this.reset();
    if (path instanceof SerializablePath) {
      this.path = path.path.slice(0);
    } else if (path) {
      if (path.applyToPath) {
        path.applyToPath(this);
      } else {
        this.push(path);
      }
    }
  },

  onReset: function() {
    this.path = [];
  },

  onMove: function(sx, sy, x, y) {
    this.path.push(MOVE_TO, x, y);
  },

  onLine: function(sx, sy, x, y) {
    this.path.push(LINE_TO, x, y);
  },

  onBezierCurve: function(sx, sy, p1x, p1y, p2x, p2y, x, y) {
    this.path.push(CURVE_TO, p1x, p1y, p2x, p2y, x, y);
  },

  _arcToBezier: Path.prototype.onArc,

  onArc: function(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation) {
    if (rx !== ry || rotation) {
      return this._arcToBezier(
        sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation
      );
    }
    this.path.push(ARC, cx, cy, rx, sa, ea, ccw ? 0 : 1);
  },

  onClose: function() {
    this.path.push(CLOSE);
  },

  toJSON: function() {
    return this.path;
  }

});

module.exports = SerializablePath;


================================================
FILE: Libraries/ART/ARTShape.h
================================================
/**
 * Copyright (c) 2015-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 <Foundation/Foundation.h>

#import "ARTRenderable.h"

@interface ARTShape : ARTRenderable

@property (nonatomic, assign) CGPathRef d;

@end


================================================
FILE: Libraries/ART/ARTShape.m
================================================
/**
 * Copyright (c) 2015-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 "ARTShape.h"

@implementation ARTShape

- (void)setD:(CGPathRef)d
{
  if (d == _d) {
    return;
  }
  [self invalidate];
  CGPathRelease(_d);
  _d = CGPathRetain(d);
}

- (void)dealloc
{
  CGPathRelease(_d);
}

- (void)renderLayerTo:(CGContextRef)context
{
  if ((!self.fill && !self.stroke) || !self.d) {
    return;
  }

  CGPathDrawingMode mode = kCGPathStroke;
  if (self.fill) {
    if ([self.fill applyFillColor:context]) {
      mode = kCGPathFill;
    } else {
      CGContextSaveGState(context);
      CGContextAddPath(context, self.d);
      CGContextClip(context);
      [self.fill paint:context];
      CGContextRestoreGState(context);
      if (!self.stroke) {
        return;
      }
    }
  }
  if (self.stroke) {
    CGContextSetStrokeColorWithColor(context, self.stroke);
    CGContextSetLineWidth(context, self.strokeWidth);
    CGContextSetLineCap(context, self.strokeCap);
    CGContextSetLineJoin(context, self.strokeJoin);
    ARTCGFloatArray dash = self.strokeDash;
    if (dash.count) {
      CGContextSetLineDash(context, 0, dash.array, dash.count);
    }
    if (mode == kCGPathFill) {
      mode = kCGPathFillStroke;
    }
  }

  CGContextAddPath(context, self.d);
  CGContextDrawPath(context, mode);
}

@end


================================================
FILE: Libraries/ART/ARTSurfaceView.h
================================================
/**
 * Copyright (c) 2015-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 <Ap
Download .txt
gitextract_omq0812w/

├── .buckconfig
├── .circleci/
│   └── config.yml
├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .flowconfig
├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug.md
│       └── feature.md
├── .gitignore
├── .npmignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ContainerShip/
│   ├── Dockerfile.android
│   ├── Dockerfile.android-base
│   ├── Dockerfile.javascript
│   └── scripts/
│       ├── run-android-ci-instrumentation-tests.js
│       ├── run-android-docker-instrumentation-tests.sh
│       ├── run-android-docker-unit-tests.sh
│       ├── run-ci-e2e-tests.sh
│       └── run-instrumentation-tests-via-adb-shell.sh
├── DockerTests.md
├── IntegrationTests/
│   ├── AccessibilityManagerTest.js
│   ├── AppEventsTest.js
│   ├── AsyncStorageTest.js
│   ├── ImageCachePolicyTest.js
│   ├── ImageSnapshotTest.js
│   ├── IntegrationTestHarnessTest.js
│   ├── IntegrationTestsApp.js
│   ├── LayoutEventsTest.js
│   ├── LoggingTestModule.js
│   ├── PromiseTest.js
│   ├── PropertiesUpdateTest.js
│   ├── RCTRootViewIntegrationTestApp.js
│   ├── ReactContentSizeUpdateTest.js
│   ├── SimpleSnapshotTest.js
│   ├── SizeFlexibilityUpdateTest.js
│   ├── SyncMethodTest.js
│   ├── TimersTest.js
│   ├── WebSocketTest.js
│   ├── WebViewTest.js
│   ├── launchWebSocketServer.command
│   └── websocket_integration_test_server.js
├── Jenkinsfile
├── LICENSE
├── LICENSE-docs
├── Libraries/
│   ├── .eslintrc
│   ├── ART/
│   │   ├── ART.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── ARTCGFloatArray.h
│   │   ├── ARTContainer.h
│   │   ├── ARTGroup.h
│   │   ├── ARTGroup.m
│   │   ├── ARTNode.h
│   │   ├── ARTNode.m
│   │   ├── ARTRenderable.h
│   │   ├── ARTRenderable.m
│   │   ├── ARTSerializablePath.js
│   │   ├── ARTShape.h
│   │   ├── ARTShape.m
│   │   ├── ARTSurfaceView.h
│   │   ├── ARTSurfaceView.m
│   │   ├── ARTText.h
│   │   ├── ARTText.m
│   │   ├── ARTTextFrame.h
│   │   ├── Brushes/
│   │   │   ├── ARTBrush.h
│   │   │   ├── ARTBrush.m
│   │   │   ├── ARTLinearGradient.h
│   │   │   ├── ARTLinearGradient.m
│   │   │   ├── ARTPattern.h
│   │   │   ├── ARTPattern.m
│   │   │   ├── ARTRadialGradient.h
│   │   │   ├── ARTRadialGradient.m
│   │   │   ├── ARTSolidColor.h
│   │   │   └── ARTSolidColor.m
│   │   ├── RCTConvert+ART.h
│   │   ├── RCTConvert+ART.m
│   │   ├── ReactNativeART.js
│   │   └── ViewManagers/
│   │       ├── ARTGroupManager.h
│   │       ├── ARTGroupManager.m
│   │       ├── ARTNodeManager.h
│   │       ├── ARTNodeManager.m
│   │       ├── ARTRenderableManager.h
│   │       ├── ARTRenderableManager.m
│   │       ├── ARTShapeManager.h
│   │       ├── ARTShapeManager.m
│   │       ├── ARTSurfaceViewManager.h
│   │       ├── ARTSurfaceViewManager.m
│   │       ├── ARTTextManager.h
│   │       └── ARTTextManager.m
│   ├── ActionSheetIOS/
│   │   ├── ActionSheetIOS.js
│   │   ├── RCTActionSheet.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTActionSheetManager.h
│   │   └── RCTActionSheetManager.m
│   ├── Alert/
│   │   ├── Alert.js
│   │   ├── AlertIOS.js
│   │   ├── RCTAlertManager.android.js
│   │   └── RCTAlertManager.ios.js
│   ├── Animated/
│   │   ├── examples/
│   │   │   ├── demo.html
│   │   │   └── style.css
│   │   ├── release/
│   │   │   ├── gulpfile.js
│   │   │   └── package.json
│   │   └── src/
│   │       ├── Animated.js
│   │       ├── AnimatedEvent.js
│   │       ├── AnimatedImplementation.js
│   │       ├── AnimatedWeb.js
│   │       ├── Easing.js
│   │       ├── NativeAnimatedHelper.js
│   │       ├── SpringConfig.js
│   │       ├── __tests__/
│   │       │   ├── Animated-test.js
│   │       │   ├── AnimatedNative-test.js
│   │       │   ├── Easing-test.js
│   │       │   ├── Interpolation-test.js
│   │       │   └── bezier-test.js
│   │       ├── animations/
│   │       │   ├── Animation.js
│   │       │   ├── DecayAnimation.js
│   │       │   ├── SpringAnimation.js
│   │       │   └── TimingAnimation.js
│   │       ├── bezier.js
│   │       ├── createAnimatedComponent.js
│   │       ├── nodes/
│   │       │   ├── AnimatedAddition.js
│   │       │   ├── AnimatedDiffClamp.js
│   │       │   ├── AnimatedDivision.js
│   │       │   ├── AnimatedInterpolation.js
│   │       │   ├── AnimatedModulo.js
│   │       │   ├── AnimatedMultiplication.js
│   │       │   ├── AnimatedNode.js
│   │       │   ├── AnimatedProps.js
│   │       │   ├── AnimatedStyle.js
│   │       │   ├── AnimatedTracking.js
│   │       │   ├── AnimatedTransform.js
│   │       │   ├── AnimatedValue.js
│   │       │   ├── AnimatedValueXY.js
│   │       │   └── AnimatedWithChildren.js
│   │       └── polyfills/
│   │           ├── InteractionManager.js
│   │           ├── Set.js
│   │           └── flattenStyle.js
│   ├── AppState/
│   │   └── AppState.js
│   ├── BatchedBridge/
│   │   ├── BatchedBridge.js
│   │   ├── MessageQueue.js
│   │   ├── NativeModules.js
│   │   ├── __mocks__/
│   │   │   ├── MessageQueueTestConfig.js
│   │   │   └── MessageQueueTestModule.js
│   │   └── __tests__/
│   │       ├── MessageQueue-test.js
│   │       └── NativeModules-test.js
│   ├── Blob/
│   │   ├── Blob.js
│   │   ├── BlobTypes.js
│   │   ├── RCTBlob.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTBlobManager.h
│   │   ├── RCTBlobManager.m
│   │   └── URL.js
│   ├── BugReporting/
│   │   ├── BugReporting.js
│   │   ├── dumpReactTree.js
│   │   └── getReactData.js
│   ├── CameraRoll/
│   │   ├── CameraRoll.js
│   │   ├── ImagePickerIOS.js
│   │   ├── RCTAssetsLibraryRequestHandler.h
│   │   ├── RCTAssetsLibraryRequestHandler.m
│   │   ├── RCTCameraRoll.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTCameraRollManager.h
│   │   ├── RCTCameraRollManager.m
│   │   ├── RCTImagePickerManager.h
│   │   ├── RCTImagePickerManager.m
│   │   ├── RCTPhotoLibraryImageLoader.h
│   │   └── RCTPhotoLibraryImageLoader.m
│   ├── Components/
│   │   ├── AccessibilityInfo/
│   │   │   ├── AccessibilityInfo.android.js
│   │   │   ├── AccessibilityInfo.ios.js
│   │   │   └── AccessibilityInfo.macos.js
│   │   ├── ActivityIndicator/
│   │   │   └── ActivityIndicator.js
│   │   ├── AppleTV/
│   │   │   ├── TVEventHandler.android.js
│   │   │   ├── TVEventHandler.ios.js
│   │   │   ├── TVEventHandler.macos.js
│   │   │   └── TVViewPropTypes.js
│   │   ├── Button.js
│   │   ├── CheckBox/
│   │   │   ├── CheckBox.android.js
│   │   │   ├── CheckBox.ios.js
│   │   │   └── CheckBox.macos.js
│   │   ├── Clipboard/
│   │   │   └── Clipboard.js
│   │   ├── Cursor/
│   │   │   └── Cursor.macos.js
│   │   ├── DatePicker/
│   │   │   └── DatePickerIOS.macos.js
│   │   ├── DatePickerAndroid/
│   │   │   ├── DatePickerAndroid.android.js
│   │   │   ├── DatePickerAndroid.ios.js
│   │   │   └── DatePickerAndroid.macos.js
│   │   ├── DrawerAndroid/
│   │   │   ├── DrawerLayoutAndroid.android.js
│   │   │   └── DrawerLayoutAndroid.macos.js
│   │   ├── Intent/
│   │   │   └── IntentAndroid.macos.js
│   │   ├── Keyboard/
│   │   │   ├── Keyboard.ios.js
│   │   │   ├── Keyboard.macos.js
│   │   │   └── KeyboardAvoidingView.js
│   │   ├── LazyRenderer.js
│   │   ├── MaskedView/
│   │   │   ├── MaskedViewIOS.android.js
│   │   │   ├── MaskedViewIOS.ios.js
│   │   │   └── MaskedViewIOS.macos.js
│   │   ├── Navigation/
│   │   │   ├── NavigatorIOS.ios.js
│   │   │   └── NavigatorIOS.macos.js
│   │   ├── Picker/
│   │   │   ├── Picker.js
│   │   │   ├── PickerAndroid.android.js
│   │   │   ├── PickerAndroid.ios.js
│   │   │   ├── PickerIOS.android.js
│   │   │   └── PickerIOS.ios.js
│   │   ├── ProgressBarAndroid/
│   │   │   ├── ProgressBarAndroid.android.js
│   │   │   └── ProgressBarAndroid.macos.js
│   │   ├── ProgressViewIOS/
│   │   │   ├── ProgressViewIOS.android.js
│   │   │   ├── ProgressViewIOS.ios.js
│   │   │   └── ProgressViewIOS.macos.js
│   │   ├── RefreshControl/
│   │   │   ├── RefreshControl.js
│   │   │   └── __mocks__/
│   │   │       └── RefreshControlMock.js
│   │   ├── SafeAreaView/
│   │   │   ├── SafeAreaView.android.js
│   │   │   ├── SafeAreaView.ios.js
│   │   │   └── SafeAreaView.macos.js
│   │   ├── ScrollResponder.js
│   │   ├── ScrollView/
│   │   │   ├── RecyclerViewBackedScrollView.macos.js
│   │   │   ├── ScrollView.js
│   │   │   ├── ScrollViewStickyHeader.js
│   │   │   ├── __mocks__/
│   │   │   │   └── ScrollViewMock.js
│   │   │   └── processDecelerationRate.js
│   │   ├── SegmentedControlIOS/
│   │   │   ├── SegmentedControlIOS.android.js
│   │   │   └── SegmentedControlIOS.macos.js
│   │   ├── Slider/
│   │   │   └── Slider.js
│   │   ├── StaticContainer.react.js
│   │   ├── StaticRenderer.js
│   │   ├── StatusBar/
│   │   │   ├── StatusBar.js
│   │   │   ├── StatusBarIOS.android.js
│   │   │   ├── StatusBarIOS.ios.js
│   │   │   └── StatusBarIOS.macos.js
│   │   ├── Subscribable.js
│   │   ├── Switch/
│   │   │   └── Switch.js
│   │   ├── TabBarIOS/
│   │   │   ├── TabBarIOS.android.js
│   │   │   ├── TabBarIOS.ios.js
│   │   │   ├── TabBarIOS.macos.js
│   │   │   ├── TabBarItemIOS.android.js
│   │   │   └── TabBarItemIOS.ios.js
│   │   ├── TextInput/
│   │   │   ├── TextInput.js
│   │   │   └── TextInputState.js
│   │   ├── TimePickerAndroid/
│   │   │   ├── TimePickerAndroid.android.js
│   │   │   ├── TimePickerAndroid.ios.js
│   │   │   └── TimePickerAndroid.macos.js
│   │   ├── ToastAndroid/
│   │   │   ├── ToastAndroid.android.js
│   │   │   └── ToastAndroid.ios.js
│   │   ├── ToolbarAndroid/
│   │   │   ├── ToolbarAndroid.android.js
│   │   │   └── ToolbarAndroid.ios.js
│   │   ├── Touchable/
│   │   │   ├── BoundingDimensions.js
│   │   │   ├── PooledClass.js
│   │   │   ├── Position.js
│   │   │   ├── Touchable.js
│   │   │   ├── TouchableBounce.js
│   │   │   ├── TouchableHighlight.js
│   │   │   ├── TouchableNativeFeedback.android.js
│   │   │   ├── TouchableNativeFeedback.ios.js
│   │   │   ├── TouchableNativeFeedback.macos.js
│   │   │   ├── TouchableOpacity.js
│   │   │   ├── TouchableWithoutFeedback.js
│   │   │   ├── __mocks__/
│   │   │   │   └── ensureComponentIsNative.js
│   │   │   ├── __tests__/
│   │   │   │   ├── TouchableHighlight-test.js
│   │   │   │   └── __snapshots__/
│   │   │   │       └── TouchableHighlight-test.js.snap
│   │   │   ├── ensureComponentIsNative.js
│   │   │   └── ensurePositiveDelayProps.js
│   │   ├── UnimplementedViews/
│   │   │   └── UnimplementedView.js
│   │   ├── View/
│   │   │   ├── PlatformViewPropTypes.android.js
│   │   │   ├── PlatformViewPropTypes.ios.js
│   │   │   ├── PlatformViewPropTypes.macos.js
│   │   │   ├── ReactNativeStyleAttributes.js
│   │   │   ├── ReactNativeViewAttributes.js
│   │   │   ├── ShadowPropTypesIOS.js
│   │   │   ├── View.js
│   │   │   ├── View.js.flow
│   │   │   ├── ViewAccessibility.js
│   │   │   ├── ViewPropTypes.js
│   │   │   └── ViewStylePropTypes.js
│   │   ├── ViewPager/
│   │   │   ├── ViewPagerAndroid.android.js
│   │   │   ├── ViewPagerAndroid.ios.js
│   │   │   └── ViewPagerAndroid.macos.js
│   │   └── WebView/
│   │       ├── WebView.android.js
│   │       └── WebView.macos.js
│   ├── Core/
│   │   ├── Devtools/
│   │   │   ├── __tests__/
│   │   │   │   └── parseErrorStack-test.js
│   │   │   ├── getDevServer.js
│   │   │   ├── openFileInEditor.js
│   │   │   ├── parseErrorStack.js
│   │   │   ├── setupDevtools.js
│   │   │   └── symbolicateStackTrace.js
│   │   ├── ExceptionsManager.js
│   │   ├── InitializeCore.js
│   │   ├── ReactNativeVersion.js
│   │   ├── ReactNativeVersionCheck.js
│   │   ├── Timers/
│   │   │   └── JSTimers.js
│   │   ├── __mocks__/
│   │   │   └── ErrorUtils.js
│   │   └── __tests__/
│   │       └── ReactNativeVersionCheck-test.js
│   ├── EventEmitter/
│   │   ├── MissingNativeEventEmitterShim.js
│   │   ├── NativeEventEmitter.js
│   │   ├── RCTDeviceEventEmitter.js
│   │   ├── RCTEventEmitter.js
│   │   ├── RCTNativeAppEventEmitter.js
│   │   └── __mocks__/
│   │       └── NativeEventEmitter.js
│   ├── Experimental/
│   │   ├── Incremental.js
│   │   ├── IncrementalExample.js
│   │   ├── IncrementalGroup.js
│   │   ├── IncrementalPresenter.js
│   │   ├── SwipeableRow/
│   │   │   ├── SwipeableFlatList.js
│   │   │   ├── SwipeableListView.js
│   │   │   ├── SwipeableListViewDataSource.js
│   │   │   ├── SwipeableQuickActionButton.js
│   │   │   ├── SwipeableQuickActions.js
│   │   │   └── SwipeableRow.js
│   │   └── WindowedListView.js
│   ├── Geolocation/
│   │   ├── Geolocation.js
│   │   ├── RCTGeolocation.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTLocationObserver.h
│   │   └── RCTLocationObserver.m
│   ├── Image/
│   │   ├── AssetRegistry.js
│   │   ├── AssetSourceResolver.js
│   │   ├── Image.android.js
│   │   ├── Image.macos.js
│   │   ├── ImageBackground.js
│   │   ├── ImageEditor.js
│   │   ├── ImageResizeMode.js
│   │   ├── ImageSource.js
│   │   ├── ImageSourcePropType.js
│   │   ├── ImageStore.js
│   │   ├── ImageStylePropTypes.js
│   │   ├── RCTGIFImageDecoder.h
│   │   ├── RCTGIFImageDecoder.m
│   │   ├── RCTImage.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTImageBlurUtils.h
│   │   ├── RCTImageBlurUtils.m
│   │   ├── RCTImageCache.h
│   │   ├── RCTImageCache.m
│   │   ├── RCTImageEditingManager.h
│   │   ├── RCTImageEditingManager.m
│   │   ├── RCTImageLoader.h
│   │   ├── RCTImageLoader.m
│   │   ├── RCTImageShadowView.h
│   │   ├── RCTImageShadowView.m
│   │   ├── RCTImageStoreManager.h
│   │   ├── RCTImageStoreManager.m
│   │   ├── RCTImageUtils.h
│   │   ├── RCTImageUtils.m
│   │   ├── RCTImageView.h
│   │   ├── RCTImageView.m
│   │   ├── RCTImageViewManager.h
│   │   ├── RCTImageViewManager.m
│   │   ├── RCTLocalAssetImageLoader.h
│   │   ├── RCTLocalAssetImageLoader.m
│   │   ├── RCTResizeMode.h
│   │   ├── RCTResizeMode.m
│   │   ├── RelativeImageStub.js
│   │   ├── __tests__/
│   │   │   ├── __snapshots__/
│   │   │   │   └── assetRelativePathInSnapshot.js.snap
│   │   │   ├── assetRelativePathInSnapshot.js
│   │   │   └── resolveAssetSource-test.js
│   │   ├── nativeImageSource.js
│   │   └── resolveAssetSource.js
│   ├── Inspector/
│   │   ├── BorderBox.js
│   │   ├── BoxInspector.js
│   │   ├── ElementBox.js
│   │   ├── ElementProperties.js
│   │   ├── Inspector.js
│   │   ├── InspectorOverlay.js
│   │   ├── InspectorPanel.js
│   │   ├── NetworkOverlay.js
│   │   ├── PerformanceOverlay.js
│   │   ├── StyleInspector.js
│   │   └── resolveBoxStyle.js
│   ├── Interaction/
│   │   ├── Batchinator.js
│   │   ├── BridgeSpyStallHandler.js
│   │   ├── FrameRateLogger.js
│   │   ├── InteractionManager.js
│   │   ├── InteractionMixin.js
│   │   ├── InteractionStallDebugger.js
│   │   ├── JSEventLoopWatchdog.js
│   │   ├── PanResponder.js
│   │   ├── ReactPerfStallHandler.js
│   │   ├── TaskQueue.js
│   │   └── __tests__/
│   │       ├── Batchinator-test.js
│   │       ├── InteractionManager-test.js
│   │       ├── InteractionMixin-test.js
│   │       └── TaskQueue-test.js
│   ├── JSInspector/
│   │   ├── InspectorAgent.js
│   │   ├── JSInspector.js
│   │   └── NetworkAgent.js
│   ├── LayoutAnimation/
│   │   └── LayoutAnimation.js
│   ├── Linking/
│   │   └── Linking.js
│   ├── LinkingIOS/
│   │   ├── RCTLinking.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTLinkingManager.h
│   │   └── RCTLinkingManager.m
│   ├── Lists/
│   │   ├── FillRateHelper.js
│   │   ├── FlatList.js
│   │   ├── ListView/
│   │   │   ├── ListView.js
│   │   │   ├── ListViewDataSource.js
│   │   │   └── __mocks__/
│   │   │       └── ListViewMock.js
│   │   ├── MetroListView.js
│   │   ├── SectionList.js
│   │   ├── ViewabilityHelper.js
│   │   ├── VirtualizeUtils.js
│   │   ├── VirtualizedList.js
│   │   ├── VirtualizedSectionList.js
│   │   ├── __flowtests__/
│   │   │   ├── FlatList-flowtest.js
│   │   │   └── SectionList-flowtest.js
│   │   └── __tests__/
│   │       ├── FillRateHelper-test.js
│   │       ├── FlatList-test.js
│   │       ├── SectionList-test.js
│   │       ├── ViewabilityHelper-test.js
│   │       ├── VirtualizeUtils-test.js
│   │       ├── VirtualizedList-test.js
│   │       └── __snapshots__/
│   │           ├── FlatList-test.js.snap
│   │           ├── SectionList-test.js.snap
│   │           ├── VirtualizeUtils-test.js.snap
│   │           └── VirtualizedList-test.js.snap
│   ├── Menu/
│   │   └── MenuManager.js
│   ├── Modal/
│   │   └── Modal.js
│   ├── NativeAnimation/
│   │   ├── Drivers/
│   │   │   ├── RCTAnimationDriver.h
│   │   │   ├── RCTDecayAnimation.h
│   │   │   ├── RCTDecayAnimation.m
│   │   │   ├── RCTEventAnimation.h
│   │   │   ├── RCTEventAnimation.m
│   │   │   ├── RCTFrameAnimation.h
│   │   │   ├── RCTFrameAnimation.m
│   │   │   ├── RCTSpringAnimation.h
│   │   │   └── RCTSpringAnimation.m
│   │   ├── Nodes/
│   │   │   ├── RCTAdditionAnimatedNode.h
│   │   │   ├── RCTAdditionAnimatedNode.m
│   │   │   ├── RCTAnimatedNode.h
│   │   │   ├── RCTAnimatedNode.m
│   │   │   ├── RCTDiffClampAnimatedNode.h
│   │   │   ├── RCTDiffClampAnimatedNode.m
│   │   │   ├── RCTDivisionAnimatedNode.h
│   │   │   ├── RCTDivisionAnimatedNode.m
│   │   │   ├── RCTInterpolationAnimatedNode.h
│   │   │   ├── RCTInterpolationAnimatedNode.m
│   │   │   ├── RCTModuloAnimatedNode.h
│   │   │   ├── RCTModuloAnimatedNode.m
│   │   │   ├── RCTMultiplicationAnimatedNode.h
│   │   │   ├── RCTMultiplicationAnimatedNode.m
│   │   │   ├── RCTPropsAnimatedNode.h
│   │   │   ├── RCTPropsAnimatedNode.m
│   │   │   ├── RCTStyleAnimatedNode.h
│   │   │   ├── RCTStyleAnimatedNode.m
│   │   │   ├── RCTTransformAnimatedNode.h
│   │   │   ├── RCTTransformAnimatedNode.m
│   │   │   ├── RCTValueAnimatedNode.h
│   │   │   └── RCTValueAnimatedNode.m
│   │   ├── RCTAnimation.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTAnimationUtils.h
│   │   ├── RCTAnimationUtils.m
│   │   ├── RCTNativeAnimatedModule.h
│   │   ├── RCTNativeAnimatedModule.m
│   │   ├── RCTNativeAnimatedNodesManager.h
│   │   └── RCTNativeAnimatedNodesManager.m
│   ├── NavigationExperimental/
│   │   └── NavigationReducer.js
│   ├── Network/
│   │   ├── FormData.js
│   │   ├── NetInfo.js
│   │   ├── RCTDataRequestHandler.h
│   │   ├── RCTDataRequestHandler.m
│   │   ├── RCTFileRequestHandler.h
│   │   ├── RCTFileRequestHandler.m
│   │   ├── RCTHTTPRequestHandler.h
│   │   ├── RCTHTTPRequestHandler.mm
│   │   ├── RCTNetInfo.h
│   │   ├── RCTNetInfo.m
│   │   ├── RCTNetwork.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTNetworkTask.h
│   │   ├── RCTNetworkTask.m
│   │   ├── RCTNetworking.android.js
│   │   ├── RCTNetworking.h
│   │   ├── RCTNetworking.ios.js
│   │   ├── RCTNetworking.macos.js
│   │   ├── RCTNetworking.mm
│   │   ├── XHRInterceptor.js
│   │   ├── XMLHttpRequest.js
│   │   ├── __tests__/
│   │   │   ├── FormData-test.js
│   │   │   └── XMLHttpRequest-test.js
│   │   ├── convertRequestBody.js
│   │   └── fetch.js
│   ├── Performance/
│   │   ├── QuickPerformanceLogger.js
│   │   ├── SamplingProfiler.js
│   │   └── Systrace.js
│   ├── PermissionsAndroid/
│   │   └── PermissionsAndroid.js
│   ├── Picker/
│   │   └── PickerIOS.macos.js
│   ├── Promise.js
│   ├── PushNotificationIOS/
│   │   ├── PushNotificationIOS.js
│   │   ├── RCTPushNotification.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTPushNotificationManager.h
│   │   └── RCTPushNotificationManager.m
│   ├── RCTTest/
│   │   ├── FBSnapshotTestCase/
│   │   │   ├── FBSnapshotTestCase.h
│   │   │   ├── FBSnapshotTestCase.m
│   │   │   ├── FBSnapshotTestController.h
│   │   │   ├── FBSnapshotTestController.m
│   │   │   ├── UIImage+Compare.h
│   │   │   ├── UIImage+Compare.m
│   │   │   ├── UIImage+Diff.h
│   │   │   └── UIImage+Diff.m
│   │   ├── RCTSnapshotManager.h
│   │   ├── RCTSnapshotManager.m
│   │   ├── RCTTest.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTTestModule.h
│   │   ├── RCTTestModule.m
│   │   ├── RCTTestRunner.h
│   │   ├── RCTTestRunner.m
│   │   ├── SnapshotViewIOS.android.js
│   │   ├── SnapshotViewIOS.ios.js
│   │   └── SnapshotViewIOS.macos.js
│   ├── ReactNative/
│   │   ├── AppContainer.js
│   │   ├── AppRegistry.js
│   │   ├── I18nManager.js
│   │   ├── ReactNativeFeatureFlags.js
│   │   ├── UIManager.js
│   │   ├── UIManagerStatTracker.js
│   │   ├── YellowBox.js
│   │   ├── queryLayoutByID.js
│   │   ├── renderApplication.js
│   │   ├── requireNativeComponent.js
│   │   └── verifyPropTypes.js
│   ├── Renderer/
│   │   ├── REVISION
│   │   ├── ReactNativeRenderer-dev.js
│   │   ├── ReactNativeRenderer-prod.js
│   │   └── shims/
│   │       ├── NativeMethodsMixin.js
│   │       ├── ReactDebugTool.js
│   │       ├── ReactFeatureFlags.js
│   │       ├── ReactGlobalSharedState.js
│   │       ├── ReactNative.js
│   │       ├── ReactNativeBridgeEventPlugin.js
│   │       ├── ReactNativeComponentTree.js
│   │       ├── ReactNativePropRegistry.js
│   │       ├── ReactNativeTypes.js
│   │       ├── ReactPerf.js
│   │       ├── ReactTypes.js
│   │       ├── TouchHistoryMath.js
│   │       ├── createReactNativeComponentClass.js
│   │       └── takeSnapshot.js
│   ├── Sample/
│   │   ├── Sample.android.js
│   │   ├── Sample.h
│   │   ├── Sample.ios.js
│   │   ├── Sample.m
│   │   ├── Sample.xcodeproj/
│   │   │   └── project.pbxproj
│   │   └── package.json
│   ├── Settings/
│   │   ├── RCTSettings.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTSettingsManager.h
│   │   ├── RCTSettingsManager.m
│   │   ├── Settings.android.js
│   │   ├── Settings.ios.js
│   │   └── Settings.macos.js
│   ├── Share/
│   │   └── Share.js
│   ├── Storage/
│   │   └── AsyncStorage.js
│   ├── StyleSheet/
│   │   ├── ColorPropType.js
│   │   ├── EdgeInsetsPropType.js
│   │   ├── LayoutPropTypes.js
│   │   ├── PointPropType.js
│   │   ├── StyleSheet.js
│   │   ├── StyleSheetPropType.js
│   │   ├── StyleSheetTypes.js
│   │   ├── StyleSheetValidation.js
│   │   ├── TransformPropTypes.js
│   │   ├── __tests__/
│   │   │   ├── __snapshots__/
│   │   │   │   └── processTransform-test.js.snap
│   │   │   ├── flattenStyle-test.js
│   │   │   ├── normalizeColor-test.js
│   │   │   ├── processColor-test.js
│   │   │   ├── processTransform-test.js
│   │   │   └── setNormalizedColorAlpha-test.js
│   │   ├── flattenStyle.js
│   │   ├── normalizeColor.js
│   │   ├── processColor.js
│   │   ├── processTransform.js
│   │   └── setNormalizedColorAlpha.js
│   ├── SurfaceBackedComponent/
│   │   ├── RCTSurfaceBackedComponent.h
│   │   ├── RCTSurfaceBackedComponent.mm
│   │   ├── RCTSurfaceBackedComponentState.h
│   │   └── RCTSurfaceBackedComponentState.mm
│   ├── SurfaceHostingComponent/
│   │   ├── RCTSurfaceHostingComponent+Internal.h
│   │   ├── RCTSurfaceHostingComponent.h
│   │   ├── RCTSurfaceHostingComponent.mm
│   │   ├── RCTSurfaceHostingComponentController.h
│   │   ├── RCTSurfaceHostingComponentController.mm
│   │   ├── RCTSurfaceHostingComponentOptions.h
│   │   ├── RCTSurfaceHostingComponentState.h
│   │   └── RCTSurfaceHostingComponentState.mm
│   ├── Text/
│   │   ├── RCTConvert+Text.h
│   │   ├── RCTConvert+Text.m
│   │   ├── RCTFontAttributes.h
│   │   ├── RCTFontAttributes.m
│   │   ├── RCTFontAttributesDelegate.h
│   │   ├── RCTRawTextShadowView.h
│   │   ├── RCTRawTextShadowView.m
│   │   ├── RCTRawTextViewManager.h
│   │   ├── RCTRawTextViewManager.m
│   │   ├── RCTSecureTextField.h
│   │   ├── RCTSecureTextField.m
│   │   ├── RCTText.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTTextField.h
│   │   ├── RCTTextField.m
│   │   ├── RCTTextFieldManager.m
│   │   ├── RCTTextView.m
│   │   ├── RCTTextViewManager.m
│   │   ├── Text/
│   │   │   ├── RCTTextShadowView.h
│   │   │   ├── RCTTextShadowView.m
│   │   │   ├── RCTTextView.h
│   │   │   ├── RCTTextView.m
│   │   │   ├── RCTTextViewManager.h
│   │   │   └── RCTTextViewManager.m
│   │   ├── Text.js
│   │   ├── TextInput/
│   │   │   ├── Multiline/
│   │   │   │   ├── RCTMultilineTextInputShadowView.h
│   │   │   │   ├── RCTMultilineTextInputShadowView.m
│   │   │   │   ├── RCTMultilineTextInputView.h
│   │   │   │   ├── RCTMultilineTextInputView.m
│   │   │   │   ├── RCTMultilineTextInputViewManager.h
│   │   │   │   ├── RCTMultilineTextInputViewManager.m
│   │   │   │   ├── RCTUITextView.h
│   │   │   │   └── RCTUITextView.m
│   │   │   ├── RCTBackedTextInputDelegate.h
│   │   │   ├── RCTBackedTextInputDelegateAdapter.h
│   │   │   ├── RCTBackedTextInputDelegateAdapter.m
│   │   │   ├── RCTBackedTextInputViewProtocol.h
│   │   │   ├── RCTBaseTextInputView.h
│   │   │   ├── RCTBaseTextInputView.m
│   │   │   ├── RCTBaseTextInputViewManager.h
│   │   │   ├── RCTBaseTextInputViewManager.m
│   │   │   ├── RCTTextSelection.h
│   │   │   ├── RCTTextSelection.m
│   │   │   └── Singleline/
│   │   │       ├── RCTSinglelineTextInputShadowView.h
│   │   │       ├── RCTSinglelineTextInputShadowView.m
│   │   │       ├── RCTSinglelineTextInputView.h
│   │   │       ├── RCTSinglelineTextInputView.m
│   │   │       ├── RCTSinglelineTextInputViewManager.h
│   │   │       ├── RCTSinglelineTextInputViewManager.m
│   │   │       ├── RCTUITextField.h
│   │   │       └── RCTUITextField.m
│   │   ├── TextInputLegacy/
│   │   │   ├── RCTMultilineTextInputView.h
│   │   │   ├── RCTMultilineTextInputView.m
│   │   │   ├── RCTSecureTextField.h
│   │   │   ├── RCTSecureTextField.m
│   │   │   ├── RCTShadowTextField.h
│   │   │   ├── RCTShadowTextField.m
│   │   │   ├── RCTShadowTextView.h
│   │   │   ├── RCTShadowTextView.m
│   │   │   ├── RCTTextField.h
│   │   │   ├── RCTTextField.m
│   │   │   ├── RCTTextFieldManager.h
│   │   │   ├── RCTTextFieldManager.m
│   │   │   ├── RCTTextManager.h
│   │   │   ├── RCTTextManager.m
│   │   │   ├── RCTTextSelection.h
│   │   │   ├── RCTTextSelection.m
│   │   │   ├── RCTTextViewManager.h
│   │   │   ├── RCTTextViewManager.m
│   │   │   ├── RCTUITextView.h
│   │   │   └── RCTUITextView.m
│   │   ├── TextProps.js
│   │   ├── TextStylePropTypes.js
│   │   └── TextUpdateTest.js
│   ├── Types/
│   │   └── CoreEventTypes.js
│   ├── Utilities/
│   │   ├── Appearance.js
│   │   ├── BackAndroid.js
│   │   ├── BackHandler.android.js
│   │   ├── BackHandler.ios.js
│   │   ├── BackHandler.macos.js
│   │   ├── CSSVarConfig.js
│   │   ├── DebugEnvironment.js
│   │   ├── DeviceInfo.js
│   │   ├── Dimensions.js
│   │   ├── HMRClient.js
│   │   ├── HMRLoadingView.android.js
│   │   ├── HMRLoadingView.ios.js
│   │   ├── HMRLoadingView.macos.js
│   │   ├── HeapCapture.js
│   │   ├── MatrixMath.js
│   │   ├── PerformanceLogger.js
│   │   ├── PixelRatio.js
│   │   ├── Platform.android.js
│   │   ├── Platform.ios.js
│   │   ├── Platform.macos.js
│   │   ├── PlatformOS.android.js
│   │   ├── PlatformOS.ios.js
│   │   ├── RCTLog.js
│   │   ├── SceneTracker.js
│   │   ├── __mocks__/
│   │   │   ├── BackHandler.js
│   │   │   └── PixelRatio.js
│   │   ├── __tests__/
│   │   │   ├── MatrixMath-test.js
│   │   │   ├── Platform-test.js
│   │   │   ├── SceneTracker-test.js
│   │   │   ├── buildStyleInterpolator-test.js
│   │   │   ├── deepFreezeAndThrowOnMutationInDev-test.js
│   │   │   ├── groupByEveryN-test.js
│   │   │   ├── mapWithSeparator-test.js
│   │   │   ├── truncate-test.js
│   │   │   └── utf8-test.js
│   │   ├── asyncRequire.js
│   │   ├── binaryToBase64.js
│   │   ├── buildStyleInterpolator.js
│   │   ├── clamp.js
│   │   ├── createStrictShapeTypeChecker.js
│   │   ├── deepFreezeAndThrowOnMutationInDev.js
│   │   ├── defineLazyObjectProperty.js
│   │   ├── deprecatedPropType.js
│   │   ├── differ/
│   │   │   ├── __tests__/
│   │   │   │   └── deepDiffer-test.js
│   │   │   ├── deepDiffer.js
│   │   │   ├── insetsDiffer.js
│   │   │   ├── matricesDiffer.js
│   │   │   ├── pointsDiffer.js
│   │   │   └── sizesDiffer.js
│   │   ├── dismissKeyboard.js
│   │   ├── groupByEveryN.js
│   │   ├── infoLog.js
│   │   ├── logError.js
│   │   ├── mapWithSeparator.js
│   │   ├── mergeFast.js
│   │   ├── mergeIntoFast.js
│   │   ├── stringifySafe.js
│   │   ├── truncate.js
│   │   └── utf8.js
│   ├── Vibration/
│   │   ├── RCTVibration.h
│   │   ├── RCTVibration.m
│   │   ├── RCTVibration.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── Vibration.js
│   │   ├── VibrationIOS.android.js
│   │   ├── VibrationIOS.ios.js
│   │   └── VibrationIOS.macos.js
│   ├── WebSocket/
│   │   ├── RCTReconnectingWebSocket.h
│   │   ├── RCTReconnectingWebSocket.m
│   │   ├── RCTSRWebSocket.h
│   │   ├── RCTSRWebSocket.m
│   │   ├── RCTWebSocket.xcodeproj/
│   │   │   └── project.pbxproj
│   │   ├── RCTWebSocketExecutor.h
│   │   ├── RCTWebSocketExecutor.m
│   │   ├── RCTWebSocketModule.h
│   │   ├── RCTWebSocketModule.m
│   │   ├── WebSocket.js
│   │   ├── WebSocketEvent.js
│   │   ├── WebSocketInterceptor.js
│   │   ├── __mocks__/
│   │   │   └── event-target-shim.js
│   │   └── __tests__/
│   │       └── WebSocket-test.js
│   ├── Wrapper/
│   │   ├── Example/
│   │   │   ├── RCTWrapperExampleView.h
│   │   │   ├── RCTWrapperExampleView.m
│   │   │   ├── RCTWrapperExampleViewController.h
│   │   │   ├── RCTWrapperExampleViewController.m
│   │   │   ├── RCTWrapperReactRootViewController.h
│   │   │   ├── RCTWrapperReactRootViewController.m
│   │   │   ├── RCTWrapperReactRootViewManager.h
│   │   │   └── RCTWrapperReactRootViewManager.m
│   │   ├── RCTWrapper.h
│   │   ├── RCTWrapperShadowView.h
│   │   ├── RCTWrapperShadowView.m
│   │   ├── RCTWrapperView.h
│   │   ├── RCTWrapperView.m
│   │   ├── RCTWrapperViewControllerHostingView.h
│   │   ├── RCTWrapperViewControllerHostingView.m
│   │   ├── RCTWrapperViewManager.h
│   │   └── RCTWrapperViewManager.m
│   ├── fishhook/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── fishhook.c
│   │   └── fishhook.h
│   ├── polyfills/
│   │   ├── Array.es6.js
│   │   ├── Array.prototype.es6.js
│   │   ├── Number.es6.js
│   │   ├── Object.es6.js
│   │   ├── Object.es7.js
│   │   ├── String.prototype.es6.js
│   │   ├── __tests__/
│   │   │   └── Object.es7-test.js
│   │   ├── babelHelpers.js
│   │   ├── console.js
│   │   └── error-guard.js
│   ├── promiseRejectionIsError.js
│   ├── react-native/
│   │   ├── React.js
│   │   ├── react-native-implementation.js
│   │   └── react-native-interface.js
│   └── vendor/
│       ├── core/
│       │   ├── ErrorUtils.js
│       │   ├── Map.js
│       │   ├── Set.js
│       │   ├── _shouldPolyfillES6Collection.js
│       │   ├── getObjectValues.js
│       │   ├── guid.js
│       │   ├── isEmpty.js
│       │   ├── merge.js
│       │   ├── mergeHelpers.js
│       │   ├── mergeInto.js
│       │   └── toIterator.js
│       ├── document/
│       │   └── selection/
│       │       └── DocumentSelectionState.js
│       ├── emitter/
│       │   ├── EmitterSubscription.js
│       │   ├── EventEmitter.js
│       │   ├── EventEmitterWithHolding.js
│       │   ├── EventHolder.js
│       │   ├── EventSubscription.js
│       │   ├── EventSubscriptionVendor.js
│       │   ├── EventValidator.js
│       │   └── mixInEventEmitter.js
│       ├── react/
│       │   └── vendor/
│       │       └── core/
│       │           └── ExecutionEnvironment.macos.js
│       └── tinycolor/
│           └── tinycolor.js
├── README.md
├── RNTester/
│   ├── .eslintrc
│   ├── README.md
│   ├── RNTester/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Base.lproj/
│   │   │   └── LaunchScreen.xib
│   │   ├── Images.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   ├── NavBarButtonPlus.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── story-background.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── tabnav_list.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── tabnav_notification.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── tabnav_settings.imageset/
│   │   │       └── Contents.json
│   │   ├── Info.plist
│   │   ├── NativeExampleViews/
│   │   │   ├── FlexibleSizeExampleView.h
│   │   │   ├── FlexibleSizeExampleView.m
│   │   │   ├── UpdatePropertiesExampleView.h
│   │   │   └── UpdatePropertiesExampleView.m
│   │   ├── RNTesterBundle/
│   │   │   ├── Info.plist
│   │   │   └── OtherImages.xcassets/
│   │   │       ├── Contents.json
│   │   │       └── ImageInAssetCatalog.imageset/
│   │   │           └── Contents.json
│   │   └── main.m
│   ├── RNTester-tvOS/
│   │   └── Info.plist
│   ├── RNTester.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── RNTester-tvOS.xcscheme
│   │           └── RNTester.xcscheme
│   ├── RNTesterIntegrationTests/
│   │   ├── Info.plist
│   │   ├── RCTLoggingTests.m
│   │   ├── RCTRootViewIntegrationTests.m
│   │   ├── RCTUIManagerScenarioTests.m
│   │   ├── RNTesterIntegrationTests.m
│   │   ├── RNTesterSnapshotTests.m
│   │   └── RNTesterTestModule.m
│   ├── RNTesterLegacy.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── RNTester-tvOS.xcscheme
│   │           └── RNTester.xcscheme
│   ├── RNTesterUnitTests/
│   │   ├── Info.plist
│   │   ├── OCMock/
│   │   │   ├── NSNotificationCenter+OCMAdditions.h
│   │   │   ├── OCMArg.h
│   │   │   ├── OCMConstraint.h
│   │   │   ├── OCMLocation.h
│   │   │   ├── OCMMacroState.h
│   │   │   ├── OCMRecorder.h
│   │   │   ├── OCMStubRecorder.h
│   │   │   ├── OCMock.h
│   │   │   └── OCMockObject.h
│   │   ├── RCTAllocationTests.m
│   │   ├── RCTAnimationUtilsTests.m
│   │   ├── RCTBridgeTests.m
│   │   ├── RCTBundleURLProviderTests.m
│   │   ├── RCTComponentPropsTests.m
│   │   ├── RCTConvert_NSURLTests.m
│   │   ├── RCTConvert_YGValueTests.m
│   │   ├── RCTDevMenuTests.m
│   │   ├── RCTEventDispatcherTests.m
│   │   ├── RCTFontTests.m
│   │   ├── RCTGzipTests.m
│   │   ├── RCTImageLoaderHelpers.h
│   │   ├── RCTImageLoaderHelpers.m
│   │   ├── RCTImageLoaderTests.m
│   │   ├── RCTImageUtilTests.m
│   │   ├── RCTJSCExecutorTests.m
│   │   ├── RCTJSONTests.m
│   │   ├── RCTMethodArgumentTests.m
│   │   ├── RCTModuleInitNotificationRaceTests.m
│   │   ├── RCTModuleInitTests.m
│   │   ├── RCTModuleMethodTests.mm
│   │   ├── RCTMultipartStreamReaderTests.m
│   │   ├── RCTNativeAnimatedNodesManagerTests.m
│   │   ├── RCTShadowViewTests.m
│   │   ├── RCTUIManagerTests.m
│   │   ├── RCTURLUtilsTests.m
│   │   ├── RCTUnicodeDecodeTests.m
│   │   ├── RNTesterUnitTestsBundle.js
│   │   └── libOCMock.a
│   ├── android/
│   │   └── app/
│   │       ├── BUCK
│   │       ├── build.gradle
│   │       ├── gradle.properties
│   │       ├── proguard-rules.pro
│   │       ├── react.gradle
│   │       └── src/
│   │           └── main/
│   │               ├── AndroidManifest.xml
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── facebook/
│   │               │           └── react/
│   │               │               └── uiapp/
│   │               │                   ├── RNTesterActivity.java
│   │               │                   └── RNTesterApplication.java
│   │               └── res/
│   │                   ├── layout/
│   │                   │   └── activity_main.xml
│   │                   └── values/
│   │                       ├── strings.xml
│   │                       └── styles.xml
│   └── js/
│       ├── ARTExample.js
│       ├── AccessibilityAndroidExample.android.js
│       ├── AccessibilityIOSExample.js
│       ├── ActionSheetIOSExample.js
│       ├── ActivityIndicatorExample.js
│       ├── AlertExample.js
│       ├── AlertIOSExample.js
│       ├── AlertOSXExample.js
│       ├── AnimatedExample.js
│       ├── AnimatedGratuitousApp/
│       │   ├── AnExApp.js
│       │   ├── AnExBobble.js
│       │   ├── AnExChained.js
│       │   ├── AnExScroll.js
│       │   ├── AnExSet.js
│       │   ├── AnExSlides.md
│       │   └── AnExTilt.js
│       ├── AppStateExample.js
│       ├── AppearanceContext.js
│       ├── AppearanceExample.macos.js
│       ├── AssetScaledImageExample.js
│       ├── AsyncStorageExample.js
│       ├── BorderExample.js
│       ├── BoxShadowExample.js
│       ├── ButtonExample.js
│       ├── CameraRollExample.js
│       ├── CameraRollView.js
│       ├── CheckBoxExample.js
│       ├── ClipboardExample.js
│       ├── DatePickerAndroidExample.js
│       ├── DatePickerIOSExample.js
│       ├── DimensionsExample.js
│       ├── DragnDropExample.macos.js
│       ├── ExampleTypes.js
│       ├── FlatListExample.js
│       ├── GeolocationExample.js
│       ├── ImageCapInsetsExample.js
│       ├── ImageEditingExample.js
│       ├── ImageExample.js
│       ├── KeyboardAvoidingViewExample.js
│       ├── LayoutAnimationExample.js
│       ├── LayoutEventsExample.js
│       ├── LayoutExample.js
│       ├── LinkingExample.js
│       ├── ListExampleShared.js
│       ├── ListViewExample.js
│       ├── ListViewGridLayoutExample.js
│       ├── ListViewPagingExample.js
│       ├── MaskedViewExample.js
│       ├── MenuExample.macos.js
│       ├── ModalExample.js
│       ├── MultiColumnExample.js
│       ├── NativeAnimationsExample.js
│       ├── NavigatorIOSBarStyleExample.js
│       ├── NavigatorIOSColorsExample.js
│       ├── NavigatorIOSExample.js
│       ├── NetInfoExample.js
│       ├── OrientationChangeExample.js
│       ├── PanResponderExample.js
│       ├── PermissionsExampleAndroid.android.js
│       ├── PickerExample.js
│       ├── PickerIOSExample.js
│       ├── PointerEventsExample.js
│       ├── ProgressBarAndroidExample.android.js
│       ├── ProgressViewIOSExample.js
│       ├── PushNotificationIOSExample.js
│       ├── RCTRootViewIOSExample.js
│       ├── RNTesterActions.js
│       ├── RNTesterApp.android.js
│       ├── RNTesterApp.ios.js
│       ├── RNTesterApp.macos.js
│       ├── RNTesterBlock.js
│       ├── RNTesterButton.js
│       ├── RNTesterExampleContainer.js
│       ├── RNTesterExampleList.js
│       ├── RNTesterList.android.js
│       ├── RNTesterList.ios.js
│       ├── RNTesterList.macos.js
│       ├── RNTesterNavigationReducer.js
│       ├── RNTesterPage.js
│       ├── RNTesterSettingSwitchRow.js
│       ├── RNTesterStatePersister.js
│       ├── RNTesterTitle.js
│       ├── RTLExample.js
│       ├── RefreshControlExample.js
│       ├── RootViewSizeFlexibilityExampleApp.js
│       ├── SafeAreaViewExample.js
│       ├── ScrollViewExample.js
│       ├── ScrollViewSimpleExample.js
│       ├── SectionListExample.js
│       ├── SegmentedControlIOSExample.js
│       ├── SetPropertiesExampleApp.js
│       ├── ShareExample.js
│       ├── SliderExample.js
│       ├── SnapshotExample.js
│       ├── StatusBarExample.js
│       ├── SwipeableFlatListExample.js
│       ├── SwipeableListViewExample.js
│       ├── SwitchExample.js
│       ├── TVEventHandlerExample.js
│       ├── TabBarIOSBarStyleExample.js
│       ├── TabBarIOSExample.js
│       ├── TextExample.android.js
│       ├── TextExample.ios.js
│       ├── TextExample.macos.js
│       ├── TextInputExample.android.js
│       ├── TextInputExample.ios.js
│       ├── TextInputExample.macos.js
│       ├── TimePickerAndroidExample.js
│       ├── TimerExample.js
│       ├── ToastAndroidExample.android.js
│       ├── ToolbarAndroidExample.android.js
│       ├── TouchableExample.js
│       ├── TransformExample.js
│       ├── TransparentHitTestExample.js
│       ├── URIActionMap.js
│       ├── VibrationExample.js
│       ├── VibrationIOSExample.js
│       ├── ViewExample.js
│       ├── ViewPagerAndroidExample.android.js
│       ├── WebSocketExample.js
│       ├── WebViewExample.js
│       ├── XHRExample.js
│       ├── XHRExampleBinaryUpload.js
│       ├── XHRExampleCookies.js
│       ├── XHRExampleDownload.js
│       ├── XHRExampleFetch.js
│       ├── XHRExampleFormData.js
│       ├── XHRExampleHeaders.js
│       ├── XHRExampleOnTimeOut.js
│       ├── createExamplePage.js
│       ├── helloworld.html
│       ├── http_test_server.js
│       ├── messagingtest.html
│       └── websocket_test_server.js
├── React/
│   ├── Base/
│   │   ├── RCTAssert.h
│   │   ├── RCTAssert.m
│   │   ├── RCTBatchedBridge.mm
│   │   ├── RCTBridge+Private.h
│   │   ├── RCTBridge.h
│   │   ├── RCTBridge.m
│   │   ├── RCTBridgeDelegate.h
│   │   ├── RCTBridgeMethod.h
│   │   ├── RCTBridgeModule.h
│   │   ├── RCTBundleURLProvider.h
│   │   ├── RCTBundleURLProvider.m
│   │   ├── RCTConvert.h
│   │   ├── RCTConvert.m
│   │   ├── RCTCxxConvert.h
│   │   ├── RCTCxxConvert.m
│   │   ├── RCTDefines.h
│   │   ├── RCTDisplayLink.h
│   │   ├── RCTDisplayLink.m
│   │   ├── RCTErrorCustomizer.h
│   │   ├── RCTErrorInfo.h
│   │   ├── RCTErrorInfo.m
│   │   ├── RCTEventDispatcher.h
│   │   ├── RCTEventDispatcher.m
│   │   ├── RCTFrameUpdate.h
│   │   ├── RCTFrameUpdate.m
│   │   ├── RCTImageSource.h
│   │   ├── RCTImageSource.m
│   │   ├── RCTInvalidating.h
│   │   ├── RCTJSCErrorHandling.h
│   │   ├── RCTJSCErrorHandling.mm
│   │   ├── RCTJSStackFrame.h
│   │   ├── RCTJSStackFrame.m
│   │   ├── RCTJavaScriptExecutor.h
│   │   ├── RCTJavaScriptLoader.h
│   │   ├── RCTJavaScriptLoader.mm
│   │   ├── RCTKeyCommands.h
│   │   ├── RCTKeyCommands.m
│   │   ├── RCTLog.h
│   │   ├── RCTLog.mm
│   │   ├── RCTManagedPointer.h
│   │   ├── RCTManagedPointer.mm
│   │   ├── RCTModuleData.h
│   │   ├── RCTModuleData.mm
│   │   ├── RCTModuleMethod.h
│   │   ├── RCTModuleMethod.m
│   │   ├── RCTModuleMethod.mm
│   │   ├── RCTMultipartDataTask.h
│   │   ├── RCTMultipartDataTask.m
│   │   ├── RCTMultipartStreamReader.h
│   │   ├── RCTMultipartStreamReader.m
│   │   ├── RCTNullability.h
│   │   ├── RCTParserUtils.h
│   │   ├── RCTParserUtils.m
│   │   ├── RCTPerformanceLogger.h
│   │   ├── RCTPerformanceLogger.m
│   │   ├── RCTPlatform.h
│   │   ├── RCTPlatform.m
│   │   ├── RCTReloadCommand.h
│   │   ├── RCTReloadCommand.m
│   │   ├── RCTRootContentView.h
│   │   ├── RCTRootContentView.m
│   │   ├── RCTRootView.h
│   │   ├── RCTRootView.m
│   │   ├── RCTRootViewDelegate.h
│   │   ├── RCTRootViewInternal.h
│   │   ├── RCTTVRemoteHandler.h
│   │   ├── RCTTVRemoteHandler.m
│   │   ├── RCTTouchEvent.h
│   │   ├── RCTTouchEvent.m
│   │   ├── RCTTouchHandler.h
│   │   ├── RCTTouchHandler.m
│   │   ├── RCTURLRequestDelegate.h
│   │   ├── RCTURLRequestHandler.h
│   │   ├── RCTUtils.h
│   │   ├── RCTUtils.m
│   │   ├── RCTVersion.h
│   │   ├── Surface/
│   │   │   ├── RCTSurface.h
│   │   │   ├── RCTSurface.mm
│   │   │   ├── RCTSurfaceDelegate.h
│   │   │   ├── RCTSurfaceRootShadowView.h
│   │   │   ├── RCTSurfaceRootShadowView.m
│   │   │   ├── RCTSurfaceRootShadowViewDelegate.h
│   │   │   ├── RCTSurfaceRootView.h
│   │   │   ├── RCTSurfaceRootView.mm
│   │   │   ├── RCTSurfaceStage.h
│   │   │   ├── RCTSurfaceStage.m
│   │   │   ├── RCTSurfaceView+Internal.h
│   │   │   ├── RCTSurfaceView.h
│   │   │   ├── RCTSurfaceView.mm
│   │   │   └── SurfaceHostingView/
│   │   │       ├── RCTSurfaceHostingView.h
│   │   │       ├── RCTSurfaceHostingView.mm
│   │   │       └── RCTSurfaceSizeMeasureMode.h
│   │   ├── UIImageUtils.h
│   │   └── UIImageUtils.m
│   ├── CxxBridge/
│   │   ├── NSDataBigString.h
│   │   ├── NSDataBigString.mm
│   │   ├── RCTCxxBridge.mm
│   │   ├── RCTCxxBridgeDelegate.h
│   │   ├── RCTJSCHelpers.h
│   │   ├── RCTJSCHelpers.mm
│   │   ├── RCTMessageThread.h
│   │   ├── RCTMessageThread.mm
│   │   ├── RCTObjcExecutor.h
│   │   └── RCTObjcExecutor.mm
│   ├── CxxModule/
│   │   ├── DispatchMessageQueueThread.h
│   │   ├── RCTCxxMethod.h
│   │   ├── RCTCxxMethod.mm
│   │   ├── RCTCxxModule.h
│   │   ├── RCTCxxModule.mm
│   │   ├── RCTCxxUtils.h
│   │   ├── RCTCxxUtils.mm
│   │   ├── RCTNativeModule.h
│   │   └── RCTNativeModule.mm
│   ├── CxxUtils/
│   │   ├── RCTFollyConvert.h
│   │   └── RCTFollyConvert.mm
│   ├── DevSupport/
│   │   ├── RCTDevLoadingView.h
│   │   ├── RCTDevLoadingView.m
│   │   ├── RCTDevMenu.h
│   │   ├── RCTDevMenu.m
│   │   ├── RCTInspectorDevServerHelper.h
│   │   ├── RCTInspectorDevServerHelper.mm
│   │   ├── RCTPackagerClient.h
│   │   ├── RCTPackagerClient.m
│   │   ├── RCTPackagerConnection.h
│   │   └── RCTPackagerConnection.mm
│   ├── Executors/
│   │   ├── RCTJSCExecutor.h
│   │   ├── RCTJSCExecutor.mm
│   │   ├── RCTWebViewExecutor.h
│   │   └── RCTWebViewExecutor.m
│   ├── Inspector/
│   │   ├── RCTInspector.h
│   │   ├── RCTInspector.mm
│   │   ├── RCTInspectorPackagerConnection.h
│   │   └── RCTInspectorPackagerConnection.m
│   ├── Modules/
│   │   ├── RCTAccessibilityManager.h
│   │   ├── RCTAccessibilityManager.m
│   │   ├── RCTAlertManager.h
│   │   ├── RCTAlertManager.m
│   │   ├── RCTAppState.h
│   │   ├── RCTAppState.m
│   │   ├── RCTAppearance.h
│   │   ├── RCTAppearance.m
│   │   ├── RCTAsyncLocalStorage.h
│   │   ├── RCTAsyncLocalStorage.m
│   │   ├── RCTClipboard.h
│   │   ├── RCTClipboard.m
│   │   ├── RCTCursorManager.h
│   │   ├── RCTCursorManager.m
│   │   ├── RCTDevSettings.h
│   │   ├── RCTDevSettings.mm
│   │   ├── RCTDeviceInfo.h
│   │   ├── RCTDeviceInfo.m
│   │   ├── RCTEventEmitter.h
│   │   ├── RCTEventEmitter.m
│   │   ├── RCTExceptionsManager.h
│   │   ├── RCTExceptionsManager.m
│   │   ├── RCTI18nManager.h
│   │   ├── RCTI18nManager.m
│   │   ├── RCTI18nUtil.h
│   │   ├── RCTI18nUtil.m
│   │   ├── RCTJSCSamplingProfiler.h
│   │   ├── RCTJSCSamplingProfiler.m
│   │   ├── RCTKeyboardObserver.h
│   │   ├── RCTKeyboardObserver.m
│   │   ├── RCTLayoutAnimation.h
│   │   ├── RCTLayoutAnimation.m
│   │   ├── RCTLayoutAnimationGroup.h
│   │   ├── RCTLayoutAnimationGroup.m
│   │   ├── RCTMenuManager.h
│   │   ├── RCTMenuManager.m
│   │   ├── RCTRedBox.h
│   │   ├── RCTRedBox.m
│   │   ├── RCTRedBoxExtraDataViewController.h
│   │   ├── RCTRedBoxExtraDataViewController.m
│   │   ├── RCTSourceCode.h
│   │   ├── RCTSourceCode.m
│   │   ├── RCTStatusBarManager.h
│   │   ├── RCTStatusBarManager.m
│   │   ├── RCTTVNavigationEventEmitter.h
│   │   ├── RCTTVNavigationEventEmitter.m
│   │   ├── RCTTiming.h
│   │   ├── RCTTiming.m
│   │   ├── RCTUIManager.h
│   │   ├── RCTUIManager.m
│   │   ├── RCTUIManagerObserverCoordinator.h
│   │   ├── RCTUIManagerObserverCoordinator.mm
│   │   ├── RCTUIManagerUtils.h
│   │   └── RCTUIManagerUtils.m
│   ├── Profiler/
│   │   ├── RCTFPSGraph.h
│   │   ├── RCTFPSGraph.m
│   │   ├── RCTJSCProfiler.m
│   │   ├── RCTMacros.h
│   │   ├── RCTPerfMonitor.m
│   │   ├── RCTProfile.h
│   │   ├── RCTProfile.m
│   │   ├── RCTProfileTrampoline-arm.S
│   │   ├── RCTProfileTrampoline-arm64.S
│   │   ├── RCTProfileTrampoline-i386.S
│   │   └── RCTProfileTrampoline-x86_64.S
│   ├── React.xcodeproj/
│   │   └── project.pbxproj
│   ├── ReactLegacy.xcodeproj/
│   │   └── project.pbxproj
│   ├── Views/
│   │   ├── NSView+NSViewAnimationWithBlocks.h
│   │   ├── NSView+NSViewAnimationWithBlocks.m
│   │   ├── NSView+Private.h
│   │   ├── NSView+React.h
│   │   ├── NSView+React.m
│   │   ├── RCTActivityIndicatorView.h
│   │   ├── RCTActivityIndicatorView.m
│   │   ├── RCTActivityIndicatorViewManager.h
│   │   ├── RCTActivityIndicatorViewManager.m
│   │   ├── RCTAnimationType.h
│   │   ├── RCTAutoInsetsProtocol.h
│   │   ├── RCTBorderDrawing.h
│   │   ├── RCTBorderDrawing.m
│   │   ├── RCTBorderStyle.h
│   │   ├── RCTButton.h
│   │   ├── RCTButton.m
│   │   ├── RCTButtonManager.h
│   │   ├── RCTButtonManager.m
│   │   ├── RCTComponent.h
│   │   ├── RCTComponentData.h
│   │   ├── RCTComponentData.m
│   │   ├── RCTConvert+CoreLocation.h
│   │   ├── RCTConvert+CoreLocation.m
│   │   ├── RCTConvert+Transform.h
│   │   ├── RCTConvert+Transform.m
│   │   ├── RCTDatePicker.h
│   │   ├── RCTDatePicker.m
│   │   ├── RCTDatePickerManager.h
│   │   ├── RCTDatePickerManager.m
│   │   ├── RCTFont.h
│   │   ├── RCTFont.mm
│   │   ├── RCTMaskedView.h
│   │   ├── RCTMaskedView.m
│   │   ├── RCTMaskedViewManager.h
│   │   ├── RCTMaskedViewManager.m
│   │   ├── RCTModalHostView.h
│   │   ├── RCTModalHostView.m
│   │   ├── RCTModalHostViewController.h
│   │   ├── RCTModalHostViewController.m
│   │   ├── RCTModalHostViewManager.h
│   │   ├── RCTModalHostViewManager.m
│   │   ├── RCTModalManager.h
│   │   ├── RCTModalManager.m
│   │   ├── RCTNavItem.h
│   │   ├── RCTNavItem.m
│   │   ├── RCTNavItemManager.h
│   │   ├── RCTNavItemManager.m
│   │   ├── RCTNavigator.h
│   │   ├── RCTNavigator.m
│   │   ├── RCTNavigatorManager.h
│   │   ├── RCTNavigatorManager.m
│   │   ├── RCTPicker.h
│   │   ├── RCTPicker.m
│   │   ├── RCTPickerManager.h
│   │   ├── RCTPickerManager.m
│   │   ├── RCTPointerEvents.h
│   │   ├── RCTProgressViewManager.h
│   │   ├── RCTProgressViewManager.m
│   │   ├── RCTRefreshControl.m
│   │   ├── RCTRefreshControlManager.m
│   │   ├── RCTRootShadowView.h
│   │   ├── RCTRootShadowView.m
│   │   ├── RCTSegmentedControl.h
│   │   ├── RCTSegmentedControl.m
│   │   ├── RCTSegmentedControlManager.h
│   │   ├── RCTSegmentedControlManager.m
│   │   ├── RCTShadowView+Internal.h
│   │   ├── RCTShadowView+Internal.m
│   │   ├── RCTShadowView+Layout.h
│   │   ├── RCTShadowView+Layout.m
│   │   ├── RCTShadowView.h
│   │   ├── RCTShadowView.m
│   │   ├── RCTSlider.h
│   │   ├── RCTSlider.m
│   │   ├── RCTSliderManager.h
│   │   ├── RCTSliderManager.m
│   │   ├── RCTSwitch.h
│   │   ├── RCTSwitch.m
│   │   ├── RCTSwitchManager.h
│   │   ├── RCTSwitchManager.m
│   │   ├── RCTTVView.h
│   │   ├── RCTTVView.m
│   │   ├── RCTTabBar.h
│   │   ├── RCTTabBar.m
│   │   ├── RCTTabBarItem.h
│   │   ├── RCTTabBarItem.m
│   │   ├── RCTTabBarItemManager.h
│   │   ├── RCTTabBarItemManager.m
│   │   ├── RCTTabBarManager.h
│   │   ├── RCTTabBarManager.m
│   │   ├── RCTTextDecorationLineType.h
│   │   ├── RCTView.h
│   │   ├── RCTView.m
│   │   ├── RCTViewControllerProtocol.h
│   │   ├── RCTViewManager.h
│   │   ├── RCTViewManager.m
│   │   ├── RCTWebView.h
│   │   ├── RCTWebView.m
│   │   ├── RCTWebViewManager.h
│   │   ├── RCTWebViewManager.m
│   │   ├── RCTWrapperViewController.h
│   │   ├── RCTWrapperViewController.m
│   │   ├── SafeAreaView/
│   │   │   ├── RCTSafeAreaShadowView.h
│   │   │   ├── RCTSafeAreaShadowView.m
│   │   │   ├── RCTSafeAreaView.h
│   │   │   ├── RCTSafeAreaView.m
│   │   │   ├── RCTSafeAreaViewLocalData.h
│   │   │   ├── RCTSafeAreaViewLocalData.m
│   │   │   ├── RCTSafeAreaViewManager.h
│   │   │   └── RCTSafeAreaViewManager.m
│   │   └── ScrollView/
│   │       ├── RCTScrollContentShadowView.h
│   │       ├── RCTScrollContentShadowView.m
│   │       ├── RCTScrollContentView.h
│   │       ├── RCTScrollContentView.m
│   │       ├── RCTScrollContentViewManager.h
│   │       ├── RCTScrollContentViewManager.m
│   │       ├── RCTScrollView.h
│   │       ├── RCTScrollView.m
│   │       ├── RCTScrollViewManager.h
│   │       ├── RCTScrollViewManager.m
│   │       └── RCTScrollableProtocol.h
│   └── third-party.xcconfig
├── React.podspec
├── ReactAndroid/
│   ├── DEFS
│   ├── DevExperience.md
│   ├── README.md
│   ├── build.gradle
│   ├── gradle.properties
│   ├── libs/
│   │   └── BUCK
│   ├── release.gradle
│   └── src/
│       ├── androidTest/
│       │   ├── assets/
│       │   │   └── BUCK
│       │   ├── buck-runner/
│       │   │   └── BUCK
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           └── react/
│       │   │               ├── testing/
│       │   │               │   ├── AbstractScrollViewTestCase.java
│       │   │               │   ├── BUCK
│       │   │               │   ├── FakeWebSocketModule.java
│       │   │               │   ├── InstanceSpecForTestPackage.java
│       │   │               │   ├── ReactAppInstrumentationTestCase.java
│       │   │               │   ├── ReactAppTestActivity.java
│       │   │               │   ├── ReactInstanceSpecForTest.java
│       │   │               │   ├── ReactIntegrationTestCase.java
│       │   │               │   ├── ReactSettingsForTests.java
│       │   │               │   ├── ReactTestAppShell.java
│       │   │               │   ├── ReactTestApplicationImpl.java
│       │   │               │   ├── ReactTestFactory.java
│       │   │               │   ├── ReactTestHelper.java
│       │   │               │   ├── ScreenshotingFrameLayout.java
│       │   │               │   ├── idledetection/
│       │   │               │   │   ├── BUCK
│       │   │               │   │   ├── IdleWaiter.java
│       │   │               │   │   ├── ReactBridgeIdleSignaler.java
│       │   │               │   │   └── ReactIdleDetectionUtil.java
│       │   │               │   └── network/
│       │   │               │       ├── BUCK
│       │   │               │       └── NetworkRecordingModuleMock.java
│       │   │               └── tests/
│       │   │                   ├── BUCK
│       │   │                   ├── CatalystMeasureLayoutTest.java
│       │   │                   ├── CatalystMultitouchHandlingTestCase.java
│       │   │                   ├── CatalystNativeJSToJavaParametersTestCase.java
│       │   │                   ├── CatalystNativeJavaToJSArgumentsTestCase.java
│       │   │                   ├── CatalystNativeJavaToJSReturnValuesTestCase.java
│       │   │                   ├── CatalystSubviewsClippingTestCase.java
│       │   │                   ├── CatalystTouchBubblingTestCase.java
│       │   │                   ├── CatalystUIManagerTestCase.java
│       │   │                   ├── DatePickerDialogTestCase.java
│       │   │                   ├── InitialPropsTestCase.java
│       │   │                   ├── JSLocaleTest.java
│       │   │                   ├── JSResponderTestCase.java
│       │   │                   ├── LayoutEventsTestCase.java
│       │   │                   ├── NativeIdTestCase.java
│       │   │                   ├── ProgressBarTestCase.java
│       │   │                   ├── ReactPickerTestCase.java
│       │   │                   ├── ReactRootViewTestCase.java
│       │   │                   ├── ReactSwipeRefreshLayoutTestCase.java
│       │   │                   ├── ShareTestCase.java
│       │   │                   ├── TestIdTestCase.java
│       │   │                   ├── TextInputTestCase.java
│       │   │                   ├── TimePickerDialogTestCase.java
│       │   │                   └── ViewRenderingTestCase.java
│       │   └── js/
│       │       ├── Asserts.js
│       │       ├── CatalystRootViewTestModule.js
│       │       ├── DatePickerDialogTestModule.js
│       │       ├── InitialPropsTestApp.js
│       │       ├── JSResponderTestApp.js
│       │       ├── LayoutEventsTestApp.js
│       │       ├── MeasureLayoutTestModule.js
│       │       ├── MultitouchHandlingTestAppModule.js
│       │       ├── NativeIdTestModule.js
│       │       ├── PickerAndroidTestModule.js
│       │       ├── ProgressBarTestModule.js
│       │       ├── ScrollViewTestModule.js
│       │       ├── ShareTestModule.js
│       │       ├── SubviewsClippingTestModule.js
│       │       ├── SwipeRefreshLayoutTestModule.js
│       │       ├── TestBundle.js
│       │       ├── TestIdTestModule.js
│       │       ├── TestJSLocaleModule.js
│       │       ├── TestJSToJavaParametersModule.js
│       │       ├── TestJavaToJSArgumentsModule.js
│       │       ├── TestJavaToJSReturnValuesModule.js
│       │       ├── TextInputTestModule.js
│       │       ├── TimePickerDialogTestModule.js
│       │       ├── TouchBubblingTestAppModule.js
│       │       ├── UIManagerTestModule.js
│       │       └── ViewRenderingTestModule.js
│       ├── main/
│       │   ├── android_res/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           └── catalyst/
│       │   │               └── appcompat/
│       │   │                   └── BUCK
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── facebook/
│       │   │           ├── BUCK
│       │   │           ├── debug/
│       │   │           │   ├── debugoverlay/
│       │   │           │   │   └── model/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── DebugOverlayTag.java
│       │   │           │   ├── holder/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── NoopPrinter.java
│       │   │           │   │   ├── Printer.java
│       │   │           │   │   └── PrinterHolder.java
│       │   │           │   └── tags/
│       │   │           │       ├── BUCK
│       │   │           │       └── ReactDebugOverlayTags.java
│       │   │           ├── jni/
│       │   │           │   ├── BUCK
│       │   │           │   ├── Countable.java
│       │   │           │   ├── CpuCapabilitiesJni.java
│       │   │           │   ├── DestructorThread.java
│       │   │           │   ├── HybridClassBase.java
│       │   │           │   ├── HybridData.java
│       │   │           │   ├── IteratorHelper.java
│       │   │           │   ├── JniTerminateHandler.java
│       │   │           │   ├── MapIteratorHelper.java
│       │   │           │   ├── NativeRunnable.java
│       │   │           │   ├── ThreadScopeSupport.java
│       │   │           │   └── fbjni.pro
│       │   │           ├── perftest/
│       │   │           │   └── BUCK
│       │   │           ├── proguard/
│       │   │           │   └── annotations/
│       │   │           │       └── BUCK
│       │   │           ├── react/
│       │   │           │   ├── BUCK
│       │   │           │   ├── CompositeReactPackage.java
│       │   │           │   ├── CoreModulesPackage.java
│       │   │           │   ├── DebugCorePackage.java
│       │   │           │   ├── EagerModuleProvider.java
│       │   │           │   ├── HeadlessJsTaskService.java
│       │   │           │   ├── LazyReactPackage.java
│       │   │           │   ├── MemoryPressureRouter.java
│       │   │           │   ├── NativeModuleRegistryBuilder.java
│       │   │           │   ├── ReactActivity.java
│       │   │           │   ├── ReactActivityDelegate.java
│       │   │           │   ├── ReactApplication.java
│       │   │           │   ├── ReactFragmentActivity.java
│       │   │           │   ├── ReactInstanceManager.java
│       │   │           │   ├── ReactInstanceManagerBuilder.java
│       │   │           │   ├── ReactInstancePackage.java
│       │   │           │   ├── ReactNativeHost.java
│       │   │           │   ├── ReactPackage.java
│       │   │           │   ├── ReactPackageLogger.java
│       │   │           │   ├── ReactRootView.java
│       │   │           │   ├── ViewManagerOnDemandReactPackage.java
│       │   │           │   ├── animated/
│       │   │           │   │   ├── AdditionAnimatedNode.java
│       │   │           │   │   ├── AnimatedNode.java
│       │   │           │   │   ├── AnimatedNodeValueListener.java
│       │   │           │   │   ├── AnimationDriver.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── DecayAnimation.java
│       │   │           │   │   ├── DiffClampAnimatedNode.java
│       │   │           │   │   ├── DivisionAnimatedNode.java
│       │   │           │   │   ├── EventAnimationDriver.java
│       │   │           │   │   ├── FrameBasedAnimationDriver.java
│       │   │           │   │   ├── InterpolationAnimatedNode.java
│       │   │           │   │   ├── ModulusAnimatedNode.java
│       │   │           │   │   ├── MultiplicationAnimatedNode.java
│       │   │           │   │   ├── NativeAnimatedModule.java
│       │   │           │   │   ├── NativeAnimatedNodesManager.java
│       │   │           │   │   ├── PropsAnimatedNode.java
│       │   │           │   │   ├── SpringAnimation.java
│       │   │           │   │   ├── StyleAnimatedNode.java
│       │   │           │   │   ├── TransformAnimatedNode.java
│       │   │           │   │   └── ValueAnimatedNode.java
│       │   │           │   ├── animation/
│       │   │           │   │   ├── AbstractFloatPairPropertyUpdater.java
│       │   │           │   │   ├── AbstractSingleFloatProperyUpdater.java
│       │   │           │   │   ├── AnimationPropertyUpdater.java
│       │   │           │   │   └── BUCK
│       │   │           │   ├── bridge/
│       │   │           │   │   ├── ActivityEventListener.java
│       │   │           │   │   ├── Arguments.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BaseActivityEventListener.java
│       │   │           │   │   ├── BaseJavaModule.java
│       │   │           │   │   ├── CallbackImpl.java
│       │   │           │   │   ├── CatalystInstance.java
│       │   │           │   │   ├── CatalystInstanceImpl.java
│       │   │           │   │   ├── ContextBaseJavaModule.java
│       │   │           │   │   ├── CxxCallbackImpl.java
│       │   │           │   │   ├── CxxModuleWrapper.java
│       │   │           │   │   ├── CxxModuleWrapperBase.java
│       │   │           │   │   ├── Dynamic.java
│       │   │           │   │   ├── DynamicFromArray.java
│       │   │           │   │   ├── DynamicFromMap.java
│       │   │           │   │   ├── FallbackJSBundleLoader.java
│       │   │           │   │   ├── GuardedRunnable.java
│       │   │           │   │   ├── Inspector.java
│       │   │           │   │   ├── JSBundleLoader.java
│       │   │           │   │   ├── JSCJavaScriptExecutor.java
│       │   │           │   │   ├── JSCJavaScriptExecutorFactory.java
│       │   │           │   │   ├── JSInstance.java
│       │   │           │   │   ├── JavaJSExecutor.java
│       │   │           │   │   ├── JavaMethodWrapper.java
│       │   │           │   │   ├── JavaModuleWrapper.java
│       │   │           │   │   ├── JavaOnlyArray.java
│       │   │           │   │   ├── JavaOnlyMap.java
│       │   │           │   │   ├── JavaScriptContextHolder.java
│       │   │           │   │   ├── JavaScriptExecutor.java
│       │   │           │   │   ├── JavaScriptExecutorFactory.java
│       │   │           │   │   ├── JavaScriptModuleRegistry.java
│       │   │           │   │   ├── JsonWriter.java
│       │   │           │   │   ├── JsonWriterHelper.java
│       │   │           │   │   ├── LifecycleEventListener.java
│       │   │           │   │   ├── MemoryPressure.java
│       │   │           │   │   ├── MemoryPressureListener.java
│       │   │           │   │   ├── ModuleHolder.java
│       │   │           │   │   ├── ModuleSpec.java
│       │   │           │   │   ├── NativeArray.java
│       │   │           │   │   ├── NativeMap.java
│       │   │           │   │   ├── NativeModule.java
│       │   │           │   │   ├── NativeModuleRegistry.java
│       │   │           │   │   ├── PerformanceCounter.java
│       │   │           │   │   ├── Promise.java
│       │   │           │   │   ├── ProxyJavaScriptExecutor.java
│       │   │           │   │   ├── ReactBridge.java
│       │   │           │   │   ├── ReactCallback.java
│       │   │           │   │   ├── ReactContext.java
│       │   │           │   │   ├── ReactMarker.java
│       │   │           │   │   ├── ReactMarkerConstants.java
│       │   │           │   │   ├── ReactMethod.java
│       │   │           │   │   ├── ReactModuleWithSpec.java
│       │   │           │   │   ├── ReadableArray.java
│       │   │           │   │   ├── ReadableMap.java
│       │   │           │   │   ├── ReadableNativeArray.java
│       │   │           │   │   ├── ReadableNativeMap.java
│       │   │           │   │   ├── WritableNativeArray.java
│       │   │           │   │   ├── WritableNativeMap.java
│       │   │           │   │   ├── bridge.pro
│       │   │           │   │   ├── queue/
│       │   │           │   │   │   ├── MessageQueueThread.java
│       │   │           │   │   │   ├── MessageQueueThreadImpl.java
│       │   │           │   │   │   ├── MessageQueueThreadSpec.java
│       │   │           │   │   │   ├── NativeRunnable.java
│       │   │           │   │   │   ├── ReactQueueConfiguration.java
│       │   │           │   │   │   ├── ReactQueueConfigurationImpl.java
│       │   │           │   │   │   └── ReactQueueConfigurationSpec.java
│       │   │           │   │   └── reactnative.pro
│       │   │           │   ├── common/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── ClearableSynchronizedPool.java
│       │   │           │   │   ├── DebugServerException.java
│       │   │           │   │   ├── JavascriptException.java
│       │   │           │   │   ├── LifecycleState.java
│       │   │           │   │   ├── ShakeDetector.java
│       │   │           │   │   ├── SingleThreadAsserter.java
│       │   │           │   │   ├── SystemClock.java
│       │   │           │   │   ├── build/
│       │   │           │   │   │   └── ReactBuildConfig.java
│       │   │           │   │   └── network/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── OkHttpCallUtil.java
│       │   │           │   ├── devsupport/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BundleDownloader.java
│       │   │           │   │   ├── DebugOverlayController.java
│       │   │           │   │   ├── DevInternalSettings.java
│       │   │           │   │   ├── DevLoadingViewController.java
│       │   │           │   │   ├── DevServerHelper.java
│       │   │           │   │   ├── DevSettingsActivity.java
│       │   │           │   │   ├── DevSupportManagerFactory.java
│       │   │           │   │   ├── DevSupportManagerImpl.java
│       │   │           │   │   ├── DisabledDevSupportManager.java
│       │   │           │   │   ├── DoubleTapReloadRecognizer.java
│       │   │           │   │   ├── FpsView.java
│       │   │           │   │   ├── InspectorPackagerConnection.java
│       │   │           │   │   ├── JSCHeapCapture.java
│       │   │           │   │   ├── JSCSamplingProfiler.java
│       │   │           │   │   ├── JSDebuggerWebSocketClient.java
│       │   │           │   │   ├── JSException.java
│       │   │           │   │   ├── MultipartStreamReader.java
│       │   │           │   │   ├── ReactInstanceManagerDevHelper.java
│       │   │           │   │   ├── RedBoxDialog.java
│       │   │           │   │   ├── RedBoxHandler.java
│       │   │           │   │   ├── StackTraceHelper.java
│       │   │           │   │   ├── WebsocketJavaScriptExecutor.java
│       │   │           │   │   ├── WindowOverlayCompat.java
│       │   │           │   │   └── interfaces/
│       │   │           │   │       ├── DevBundleDownloadListener.java
│       │   │           │   │       ├── DevOptionHandler.java
│       │   │           │   │       ├── DevSupportManager.java
│       │   │           │   │       ├── ErrorCustomizer.java
│       │   │           │   │       ├── PackagerStatusCallback.java
│       │   │           │   │       └── StackFrame.java
│       │   │           │   ├── flat/
│       │   │           │   │   ├── AbstractDrawBorder.java
│       │   │           │   │   ├── AbstractDrawCommand.java
│       │   │           │   │   ├── AndroidView.java
│       │   │           │   │   ├── AttachDetachListener.java
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BitmapUpdateListener.java
│       │   │           │   │   ├── ClippingDrawCommandManager.java
│       │   │           │   │   ├── DrawBackgroundColor.java
│       │   │           │   │   ├── DrawBorder.java
│       │   │           │   │   ├── DrawCommand.java
│       │   │           │   │   ├── DrawCommandManager.java
│       │   │           │   │   ├── DrawImage.java
│       │   │           │   │   ├── DrawImageWithDrawee.java
│       │   │           │   │   ├── DrawTextLayout.java
│       │   │           │   │   ├── DrawView.java
│       │   │           │   │   ├── DraweeRequestHelper.java
│       │   │           │   │   ├── ElementsList.java
│       │   │           │   │   ├── FlatARTSurfaceViewManager.java
│       │   │           │   │   ├── FlatARTSurfaceViewShadowNode.java
│       │   │           │   │   ├── FlatMeasuredViewGroup.java
│       │   │           │   │   ├── FlatNativeViewHierarchyManager.java
│       │   │           │   │   ├── FlatReactModalShadowNode.java
│       │   │           │   │   ├── FlatRootShadowNode.java
│       │   │           │   │   ├── FlatRootViewManager.java
│       │   │           │   │   ├── FlatShadowNode.java
│       │   │           │   │   ├── FlatTextShadowNode.java
│       │   │           │   │   ├── FlatUIImplementation.java
│       │   │           │   │   ├── FlatUIViewOperationQueue.java
│       │   │           │   │   ├── FlatViewGroup.java
│       │   │           │   │   ├── FlatViewManager.java
│       │   │           │   │   ├── FontStylingSpan.java
│       │   │           │   │   ├── HitSlopNodeRegion.java
│       │   │           │   │   ├── HorizontalDrawCommandManager.java
│       │   │           │   │   ├── InlineImageSpanWithPipeline.java
│       │   │           │   │   ├── MoveProxy.java
│       │   │           │   │   ├── NativeViewWrapper.java
│       │   │           │   │   ├── NodeRegion.java
│       │   │           │   │   ├── PipelineRequestHelper.java
│       │   │           │   │   ├── RCTImageView.java
│       │   │           │   │   ├── RCTImageViewManager.java
│       │   │           │   │   ├── RCTModalHostManager.java
│       │   │           │   │   ├── RCTRawText.java
│       │   │           │   │   ├── RCTRawTextManager.java
│       │   │           │   │   ├── RCTText.java
│       │   │           │   │   ├── RCTTextInlineImage.java
│       │   │           │   │   ├── RCTTextInlineImageManager.java
│       │   │           │   │   ├── RCTTextInput.java
│       │   │           │   │   ├── RCTTextInputManager.java
│       │   │           │   │   ├── RCTTextManager.java
│       │   │           │   │   ├── RCTView.java
│       │   │           │   │   ├── RCTViewManager.java
│       │   │           │   │   ├── RCTViewPagerManager.java
│       │   │           │   │   ├── RCTVirtualText.java
│       │   │           │   │   ├── RCTVirtualTextManager.java
│       │   │           │   │   ├── README.md
│       │   │           │   │   ├── ShadowStyleSpan.java
│       │   │           │   │   ├── StateBuilder.java
│       │   │           │   │   ├── TextNodeRegion.java
│       │   │           │   │   ├── TypefaceCache.java
│       │   │           │   │   ├── VerticalDrawCommandManager.java
│       │   │           │   │   ├── ViewResolver.java
│       │   │           │   │   └── VirtualViewManager.java
│       │   │           │   ├── jstasks/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── HeadlessJsTaskConfig.java
│       │   │           │   │   ├── HeadlessJsTaskContext.java
│       │   │           │   │   └── HeadlessJsTaskEventListener.java
│       │   │           │   ├── module/
│       │   │           │   │   ├── annotations/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ReactModule.java
│       │   │           │   │   │   └── ReactModuleList.java
│       │   │           │   │   ├── model/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ReactModuleInfo.java
│       │   │           │   │   │   └── ReactModuleInfoProvider.java
│       │   │           │   │   └── processing/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── ReactModuleSpecProcessor.java
│       │   │           │   ├── modules/
│       │   │           │   │   ├── accessibilityinfo/
│       │   │           │   │   │   ├── AccessibilityInfoModule.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── appregistry/
│       │   │           │   │   │   ├── AppRegistry.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── appstate/
│       │   │           │   │   │   ├── AppStateModule.java
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── blob/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── BlobModule.java
│       │   │           │   │   │   └── BlobProvider.java
│       │   │           │   │   ├── camera/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── CameraRollManager.java
│       │   │           │   │   │   ├── ImageEditingManager.java
│       │   │           │   │   │   └── ImageStoreManager.java
│       │   │           │   │   ├── clipboard/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ClipboardModule.java
│       │   │           │   │   ├── common/
│       │   │           │   │   │   └── BUCK
│       │   │           │   │   ├── core/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── ChoreographerCompat.java
│       │   │           │   │   │   ├── DeviceEventManagerModule.java
│       │   │           │   │   │   ├── ExceptionsManagerModule.java
│       │   │           │   │   │   ├── HeadlessJsTaskSupportModule.java
│       │   │           │   │   │   ├── JSTimers.java
│       │   │           │   │   │   ├── PermissionAwareActivity.java
│       │   │           │   │   │   ├── PermissionListener.java
│       │   │           │   │   │   ├── ReactChoreographer.java
│       │   │           │   │   │   └── Timing.java
│       │   │           │   │   ├── datepicker/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DatePickerDialogFragment.java
│       │   │           │   │   │   ├── DatePickerDialogModule.java
│       │   │           │   │   │   ├── DatePickerMode.java
│       │   │           │   │   │   └── DismissableDatePickerDialog.java
│       │   │           │   │   ├── debug/
│       │   │           │   │   │   ├── AnimationsDebugModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DidJSUpdateUiDuringFrameDetector.java
│       │   │           │   │   │   ├── FpsDebugFrameCallback.java
│       │   │           │   │   │   ├── SourceCodeModule.java
│       │   │           │   │   │   └── interfaces/
│       │   │           │   │   │       └── DeveloperSettings.java
│       │   │           │   │   ├── deviceinfo/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── DeviceInfoModule.java
│       │   │           │   │   ├── dialog/
│       │   │           │   │   │   ├── AlertFragment.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DialogModule.java
│       │   │           │   │   │   └── SupportAlertFragment.java
│       │   │           │   │   ├── fresco/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── FrescoModule.java
│       │   │           │   │   │   ├── ReactNetworkImageRequest.java
│       │   │           │   │   │   ├── ReactOkHttpNetworkFetcher.java
│       │   │           │   │   │   └── SystraceRequestListener.java
│       │   │           │   │   ├── i18nmanager/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── I18nManagerModule.java
│       │   │           │   │   │   └── I18nUtil.java
│       │   │           │   │   ├── image/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ImageLoaderModule.java
│       │   │           │   │   ├── intent/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── IntentModule.java
│       │   │           │   │   ├── location/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── LocationModule.java
│       │   │           │   │   │   └── PositionError.java
│       │   │           │   │   ├── netinfo/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── NetInfoModule.java
│       │   │           │   │   ├── network/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── CookieJarContainer.java
│       │   │           │   │   │   ├── NetworkInterceptorCreator.java
│       │   │           │   │   │   ├── NetworkingModule.java
│       │   │           │   │   │   ├── OkHttpClientProvider.java
│       │   │           │   │   │   ├── ProgressListener.java
│       │   │           │   │   │   ├── ProgressRequestBody.java
│       │   │           │   │   │   ├── ProgressResponseBody.java
│       │   │           │   │   │   ├── ReactCookieJarContainer.java
│       │   │           │   │   │   ├── RequestBodyUtil.java
│       │   │           │   │   │   ├── ResponseUtil.java
│       │   │           │   │   │   └── TLSSocketFactory.java
│       │   │           │   │   ├── permissions/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── PermissionsModule.java
│       │   │           │   │   ├── share/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ShareModule.java
│       │   │           │   │   ├── statusbar/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── StatusBarModule.java
│       │   │           │   │   ├── storage/
│       │   │           │   │   │   ├── AsyncLocalStorageUtil.java
│       │   │           │   │   │   ├── AsyncStorageModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactDatabaseSupplier.java
│       │   │           │   │   ├── systeminfo/
│       │   │           │   │   │   ├── AndroidInfoHelpers.java
│       │   │           │   │   │   ├── AndroidInfoModule.java
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactNativeVersion.java
│       │   │           │   │   ├── timepicker/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   ├── DismissableTimePickerDialog.java
│       │   │           │   │   │   ├── TimePickerDialogFragment.java
│       │   │           │   │   │   ├── TimePickerDialogModule.java
│       │   │           │   │   │   └── TimePickerMode.java
│       │   │           │   │   ├── toast/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ToastModule.java
│       │   │           │   │   ├── vibration/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── VibrationModule.java
│       │   │           │   │   └── websocket/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── WebSocketModule.java
│       │   │           │   ├── packagerconnection/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── FileIoHandler.java
│       │   │           │   │   ├── JSPackagerClient.java
│       │   │           │   │   ├── NotificationOnlyHandler.java
│       │   │           │   │   ├── PackagerConnectionSettings.java
│       │   │           │   │   ├── ReconnectingWebSocket.java
│       │   │           │   │   ├── RequestHandler.java
│       │   │           │   │   ├── RequestOnlyHandler.java
│       │   │           │   │   ├── Responder.java
│       │   │           │   │   └── SamplingProfilerPackagerMethod.java
│       │   │           │   ├── processing/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   └── ReactPropertyProcessor.java
│       │   │           │   ├── shell/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── MainPackageConfig.java
│       │   │           │   │   └── MainReactPackage.java
│       │   │           │   ├── touch/
│       │   │           │   │   └── BUCK
│       │   │           │   ├── uimanager/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   ├── BaseViewManager.java
│       │   │           │   │   ├── DisplayMetricsHolder.java
│       │   │           │   │   ├── FloatUtil.java
│       │   │           │   │   ├── GuardedFrameCallback.java
│       │   │           │   │   ├── JSTouchDispatcher.java
│       │   │           │   │   ├── LayoutShadowNode.java
│       │   │           │   │   ├── MatrixMathHelper.java
│       │   │           │   │   ├── MeasureSpecProvider.java
│       │   │           │   │   ├── NativeViewHierarchyManager.java
│       │   │           │   │   ├── NativeViewHierarchyOptimizer.java
│       │   │           │   │   ├── OnLayoutEvent.java
│       │   │           │   │   ├── ReactClippingViewGroup.java
│       │   │           │   │   ├── ReactClippingViewGroupHelper.java
│       │   │           │   │   ├── ReactCompoundView.java
│       │   │           │   │   ├── ReactRootViewTagGenerator.java
│       │   │           │   │   ├── ReactShadowNode.java
│       │   │           │   │   ├── ReactShadowNodeImpl.java
│       │   │           │   │   ├── ReactStylesDiffMap.java
│       │   │           │   │   ├── ReactZIndexedViewGroup.java
│       │   │           │   │   ├── ShadowNodeRegistry.java
│       │   │           │   │   ├── SizeMonitoringFrameLayout.java
│       │   │           │   │   ├── Spacing.java
│       │   │           │   │   ├── ThemedReactContext.java
│       │   │           │   │   ├── TouchTargetHelper.java
│       │   │           │   │   ├── TransformHelper.java
│       │   │           │   │   ├── UIBlock.java
│       │   │           │   │   ├── UIImplementation.java
│       │   │           │   │   ├── UIImplementationProvider.java
│       │   │           │   │   ├── UIManagerModule.java
│       │   │           │   │   ├── UIManagerModuleConstants.java
│       │   │           │   │   ├── UIManagerModuleConstantsHelper.java
│       │   │           │   │   ├── UIManagerModuleListener.java
│       │   │           │   │   ├── UIViewOperationQueue.java
│       │   │           │   │   ├── ViewGroupDrawingOrderHelper.java
│       │   │           │   │   ├── ViewGroupManager.java
│       │   │           │   │   ├── ViewHierarchyDumper.java
│       │   │           │   │   ├── ViewManager.java
│       │   │           │   │   ├── ViewManagerPropertyUpdater.java
│       │   │           │   │   ├── ViewManagerRegistry.java
│       │   │           │   │   ├── ViewManagersPropertyCache.java
│       │   │           │   │   ├── ViewProps.java
│       │   │           │   │   ├── YogaNodePool.java
│       │   │           │   │   ├── annotations/
│       │   │           │   │   │   ├── BUCK
│       │   │           │   │   │   └── ReactProp.java
│       │   │           │   │   ├── events/
│       │   │           │   │   │   ├── ContentSizeChangeEvent.java
│       │   │           │   │   │   ├── Event.java
│       │   │           │   │   │   ├── EventDispatcher.java
│       │   │           │   │   │   ├── EventDispatcherListener.java
│       │   │           │   │   │   ├── TouchEvent.java
│       │   │           │   │   │   ├── TouchEventCoalescingKeyHelper.java
│       │   │           │   │   │   └── TouchesHelper.java
│       │   │           │   │   ├── layoutanimation/
│       │   │           │   │   │   ├── AbstractLayoutAnimation.java
│       │   │           │   │   │   ├── BaseLayoutAnimation.java
│       │   │           │   │   │   ├── LayoutAnimationController.java
│       │   │           │   │   │   ├── LayoutAnimationListener.java
│       │   │           │   │   │   ├── LayoutAnimationType.java
│       │   │           │   │   │   ├── LayoutDeleteAnimation.java
│       │   │           │   │   │   ├── OpacityAnimation.java
│       │   │           │   │   │   └── PositionAndSizeAnimation.java
│       │   │           │   │   └── util/
│       │   │           │   │       ├── BUCK
│       │   │           │   │       └── ReactFindViewUtil.java
│       │   │           │   ├── util/
│       │   │           │   │   ├── BUCK
│       │   │           │   │   └── JSStackTrace.java
│       │   │           │   └── views/
│       │   │           │       ├── art/
│       │   │           │       │   ├── ARTGroupShadowNode.java
│       │   │           │       │   ├── ARTGroupViewManager.java
│       │   │           │       │   ├── ARTRenderableViewManager.java
│       │   │           │       │   ├── ARTShapeShadowNode.java
│       │   │           │       │   ├── ARTShapeViewManager.java
│       │   │           │       │   ├── ARTSurfaceView.java
│       │   │           │       │   ├── ARTSurfaceViewManager.java
│       │   │           │       │   ├── ARTSurfaceViewShadowNode.java
│       │   │           │       │   ├── ARTTextViewManager.java
│       │   │           │       │   ├── ARTVirtualNode.java
│       │   │           │       │   └── BUCK
│       │   │           │       ├── checkbox/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactCheckBox.java
│       │   │           │       │   ├── ReactCheckBoxEvent.java
│       │   │           │       │   └── ReactCheckBoxManager.java
│       │   │           │       ├── common/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   └── ViewHelper.java
│       │   │           │       ├── drawer/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactDrawerLayoutManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       ├── DrawerClosedEvent.java
│       │   │           │       │       ├── DrawerOpenedEvent.java
│       │   │           │       │       ├── DrawerSlideEvent.java
│       │   │           │       │       └── DrawerStateChangedEvent.java
│       │   │           │       ├── image/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── GlobalImageLoadListener.java
│       │   │           │       │   ├── ImageLoadEvent.java
│       │   │           │       │   ├── ImageResizeMethod.java
│       │   │           │       │   ├── ImageResizeMode.java
│       │   │           │       │   ├── ReactImageManager.java
│       │   │           │       │   └── ReactImageView.java
│       │   │           │       ├── imagehelper/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ImageSource.java
│       │   │           │       │   ├── MultiSourceHelper.java
│       │   │           │       │   └── ResourceDrawableIdHelper.java
│       │   │           │       ├── modal/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ModalHostHelper.java
│       │   │           │       │   ├── ModalHostShadowNode.java
│       │   │           │       │   ├── ReactModalHostManager.java
│       │   │           │       │   ├── ReactModalHostView.java
│       │   │           │       │   ├── RequestCloseEvent.java
│       │   │           │       │   └── ShowEvent.java
│       │   │           │       ├── picker/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactDialogPickerManager.java
│       │   │           │       │   ├── ReactDropdownPickerManager.java
│       │   │           │       │   ├── ReactPicker.java
│       │   │           │       │   ├── ReactPickerManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       └── PickerItemSelectEvent.java
│       │   │           │       ├── progressbar/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ProgressBarContainerView.java
│       │   │           │       │   ├── ProgressBarShadowNode.java
│       │   │           │       │   └── ReactProgressBarViewManager.java
│       │   │           │       ├── scroll/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── FpsListener.java
│       │   │           │       │   ├── OnScrollDispatchHelper.java
│       │   │           │       │   ├── ReactHorizontalScrollContainerView.java
│       │   │           │       │   ├── ReactHorizontalScrollContainerViewManager.java
│       │   │           │       │   ├── ReactHorizontalScrollView.java
│       │   │           │       │   ├── ReactHorizontalScrollViewManager.java
│       │   │           │       │   ├── ReactScrollView.java
│       │   │           │       │   ├── ReactScrollViewCommandHelper.java
│       │   │           │       │   ├── ReactScrollViewHelper.java
│       │   │           │       │   ├── ReactScrollViewManager.java
│       │   │           │       │   ├── ScrollEvent.java
│       │   │           │       │   ├── ScrollEventType.java
│       │   │           │       │   └── VelocityHelper.java
│       │   │           │       ├── slider/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSlider.java
│       │   │           │       │   ├── ReactSliderEvent.java
│       │   │           │       │   ├── ReactSliderManager.java
│       │   │           │       │   └── ReactSlidingCompleteEvent.java
│       │   │           │       ├── swiperefresh/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSwipeRefreshLayout.java
│       │   │           │       │   ├── RefreshEvent.java
│       │   │           │       │   └── SwipeRefreshLayoutManager.java
│       │   │           │       ├── switchview/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactSwitch.java
│       │   │           │       │   ├── ReactSwitchEvent.java
│       │   │           │       │   └── ReactSwitchManager.java
│       │   │           │       ├── text/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── CustomLineHeightSpan.java
│       │   │           │       │   ├── ReactBaseTextShadowNode.java
│       │   │           │       │   ├── ReactRawTextManager.java
│       │   │           │       │   ├── ReactRawTextShadowNode.java
│       │   │           │       │   ├── ReactTextAnchorViewManager.java
│       │   │           │       │   ├── ReactTextInlineImageShadowNode.java
│       │   │           │       │   ├── ReactTextShadowNode.java
│       │   │           │       │   ├── ReactTextUpdate.java
│       │   │           │       │   ├── ReactTextView.java
│       │   │           │       │   ├── ReactTextViewManager.java
│       │   │           │       │   ├── ReactVirtualTextShadowNode.java
│       │   │           │       │   ├── ReactVirtualTextViewManager.java
│       │   │           │       │   ├── TextInlineImageSpan.java
│       │   │           │       │   └── frescosupport/
│       │   │           │       │       ├── BUCK
│       │   │           │       │       ├── FrescoBasedReactTextInlineImageShadowNode.java
│       │   │           │       │       ├── FrescoBasedReactTextInlineImageSpan.java
│       │   │           │       │       └── FrescoBasedReactTextInlineImageViewManager.java
│       │   │           │       ├── textinput/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ContentSizeWatcher.java
│       │   │           │       │   ├── ReactContentSizeChangedEvent.java
│       │   │           │       │   ├── ReactEditText.java
│       │   │           │       │   ├── ReactEditTextInputConnectionWrapper.java
│       │   │           │       │   ├── ReactTextChangedEvent.java
│       │   │           │       │   ├── ReactTextInputBlurEvent.java
│       │   │           │       │   ├── ReactTextInputEndEditingEvent.java
│       │   │           │       │   ├── ReactTextInputEvent.java
│       │   │           │       │   ├── ReactTextInputFocusEvent.java
│       │   │           │       │   ├── ReactTextInputKeyPressEvent.java
│       │   │           │       │   ├── ReactTextInputLocalData.java
│       │   │           │       │   ├── ReactTextInputManager.java
│       │   │           │       │   ├── ReactTextInputSelectionEvent.java
│       │   │           │       │   ├── ReactTextInputShadowNode.java
│       │   │           │       │   ├── ReactTextInputSubmitEditingEvent.java
│       │   │           │       │   └── ScrollWatcher.java
│       │   │           │       ├── toolbar/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── ReactToolbar.java
│       │   │           │       │   ├── ReactToolbarManager.java
│       │   │           │       │   └── events/
│       │   │           │       │       └── ToolbarClickEvent.java
│       │   │           │       ├── view/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── MeasureUtil.java
│       │   │           │       │   ├── ReactViewBackgroundDrawable.java
│       │   │           │       │   ├── ReactViewBackgroundManager.java
│       │   │           │       │   ├── ReactViewGroup.java
│       │   │           │       │   └── ReactViewManager.java
│       │   │           │       ├── viewpager/
│       │   │           │       │   ├── BUCK
│       │   │           │       │   ├── PageScrollEvent.java
│       │   │           │       │   ├── PageScrollStateChangedEvent.java
│       │   │           │       │   ├── PageSelectedEvent.java
│       │   │           │       │   ├── ReactViewPager.java
│       │   │           │       │   └── ReactViewPagerManager.java
│       │   │           │       └── webview/
│       │   │           │           ├── BUCK
│       │   │           │           ├── ReactWebViewManager.java
│       │   │           │           └── events/
│       │   │           │               ├── TopLoadingErrorEvent.java
│       │   │           │               ├── TopLoadingFinishEvent.java
│       │   │           │               ├── TopLoadingStartEvent.java
│       │   │           │               └── TopMessageEvent.java
│       │   │           ├── systrace/
│       │   │           │   ├── BUCK
│       │   │           │   └── Systrace.java
│       │   │           └── yoga/
│       │   │               ├── YogaAlign.java
│       │   │               ├── YogaBaselineFunction.java
│       │   │               ├── YogaConfig.java
│       │   │               ├── YogaConstants.java
│       │   │               ├── YogaDimension.java
│       │   │               ├── YogaDirection.java
│       │   │               ├── YogaDisplay.java
│       │   │               ├── YogaEdge.java
│       │   │               ├── YogaExperimentalFeature.java
│       │   │               ├── YogaFlexDirection.java
│       │   │               ├── YogaJustify.java
│       │   │               ├── YogaLogLevel.java
│       │   │               ├── YogaLogger.java
│       │   │               ├── YogaMeasureFunction.java
│       │   │               ├── YogaMeasureMode.java
│       │   │               ├── YogaMeasureOutput.java
│       │   │               ├── YogaNode.java
│       │   │               ├── YogaNodeType.java
│       │   │               ├── YogaOverflow.java
│       │   │               ├── YogaPositionType.java
│       │   │               ├── YogaPrintOptions.java
│       │   │               ├── YogaUnit.java
│       │   │               ├── YogaValue.java
│       │   │               └── YogaWrap.java
│       │   ├── jni/
│       │   │   ├── Application.mk
│       │   │   ├── first-party/
│       │   │   │   ├── fb/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── Doxyfile
│       │   │   │   │   ├── include/
│       │   │   │   │   │   ├── fb/
│       │   │   │   │   │   │   ├── ALog.h
│       │   │   │   │   │   │   ├── Build.h
│       │   │   │   │   │   │   ├── Countable.h
│       │   │   │   │   │   │   ├── Doxyfile
│       │   │   │   │   │   │   ├── Environment.h
│       │   │   │   │   │   │   ├── ProgramLocation.h
│       │   │   │   │   │   │   ├── RefPtr.h
│       │   │   │   │   │   │   ├── StaticInitialized.h
│       │   │   │   │   │   │   ├── ThreadLocal.h
│       │   │   │   │   │   │   ├── assert.h
│       │   │   │   │   │   │   ├── fbjni/
│       │   │   │   │   │   │   │   ├── Boxed.h
│       │   │   │   │   │   │   │   ├── ByteBuffer.h
│       │   │   │   │   │   │   │   ├── Common.h
│       │   │   │   │   │   │   │   ├── Context.h
│       │   │   │   │   │   │   │   ├── CoreClasses-inl.h
│       │   │   │   │   │   │   │   ├── CoreClasses.h
│       │   │   │   │   │   │   │   ├── Exceptions.h
│       │   │   │   │   │   │   │   ├── File.h
│       │   │   │   │   │   │   │   ├── Hybrid.h
│       │   │   │   │   │   │   │   ├── Iterator-inl.h
│       │   │   │   │   │   │   │   ├── Iterator.h
│       │   │   │   │   │   │   │   ├── JThread.h
│       │   │   │   │   │   │   │   ├── JWeakReference.h
│       │   │   │   │   │   │   │   ├── Meta-forward.h
│       │   │   │   │   │   │   │   ├── Meta-inl.h
│       │   │   │   │   │   │   │   ├── Meta.h
│       │   │   │   │   │   │   │   ├── MetaConvert.h
│       │   │   │   │   │   │   │   ├── NativeRunnable.h
│       │   │   │   │   │   │   │   ├── ReferenceAllocators-inl.h
│       │   │   │   │   │   │   │   ├── ReferenceAllocators.h
│       │   │   │   │   │   │   │   ├── References-forward.h
│       │   │   │   │   │   │   │   ├── References-inl.h
│       │   │   │   │   │   │   │   ├── References.h
│       │   │   │   │   │   │   │   ├── Registration-inl.h
│       │   │   │   │   │   │   │   ├── Registration.h
│       │   │   │   │   │   │   │   └── TypeTraits.h
│       │   │   │   │   │   │   ├── fbjni.h
│       │   │   │   │   │   │   ├── log.h
│       │   │   │   │   │   │   ├── lyra.h
│       │   │   │   │   │   │   ├── noncopyable.h
│       │   │   │   │   │   │   ├── nonmovable.h
│       │   │   │   │   │   │   └── visibility.h
│       │   │   │   │   │   └── jni/
│       │   │   │   │   │       ├── Countable.h
│       │   │   │   │   │       ├── GlobalReference.h
│       │   │   │   │   │       ├── JniTerminateHandler.h
│       │   │   │   │   │       ├── LocalReference.h
│       │   │   │   │   │       ├── LocalString.h
│       │   │   │   │   │       ├── Registration.h
│       │   │   │   │   │       ├── WeakReference.h
│       │   │   │   │   │       └── jni_helpers.h
│       │   │   │   │   ├── jni/
│       │   │   │   │   │   ├── ByteBuffer.cpp
│       │   │   │   │   │   ├── Countable.cpp
│       │   │   │   │   │   ├── Environment.cpp
│       │   │   │   │   │   ├── Exceptions.cpp
│       │   │   │   │   │   ├── Hybrid.cpp
│       │   │   │   │   │   ├── LocalString.cpp
│       │   │   │   │   │   ├── OnLoad.cpp
│       │   │   │   │   │   ├── References.cpp
│       │   │   │   │   │   ├── WeakReference.cpp
│       │   │   │   │   │   ├── android/
│       │   │   │   │   │   │   ├── CpuCapabilities.cpp
│       │   │   │   │   │   │   └── ReferenceChecking.cpp
│       │   │   │   │   │   ├── fbjni.cpp
│       │   │   │   │   │   ├── java/
│       │   │   │   │   │   │   ├── BUCK
│       │   │   │   │   │   │   ├── CppException.java
│       │   │   │   │   │   │   ├── CppSystemErrorException.java
│       │   │   │   │   │   │   └── UnknownCppException.java
│       │   │   │   │   │   └── jni_helpers.cpp
│       │   │   │   │   ├── lyra/
│       │   │   │   │   │   └── lyra.cpp
│       │   │   │   │   └── onload.cpp
│       │   │   │   ├── fbgloginit/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── fb/
│       │   │   │   │   │   └── glog_init.h
│       │   │   │   │   └── glog_init.cpp
│       │   │   │   ├── jni-hack/
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── README.md
│       │   │   │   │   ├── jni.h
│       │   │   │   │   └── real/
│       │   │   │   │       └── jni.h
│       │   │   │   └── yogajni/
│       │   │   │       ├── Android.mk
│       │   │   │       ├── BUCK
│       │   │   │       └── jni/
│       │   │   │           └── YGJNI.cpp
│       │   │   ├── packagerconnection/
│       │   │   │   ├── Android.mk
│       │   │   │   ├── BUCK
│       │   │   │   ├── JSPackagerClientResponder.cpp
│       │   │   │   ├── JSPackagerClientResponder.h
│       │   │   │   ├── OnLoad.cpp
│       │   │   │   ├── SamplingProfilerJniMethod.cpp
│       │   │   │   └── SamplingProfilerJniMethod.h
│       │   │   ├── prebuilt/
│       │   │   │   └── BUCK
│       │   │   ├── react/
│       │   │   │   ├── jni/
│       │   │   │   │   ├── Android.mk
│       │   │   │   │   ├── AndroidJSCFactory.cpp
│       │   │   │   │   ├── AndroidJSCFactory.h
│       │   │   │   │   ├── BUCK
│       │   │   │   │   ├── CatalystInstanceImpl.cpp
│       │   │   │   │   ├── CatalystInstanceImpl.h
│       │   │   │   │   ├── CxxModuleWrapper.cpp
│       │   │   │   │   ├── CxxModuleWrapper.h
│       │   │   │   │   ├── CxxModuleWrapperBase.h
│       │   │   │   │   ├── CxxSharedModuleWrapper.h
│       │   │   │   │   ├── JCallback.h
│       │   │   │   │   ├── JInspector.cpp
│       │   │   │   │   ├── JInspector.h
│       │   │   │   │   ├── JMessageQueueThread.cpp
│       │   │   │   │   ├── JMessageQueueThread.h
│       │   │   │   │   ├── JNativeRunnable.h
│       │   │   │   │   ├── JSCPerfLogging.cpp
│       │   │   │   │   ├── JSCPerfLogging.h
│       │   │   │   │   ├── JSLoader.cpp
│       │   │   │   │   ├── JSLoader.h
│       │   │   │   │   ├── JSLogging.cpp
│       │   │   │   │   ├── JSLogging.h
│       │   │   │   │   ├── JavaModuleWrapper.cpp
│       │   │   │   │   ├── JavaModuleWrapper.h
│       │   │   │   │   ├── JavaScriptExecutorHolder.h
│       │   │   │   │   ├── JniJSModulesUnbundle.cpp
│       │   │   │   │   ├── JniJSModulesUnbundle.h
│       │   │   │   │   ├── MethodInvoker.cpp
│       │   │   │   │   ├── MethodInvoker.h
│       │   │   │   │   ├── ModuleRegistryBuilder.cpp
│       │   │   │   │   ├── ModuleRegistryBuilder.h
│       │   │   │   │   ├── NativeArray.cpp
│       │   │   │   │   ├── NativeArray.h
│       │   │   │   │   ├── NativeCommon.cpp
│       │   │   │   │   ├── NativeCommon.h
│       │   │   │   │   ├── NativeMap.cpp
│       │   │   │   │   ├── NativeMap.h
│       │   │   │   │   ├── OnLoad.cpp
│       │   │   │   │   ├── OnLoad.h
│       │   │   │   │   ├── ProxyExecutor.cpp
│       │   │   │   │   ├── ProxyExecutor.h
│       │   │   │   │   ├── ReactMarker.cpp
│       │   │   │   │   ├── ReactMarker.h
│       │   │   │   │   ├── ReadableNativeArray.cpp
│       │   │   │   │   ├── ReadableNativeArray.h
│       │   │   │   │   ├── ReadableNativeMap.cpp
│       │   │   │   │   ├── ReadableNativeMap.h
│       │   │   │   │   ├── WritableNativeArray.cpp
│       │   │   │   │   ├── WritableNativeArray.h
│       │   │   │   │   ├── WritableNativeMap.cpp
│       │   │   │   │   └── WritableNativeMap.h
│       │   │   │   └── perftests/
│       │   │   │       ├── BUCK
│       │   │   │       └── OnLoad.cpp
│       │   │   └── third-party/
│       │   │       ├── android-ndk/
│       │   │       │   └── BUCK
│       │   │       ├── boost/
│       │   │       │   └── Android.mk
│       │   │       ├── folly/
│       │   │       │   └── Android.mk
│       │   │       └── glibc/
│       │   │           └── BUCK
│       │   ├── libraries/
│       │   │   ├── fbcore/
│       │   │   │   └── src/
│       │   │   │       ├── main/
│       │   │   │       │   └── java/
│       │   │   │       │       └── com/
│       │   │   │       │           └── facebook/
│       │   │   │       │               └── common/
│       │   │   │       │                   └── logging/
│       │   │   │       │                       └── BUCK
│       │   │   │       └── test/
│       │   │   │           └── java/
│       │   │   │               └── com/
│       │   │   │                   └── facebook/
│       │   │   │                       └── powermock/
│       │   │   │                           └── BUCK
│       │   │   ├── fresco/
│       │   │   │   └── fresco-react-native/
│       │   │   │       └── BUCK
│       │   │   ├── soloader/
│       │   │   │   └── java/
│       │   │   │       └── com/
│       │   │   │           └── facebook/
│       │   │   │               └── soloader/
│       │   │   │                   └── BUCK
│       │   │   └── textlayoutbuilder/
│       │   │       └── BUCK
│       │   ├── res/
│       │   │   ├── BUCK
│       │   │   ├── devsupport/
│       │   │   │   ├── layout/
│       │   │   │   │   ├── dev_loading_view.xml
│       │   │   │   │   └── redbox_view.xml
│       │   │   │   ├── values/
│       │   │   │   │   ├── strings.xml
│       │   │   │   │   └── styles.xml
│       │   │   │   └── xml/
│       │   │   │       └── preferences.xml
│       │   │   ├── shell/
│       │   │   │   └── values/
│       │   │   │       └── styles.xml
│       │   │   └── views/
│       │   │       ├── modal/
│       │   │       │   ├── anim/
│       │   │       │   │   ├── catalyst_fade_in.xml
│       │   │       │   │   ├── catalyst_fade_out.xml
│       │   │       │   │   ├── catalyst_slide_down.xml
│       │   │       │   │   └── catalyst_slide_up.xml
│       │   │       │   └── values/
│       │   │       │       └── themes.xml
│       │   │       └── uimanager/
│       │   │           └── values/
│       │   │               └── ids.xml
│       │   └── third-party/
│       │       ├── android/
│       │       │   ├── support/
│       │       │   │   ├── v4/
│       │       │   │   │   └── BUCK
│       │       │   │   └── v7/
│       │       │   │       └── appcompat-orig/
│       │       │   │           └── BUCK
│       │       │   └── support-annotations/
│       │       │       └── BUCK
│       │       └── java/
│       │           ├── asm/
│       │           │   └── BUCK
│       │           ├── buck-android-support/
│       │           │   ├── BUCK
│       │           │   └── buck-android-support.jar
│       │           ├── fest/
│       │           │   └── BUCK
│       │           ├── infer-annotations/
│       │           │   ├── BUCK
│       │           │   └── infer-annotations-4.0.jar
│       │           ├── javapoet/
│       │           │   └── BUCK
│       │           ├── jsr-305/
│       │           │   └── BUCK
│       │           ├── jsr-330/
│       │           │   └── BUCK
│       │           ├── junit/
│       │           │   └── BUCK
│       │           ├── mockito/
│       │           │   └── BUCK
│       │           ├── okhttp/
│       │           │   └── BUCK
│       │           ├── okio/
│       │           │   └── BUCK
│       │           ├── robolectric3/
│       │           │   └── robolectric/
│       │           │       └── BUCK
│       │           ├── sqlite/
│       │           │   └── BUCK
│       │           └── testing-support-lib/
│       │               └── BUCK
│       └── test/
│           └── java/
│               ├── com/
│               │   └── facebook/
│               │       ├── common/
│               │       │   └── logging/
│               │       │       ├── BUCK
│               │       │       └── FakeLoggingDelegate.java
│               │       └── react/
│               │           ├── BUCK
│               │           ├── CompositeReactPackageTest.java
│               │           ├── RootViewTest.java
│               │           ├── animated/
│               │           │   ├── BUCK
│               │           │   ├── NativeAnimatedInterpolationTest.java
│               │           │   └── NativeAnimatedNodeTraversalTest.java
│               │           ├── bridge/
│               │           │   ├── BUCK
│               │           │   ├── BaseJavaModuleTest.java
│               │           │   ├── FallbackJSBundleLoaderTest.java
│               │           │   ├── JavaOnlyArrayTest.java
│               │           │   ├── JsonWriterTest.java
│               │           │   └── ModuleSpecTest.java
│               │           ├── devsupport/
│               │           │   ├── BUCK
│               │           │   ├── JSDebuggerWebSocketClientTest.java
│               │           │   ├── MultipartStreamReaderTest.java
│               │           │   └── StackTraceHelperTest.java
│               │           ├── modules/
│               │           │   ├── BUCK
│               │           │   ├── camera/
│               │           │   │   └── ImageStoreManagerTest.java
│               │           │   ├── clipboard/
│               │           │   │   └── ClipboardModuleTest.java
│               │           │   ├── dialog/
│               │           │   │   └── DialogModuleTest.java
│               │           │   ├── network/
│               │           │   │   └── NetworkingModuleTest.java
│               │           │   ├── share/
│               │           │   │   └── ShareModuleTest.java
│               │           │   └── timing/
│               │           │       └── TimingModuleTest.java
│               │           ├── packagerconnection/
│               │           │   ├── BUCK
│               │           │   └── JSPackagerClientTest.java
│               │           ├── uimanager/
│               │           │   ├── BUCK
│               │           │   ├── LayoutPropertyApplicatorTest.java
│               │           │   ├── MatrixMathHelperTest.java
│               │           │   ├── ReactPropConstantsTest.java
│               │           │   ├── ReactPropForShadowNodeSetterTest.java
│               │           │   ├── ReactPropForShadowNodeSpecTest.java
│               │           │   ├── UIManagerModuleConstantsTest.java
│               │           │   └── UIManagerModuleTest.java
│               │           └── views/
│               │               ├── BUCK
│               │               ├── image/
│               │               │   ├── ImageResizeModeTest.java
│               │               │   └── ReactImagePropertyTest.java
│               │               ├── slider/
│               │               │   └── ReactSliderPropertyTest.java
│               │               ├── text/
│               │               │   ├── CustomLineHeightSpanTest.java
│               │               │   └── ReactTextTest.java
│               │               └── textinput/
│               │                   ├── ReactTextInputPropertyTest.java
│               │                   └── TextInputTest.java
│               └── org/
│                   └── mockito/
│                       └── configuration/
│                           └── BUCK
├── ReactCommon/
│   ├── DEFS
│   ├── cxxreact/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── CxxModule.h
│   │   ├── CxxNativeModule.cpp
│   │   ├── CxxNativeModule.h
│   │   ├── Instance.cpp
│   │   ├── Instance.h
│   │   ├── JSBigString.cpp
│   │   ├── JSBigString.h
│   │   ├── JSBundleType.cpp
│   │   ├── JSBundleType.h
│   │   ├── JSCExecutor.cpp
│   │   ├── JSCExecutor.h
│   │   ├── JSCLegacyTracing.cpp
│   │   ├── JSCLegacyTracing.h
│   │   ├── JSCMemory.cpp
│   │   ├── JSCMemory.h
│   │   ├── JSCNativeModules.cpp
│   │   ├── JSCNativeModules.h
│   │   ├── JSCPerfStats.cpp
│   │   ├── JSCPerfStats.h
│   │   ├── JSCSamplingProfiler.cpp
│   │   ├── JSCSamplingProfiler.h
│   │   ├── JSCTracing.cpp
│   │   ├── JSCTracing.h
│   │   ├── JSCUtils.cpp
│   │   ├── JSCUtils.h
│   │   ├── JSExecutor.h
│   │   ├── JSIndexedRAMBundle.cpp
│   │   ├── JSIndexedRAMBundle.h
│   │   ├── JSModulesUnbundle.h
│   │   ├── JsArgumentHelpers-inl.h
│   │   ├── JsArgumentHelpers.h
│   │   ├── MessageQueueThread.h
│   │   ├── MethodCall.cpp
│   │   ├── MethodCall.h
│   │   ├── ModuleRegistry.cpp
│   │   ├── ModuleRegistry.h
│   │   ├── NativeModule.h
│   │   ├── NativeToJsBridge.cpp
│   │   ├── NativeToJsBridge.h
│   │   ├── Platform.cpp
│   │   ├── Platform.h
│   │   ├── RAMBundleRegistry.cpp
│   │   ├── RAMBundleRegistry.h
│   │   ├── RecoverableError.h
│   │   ├── SampleCxxModule.cpp
│   │   ├── SampleCxxModule.h
│   │   ├── SharedProxyCxxModule.h
│   │   ├── SystraceSection.h
│   │   ├── oss-compat-util.h
│   │   └── tests/
│   │       ├── BUCK
│   │       ├── RecoverableErrorTest.cpp
│   │       ├── jsarg_helpers.cpp
│   │       ├── jsbigstring.cpp
│   │       ├── jscexecutor.cpp
│   │       ├── jsclogging.cpp
│   │       ├── methodcall.cpp
│   │       └── value.cpp
│   ├── jschelpers/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── JSCHelpers.cpp
│   │   ├── JSCHelpers.h
│   │   ├── JSCWrapper.cpp
│   │   ├── JSCWrapper.h
│   │   ├── JavaScriptCore.h
│   │   ├── Unicode.cpp
│   │   ├── Unicode.h
│   │   ├── Value.cpp
│   │   ├── Value.h
│   │   ├── noncopyable.h
│   │   └── systemJSCWrapper.cpp
│   ├── jsinspector/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── InspectorInterfaces.cpp
│   │   └── InspectorInterfaces.h
│   ├── microprofiler/
│   │   ├── BUCK
│   │   ├── MicroProfiler.cpp
│   │   └── MicroProfiler.h
│   ├── privatedata/
│   │   ├── Android.mk
│   │   ├── BUCK
│   │   ├── PrivateDataBase.cpp
│   │   └── PrivateDataBase.h
│   └── yoga/
│       ├── Android.mk
│       ├── BUCK
│       ├── yoga/
│       │   ├── YGEnums.cpp
│       │   ├── YGEnums.h
│       │   ├── YGMacros.h
│       │   ├── YGNode.cpp
│       │   ├── YGNode.h
│       │   ├── YGNodePrint.cpp
│       │   ├── YGNodePrint.h
│       │   ├── Yoga-internal.h
│       │   ├── Yoga.cpp
│       │   └── Yoga.h
│       └── yoga.podspec
├── Releases.md
├── babel-preset/
│   ├── README.md
│   ├── configs/
│   │   ├── hmr.js
│   │   └── main.js
│   ├── index.js
│   ├── lib/
│   │   └── resolvePlugins.js
│   ├── package.json
│   ├── plugins.js
│   └── transforms/
│       └── transform-symbol-member.js
├── blog/
│   ├── 2015-03-26-react-native-bringing-modern-web-techniques-to-mobile.md
│   ├── 2015-09-14-react-native-for-android.md
│   ├── 2015-11-23-making-react-native-apps-accessible.md
│   ├── 2016-03-24-introducing-hot-reloading.md
│   ├── 2016-03-28-dive-into-react-native-performance.md
│   ├── 2016-04-13-react-native-a-year-in-review.md
│   ├── 2016-07-06-toward-better-documentation.md
│   ├── 2016-08-12-react-native-meetup-san-francisco.md
│   ├── 2016-08-19-right-to-left-support-for-react-native-apps.md
│   ├── 2016-09-08-exponent-talks-unraveling-navigation.md
│   ├── 2016-10-25-0.36-headless-js-the-keyboard-api-and-more.md
│   ├── 2016-11-08-introducing-button-yarn-and-a-public-roadmap.md
│   ├── 2016-12-05-easier-upgrades.md
│   ├── 2017-01-07-monthly-release-cadence.md
│   ├── 2017-02-14-using-native-driver-for-animated.md
│   ├── 2017-03-13-better-list-views.md
│   ├── 2017-03-13-idx-the-existential-function.md
│   ├── 2017-03-13-introducing-create-react-native-app.md
│   ├── 2017-06-21-react-native-monthly-1.md
│   ├── 2017-07-28-react-native-monthly-2.md
│   ├── 2017-08-07-react-native-performance-in-marketplace.md
│   ├── 2017-08-30-react-native-monthly-3.md
│   ├── 2017-09-21-react-native-monthly-4.md
│   └── 2017-11-06-react-native-monthly-5.md
├── bots/
│   ├── IssueCommands.txt
│   ├── NewIssueGreeting.md
│   ├── QuestionGreeting.md
│   ├── code-analysis-bot.js
│   ├── pr-inactivity-bookmarklet.js
│   └── question-bookmarklet.js
├── breaking-changes.md
├── build.gradle
├── cli.js
├── danger/
│   ├── .babelrc
│   ├── README.md
│   ├── dangerfile.js
│   └── package.json
├── flow/
│   ├── Map.js
│   ├── Position.js
│   ├── Promise.js
│   ├── Set.js
│   ├── console.js
│   ├── create-react-class.js
│   ├── fbjs.js
│   └── prop-types.js
├── flow-github/
│   └── metro.js
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── jest/
│   ├── .eslintrc
│   ├── assetFileTransformer.js
│   ├── mockComponent.js
│   ├── preprocessor.js
│   └── setup.js
├── jest-preset.json
├── keystores/
│   ├── BUCK
│   ├── debug.keystore
│   └── debug.keystore.properties
├── lib/
│   ├── InitializeJavaScriptAppEngine.js
│   ├── RCTEventEmitter.js
│   ├── README
│   ├── TextInputState.js
│   ├── UIManager.js
│   ├── UIManagerStatTracker.js
│   ├── View.js
│   ├── deepDiffer.js
│   ├── deepFreezeAndThrowOnMutationInDev.js
│   └── flattenStyle.js
├── local-cli/
│   ├── .eslintrc
│   ├── __mocks__/
│   │   ├── beeper.js
│   │   └── fs.js
│   ├── __tests__/
│   │   └── fs-mock-test.js
│   ├── bundle/
│   │   ├── __mocks__/
│   │   │   └── sign.js
│   │   ├── __tests__/
│   │   │   ├── filterPlatformAssetScales-test.js
│   │   │   ├── getAssetDestPathAndroid-test.js
│   │   │   └── getAssetDestPathIOS-test.js
│   │   ├── assetPathUtils.js
│   │   ├── buildBundle.js
│   │   ├── bundle.js
│   │   ├── bundleCommandLineArgs.js
│   │   ├── filterPlatformAssetScales.js
│   │   ├── getAssetDestPathAndroid.js
│   │   ├── getAssetDestPathIOS.js
│   │   ├── saveAssets.js
│   │   ├── types.flow.js
│   │   └── unbundle.js
│   ├── cli.js
│   ├── cliEntry.js
│   ├── commands.js
│   ├── core/
│   │   ├── Constants.js
│   │   ├── __fixtures__/
│   │   │   ├── android.js
│   │   │   ├── commands.js
│   │   │   ├── dependencies.js
│   │   │   ├── files/
│   │   │   │   ├── AndroidManifest-debug.xml
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── Main.java
│   │   │   │   ├── ReactPackage.java
│   │   │   │   ├── ReactPackage.kt
│   │   │   │   ├── package.json
│   │   │   │   └── project.pbxproj
│   │   │   ├── ios.js
│   │   │   └── projects.js
│   │   ├── __tests__/
│   │   │   ├── android/
│   │   │   │   ├── findAndroidAppFolder.spec.js
│   │   │   │   ├── findManifest.spec.js
│   │   │   │   ├── findPackageClassName.spec.js
│   │   │   │   ├── getDependencyConfig.spec.js
│   │   │   │   ├── getProjectConfig.spec.js
│   │   │   │   └── readManifest.spec.js
│   │   │   ├── findAssets.spec.js
│   │   │   ├── findPlugins.spec.js
│   │   │   ├── ios/
│   │   │   │   ├── findPodfilePath.spec.js
│   │   │   │   ├── findPodspecName.spec.js
│   │   │   │   ├── findProject.spec.js
│   │   │   │   └── getProjectConfig.spec.js
│   │   │   └── makeCommand.spec.js
│   │   ├── android/
│   │   │   ├── findAndroidAppFolder.js
│   │   │   ├── findManifest.js
│   │   │   ├── findPackageClassName.js
│   │   │   ├── index.js
│   │   │   └── readManifest.js
│   │   ├── default.config.js
│   │   ├── findAssets.js
│   │   ├── findPlugins.js
│   │   ├── index.js
│   │   ├── ios/
│   │   │   ├── findPodfilePath.js
│   │   │   ├── findPodspecName.js
│   │   │   ├── findProject.js
│   │   │   └── index.js
│   │   ├── macos/
│   │   │   ├── findProject.js
│   │   │   └── index.js
│   │   ├── makeCommand.js
│   │   ├── windows/
│   │   │   ├── findNamespace.js
│   │   │   ├── findPackageClassName.js
│   │   │   ├── findProject.js
│   │   │   ├── findWindowsSolution.js
│   │   │   ├── generateGUID.js
│   │   │   └── index.js
│   │   └── wrapCommands.js
│   ├── dependencies/
│   │   └── dependencies.js
│   ├── eject/
│   │   └── eject.js
│   ├── generator/
│   │   ├── copyProjectTemplateAndReplace.js
│   │   ├── printRunInstructions.js
│   │   ├── promptSync.js
│   │   └── templates.js
│   ├── index.js
│   ├── info/
│   │   └── info.js
│   ├── init/
│   │   └── init.js
│   ├── install/
│   │   ├── install.js
│   │   └── uninstall.js
│   ├── library/
│   │   └── library.js
│   ├── link/
│   │   ├── __fixtures__/
│   │   │   ├── Info.plist
│   │   │   ├── android/
│   │   │   │   ├── 0.17/
│   │   │   │   │   ├── MainActivity.java
│   │   │   │   │   └── patchedMainActivity.java
│   │   │   │   ├── 0.18/
│   │   │   │   │   ├── MainActivity.java
│   │   │   │   │   └── patchedMainActivity.java
│   │   │   │   ├── 0.20/
│   │   │   │   │   └── MainActivity.java
│   │   │   │   ├── build.gradle
│   │   │   │   ├── patchedBuild.gradle
│   │   │   │   ├── patchedSettings.gradle
│   │   │   │   └── settings.gradle
│   │   │   ├── linearGradient.pbxproj
│   │   │   ├── pods/
│   │   │   │   ├── PodfileSimple
│   │   │   │   ├── PodfileWithFunction
│   │   │   │   ├── PodfileWithMarkers
│   │   │   │   └── PodfileWithTarget
│   │   │   └── project.pbxproj
│   │   ├── __tests__/
│   │   │   ├── android/
│   │   │   │   ├── applyPatch.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   ├── makeBuildPatch.spec.js
│   │   │   │   ├── makeImportPatch.spec.js
│   │   │   │   ├── makePackagePatch.spec.js
│   │   │   │   ├── makeSettingsPatch.spec.js
│   │   │   │   └── makeStringsPatch.spec.js
│   │   │   ├── getDependencyConfig.spec.js
│   │   │   ├── getProjectDependencies.spec.js
│   │   │   ├── groupFilesByType.spec.js
│   │   │   ├── ios/
│   │   │   │   ├── addFileToProject.spec.js
│   │   │   │   ├── addProjectToLibraries.spec.js
│   │   │   │   ├── addSharedLibraries.spec.js
│   │   │   │   ├── createGroup.spec.js
│   │   │   │   ├── getBuildProperty.spec.js
│   │   │   │   ├── getGroup.spec.js
│   │   │   │   ├── getHeaderSearchPath.spec.js
│   │   │   │   ├── getHeadersInFolder.spec.js
│   │   │   │   ├── getPlist.spec.js
│   │   │   │   ├── getPlistPath.spec.js
│   │   │   │   ├── getProducts.spec.js
│   │   │   │   ├── hasLibraryImported.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   ├── mapHeaderSearchPaths.spec.js
│   │   │   │   ├── removeProjectFromLibraries.js
│   │   │   │   ├── removeProjectFromProject.spec.js
│   │   │   │   ├── removeSharedLibrary.spec.js
│   │   │   │   └── writePlist.spec.js
│   │   │   ├── link.spec.js
│   │   │   ├── pods/
│   │   │   │   ├── findLineToAddPod.spec.js
│   │   │   │   ├── findMarkedLinesInPodfile.spec.js
│   │   │   │   ├── findPodTargetLine.spec.js
│   │   │   │   ├── isInstalled.spec.js
│   │   │   │   └── removePodEntry.spec.js
│   │   │   └── promiseWaterfall.spec.js
│   │   ├── android/
│   │   │   ├── copyAssets.js
│   │   │   ├── fs.js
│   │   │   ├── isInstalled.js
│   │   │   ├── patches/
│   │   │   │   ├── applyParams.js
│   │   │   │   ├── applyPatch.js
│   │   │   │   ├── makeBuildPatch.js
│   │   │   │   ├── makeImportPatch.js
│   │   │   │   ├── makePackagePatch.js
│   │   │   │   ├── makeSettingsPatch.js
│   │   │   │   ├── makeStringsPatch.js
│   │   │   │   └── revokePatch.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── unlinkAssets.js
│   │   │   └── unregisterNativeModule.js
│   │   ├── commandStub.js
│   │   ├── getDependencyConfig.js
│   │   ├── getProjectDependencies.js
│   │   ├── groupFilesByType.js
│   │   ├── ios/
│   │   │   ├── addFileToProject.js
│   │   │   ├── addProjectToLibraries.js
│   │   │   ├── addSharedLibraries.js
│   │   │   ├── addToHeaderSearchPaths.js
│   │   │   ├── copyAssets.js
│   │   │   ├── createGroup.js
│   │   │   ├── createGroupWithMessage.js
│   │   │   ├── getBuildProperty.js
│   │   │   ├── getGroup.js
│   │   │   ├── getHeaderSearchPath.js
│   │   │   ├── getHeadersInFolder.js
│   │   │   ├── getPlist.js
│   │   │   ├── getPlistPath.js
│   │   │   ├── getProducts.js
│   │   │   ├── hasLibraryImported.js
│   │   │   ├── isInstalled.js
│   │   │   ├── mapHeaderSearchPaths.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── removeFromHeaderSearchPaths.js
│   │   │   ├── removeFromPbxItemContainerProxySection.js
│   │   │   ├── removeFromPbxReferenceProxySection.js
│   │   │   ├── removeFromProjectReferences.js
│   │   │   ├── removeFromStaticLibraries.js
│   │   │   ├── removeProductGroup.js
│   │   │   ├── removeProjectFromLibraries.js
│   │   │   ├── removeProjectFromProject.js
│   │   │   ├── removeSharedLibraries.js
│   │   │   ├── unlinkAssets.js
│   │   │   ├── unregisterNativeModule.js
│   │   │   └── writePlist.js
│   │   ├── link.js
│   │   ├── pods/
│   │   │   ├── addPodEntry.js
│   │   │   ├── findLineToAddPod.js
│   │   │   ├── findMarkedLinesInPodfile.js
│   │   │   ├── findPodTargetLine.js
│   │   │   ├── isInstalled.js
│   │   │   ├── readPodfile.js
│   │   │   ├── registerNativeModule.js
│   │   │   ├── removePodEntry.js
│   │   │   ├── savePodFile.js
│   │   │   └── unregisterNativeModule.js
│   │   ├── pollParams.js
│   │   ├── promiseWaterfall.js
│   │   ├── promisify.js
│   │   ├── unlink.js
│   │   └── windows/
│   │       ├── isInstalled.js
│   │       ├── patches/
│   │       │   ├── applyParams.js
│   │       │   ├── applyPatch.js
│   │       │   ├── makePackagePatch.js
│   │       │   ├── makeProjectPatch.js
│   │       │   ├── makeSolutionPatch.js
│   │       │   ├── makeUsingPatch.js
│   │       │   └── revokePatch.js
│   │       ├── registerNativeModule.js
│   │       └── unregisterNativeModule.js
│   ├── logAndroid/
│   │   └── logAndroid.js
│   ├── logIOS/
│   │   └── logIOS.js
│   ├── platform.js
│   ├── runAndroid/
│   │   ├── adb.js
│   │   └── runAndroid.js
│   ├── runIOS/
│   │   ├── __tests__/
│   │   │   ├── findMatchingSimulator-test.js
│   │   │   ├── findXcodeProject-test.js
│   │   │   └── parseIOSDevicesList-test.js
│   │   ├── findMatchingSimulator.js
│   │   ├── findXcodeProject.js
│   │   ├── parseIOSDevicesList.js
│   │   └── runIOS.js
│   ├── runMacOS/
│   │   ├── findXcodeProject.js
│   │   └── runMacOS.js
│   ├── server/
│   │   ├── checkNodeVersion.js
│   │   ├── middleware/
│   │   │   ├── copyToClipBoardMiddleware.js
│   │   │   ├── getDevToolsMiddleware.js
│   │   │   ├── getFlowTypeCheckMiddleware.js
│   │   │   ├── index.html
│   │   │   ├── indexPage.js
│   │   │   ├── loadRawBodyMiddleware.js
│   │   │   ├── openStackFrameInEditorMiddleware.js
│   │   │   ├── statusPageMiddleware.js
│   │   │   ├── systraceProfileMiddleware.js
│   │   │   └── unless.js
│   │   ├── runServer.js
│   │   ├── server.js
│   │   └── util/
│   │       ├── attachWebsocketServer.js
│   │       ├── copyToClipBoard.js
│   │       ├── debugger-ui/
│   │       │   ├── DeltaPatcher.js
│   │       │   ├── debuggerWorker.js
│   │       │   ├── deltaUrlToBlobUrl.js
│   │       │   └── index.html
│   │       ├── external/
│   │       │   └── xsel
│   │       ├── jsPackagerClient.js
│   │       ├── launchChrome.js
│   │       ├── launchEditor.js
│   │       ├── messageSocket.js
│   │       └── webSocketProxy.js
│   ├── setup_env.bat
│   ├── setup_env.sh
│   ├── templates/
│   │   ├── HelloNavigation/
│   │   │   ├── App.js
│   │   │   ├── README.md
│   │   │   ├── components/
│   │   │   │   ├── KeyboardSpacer.js
│   │   │   │   └── ListItem.js
│   │   │   ├── dependencies.json
│   │   │   ├── lib/
│   │   │   │   └── Backend.js
│   │   │   └── views/
│   │   │       ├── HomeScreenTabNavigator.js
│   │   │       ├── chat/
│   │   │       │   ├── ChatListScreen.js
│   │   │       │   └── ChatScreen.js
│   │   │       └── welcome/
│   │   │           ├── WelcomeScreen.js
│   │   │           ├── WelcomeText.android.js
│   │   │           └── WelcomeText.ios.js
│   │   ├── HelloWorld/
│   │   │   ├── App.js
│   │   │   ├── __tests__/
│   │   │   │   ├── App.js
│   │   │   │   └── index.macos.js
│   │   │   ├── _babelrc
│   │   │   ├── _flowconfig
│   │   │   ├── _gitattributes
│   │   │   ├── _gitignore
│   │   │   ├── _watchmanconfig
│   │   │   ├── android/
│   │   │   │   └── app/
│   │   │   │       ├── build.gradle
│   │   │   │       └── src/
│   │   │   │           └── main/
│   │   │   │               └── java/
│   │   │   │                   └── com/
│   │   │   │                       └── helloworld/
│   │   │   │                           └── MainApplication.java
│   │   │   ├── index.js
│   │   │   ├── ios/
│   │   │   │   └── HelloWorld/
│   │   │   │       ├── AppDelegate.m
│   │   │   │       └── Images.xcassets/
│   │   │   │           └── Contents.json
│   │   │   ├── macos/
│   │   │   │   ├── HelloWorld/
│   │   │   │   │   ├── AppDelegate.h
│   │   │   │   │   ├── AppDelegate.m
│   │   │   │   │   ├── Images.xcassets/
│   │   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │   │       └── Contents.json
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   └── main.m
│   │   │   │   ├── HelloWorld-tvOS/
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── HelloWorld-tvOSTests/
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── HelloWorld.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           ├── HelloWorld-tvOS.xcscheme
│   │   │   │   │           └── HelloWorld.xcscheme
│   │   │   │   └── HelloWorldTests/
│   │   │   │       ├── HelloWorldTests.m
│   │   │   │       └── Info.plist
│   │   │   └── rn-cli.config.js
│   │   └── README.md
│   ├── upgrade/
│   │   └── upgrade.js
│   ├── util/
│   │   ├── Config.js
│   │   ├── PackageManager.js
│   │   ├── __mocks__/
│   │   │   └── log.js
│   │   ├── __tests__/
│   │   │   └── findSymlinkedModules-test.js
│   │   ├── assertRequiredOptions.js
│   │   ├── copyAndReplace.js
│   │   ├── findReactNativeScripts.js
│   │   ├── findSymlinkedModules.js
│   │   ├── findSymlinksPaths.js
│   │   ├── isPackagerRunning.js
│   │   ├── isValidPackageName.js
│   │   ├── log.js
│   │   ├── parseCommandLine.js
│   │   ├── walk.js
│   │   └── yarn.js
│   └── wrong-react-native.js
├── package.json
├── react-native-git-upgrade/
│   ├── README.md
│   ├── checks.js
│   ├── cli.js
│   ├── cliEntry.js
│   ├── index.js
│   ├── package.json
│   └── yarn.js
├── react-native-macos-cli/
│   ├── index.js
│   └── package.json
├── react.gradle
├── rn-cli.config.js
├── rn-get-polyfills.js
├── runXcodeTests.sh
├── scripts/
│   ├── android-e2e-test.js
│   ├── bump-oss-version.js
│   ├── circle-ci-android-setup.sh
│   ├── e2e-sinopia.config.yml
│   ├── e2e-test.sh
│   ├── ios-configure-glog.sh
│   ├── ios-install-third-party.sh
│   ├── launchPackager.bat
│   ├── launchPackager.command
│   ├── macos-configure-folly.sh
│   ├── macos-configure-glog.sh
│   ├── macos-install-third-party.sh
│   ├── objc-test-ios.sh
│   ├── objc-test-macos.sh
│   ├── objc-test-tvos.sh
│   ├── objc-test.sh
│   ├── packager.sh
│   ├── process-podspecs.sh
│   ├── publish-npm.js
│   ├── react-native-xcode.sh
│   ├── run-android-ci-instrumentation-tests.js
│   ├── run-android-emulator.sh
│   ├── run-android-local-integration-tests.sh
│   ├── run-android-local-unit-tests.sh
│   ├── run-ci-e2e-tests.js
│   ├── run-instrumentation-tests-via-adb-shell.sh
│   ├── sync-css-layout.sh
│   ├── test-manual-e2e.sh
│   ├── try-n-times.js
│   ├── validate-android-device-env.sh
│   ├── validate-android-sdk.sh
│   ├── validate-android-test-env.sh
│   └── versiontemplates/
│       ├── RCTVersion.h.template
│       ├── ReactNativeVersion.java.template
│       └── ReactNativeVersion.js.template
├── settings.gradle
├── setupBabel.js
└── third-party-podspecs/
    ├── DoubleConversion.podspec
    ├── Folly.podspec
    └── GLog.podspec
Download .txt
Showing preview only (844K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9892 symbols across 1305 files)

FILE: ContainerShip/scripts/run-android-ci-instrumentation-tests.js
  function print_test_suite_results (line 130) | function print_test_suite_results(results) {

FILE: IntegrationTests/AccessibilityManagerTest.js
  method componentDidMount (line 25) | componentDidMount() {

FILE: IntegrationTests/AppEventsTest.js
  method if (line 46) | if (deepDiffer(event.data, TEST_PAYLOAD)) {

FILE: IntegrationTests/AsyncStorageTest.js
  function runTestCase (line 41) | function runTestCase(description : string, fn) {
  function expectTrue (line 46) | function expectTrue(condition : boolean, message : string) {
  function expectEqual (line 52) | function expectEqual(lhs, rhs, testname : string) {
  function expectAsyncNoError (line 60) | function expectAsyncNoError(place, err) {
  function testSetAndGet (line 67) | function testSetAndGet() {
  function testMissingGet (line 79) | function testMissingGet() {
  function testSetTwice (line 88) | function testSetTwice() {
  function testRemoveItem (line 101) | function testRemoveItem() {
  function testMerge (line 138) | function testMerge() {
  function testOptimizedMultiGet (line 153) | function testOptimizedMultiGet() {

FILE: IntegrationTests/ImageCachePolicyTest.js
  constant TESTS (line 34) | const TESTS = ['only-if-cached', 'default', 'reload', 'force-cache'];
  class ImageCachePolicyTest (line 44) | class ImageCachePolicyTest extends React.Component<Props, $FlowFixMeStat...

FILE: IntegrationTests/ImageSnapshotTest.js
  method componentDidMount (line 23) | componentDidMount() {

FILE: IntegrationTests/IntegrationTestHarnessTest.js
  method if (line 38) | if (this.props.waitOneFrame) {

FILE: IntegrationTests/IntegrationTestsApp.js
  method if (line 60) | if (this.state.test) {

FILE: IntegrationTests/LayoutEventsTest.js
  function debug (line 28) | function debug(...args) {
  method if (line 85) | if (!this.isMounted()) {

FILE: IntegrationTests/PromiseTest.js
  class PromiseTest (line 19) | class PromiseTest extends React.Component<{}> {

FILE: IntegrationTests/PropertiesUpdateTest.js
  class PropertiesUpdateTest (line 20) | class PropertiesUpdateTest extends React.Component {
    method render (line 21) | render() {

FILE: IntegrationTests/RCTRootViewIntegrationTestApp.js
  class RCTRootViewIntegrationTestApp (line 38) | class RCTRootViewIntegrationTestApp extends React.Component {
    method render (line 43) | render() {

FILE: IntegrationTests/ReactContentSizeUpdateTest.js
  method render (line 68) | render() {

FILE: IntegrationTests/SimpleSnapshotTest.js
  class SimpleSnapshotTest (line 27) | class SimpleSnapshotTest extends React.Component<{}> {
    method componentDidMount (line 28) | componentDidMount() {

FILE: IntegrationTests/SizeFlexibilityUpdateTest.js
  method render (line 77) | render() {

FILE: IntegrationTests/SyncMethodTest.js
  method componentDidMount (line 25) | componentDidMount() {

FILE: IntegrationTests/TimersTest.js
  method getInitialState (line 36) | getInitialState() {
  method componentDidMount (line 43) | componentDidMount() {
  method testSetTimeout0 (line 47) | testSetTimeout0() {
  method testSetTimeout1 (line 51) | testSetTimeout1() {
  method testSetTimeout50 (line 55) | testSetTimeout50() {
  method testRequestAnimationFrame (line 59) | testRequestAnimationFrame() {
  method testSetInterval0 (line 63) | testSetInterval0() {
  method testSetInterval20 (line 68) | testSetInterval20() {
  method testSetImmediate (line 73) | testSetImmediate() {
  method testClearTimeout0 (line 77) | testClearTimeout0() {
  method testClearTimeout30 (line 83) | testClearTimeout30() {
  method testClearMulti (line 89) | testClearMulti() {
  method testOrdering (line 103) | testOrdering() {
  method done (line 128) | done() {
  method render (line 134) | render() {
  method _incrementInterval (line 146) | _incrementInterval() {

FILE: IntegrationTests/WebSocketTest.js
  constant DEFAULT_WS_URL (line 19) | const DEFAULT_WS_URL = 'ws://localhost:5555/';
  constant WS_EVENTS (line 21) | const WS_EVENTS = [
  constant WS_STATES (line 27) | const WS_STATES = [
  method if (line 111) | if (!this.state.socket) {
  method return (line 122) | return (this.state.lastMessage === this.state.testExpectedResponse);

FILE: IntegrationTests/WebViewTest.js
  class WebViewTest (line 21) | class WebViewTest extends React.Component {
    method render (line 23) | render() {

FILE: Libraries/ART/ARTCGFloatArray.h
  type ARTCGFloatArray (line 17) | typedef struct {

FILE: Libraries/ART/ARTTextFrame.h
  type ARTTextFrame (line 19) | typedef struct {

FILE: Libraries/ART/ReactNativeART.js
  function arrayDiffer (line 27) | function arrayDiffer(a, b) {
  function fontAndLinesDiffer (line 42) | function fontAndLinesDiffer(a, b) {
  function childrenAsString (line 130) | function childrenAsString(children) {
  class Surface (line 145) | class Surface extends React.Component {
    method getChildContext (line 150) | getChildContext() {
    method render (line 154) | render() {
  function extractNumber (line 171) | function extractNumber(value, defaultValue) {
  function extractTransform (line 180) | function extractTransform(props) {
  function extractOpacity (line 203) | function extractOpacity(props) {
  class Group (line 219) | class Group extends React.Component {
    method render (line 224) | render() {
  class ClippingRectangle (line 240) | class ClippingRectangle extends React.Component {
    method render (line 241) | render() {
  function insertColorIntoArray (line 270) | function insertColorIntoArray(color, targetArray, atIndex) {
  function insertColorsIntoArray (line 278) | function insertColorsIntoArray(stops, targetArray, atIndex) {
  function insertOffsetsIntoArray (line 294) | function insertOffsetsIntoArray(stops, targetArray, atIndex, multi, reve...
  function insertColorStopsIntoArray (line 313) | function insertColorStopsIntoArray(stops, targetArray, atIndex) {
  function insertDoubleColorStopsIntoArray (line 318) | function insertDoubleColorStopsIntoArray(stops, targetArray, atIndex) {
  function applyBoundingBoxToBrushData (line 325) | function applyBoundingBoxToBrushData(brushData, props) {
  function extractBrush (line 346) | function extractBrush(colorOrBrush, props) {
  function extractColor (line 366) | function extractColor(color) {
  function extractStrokeCap (line 374) | function extractStrokeCap(strokeCap) {
  function extractStrokeJoin (line 382) | function extractStrokeJoin(strokeJoin) {
  class Shape (line 395) | class Shape extends React.Component {
    method render (line 396) | render() {
  function extractSingleFontFamily (line 424) | function extractSingleFontFamily(fontFamilyString) {
  function parseFontString (line 433) | function parseFontString(font) {
  function extractFont (line 455) | function extractFont(font) {
  function extractFontAndLines (line 475) | function extractFontAndLines(font, text) {
  function extractAlignment (line 479) | function extractAlignment(alignment) {
  class Text (line 490) | class Text extends React.Component {
    method render (line 491) | render() {
  function LinearGradient (line 520) | function LinearGradient(stops, x1, y1, x2, y2) {
  function RadialGradient (line 546) | function RadialGradient(stops, fx, fy, rx, ry, cx, cy) {
  function Pattern (line 573) | function Pattern(url, width, height, left, top) {

FILE: Libraries/Alert/Alert.js
  method if (line 50) | if (Platform.OS === 'ios' || Platform.OS === 'macos') {

FILE: Libraries/Alert/AlertIOS.js
  method if (line 96) | if (typeof type !== 'undefined') {
  method if (line 120) | if (typeof type === 'function') {

FILE: Libraries/Alert/RCTAlertManager.android.js
  function emptyCallback (line 15) | function emptyCallback() {}

FILE: Libraries/Animated/src/Animated.js
  method ScrollView (line 26) | get ScrollView() {

FILE: Libraries/Animated/src/AnimatedEvent.js
  function attachNativeEvent (line 28) | function attachNativeEvent(
  class AnimatedEvent (line 83) | class AnimatedEvent {

FILE: Libraries/Animated/src/AnimatedImplementation.js
  method if (line 104) | if (value instanceof AnimatedValueXY) {

FILE: Libraries/Animated/src/Easing.js
  method step0 (line 65) | static step0(n: number) {
  method step1 (line 72) | static step1(n: number) {
  method linear (line 82) | static linear(t: number) {
  method ease (line 92) | static ease(t: number): number {
  method quad (line 105) | static quad(t: number) {
  method cubic (line 115) | static cubic(t: number) {
  method poly (line 125) | static poly(n: number) {
  method sin (line 134) | static sin(t: number) {
  method circle (line 143) | static circle(t: number) {
  method exp (line 152) | static exp(t: number) {
  method elastic (line 166) | static elastic(bounciness: number = 1): (t: number) => number {
  method back (line 179) | static back(s: number): (t: number) => number {
  method bounce (line 191) | static bounce(t: number): number {
  method bezier (line 217) | static bezier(
  method return (line 253) | return (t) => {

FILE: Libraries/Animated/src/NativeAnimatedHelper.js
  constant API (line 39) | const API = {
  constant STYLES_WHITELIST (line 147) | const STYLES_WHITELIST = {
  constant TRANSFORM_WHITELIST (line 160) | const TRANSFORM_WHITELIST = {
  constant SUPPORTED_INTERPOLATION_PARAMS (line 172) | const SUPPORTED_INTERPOLATION_PARAMS = {
  function addWhitelistedStyleProp (line 180) | function addWhitelistedStyleProp(prop: string): void {
  function addWhitelistedTransformProp (line 184) | function addWhitelistedTransformProp(prop: string): void {
  function addWhitelistedInterpolationParam (line 188) | function addWhitelistedInterpolationParam(param: string): void {
  method for (line 205) | for (var key in styles) {
  method nativeEventEmitter (line 268) | get nativeEventEmitter() {

FILE: Libraries/Animated/src/SpringConfig.js
  function stiffnessFromOrigamiValue (line 20) | function stiffnessFromOrigamiValue(oValue) {
  function dampingFromOrigamiValue (line 24) | function dampingFromOrigamiValue(oValue) {
  function fromOrigamiTensionAndFriction (line 28) | function fromOrigamiTensionAndFriction(
  function fromBouncinessAndSpeed (line 38) | function fromBouncinessAndSpeed(

FILE: Libraries/Animated/src/__tests__/AnimatedNative-test.js
  function createAndMountComponent (line 29) | function createAndMountComponent(ComponentClass, props) {

FILE: Libraries/Animated/src/__tests__/Easing-test.js
  function easeInQuad (line 41) | function easeInQuad(t) {
  function easeOutQuad (line 51) | function easeOutQuad(t) {
  function easeInOutQuad (line 61) | function easeInOutQuad(t) {
  function sampleEasingFunction (line 82) | function sampleEasingFunction(easing) {

FILE: Libraries/Animated/src/__tests__/bezier-test.js
  function assertClose (line 19) | function assertClose(a, b, precision = 3) {
  function makeAssertCloseWithPrecision (line 23) | function makeAssertCloseWithPrecision(precision) {
  function allEquals (line 29) | function allEquals(be1, be2, samples, assertion) {
  function repeat (line 39) | function repeat(n) {

FILE: Libraries/Animated/src/animations/Animation.js
  class Animation (line 32) | class Animation {
    method start (line 38) | start(
    method stop (line 45) | stop(): void {
    method __getNativeAnimationConfig (line 50) | __getNativeAnimationConfig(): any {
    method __debouncedOnEnd (line 56) | __debouncedOnEnd(result: EndResult): void {
    method __startNativeAnimation (line 61) | __startNativeAnimation(animatedValue: AnimatedValue): void {

FILE: Libraries/Animated/src/animations/DecayAnimation.js
  class DecayAnimation (line 32) | class DecayAnimation extends Animation {
    method constructor (line 42) | constructor(config: DecayAnimationConfigSingle) {
    method __getNativeAnimationConfig (line 53) | __getNativeAnimationConfig() {
    method start (line 62) | start(
    method onUpdate (line 82) | onUpdate(): void {
    method stop (line 104) | stop(): void {

FILE: Libraries/Animated/src/animations/SpringAnimation.js
  class SpringAnimation (line 64) | class SpringAnimation extends Animation {
    method constructor (line 86) | constructor(config: SpringAnimationConfigSingle) {
    method __getNativeAnimationConfig (line 154) | __getNativeAnimationConfig() {
    method start (line 169) | start(
    method getInternalState (line 210) | getInternalState(): Object {
    method onUpdate (line 239) | onUpdate(): void {
    method stop (line 333) | stop(): void {

FILE: Libraries/Animated/src/animations/TimingAnimation.js
  function easeInOut (line 38) | function easeInOut() {
  class TimingAnimation (line 46) | class TimingAnimation extends Animation {
    method constructor (line 58) | constructor(config: TimingAnimationConfigSingle) {
    method __getNativeAnimationConfig (line 70) | __getNativeAnimationConfig(): any {
    method start (line 85) | start(
    method onUpdate (line 122) | onUpdate(): void {
    method stop (line 146) | stop(): void {

FILE: Libraries/Animated/src/bezier.js
  function A (line 22) | function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
  function B (line 23) | function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
  function C (line 24) | function C (aA1)      { return 3.0 * aA1; }
  function calcBezier (line 27) | function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, ...
  function getSlope (line 30) | function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + ...
  function binarySubdivide (line 32) | function binarySubdivide (aX, aA, aB, mX1, mX2) {
  function newtonRaphsonIterate (line 46) | function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
  function getTForX (line 71) | function getTForX (aX) {

FILE: Libraries/Animated/src/createAnimatedComponent.js
  function createAnimatedComponent (line 20) | function createAnimatedComponent(Component: any): any {

FILE: Libraries/Animated/src/nodes/AnimatedAddition.js
  class AnimatedAddition (line 22) | class AnimatedAddition extends AnimatedWithChildren {
    method constructor (line 26) | constructor(a: AnimatedNode | number, b: AnimatedNode | number) {
    method __makeNative (line 32) | __makeNative() {
    method __getValue (line 38) | __getValue(): number {
    method interpolate (line 42) | interpolate(config: InterpolationConfigType): AnimatedInterpolation {
    method __attach (line 46) | __attach(): void {
    method __detach (line 51) | __detach(): void {
    method __getNativeConfig (line 57) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedDiffClamp.js
  class AnimatedDiffClamp (line 21) | class AnimatedDiffClamp extends AnimatedWithChildren {
    method constructor (line 28) | constructor(a: AnimatedNode, min: number, max: number) {
    method __makeNative (line 37) | __makeNative() {
    method interpolate (line 42) | interpolate(config: InterpolationConfigType): AnimatedInterpolation {
    method __getValue (line 46) | __getValue(): number {
    method __attach (line 54) | __attach(): void {
    method __detach (line 58) | __detach(): void {
    method __getNativeConfig (line 63) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedDivision.js
  class AnimatedDivision (line 22) | class AnimatedDivision extends AnimatedWithChildren {
    method constructor (line 26) | constructor(a: AnimatedNode | number, b: AnimatedNode | number) {
    method __makeNative (line 32) | __makeNative() {
    method __getValue (line 38) | __getValue(): number {
    method interpolate (line 47) | interpolate(config: InterpolationConfigType): AnimatedInterpolation {
    method __attach (line 51) | __attach(): void {
    method __detach (line 56) | __detach(): void {
    method __getNativeConfig (line 62) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedInterpolation.js
  function createInterpolation (line 44) | function createInterpolation(

FILE: Libraries/Animated/src/nodes/AnimatedModulo.js
  class AnimatedModulo (line 21) | class AnimatedModulo extends AnimatedWithChildren {
    method constructor (line 25) | constructor(a: AnimatedNode, modulus: number) {
    method __makeNative (line 31) | __makeNative() {
    method __getValue (line 36) | __getValue(): number {
    method interpolate (line 42) | interpolate(config: InterpolationConfigType): AnimatedInterpolation {
    method __attach (line 46) | __attach(): void {
    method __detach (line 50) | __detach(): void {
    method __getNativeConfig (line 55) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedMultiplication.js
  class AnimatedMultiplication (line 22) | class AnimatedMultiplication extends AnimatedWithChildren {
    method constructor (line 26) | constructor(a: AnimatedNode | number, b: AnimatedNode | number) {
    method __makeNative (line 32) | __makeNative() {
    method __getValue (line 38) | __getValue(): number {
    method interpolate (line 42) | interpolate(config: InterpolationConfigType): AnimatedInterpolation {
    method __attach (line 46) | __attach(): void {
    method __detach (line 51) | __detach(): void {
    method __getNativeConfig (line 57) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedNode.js
  class AnimatedNode (line 21) | class AnimatedNode {
    method __attach (line 22) | __attach(): void {}
    method __detach (line 23) | __detach(): void {
    method __getValue (line 29) | __getValue(): any {}
    method __getAnimatedValue (line 30) | __getAnimatedValue(): any {
    method __addChild (line 33) | __addChild(child: AnimatedNode) {}
    method __removeChild (line 34) | __removeChild(child: AnimatedNode) {}
    method __getChildren (line 35) | __getChildren(): Array<AnimatedNode> {
    method __makeNative (line 42) | __makeNative() {
    method invariant (line 49) | invariant(

FILE: Libraries/Animated/src/nodes/AnimatedProps.js
  class AnimatedProps (line 23) | class AnimatedProps extends AnimatedNode {
    method constructor (line 28) | constructor(props: Object, callback: () => void) {
    method __getValue (line 41) | __getValue(): Object {
    method __getAnimatedValue (line 60) | __getAnimatedValue(): Object {
    method __attach (line 71) | __attach(): void {
    method __detach (line 80) | __detach(): void {
    method update (line 93) | update(): void {
    method __makeNative (line 97) | __makeNative(): void {
    method setNativeView (line 112) | setNativeView(animatedView: any): void {
    method __connectAnimatedView (line 122) | __connectAnimatedView(): void {
    method __disconnectAnimatedView (line 137) | __disconnectAnimatedView(): void {
    method __getNativeConfig (line 152) | __getNativeConfig(): Object {

FILE: Libraries/Animated/src/nodes/AnimatedStyle.js
  class AnimatedStyle (line 22) | class AnimatedStyle extends AnimatedWithChildren {
    method constructor (line 25) | constructor(style: any) {
    method _walkStyleAndGetValues (line 38) | _walkStyleAndGetValues(style) {
    method __getValue (line 58) | __getValue(): Object {
    method _walkStyleAndGetAnimatedValues (line 63) | _walkStyleAndGetAnimatedValues(style) {
    method __getAnimatedValue (line 77) | __getAnimatedValue(): Object {
    method __attach (line 81) | __attach(): void {
    method __detach (line 90) | __detach(): void {
    method __makeNative (line 100) | __makeNative() {
    method __getNativeConfig (line 110) | __getNativeConfig(): Object {

FILE: Libraries/Animated/src/nodes/AnimatedTracking.js
  class AnimatedTracking (line 20) | class AnimatedTracking extends AnimatedNode {
    method constructor (line 27) | constructor(
    method __getValue (line 43) | __getValue(): Object {
    method __attach (line 47) | __attach(): void {
    method __detach (line 51) | __detach(): void {
    method update (line 56) | update(): void {

FILE: Libraries/Animated/src/nodes/AnimatedTransform.js
  class AnimatedTransform (line 19) | class AnimatedTransform extends AnimatedWithChildren {
    method constructor (line 22) | constructor(transforms: Array<Object>) {
    method __makeNative (line 27) | __makeNative() {
    method __getValue (line 39) | __getValue(): Array<Object> {
    method __getAnimatedValue (line 54) | __getAnimatedValue(): Array<Object> {
    method __attach (line 70) | __attach(): void {
    method __detach (line 81) | __detach(): void {
    method __getNativeConfig (line 93) | __getNativeConfig(): any {

FILE: Libraries/Animated/src/nodes/AnimatedValue.js
  function _flush (line 52) | function _flush(rootNode: AnimatedValue): void {
  class AnimatedValue (line 74) | class AnimatedValue extends AnimatedWithChildren {
  method if (line 115) | if (this._animation) {

FILE: Libraries/Animated/src/nodes/AnimatedValueXY.js
  class AnimatedValueXY (line 30) | class AnimatedValueXY extends AnimatedWithChildren {

FILE: Libraries/Animated/src/nodes/AnimatedWithChildren.js
  class AnimatedWithChildren (line 18) | class AnimatedWithChildren extends AnimatedNode {
    method constructor (line 21) | constructor() {
    method __makeNative (line 26) | __makeNative() {
    method __addChild (line 39) | __addChild(child: AnimatedNode): void {
    method __removeChild (line 54) | __removeChild(child: AnimatedNode): void {
    method __getChildren (line 72) | __getChildren(): Array<AnimatedNode> {

FILE: Libraries/Animated/src/polyfills/Set.js
  function SetPolyfill (line 12) | function SetPolyfill() {

FILE: Libraries/AppState/AppState.js
  class AppState (line 28) | class AppState extends NativeEventEmitter {
    method constructor (line 34) | constructor() {
    method addEventListener (line 85) | addEventListener(
    method removeEventListener (line 113) | removeEventListener(
  class MissingNativeAppStateShim (line 130) | class MissingNativeAppStateShim extends MissingNativeEventEmitterShim {
    method constructor (line 131) | constructor() {

FILE: Libraries/BatchedBridge/MessageQueue.js
  constant TO_JS (line 30) | const TO_JS = 0;
  constant TO_NATIVE (line 31) | const TO_NATIVE = 1;
  constant MODULE_IDS (line 33) | const MODULE_IDS = 0;
  constant METHOD_IDS (line 34) | const METHOD_IDS = 1;
  constant PARAMS (line 35) | const PARAMS = 2;
  constant MIN_TIME_BETWEEN_FLUSHES_MS (line 36) | const MIN_TIME_BETWEEN_FLUSHES_MS = 5;
  constant TRACE_TAG_REACT_APPS (line 39) | const TRACE_TAG_REACT_APPS = 1 << 17;
  constant DEBUG_INFO_LIMIT (line 41) | const DEBUG_INFO_LIMIT = 32;
  class MessageQueue (line 46) | class MessageQueue {

FILE: Libraries/BatchedBridge/NativeModules.js
  function genModule (line 31) | function genModule(config: ?ModuleConfig, moduleID: number): ?{name: str...
  method if (line 86) | if (__DEV__) {

FILE: Libraries/BatchedBridge/__tests__/MessageQueue-test.js
  constant MODULE_IDS (line 18) | const MODULE_IDS = 0;
  constant METHOD_IDS (line 19) | const METHOD_IDS = 1;
  constant PARAMS (line 20) | const PARAMS = 2;

FILE: Libraries/BatchedBridge/__tests__/NativeModules-test.js
  constant MODULE_IDS (line 23) | const MODULE_IDS = 0;
  constant METHOD_IDS (line 24) | const METHOD_IDS = 1;
  constant PARAMS (line 25) | const PARAMS = 2;
  constant CALL_ID (line 26) | const CALL_ID = 3;

FILE: Libraries/Blob/Blob.js
  method create (line 86) | static create(props: BlobProps): Blob {
  method constructor (line 95) | constructor(parts: Array<Blob>, options: any) {
  method if (line 119) | if (start > size) {
  method if (line 126) | if (end < 0) {

FILE: Libraries/Blob/URL.js
  constant BLOB_URL_PREFIX (line 20) | let BLOB_URL_PREFIX = null;
  class URL (line 53) | class URL {
    method constructor (line 54) | constructor() {
    method createObjectURL (line 58) | static createObjectURL(blob: Blob) {
    method revokeObjectURL (line 67) | static revokeObjectURL(url: string) {

FILE: Libraries/BugReporting/BugReporting.js
  function defaultExtras (line 24) | function defaultExtras() {
  class BugReporting (line 34) | class BugReporting {
    method _maybeInit (line 40) | static _maybeInit() {
    method addSource (line 61) | static addSource(key: string, callback: SourceCallback): {remove: () =...
    method collectExtraData (line 92) | static collectExtraData(): DebugData {

FILE: Libraries/BugReporting/dumpReactTree.js
  function dumpReactTree (line 27) | function dumpReactTree() {
  function getReactTree (line 35) | function getReactTree() {

FILE: Libraries/BugReporting/getReactData.js
  function getData (line 20) | function getData(element: Object): Object {
  function setInProps (line 118) | function setInProps(internalInst, path: Array<string | number>, value: a...
  function setInState (line 127) | function setInState(inst, path: Array<string | number>, value: any) {
  function setInContext (line 132) | function setInContext(inst, path: Array<string | number>, value: any) {
  function setIn (line 137) | function setIn(obj: Object, path: Array<string | number>, value: any) {
  function childrenList (line 145) | function childrenList(children) {
  function copyWithSetImpl (line 153) | function copyWithSetImpl(obj, path, idx, value) {
  function copyWithSet (line 164) | function copyWithSet(obj: Object | Array<any>, path: Array<string | numb...

FILE: Libraries/CameraRoll/CameraRoll.js
  constant GROUP_TYPES_OPTIONS (line 22) | const GROUP_TYPES_OPTIONS = {
  constant ASSET_TYPE_OPTIONS (line 32) | const ASSET_TYPE_OPTIONS = {
  method saveImageWithTag (line 167) | static saveImageWithTag(tag: string): Promise<string> {
  method deletePhotos (line 174) | static deletePhotos(photos: Array<string>) {

FILE: Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js
  method var (line 77) | var listener;

FILE: Libraries/Components/ActivityIndicator/ActivityIndicator.js
  constant GRAY (line 27) | const GRAY = '#999999';

FILE: Libraries/Components/AppleTV/TVEventHandler.android.js
  function TVEventHandler (line 14) | function TVEventHandler() {}

FILE: Libraries/Components/AppleTV/TVEventHandler.ios.js
  function TVEventHandler (line 18) | function TVEventHandler() {

FILE: Libraries/Components/AppleTV/TVEventHandler.macos.js
  function TVEventHandler (line 14) | function TVEventHandler() {}

FILE: Libraries/Components/Button.js
  class Button (line 57) | class Button extends React.Component<{

FILE: Libraries/Components/Clipboard/Clipboard.js
  method setString (line 40) | setString(content: string) {

FILE: Libraries/Components/Cursor/Cursor.macos.js
  class Cursor (line 69) | class Cursor {
    method set (line 70) | static set(type: CursorType): void {

FILE: Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js
  function _toMillis (line 19) | function _toMillis(options: Object, key: string) {
  class DatePickerAndroid (line 47) | class DatePickerAndroid {
    method open (line 69) | static async open(options: Object): Promise<Object> {
    method dateSetAction (line 82) | static get dateSetAction() { return 'dateSetAction'; }
    method dismissedAction (line 86) | static get dismissedAction() { return 'dismissedAction'; }

FILE: Libraries/Components/Keyboard/KeyboardAvoidingView.js
  method getDefaultProps (line 73) | getDefaultProps() {
  method getInitialState (line 79) | getInitialState() {
  method if (line 102) | if (!event) {
  method if (line 131) | if (nextState.bottom === this.state.bottom &&
  method if (line 141) | if (Platform.OS === 'ios') {

FILE: Libraries/Components/MaskedView/MaskedViewIOS.ios.js
  method if (line 79) | if (!this._hasWarnedInvalidRenderMask) {

FILE: Libraries/Components/MaskedView/MaskedViewIOS.macos.js
  method if (line 79) | if (!this._hasWarnedInvalidRenderMask) {

FILE: Libraries/Components/Navigation/NavigatorIOS.ios.js
  function getuid (line 38) | function getuid() {
  class NavigatorTransitionerIOS (line 42) | class NavigatorTransitionerIOS extends React.Component<$FlowFixMeProps> {
    method requestSchedulingNavigation (line 43) | requestSchedulingNavigation(cb) {
    method render (line 50) | render() {
  method if (line 578) | if (this.state.makingNavigatorRequest) {
  method if (line 805) | if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {

FILE: Libraries/Components/Picker/PickerAndroid.android.js
  class PickerAndroid (line 39) | class PickerAndroid extends React.Component<{

FILE: Libraries/Components/Picker/PickerIOS.ios.js
  method render (line 110) | render() {

FILE: Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js
  constant STYLE_ATTRIBUTES (line 21) | const STYLE_ATTRIBUTES = [
  class ProgressBarAndroid (line 66) | class ProgressBarAndroid extends ReactNative.NativeComponent {
    method render (line 111) | render() {

FILE: Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.macos.js
  class DummyProgressViewIOS (line 20) | class DummyProgressViewIOS extends React.Component {
    method render (line 21) | render() {

FILE: Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js
  class DummyProgressViewIOS (line 20) | class DummyProgressViewIOS extends React.Component {
    method render (line 21) | render() {

FILE: Libraries/Components/RefreshControl/RefreshControl.js
  method componentDidMount (line 138) | componentDidMount() {
  method if (line 146) | if (this.props.refreshing !== prevProps.refreshing) {

FILE: Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js
  class RefreshControlMock (line 19) | class RefreshControlMock extends React.Component<{}> {

FILE: Libraries/Components/ScrollResponder.js
  constant IS_ANIMATING_TOUCH_START_THRESHOLD_MS (line 109) | const IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;
  function isTagInstanceOfTextInput (line 120) | function isTagInstanceOfTextInput(tag) {

FILE: Libraries/Components/ScrollView/__mocks__/ScrollViewMock.js
  class ScrollViewMock (line 27) | class ScrollViewMock extends ScrollViewComponent {
    method render (line 28) | render() {

FILE: Libraries/Components/ScrollView/processDecelerationRate.js
  function processDecelerationRate (line 13) | function processDecelerationRate(decelerationRate) {

FILE: Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js
  class DummySegmentedControlIOS (line 20) | class DummySegmentedControlIOS extends React.Component {
    method render (line 21) | render() {

FILE: Libraries/Components/StaticContainer.react.js
  class StaticContainer (line 31) | class StaticContainer extends React.Component<Object> {

FILE: Libraries/Components/StatusBar/StatusBar.js
  function mergePropsStack (line 66) | function mergePropsStack(
  function createStackEntry (line 84) | function createStackEntry(props: any): any {
  class StatusBar (line 152) | class StatusBar extends React.Component<{
    method if (line 227) | if (Platform.OS !== 'ios') {
    method if (line 257) | if (Platform.OS !== 'android') {

FILE: Libraries/Components/StatusBar/StatusBarIOS.ios.js
  class StatusBarIOS (line 20) | class StatusBarIOS extends NativeEventEmitter {}

FILE: Libraries/Components/TabBarIOS/TabBarItemIOS.android.js
  class DummyTab (line 18) | class DummyTab extends React.Component {
    method render (line 19) | render() {

FILE: Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js
  method componentWillMount (line 105) | componentWillMount() {

FILE: Libraries/Components/TextInput/TextInputState.js
  method if (line 41) | if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) {
  method if (line 61) | if (this._currentlyFocusedID === textFieldID && textFieldID !== null) {

FILE: Libraries/Components/TimePickerAndroid/TimePickerAndroid.android.js
  class TimePickerAndroid (line 36) | class TimePickerAndroid {
    method open (line 57) | static async open(options: Object): Promise<Object> {
    method timeSetAction (line 64) | static get timeSetAction() { return 'timeSetAction'; }
    method dismissedAction (line 68) | static get dismissedAction() { return 'dismissedAction'; }

FILE: Libraries/Components/Touchable/BoundingDimensions.js
  function BoundingDimensions (line 25) | function BoundingDimensions(width, height) {

FILE: Libraries/Components/Touchable/Position.js
  function Position (line 26) | function Position(left, top) {

FILE: Libraries/Components/Touchable/TouchableHighlight.js
  constant DEFAULT_PROPS (line 31) | const DEFAULT_PROPS = {
  constant PRESS_RETENTION_OFFSET (line 37) | const PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};

FILE: Libraries/Components/Touchable/TouchableNativeFeedback.ios.js
  class DummyTouchableNativeFeedback (line 19) | class DummyTouchableNativeFeedback extends React.Component {
    method render (line 20) | render() {

FILE: Libraries/Components/Touchable/TouchableNativeFeedback.macos.js
  class TouchableNativeFeedback (line 19) | class TouchableNativeFeedback extends React.Component {
    method render (line 20) | render() {

FILE: Libraries/Components/Touchable/TouchableOpacity.js
  method if (line 182) | if (e.dispatchConfig.registrationName === 'onResponderGrant') {

FILE: Libraries/Components/Touchable/TouchableWithoutFeedback.js
  constant PRESS_RETENTION_OFFSET (line 37) | const PRESS_RETENTION_OFFSET = { top: 20, left: 20, right: 20, bottom: 3...

FILE: Libraries/Components/UnimplementedViews/UnimplementedView.js
  method setNativeProps (line 23) | setNativeProps() {
  method render (line 29) | render() {

FILE: Libraries/Components/ViewPager/ViewPagerAndroid.android.js
  method if (line 192) | if (this.props.onPageScroll) {
  method if (line 195) | if (this.props.keyboardDismissMode === 'on-drag') {
  method if (line 201) | if (this.props.onPageScrollStateChanged) {
  method if (line 207) | if (this.props.onPageSelected) {

FILE: Libraries/Components/WebView/WebView.android.js
  class WebView (line 47) | class WebView extends React.Component {
    method extraNativeComponentConfig (line 48) | static get extraNativeComponentConfig() {
    method componentWillMount (line 250) | componentWillMount() {
    method render (line 256) | render() {

FILE: Libraries/Components/WebView/WebView.macos.js
  class WebView (line 115) | class WebView extends React.Component {
    method extraNativeComponentConfig (line 118) | static get extraNativeComponentConfig() {
    method componentWillMount (line 412) | componentWillMount() {
    method render (line 418) | render() {

FILE: Libraries/Core/Devtools/__tests__/parseErrorStack-test.js
  function getFakeError (line 16) | function getFakeError() {
  function getWrappedError (line 32) | function getWrappedError() {

FILE: Libraries/Core/Devtools/getDevServer.js
  constant FALLBACK (line 17) | const FALLBACK = 'http://localhost:8081/';
  function getDevServer (line 28) | function getDevServer(): DevServerInfo {

FILE: Libraries/Core/Devtools/openFileInEditor.js
  function openFileInEditor (line 16) | function openFileInEditor(file: string, lineNumber: number) {

FILE: Libraries/Core/Devtools/parseErrorStack.js
  function parseErrorStack (line 25) | function parseErrorStack(e: ExtendedError): Array<StackFrame> {

FILE: Libraries/Core/Devtools/symbolicateStackTrace.js
  function isSourcedFromDisk (line 23) | function isSourcedFromDisk(sourcePath: string): boolean {
  method if (line 39) | if (!fetch) {

FILE: Libraries/Core/ExceptionsManager.js
  constant INTERNAL_CALLSITES_REGEX (line 16) | const INTERNAL_CALLSITES_REGEX = new RegExp(
  function reportException (line 27) | function reportException(e: ExtendedError, isFatal: bool) {
  function handleException (line 70) | function handleException(e: Error, isFatal: boolean) {
  function reactConsoleErrorHandler (line 86) | function reactConsoleErrorHandler() {
  function installConsoleErrorReporter (line 113) | function installConsoleErrorReporter() {

FILE: Libraries/Core/ReactNativeVersionCheck.js
  function _formatVersion (line 49) | function _formatVersion(version): string {

FILE: Libraries/Core/Timers/JSTimers.js
  function performanceNow (line 24) | function performanceNow() {
  constant FRAME_DURATION (line 49) | const FRAME_DURATION = 1000 / 60;
  constant IDLE_CALLBACK_FRAME_DEADLINE (line 50) | const IDLE_CALLBACK_FRAME_DEADLINE = 1;
  constant MAX_TIMER_DURATION_MS (line 52) | const MAX_TIMER_DURATION_MS = 60 * 1000;
  constant IS_ANDROID (line 53) | const IS_ANDROID = Platform.OS === 'android';
  constant ANDROID_LONG_TIMER_MESSAGE (line 54) | const ANDROID_LONG_TIMER_MESSAGE =
  method callback (line 154) | callback();

FILE: Libraries/Core/__mocks__/ErrorUtils.js
  function execute (line 16) | function execute(fun, context, args) {
  function reportError (line 20) | function reportError(error) {

FILE: Libraries/Core/__tests__/ReactNativeVersionCheck-test.js
  function _setDevelopmentModeForTests (line 26) | function _setDevelopmentModeForTests(dev) {
  function _defineCheckVersionTests (line 39) | function _defineCheckVersionTests() {
  function _mockJsVersion (line 120) | function _mockJsVersion(major = 0, minor = 0, patch = 0, prerelease = nu...
  function _mockNativeVersion (line 126) | function _mockNativeVersion(

FILE: Libraries/EventEmitter/MissingNativeEventEmitterShim.js
  class MissingNativeEventEmitterShim (line 19) | class MissingNativeEventEmitterShim extends EventEmitter {
    method constructor (line 24) | constructor(nativeModuleName: string, nativeEventEmitterName: string) {
    method throwMissingNativeModule (line 30) | throwMissingNativeModule() {
    method addListener (line 41) | addListener(eventType: string, listener: Function, context: ?Object) {
    method removeAllListeners (line 45) | removeAllListeners(eventType: string) {
    method removeSubscription (line 49) | removeSubscription(subscription: EmitterSubscription) {

FILE: Libraries/EventEmitter/NativeEventEmitter.js
  class NativeEventEmitter (line 31) | class NativeEventEmitter extends EventEmitter {
    method constructor (line 34) | constructor(nativeModule: ?NativeModule) {
    method addListener (line 42) | addListener(
    method removeAllListeners (line 53) | removeAllListeners(eventType: string) {
    method removeSubscription (line 62) | removeSubscription(subscription: EmitterSubscription) {

FILE: Libraries/EventEmitter/RCTDeviceEventEmitter.js
  function checkNativeEventModule (line 19) | function checkNativeEventModule(eventType: ?string) {
  class RCTDeviceEventEmitter (line 37) | class RCTDeviceEventEmitter extends EventEmitter {
    method constructor (line 41) | constructor() {
    method addListener (line 48) | addListener(eventType: string, listener: Function, context: ?Object): ...
    method removeAllListeners (line 55) | removeAllListeners(eventType: ?string) {
    method removeSubscription (line 62) | removeSubscription(subscription: EmitterSubscription) {

FILE: Libraries/EventEmitter/RCTEventEmitter.js
  method register (line 17) | register(eventEmitter: any) {

FILE: Libraries/EventEmitter/__mocks__/NativeEventEmitter.js
  class NativeEventEmitter (line 19) | class NativeEventEmitter extends EventEmitter {
    method constructor (line 20) | constructor() {

FILE: Libraries/Experimental/Incremental.js
  constant DEBUG (line 21) | const DEBUG = false;

FILE: Libraries/Experimental/IncrementalExample.js
  method constructor (line 42) | constructor(props, context) {
  method render (line 49) | render() {
  method componentDidMount (line 59) | componentDidMount() {
  function startInteraction (line 67) | function startInteraction() {
  function stopInteraction (line 70) | function stopInteraction() {
  function Block (line 74) | function Block(props: Object) {
  function burnCPU (line 154) | function burnCPU(milliseconds) {

FILE: Libraries/Experimental/IncrementalGroup.js
  constant DEBUG (line 22) | const DEBUG = false;
  class IncrementalGroup (line 37) | class IncrementalGroup extends React.Component<Props & {disabled?: boole...

FILE: Libraries/Experimental/SwipeableRow/SwipeableFlatList.js
  method if (line 112) | if (this.state.openRowKey) {

FILE: Libraries/Experimental/SwipeableRow/SwipeableListView.js
  class SwipeableListView (line 56) | class SwipeableListView extends React.Component<Props, State> {
    method SwipeableListViewDataSource (line 64) | SwipeableListViewDataSource({
    method if (line 147) | if (this._listViewRef && typeof this._listViewRef.setNativeProps === '...

FILE: Libraries/Experimental/SwipeableRow/SwipeableListViewDataSource.js
  method constructor (line 33) | constructor(params: Object) {
  method if (line 85) | if (this.rowIdentities) {
  method if (line 92) | if (this.rowIdentities && this.rowIdentities.length) {

FILE: Libraries/Experimental/SwipeableRow/SwipeableQuickActions.js
  class SwipeableQuickActions (line 30) | class SwipeableQuickActions extends React.Component<{style?: $FlowFixMe}> {
    method if (line 41) | if (children instanceof Array) {

FILE: Libraries/Experimental/SwipeableRow/SwipeableRow.js
  constant IS_RTL (line 32) | const IS_RTL = I18nManager.isRTL;
  constant CLOSED_LEFT_POSITION (line 37) | const CLOSED_LEFT_POSITION = 0;
  constant HORIZONTAL_SWIPE_DISTANCE_THRESHOLD (line 39) | const HORIZONTAL_SWIPE_DISTANCE_THRESHOLD = 10;
  constant HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD (line 41) | const HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD = 0.3;
  constant SLOW_SPEED_SWIPE_FACTOR (line 43) | const SLOW_SPEED_SWIPE_FACTOR = 4;
  constant SWIPE_DURATION (line 45) | const SWIPE_DURATION = 300;
  constant ON_MOUNT_BOUNCE_DELAY (line 51) | const ON_MOUNT_BOUNCE_DELAY = 700;
  constant ON_MOUNT_BOUNCE_DURATION (line 52) | const ON_MOUNT_BOUNCE_DURATION = 400;
  constant RIGHT_SWIPE_BOUNCE_BACK_DISTANCE (line 55) | const RIGHT_SWIPE_BOUNCE_BACK_DISTANCE = 30;
  constant RIGHT_SWIPE_BOUNCE_BACK_DURATION (line 56) | const RIGHT_SWIPE_BOUNCE_BACK_DURATION = 300;
  constant RIGHT_SWIPE_THRESHOLD (line 62) | const RIGHT_SWIPE_THRESHOLD = 30 * SLOW_SPEED_SWIPE_FACTOR;
  method if (line 141) | if (this.props.shouldBounceOnMount) {
  method if (line 157) | if (this.props.isOpen && !nextProps.isOpen) {
  method if (line 163) | if (this.props.shouldBounceOnMount && !nextProps.shouldBounceOnMount) {
  method let (line 173) | let slideOutView;
  method if (line 228) | if (this._isSwipingExcessivelyRightFromClosedPosition(gestureState)) {

FILE: Libraries/Experimental/WindowedListView.js
  constant DEBUG (line 32) | const DEBUG = false;
  class WindowedListView (line 153) | class WindowedListView extends React.Component<Props, State> {
    method constructor (line 189) | constructor(props: Props) {
  class CellRenderer (line 619) | class CellRenderer extends React.Component<CellProps> {
    method if (line 628) | if (this.props.asyncRowPerfEventName) {
    method if (line 669) | if (this.props.asyncRowPerfEventName) {

FILE: Libraries/Geolocation/Geolocation.js
  method if (line 163) | if (!updatesEnabled) {

FILE: Libraries/Image/AssetRegistry.js
  function getAssetByID (line 36) | function getAssetByID(assetId: number): PackagerAsset {

FILE: Libraries/Image/AssetSourceResolver.js
  function getScaledAssetPath (line 33) | function getScaledAssetPath(asset): string {
  function getAssetPathInDrawableFolder (line 43) | function getAssetPathInDrawableFolder(asset): string {
  class AssetSourceResolver (line 50) | class AssetSourceResolver {
    method constructor (line 58) | constructor(serverUrl: ?string,
    method isLoadedFromServer (line 67) | isLoadedFromServer(): boolean {
    method isLoadedFromFileSystem (line 71) | isLoadedFromFileSystem(): boolean {
    method defaultAsset (line 75) | defaultAsset(): ResolvedAssetSource {
    method assetServerURL (line 93) | assetServerURL(): ResolvedAssetSource {
    method scaledAssetPath (line 105) | scaledAssetPath(): ResolvedAssetSource {
    method scaledAssetURLNearBundle (line 113) | scaledAssetURLNearBundle(): ResolvedAssetSource {
    method resourceIdentifierWithoutScale (line 124) | resourceIdentifierWithoutScale(): ResolvedAssetSource {
    method drawableFolderInBundle (line 134) | drawableFolderInBundle(): ResolvedAssetSource {
    method fromSource (line 141) | fromSource(source: string): ResolvedAssetSource {
    method pickScale (line 151) | static pickScale(scales: Array<number>, deviceScale: number): number {

FILE: Libraries/Image/Image.android.js
  function generateRequestId (line 40) | function generateRequestId() {

FILE: Libraries/Image/Image.macos.js
  method prefetch (line 329) | prefetch(url: string) {

FILE: Libraries/Image/ImageBackground.js
  method setNativeProps (line 49) | setNativeProps(props: Object) {

FILE: Libraries/Image/ImageEditor.js
  class ImageEditor (line 51) | class ImageEditor {
    method cropImage (line 62) | static cropImage(

FILE: Libraries/Image/ImageStore.js
  class ImageStore (line 16) | class ImageStore {
    method hasImageForTag (line 21) | static hasImageForTag(uri: string, callback: (hasImage: bool) => void) {
    method addImageFromBase64 (line 56) | static addImageFromBase64(
    method getBase64ForTag (line 75) | static getBase64ForTag(

FILE: Libraries/Image/RCTImageLoader.h
  type dispatch_block_t (line 22) | typedef dispatch_block_t RCTImageLoaderCancellationBlock;

FILE: Libraries/Image/__tests__/resolveAssetSource-test.js
  function expectResolvesAsset (line 18) | function expectResolvesAsset(input, expectedSource) {

FILE: Libraries/Image/nativeImageSource.js
  function nativeImageSource (line 40) | function nativeImageSource(spec: SourceSpec): Object {

FILE: Libraries/Image/resolveAssetSource.js
  function string (line 39) | function _coerceLocalScriptURL(scriptURL: ?string): ?string {

FILE: Libraries/Inspector/BorderBox.js
  method render (line 18) | render() {

FILE: Libraries/Inspector/BoxInspector.js
  method render (line 28) | render() {
  method render (line 51) | render() {

FILE: Libraries/Inspector/ElementBox.js
  method render (line 23) | render() {

FILE: Libraries/Inspector/ElementProperties.js
  class ElementProperties (line 30) | class ElementProperties extends React.Component<{

FILE: Libraries/Inspector/Inspector.js
  function findRenderer (line 41) | function findRenderer(): ReactRenderer {
  class Inspector (line 48) | class Inspector extends React.Component<{
    method if (line 89) | if (this._subs) {

FILE: Libraries/Inspector/InspectorOverlay.js
  class InspectorOverlay (line 26) | class InspectorOverlay extends React.Component<{

FILE: Libraries/Inspector/InspectorPanel.js
  method renderWaiting (line 26) | renderWaiting() {
  method render (line 37) | render() {
  method render (line 108) | render() {

FILE: Libraries/Inspector/NetworkOverlay.js
  constant LISTVIEW_CELL_HEIGHT (line 24) | const LISTVIEW_CELL_HEIGHT = 15;
  constant SEPARATOR_THICKNESS (line 25) | const SEPARATOR_THICKNESS = 2;
  method if (line 378) | if (this._scrollView) {

FILE: Libraries/Inspector/PerformanceOverlay.js
  method render (line 21) | render() {

FILE: Libraries/Inspector/StyleInspector.js
  method render (line 20) | render() {

FILE: Libraries/Inspector/resolveBoxStyle.js
  function capFirst (line 54) | function capFirst(text) {

FILE: Libraries/Interaction/Batchinator.js
  class Batchinator (line 38) | class Batchinator {

FILE: Libraries/Interaction/InteractionManager.js
  constant DEBUG_DELAY (line 31) | const DEBUG_DELAY = 0;
  constant DEBUG (line 32) | const DEBUG = false;

FILE: Libraries/Interaction/PanResponder.js
  function clearInteractionHandle (line 400) | function clearInteractionHandle(

FILE: Libraries/Interaction/TaskQueue.js
  constant DEBUG (line 27) | const DEBUG = false;
  class TaskQueue (line 45) | class TaskQueue {
    method constructor (line 53) | constructor({onMoreTasks}: {onMoreTasks: () => void}) {
    method enqueue (line 63) | enqueue(task: Task): void {
  method if (line 103) | if (task.gen) {

FILE: Libraries/Interaction/__tests__/Batchinator-test.js
  function expectToBeCalledOnce (line 18) | function expectToBeCalledOnce(fn) {

FILE: Libraries/Interaction/__tests__/InteractionManager-test.js
  function expectToBeCalledOnce (line 18) | function expectToBeCalledOnce(fn) {
  function createSequenceTask (line 160) | function createSequenceTask(expectedSequenceId) {

FILE: Libraries/Interaction/__tests__/TaskQueue-test.js
  function expectToBeCalledOnce (line 16) | function expectToBeCalledOnce(fn) {
  function clearTaskQueue (line 20) | function clearTaskQueue(taskQueue) {
  function createSequenceTask (line 32) | function createSequenceTask(expectedSequenceId) {

FILE: Libraries/JSInspector/InspectorAgent.js
  method constructor (line 19) | constructor(eventSender: EventSender) {
  method sendEvent (line 23) | sendEvent(name: string, params: Object) {

FILE: Libraries/JSInspector/JSInspector.js
  method registerAgent (line 27) | registerAgent(type: AgentClass) {

FILE: Libraries/JSInspector/NetworkAgent.js
  class Interceptor (line 144) | class Interceptor {
    method constructor (line 148) | constructor(agent: NetworkAgent) {
  class NetworkAgent (line 269) | class NetworkAgent extends InspectorAgent {
    method enable (line 275) | enable({ maxResourceBufferSize, maxTotalBufferSize }: EnableArgs) {
    method disable (line 280) | disable() {
    method getResponseBody (line 285) | getResponseBody({requestId}: {requestId: RequestId})

FILE: Libraries/LayoutAnimation/LayoutAnimation.js
  function checkConfig (line 76) | function checkConfig(config: Config, location: string, name: string) {
  function configureNext (line 80) | function configureNext(config: Config, onAnimationDidEnd?: Function) {
  function create (line 93) | function create(duration: number, type, creationProp): Config {

FILE: Libraries/Linking/Linking.js
  class Linking (line 147) | class Linking extends NativeEventEmitter {
    method constructor (line 149) | constructor() {
    method addEventListener (line 157) | addEventListener(type: string, handler: Function) {
    method removeEventListener (line 164) | removeEventListener(type: string, handler: Function ) {
    method openURL (line 184) | openURL(url: string): Promise<any> {
    method canOpenURL (line 199) | canOpenURL(url: string): Promise<boolean> {

FILE: Libraries/Lists/FillRateHelper.js
  class Info (line 27) | class Info {
  constant DEBUG (line 42) | const DEBUG = false;
  method if (line 92) | if (this._enabled && this._samplesStartTime == null) {
  method if (line 99) | if (!this._enabled) {

FILE: Libraries/Lists/FlatList.js
  method if (line 332) | if (this._listRef) {
  method if (line 589) | if (numColumns > 1) {

FILE: Libraries/Lists/ListView/ListView.js
  method if (line 285) | if (this._scrollComponent && this._scrollComponent.scrollTo) {
  method if (line 301) | if (this._scrollComponent) {
  method if (line 679) | if (!this.props.onChangeVisibleRows) {
  method if (line 682) | if (updatedFrames) {
  method if (line 730) | if (rowVisible) {

FILE: Libraries/Lists/ListView/ListViewDataSource.js
  function defaultGetRowData (line 22) | function defaultGetRowData(
  function defaultGetSectionHeaderData (line 30) | function defaultGetSectionHeaderData(
  class ListViewDataSource (line 80) | class ListViewDataSource {
    method constructor (line 106) | constructor(params: ParamType) {
    method cloneWithRows (line 144) | cloneWithRows(
    method cloneWithRowsAndSections (line 174) | cloneWithRowsAndSections(
    method getRowCount (line 226) | getRowCount(): number {
    method getRowAndSectionCount (line 235) | getRowAndSectionCount(): number {
    method rowShouldUpdate (line 242) | rowShouldUpdate(sectionIndex: number, rowIndex: number): boolean {
    method getRowData (line 254) | getRowData(sectionIndex: number, rowIndex: number): any {
    method for (line 270) | for (var ii = 0; ii < this.sectionIdentities.length; ii++) {

FILE: Libraries/Lists/ListView/__mocks__/ListViewMock.js
  class ListViewMock (line 19) | class ListViewMock extends React.Component<$FlowFixMeProps> {

FILE: Libraries/Lists/MetroListView.js
  class MetroListView (line 64) | class MetroListView extends React.Component<Props, $FlowFixMeState> {
    method scrollToEnd (line 65) | scrollToEnd(params?: ?{animated?: ?boolean}) {

FILE: Libraries/Lists/ViewabilityHelper.js
  class ViewabilityHelper (line 74) | class ViewabilityHelper {
    method constructor (line 84) | constructor(
    method dispose (line 93) | dispose() {
    method computeViewableItems (line 100) | computeViewableItems(
    method onUpdate (line 163) | onUpdate(
    method resetViewableIndices (line 223) | resetViewableIndices() {
    method recordInteraction (line 230) | recordInteraction() {
    method _onUpdateSync (line 234) | _onUpdateSync(
  function _isViewable (line 273) | function _isViewable(
  function _getPixelsVisible (line 291) | function _getPixelsVisible(
  function _isEntirelyVisible (line 300) | function _isEntirelyVisible(

FILE: Libraries/Lists/VirtualizeUtils.js
  method if (line 33) | if (out[kk] == null && trailingOffset >= offsets[kk]) {
  method if (line 150) | if (first <= overscanFirst && last >= overscanLast) {
  method if (line 172) | if (firstWillAddMore) {
  method if (line 181) | if (lastWillAddMore) {

FILE: Libraries/Lists/VirtualizedList.js
  method if (line 397) | if (this._scrollRef && this._scrollRef.getScrollResponder) {
  method if (line 403) | if (this._scrollRef && this._scrollRef.getScrollableNode) {
  method if (line 411) | if (this._scrollRef) {
  method if (line 421) | if (item.key != null) {
  method invariant (line 532) | invariant(
  method if (line 1077) | if (this._isNestedWithSameOrientation()) {
  method if (line 1482) | if (getItemLayout) {

FILE: Libraries/Lists/VirtualizedSectionList.js
  method if (line 509) | if (!sections) {
  method if (line 514) | if (itemIdx === -1 || itemIdx === sections[ii].data.length) {

FILE: Libraries/Lists/__flowtests__/FlatList-flowtest.js
  function renderMyListItem (line 18) | function renderMyListItem(info: {item: {title: string}, index: number}) {
  method testEverythingIsFine (line 23) | testEverythingIsFine() {
  method testBadDataWithTypicalItem (line 33) | testBadDataWithTypicalItem() {
  method testMissingFieldWithTypicalItem (line 44) | testMissingFieldWithTypicalItem() {
  method testGoodDataWithBadCustomRenderItemFunction (line 54) | testGoodDataWithBadCustomRenderItemFunction() {
  method testBadRenderItemFunction (line 76) | testBadRenderItemFunction() {
  method testOtherBadProps (line 104) | testOtherBadProps() {

FILE: Libraries/Lists/__flowtests__/SectionList-flowtest.js
  function renderMyListItem (line 18) | function renderMyListItem(info: {item: {title: string}, index: number}) {
  method testGoodDataWithGoodItem (line 27) | testGoodDataWithGoodItem() {
  method testBadRenderItemFunction (line 42) | testBadRenderItemFunction() {

FILE: Libraries/Lists/__tests__/FillRateHelper-test.js
  function getFrameMetrics (line 26) | function getFrameMetrics(index: number) {
  function computeResult (line 31) | function computeResult({helper, props, state, scroll}): number {

FILE: Libraries/Lists/__tests__/SectionList-test.js
  function propStr (line 104) | function propStr(props) {

FILE: Libraries/Lists/__tests__/ViewabilityHelper-test.js
  function getFrameMetrics (line 19) | function getFrameMetrics(index: number) {
  function createViewToken (line 23) | function createViewToken(index: number, isViewable: boolean) {

FILE: Libraries/Lists/__tests__/VirtualizeUtils-test.js
  function getFrameMetrics (line 47) | function getFrameMetrics(index: number) {

FILE: Libraries/Modal/Modal.js
  method if (line 186) | if (ModalEventEmitter) {
  method if (line 199) | if (this._eventSubscription) {
  method if (line 209) | if (props.presentationStyle && props.presentationStyle !== 'overFullScre...

FILE: Libraries/Network/NetInfo.js
  constant DEVICE_CONNECTIVITY_EVENT (line 22) | const DEVICE_CONNECTIVITY_EVENT = 'networkStatusDidChange';
  function _isConnected (line 77) | function _isConnected(connection) {
  method let (line 214) | let listener;

FILE: Libraries/Network/RCTNetworking.android.js
  function convertHeadersMapToArray (line 27) | function convertHeadersMapToArray(headers: Object): Array<Header> {
  function generateRequestId (line 36) | function generateRequestId(): number {
  class RCTNetworking (line 44) | class RCTNetworking extends NativeEventEmitter {
    method constructor (line 48) | constructor() {
    method sendRequest (line 52) | sendRequest(
    method abortRequest (line 86) | abortRequest(requestId: number) {
    method clearCookies (line 90) | clearCookies(callback: (result: boolean) => any) {
  class MissingNativeRCTNetworkingShim (line 96) | class MissingNativeRCTNetworkingShim extends MissingNativeEventEmitterSh...
    method constructor (line 97) | constructor() {
    method sendRequest (line 101) | sendRequest(...args: Array<any>) {
    method abortRequest (line 105) | abortRequest(...args: Array<any>) {
    method clearCookies (line 109) | clearCookies(...args: Array<any>) {

FILE: Libraries/Network/RCTNetworking.ios.js
  class RCTNetworking (line 21) | class RCTNetworking extends NativeEventEmitter {
    method constructor (line 25) | constructor() {
    method sendRequest (line 29) | sendRequest(
    method abortRequest (line 54) | abortRequest(requestId: number) {
    method clearCookies (line 58) | clearCookies(callback: (result: boolean) => any) {
  class MissingNativeRCTNetworkingShim (line 64) | class MissingNativeRCTNetworkingShim extends MissingNativeEventEmitterSh...
    method constructor (line 65) | constructor() {
    method sendRequest (line 69) | sendRequest(...args: Array<any>) {
    method abortRequest (line 73) | abortRequest(...args: Array<any>) {
    method clearCookies (line 77) | clearCookies(...args: Array<any>) {

FILE: Libraries/Network/RCTNetworking.macos.js
  class RCTNetworking (line 18) | class RCTNetworking extends NativeEventEmitter {
    method constructor (line 20) | constructor() {
    method sendRequest (line 24) | sendRequest(
    method abortRequest (line 50) | abortRequest(requestId: number) {
    method clearCookies (line 54) | clearCookies(callback: (result: boolean) => any) {

FILE: Libraries/Network/XHRInterceptor.js
  method setOpenCallback (line 37) | setOpenCallback(callback) {
  method setSendCallback (line 44) | setSendCallback(callback) {
  method setHeaderReceivedCallback (line 51) | setHeaderReceivedCallback(callback) {
  method setResponseCallback (line 58) | setResponseCallback(callback) {
  method setRequestHeaderCallback (line 65) | setRequestHeaderCallback(callback) {
  method isInterceptorEnabled (line 69) | isInterceptorEnabled() {
  method enableInterception (line 73) | enableInterception() {
  method disableInterception (line 146) | disableInterception() {

FILE: Libraries/Network/XMLHttpRequest.js
  constant UNSENT (line 57) | const UNSENT = 0;
  constant OPENED (line 58) | const OPENED = 1;
  constant HEADERS_RECEIVED (line 59) | const HEADERS_RECEIVED = 2;
  constant LOADING (line 60) | const LOADING = 3;
  constant DONE (line 61) | const DONE = 4;
  constant SUPPORTED_RESPONSE_TYPES (line 63) | const SUPPORTED_RESPONSE_TYPES = {
  constant REQUEST_EVENTS (line 72) | const REQUEST_EVENTS = [
  constant XHR_EVENTS (line 82) | const XHR_EVENTS = REQUEST_EVENTS.concat('readystatechange');
  class XMLHttpRequestEventTarget (line 84) | class XMLHttpRequestEventTarget extends EventTarget(...REQUEST_EVENTS) {
  class XMLHttpRequest (line 97) | class XMLHttpRequest extends EventTarget(...XHR_EVENTS) {
    method setInterceptor (line 150) | static setInterceptor(interceptor: ?XHRInterceptor) {
    method constructor (line 154) | constructor() {
    method _reset (line 159) | _reset(): void {
    method responseType (line 179) | get responseType(): ResponseType {
    method responseType (line 183) | set responseType(responseType: ResponseType): void {
    method responseText (line 206) | get responseText(): string {
    method response (line 219) | get response(): Response {
    method __didCreateRequest (line 267) | __didCreateRequest(requestId: number): void {
    method __didUploadProgress (line 278) | __didUploadProgress(
    method __didReceiveResponse (line 293) | __didReceiveResponse(
    method __didReceiveData (line 317) | __didReceiveData(requestId: number, response: string): void {
    method __didReceiveIncrementalData (line 330) | __didReceiveIncrementalData(
    method __didReceiveDataProgress (line 353) | __didReceiveDataProgress(
    method __didCompleteResponse (line 370) | __didCompleteResponse(
    method _clearSubscriptions (line 401) | _clearSubscriptions(): void {
    method string (line 410) | string {
  method if (line 427) | if (this.readyState !== this.OPENED) {
  method if (line 569) | if (type === 'readystatechange' || type === 'progress') {

FILE: Libraries/Network/__tests__/XMLHttpRequest-test.js
  function setRequestId (line 17) | function setRequestId(id){
  method sendRequest (line 30) | sendRequest(options, callback) {

FILE: Libraries/Network/convertRequestBody.js
  function convertRequestBody (line 26) | function convertRequestBody(body: RequestBody): Object {

FILE: Libraries/Performance/QuickPerformanceLogger.js
  method markerStart (line 24) | markerStart(markerId, opts) {
  method markerEnd (line 34) | markerEnd(markerId, actionId, opts) {
  method markerNote (line 44) | markerNote(markerId, actionId, opts) {
  method markerTag (line 54) | markerTag(markerId, tag, opts) {
  method markerAnnotate (line 64) | markerAnnotate(markerId, annotationKey, annotationValue, opts) {
  method markerCancel (line 76) | markerCancel(markerId, opts) {
  method currentTimestamp (line 86) | currentTimestamp() {

FILE: Libraries/Performance/Systrace.js
  constant TRACE_TAG_REACT_APPS (line 29) | const TRACE_TAG_REACT_APPS = 1 << 17;
  constant TRACE_TAG_JS_VM_CALLS (line 30) | const TRACE_TAG_JS_VM_CALLS = 1 << 27;
  constant REACT_MARKER (line 41) | const REACT_MARKER = '\u269B';
  method mark (line 43) | mark(markName: string) {
  method if (line 62) | if (_enabled) {
  method clearMarks (line 83) | clearMarks(markName: string) {
  method clearMeasures (line 97) | clearMeasures() {
  method onBeforeMountComponent (line 105) | onBeforeMountComponent(debugID) {
  method onMountComponent (line 110) | onMountComponent(debugID) {
  method onBeforeUpdateComponent (line 113) | onBeforeUpdateComponent(debugID) {
  method onUpdateComponent (line 118) | onUpdateComponent(debugID) {
  method onBeforeUnmountComponent (line 121) | onBeforeUnmountComponent(debugID) {
  method onUnmountComponent (line 126) | onUnmountComponent(debugID) {
  method onBeginLifeCycleTimer (line 129) | onBeginLifeCycleTimer(debugID, timerType) {
  method onEndLifeCycleTimer (line 134) | onEndLifeCycleTimer(debugID, timerType) {
  method installReactHook (line 140) | installReactHook(useFiber: boolean) {
  method setEnabled (line 154) | setEnabled(enabled: boolean) {
  method if (line 189) | if (_enabled) {
  method endEvent (line 196) | endEvent() {
  method if (line 219) | if (_enabled) {
  method if (line 230) | if (_enabled) {
  method if (line 275) | if (!__DEV__) {
  method if (line 298) | if (!__DEV__) {

FILE: Libraries/PermissionsAndroid/PermissionsAndroid.js
  class PermissionsAndroid (line 75) | class PermissionsAndroid {
    method constructor (line 79) | constructor() {
    method checkPermission (line 125) | checkPermission(permission: string) : Promise<boolean> {
    method check (line 134) | check(permission: string) : Promise<boolean> {
  method if (line 169) | if (rationale) {

FILE: Libraries/Picker/PickerIOS.macos.js
  method render (line 99) | render() {

FILE: Libraries/PushNotificationIOS/PushNotificationIOS.js
  constant DEVICE_NOTIF_EVENT (line 22) | const DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';
  constant NOTIF_REGISTER_EVENT (line 23) | const NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';
  constant NOTIF_REGISTRATION_ERROR_EVENT (line 24) | const NOTIF_REGISTRATION_ERROR_EVENT = 'remoteNotificationRegistrationEr...
  constant DEVICE_LOCAL_NOTIF_EVENT (line 25) | const DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived';
  class PushNotificationIOS (line 122) | class PushNotificationIOS {
    method presentLocalNotification (line 152) | static presentLocalNotification(details: Object) {
    method scheduleLocalNotification (line 177) | static scheduleLocalNotification(details: Object) {
    method cancelAllLocalNotifications (line 184) | static cancelAllLocalNotifications() {
    method removeAllDeliveredNotifications (line 191) | static removeAllDeliveredNotifications(): void {

FILE: Libraries/RCTTest/FBSnapshotTestCase/FBSnapshotTestController.h
  type FBSnapshotTestControllerErrorCodeUnknown (line 14) | typedef NS_ENUM(NSInteger, FBSnapshotTestControllerErrorCode) {

FILE: Libraries/RCTTest/SnapshotViewIOS.macos.js
  class SnapshotViewIOS (line 25) | class SnapshotViewIOS extends React.Component {

FILE: Libraries/ReactNative/AppContainer.js
  class AppContainer (line 40) | class AppContainer extends React.Component<Props, State> {
    method if (line 59) | if (__DEV__) {

FILE: Libraries/ReactNative/AppRegistry.js
  method setWrapperComponentProvider (line 66) | setWrapperComponentProvider(provider: WrapperComponentProvider) {

FILE: Libraries/ReactNative/ReactNativeFeatureFlags.js
  method useFiber (line 24) | get useFiber(): boolean {
  method useFiber (line 33) | set useFiber(enabled: boolean): void {

FILE: Libraries/ReactNative/UIManagerStatTracker.js
  function printStats (line 26) | function printStats() {
  function incStat (line 30) | function incStat(key: string, increment: number) {

FILE: Libraries/ReactNative/renderApplication.js
  method render (line 48) | render() {

FILE: Libraries/ReactNative/requireNativeComponent.js
  method if (line 79) | if (!source) {
  method if (line 87) | if (!source.hasOwnProperty(key)) {

FILE: Libraries/ReactNative/verifyPropTypes.js
  function verifyPropTypes (line 25) | function verifyPropTypes(

FILE: Libraries/Renderer/ReactNativeRenderer-dev.js
  function callCallback (line 210) | function callCallback() {
  function onError (line 236) | function onError(event) {
  function recomputePluginOrdering (line 315) | function recomputePluginOrdering() {
  function publishEventForPlugin (line 363) | function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
  function publishRegistrationName (line 403) | function publishRegistrationName(registrationName, pluginModule, eventNa...
  function injectEventPluginOrder (line 463) | function injectEventPluginOrder(injectedEventPluginOrder) {
  function injectEventPluginsByName (line 484) | function injectEventPluginsByName(injectedNamesToPlugins) {
  function isEndish (line 530) | function isEndish(topLevelType) {
  function isMoveish (line 538) | function isMoveish(topLevelType) {
  function isStartish (line 541) | function isStartish(topLevelType) {
  function executeDispatch (line 575) | function executeDispatch(event, simulated, listener, inst) {
  function executeDispatchesInOrder (line 590) | function executeDispatchesInOrder(event, simulated) {
  function executeDispatchesInOrderStopAtTrueImpl (line 623) | function executeDispatchesInOrderStopAtTrueImpl(event) {
  function executeDispatchesInOrderStopAtTrue (line 650) | function executeDispatchesInOrderStopAtTrue(event) {
  function executeDirectDispatch (line 666) | function executeDirectDispatch(event) {
  function hasDispatches (line 690) | function hasDispatches(event) {
  function accumulateInto (line 707) | function accumulateInto(current, next) {
  function forEachAccumulated (line 745) | function forEachAccumulated(arr, cb, scope) {
  function isInteractive (line 782) | function isInteractive(tag) {
  function shouldPreventMouseEvent (line 791) | function shouldPreventMouseEvent(name, type, props) {
  function getListener (line 853) | function getListener(inst, registrationName) {
  function extractEvents (line 888) | function extractEvents(
  function enqueueEvents (line 920) | function enqueueEvents(events) {
  function processEventQueue (line 931) | function processEventQueue(simulated) {
  function getParent (line 973) | function getParent(inst) {
  function getLowestCommonAncestor (line 992) | function getLowestCommonAncestor(instA, instB) {
  function isAncestor (line 1029) | function isAncestor(instA, instB) {
  function getParentInstance (line 1042) | function getParentInstance(inst) {
  function traverseTwoPhase (line 1049) | function traverseTwoPhase(inst, fn, arg) {
  function listenerAtPhase (line 1076) | function listenerAtPhase(inst, event, propagationPhase) {
  function accumulateDirectionalDispatches (line 1098) | function accumulateDirectionalDispatches(inst, phase, event) {
  function accumulateTwoPhaseDispatchesSingle (line 1119) | function accumulateTwoPhaseDispatchesSingle(event) {
  function accumulateTwoPhaseDispatchesSingleSkipTarget (line 1128) | function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
  function accumulateDispatches (line 1141) | function accumulateDispatches(inst, ignoredDirection, event) {
  function accumulateDirectDispatchesSingle (line 1160) | function accumulateDirectDispatchesSingle(event) {
  function accumulateTwoPhaseDispatches (line 1166) | function accumulateTwoPhaseDispatches(events) {
  function accumulateTwoPhaseDispatchesSkipTarget (line 1170) | function accumulateTwoPhaseDispatchesSkipTarget(events) {
  function accumulateDirectDispatches (line 1174) | function accumulateDirectDispatches(events) {
  function SyntheticEvent (line 1231) | function SyntheticEvent(
  function getPooledWarningPropertyDefinition (line 1441) | function getPooledWarningPropertyDefinition(propName, getVal) {
  function getPooledEvent (line 1479) | function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeI...
  function releasePooledEvent (line 1500) | function releasePooledEvent(event) {
  function addEventPoolingTo (line 1512) | function addEventPoolingTo(EventConstructor) {
  function ResponderSyntheticEvent (line 1537) | function ResponderSyntheticEvent(
  function timestampForTouch (line 1572) | function timestampForTouch(touch) {
  function createTouchRecord (line 1583) | function createTouchRecord(touch) {
  function resetTouchRecord (line 1598) | function resetTouchRecord(touchRecord, touch) {
  function getTouchIdentifier (line 1611) | function getTouchIdentifier(_ref) {
  function recordTouchStart (line 1627) | function recordTouchStart(touch) {
  function recordTouchMove (line 1638) | function recordTouchMove(touch) {
  function recordTouchEnd (line 1659) | function recordTouchEnd(touch) {
  function printTouch (line 1680) | function printTouch(touch) {
  function printTouchBank (line 1689) | function printTouchBank() {
  function accumulate (line 1740) | function accumulate(current, next) {
  function setResponderAndExtractTransfer (line 2050) | function setResponderAndExtractTransfer(
  function canTriggerTransfer (line 2159) | function canTriggerTransfer(topLevelType, topLevelInst, nativeEvent) {
  function noResponderTouches (line 2179) | function noResponderTouches(nativeEvent) {
  function precacheFiberNode (line 2413) | function precacheFiberNode(hostInst, tag) {
  function uncacheFiberNode (line 2417) | function uncacheFiberNode(tag) {
  function getInstanceFromTag (line 2422) | function getInstanceFromTag(tag) {
  function getTagFromInstance (line 2426) | function getTagFromInstance(inst) {
  function getFiberCurrentPropsFromNode$1 (line 2432) | function getFiberCurrentPropsFromNode$1(stateNode) {
  function updateFiberProps (line 2436) | function updateFiberProps(tag, props) {
  function restoreStateOfTarget (line 2457) | function restoreStateOfTarget(target) {
  function restoreStateIfNeeded (line 2479) | function restoreStateIfNeeded() {
  function batchedUpdates (line 2508) | function batchedUpdates(fn, bookkeeping) {
  function runEventQueueInBatch (line 2536) | function runEventQueueInBatch(events) {
  function handleTopLevel (line 2545) | function handleTopLevel(
  function _receiveRootNodeIDEvent (line 2667) | function _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventPa...
  function receiveEvent (line 2684) | function receiveEvent(rootNodeID, topLevelType, nativeEventParam) {
  function receiveTouches (line 2712) | function receiveTouches(eventTopLevelType, touches, changedIndices) {
  function logCapturedError (line 2809) | function logCapturedError(capturedError) {
  function getIteratorFn (line 2900) | function getIteratorFn(maybeIterable) {
  function createPortal (line 2913) | function createPortal(
  function showDialog$1 (line 3094) | function showDialog$1(capturedError) {
  function _classCallCheck (line 3130) | function _classCallCheck(instance, Constructor) {
  function ReactNativePropRegistry (line 3141) | function ReactNativePropRegistry() {
  function defaultDiffer (line 3188) | function defaultDiffer(prevProp, nextProp) {
  function resolveObject (line 3198) | function resolveObject(idOrObject) {
  function restoreDeletedValuesInNestedArray (line 3205) | function restoreDeletedValuesInNestedArray(
  function diffNestedArrayProperty (line 3262) | function diffNestedArrayProperty(
  function diffNestedProperty (line 3300) | function diffNestedProperty(
  function addNestedProperty (line 3367) | function addNestedProperty(updatePayload, nextProp, validAttributes) {
  function clearNestedProperty (line 3397) | function clearNestedProperty(updatePayload, prevProp, validAttributes) {
  function diffProperties (line 3428) | function diffProperties(updatePayload, prevProps, nextProps, validAttrib...
  function addProperties (line 3595) | function addProperties(updatePayload, props, validAttributes) {
  function clearProperties (line 3604) | function clearProperties(updatePayload, prevProps, validAttributes) {
  function create (line 3614) | function create(props, validAttributes) {
  function diff (line 3622) | function diff(prevProps, nextProps, validAttributes) {
  function mountSafeCallback (line 3635) | function mountSafeCallback(context, callback) {
  function throwOnStylesProp (line 3659) | function throwOnStylesProp(component, props) {
  function warnForStyleProps (line 3679) | function warnForStyleProps(props, validAttributes) {
  function get (line 3711) | function get(key) {
  function set (line 3715) | function set(key, value) {
  function getComponentName (line 3719) | function getComponentName(fiber) {
  function isFiberMountedImpl (line 3763) | function isFiberMountedImpl(fiber) {
  function isFiberMounted (line 3792) | function isFiberMounted(fiber) {
  function isMounted (line 3796) | function isMounted(component) {
  function assertIsMounted (line 3822) | function assertIsMounted(fiber) {
  function findCurrentFiberUsingSlowPath (line 3829) | function findCurrentFiberUsingSlowPath(fiber) {
  function findCurrentHostFiber (line 3955) | function findCurrentHostFiber(parent) {
  function findCurrentHostFiberWithNoPortals (line 3988) | function findCurrentHostFiberWithNoPortals(parent) {
  function createCursor (line 4029) | function createCursor(defaultValue) {
  function pop (line 4035) | function pop(cursor, fiber) {
  function push (line 4060) | function push(cursor, value, fiber) {
  function reset (line 4072) | function reset() {
  function describeFiber (line 4098) | function describeFiber(fiber) {
  function getStackAddendumByWorkInProgressFiber (line 4120) | function getStackAddendumByWorkInProgressFiber(workInProgress) {
  function getCurrentFiberOwnerName (line 4131) | function getCurrentFiberOwnerName() {
  function getCurrentFiberStackAddendum (line 4145) | function getCurrentFiberStackAddendum() {
  function resetCurrentFiber (line 4158) | function resetCurrentFiber() {
  function setCurrentFiber (line 4164) | function setCurrentFiber(fiber) {
  function setCurrentPhase (line 4170) | function setCurrentPhase(phase) {
  function recordEffect (line 4354) | function recordEffect() {
  function recordScheduleUpdate (line 4360) | function recordScheduleUpdate() {
  function startRequestCallbackTimer (line 4375) | function startRequestCallbackTimer() {
  function stopRequestCallbackTimer (line 4384) | function stopRequestCallbackTimer(didExpire) {
  function startWorkTimer (line 4398) | function startWorkTimer(fiber) {
  function cancelWorkTimer (line 4412) | function cancelWorkTimer(fiber) {
  function stopWorkTimer (line 4424) | function stopWorkTimer(fiber) {
  function stopFailedWorkTimer (line 4439) | function stopFailedWorkTimer(fiber) {
  function startPhaseTimer (line 4455) | function startPhaseTimer(fiber, phase) {
  function stopPhaseTimer (line 4469) | function stopPhaseTimer() {
  function startWorkLoopTimer (line 4485) | function startWorkLoopTimer(nextUnitOfWork) {
  function stopWorkLoopTimer (line 4500) | function stopWorkLoopTimer(interruptedBy) {
  function startCommitTimer (line 4528) | function startCommitTimer() {
  function stopCommitTimer (line 4540) | function stopCommitTimer() {
  function startCommitHostEffectsTimer (line 4561) | function startCommitHostEffectsTimer() {
  function stopCommitHostEffectsTimer (line 4571) | function stopCommitHostEffectsTimer() {
  function startCommitLifeCyclesTimer (line 4586) | function startCommitLifeCyclesTimer() {
  function stopCommitLifeCyclesTimer (line 4596) | function stopCommitLifeCyclesTimer() {
  function getUnmaskedContext (line 4624) | function getUnmaskedContext(workInProgress) {
  function cacheContext (line 4636) | function cacheContext(workInProgress, unmaskedContext, maskedContext) {
  function getMaskedContext (line 4642) | function getMaskedContext(workInProgress, unmaskedContext) {
  function hasContextChanged (line 4685) | function hasContextChanged() {
  function isContextConsumer (line 4689) | function isContextConsumer(fiber) {
  function isContextProvider (line 4693) | function isContextProvider(fiber) {
  function popContextProvider (line 4697) | function popContextProvider(fiber) {
  function popTopLevelContextObject (line 4706) | function popTopLevelContextObject(fiber) {
  function pushTopLevelContextObject (line 4711) | function pushTopLevelContextObject(fiber, context, didChange) {
  function processChildContext (line 4722) | function processChildContext(fiber, parentContext) {
  function pushContextProvider (line 4784) | function pushContextProvider(workInProgress) {
  function invalidateContextProvider (line 4810) | function invalidateContextProvider(workInProgress, didChange) {
  function resetContext (line 4838) | function resetContext() {
  function findCurrentUnmaskedContext (line 4844) | function findCurrentUnmaskedContext(fiber) {
  function msToExpirationTime (line 4878) | function msToExpirationTime(ms) {
  function expirationTimeToMs (line 4883) | function expirationTimeToMs(expirationTime) {
  function ceiling (line 4887) | function ceiling(num, precision) {
  function computeExpirationBucket (line 4891) | function computeExpirationBucket(currentTime, expirationInMs, bucketSize...
  function FiberNode (line 4922) | function FiberNode(tag, pendingProps, key, internalContextTag) {
  function shouldConstruct (line 4984) | function shouldConstruct(Component) {
  function createWorkInProgress (line 4989) | function createWorkInProgress(current, pendingProps, expirationTime) {
  function createHostRootFiber (line 5043) | function createHostRootFiber() {
  function createFiberFromElement (line 5048) | function createFiberFromElement(element, internalContextTag, expirationT...
  function createFiberFromFragment (line 5121) | function createFiberFromFragment(
  function createFiberFromText (line 5132) | function createFiberFromText(content, internalContextTag, expirationTime) {
  function createFiberFromHostInstanceForDeletion (line 5138) | function createFiberFromHostInstanceForDeletion() {
  function createFiberFromCall (line 5144) | function createFiberFromCall(call, internalContextTag, expirationTime) {
  function createFiberFromReturn (line 5151) | function createFiberFromReturn(returnNode, internalContextTag, expiratio...
  function createFiberFromPortal (line 5157) | function createFiberFromPortal(portal, internalContextTag, expirationTim...
  function createFiberRoot (line 5176) | function createFiberRoot(containerInfo, hydrate) {
  function catchErrors (line 5201) | function catchErrors(fn) {
  function injectInternals (line 5214) | function injectInternals(internals) {
  function onCommitRoot (line 5257) | function onCommitRoot(root) {
  function onCommitUnmount (line 5263) | function onCommitUnmount(fiber) {
  function createUpdateQueue (line 5287) | function createUpdateQueue(baseState) {
  function insertUpdateIntoQueue (line 5303) | function insertUpdateIntoQueue(queue, update) {
  function insertUpdateIntoFiber (line 5320) | function insertUpdateIntoFiber(fiber, update) {
  function getUpdateExpirationTime (line 5381) | function getUpdateExpirationTime(fiber) {
  function getStateFromUpdate (line 5392) | function getStateFromUpdate(update, instance, prevState, props) {
  function processUpdateQueue (line 5408) | function processUpdateQueue(
  function commitCallbacks (line 5539) | function commitCallbacks(queue, context) {
  function checkShouldComponentUpdate (line 5668) | function checkShouldComponentUpdate(
  function checkClassInstance (line 5722) | function checkClassInstance(workInProgress) {
  function resetInputPointers (line 5869) | function resetInputPointers(workInProgress, instance) {
  function adoptClassInstance (line 5874) | function adoptClassInstance(workInProgress, instance) {
  function constructClassInstance (line 5884) | function constructClassInstance(workInProgress, props) {
  function callComponentWillMount (line 5903) | function callComponentWillMount(workInProgress, instance) {
  function callComponentWillReceiveProps (line 5928) | function callComponentWillReceiveProps(
  function mountClassInstance (line 5963) | function mountClassInstance(workInProgress, renderExpirationTime) {
  function updateClassInstance (line 6116) | function updateClassInstance(current, workInProgress, renderExpirationTi...
  function coerceRef (line 6289) | function coerceRef(current, element) {
  function throwOnInvalidObjectType (line 6345) | function throwOnInvalidObjectType(returnFiber, newChild) {
  function warnOnFunctionType (line 6365) | function warnOnFunctionType() {
  function ChildReconciler (line 6390) | function ChildReconciler(shouldTrackSideEffects) {
  function cloneChildFibers (line 7644) | function cloneChildFibers(current, workInProgress) {
  function reconcileChildren (line 7709) | function reconcileChildren(current, workInProgress, nextChildren) {
  function reconcileChildrenAtExpirationTime (line 7718) | function reconcileChildrenAtExpirationTime(
  function updateFragment (line 7751) | function updateFragment(current, workInProgress) {
  function markRef (line 7767) | function markRef(current, workInProgress) {
  function updateFunctionalComponent (line 7775) | function updateFunctionalComponent(current, workInProgress) {
  function updateClassComponent (line 7808) | function updateClassComponent(current, workInProgress, renderExpirationT...
  function finishClassComponent (line 7841) | function finishClassComponent(
  function pushHostRootContext (line 7888) | function pushHostRootContext(workInProgress) {
  function updateHostRoot (line 7903) | function updateHostRoot(current, workInProgress, renderExpirationTime) {
  function updateHostComponent (line 7963) | function updateHostComponent(current, workInProgress, renderExpirationTi...
  function updateHostText (line 8016) | function updateHostText(current, workInProgress) {
  function mountIndeterminateComponent (line 8027) | function mountIndeterminateComponent(
  function updateCallComponent (line 8119) | function updateCallComponent(current, workInProgress, renderExpirationTi...
  function updatePortalComponent (line 8157) | function updatePortalComponent(
  function bailoutOnAlreadyFinishedWork (line 8210) | function bailoutOnAlreadyFinishedWork(current, workInProgress) {
  function bailoutOnLowPriority (line 8231) | function bailoutOnLowPriority(current, workInProgress) {
  function memoizeProps (line 8256) | function memoizeProps(workInProgress, nextProps) {
  function memoizeState (line 8260) | function memoizeState(workInProgress, nextState) {
  function beginWork (line 8266) | function beginWork(current, workInProgress, renderExpirationTime) {
  function beginFailedWork (line 8330) | function beginFailedWork(current, workInProgress, renderExpirationTime) {
  function markUpdate (line 8415) | function markUpdate(workInProgress) {
  function markRef (line 8421) | function markRef(workInProgress) {
  function appendAllReturns (line 8425) | function appendAllReturns(returns, workInProgress) {
  function moveCallToHandlerPhase (line 8455) | function moveCallToHandlerPhase(
  function appendAllChildren (line 8494) | function appendAllChildren(parent, workInProgress) {
  function completeWork (line 8715) | function completeWork(current, workInProgress, renderExpirationTime) {
  function safelyCallComponentWillUnmount (line 8941) | function safelyCallComponentWillUnmount(current, instance) {
  function safelyDetachRef (line 8957) | function safelyDetachRef(current) {
  function commitLifeCycles (line 8970) | function commitLifeCycles(current, finishedWork) {
  function commitAttachRef (line 9039) | function commitAttachRef(finishedWork) {
  function commitDetachRef (line 9053) | function commitDetachRef(current) {
  function commitUnmount (line 9063) | function commitUnmount(current) {
  function commitNestedUnmounts (line 9099) | function commitNestedUnmounts(root) {
  function detachFiber (line 9133) | function detachFiber(current) {
  function getHostParentFiber (line 9228) | function getHostParentFiber(fiber) {
  function isHostParent (line 9243) | function isHostParent(fiber) {
  function getHostSibling (line 9251) | function getHostSibling(fiber) {
  function commitPlacement (line 9292) | function commitPlacement(finishedWork) {
  function unmountHostComponents (line 9366) | function unmountHostComponents(current) {
  function commitDeletion (line 9452) | function commitDeletion(current) {
  function commitWork (line 9459) | function commitWork(current, finishedWork) {
  function commitResetTextContent (line 9518) | function commitResetTextContent(current) {
  function requiredContext (line 9547) | function requiredContext(c) {
  function getRootHostContainer (line 9556) | function getRootHostContainer() {
  function pushHostContainer (line 9561) | function pushHostContainer(fiber, nextRootInstance) {
  function popHostContainer (line 9574) | function popHostContainer(fiber) {
  function getHostContext (line 9580) | function getHostContext() {
  function pushHostContext (line 9585) | function pushHostContext(fiber) {
  function popHostContext (line 9601) | function popHostContext(fiber) {
  function resetHostContainer (line 9612) | function resetHostContainer() {
  function enterHydrationState (line 9687) | function enterHydrationState(fiber) {
  function deleteHydratableInstance (line 9695) | function deleteHydratableInstance(returnFiber, instance) {
  function insertNonHydratedInstance (line 9733) | function insertNonHydratedInstance(returnFiber, fiber) {
  function tryHydrate (line 9790) | function tryHydrate(fiber, nextInstance) {
  function tryToClaimNextHydratableInstance (line 9816) | function tryToClaimNextHydratableInstance(fiber) {
  function prepareToHydrateHostInstance (line 9850) | function prepareToHydrateHostInstance(
  function prepareToHydrateHostTextInstance (line 9874) | function prepareToHydrateHostTextInstance(fiber) {
  function popToNextHostParent (line 9914) | function popToNextHostParent(fiber) {
  function popHydrationState (line 9926) | function popHydrationState(fiber) {
  function resetHydrationState (line 9968) | function resetHydrationState() {
  function resetContextStack (line 10131) | function resetContextStack() {
  function commitAllHostEffects (line 10139) | function commitAllHostEffects() {
  function commitAllLifeCycles (line 10207) | function commitAllLifeCycles() {
  function commitRoot (line 10239) | function commitRoot(finishedWork) {
  function resetExpirationTime (line 10380) | function resetExpirationTime(workInProgress, renderTime) {
  function completeUnitOfWork (line 10407) | function completeUnitOfWork(workInProgress) {
  function performUnitOfWork (line 10500) | function performUnitOfWork(workInProgress) {
  function performFailedUnitOfWork (line 10531) | function performFailedUnitOfWork(workInProgress) {
  function workLoop (line 10565) | function workLoop(expirationTime) {
  function slowWorkLoopThatChecksForFailedWork (line 10594) | function slowWorkLoopThatChecksForFailedWork(expirationTime) {
  function renderRootCatchBlock (line 10625) | function renderRootCatchBlock(root, failedWork, boundary, expirationTime) {
  function renderRoot (line 10642) | function renderRoot(root, expirationTime) {
  function captureError (line 10754) | function captureError(failedWork, error) {
  function hasCapturedError (line 10900) | function hasCapturedError(fiber) {
  function isFailedBoundary (line 10910) | function isFailedBoundary(fiber) {
  function commitErrorHandling (line 10920) | function commitErrorHandling(effectfulFiber) {
  function unwindContexts (line 10966) | function unwindContexts(from, to) {
  function computeAsyncExpiration (line 10993) | function computeAsyncExpiration() {
  function computeUniqueAsyncExpiration (line 11004) | function computeUniqueAsyncExpiration() {
  function computeExpirationForFiber (line 11016) | function computeExpirationForFiber(fiber) {
  function scheduleWork (line 11045) | function scheduleWork(fiber, expirationTime) {
  function checkRootNeedsClearing (line 11049) | function checkRootNeedsClearing(root, fiber, expirationTime) {
  function scheduleWorkImpl (line 11066) | function scheduleWorkImpl(fiber, expirationTime, isErrorRecovery) {
  function scheduleErrorRecovery (line 11114) | function scheduleErrorRecovery(fiber) {
  function recalculateCurrentTime (line 11118) | function recalculateCurrentTime() {
  function deferredUpdates (line 11125) | function deferredUpdates(fn) {
  function syncUpdates (line 11135) | function syncUpdates(fn) {
  function scheduleCallbackWithExpiration (line 11173) | function scheduleCallbackWithExpiration(expirationTime) {
  function requestWork (line 11202) | function requestWork(root, expirationTime) {
  function findHighestPriorityRoot (line 11264) | function findHighestPriorityRoot() {
  function performAsyncWork (line 11340) | function performAsyncWork(dl) {
  function performWork (line 11344) | function performWork(minExpirationTime, dl) {
  function flushRoot (line 11393) | function flushRoot(root, expirationTime) {
  function finishRendering (line 11406) | function finishRendering() {
  function performWorkOnRoot (line 11431) | function performWorkOnRoot(root, expirationTime, currentTime) {
  function completeRoot (line 11482) | function completeRoot(root, finishedWork, expirationTime) {
  function shouldYield (line 11507) | function shouldYield() {
  function onUncaughtError (line 11522) | function onUncaughtError(error) {
  function batchedUpdates (line 11539) | function batchedUpdates(fn, a) {
  function unbatchedUpdates (line 11554) | function unbatchedUpdates(fn) {
  function flushSync (line 11568) | function flushSync(fn) {
  function getContextForSubtree (line 11605) | function getContextForSubtree(parentComponent) {
  function computeRootExpirationTime (line 11633) | function computeRootExpirationTime(current, element) {
  function scheduleRootUpdate (line 11652) | function scheduleRootUpdate(current, element, expirationTime, callback) {
  function updateContainerAtExpirationTime (line 11695) | function updateContainerAtExpirationTime(
  function findHostInstance (line 11727) | function findHostInstance(fiber) {
  function register (line 11834) | function register(name, callback) {
  function get$1 (line 11849) | function get$1(name) {
  function _classCallCheck$1 (line 11868) | function _classCallCheck$1(instance, Constructor) {
  function ReactNativeFiberHostComponent (line 11884) | function ReactNativeFiberHostComponent(tag, viewConfig) {
  function setTimeoutCallback (line 11970) | function setTimeoutCallback() {
  function scheduleDeferredCallback (line 11987) | function scheduleDeferredCallback(callback) {
  function cancelDeferredCallback (line 11993) | function cancelDeferredCallback(callbackID) {
  function recursivelyUncacheFiberNode (line 11999) | function recursivelyUncacheFiberNode(node) {
  function findNodeHandle (line 12325) | function findNodeHandle(componentOrHandle) {
  function findNumericNodeHandleFiber (line 12385) | function findNumericNodeHandleFiber(componentOrHandle) {
  function _classCallCheck$2 (line 12559) | function _classCallCheck$2(instance, Constructor) {
  function _possibleConstructorReturn (line 12565) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 12576) | function _inherits(subClass, superClass) {
  function ReactNativeComponent (line 12613) | function ReactNativeComponent() {
  function takeSnapshot (line 12885) | function takeSnapshot(view, options) {

FILE: Libraries/Renderer/ReactNativeRenderer-prod.js
  function invokeGuardedCallback (line 80) | function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {
  function rethrowCaughtError (line 91) | function rethrowCaughtError() {
  function recomputePluginOrdering (line 101) | function recomputePluginOrdering() {
  function publishRegistrationName (line 161) | function publishRegistrationName(registrationName, pluginModule) {
  function isEndish (line 175) | function isEndish(topLevelType) {
  function isMoveish (line 182) | function isMoveish(topLevelType) {
  function isStartish (line 185) | function isStartish(topLevelType) {
  function executeDispatch (line 188) | function executeDispatch(event, simulated, listener, inst) {
  function executeDirectDispatch (line 199) | function executeDirectDispatch(event) {
  function accumulateInto (line 215) | function accumulateInto(current, next) {
  function forEachAccumulated (line 228) | function forEachAccumulated(arr, cb, scope) {
  function executeDispatchesAndReleaseTopLevel (line 232) | function executeDispatchesAndReleaseTopLevel(e) {
  function getListener (line 279) | function getListener(inst, registrationName) {
  function getParent (line 318) | function getParent(inst) {
  function traverseTwoPhase (line 323) | function traverseTwoPhase(inst, fn, arg) {
  function accumulateDirectionalDispatches (line 328) | function accumulateDirectionalDispatches(inst, phase, event) {
  function accumulateTwoPhaseDispatchesSingle (line 344) | function accumulateTwoPhaseDispatchesSingle(event) {
  function accumulateTwoPhaseDispatchesSingleSkipTarget (line 349) | function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
  function accumulateDirectDispatchesSingle (line 356) | function accumulateDirectDispatchesSingle(event) {
  function SyntheticEvent (line 389) | function SyntheticEvent(
  function E (line 450) | function E() {}
  function getPooledEvent (line 461) | function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeI...
  function releasePooledEvent (line 469) | function releasePooledEvent(event) {
  function addEventPoolingTo (line 477) | function addEventPoolingTo(EventConstructor) {
  function ResponderSyntheticEvent (line 482) | function ResponderSyntheticEvent(
  function timestampForTouch (line 508) | function timestampForTouch(touch) {
  function getTouchIdentifier (line 511) | function getTouchIdentifier(_ref) {
  function recordTouchStart (line 516) | function recordTouchStart(touch) {
  function recordTouchMove (line 545) | function recordTouchMove(touch) {
  function recordTouchEnd (line 563) | function recordTouchEnd(touch) {
  function printTouch (line 581) | function printTouch(touch) {
  function printTouchBank (line 589) | function printTouchBank() {
  function accumulate (line 622) | function accumulate(current, next) {
  function changeResponder (line 636) | function changeResponder(nextResponderInst, blockHostResponder) {
  function uncacheFiberNode (line 1016) | function uncacheFiberNode(tag) {
  function getInstanceFromTag (line 1020) | function getInstanceFromTag(tag) {
  function restoreStateOfTarget (line 1044) | function restoreStateOfTarget(target) {
  function fiberBatchedUpdates (line 1054) | function fiberBatchedUpdates(fn, bookkeeping) {
  function batchedUpdates (line 1058) | function batchedUpdates(fn, bookkeeping) {
  function handleTopLevel (line 1077) | function handleTopLevel(
  function _receiveRootNodeIDEvent (line 1127) | function _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventPa...
  function defaultShowDialog (line 1198) | function defaultShowDialog() {
  function getIteratorFn (line 1209) | function getIteratorFn(maybeIterable) {
  function createPortal (line 1217) | function createPortal(children, containerInfo, implementation) {
  function ReactNativePropRegistry (line 1339) | function ReactNativePropRegistry() {
  function resolveObject (line 1361) | function resolveObject(idOrObject) {
  function restoreDeletedValuesInNestedArray (line 1366) | function restoreDeletedValuesInNestedArray(
  function diffNestedProperty (line 1404) | function diffNestedProperty(
  function addNestedProperty (line 1463) | function addNestedProperty(updatePayload, nextProp, validAttributes) {
  function clearNestedProperty (line 1478) | function clearNestedProperty(updatePayload, prevProp, validAttributes) {
  function diffProperties (line 1493) | function diffProperties(updatePayload, prevProps, nextProps, validAttrib...
  function mountSafeCallback (line 1582) | function mountSafeCallback(context, callback) {
  function getComponentName (line 1596) | function getComponentName(fiber) {
  function isFiberMountedImpl (line 1604) | function isFiberMountedImpl(fiber) {
  function isMounted (line 1614) | function isMounted(component) {
  function assertIsMounted (line 1619) | function assertIsMounted(fiber) {
  function findCurrentFiberUsingSlowPath (line 1625) | function findCurrentFiberUsingSlowPath(fiber) {
  function findCurrentHostFiber (line 1696) | function findCurrentHostFiber(parent) {
  function findCurrentHostFiberWithNoPortals (line 1714) | function findCurrentHostFiberWithNoPortals(parent) {
  function pop (line 1735) | function pop(cursor) {
  function push (line 1739) | function push(cursor, value) {
  function getUnmaskedContext (line 1748) | function getUnmaskedContext(workInProgress) {
  function getMaskedContext (line 1753) | function getMaskedContext(workInProgress, unmaskedContext) {
  function isContextProvider (line 1771) | function isContextProvider(fiber) {
  function popContextProvider (line 1774) | function popContextProvider(fiber) {
  function pushTopLevelContextObject (line 1778) | function pushTopLevelContextObject(fiber, context, didChange) {
  function processChildContext (line 1786) | function processChildContext(fiber, parentContext) {
  function pushContextProvider (line 1800) | function pushContextProvider(workInProgress) {
  function invalidateContextProvider (line 1815) | function invalidateContextProvider(workInProgress, didChange) {
  function FiberNode (line 1830) | function FiberNode(tag, pendingProps, key, internalContextTag) {
  function createFiber (line 1845) | function createFiber(tag, pendingProps, key, internalContextTag) {
  function createWorkInProgress (line 1848) | function createWorkInProgress(current, pendingProps, expirationTime) {
  function createFiberFromElement (line 1876) | function createFiberFromElement(element, internalContextTag, expirationT...
  function createFiberFromFragment (line 1903) | function createFiberFromFragment(
  function createFiberFromText (line 1913) | function createFiberFromText(content, internalContextTag, expirationTime) {
  function createFiberFromCall (line 1918) | function createFiberFromCall(call, internalContextTag, expirationTime) {
  function createFiberFromReturn (line 1924) | function createFiberFromReturn(returnNode, internalContextTag, expiratio...
  function createFiberFromPortal (line 1929) | function createFiberFromPortal(portal, internalContextTag, expirationTim...
  function catchErrors (line 1946) | function catchErrors(fn) {
  function injectInternals (line 1953) | function injectInternals(internals) {
  function onCommitRoot (line 1968) | function onCommitRoot(root) {
  function onCommitUnmount (line 1971) | function onCommitUnmount(fiber) {
  function createUpdateQueue (line 1974) | function createUpdateQueue(baseState) {
  function insertUpdateIntoQueue (line 1985) | function insertUpdateIntoQueue(queue, update) {
  function insertUpdateIntoFiber (line 1995) | function insertUpdateIntoFiber(fiber, update) {
  function getStateFromUpdate (line 2012) | function getStateFromUpdate(update, instance, prevState, props) {
  function processUpdateQueue (line 2019) | function processUpdateQueue(
  function commitCallbacks (line 2093) | function commitCallbacks(queue, context) {
  function ReactFiberClassComponent (line 2112) | function ReactFiberClassComponent(
  function coerceRef (line 2328) | function coerceRef(current, element) {
  function throwOnInvalidObjectType (line 2371) | function throwOnInvalidObjectType(returnFiber, newChild) {
  function ChildReconciler (line 2382) | function ChildReconciler(shouldTrackSideEffects) {
  function ReactFiberBeginWork (line 3135) | function ReactFiberBeginWork(
  function ReactFiberCompleteWork (line 3537) | function ReactFiberCompleteWork(config, hostContext, hydrationContext) {
  function ReactFiberCommitWork (line 3771) | function ReactFiberCommitWork(config, captureError) {
  function ReactFiberHostContext (line 4114) | function ReactFiberHostContext(config) {
  function ReactFiberHydrationContext (line 4163) | function ReactFiberHydrationContext(config) {
  function ReactFiberScheduler (line 4319) | function ReactFiberScheduler(config) {
  function ReactFiberReconciler$1 (line 5132) | function ReactFiberReconciler$1(config) {
  function ReactNativeFiberHostComponent (line 5277) | function ReactNativeFiberHostComponent(tag, viewConfig) {
  function setTimeoutCallback (line 5346) | function setTimeoutCallback() {
  function recursivelyUncacheFiberNode (line 5352) | function recursivelyUncacheFiberNode(node) {
  function findNodeHandle (line 5564) | function findNodeHandle(componentOrHandle) {
  function findNumericNodeHandleFiber (line 5585) | function findNumericNodeHandleFiber(componentOrHandle) {
  function _inherits (line 5591) | function _inherits(subClass, superClass) {
  function ReactNativeComponent (line 5611) | function ReactNativeComponent() {
  function fn$jscomp$inline_616 (line 5683) | function fn$jscomp$inline_616(capturedError) {

FILE: Libraries/Settings/Settings.ios.js
  method set (line 28) | set(settings: Object) {
  method if (line 34) | if (typeof keys === 'string') {

FILE: Libraries/Share/Share.js
  class Share (line 32) | class Share {
    method share (line 67) | static share(content: Content, options: Options = {}): Promise<Object> {
    method sharedAction (line 114) | static get sharedAction(): string { return 'sharedAction'; }
    method dismissedAction (line 120) | static get dismissedAction(): string { return 'dismissedAction'; }

FILE: Libraries/Storage/AsyncStorage.js
  method if (line 221) | if (!this._immediate) {

FILE: Libraries/StyleSheet/StyleSheet.js
  method if (line 144) | if (style1 && style2) {
  method let (line 202) | let value;

FILE: Libraries/StyleSheet/StyleSheetPropType.js
  function StyleSheetPropType (line 17) | function StyleSheetPropType(

FILE: Libraries/StyleSheet/StyleSheetValidation.js
  class StyleSheetValidation (line 26) | class StyleSheetValidation {
    method validateStyleProp (line 27) | static validateStyleProp(prop: string, style: Object, caller: string) {
    method validateStyle (line 50) | static validateStyle(name: string, styles: Object) {
    method addValidStylePropTypes (line 59) | static addValidStylePropTypes(stylePropTypes) {

FILE: Libraries/StyleSheet/flattenStyle.js
  function getStyle (line 19) | function getStyle(style) {

FILE: Libraries/StyleSheet/normalizeColor.js
  method var (line 16) | var match;
  method 16 (line 58) | 16
  method if (line 67) | if ((match = matchers.hex4.exec(color))) {
  method if (line 77) | if ((match = matchers.hsl.exec(color))) {
  method if (line 87) | if ((match = matchers.hsla.exec(color))) {

FILE: Libraries/StyleSheet/processColor.js
  method if (line 20) | if (color === undefined || color === null) {

FILE: Libraries/StyleSheet/processTransform.js
  method if (line 29) | if (__DEV__) {
  method if (line 36) | if (Platform.OS === 'android' || Platform.OS === 'ios' || Platform.OS ==...

FILE: Libraries/StyleSheet/setNormalizedColorAlpha.js
  function setNormalizedColorAlpha (line 19) | function setNormalizedColorAlpha(input: number, alpha: number): number {

FILE: Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentOptions.h
  type CKComponent (line 14) | typedef CKComponent *(^RCTSurfaceHostingComponentOptionsActivityIndicato...
  type RCTSurfaceHostingComponentOptions (line 16) | struct RCTSurfaceHostingComponentOptions {

FILE: Libraries/Text/Text.js
  method if (line 450) | if (!this._handlers) {

FILE: Libraries/Text/Text/RCTTextShadowView.h
  type RCTSizeTooLarge (line 13) | typedef NS_ENUM(NSInteger, RCTSizeComparison)

FILE: Libraries/Text/TextInput/RCTBaseTextInputView.h
  function interface (line 22) | interface RCTBaseTextInputView : RCTView <RCTFontAttributesDelegate> {

FILE: Libraries/Utilities/Appearance.js
  class AppearanceManager (line 30) | class AppearanceManager extends NativeEventEmitter {
    method constructor (line 32) | constructor() {
    method addEventListener (line 36) | addEventListener(type: string, handler: Function) {
    method removeSubscription (line 40) | removeSubscription(subscription: any) {
    method initial (line 48) | static get initial(): AppearanceConfig {
    method highlightWithLevel (line 55) | static highlightWithLevel(color: RGBColor, level: Number): Promise<RGB...
    method shadowWithLevel (line 59) | static shadowWithLevel(color: RGBColor, level: Number): Promise<RGBCol...

FILE: Libraries/Utilities/BackHandler.ios.js
  function emptyFunction (line 24) | function emptyFunction() {}
  method addEventListener (line 106) | addEventListener() {

FILE: Libraries/Utilities/BackHandler.macos.js
  function emptyFunction (line 24) | function emptyFunction() {}
  method addEventListener (line 106) | addEventListener() {

FILE: Libraries/Utilities/Dimensions.js
  class Dimensions (line 24) | class Dimensions {
    method set (line 31) | static set(dims: {[key:string]: any}): void {
    method get (line 92) | static get(dim: string): Object {
    method addEventListener (line 105) | static addEventListener(
    method removeEventListener (line 119) | static removeEventListener(

FILE: Libraries/Utilities/HMRLoadingView.android.js
  constant TOAST_SHORT_DELAY (line 17) | const TOAST_SHORT_DELAY = 2000;
  class HMRLoadingView (line 19) | class HMRLoadingView {
    method showMessage (line 22) | static showMessage(message: string) {
    method hide (line 33) | static hide() {

FILE: Libraries/Utilities/HMRLoadingView.ios.js
  class HMRLoadingView (line 18) | class HMRLoadingView {
    method showMessage (line 19) | static showMessage(message: string) {
    method hide (line 27) | static hide() {

FILE: Libraries/Utilities/HMRLoadingView.macos.js
  class HMRLoadingView (line 18) | class HMRLoadingView {
    method showMessage (line 19) | static showMessage(message: string) {
    method hide (line 27) | static hide() {

FILE: Libraries/Utilities/MatrixMath.js
  method reuseScaleXCommand (line 132) | reuseScaleXCommand(matrixCommand, factor) {
  method reuseScaleYCommand (line 136) | reuseScaleYCommand(matrixCommand, factor) {
  method reuseScaleZCommand (line 140) | reuseScaleZCommand(matrixCommand, factor) {

FILE: Libraries/Utilities/PerformanceLogger.js
  constant PRINT_TO_CONSOLE (line 35) | const PRINT_TO_CONSOLE = false;
  method if (line 43) | if (timespans[key]) {
  method if (line 60) | if (timespans[key]) {
  method for (line 148) | for (const key in timespans) {
  method for (line 156) | for (let ii = 0, l = newTimespans.length; ii < l; ii += 2) {
  method if (line 167) | if (extras[key]) {

FILE: Libraries/Utilities/PixelRatio.js
  class PixelRatio (line 60) | class PixelRatio {
    method get (line 79) | static get(): number {
    method getFontScale (line 94) | static getFontScale(): number {
    method getPixelSizeForLayoutSize (line 103) | static getPixelSizeForLayoutSize(layoutSize: number): number {
    method roundToNearestPixel (line 113) | static roundToNearestPixel(layoutSize: number): number {
    method startDetecting (line 119) | static startDetecting() {}

FILE: Libraries/Utilities/Platform.android.js
  method Version (line 19) | get Version() {
  method isTesting (line 23) | get isTesting(): boolean {

FILE: Libraries/Utilities/Platform.ios.js
  method Version (line 19) | get Version() {
  method isPad (line 23) | get isPad() {
  method isTVOS (line 27) | get isTVOS() {
  method isTesting (line 31) | get isTesting(): boolean {

FILE: Libraries/Utilities/RCTLog.js
  method if (line 30) | if (typeof global.nativeLoggingHook === 'undefined') {

FILE: Libraries/Utilities/SceneTracker.js
  method setActiveScene (line 22) | setActiveScene(scene: Scene) {

FILE: Libraries/Utilities/__tests__/MatrixMath-test.js
  function degreesToRadians (line 15) | function degreesToRadians(degrees) {
  function convertZeroes (line 19) | function convertZeroes(degrees) {

FILE: Libraries/Utilities/asyncRequire.js
  function asyncRequire (line 23) | function asyncRequire(moduleID: number): Promise<mixed> {
  function loadSegment (line 45) | function loadSegment(segmentId: number): Promise<void> {
  class FetchSegmentNotAvailableError (line 89) | class FetchSegmentNotAvailableError extends Error {
    method constructor (line 90) | constructor() {
  class IncorrectBundleSetupError (line 98) | class IncorrectBundleSetupError extends Error {
    method constructor (line 99) | constructor() {
  class IncompatibleSegmentError (line 108) | class IncompatibleSegmentError extends Error {
    method constructor (line 109) | constructor(globalDigest, segmentDigest) {

FILE: Libraries/Utilities/binaryToBase64.js
  function binaryToBase64 (line 19) | function binaryToBase64(data: ArrayBuffer | $ArrayBufferView) {

FILE: Libraries/Utilities/buildStyleInterpolator.js
  function styleInterpolator (line 151) | function styleInterpolator(result, value) {

FILE: Libraries/Utilities/clamp.js
  function clamp (line 20) | function clamp(min, value, max) {

FILE: Libraries/Utilities/createStrictShapeTypeChecker.js
  function checkType (line 20) | function checkType(isRequired, props, propName, componentName, location?...

FILE: Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js
  function deepFreezeAndThrowOnMutationInDev (line 32) | function deepFreezeAndThrowOnMutationInDev(object: Object) {
  function throwOnImmutableMutation (line 63) | function throwOnImmutableMutation(key, value) {
  function identity (line 71) | function identity(value) {

FILE: Libraries/Utilities/deprecatedPropType.js
  function deprecatedPropType (line 19) | function deprecatedPropType(

FILE: Libraries/Utilities/dismissKeyboard.js
  function dismissKeyboard (line 17) | function dismissKeyboard() {

FILE: Libraries/Utilities/infoLog.js
  function infoLog (line 16) | function infoLog(...args) {

FILE: Libraries/Utilities/logError.js
  method if (line 20) | if (args.length === 1 && args[0] instanceof Error) {

FILE: Libraries/Utilities/stringifySafe.js
  function stringifySafe (line 18) | function stringifySafe(arg: any): string {

FILE: Libraries/Utilities/utf8.js
  class ByteVector (line 14) | class ByteVector {
    method constructor (line 18) | constructor(size) {
    method push (line 23) | push(value: number): ByteVector {
    method getBuffer (line 33) | getBuffer(): ArrayBuffer {
    method _realloc (line 37) | _realloc() {
  function align (line 89) | function align(size: number): number {

FILE: Libraries/WebSocket/WebSocket.js
  constant CONNECTING (line 46) | const CONNECTING = 0;
  constant OPEN (line 47) | const OPEN = 1;
  constant CLOSING (line 48) | const CLOSING = 2;
  constant CLOSED (line 49) | const CLOSED = 3;
  constant CLOSE_NORMAL (line 51) | const CLOSE_NORMAL = 1000;
  constant WEBSOCKET_EVENTS (line 53) | const WEBSOCKET_EVENTS = [
  class WebSocket (line 68) | class WebSocket extends EventTarget(...WEBSOCKET_EVENTS) {
    method constructor (line 99) | constructor(url: string, protocols: ?string | ?Array<string>, options:...
  method if (line 146) | if (binaryType !== 'blob' && binaryType !== 'arraybuffer') {
  method if (line 149) | if (this._binaryType === 'blob' || binaryType === 'blob') {
  method if (line 164) | if (this.readyState === this.CLOSING ||
  method if (line 174) | if (this.readyState === this.CONNECTING) {
  method if (line 178) | if (data instanceof Blob) {
  method if (line 185) | if (typeof data === 'string') {
  method if (line 190) | if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {

FILE: Libraries/WebSocket/WebSocketEvent.js
  class WebSocketEvent (line 22) | class WebSocketEvent {
    method constructor (line 23) | constructor(type, eventInitDict) {

FILE: Libraries/WebSocket/WebSocketInterceptor.js
  method setCloseCallback (line 46) | setCloseCallback(callback) {
  method setSendCallback (line 53) | setSendCallback(callback) {
  method setConnectCallback (line 60) | setConnectCallback(callback) {
  method setOnOpenCallback (line 67) | setOnOpenCallback(callback) {
  method setOnMessageCallback (line 74) | setOnMessageCallback(callback) {
  method setOnErrorCallback (line 81) | setOnErrorCallback(callback) {
  method setOnCloseCallback (line 88) | setOnCloseCallback(callback) {
  method isInterceptorEnabled (line 92) | isInterceptorEnabled() {
  method _unregisterEvents (line 96) | _unregisterEvents() {
  method _registerEvents (line 104) | _registerEvents() {
  method enableInterception (line 133) | enableInterception() {
  method _arrayBufferToString (line 184) | _arrayBufferToString(data) {
  method disableInterception (line 198) | disableInterception() {

FILE: Libraries/WebSocket/__mocks__/event-target-shim.js
  function EventTarget (line 10) | function EventTarget() {

FILE: Libraries/fishhook/fishhook.c
  type mach_header_t (line 35) | typedef struct mach_header_64 mach_header_t;
  type segment_command_t (line 36) | typedef struct segment_command_64 segment_command_t;
  type section_t (line 37) | typedef struct section_64 section_t;
  type nlist_t (line 38) | typedef struct nlist_64 nlist_t;
  type mach_header_t (line 41) | typedef struct mach_header mach_header_t;
  type segment_command_t (line 42) | typedef struct segment_command segment_command_t;
  type section_t (line 43) | typedef struct section section_t;
  type nlist_t (line 44) | typedef struct nlist nlist_t;
  type rebindings_entry (line 52) | struct rebindings_entry {
  type rebindings_entry (line 58) | struct rebindings_entry
  function prepend_rebindings (line 60) | static int prepend_rebindings(struct rebindings_entry **rebindings_head,
  function perform_rebinding_with_section (line 79) | static void perform_rebinding_with_section(struct rebindings_entry *rebi...
  function rebind_symbols_for_image (line 116) | static void rebind_symbols_for_image(struct rebindings_entry *rebindings,
  function _rebind_symbols_for_image (line 178) | static void _rebind_symbols_for_image(const struct mach_header *header,
  function rebind_symbols_image (line 183) | int rebind_symbols_image(void *header,
  function rebind_symbols (line 194) | int rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel) {

FILE: Libraries/fishhook/fishhook.h
  type rebinding (line 44) | struct rebinding {
  type rebinding (line 59) | struct rebinding
  type rebinding (line 68) | struct rebinding

FILE: Libraries/polyfills/Array.prototype.es6.js
  function findIndex (line 17) | function findIndex(predicate, context) {

FILE: Libraries/polyfills/babelHelpers.js
  function defineProperties (line 51) | function defineProperties(target, props) {
  function sliceIterator (line 192) | function sliceIterator(arr, i) {

FILE: Libraries/polyfills/console.js
  function inspect (line 45) | function inspect(obj, opts) {
  function stylizeNoColor (line 53) | function stylizeNoColor(str, styleType) {
  function arrayToHash (line 57) | function arrayToHash(array) {
  function formatValue (line 67) | function formatValue(ctx, value, recurseTimes) {
  function formatPrimitive (line 170) | function formatPrimitive(ctx, value) {
  function formatError (line 188) | function formatError(value) {
  function formatArray (line 192) | function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
  function formatProperty (line 220) | function formatProperty(ctx, value, recurseTimes, visibleKeys, key, arra...
  function reduceToSingleString (line 288) | function reduceToSingleString(output, base, braces) {
  function isArray (line 312) | function isArray(ar) {
  function isBoolean (line 316) | function isBoolean(arg) {
  function isNull (line 320) | function isNull(arg) {
  function isNullOrUndefined (line 324) | function isNullOrUndefined(arg) {
  function isNumber (line 328) | function isNumber(arg) {
  function isString (line 332) | function isString(arg) {
  function isSymbol (line 336) | function isSymbol(arg) {
  function isUndefined (line 340) | function isUndefined(arg) {
  function isRegExp (line 344) | function isRegExp(re) {
  function isObject (line 348) | function isObject(arg) {
  function isDate (line 352) | function isDate(d) {
  function isError (line 356) | function isError(e) {
  function isFunction (line 363) | function isFunction(arg) {
  function isPrimitive (line 367) | function isPrimitive(arg) {
  function objectToString (line 378) | function objectToString(o) {
  function hasOwnProperty (line 382) | function hasOwnProperty(obj, prop) {
  constant OBJECT_COLUMN_NAME (line 389) | const OBJECT_COLUMN_NAME = '(index)';
  constant LOG_LEVELS (line 390) | const LOG_LEVELS = {
  constant INSPECTOR_LEVELS (line 396) | const INSPECTOR_LEVELS = [];
  constant INSPECTOR_FRAMES_TO_SKIP (line 404) | const INSPECTOR_FRAMES_TO_SKIP = __DEV__ ? 2 : 1;
  function getNativeLogFunction (line 407) | function getNativeLogFunction(level) {
  function repeat (line 439) | function repeat(element, n) {
  function consoleTablePolyfill (line 445) | function consoleTablePolyfill(rows) {

FILE: Libraries/polyfills/error-guard.js
  method setGlobalHandler (line 34) | setGlobalHandler(fun) {
  method getGlobalHandler (line 37) | getGlobalHandler() {
  method reportError (line 40) | reportError(error) {
  method reportFatalError (line 43) | reportFatalError(error) {
  method applyWithGuard (line 46) | applyWithGuard(fun, context, args) {
  method applyWithGuardIfNeeded (line 57) | applyWithGuardIfNeeded(fun, context, args) {
  method inGuard (line 65) | inGuard() {
  method guard (line 68) | guard(fun, name, context) {

FILE: Libraries/react-native/react-native-implementation.js
  method Appearance (line 19) | get Appearance() { return require('Appearance'); }
  method AccessibilityInfo (line 20) | get AccessibilityInfo() { return require('AccessibilityInfo'); }
  method ActivityIndicator (line 21) | get ActivityIndicator() { return require('ActivityIndicator'); }
  method ART (line 22) | get ART() { return require('ReactNativeART'); }
  method Button (line 23) | get Button() { return require('Button'); }
  method CheckBox (line 24) | get CheckBox() { return require('CheckBox'); }
  method Cursor (line 25) | get Cursor() { return require('Cursor'); }
  method DatePickerIOS (line 26) | get DatePickerIOS() { return require('DatePickerIOS'); }
  method DrawerLayoutAndroid (line 27) | get DrawerLayoutAndroid() { return require('DrawerLayoutAndroid'); }
  method FlatList (line 28) | get FlatList() { return require('FlatList'); }
  method Image (line 29) | get Image() { return require('Image'); }
  method ImageBackground (line 30) | get ImageBackground() { return require('ImageBackground'); }
  method ImageEditor (line 31) | get ImageEditor() { return require('ImageEditor'); }
  method ImageStore (line 32) | get ImageStore() { return require('ImageStore'); }
  method KeyboardAvoidingView (line 33) | get KeyboardAvoidingView() { return require('KeyboardAvoidingView'); }
  method ListView (line 34) | get ListView() { return require('ListView'); }
  method MaskedViewIOS (line 35) | get MaskedViewIOS() { return require('MaskedViewIOS'); }
  method Modal (line 36) | get Modal() { return require('Modal'); }
  method NavigatorIOS (line 37) | get NavigatorIOS() { return require('NavigatorIOS'); }
  method Picker (line 38) | get Picker() { return require('Picker'); }
  method PickerIOS (line 39) | get PickerIOS() { return require('PickerIOS'); }
  method ProgressBarAndroid (line 40) | get ProgressBarAndroid() { return require('ProgressBarAndroid'); }
  method ProgressViewIOS (line 41) | get ProgressViewIOS() { return require('ProgressViewIOS'); }
  method SafeAreaView (line 42) | get SafeAreaView() { return require('SafeAreaView'); }
  method ScrollView (line 43) | get ScrollView() { return require('ScrollView'); }
  method SectionList (line 44) | get SectionList() { return require('SectionList'); }
  method SegmentedControlIOS (line 45) | get SegmentedControlIOS() { return require('SegmentedControlIOS'); }
  method Slider (line 46) | get Slider() { return require('Slider'); }
  method SnapshotViewIOS (line 47) | get SnapshotViewIOS() { return require('SnapshotViewIOS'); }
  method Switch (line 48) | get Switch() { return require('Switch'); }
  method RefreshControl (line 49) | get RefreshControl() { return require('RefreshControl'); }
  method StatusBar (line 50) | get StatusBar() { return require('StatusBar'); }
  method SwipeableFlatList (line 51) | get SwipeableFlatList() { return require('SwipeableFlatList'); }
  method SwipeableListView (line 52) | get SwipeableListView() { return require('SwipeableListView'); }
  method TabBarIOS (line 53) | get TabBarIOS() { return require('TabBarIOS'); }
  method Text (line 54) | get Text() { return require('Text'); }
  method TextInput (line 55) | get TextInput() { return require('TextInput'); }
  method Touchable (line 56) | get Touchable() { return require('Touchable'); }
  method TouchableHighlight (line 57) | get TouchableHighlight() { return require('TouchableHighlight'); }
  method TouchableNativeFeedback (line 58) | get TouchableNativeFeedback() { return require('TouchableNativeFeedback'...
  method TouchableOpacity (line 59) | get TouchableOpacity() { return require('TouchableOpacity'); }
  method TouchableWithoutFeedback (line 60) | get TouchableWithoutFeedback() { return require('TouchableWithoutFeedbac...
  method View (line 61) | get View() { return require('View'); }
  method ViewPagerAndroid (line 62) | get ViewPagerAndroid() { return require('ViewPagerAndroid'); }
  method VirtualizedList (line 63) | get VirtualizedList() { return require('VirtualizedList'); }
  method WebView (line 64) | get WebView() { return require('WebView'); }
  method ActionSheetIOS (line 67) | get ActionSheetIOS() { return require('ActionSheetIOS'); }
  method Alert (line 68) | get Alert() { return require('Alert'); }
  method AlertIOS (line 69) | get AlertIOS() { return require('AlertIOS'); }
  method Animated (line 70) | get Animated() { return require('Animated'); }
  method AppRegistry (line 71) | get AppRegistry() { return require('AppRegistry'); }
  method AppState (line 72) | get AppState() { return require('AppState'); }
  method AsyncStorage (line 73) | get AsyncStorage() { return require('AsyncStorage'); }
  method BackAndroid (line 74) | get BackAndroid() { return require('BackAndroid'); }
  method BackHandler (line 75) | get BackHandler() { return require('BackHandler'); }
  method CameraRoll (line 76) | get CameraRoll() { return require('CameraRoll'); }
  method Clipboard (line 77) | get Clipboard() { return require('Clipboard'); }
  method DatePickerAndroid (line 78) | get DatePickerAndroid() { return require('DatePickerAndroid'); }
  method DeviceInfo (line 79) | get DeviceInfo() { return require('DeviceInfo'); }
  method Dimensions (line 80) | get Dimensions() { return require('Dimensions'); }
  method Easing (line 81) | get Easing() { return require('Easing'); }
  method findNodeHandle (line 82) | get findNodeHandle() { return require('ReactNative').findNodeHandle; }
  method I18nManager (line 83) | get I18nManager() { return require('I18nManager'); }
  method ImagePickerIOS (line 84) | get ImagePickerIOS() { return require('ImagePickerIOS'); }
  method InteractionManager (line 85) | get InteractionManager() { return require('InteractionManager'); }
  method Keyboard (line 86) | get Keyboard() { return require('Keyboard'); }
  method LayoutAnimation (line 87) | get LayoutAnimation() { return require('LayoutAnimation'); }
  method Linking (line 88) | get Linking() { return require('Linking'); }
  method NativeEventEmitter (line 89) | get NativeEventEmitter() { return require('NativeEventEmitter'); }
  method NetInfo (line 90) | get NetInfo() { return require('NetInfo'); }
  method MenuManager (line 91) | get MenuManager() { return require('MenuManager'); }
  method PanResponder (line 92) | get PanResponder() { return require('PanResponder'); }
  method PermissionsAndroid (line 93) | get PermissionsAndroid() { return require('PermissionsAndroid'); }
  method PixelRatio (line 94) | get PixelRatio() { return require('PixelRatio'); }
  method PushNotificationIOS (line 95) | get PushNotificationIOS() { return require('PushNotificationIOS'); }
  method Settings (line 96) | get Settings() { return require('Settings'); }
  method Share (line 97) | get Share() { return require('Share'); }
  method StatusBarIOS (line 98) | get StatusBarIOS() { return require('StatusBarIOS'); }
  method StyleSheet (line 99) | get StyleSheet() { return require('StyleSheet'); }
  method Systrace (line 100) | get Systrace() { return require('Systrace'); }
  method TimePickerAndroid (line 101) | get TimePickerAndroid() { return require('TimePickerAndroid'); }
  method TVEventHandler (line 102) | get TVEventHandler() { return require('TVEventHandler'); }
  method UIManager (line 103) | get UIManager() { return require('UIManager'); }
  method unstable_batchedUpdates (line 104) | get unstable_batchedUpdates() { return require('ReactNative').unstable_b...
  method Vibration (line 105) | get Vibration() { return require('Vibration'); }
  method VibrationIOS (line 106) | get VibrationIOS() { return require('VibrationIOS'); }
  method YellowBox (line 107) | get YellowBox() { return require('YellowBox'); }
  method DeviceEventEmitter (line 110) | get DeviceEventEmitter() { return require('RCTDeviceEventEmitter'); }
  method NativeAppEventEmitter (line 111) | get NativeAppEventEmitter() { return require('RCTNativeAppEventEmitter'); }
  method NativeModules (line 112) | get NativeModules() { return require('NativeModules'); }
  method Platform (line 113) | get Platform() { return require('Platform'); }
  method processColor (line 114) | get processColor() { return require('processColor'); }
  method requireNativeComponent (line 115) | get requireNativeComponent() { return require('requireNativeComponent'); }
  method takeSnapshot (line 116) | get takeSnapshot() { return require('takeSnapshot'); }
  method ColorPropType (line 119) | get ColorPropType() { return require('ColorPropType'); }
  method EdgeInsetsPropType (line 120) | get EdgeInsetsPropType() { return require('EdgeInsetsPropType'); }
  method PointPropType (line 121) | get PointPropType() { return require('PointPropType'); }
  method ViewPropTypes (line 122) | get ViewPropTypes() { return require('ViewPropTypes'); }
  method Navigator (line 125) | get Navigator() {

FILE: Libraries/vendor/core/Map.js
  class Map (line 105) | class Map {
    method constructor (line 116) | constructor(iterable) {
    method clear (line 139) | clear() {
    method has (line 150) | has(key) {
    method set (line 163) | set(key, value) {
    method get (line 191) | get(key) {
    method delete (line 208) | delete(key) {
    method entries (line 231) | entries() {
    method keys (line 241) | keys() {
    method values (line 251) | values() {
    method forEach (line 264) | forEach(callback, thisArg) {
  class MapIterator (line 287) | class MapIterator {
    method constructor (line 297) | constructor(map, kind) {
    method next (line 317) | next() {
  function getIndex (line 373) | function getIndex(map, key) {
  function setIndex (line 393) | function setIndex(map, key, index) {
  function initMap (line 426) | function initMap(map) {
  function isObject (line 495) | function isObject(o) {
  function createIterResultObject (line 506) | function createIterResultObject(value, done) {
  function isExtensible (line 526) | function isExtensible(o) {
  function getIENodeHash (line 542) | function getIENodeHash(node) {

FILE: Libraries/vendor/core/Set.js
  class Set (line 74) | class Set {
    method constructor (line 85) | constructor(iterable) {
    method add (line 110) | add(value) {
    method clear (line 121) | clear() {
    method delete (line 134) | delete(value) {
    method entries (line 145) | entries() {
    method forEach (line 156) | forEach(callback) {
    method has (line 173) | has(value) {
    method values (line 182) | values() {
  function initSet (line 193) | function initSet(set) {

FILE: Libraries/vendor/core/_shouldPolyfillES6Collection.js
  function _shouldActuallyPolyfillES6Collection (line 19) | function _shouldActuallyPolyfillES6Collection(collectionName: string): b...
  function _shouldPolyfillES6Collection (line 54) | function _shouldPolyfillES6Collection(collectionName: string) {

FILE: Libraries/vendor/core/getObjectValues.js
  function getObjectValues (line 23) | function getObjectValues(obj) {

FILE: Libraries/vendor/core/guid.js
  function guid (line 21) | function guid() {

FILE: Libraries/vendor/core/isEmpty.js
  function isEmpty (line 16) | function isEmpty(obj) {

FILE: Libraries/vendor/core/mergeInto.js
  function mergeInto (line 46) | function mergeInto(one, two) {

FILE: Libraries/vendor/core/toIterator.js
  class ArrayIterator (line 36) | class ArrayIterator {
    method constructor (line 38) | constructor(array, kind) {
    method next (line 48) | next() {
    method '@@iterator' (line 79) | '@@iterator'() {
  class StringIterator (line 84) | class StringIterator {
    method constructor (line 86) | constructor(string) {
    method next (line 95) | next() {
    method '@@iterator' (line 133) | '@@iterator'() {
  function createIterResultObject (line 139) | function createIterResultObject(value, done) {

FILE: Libraries/vendor/document/selection/DocumentSelectionState.js
  class DocumentSelectionState (line 26) | class DocumentSelectionState {
    method constructor (line 31) | constructor(anchor, focus) {
    method update (line 44) | update(anchor, focus) {
    method constrainLength (line 58) | constrainLength(maxLength) {
    method focus (line 65) | focus() {
    method blur (line 72) | blur() {
    method hasFocus (line 82) | hasFocus() {
    method isCollapsed (line 89) | isCollapsed() {
    method isBackward (line 96) | isBackward() {
    method getAnchorOffset (line 103) | getAnchorOffset() {
    method getFocusOffset (line 110) | getFocusOffset() {
    method getStartOffset (line 117) | getStartOffset() {
    method getEndOffset (line 126) | getEndOffset() {
    method overlaps (line 137) | overlaps(start, end) {

FILE: Libraries/vendor/emitter/EmitterSubscription.js
  class EmitterSubscription (line 22) | class EmitterSubscription extends EventSubscription {
    method constructor (line 38) | constructor(
    method remove (line 56) | remove() {

FILE: Libraries/vendor/emitter/EventEmitter.js
  class EventEmitter (line 34) | class EventEmitter {
    method constructor (line 45) | constructor(subscriber: ?EventSubscriptionVendor) {
    method addListener (line 63) | addListener(
    method once (line 82) | once(eventType: string, listener: Function, context: ?Object): Emitter...
    method removeAllListeners (line 96) | removeAllListeners(eventType: ?string) {
    method removeCurrentListener (line 121) | removeCurrentListener() {
    method removeSubscription (line 133) | removeSubscription(subscription: EmitterSubscription) {

FILE: Libraries/vendor/emitter/EventEmitterWithHolding.js
  class EventEmitterWithHolding (line 30) | class EventEmitterWithHolding {
    method constructor (line 44) | constructor(emitter: EventEmitter, holder: EventHolder) {
    method addListener (line 54) | addListener(eventType: string, listener: Function, context: ?Object) {
    method once (line 61) | once(eventType: string, listener: Function, context: ?Object) {
    method addRetroactiveListener (line 85) | addRetroactiveListener(
    method removeAllListeners (line 99) | removeAllListeners(eventType: string) {
    method removeCurrentListener (line 106) | removeCurrentListener() {
    method listeners (line 113) | listeners(eventType: string) /* TODO: Annotate return type here */ {
    method emit (line 120) | emit(eventType: string, ...args: any) {
    method emitAndHold (line 139) | emitAndHold(eventType: string, ...args: any) {
    method releaseCurrentEvent (line 148) | releaseCurrentEvent() {
    method releaseHeldEventType (line 160) | releaseHeldEventType(eventType: string) {

FILE: Libraries/vendor/emitter/EventHolder.js
  class EventHolder (line 16) | class EventHolder {
    method constructor (line 21) | constructor() {
    method holdEvent (line 47) | holdEvent(eventType: string, ...args: any) {
    method emitToListener (line 66) | emitToListener(eventType: ?string , listener: Function, context: ?Obje...
    method releaseCurrentEvent (line 93) | releaseCurrentEvent() {
    method releaseEvent (line 107) | releaseEvent(token: Object) {
    method releaseEventType (line 116) | releaseEventType(type: string) {

FILE: Libraries/vendor/emitter/EventSubscription.js
  class EventSubscription (line 20) | class EventSubscription {
    method constructor (line 30) | constructor(subscriber: EventSubscriptionVendor) {
    method remove (line 37) | remove() {

FILE: Libraries/vendor/emitter/EventSubscriptionVendor.js
  class EventSubscriptionVendor (line 22) | class EventSubscriptionVendor {
    method constructor (line 27) | constructor() {
    method addSubscription (line 38) | addSubscription(
    method removeAllSubscriptions (line 59) | removeAllSubscriptions(eventType: ?string) {
    method removeSubscription (line 73) | removeSubscription(subscription: Object) {

FILE: Libraries/vendor/emitter/mixInEventEmitter.js
  constant TYPES_KEY (line 26) | const TYPES_KEY = keyOf({__types: true});
  function mixInEventEmitter (line 49) | function mixInEventEmitter(cls: Function | Object, types: Object) {

FILE: Libraries/vendor/tinycolor/tinycolor.js
  function tinycolor (line 18) | function tinycolor (color, opts) {
  function inputToRGB (line 61) | function inputToRGB(color) {
  function rgbToRgb (line 117) | function rgbToRgb(r, g, b){
  function hslToRgb (line 129) | function hslToRgb(h, s, l) {
  function hsvToRgb (line 163) | function hsvToRgb(h, s, v) {
  function boundAlpha (line 337) | function boundAlpha(a) {
  function bound01 (line 348) | function bound01(n, max) {
  function parseIntFromHex (line 369) | function parseIntFromHex(val) {
  function isOnePointZero (line 375) | function isOnePointZero(n) {
  function isPercentage (line 380) | function isPercentage(n) {
  function convertToPercentage (line 385) | function convertToPercentage(n) {
  function convertHexToDecimal (line 394) | function convertHexToDecimal(h) {
  function stringInputToObject (line 431) | function stringInputToObject(color) {

FILE: RNTester/RNTesterUnitTests/OCMock/OCMLocation.h
  function interface (line 19) | interface OCMLocation : NSObject

FILE: RNTester/RNTesterUnitTests/OCMock/OCMMacroState.h
  function interface (line 25) | interface OCMMacroState : NSObject

FILE: RNTester/RNTesterUnitTests/OCMock/OCMRecorder.h
  function interface (line 23) | interface OCMRecorder : NSProxy

FILE: RNTester/RNTesterUnitTests/OCMock/OCMockObject.h
  function interface (line 26) | interface OCMockObject : NSProxy

FILE: RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterActivity.java
  class RNTesterActivity (line 21) | public class RNTesterActivity extends ReactActivity {
    class RNTesterActivityDelegate (line 22) | public static class RNTesterActivityDelegate extends ReactActivityDele...
      method RNTesterActivityDelegate (line 27) | public RNTesterActivityDelegate(Activity activity, String mainCompon...
      method onCreate (line 32) | @Override
      method getLaunchOptions (line 47) | @Override
    method createReactActivityDelegate (line 53) | @Override
    method getMainComponentName (line 58) | @Override

FILE: RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java
  class RNTesterApplication (line 25) | public class RNTesterApplication extends Application implements ReactApp...
    method getJSMainModuleName (line 27) | @Override
    method getBundleAssetName (line 32) | @Override
    method getUseDeveloperSupport (line 37) | @Override
    method getPackages (line 42) | @Override
    method getReactNativeHost (line 50) | @Override

FILE: RNTester/js/ARTExample.js
  method render (line 34) | render(){

FILE: RNTester/js/AccessibilityAndroidExample.android.js
  class AccessibilityAndroidExample (line 29) | class AccessibilityAndroidExample extends React.Component {
    method componentDidMount (line 40) | componentDidMount() {
    method componentWillUnmount (line 52) | componentWillUnmount() {
    method render (line 83) | render() {

FILE: RNTester/js/AccessibilityIOSExample.js
  method render (line 23) | render() {

FILE: RNTester/js/ActivityIndicatorExample.js
  class ToggleAnimatingActivityIndicator (line 23) | class ToggleAnimatingActivityIndicator extends Component<$FlowFixMeProps...
  method render (line 75) | render() {
  method render (line 86) | render() {
  method render (line 101) | render() {
  method render (line 114) | render() {
  method render (line 126) | render() {
  method render (line 151) | render() {
  method render (line 157) | render() {
  method render (line 169) | render() {

FILE: RNTester/js/AlertExample.js
  class SimpleAlertExampleBlock (line 33) | class SimpleAlertExampleBlock extends React.Component {
    method render (line 34) | render() {
  class AlertExample (line 130) | class AlertExample extends React.Component {
    method render (line 136) | render() {

FILE: RNTester/js/AlertIOSExample.js
  method render (line 31) | render() {
  method render (line 43) | render() {

FILE: RNTester/js/AlertOSXExample.js
  method render (line 35) | render() {
  method render (line 41) | render() {
  method render (line 47) | render() {
  class PromptOptions (line 88) | class PromptOptions extends React.Component {
    method constructor (line 92) | constructor(props) {
    method render (line 110) | render() {
    method saveResponse (line 164) | saveResponse(promptValue) {

FILE: RNTester/js/AnimatedExample.js
  method constructor (line 39) | constructor(props) {
  method componentDidMount (line 45) | componentDidMount() {
  method render (line 54) | render() {
  method constructor (line 66) | constructor(props) {
  method render (line 72) | render() {
  method render (line 144) | render: function() {

FILE: RNTester/js/AnimatedGratuitousApp/AnExApp.js
  function distance (line 247) | function distance(p1: Point, p2: Point): number {
  function moveToClosest (line 253) | function moveToClosest({activeKey, keys, restLayouts}, position) {

FILE: RNTester/js/AnimatedGratuitousApp/AnExBobble.js
  class AnExBobble (line 33) | class AnExBobble extends React.Component<Object, any> {
    method constructor (line 34) | constructor(props: Object) {
  function randColor (line 145) | function randColor(): string {

FILE: RNTester/js/AnimatedGratuitousApp/AnExChained.js
  method constructor (line 24) | constructor(props: Object) {

FILE: RNTester/js/AnimatedGratuitousApp/AnExScroll.js
  class AnExScroll (line 25) | class AnExScroll extends React.Component<$FlowFixMeProps, any> {

FILE: RNTester/js/AnimatedGratuitousApp/AnExSet.js
  method constructor (line 30) | constructor(props: Object) {

FILE: RNTester/js/AnimatedGratuitousApp/AnExTilt.js
  class AnExTilt (line 22) | class AnExTilt extends React.Component<Object, any> {
    method constructor (line 23) | constructor(props: Object) {

FILE: RNTester/js/AppStateExample.js
  method if (line 53) | if (this.props.showMemoryWarnings) {
  method if (line 60) | if (this.props.showCurrentOnly) {
  method render (line 81) | render() { return <Text>{AppState.currentState}</Text>; }

FILE: RNTester/js/AppearanceContext.js
  class AppearanceConsumer (line 16) | class AppearanceConsumer extends React.Component<any, Appearance.Appeara...

FILE: RNTester/js/AppearanceExample.macos.js
  method componentDidMount (line 24) | componentDidMount() {
  method componentDidMount (line 80) | componentDidMount() {
  method render (line 108) | render() {
  method render (line 116) | render() {
  method render (line 123) | render() {

FILE: RNTester/js/BorderExample.js
  method render (line 173) | render() {
  method render (line 180) | render() {
  method render (line 187) | render() {
  method render (line 194) | render() {
  method render (line 201) | render() {
  method render (line 209) | render() {
  method render (line 217) | render() {
  method render (line 225) | render() {
  method render (line 236) | render() {
  method render (line 250) | render() {
  method render (line 258) | render() {
  method render (line 265) | render() {
  method render (line 272) | render() {
  method render (line 279) | render() {
  method render (line 286) | render() {

FILE: RNTester/js/BoxShadowExample.js
  method render (line 46) | render() {
  method render (line 53) | render() {
  method render (line 60) | render() {
  method render (line 67) | render() {
  method render (line 77) | render() {

FILE: RNTester/js/ButtonExample.js
  constant BEZEL_STYLES (line 11) | const BEZEL_STYLES = [
  method render (line 53) | render() {
  method render (line 65) | render() {
  method render (line 72) | render() {
  method render (line 79) | render() {
  method render (line 93) | render() {
  method render (line 122) | render() {
  method render (line 151) | render() {
  method render (line 158) | render() {

FILE: RNTester/js/CameraRollView.js
  method if (line 200) | if (r1.length !== r2.length) {
  method if (line 205) | if (r1[i] !== r2[i]) {

FILE: RNTester/js/CheckBoxExample.js
  method render (line 43) | render() {

FILE: RNTester/js/ClipboardExample.js
  method render (line 56) | render() {

FILE: RNTester/js/DatePickerAndroidExample.js
  class DatePickerAndroidExample (line 25) | class DatePickerAndroidExample extends React.Component {
    method render (line 63) | render() {

FILE: RNTester/js/DatePickerIOSExample.js
  method render (line 88) | render() {
  method render (line 103) | render() {

FILE: RNTester/js/DragnDropExample.macos.js
  class DragExample (line 28) | class DragExample extends React.Component {
    method render (line 35) | render() {

FILE: RNTester/js/FlatListExample.js
  constant VIEWABILITY_CONFIG (line 44) | const VIEWABILITY_CONFIG = {
  method if (line 193) | if (this.state.logViewable) {

FILE: RNTester/js/ImageCapInsetsExample.js
  method render (line 26) | render() {

FILE: RNTester/js/ImageExample.js
  constant IMAGE_PREFETCH_URL (line 30) | const IMAGE_PREFETCH_URL = 'http://origami.design/public/images/bird-log...
  method componentWillMount (line 46) | componentWillMount() {
  method _loadEventFired (line 103) | _loadEventFired(event) {

FILE: RNTester/js/KeyboardAvoidingViewExample.js
  class KeyboardAvoidingViewExample (line 29) | class KeyboardAvoidingViewExample extends React.Component {
    method render (line 70) | render() {

FILE: RNTester/js/LayoutExample.js
  method render (line 26) | render() {
  method render (line 44) | render() {

FILE: RNTester/js/LinkingExample.js
  class OpenURLButton (line 25) | class OpenURLButton extends React.Component {
    method render (line 40) | render() {
  class IntentAndroidExample (line 52) | class IntentAndroidExample extends React.Component {
    method render (line 56) | render() {

FILE: RNTester/js/ListExampleShared.js
  function genItemData (line 30) | function genItemData(count: number, start: number = 0): Array<Item> {
  constant HORIZ_WIDTH (line 44) | const HORIZ_WIDTH = 200;
  constant ITEM_HEIGHT (line 45) | const ITEM_HEIGHT = 72;
  method render (line 94) | render() {
  method render (line 107) | render() {
  method render (line 120) | render() {
  method render (line 126) | render() {
  method render (line 135) | render() {
  method if (line 204) | if(Platform.isTVOS) {

FILE: RNTester/js/ListViewPagingExample.js
  method componentWillMount (line 49) | componentWillMount() {

FILE: RNTester/js/MenuExample.macos.js
  class MenuManagerExample (line 19) | class MenuManagerExample extends React.Component {
    method render (line 42) | render() {
  method render (line 76) | render() {

FILE: RNTester/js/ModalExample.js
  class ModalExample (line 34) | class ModalExample extends React.Component {
    method _setPresentationType (line 46) | _setPresentationType(type) {
    method render (line 54) | render() {

FILE: RNTester/js/MultiColumnExample.js
  method if (line 126) | if (this.state.logViewable) {

FILE: RNTester/js/NavigatorIOSBarStyleExample.js
  method render (line 39) | render() {

FILE: RNTester/js/NavigatorIOSColorsExample.js
  class EmptyPage (line 23) | class EmptyPage extends React.Component {
    method render (line 24) | render() {
  class NavigatorIOSColors (line 35) | class NavigatorIOSColors extends React.Component {
    method render (line 39) | render() {

FILE: RNTester/js/NavigatorIOSExample.js
  method render (line 31) | render() {
  method render (line 43) | render() {
  method if (line 184) | if (!this.props.depth || this.props.depth < 2) {
  method if (line 201) | if (!this.props.depth || this.props.depth < 2) {

FILE: RNTester/js/OrientationChangeExample.js
  class OrientationChangeExample (line 24) | class OrientationChangeExample extends React.Component<{}, $FlowFixMeSta...
  method render (line 66) | render() { return <OrientationChangeExample />; }

FILE: RNTester/js/PointerEventsExample.js
  method render (line 66) | render() {
  method render (line 99) | render() {
  method render (line 112) | render() {
  method render (line 149) | render() {

FILE: RNTester/js/ProgressViewIOSExample.js
  method getInitialState (line 31) | getInitialState() {
  method componentDidMount (line 37) | componentDidMount() {
  method updateProgress (line 41) | updateProgress() {
  method getProgress (line 47) | getProgress(offset) {
  method render (line 52) | render() {
  method render (line 71) | render() {

FILE: RNTester/js/PushNotificationIOSExample.js
  method render (line 26) | render() {
  method componentWillMount (line 41) | componentWillMount() {
  method componentWillUnmount (line 50) | componentWillUnmount() {
  method render (line 57) | render() {
  method _sendNotification (line 73) | _sendNotification() {
  method _sendLocalNotification (line 86) | _sendLocalNotification() {
  method _onRegistered (line 97) | _onRegistered(deviceToken) {
  method _onRegistrationError (line 108) | _onRegistrationError(error) {
  method _onRemoteNotification (line 119) | _onRemoteNotification(notification) {
  method _onLocalNotification (line 136) | _onLocalNotification(notification){
  method constructor (line 149) | constructor(props) {
  method render (line 154) | render() {
  method _showPermissions (line 168) | _showPermissions() {

FILE: RNTester/js/RCTRootViewIOSExample.js
  method render (line 26) | render() {
  method render (line 45) | render() {

FILE: RNTester/js/RNTesterActions.js
  function Back (line 34) | function Back(): RNTesterBackAction {
  function ExampleList (line 40) | function ExampleList(): RNTesterListAction {
  function ExampleAction (line 46) | function ExampleAction(openExample: string): RNTesterExampleAction {

FILE: RNTester/js/RNTesterApp.android.js
  constant DRAWER_WIDTH_LEFT (line 39) | const DRAWER_WIDTH_LEFT = 56;
  constant APP_STATE_KEY (line 45) | const APP_STATE_KEY = 'RNTesterAppState.v2';
  constant HEADER_LOGO_ICON (line 47) | const HEADER_LOGO_ICON = nativeImageSource({
  constant HEADER_NAV_ICON (line 53) | const HEADER_NAV_ICON = nativeImageSource({
  class RNTesterApp (line 59) | class RNTesterApp extends React.Component<Props, RNTesterNavigationState> {
    method componentWillMount (line 60) | componentWillMount() {
    method componentDidMount (line 64) | componentDidMount() {
    method render (line 85) | render() {
    method if (line 128) | if (ExampleModule.external) {
    method else (line 137) | else if (ExampleModule) {

FILE: RNTester/js/RNTesterApp.ios.js
  constant APP_STATE_KEY (line 44) | const APP_STATE_KEY = 'RNTesterAppState.v2';
  method componentWillMount (line 60) | componentWillMount() {
  method componentDidMount (line 64) | componentDidMount() {
  method if (line 94) | if (!action) {
  method render (line 181) | render() {

FILE: RNTester/js/RNTesterApp.macos.js
  constant APP_STATE_KEY (line 45) | const APP_STATE_KEY = 'RNTesterAppState.v2';
  class RNTesterApp (line 47) | class RNTesterApp extends React.Component<Props, RNTesterNavigationState> {
    method if (line 92) | if (this.state.openExample) {
  method render (line 133) | render() {
  method render (line 180) | render() {

FILE: RNTester/js/RNTesterBlock.js
  method var (line 47) | var description;

FILE: RNTester/js/RNTesterExampleContainer.js
  class RNTesterExampleContainer (line 20) | class RNTesterExampleContainer extends React.Component {
    method renderExample (line 21) | renderExample(example, i) {
    method render (line 40) | render(): React.Element<any> {

FILE: RNTester/js/RNTesterExampleList.js
  method componentDidMount (line 101) | componentDidMount() {
  method render (line 107) | render() {
  method if (line 161) | if (!this.props.displayTitleRow) {
  method if (line 179) | if (this.props.disableSearch) {

FILE: RNTester/js/RNTesterNavigationReducer.js
  function RNTesterNavigationReducer (line 22) | function RNTesterNavigationReducer(

FILE: RNTester/js/RNTesterSettingSwitchRow.js
  method componentWillReceiveProps (line 22) | componentWillReceiveProps(newProps) {
  method render (line 28) | render() {

FILE: RNTester/js/RNTesterStatePersister.js
  method setState (line 55) | setState((state) => {

FILE: RNTester/js/RNTesterTitle.js
  method render (line 23) | render() {

FILE: RNTester/js/RTLExample.js
  constant SCALE (line 45) | const SCALE = PixelRatio.get();
  constant IMAGE_DIMENSION (line 46) | const IMAGE_DIMENSION = 100 * SCALE;
  constant IMAGE_SIZE (line 47) | const IMAGE_SIZE = [IMAGE_DIMENSION, IMAGE_DIMENSION];
  constant IS_RTL (line 49) | const IS_RTL = I18nManager.isRTL;
  function ListItem (line 51) | function ListItem(props) {
  function TextAlignmentExample (line 71) | function TextAlignmentExample(props) {
  function AnimationBlock (line 94) | function AnimationBlock(props) {
  method constructor (line 113) | constructor(...args) {
  method render (line 120) | render() {
  method if (line 128) | if (Platform.OS === 'android') {

FILE: RNTester/js/RefreshControlExample.js
  class Row (line 41) | class Row extends React.Component {
    method render (line 46) | render() {
  class RefreshControlExample (line 59) | class RefreshControlExample extends React.Component {
    method render (line 77) | render() {

FILE: RNTester/js/RootViewSizeFlexibilityExampleApp.js
  class RootViewSizeFlexibilityExampleApp (line 23) | class RootViewSizeFlexibilityExampleApp extends React.Component<{toggled...

FILE: RNTester/js/SafeAreaViewExample.js
  method render (line 71) | render() {

FILE: RNTester/js/ScrollViewExample.js
  function renderScrollView (line 68) | function renderScrollView(title: string, addtionalStyles: typeof StyleSh...
  method shouldComponentUpdate (line 109) | shouldComponentUpdate(nextProps, nextState) {
  method render (line 113) | render() {

FILE: RNTester/js/SectionListExample.js
  constant VIEWABILITY_CONFIG (line 45) | const VIEWABILITY_CONFIG = {
  class SectionListExample (line 71) | class SectionListExample extends React.PureComponent<{}, $FlowFixMeState> {
  method if (line 209) | if (this.state.logViewable) {

FILE: RNTester/js/SegmentedControlIOSExample.js
  method render (line 24) | render() {
  method render (line 39) | render() {
  method render (line 51) | render() {
  method render (line 63) | render() {
  method render (line 75) | render() {

FILE: RNTester/js/SetPropertiesExampleApp.js
  method render (line 23) | render() {

FILE: RNTester/js/ShareExample.js
  method render (line 29) | render() {

FILE: RNTester/js/StatusBarExample.js
  method render (line 258) | render() {
  method render (line 321) | render() {
  method render (line 387) | render() {
  method render (line 392) | render() {
  method render (line 398) | render() {
  method render (line 404) | render() {
  method render (line 410) | render() {
  method render (line 416) | render() {
  method render (line 422) | render() {
  method render (line 428) | render() {

FILE: RNTester/js/SwitchExample.js
  method render (line 45) | render() {

FILE: RNTester/js/TVEventHandlerExample.js
  method render (line 31) | render() {return <TVEventHandlerView/>;}
  method constructor (line 37) | constructor(props) {
  method _enableTVEventHandler (line 46) | _enableTVEventHandler() {
  method _disableTVEventHandler (line 55) | _disableTVEventHandler() {
  method componentDidMount (line 62) | componentDidMount() {
  method componentWillUnmount (line 66) | componentWillUnmount() {
  method render (line 70) | render() {

FILE: RNTester/js/TextExample.android.js
  method render (line 26) | render() {

FILE: RNTester/js/TextExample.ios.js
  method render (line 70) | render() {

FILE: RNTester/js/TextExample.macos.js
  class Entity (line 34) | class Entity extends React.Component {
    method render (line 35) | render() {
  class AttributeToggler (line 44) | class AttributeToggler extends React.Component {
    method render (line 59) | render() {

FILE: RNTester/js/TextInputExample.android.js
  method constructor (line 83) | constructor(props) {
  method render (line 87) | render() {
  method constructor (line 112) | constructor(props) {
  method render (line 116) | render() {
  method constructor (line 323) | constructor(props) {
  method componentWillReceiveProps (line 337) | componentWillReceiveProps(props) {
  method render (line 343) | render() {

FILE: RNTester/js/TextInputExample.ios.js
  method render (line 24) | render() {
  method constructor (line 95) | constructor(props) {
  method render (line 99) | render() {
  method constructor (line 124) | constructor(props) {
  method render (line 128) | render() {
  method constructor (line 145) | constructor(props) {
  method render (line 149) | render() {

FILE: RNTester/js/TextInputExample.macos.js
  method render (line 24) | render() {
  method constructor (line 95) | constructor(props) {
  method render (line 99) | render() {
  method constructor (line 124) | constructor(props) {
  method render (line 128) | render() {
  method constructor (line 145) | constructor(props) {
  method render (line 149) | render() {

FILE: RNTester/js/TimePickerAndroidExample.js
  class TimePickerAndroidExample (line 25) | class TimePickerAndroidExample extends React.Component {
    method render (line 57) | render() {
  function _formatTime (line 111) | function _formatTime(hour, minute) {

FILE: RNTester/js/TimerExample.js
  function burnCPU (line 34) | function burnCPU(milliseconds) {
  class RequestIdleCallbackTester (line 39) | class RequestIdleCallbackTester extends React.Component<{}, $FlowFixMeSt...
    method render (line 51) | render() {

FILE: RNTester/js/TouchableExample.js
  method render (line 329) | render() {

FILE: RNTester/js/TransformExample.js
  method render (line 211) | render() {
  method render (line 222) | render() {
  method render (line 233) | render() {
  method render (line 244) | render() {
  method render (line 255) | render() {
  method render (line 266) | render() {
  method render (line 277) | render() {

FILE: RNTester/js/TransparentHitTestExample.js
  method render (line 24) | render() {

FILE: RNTester/js/VibrationExample.js
  method render (line 53) | render() {
  method render (line 63) | render() {
  method render (line 77) | render() {
  method render (line 91) | render() {
  method render (line 105) | render() {

FILE: RNTester/js/VibrationIOSExample.js
  method render (line 29) | render() {

FILE: RNTester/js/ViewExample.js
  method componentWillMount (line 130) | componentWillMount() {
  method componentWillUnmount (line 142) | componentWillUnmount() {
  method render (line 146) | render() {

FILE: RNTester/js/ViewPagerAndroidExample.android.js
  class LikeCount (line 37) | class LikeCount extends React.Component {
    method render (line 46) | render() {
  class Button (line 63) | class Button extends React.Component {
    method render (line 70) | render() {
  class ProgressBar (line 81) | class ProgressBar extends React.Component {
    method render (line 82) | render() {
  class ViewPagerAndroidExample (line 93) | class ViewPagerAndroidExample extends React.Component {
    method render (line 134) | render() {

FILE: RNTester/js/WebSocketExample.js
  constant DEFAULT_WS_URL (line 29) | const DEFAULT_WS_URL = 'ws://localhost:5555/';
  constant DEFAULT_HTTP_URL (line 30) | const DEFAULT_HTTP_URL = 'http://localhost:5556/';
  constant WS_EVENTS (line 31) | const WS_EVENTS = ['close', 'error', 'message', 'open'];
  constant WS_STATES (line 32) | const WS_STATES = [
  class Button (line 39) | class Button extends React.Component {
    method render (line 40) | render(): React.Element<any> {
  class Row (line 55) | class Row extends React.Component {
    method render (line 56) | render(): React.Element<any> {
  class WebSocketImage (line 67) | class WebSocketImage extends React.Component {
  function showValue (line 105) | function showValue(value) {

FILE: RNTester/js/XHRExample.js
  method render (line 30) | render() {
  method render (line 35) | render() {
  method render (line 40) | render() {
  method render (line 45) | render() {
  method render (line 50) | render() {
  method render (line 55) | render() {
  method render (line 60) | render() {

FILE: RNTester/js/XHRExampleBinaryUpload.js
  constant BINARY_TYPES (line 26) | const BINARY_TYPES = {
  constant SAMPLE_TEXT (line 41) | const SAMPLE_TEXT = `
  class XHRExampleBinaryUpload (line 54) | class XHRExampleBinaryUpload extends React.Component<{}, $FlowFixMeState> {
    method handlePostTestServerUpload (line 56) | static handlePostTestServerUpload(xhr: XMLHttpRequest) {

FILE: RNTester/js/XHRExampleCookies.js
  class XHRExampleCookies (line 26) | class XHRExampleCookies extends React.Component<any, any> {

FILE: RNTester/js/XHRExampleDownload.js
  function roundKilo (line 31) | function roundKilo(value: number): number {
  class ProgressBar (line 35) | class ProgressBar extends React.Component<$FlowFixMeProps> {
    method render (line 36) | render() {

FILE: RNTester/js/XHRExampleFetch.js
  class XHRExampleFetch (line 25) | class XHRExampleFetch extends React.Component<any, any> {

FILE: RNTester/js/XHRExampleFormData.js
  constant PAGE_SIZE (line 32) | const PAGE_SIZE = 20;
  class XHRExampleFormData (line 34) | class XHRExampleFormData extends React.Component<Object, Object> {

FILE: RNTester/js/XHRExampleHeaders.js
  class XHRExampleHeaders (line 23) | class XHRExampleHeaders extends React.Component {
    method constructor (line 28) | constructor(props) {
    method download (line 39) | download() {
    method componentWillUnmount (line 72) | componentWillUnmount() {
    method render (line 77) | render() {

FILE: RNTester/js/createExamplePage.js
  method render (line 24) | render() {

FILE: React/Base/RCTBridge.h
  type NSArray (line 79) | typedef NSArray<id<RCTBridgeModule>> *(^RCTBridgeModuleListProvider)(void);

FILE: React/Base/RCTBridgeMethod.h
  type RCTFunctionTypeNormal (line 14) | typedef NS_ENUM(NSUInteger, RCTFunctionType) {

FILE: React/Base/RCTBridgeModule.h
  type RCTMethodInfo (line 54) | struct RCTMethodInfo {

FILE: React/Base/RCTConvert.h
  type NSURL (line 54) | typedef NSURL RCTFileURL;
  type NSArray (line 92) | typedef NSArray CGColorArray;
  type id (line 98) | typedef id NSPropertyList;
  type BOOL (line 101) | typedef BOOL css_backface_visibility_t;
  type NSArray (line 125) | typedef NSArray NSStringArray
  type NSArray (line 126) | typedef NSArray NSStringArrayArray
  type NSArray (line 127) | typedef NSArray NSDictionaryArray
  type NSArray (line 128) | typedef NSArray NSURLArray
  type NSArray (line 129) | typedef NSArray RCTFileURLArray
  type NSArray (line 130) | typedef NSArray NSNumberArray
  type NSArray (line 131) | typedef NSArray NSColorArray

FILE: React/Base/RCTEventDispatcher.h
  type RCTTextEventTypeFocus (line 14) | typedef NS_ENUM(NSInteger, RCTTextEventType)

FILE: React/Base/RCTManagedPointer.h
  function end (line 27) | end

FILE: React/Base/RCTModuleData.h
  type id (line 18) | typedef id<RCTBridgeModule>(^RCTBridgeModuleProvider)(void);

FILE: React/Base/RCTNullability.h
  type RCTNullabilityUnspecified (line 12) | typedef NS_ENUM(NSUInteger, RCTNullability) {

FILE: React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h
  type NSView (line 18) | typedef NSView *(^RCTSurfaceHostingViewActivityIndicatorViewFactory)();

FILE: React/Base/UIImageUtils.h
  type UIViewContentModeScaleToFill (line 12) | typedef NS_ENUM(NSInteger, UIViewContentMode) {

FILE: React/CxxBridge/NSDataBigString.h
  function namespace (line 13) | namespace facebook {

FILE: React/CxxBridge/RCTCxxBridgeDelegate.h
  function namespace (line 14) | namespace facebook {

FILE: React/CxxBridge/RCTMessageThread.h
  function namespace (line 17) | namespace facebook {

FILE: React/CxxBridge/RCTObjcExecutor.h
  function namespace (line 17) | namespace facebook {

FILE: React/CxxModule/DispatchMessageQueueThread.h
  function namespace (line 13) | namespace facebook {

FILE: React/CxxModule/RCTCxxModule.h
  function namespace (line 16) | namespace facebook {

FILE: React/CxxModule/RCTCxxUtils.h
  function namespace (line 20) | namespace facebook {

FILE: React/CxxModule/RCTNativeModule.h
  function namespace (line 13) | namespace facebook {

FILE: React/CxxUtils/RCTFollyConvert.h
  function namespace (line 14) | namespace facebook {

FILE: React/DevSupport/RCTPackagerConnection.h
  type RCTHandlerToken (line 21) | typedef uint32_t RCTHandlerToken;

FILE: React/Profiler/RCTProfile.h
  type systrace_arg_t (line 170) | typedef struct {
  type RCTProfileCallbacks (line 177) | typedef struct {

FILE: React/Views/NSView+NSViewAnimationWithBlocks.h
  type NSInteger (line 8) | typedef NSInteger NSViewAnimationTransition;
  type NSViewAnimationTransition (line 10) | enum NSViewAnimationTransition{
  type NSViewAnimationGroupTransitionNone (line 18) | typedef NS_ENUM(NSInteger, NSViewAnimationGroupTransition) {
  type NSUInteger (line 29) | typedef NSUInteger NSViewAnimationOptions;
  type NSViewAnimationOptions (line 31) | enum NSViewAnimationOptions{
  type NSInteger (line 57) | typedef NSInteger NSViewAnimationCurve;
  type NSViewAnimationCurve (line 59) | enum NSViewAnimationCurve{

FILE: React/Views/RCTBorderDrawing.h
  type RCTCornerRadii (line 14) | typedef struct {
  type RCTCornerInsets (line 21) | typedef struct {
  type RCTBorderColors (line 28) | typedef struct {

FILE: React/Views/RCTComponent.h
  function end (line 51) | end

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/AbstractScrollViewTestCase.java
  class AbstractScrollViewTestCase (line 25) | public abstract class AbstractScrollViewTestCase extends ReactAppInstrum...
    type ScrollViewTestModule (line 29) | protected static interface ScrollViewTestModule extends JavaScriptModu...
      method scrollTo (line 30) | public void scrollTo(float destX, float destY);
    method tearDown (line 33) | @Override
    method createReactInstanceSpecForTest (line 39) | @Override
    class ScrollListenerModule (line 47) | protected static class ScrollListenerModule extends BaseJavaModule {
      method getName (line 57) | @Override
      method onScroll (line 62) | @ReactMethod
      method onItemPress (line 69) | @ReactMethod
      method onScrollBeginDrag (line 74) | @ReactMethod
      method onScrollEndDrag (line 79) | @ReactMethod
      method waitForScrollIdle (line 84) | public void waitForScrollIdle() {
      method getXOffsets (line 97) | public ArrayList<Double> getXOffsets() {
      method getYOffsets (line 101) | public ArrayList<Double> getYOffsets() {
      method getItemsPressed (line 105) | public ArrayList<Integer> getItemsPressed() {
      method dragEventsMatch (line 109) | public boolean dragEventsMatch() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/FakeWebSocketModule.java
  class FakeWebSocketModule (line 21) | public final class FakeWebSocketModule extends BaseJavaModule {
    method getName (line 23) | @Override
    method canOverrideExistingModule (line 28) | @Override
    method connect (line 33) | @ReactMethod
    method close (line 41) | @ReactMethod
    method send (line 45) | @ReactMethod
    method sendBinary (line 49) | @ReactMethod

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/InstanceSpecForTestPackage.java
  class InstanceSpecForTestPackage (line 25) | public class InstanceSpecForTestPackage implements ReactPackage {
    method InstanceSpecForTestPackage (line 29) | public InstanceSpecForTestPackage(ReactInstanceSpecForTest specForTest) {
    method createNativeModules (line 33) | @Override
    method createViewManagers (line 39) | @Override

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java
  class ReactAppInstrumentationTestCase (line 28) | public abstract class ReactAppInstrumentationTestCase extends
    method ReactAppInstrumentationTestCase (line 31) | public ReactAppInstrumentationTestCase() {
    method setUp (line 35) | @Override
    method tearDown (line 58) | @Override
    method getRootView (line 65) | public ViewGroup getRootView() {
    method getViewAtPath (line 73) | @Deprecated
    method getViewByTestId (line 78) | public <T extends View> T getViewByTestId(String testID) {
    method createGestureGenerator (line 83) | public SingleTouchGestureGenerator createGestureGenerator() {
    method waitForBridgeAndUIIdle (line 87) | public void waitForBridgeAndUIIdle() {
    method waitForBridgeAndUIIdle (line 91) | public void waitForBridgeAndUIIdle(long timeoutMs) {
    method getScreenshot (line 95) | protected Bitmap getScreenshot() {
    method getReactApplicationKeyUnderTest (line 142) | protected abstract String getReactApplicationKeyUnderTest();
    method getEnableDevSupport (line 144) | protected boolean getEnableDevSupport() {
    method createReactInstanceSpecForTest (line 151) | protected ReactInstanceSpecForTest createReactInstanceSpecForTest() {
    method getReactContext (line 155) | protected ReactContext getReactContext() {
    class BitmapHolder (line 162) | private static class BitmapHolder {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java
  class ReactAppTestActivity (line 34) | public class ReactAppTestActivity extends FragmentActivity
    method onCreate (line 50) | @Override
    method onPause (line 69) | @Override
    method onResume (line 82) | @Override
    method onDestroy (line 93) | @Override
    method waitForDestroy (line 110) | public void waitForDestroy(long timeoutMs) throws InterruptedException {
    method loadApp (line 114) | public void loadApp(String appKey, ReactInstanceSpecForTest spec, bool...
    method loadApp (line 118) | public void loadApp(String appKey, ReactInstanceSpecForTest spec, Stri...
    method loadApp (line 122) | public void loadApp(
    method resetRootViewForScreenshotTests (line 130) | public void resetRootViewForScreenshotTests() {
    method loadApp (line 144) | public void loadApp(
    method loadApp (line 153) | public void loadApp(
    method waitForLayout (line 199) | public boolean waitForLayout(long millis) throws InterruptedException {
    method waitForBridgeAndUIIdle (line 203) | public void waitForBridgeAndUIIdle() {
    method waitForBridgeAndUIIdle (line 207) | public void waitForBridgeAndUIIdle(long timeoutMs) {
    method getRootView (line 214) | public View getRootView() {
    method getReactContext (line 218) | public ReactContext getReactContext() {
    method waitForReactContext (line 225) | private ReactContext waitForReactContext() {
    method postDelayed (line 241) | public void postDelayed(Runnable r, int delayMS) {
    method getCurrentScreenshot (line 250) | public Bitmap getCurrentScreenshot() {
    method isScreenshotReady (line 254) | public boolean isScreenshotReady() {
    method setScreenshotDimensions (line 258) | public void setScreenshotDimensions(int width, int height) {
    method invokeDefaultOnBackPressed (line 262) | @Override
    method onRequestPermissionsResult (line 267) | @Override
    method requestPermissions (line 274) | @Override

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java
  class ReactInstanceSpecForTest (line 25) | @SuppressLint("JavatestsIncorrectFolder")
    method addNativeModule (line 34) | public ReactInstanceSpecForTest addNativeModule(NativeModule module) {
    method setPackage (line 39) | public ReactInstanceSpecForTest setPackage(ReactPackage reactPackage) {
    method addPackages (line 48) | public ReactInstanceSpecForTest addPackages(List<ReactPackage> reactPa...
    method addViewManager (line 53) | public ReactInstanceSpecForTest addViewManager(ViewManager viewManager) {
    method getExtraNativeModulesForTest (line 58) | public List<NativeModule> getExtraNativeModulesForTest() {
    method getAlternativeReactPackageForTest (line 62) | public ReactPackage getAlternativeReactPackageForTest() {
    method getAlternativeReactPackagesForTest (line 70) | public List<ReactPackage> getAlternativeReactPackagesForTest() {
    method getExtraViewManagers (line 74) | public List<ViewManager> getExtraViewManagers() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactIntegrationTestCase.java
  class ReactIntegrationTestCase (line 54) | public abstract class ReactIntegrationTestCase extends AndroidTestCase {
    method getContext (line 63) | @Override
    method shutDownContext (line 73) | public void shutDownContext() {
    method getViewAtPath (line 97) | @Deprecated
    method getViewByTestId (line 102) | public <T extends View> T getViewByTestId(ViewGroup rootView, String t...
    class Event (line 106) | public static class Event {
      method Event (line 109) | public Event() {
      method Event (line 113) | public Event(int counter) {
      method occur (line 117) | public void occur() {
      method didOccur (line 121) | public boolean didOccur() {
      method await (line 125) | public boolean await(long millis) {
    method createTimingModule (line 137) | protected Timing createTimingModule() {
    method initializeWithInstance (line 154) | public void initializeWithInstance(CatalystInstance instance) {
    method waitForBridgeIdle (line 161) | public boolean waitForBridgeIdle(long millis) {
    method waitForIdleSync (line 165) | public void waitForIdleSync() {
    method waitForBridgeAndUIIdle (line 169) | public void waitForBridgeAndUIIdle() {
    method setUp (line 176) | @Override
    method tearDown (line 182) | @Override
    method initializeJavaModule (line 188) | protected static void initializeJavaModule(final BaseJavaModule javaMo...

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java
  class ReactSettingsForTests (line 13) | public class ReactSettingsForTests implements DeveloperSettings {
    method isFpsDebugEnabled (line 15) | @Override
    method isAnimationFpsDebugEnabled (line 20) | @Override
    method isJSDevModeEnabled (line 25) | @Override
    method isJSMinifyEnabled (line 30) | @Override
    method isElementInspectorEnabled (line 35) | @Override
    method isNuclideJSDebugEnabled (line 40) | @Override
    method isRemoteJSDebugEnabled (line 45) | @Override
    method setRemoteJSDebugEnabled (line 50) | @Override

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestAppShell.java
  class ReactTestAppShell (line 23) | public class ReactTestAppShell extends ExopackageApplication<Application...
    method ReactTestAppShell (line 25) | public ReactTestAppShell() {
    method onBaseContextAttached (line 29) | @Override

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestApplicationImpl.java
  class ReactTestApplicationImpl (line 15) | public class ReactTestApplicationImpl extends DefaultApplicationLike {
    method ReactTestApplicationImpl (line 17) | public ReactTestApplicationImpl() {
    method ReactTestApplicationImpl (line 21) | public ReactTestApplicationImpl(Application application) {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestFactory.java
  type ReactTestFactory (line 17) | public interface ReactTestFactory {
    type ReactInstanceEasyBuilder (line 18) | public static interface ReactInstanceEasyBuilder {
      method setContext (line 19) | ReactInstanceEasyBuilder setContext(Context context);
      method addNativeModule (line 20) | ReactInstanceEasyBuilder addNativeModule(NativeModule module);
      method build (line 21) | CatalystInstance build();
    method getCatalystInstanceBuilder (line 24) | ReactInstanceEasyBuilder getCatalystInstanceBuilder();
    method getReactInstanceManagerBuilder (line 25) | ReactInstanceManagerBuilder getReactInstanceManagerBuilder();

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java
  class ReactTestHelper (line 39) | public class ReactTestHelper {
    class DefaultReactTestFactory (line 40) | private static class DefaultReactTestFactory implements ReactTestFacto...
      class ReactInstanceEasyBuilderImpl (line 41) | private static class ReactInstanceEasyBuilderImpl implements ReactIn...
        method setContext (line 47) | @Override
        method addNativeModule (line 53) | @Override
        method build (line 66) | @Override
      method getCatalystInstanceBuilder (line 99) | @Override
      method getReactInstanceManagerBuilder (line 104) | @Override
    method getReactTestFactory (line 110) | public static ReactTestFactory getReactTestFactory() {
    method catalystInstanceBuilder (line 119) | public static ReactTestFactory.ReactInstanceEasyBuilder catalystInstan...
    method getViewAtPath (line 161) | public static <T extends View> T getViewAtPath(ViewGroup rootView, int...
    method getViewWithReactTestId (line 176) | public static View getViewWithReactTestId(View rootView, String testId) {
    method getTestId (line 180) | public static String getTestId(View view) {
    method findChild (line 186) | private static View findChild(View root, Predicate<View> predicate) {
    method hasTagValue (line 203) | private static Predicate<View> hasTagValue(final String tagValue) {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/ScreenshotingFrameLayout.java
  class ScreenshotingFrameLayout (line 24) | public class ScreenshotingFrameLayout extends FrameLayout {
    method ScreenshotingFrameLayout (line 29) | public ScreenshotingFrameLayout(Context context) {
    method dispatchDraw (line 34) | @Override
    method clean (line 50) | public void clean() {
    method createNewBitmap (line 58) | private static Bitmap createNewBitmap(Canvas canvas) {
    method getLastDrawnBitmap (line 62) | public Bitmap getLastDrawnBitmap() {
    method isScreenshotReady (line 76) | public boolean isScreenshotReady() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/IdleWaiter.java
  type IdleWaiter (line 14) | public interface IdleWaiter {
    method waitForBridgeAndUIIdle (line 16) | void waitForBridgeAndUIIdle();

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactBridgeIdleSignaler.java
  class ReactBridgeIdleSignaler (line 20) | public class ReactBridgeIdleSignaler implements NotThreadSafeBridgeIdleD...
    method onTransitionToBridgeIdle (line 28) | @Override
    method onTransitionToBridgeBusy (line 34) | @Override
    method isBridgeIdle (line 47) | public boolean isBridgeIdle() {
    method waitForIdle (line 51) | public boolean waitForIdle(long millis) {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactIdleDetectionUtil.java
  class ReactIdleDetectionUtil (line 22) | public class ReactIdleDetectionUtil {
    method waitForBridgeAndUIIdle (line 33) | public static void waitForBridgeAndUIIdle(
    method waitForChoreographer (line 52) | private static void waitForChoreographer(long timeToWait) {
    method waitForJSIdle (line 85) | private static void waitForJSIdle(ReactContext reactContext) {
    method waitInner (line 108) | private static void waitInner(ReactBridgeIdleSignaler idleSignaler, lo...

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/testing/network/NetworkRecordingModuleMock.java
  class NetworkRecordingModuleMock (line 29) | @ReactModule(name = "Networking", canOverrideExistingModule = true)
    method NetworkRecordingModuleMock (line 42) | public NetworkRecordingModuleMock(ReactApplicationContext reactContext) {
    method NetworkRecordingModuleMock (line 46) | public NetworkRecordingModuleMock(ReactApplicationContext reactContext...
    type RequestListener (line 51) | public static interface RequestListener {
      method onRequest (line 52) | public void onRequest(String method, String url, ReadableArray heade...
    method setResponse (line 59) | public void setResponse(int code, String body) {
    method setRequestListener (line 64) | public void setRequestListener(RequestListener requestListener) {
    method getName (line 68) | @Override
    method fireReactCallback (line 73) | private void fireReactCallback(
    method sendRequest (line 81) | @ReactMethod
    method abortRequest (line 108) | @ReactMethod
    method canOverrideExistingModule (line 114) | @Override
    method setCompleteRequest (line 119) | public void setCompleteRequest(boolean completeRequest) {
    method onDataReceived (line 123) | private void onDataReceived(int requestId, String data) {
    method onRequestComplete (line 131) | private void onRequestComplete(int requestId, @Nullable String error) {
    method onResponseReceived (line 139) | private void onResponseReceived(int requestId, int code, WritableMap h...
    method getEventEmitter (line 148) | private DeviceEventManagerModule.RCTDeviceEventEmitter getEventEmitter...

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystMeasureLayoutTest.java
  class CatalystMeasureLayoutTest (line 43) | public class CatalystMeasureLayoutTest extends ReactAppInstrumentationTe...
    type MeasureLayoutTestModule (line 45) | private static interface MeasureLayoutTestModule extends JavaScriptMod...
      method verifyMeasureOnViewA (line 46) | public void verifyMeasureOnViewA();
      method verifyMeasureOnViewC (line 47) | public void verifyMeasureOnViewC();
      method verifyMeasureLayoutCRelativeToA (line 48) | public void verifyMeasureLayoutCRelativeToA();
      method verifyMeasureLayoutCRelativeToB (line 49) | public void verifyMeasureLayoutCRelativeToB();
      method verifyMeasureLayoutCRelativeToSelf (line 50) | public void verifyMeasureLayoutCRelativeToSelf();
      method verifyMeasureLayoutRelativeToParentOnViewA (line 51) | public void verifyMeasureLayoutRelativeToParentOnViewA();
      method verifyMeasureLayoutRelativeToParentOnViewB (line 52) | public void verifyMeasureLayoutRelativeToParentOnViewB();
      method verifyMeasureLayoutRelativeToParentOnViewC (line 53) | public void verifyMeasureLayoutRelativeToParentOnViewC();
      method verifyMeasureLayoutDRelativeToB (line 54) | public void verifyMeasureLayoutDRelativeToB();
      method verifyMeasureLayoutNonExistentTag (line 55) | public void verifyMeasureLayoutNonExistentTag();
      method verifyMeasureLayoutNonExistentAncestor (line 56) | public void verifyMeasureLayoutNonExistentAncestor();
      method verifyMeasureLayoutRelativeToParentNonExistentTag (line 57) | public void verifyMeasureLayoutRelativeToParentNonExistentTag();
    method setUp (line 63) | @Override
    method getReactApplicationKeyUnderTest (line 69) | @Override
    method createReactInstanceSpecForTest (line 74) | @Override
    method waitForBridgeIdleAndVerifyAsserts (line 81) | private void waitForBridgeIdleAndVerifyAsserts() {
    method testMeasure (line 86) | public void testMeasure() {
    method testMeasureLayout (line 93) | public void testMeasureLayout() {
    method testMeasureLayoutRelativeToParent (line 102) | public void testMeasureLayoutRelativeToParent() {
    method testMeasureLayoutCallsErrorCallbackWhenViewIsNotChildOfAncestor (line 111) | public void testMeasureLayoutCallsErrorCallbackWhenViewIsNotChildOfAnc...
    method testMeasureLayoutCallsErrorCallbackWhenViewDoesNotExist (line 116) | public void testMeasureLayoutCallsErrorCallbackWhenViewDoesNotExist() {
    method testMeasureLayoutCallsErrorCallbackWhenAncestorDoesNotExist (line 121) | public void testMeasureLayoutCallsErrorCallbackWhenAncestorDoesNotExis...
    method testMeasureLayoutRelativeToParentCallsErrorCallbackWhenViewDoesNotExist (line 126) | public void testMeasureLayoutRelativeToParentCallsErrorCallbackWhenVie...

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystMultitouchHandlingTestCase.java
  class CatalystMultitouchHandlingTestCase (line 23) | public class CatalystMultitouchHandlingTestCase extends ReactAppInstrume...
    method getReactApplicationKeyUnderTest (line 27) | @Override
    method createReactInstanceSpecForTest (line 32) | @Override
    method testMultitouchEvents (line 42) | public void testMultitouchEvents() throws InterruptedException {
    method createPointerProps (line 85) | private MotionEvent.PointerProperties createPointerProps(int id, int t...
    method createPointerCoords (line 92) | private MotionEvent.PointerCoords createPointerCoords(float x, float y) {
    method dispatchEvent (line 99) | private void dispatchEvent(
    method generateRecordedPinchTouchEvents (line 128) | private void generateRecordedPinchTouchEvents() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJSToJavaParametersTestCase.java
  class CatalystNativeJSToJavaParametersTestCase (line 50) | @Ignore("Fix prop types and view managers.")
    type TestJSToJavaParametersModule (line 53) | private interface TestJSToJavaParametersModule extends JavaScriptModule {
      method returnBasicTypes (line 54) | void returnBasicTypes();
      method returnBoxedTypes (line 55) | void returnBoxedTypes();
      method returnDynamicTypes (line 56) | void returnDynamicTypes();
      method returnArrayWithBasicTypes (line 58) | void returnArrayWithBasicTypes();
      method returnNestedArray (line 59) | void returnNestedArray();
      method returnArrayWithMaps (line 60) | void returnArrayWithMaps();
      method returnMapWithBasicTypes (line 62) | void returnMapWithBasicTypes();
      method returnNestedMap (line 63) | void returnNestedMap();
      method returnMapWithArrays (line 64) | void returnMapWithArrays();
      method returnArrayWithStringDoubleIntMapArrayBooleanNull (line 66) | void returnArrayWithStringDoubleIntMapArrayBooleanNull();
      method returnMapWithStringDoubleIntMapArrayBooleanNull (line 67) | void returnMapWithStringDoubleIntMapArrayBooleanNull();
      method returnMapForMerge1 (line 69) | void returnMapForMerge1();
      method returnMapForMerge2 (line 70) | void returnMapForMerge2();
      method returnMapWithMultibyteUTF8CharacterString (line 72) | void returnMapWithMultibyteUTF8CharacterString();
      method returnArrayWithMultibyteUTF8CharacterString (line 73) | void returnArrayWithMultibyteUTF8CharacterString();
      method returnArrayWithLargeInts (line 75) | void returnArrayWithLargeInts();
      method returnMapWithLargeInts (line 76) | void returnMapWithLargeInts();
    method setUp (line 82) | @Override
    method testBasicTypes (line 110) | public void testBasicTypes() {
    method testBoxedTypes (line 124) | public void testBoxedTypes() {
    method testDynamicType (line 137) | public void testDynamicType() {
    method testArrayWithBasicTypes (line 148) | public void testArrayWithBasicTypes() {
    method testNestedArray (line 171) | public void testNestedArray() {
    method testArrayWithMaps (line 200) | public void testArrayWithMaps() {
    method testMapWithBasicTypes (line 218) | public void testMapWithBasicTypes() {
    method testNestedMap (line 252) | public void testNestedMap() {
    method testMapParameterWithArrays (line 268) | public void testMapParameterWithArrays() throws InterruptedException {
    method testMapParameterDump (line 301) | public void testMapParameterDump() {
    method testGetTypeFromArray (line 316) | public void testGetTypeFromArray() {
    method testGetTypeFromMap (line 334) | public void testGetTypeFromMap() {
    method testGetWrongTypeFromArray (line 352) | public void testGetWrongTypeFromArray() {
    method testGetWrongTypeFromMap (line 369) | public void testGetWrongTypeFromMap() {
    method testArrayOutOfBoundsExceptionThrown (line 386) | public void testArrayOutOfBoundsExceptionThrown() {
    method testNoSuchKeyExceptionThrown (line 410) | public void testNoSuchKeyExceptionThrown() {
    method testIntOutOfRangeThrown (line 427) | public void testIntOutOfRangeThrown() {
    method testMapMerging (line 452) | public void testMapMerging() {
    method testMapAccessibleAfterMerge (line 481) | public void testMapAccessibleAfterMerge() {
    method testMapIterateOverMapWithBasicTypes (line 511) | public void testMapIterateOverMapWithBasicTypes() {
    method testMapIterateOverNestedMaps (line 531) | public void testMapIterateOverNestedMaps() {
    method testInvalidIteratorExceptionThrown (line 551) | public void testInvalidIteratorExceptionThrown() {
    method testStringWithMultibyteUTF8Characters (line 567) | public void testStringWithMultibyteUTF8Characters() {
    method assertUnexpectedTypeExceptionThrown (line 599) | private void assertUnexpectedTypeExceptionThrown(
    method assertUnexpectedTypeExceptionThrown (line 613) | private void assertUnexpectedTypeExceptionThrown(
    method assertArrayOutOfBoundsExceptionThrown (line 627) | private void assertArrayOutOfBoundsExceptionThrown(
    method assertNoSuchKeyExceptionThrown (line 641) | private void assertNoSuchKeyExceptionThrown(
    method assertInvalidIteratorExceptionThrown (line 655) | private static void assertInvalidIteratorExceptionThrown(
    method arrayGetByType (line 667) | private void arrayGetByType(ReadableArray array, int index, String typ...
    method mapGetByType (line 685) | private void mapGetByType(ReadableMap map, String key, String typeToAs...
    class RecordingTestModule (line 703) | private static class RecordingTestModule extends BaseJavaModule {
      method getName (line 711) | @Override
      method receiveBasicTypes (line 716) | @ReactMethod
      method receiveBoxedTypes (line 721) | @ReactMethod
      method receiveArray (line 726) | @ReactMethod
      method receiveMap (line 731) | @ReactMethod
      method receiveDynamic (line 736) | @ReactMethod
      method getBasicTypesCalls (line 741) | public List<Object[]> getBasicTypesCalls() {
      method getBoxedTypesCalls (line 745) | public List<Object[]> getBoxedTypesCalls() {
      method getArrayCalls (line 749) | public List<ReadableArray> getArrayCalls() {
      method getMapCalls (line 753) | public List<ReadableMap> getMapCalls() {
      method getDynamicCalls (line 757) | public List<Dynamic> getDynamicCalls() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJavaToJSArgumentsTestCase.java
  class CatalystNativeJavaToJSArgumentsTestCase (line 36) | @Ignore("Fix prop types and view managers.")
    type TestJavaToJSArgumentsModule (line 39) | private interface TestJavaToJSArgumentsModule extends JavaScriptModule {
      method receiveBasicTypes (line 40) | void receiveBasicTypes(String s, double d, boolean b, String nullStr...
      method receiveArrayWithBasicTypes (line 42) | void receiveArrayWithBasicTypes(WritableArray array);
      method receiveNestedArray (line 43) | void receiveNestedArray(WritableArray nestedArray);
      method receiveArrayWithMaps (line 44) | void receiveArrayWithMaps(WritableArray arrayWithMaps);
      method receiveMapWithBasicTypes (line 46) | void receiveMapWithBasicTypes(WritableMap map);
      method receiveNestedMap (line 47) | void receiveNestedMap(WritableMap nestedMap);
      method receiveMapWithArrays (line 48) | void receiveMapWithArrays(WritableMap mapWithArrays);
      method receiveMapAndArrayWithNullValues (line 49) | void receiveMapAndArrayWithNullValues(
      method receiveMapWithMultibyteUTF8CharacterString (line 52) | void receiveMapWithMultibyteUTF8CharacterString(WritableMap map);
      method receiveArrayWithMultibyteUTF8CharacterString (line 53) | void receiveArrayWithMultibyteUTF8CharacterString(WritableArray array);
    method setUp (line 59) | @Override
    method testBasicTypes (line 87) | public void testBasicTypes() {
    method testArrayWithBasicTypes (line 94) | public void testArrayWithBasicTypes() {
    method testNestedArray (line 106) | public void testNestedArray() {
    method testArrayWithMaps (line 121) | public void testArrayWithMaps() {
    method testMapWithBasicTypes (line 136) | public void testMapWithBasicTypes() {
    method testNestedMap (line 148) | public void testNestedMap() {
    method testMapWithArrays (line 159) | public void testMapWithArrays() {
    method testMapWithNullStringValue (line 176) | public void testMapWithNullStringValue() {
    method testStringWithMultibyteUTF8Characters (line 193) | public void testStringWithMultibyteUTF8Characters() {
    method testThrowWhenArrayReusedInArray (line 220) | public void testThrowWhenArrayReusedInArray() {
    method testThrowWhenArrayReusedInMap (line 234) | public void testThrowWhenArrayReusedInMap() {
    method testThrowWhenMapReusedInArray (line 248) | public void testThrowWhenMapReusedInArray() {
    method testThrowWhenMapReusedInMap (line 262) | public void testThrowWhenMapReusedInMap() {
    method testThrowWhenAddToConsumedArray (line 276) | public void testThrowWhenAddToConsumedArray() {
    method testThrowWhenAddToConsumedMap (line 330) | public void testThrowWhenAddToConsumedMap() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJavaToJSReturnValuesTestCase.java
  class CatalystNativeJavaToJSReturnValuesTestCase (line 35) | @Ignore("Fix prop types and view managers.")
    type TestJavaToJSReturnValuesModule (line 38) | private interface TestJavaToJSReturnValuesModule extends JavaScriptMod...
      method callMethod (line 39) | void callMethod(String methodName, String expectedReturnType, String...
      method triggerException (line 40) | void triggerException();
    class TestModule (line 43) | @ReactModule(name = "TestModule")
      method getName (line 45) | @Override
      method getBoolean (line 50) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getBoxedBoolean (line 55) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getInt (line 60) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getBoxedInt (line 65) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getDouble (line 70) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getBoxedDouble (line 75) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getString (line 80) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getArray (line 85) | @ReactMethod(isBlockingSynchronousMethod = true)
      method getMap (line 93) | @ReactMethod(isBlockingSynchronousMethod = true)
      method triggerException (line 101) | @ReactMethod(isBlockingSynchronousMethod = true)
    method setUp (line 110) | @Override
    method testGetPrimitives (line 130) | public void testGetPrimitives() {
    method testObjectTypes (line 147) | public void testObjectTypes() {
    method testThrowsException (line 158) | public void testThrowsException() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystSubviewsClippingTestCase.java
  class CatalystSubviewsClippingTestCase (line 35) | public class CatalystSubviewsClippingTestCase extends ReactAppInstrument...
    type SubviewsClippingTestModule (line 37) | private interface SubviewsClippingTestModule extends JavaScriptModule {
      method renderClippingSample1 (line 38) | void renderClippingSample1();
      method renderClippingSample2 (line 39) | void renderClippingSample2();
      method renderScrollViewTest (line 40) | void renderScrollViewTest();
      method renderUpdatingSample1 (line 41) | void renderUpdatingSample1(boolean update1, boolean update2);
      method renderUpdatingSample2 (line 42) | void renderUpdatingSample2(boolean update);
    method getReactApplicationKeyUnderTest (line 47) | @Override
    method createReactInstanceSpecForTest (line 52) | @Override
    method XtestOneLevelClippingInView (line 80) | public void XtestOneLevelClippingInView() throws Throwable {
    method XtestTwoLevelClippingInView (line 110) | public void XtestTwoLevelClippingInView() throws Throwable {
    method testClippingAfterLayoutInner (line 128) | public void testClippingAfterLayoutInner() {
    method testClippingAfterLayoutParent (line 156) | public void testClippingAfterLayoutParent() {
    method testOneLevelClippingInScrollView (line 171) | public void testOneLevelClippingInScrollView() throws Throwable {
    method testTwoLevelClippingInScrollView (line 185) | public void testTwoLevelClippingInScrollView() throws Throwable {
    method scrollToDpInUIThread (line 236) | private void scrollToDpInUIThread(final int yPositionInDP) throws Thro...
    class ClippableView (line 248) | private static class ClippableView extends ReactViewGroup {
      method ClippableView (line 253) | public ClippableView(Context context, List<String> events) {
      method onAttachedToWindow (line 258) | @Override
      method onDetachedFromWindow (line 264) | @Override
      method setClippableViewID (line 270) | public void setClippableViewID(String clippableViewID) {
    class ClippableViewManager (line 275) | private static class ClippableViewManager extends ReactViewManager {
      method ClippableViewManager (line 279) | public ClippableViewManager(List<String> events) {
      method getName (line 283) | @Override
      method createViewInstance (line 288) | @Override
      method setClippableViewId (line 293) | @ReactProp(name = "clippableViewID")

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystTouchBubblingTestCase.java
  class CatalystTouchBubblingTestCase (line 52) | public class CatalystTouchBubblingTestCase extends ReactAppInstrumentati...
    method getReactApplicationKeyUnderTest (line 56) | @Override
    method testSimpleClickAtInnerElements (line 65) | public void testSimpleClickAtInnerElements() {
    method testDownOnInnerUpOnTouchableParent (line 88) | public void testDownOnInnerUpOnTouchableParent() {
    method testDragOutOfTouchable (line 122) | public void testDragOutOfTouchable() {
    method testNoEventWhenDragOutOfFirstTouchableParentToItsTouchableParent (line 140) | public void testNoEventWhenDragOutOfFirstTouchableParentToItsTouchable...
    method createReactInstanceSpecForTest (line 154) | @Override

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystUIManagerTestCase.java
  class CatalystUIManagerTestCase (line 39) | public class CatalystUIManagerTestCase extends ReactIntegrationTestCase {
    type UIManagerTestModule (line 40) | private interface UIManagerTestModule extends JavaScriptModule {
      method renderFlexTestApplication (line 41) | void renderFlexTestApplication(int rootTag);
      method renderFlexWithTextApplication (line 42) | void renderFlexWithTextApplication(int rootTag);
      method renderAbsolutePositionTestApplication (line 43) | void renderAbsolutePositionTestApplication(int rootTag);
      method renderAbsolutePositionBottomRightTestApplication (line 44) | void renderAbsolutePositionBottomRightTestApplication(int rootTag);
      method renderCenteredTextViewTestApplication (line 45) | void renderCenteredTextViewTestApplication(int rootTag, String text);
      method renderUpdatePositionInListTestApplication (line 46) | void renderUpdatePositionInListTestApplication(int rootTag);
      method flushUpdatePositionInList (line 47) | void flushUpdatePositionInList();
    method inPixelRounded (line 53) | private int inPixelRounded(int val) {
    method isWithinRange (line 57) | private boolean isWithinRange(float value, float lower, float upper) {
    method createRootView (line 61) | private ReactRootView createRootView() {
    method setUp (line 73) | @Override
    method testFlexUIRendered (line 101) | public void testFlexUIRendered() {
    method testAbsolutePositionUIRendered (line 163) | public void testAbsolutePositionUIRendered() {
    method testUpdatePositionInList (line 177) | public void testUpdatePositionInList() {
    method testAbsolutePositionBottomRightUIRendered (line 206) | public void testAbsolutePositionBottomRightUIRendered() {
    method _testCenteredText (line 222) | public void _testCenteredText(String text) {
    method testCenteredTextCases (line 245) | public void testCenteredTextCases() {

FILE: ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java
  class DatePickerDialogTestCase (line 33) | public class DatePickerDialogTestCase extends ReactAppInstrumentationTes...
    type DatePickerDialogTestModule (line 35) | private static interface DatePickerDialogTestModule extends JavaScript...
      method showDatePickerDialog (line 36) | public void showDatePickerDialog(WritableMap options);
    class DatePickerDialogRecordingModule (line 39) | private static class DatePickerDialogRecordingModule extends BaseJavaM...
      method getName (line 45) | @Override
      method recordDate (line 50) | @ReactMethod
      method recordDismissed (line 55) | @ReactMethod
      method recordError (line 60) | @ReactMethod
      method getDates (line 65) | public List<Integer[]> getDates() {
      method getDismissed (line 69) | public int getDismissed() {
Copy disabled (too large) Download .json
Condensed preview — 2756 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,651K chars).
[
  {
    "path": ".buckconfig",
    "chars": 203,
    "preview": "\n[android]\n  target = Google Inc.:Google APIs:23\n\n[download]\n  max_number_of_retries = 3\n\n[maven_repositories]\n  central"
  },
  {
    "path": ".circleci/config.yml",
    "chars": 10408,
    "preview": "aliases:\n  - &restore-node-cache\n    keys:\n      - v1-dependencies-{{ arch }}-{{ checksum \"package.json\" }}\n      # Fall"
  },
  {
    "path": ".editorconfig",
    "chars": 263,
    "preview": "# EditorConfig is awesome: http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines with"
  },
  {
    "path": ".eslintignore",
    "chars": 175,
    "preview": "# node_modules ignored by default\n\n**/staticBundle.js\n**/main.js\nLibraries/vendor/**/*\nLibraries/Renderer/*\npr-inactivit"
  },
  {
    "path": ".eslintrc",
    "chars": 16280,
    "preview": "{\n  \"root\": true,\n\n  \"parser\": \"babel-eslint\",\n\n  \"ecmaFeatures\": {\n    \"jsx\": true\n  },\n\n  \"env\": {\n    \"es6\": true,\n  "
  },
  {
    "path": ".flowconfig",
    "chars": 1561,
    "preview": "[ignore]\n; We fork some components by platform\n.*/*[.]android.js\n.*/*[.]ios.js\n\n; Ignore templates for 'react-native ini"
  },
  {
    "path": ".gitattributes",
    "chars": 281,
    "preview": "# Force LF line endings for Bash scripts.   On Windows the rest of the source\n# files will typically have CR+LF endings "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.md",
    "chars": 512,
    "preview": "---\nname: 🐛 Bug report\nlabels: \"bug\"\nabout: Create a report to help us improve\n---\n\n## 🐛 Bug Report\n\n(A clear and concis"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "chars": 320,
    "preview": "---\nname: 🚀 Feature Proposal\nlabels: \"proposal\"\nabout: Submit a proposal for a new feature\n---\n\n## 🚀 Feature Proposal\n\n("
  },
  {
    "path": ".gitignore",
    "chars": 872,
    "preview": "# Xcode\n!**/*.xcodeproj\n!**/*.pbxproj\n!**/*.xcworkspacedata\n!**/*.xcsettings\n!**/*.xcscheme\n*.pbxuser\n!default.pbxuser\n*"
  },
  {
    "path": ".npmignore",
    "chars": 74,
    "preview": "# rnpm\n/local-cli/rnpm\n/local-cli/server/middleware/heapCapture/bundle.js\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5578,
    "preview": "# [Open Source Code of Conduct](https://code.facebook.com/codeofconduct)\n\nThis code of conduct outlines our expectations"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 14903,
    "preview": "# Contributing to React Native\n\n<!-- generated_contributing_start -->\nReact Native is one of Facebook's first open sourc"
  },
  {
    "path": "ContainerShip/Dockerfile.android",
    "chars": 1725,
    "preview": "FROM hramos/android-base:latest\n\n# set default environment variables\nENV GRADLE_OPTS=\"-Dorg.gradle.daemon=false -Dorg.gr"
  },
  {
    "path": "ContainerShip/Dockerfile.android-base",
    "chars": 2370,
    "preview": "FROM library/ubuntu:16.04\n\n# set default build arguments\nARG ANDROID_TOOLS_VERSION=25.2.5\nARG BUCK_VERSION=v2017.11.16.0"
  },
  {
    "path": "ContainerShip/Dockerfile.javascript",
    "chars": 338,
    "preview": "FROM library/node:6.9.2\n\nENV YARN_VERSION=0.27.5\n\n# install dependencies\nRUN apt-get update && apt-get install ocaml lib"
  },
  {
    "path": "ContainerShip/scripts/run-android-ci-instrumentation-tests.js",
    "chars": 4832,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "ContainerShip/scripts/run-android-docker-instrumentation-tests.sh",
    "chars": 1197,
    "preview": "#!/bin/bash\n\n# for buck gen\nmount -o remount,exec /dev/shm\n\nAVD_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8"
  },
  {
    "path": "ContainerShip/scripts/run-android-docker-unit-tests.sh",
    "chars": 265,
    "preview": "#!/bin/bash\n\n# set default environment variables\nUNIT_TESTS_BUILD_THREADS=\"${UNIT_TESTS_BUILD_THREADS:-1}\"\n\n# for buck g"
  },
  {
    "path": "ContainerShip/scripts/run-ci-e2e-tests.sh",
    "chars": 6544,
    "preview": "#!/bin/bash\n\nset -ex\n\n# set default environment variables\nROOT=$(pwd)\nSCRIPTS=$(pwd)/scripts\n\nRUN_ANDROID=0\nRUN_CLI_INST"
  },
  {
    "path": "ContainerShip/scripts/run-instrumentation-tests-via-adb-shell.sh",
    "chars": 1652,
    "preview": "#!/bin/bash\n\n# Python script to run instrumentation tests, copied from https://github.com/circleci/circle-dummy-android\n"
  },
  {
    "path": "DockerTests.md",
    "chars": 5500,
    "preview": "# Dockerfile Tests\n\nThis is a high level overview of the test configuration using docker. It explains how to run the tes"
  },
  {
    "path": "IntegrationTests/AccessibilityManagerTest.js",
    "chars": 1480,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/AppEventsTest.js",
    "chars": 1778,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/AsyncStorageTest.js",
    "chars": 6580,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/ImageCachePolicyTest.js",
    "chars": 3452,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/ImageSnapshotTest.js",
    "chars": 1111,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/IntegrationTestHarnessTest.js",
    "chars": 2261,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/IntegrationTestsApp.js",
    "chars": 2998,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/LayoutEventsTest.js",
    "chars": 5058,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/LoggingTestModule.js",
    "chars": 1085,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/PromiseTest.js",
    "chars": 1898,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/PropertiesUpdateTest.js",
    "chars": 806,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/RCTRootViewIntegrationTestApp.js",
    "chars": 2221,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/ReactContentSizeUpdateTest.js",
    "chars": 2002,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/SimpleSnapshotTest.js",
    "chars": 1630,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/SizeFlexibilityUpdateTest.js",
    "chars": 2357,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/SyncMethodTest.js",
    "chars": 1090,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/TimersTest.js",
    "chars": 4604,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/WebSocketTest.js",
    "chars": 3853,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/WebViewTest.js",
    "chars": 1808,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "IntegrationTests/launchWebSocketServer.command",
    "chars": 542,
    "preview": "#!/usr/bin/env bash\n\n# Copyright (c) 2015-present, Facebook, Inc.\n# All rights reserved.\n#\n# This source code is license"
  },
  {
    "path": "IntegrationTests/websocket_integration_test_server.js",
    "chars": 1247,
    "preview": "#!/usr/bin/env node\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is"
  },
  {
    "path": "Jenkinsfile",
    "chars": 7114,
    "preview": "import groovy.json.JsonSlurperClassic\n\ndef runPipeline() {\n    try {\n        ansiColor('xterm') {\n            runStages("
  },
  {
    "path": "LICENSE",
    "chars": 1080,
    "preview": "MIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obt"
  },
  {
    "path": "LICENSE-docs",
    "chars": 18525,
    "preview": "Attribution 4.0 International\n\n=======================================================================\n\nCreative Commons"
  },
  {
    "path": "Libraries/.eslintrc",
    "chars": 144,
    "preview": "{\n  \"rules\": {\n    // This folder currently runs through babel and doesn't need to be\n    // compatible with node 4\n    "
  },
  {
    "path": "Libraries/ART/ART.xcodeproj/project.pbxproj",
    "chars": 26925,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Libraries/ART/ARTCGFloatArray.h",
    "chars": 748,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTContainer.h",
    "chars": 531,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTGroup.h",
    "chars": 490,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTGroup.m",
    "chars": 580,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTNode.h",
    "chars": 1016,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTNode.m",
    "chars": 2135,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTRenderable.h",
    "chars": 765,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTRenderable.m",
    "chars": 1924,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTSerializablePath.js",
    "chars": 1707,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTShape.h",
    "chars": 458,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTShape.m",
    "chars": 1555,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTSurfaceView.h",
    "chars": 419,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTSurfaceView.m",
    "chars": 1272,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTText.h",
    "chars": 550,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTText.m",
    "chars": 3356,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ARTTextFrame.h",
    "chars": 953,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTBrush.h",
    "chars": 1027,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTBrush.m",
    "chars": 628,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTLinearGradient.h",
    "chars": 378,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTLinearGradient.m",
    "chars": 1304,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTPattern.h",
    "chars": 371,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTPattern.m",
    "chars": 1188,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTRadialGradient.h",
    "chars": 378,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTRadialGradient.m",
    "chars": 1713,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTSolidColor.h",
    "chars": 374,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/Brushes/ARTSolidColor.m",
    "chars": 808,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/RCTConvert+ART.h",
    "chars": 908,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/RCTConvert+ART.m",
    "chars": 7163,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ReactNativeART.js",
    "chars": 15406,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTGroupManager.h",
    "chars": 388,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTGroupManager.m",
    "chars": 539,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTNodeManager.h",
    "chars": 430,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTNodeManager.m",
    "chars": 656,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTRenderableManager.h",
    "chars": 445,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTRenderableManager.m",
    "chars": 776,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTShapeManager.h",
    "chars": 400,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTShapeManager.m",
    "chars": 538,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTSurfaceViewManager.h",
    "chars": 400,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTSurfaceViewManager.m",
    "chars": 491,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTTextManager.h",
    "chars": 399,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ART/ViewManagers/ARTTextManager.m",
    "chars": 607,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ActionSheetIOS/ActionSheetIOS.js",
    "chars": 3712,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj/project.pbxproj",
    "chars": 7659,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Libraries/ActionSheetIOS/RCTActionSheetManager.h",
    "chars": 432,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/ActionSheetIOS/RCTActionSheetManager.m",
    "chars": 7219,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Alert/Alert.js",
    "chars": 3564,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Alert/AlertIOS.js",
    "chars": 4649,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Alert/RCTAlertManager.android.js",
    "chars": 701,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Alert/RCTAlertManager.ios.js",
    "chars": 467,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/examples/demo.html",
    "chars": 23739,
    "preview": "\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>\n    <title>Anim"
  },
  {
    "path": "Libraries/Animated/examples/style.css",
    "chars": 1116,
    "preview": "html, h1, h2 {\n font-family: 'Roboto', sans-serif;\n font-weight: 300;\n}\n\n.container {\n  width: 800px;\n  margin: 0 auto;\n"
  },
  {
    "path": "Libraries/Animated/release/gulpfile.js",
    "chars": 3992,
    "preview": "/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-styl"
  },
  {
    "path": "Libraries/Animated/release/package.json",
    "chars": 771,
    "preview": "{\n  \"name\": \"react-animated\",\n  \"description\": \"Animated provides powerful mechanisms for animating your React views\",\n "
  },
  {
    "path": "Libraries/Animated/src/Animated.js",
    "chars": 1142,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/AnimatedEvent.js",
    "chars": 5343,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/AnimatedImplementation.js",
    "chars": 18708,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/AnimatedWeb.js",
    "chars": 671,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/Easing.js",
    "chars": 6504,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/NativeAnimatedHelper.js",
    "chars": 7751,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/SpringConfig.js",
    "chars": 2419,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/__tests__/Animated-test.js",
    "chars": 23950,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/__tests__/AnimatedNative-test.js",
    "chars": 24479,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/__tests__/Easing-test.js",
    "chars": 8862,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/__tests__/Interpolation-test.js",
    "chars": 10011,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/__tests__/bezier-test.js",
    "chars": 3673,
    "preview": "/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n *\n * @cop"
  },
  {
    "path": "Libraries/Animated/src/animations/Animation.js",
    "chars": 2178,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/animations/DecayAnimation.js",
    "chars": 2995,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/animations/SpringAnimation.js",
    "chars": 11142,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/animations/TimingAnimation.js",
    "chars": 4454,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/bezier.js",
    "chars": 3606,
    "preview": "/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n *\n * @cop"
  },
  {
    "path": "Libraries/Animated/src/createAnimatedComponent.js",
    "chars": 6469,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedAddition.js",
    "chars": 1695,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedDiffClamp.js",
    "chars": 1766,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedDivision.js",
    "chars": 1824,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedInterpolation.js",
    "chars": 11005,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedModulo.js",
    "chars": 1490,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedMultiplication.js",
    "chars": 1719,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedNode.js",
    "chars": 2000,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedProps.js",
    "chars": 4271,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedStyle.js",
    "chars": 3682,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedTracking.js",
    "chars": 1558,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedTransform.js",
    "chars": 3067,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedValue.js",
    "chars": 10171,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedValueXY.js",
    "chars": 6025,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/nodes/AnimatedWithChildren.js",
    "chars": 1950,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/polyfills/InteractionManager.js",
    "chars": 429,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/polyfills/Set.js",
    "chars": 595,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Animated/src/polyfills/flattenStyle.js",
    "chars": 377,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/AppState/AppState.js",
    "chars": 4786,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/BatchedBridge.js",
    "chars": 1899,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/MessageQueue.js",
    "chars": 11889,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/NativeModules.js",
    "chars": 5599,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js",
    "chars": 653,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js",
    "chars": 643,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/__tests__/MessageQueue-test.js",
    "chars": 6248,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BatchedBridge/__tests__/NativeModules-test.js",
    "chars": 4321,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Blob/Blob.js",
    "chars": 4430,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Blob/BlobTypes.js",
    "chars": 546,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Blob/RCTBlob.xcodeproj/project.pbxproj",
    "chars": 11856,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Libraries/Blob/RCTBlobManager.h",
    "chars": 495,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Blob/RCTBlobManager.m",
    "chars": 5618,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Blob/URL.js",
    "chars": 1860,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BugReporting/BugReporting.js",
    "chars": 4333,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BugReporting/dumpReactTree.js",
    "chars": 3779,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/BugReporting/getReactData.js",
    "chars": 5138,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/CameraRoll.js",
    "chars": 10384,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/ImagePickerIOS.js",
    "chars": 1234,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTAssetsLibraryRequestHandler.h",
    "chars": 654,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTAssetsLibraryRequestHandler.m",
    "chars": 3460,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTCameraRoll.xcodeproj/project.pbxproj",
    "chars": 11053,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Libraries/CameraRoll/RCTCameraRollManager.h",
    "chars": 621,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTCameraRollManager.m",
    "chars": 9222,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTImagePickerManager.h",
    "chars": 412,
    "preview": "/*\n *  Copyright (c) 2013, Facebook, Inc.\n *  All rights reserved.\n *\n *  This source code is licensed under the BSD-sty"
  },
  {
    "path": "Libraries/CameraRoll/RCTImagePickerManager.m",
    "chars": 5853,
    "preview": "/*\n *  Copyright (c) 2013, Facebook, Inc.\n *  All rights reserved.\n *\n *  This source code is licensed under the BSD-sty"
  },
  {
    "path": "Libraries/CameraRoll/RCTPhotoLibraryImageLoader.h",
    "chars": 419,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/CameraRoll/RCTPhotoLibraryImageLoader.m",
    "chars": 4326,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js",
    "chars": 1926,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js",
    "chars": 4149,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AccessibilityInfo/AccessibilityInfo.macos.js",
    "chars": 3432,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/ActivityIndicator/ActivityIndicator.js",
    "chars": 3992,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AppleTV/TVEventHandler.android.js",
    "chars": 569,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AppleTV/TVEventHandler.ios.js",
    "chars": 1451,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AppleTV/TVEventHandler.macos.js",
    "chars": 569,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/AppleTV/TVViewPropTypes.js",
    "chars": 2564,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Button.js",
    "chars": 7020,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/CheckBox/CheckBox.android.js",
    "chars": 4383,
    "preview": "/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/CheckBox/CheckBox.ios.js",
    "chars": 422,
    "preview": "/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/CheckBox/CheckBox.macos.js",
    "chars": 422,
    "preview": "/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Clipboard/Clipboard.js",
    "chars": 1196,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Cursor/Cursor.macos.js",
    "chars": 2051,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DatePicker/DatePickerIOS.macos.js",
    "chars": 5362,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js",
    "chars": 3032,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js",
    "chars": 601,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DatePickerAndroid/DatePickerAndroid.macos.js",
    "chars": 645,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js",
    "chars": 9583,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.macos.js",
    "chars": 413,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Intent/IntentAndroid.macos.js",
    "chars": 474,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Keyboard/Keyboard.ios.js",
    "chars": 5008,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Keyboard/Keyboard.macos.js",
    "chars": 411,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Keyboard/KeyboardAvoidingView.js",
    "chars": 6169,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/LazyRenderer.js",
    "chars": 1077,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/MaskedView/MaskedViewIOS.android.js",
    "chars": 416,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/MaskedView/MaskedViewIOS.ios.js",
    "chars": 3039,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/MaskedView/MaskedViewIOS.macos.js",
    "chars": 3039,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Navigation/NavigatorIOS.ios.js",
    "chars": 28784,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Navigation/NavigatorIOS.macos.js",
    "chars": 415,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Picker/Picker.js",
    "chars": 4506,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Picker/PickerAndroid.android.js",
    "chars": 4866,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Picker/PickerAndroid.ios.js",
    "chars": 407,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Picker/PickerIOS.android.js",
    "chars": 464,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/Picker/PickerIOS.ios.js",
    "chars": 4017,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  },
  {
    "path": "Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js",
    "chars": 3045,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
  }
]

// ... and 2556 more files (download for full content)

About this extraction

This page contains the full source code of the ptmt/react-native-macos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2756 files (11.4 MB), approximately 3.1M tokens, and a symbol index with 9892 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!