From 195d155c7013bd7cba993709c6edbd1957a0577f Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Tue, 10 Mar 2020 22:08:17 +0100
Subject: [PATCH 01/15] Fast lite mode (#129)

* added lite file page
* update splash logic
* updates to navigation handling for lite mode
* update packages
* show firebase token on About page
* handle additional params for notifiication cold start
* handle opening urls in lite mode
---
 android                               |   2 +-
 bundle-android.sh                     |   1 -
 package.json                          |   6 +-
 src/component/AppNavigator.js         |  22 +-
 src/component/claimResultItem/view.js |   8 +-
 src/component/mediaPlayer/view.js     |  14 +-
 src/component/relatedContent/index.js |  13 +-
 src/component/relatedContent/view.js  |   3 +-
 src/component/uriBar/view.js          |  32 ++-
 src/constants.js                      |   1 +
 src/index.js                          |   1 +
 src/page/about/view.js                |  25 +-
 src/page/liteFile/index.js            |  31 +++
 src/page/liteFile/view.js             | 289 ++++++++++++++++++++++
 src/page/splash/index.js              |   9 +-
 src/page/splash/view.js               | 134 ++++++++--
 src/redux/reducers/drawer.js          |   5 +-
 src/utils/helper.js                   |   4 +
 yarn.lock                             | 341 +++++++++++++-------------
 19 files changed, 713 insertions(+), 228 deletions(-)
 create mode 100644 src/page/liteFile/index.js
 create mode 100644 src/page/liteFile/view.js

diff --git a/android b/android
index 37b8931..b7b6c05 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit 37b893103da874282f2bdef4a8a1bb543d2c9859
+Subproject commit b7b6c05bd3a61c1cec09a08f1b5c413a68597026
diff --git a/bundle-android.sh b/bundle-android.sh
index 49e6ba1..37d41d4 100644
--- a/bundle-android.sh
+++ b/bundle-android.sh
@@ -1,3 +1,2 @@
 #!/bin/bash
 react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
-
diff --git a/package.json b/package.json
index 36a313e..570c0e9 100644
--- a/package.json
+++ b/package.json
@@ -15,8 +15,8 @@
     "base-64": "^0.1.0",
     "@expo/vector-icons": "^8.1.0",
     "gfycat-style-urls": "^1.0.3",
-    "lbry-redux": "lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee",
-    "lbryinc": "lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676",
+    "lbry-redux": "lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047",
+    "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e",
     "lodash": ">=4.17.11",
     "merge": ">=1.2.1",
     "moment": "^2.22.1",
@@ -77,7 +77,7 @@
     "flow-babel-webpack-plugin": "^1.1.1",
     "husky": "^0.14.3",
     "lint-staged": "^7.0.4",
-    "metro-react-native-babel-preset": "^0.58.0",
+    "metro-react-native-babel-preset": "0.56.3",
     "prettier": "^1.11.1",
     "@react-native-community/eslint-config": "^0.0.5",
     "react-devtools": "^3.6.3",
diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js
index d119198..1154c58 100644
--- a/src/component/AppNavigator.js
+++ b/src/component/AppNavigator.js
@@ -5,6 +5,7 @@ import DiscoverPage from 'page/discover';
 import DownloadsPage from 'page/downloads';
 import DrawerContent from 'component/drawerContent';
 import FilePage from 'page/file';
+import LiteFilePage from 'page/liteFile';
 import FirstRunScreen from 'page/firstRun';
 import InvitesPage from 'page/invites';
 import PublishPage from 'page/publish';
@@ -19,7 +20,7 @@ import SubscriptionsPage from 'page/subscriptions';
 import TransactionHistoryPage from 'page/transactionHistory';
 import VerificationScreen from 'page/verification';
 import WalletPage from 'page/wallet';
-import { NavigationActions } from 'react-navigation';
+import { NavigationActions, StackActions } from 'react-navigation';
 import { createDrawerNavigator } from 'react-navigation-drawer';
 import { createStackNavigator } from 'react-navigation-stack';
 import {
@@ -30,6 +31,7 @@ import {
 import { connect } from 'react-redux';
 import {
   AppState,
+  Alert,
   BackHandler,
   DeviceEventEmitter,
   Linking,
@@ -76,16 +78,6 @@ import Snackbar from 'react-native-snackbar';
 
 const SYNC_GET_INTERVAL = 1000 * 60 * 5; // every 5 minutes
 
-const menuNavigationButton = navigation => (
-  <NavigationButton
-    name="bars"
-    size={24}
-    style={discoverStyle.drawerMenuButton}
-    iconStyle={discoverStyle.drawerHamburger}
-    onPress={() => navigation.openDrawer()}
-  />
-);
-
 const discoverStack = createStackNavigator(
   {
     Subscriptions: {
@@ -278,6 +270,12 @@ const mainStackNavigator = new createStackNavigator(
         drawerLockMode: 'locked-closed',
       },
     },
+    LiteFile: {
+      screen: LiteFilePage,
+      navigationOptions: {
+        drawerLockMode: 'locked-closed',
+      },
+    },
   },
   {
     headerMode: 'none',
@@ -314,6 +312,8 @@ class AppWithNavigationState extends React.Component {
       'hardwareBackPress',
       function() {
         const { dispatch, nav, drawerStack } = this.props;
+        console.log(nav);
+
         if (drawerStack.length > 1) {
           dispatchNavigateBack(dispatch, nav, drawerStack);
           return true;
diff --git a/src/component/claimResultItem/view.js b/src/component/claimResultItem/view.js
index 576f323..c34a1fb 100644
--- a/src/component/claimResultItem/view.js
+++ b/src/component/claimResultItem/view.js
@@ -39,10 +39,14 @@ class ClaimResultItem extends React.PureComponent {
   }
 
   onPressHandler = () => {
-    const { autoplay, navigation, result, setPlayerVisible } = this.props;
+    const { autoplay, navigation, result, urlOpenHandler, setPlayerVisible } = this.props;
     const { claimId, name } = result;
     const url = normalizeURI(`${name}#${claimId}`);
-    navigateToUri(navigation, url, { autoplay }, false, url, setPlayerVisible);
+    if (urlOpenHandler) {
+      urlOpenHandler(url);
+    } else {
+      navigateToUri(navigation, url, { autoplay }, false, url, setPlayerVisible);
+    }
   };
 
   render() {
diff --git a/src/component/mediaPlayer/view.js b/src/component/mediaPlayer/view.js
index e9e0acf..0d67dfb 100644
--- a/src/component/mediaPlayer/view.js
+++ b/src/component/mediaPlayer/view.js
@@ -36,7 +36,7 @@ class MediaPlayer extends React.PureComponent {
   constructor(props) {
     super(props);
     this.state = {
-      buffering: false,
+      buffering: true,
       backgroundPlayEnabled: false,
       autoPaused: false,
       rate: 1,
@@ -45,9 +45,9 @@ class MediaPlayer extends React.PureComponent {
       resizeMode: 'contain',
       duration: 0.0,
       currentTime: 0.0,
-      paused: !props.autoPlay,
+      paused: true,
       fullscreenMode: false,
-      areControlsVisible: true,
+      areControlsVisible: false,
       controlsTimeout: -1,
       seekerOffset: 0,
       seekerPosition: 0,
@@ -87,7 +87,9 @@ class MediaPlayer extends React.PureComponent {
   }
 
   onLoad = data => {
+    const { autoPlay } = this.props;
     this.setState({
+      buffering: false,
       duration: data.duration,
     });
 
@@ -100,13 +102,17 @@ class MediaPlayer extends React.PureComponent {
     if (this.props.onMediaLoaded) {
       this.props.onMediaLoaded();
     }
+
+    if (autoPlay) {
+      this.setState({ paused: false });
+    }
   };
 
   onProgress = data => {
     const { savePosition, claim } = this.props;
 
     this.setState({ buffering: false, currentTime: data.currentTime });
-    if (data.currentTime > 0 && Math.floor(data.currentTime) % positionSaveInterval === 0) {
+    if (claim && data.currentTime > 0 && Math.floor(data.currentTime) % positionSaveInterval === 0) {
       const { claim_id: claimId, txid, nout } = claim;
       savePosition(claimId, `${txid}:${nout}`, data.currentTime);
     }
diff --git a/src/component/relatedContent/index.js b/src/component/relatedContent/index.js
index bdd266f..f2fd0ac 100644
--- a/src/component/relatedContent/index.js
+++ b/src/component/relatedContent/index.js
@@ -15,7 +15,13 @@ const RESULT_SIZE = 16;
 const select = (state, props) => ({
   claim: makeSelectClaimForUri(props.uri)(state),
   isSearching: selectIsSearching(state),
-  recommendedContent: makeSelectResolvedRecommendedContentForUri(props.uri, RESULT_SIZE)(state),
+  recommendedContent: makeSelectResolvedRecommendedContentForUri(
+    props.uri,
+    RESULT_SIZE,
+    props.claimId,
+    props.claimName,
+    props.title,
+  )(state),
   resolvingUris: selectResolvingUris(state),
   showNsfwContent: selectShowNsfw(state),
 });
@@ -26,7 +32,4 @@ const perform = dispatch => ({
     dispatch(doResolvedSearch(query, RESULT_SIZE, undefined, true, { related_to: claimId }, nsfw)),
 });
 
-export default connect(
-  select,
-  perform,
-)(RelatedContent);
+export default connect(select, perform)(RelatedContent);
diff --git a/src/component/relatedContent/view.js b/src/component/relatedContent/view.js
index d98241c..1b20f9c 100644
--- a/src/component/relatedContent/view.js
+++ b/src/component/relatedContent/view.js
@@ -22,7 +22,7 @@ export default class RelatedContent extends React.PureComponent {
   }
 
   render() {
-    const { isSearching, recommendedContent, navigation, uri, fullUri } = this.props;
+    const { isSearching, recommendedContent, navigation, urlOpenHandler, uri, fullUri } = this.props;
 
     return (
       <View style={relatedContentStyle.container}>
@@ -33,6 +33,7 @@ export default class RelatedContent extends React.PureComponent {
             <ClaimResultItem
               style={fileListStyle.item}
               uri={result ? normalizeURI(`${result.name}#${result.claimId}`) : null}
+              urlOpenHandler={urlOpenHandler}
               key={result.claimId}
               result={result}
               navigation={navigation}
diff --git a/src/component/uriBar/view.js b/src/component/uriBar/view.js
index 46554cc..f41d80e 100644
--- a/src/component/uriBar/view.js
+++ b/src/component/uriBar/view.js
@@ -1,13 +1,14 @@
 // @flow
 import React from 'react';
 import { SEARCH_TYPES, isNameValid, isURIValid, normalizeURI } from 'lbry-redux';
-import { Dimensions, FlatList, Keyboard, Text, TextInput, TouchableOpacity, View } from 'react-native';
+import { Alert, Dimensions, FlatList, Keyboard, Text, TextInput, TouchableOpacity, View } from 'react-native';
 import { navigateToUri, transformUrl } from 'utils/helper';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import UriBarItem from './internal/uri-bar-item';
 import Icon from 'react-native-vector-icons/FontAwesome5';
 import NavigationButton from 'component/navigationButton';
 import uriBarStyle from 'styles/uriBar';
+import { NavigationActions, StackActions } from 'react-navigation';
 
 class UriBar extends React.PureComponent {
   static INPUT_TIMEOUT = 2500; // 2.5 seconds
@@ -183,6 +184,33 @@ class UriBar extends React.PureComponent {
     });
   };
 
+  handleNavigationButtonPress = () => {
+    const { navigation } = this.props;
+    if (!navigation.openDrawer) {
+      Alert.alert(
+        __('Stop watching?'),
+        'The LBRY service is still loading stuff in the background. Would you like to continue?',
+        [
+          { text: __('No') },
+          {
+            text: __('Yes'),
+            onPress: () => {
+              const resetAction = StackActions.reset({
+                index: 0,
+                actions: [
+                  NavigationActions.navigate({ routeName: 'Splash', params: { resetUrl: 'lbry://?subscriptions' } }),
+                ],
+              });
+              navigation.dispatch(resetAction);
+            },
+          },
+        ],
+      );
+    } else {
+      navigation.openDrawer();
+    }
+  };
+
   render() {
     const {
       allowEdit,
@@ -262,7 +290,7 @@ class UriBar extends React.PureComponent {
               size={24}
               style={uriBarStyle.drawerMenuButton}
               iconStyle={uriBarStyle.drawerHamburger}
-              onPress={() => navigation.openDrawer()}
+              onPress={this.handleNavigationButtonPress}
             />
           )}
           {!selectionMode && (
diff --git a/src/constants.js b/src/constants.js
index 37aa7fb..bf019b5 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -93,6 +93,7 @@ const Constants = {
   DRAWER_ROUTE_CHANNEL_CREATOR: 'ChannelCreator',
   DRAWER_ROUTE_CHANNEL_CREATOR_FORM: 'ChannnelCreatorForm',
   DRAWER_ROUTE_INVITES: 'Invites',
+  DRAWER_ROUTE_LITE_FILE: 'LiteFile',
 
   FULL_ROUTE_NAME_DISCOVER: 'DiscoverStack',
   FULL_ROUTE_NAME_WALLET: 'WalletStack',
diff --git a/src/index.js b/src/index.js
index 5a52168..f64e3e5 100644
--- a/src/index.js
+++ b/src/index.js
@@ -58,6 +58,7 @@ window.__ = __;
 
 const globalExceptionHandler = (error, isFatal) => {
   if (error && NativeModules.Firebase) {
+    console.log(error);
     NativeModules.Firebase.logException(!!isFatal, error.message ? error.message : 'No message', JSON.stringify(error));
   }
 };
diff --git a/src/page/about/view.js b/src/page/about/view.js
index 6616869..ce00c80 100644
--- a/src/page/about/view.js
+++ b/src/page/about/view.js
@@ -10,6 +10,7 @@ import aboutStyle from 'styles/about';
 class AboutPage extends React.PureComponent {
   state = {
     appVersion: null,
+    firebaseToken: null,
     lbryId: null,
     versionInfo: null,
   };
@@ -45,11 +46,12 @@ class AboutPage extends React.PureComponent {
     setPlayerVisible();
 
     NativeModules.Firebase.setCurrentScreen('About').then(result => {
-      if (NativeModules.VersionInfo) {
-        NativeModules.VersionInfo.getAppVersion().then(version => {
-          this.setState({ appVersion: version });
-        });
-      }
+      NativeModules.VersionInfo.getAppVersion().then(version => {
+        this.setState({ appVersion: version });
+      });
+      NativeModules.Firebase.getMessagingToken().then(firebaseToken => {
+        this.setState({ firebaseToken });
+      });
       Lbry.version().then(info => {
         this.setState({
           versionInfo: info,
@@ -77,7 +79,7 @@ class AboutPage extends React.PureComponent {
           <Text style={aboutStyle.title}>{__('Content Freedom')}</Text>
           <Text style={aboutStyle.paragraph}>
             {__(
-              'LBRY is a free, open, and community-run digital marketplace. It is a decentralized peer-to-peer content distribution platform for creators to upload and share content, and earn LBRY credits for their effort. Users will be able to find a wide selection of videos, music, ebooks and other digital content they are interested in.'
+              'LBRY is a free, open, and community-run digital marketplace. It is a decentralized peer-to-peer content distribution platform for creators to upload and share content, and earn LBRY credits for their effort. Users will be able to find a wide selection of videos, music, ebooks and other digital content they are interested in.',
             )}
           </Text>
           <View style={aboutStyle.links}>
@@ -88,7 +90,7 @@ class AboutPage extends React.PureComponent {
           <Text style={aboutStyle.socialTitle}>{__('Get Social')}</Text>
           <Text style={aboutStyle.paragraph}>
             {__(
-              'You can interact with the LBRY team and members of the community on Discord, Facebook, Instagram, Twitter or Reddit.'
+              'You can interact with the LBRY team and members of the community on Discord, Facebook, Instagram, Twitter or Reddit.',
             )}
           </Text>
           <View style={aboutStyle.links}>
@@ -164,6 +166,15 @@ class AboutPage extends React.PureComponent {
             </View>
           </View>
 
+          <View style={aboutStyle.row}>
+            <View style={aboutStyle.col}>
+              <Text style={aboutStyle.text}>{__('Firebase Token')}</Text>
+              <Text selectable style={aboutStyle.lineValueText}>
+                {this.state.firebaseToken ? this.state.firebaseToken : loading}
+              </Text>
+            </View>
+          </View>
+
           <View style={aboutStyle.row}>
             <View style={aboutStyle.col}>
               <Text style={aboutStyle.text}>{__('Logs')}</Text>
diff --git a/src/page/liteFile/index.js b/src/page/liteFile/index.js
new file mode 100644
index 0000000..49b4570
--- /dev/null
+++ b/src/page/liteFile/index.js
@@ -0,0 +1,31 @@
+import { connect } from 'react-redux';
+import { makeSelectContentPositionForUri, selectBalance } from 'lbry-redux';
+import { doClaimEligiblePurchaseRewards, makeSelectViewCountForUri, selectRewardContentClaimIds } from 'lbryinc';
+import { doSetPlayerVisible } from 'redux/actions/drawer';
+import { makeSelectPlayerVisible } from 'redux/selectors/drawer';
+import { doToggleFullscreenMode } from 'redux/actions/settings';
+import LiteFilePage from './view';
+
+const select = (state, props) => {
+  const { uri, fullUri } = props.navigation.state.params;
+  const contentUri = fullUri || uri;
+  const selectProps = { uri: contentUri };
+  return {
+    balance: selectBalance(state),
+    isPlayerVisible: makeSelectPlayerVisible(uri)(state), // use navigation uri for this selector
+    position: makeSelectContentPositionForUri(contentUri)(state),
+    viewCount: makeSelectViewCountForUri(contentUri)(state),
+    rewardedContentClaimIds: selectRewardContentClaimIds(state),
+  };
+};
+
+const perform = dispatch => ({
+  claimEligibleRewards: () => dispatch(doClaimEligiblePurchaseRewards()),
+  setPlayerVisible: (visible, uri) => dispatch(doSetPlayerVisible(visible, uri)),
+  toggleFullscreenMode: mode => dispatch(doToggleFullscreenMode(mode)),
+});
+
+export default connect(
+  select,
+  perform,
+)(LiteFilePage);
diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js
new file mode 100644
index 0000000..82cf610
--- /dev/null
+++ b/src/page/liteFile/view.js
@@ -0,0 +1,289 @@
+import React from 'react';
+import { Lbry, formatCredits, normalizeURI, parseURI, parseQueryParams } from 'lbry-redux';
+import { Lbryio } from 'lbryinc';
+import {
+  ActivityIndicator,
+  Alert,
+  DeviceEventEmitter,
+  Dimensions,
+  Image,
+  Linking,
+  NativeModules,
+  Platform,
+  ScrollView,
+  StatusBar,
+  StyleSheet,
+  Text,
+  TextInput,
+  TouchableOpacity,
+  TouchableWithoutFeedback,
+  View,
+} from 'react-native';
+import UriBar from 'component/uriBar';
+import Link from 'component/link';
+import MediaPlayer from 'component/mediaPlayer';
+import RelatedContent from 'component/relatedContent';
+import filePageStyle from 'styles/filePage';
+import { decode, formatLbryUrlForWeb, navigateToUri } from 'utils/helper';
+import Icon from 'react-native-vector-icons/FontAwesome5';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
+import uriBarStyle from 'styles/uriBar';
+import { NavigationActions, StackActions } from 'react-navigation';
+
+// This page will only be used for playing audio / video content from a remote stream URL
+class LiteFilePage extends React.PureComponent {
+  playerBackground = null;
+
+  scrollView = null;
+
+  player = null;
+
+  state = {
+    channelName: null,
+    channelUrl: null,
+    title: null,
+    fullscreenMode: false,
+    playerHeight: null,
+    isLandscape: false,
+    sdkReady: false, // TODO: progressively enable features (e.g. tip) when sdk is ready
+    showRecommended: false,
+    viewCount: 0,
+  };
+
+  checkOrientation = () => {
+    if (this.state.fullscreenMode) {
+      return;
+    }
+
+    const screenDimension = Dimensions.get('window');
+    const screenWidth = screenDimension.width;
+    const screenHeight = screenDimension.height;
+    const isLandscape = screenWidth > screenHeight;
+    this.setState({ isLandscape });
+
+    if (!this.playerBackground) {
+      return;
+    }
+
+    if (isLandscape) {
+      this.playerBackground.setNativeProps({
+        height: screenHeight - StyleSheet.flatten(uriBarStyle.uriContainer).height,
+      });
+    } else if (this.state.playerBgHeight > 0) {
+      this.playerBackground.setNativeProps({ height: this.state.playerBgHeight });
+    }
+  };
+
+  handleFullscreenToggle = isFullscreen => {
+    const { toggleFullscreenMode } = this.props;
+    toggleFullscreenMode(isFullscreen);
+
+    if (isFullscreen) {
+      // fullscreen, so change orientation to landscape mode
+      NativeModules.ScreenOrientation.lockOrientationLandscape();
+
+      // hide the navigation bar (on devices that have the soft navigation bar)
+      NativeModules.UtilityModule.hideNavigationBar();
+    } else {
+      // Switch back to portrait mode when the media is not fullscreen
+      NativeModules.ScreenOrientation.lockOrientationPortrait();
+
+      // show the navigation bar (on devices that have the soft navigation bar)
+      NativeModules.UtilityModule.showNavigationBar();
+    }
+
+    this.setState({ fullscreenMode: isFullscreen });
+    StatusBar.setHidden(isFullscreen);
+  };
+
+  getStreamUrl = url => {
+    const { claimName, claimId } = parseURI(url);
+    return `https://player.lbry.tv/content/claims/${claimName}/${claimId}/stream`;
+  };
+
+  handleSharePress = url => {
+    const shareUrl = Constants.SHARE_BASE_URL + formatLbryUrlForWeb(url);
+    NativeModules.UtilityModule.shareUrl(shareUrl);
+  };
+
+  handleOpenUrl = url => {
+    const { navigation } = this.props;
+    Alert.alert(
+      __('Stop watching?'),
+      'The LBRY service is still loading stuff in the background. Would you like to continue?',
+      [
+        { text: __('No') },
+        {
+          text: __('Yes'),
+          onPress: () => {
+            const resetAction = StackActions.reset({
+              index: 0,
+              actions: [NavigationActions.navigate({ routeName: 'Splash', params: { resetUrl: url } })],
+            });
+            navigation.dispatch(resetAction);
+          },
+        },
+      ],
+    );
+  };
+
+  componentDidUpdate() {
+    const { navigation } = this.props;
+    const { uri } = navigation.state.params;
+
+    if (!this.state.title) {
+      const params = parseQueryParams(uri);
+      const { channelUrl, contentTitle } = params;
+      const channelName = channelUrl ? parseURI(decode(channelUrl)).claimName : null;
+
+      this.setState({
+        title: decode(contentTitle),
+        channelUrl,
+        channelName,
+        showRecommended: true,
+      });
+    }
+  }
+
+  render() {
+    const { navigation, rewardedContentClaimIds } = this.props;
+    const { channelName, channelUrl, title, sdkReady, viewCount } = this.state;
+    const { uri } = navigation.state.params;
+    const { claimName, claimId } = parseURI(uri);
+    const isRewardContent = rewardedContentClaimIds.includes(claimId);
+
+    const playerBgStyle = [filePageStyle.playerBackground, filePageStyle.containedPlayerBackground];
+    const fsPlayerBgStyle = [filePageStyle.playerBackground, filePageStyle.fullscreenPlayerBackground];
+
+    const playerStyle = [
+      filePageStyle.player,
+      this.state.isLandscape
+        ? filePageStyle.containedPlayerLandscape
+        : this.state.fullscreenMode
+          ? filePageStyle.fullscreenPlayer
+          : filePageStyle.containedPlayer,
+    ];
+
+    return (
+      <View style={filePageStyle.pageContainer}>
+        {!this.state.fullscreenMode && <UriBar value={uri.split('?')[0]} navigation={navigation} />}
+
+        <View
+          style={this.state.fullscreenMode ? filePageStyle.innerPageContainerFsMode : filePageStyle.innerPageContainer}
+          onLayout={this.checkOrientation}
+        >
+          <TouchableOpacity activeOpacity={0.5} style={filePageStyle.mediaContainer} />
+
+          <View
+            style={playerBgStyle}
+            ref={ref => {
+              this.playerBackground = ref;
+            }}
+            onLayout={evt => {
+              if (!this.state.playerBgHeight) {
+                this.setState({ playerBgHeight: evt.nativeEvent.layout.height });
+              }
+            }}
+          />
+
+          {this.state.fullscreenMode && <View style={fsPlayerBgStyle} />}
+          <MediaPlayer
+            assignPlayer={ref => {
+              this.player = ref;
+            }}
+            uri={uri}
+            source={this.getStreamUrl(uri)}
+            style={playerStyle}
+            autoPlay
+            onFullscreenToggled={this.handleFullscreenToggle}
+            onLayout={evt => {
+              if (!this.state.playerHeight) {
+                this.setState({ playerHeight: evt.nativeEvent.layout.height });
+              }
+            }}
+          />
+
+          <ScrollView
+            style={filePageStyle.scrollContainer}
+            contentContainerStyle={filePageStyle.scrollContent}
+            keyboardShouldPersistTaps={'handled'}
+            ref={ref => {
+              this.scrollView = ref;
+            }}
+          >
+            <TouchableWithoutFeedback
+              style={filePageStyle.titleTouch}
+              onPress={() => this.setState({ showDescription: !this.state.showDescription })}
+            >
+              <View style={filePageStyle.titleArea}>
+                <View style={filePageStyle.titleRow}>
+                  <Text style={filePageStyle.title} selectable>
+                    {title}
+                  </Text>
+                  {isRewardContent && <Icon name="award" style={filePageStyle.rewardIcon} size={16} />}
+                </View>
+                <Text style={filePageStyle.viewCount}>
+                  {viewCount === 1 && __('%view% view', { view: viewCount })}
+                  {viewCount > 1 && __('%view% views', { view: viewCount })}
+                </Text>
+              </View>
+            </TouchableWithoutFeedback>
+
+            <View style={filePageStyle.largeButtonsRow}>
+              <TouchableOpacity style={filePageStyle.largeButton} onPress={() => this.handleSharePress(uri)}>
+                <Icon name={'share-alt'} size={16} style={filePageStyle.largeButtonIcon} />
+                <Text style={filePageStyle.largeButtonText}>{__('Share')}</Text>
+              </TouchableOpacity>
+
+              {sdkReady && (
+                <TouchableOpacity
+                  style={filePageStyle.largeButton}
+                  onPress={() => this.setState({ showTipView: true })}
+                >
+                  <Icon name={'gift'} size={16} style={filePageStyle.largeButtonIcon} />
+                  <Text style={filePageStyle.largeButtonText}>{__('Tip')}</Text>
+                </TouchableOpacity>
+              )}
+            </View>
+
+            <View style={filePageStyle.channelRow}>
+              <View style={filePageStyle.publishInfo}>
+                {channelName && (
+                  <Link
+                    style={filePageStyle.channelName}
+                    selectable
+                    text={channelName}
+                    numberOfLines={1}
+                    ellipsizeMode={'tail'}
+                    onPress={() => this.handleOpenUrl(channelUrl)}
+                  />
+                )}
+                {!channelName && (
+                  <Text style={filePageStyle.anonChannelName} selectable ellipsizeMode={'tail'}>
+                    {__('Anonymous')}
+                  </Text>
+                )}
+              </View>
+            </View>
+
+            <View onLayout={this.setRelatedContentPosition} />
+
+            {this.state.showRecommended && (
+              <RelatedContent
+                navigation={navigation}
+                claimId={claimId}
+                claimName={claimName}
+                title={title}
+                urlOpenHandler={this.handleOpenUrl}
+                uri={uri}
+                fullUri={uri}
+              />
+            )}
+          </ScrollView>
+        </View>
+      </View>
+    );
+  }
+}
+
+export default LiteFilePage;
diff --git a/src/page/splash/index.js b/src/page/splash/index.js
index b764d5c..bfa8aaf 100644
--- a/src/page/splash/index.js
+++ b/src/page/splash/index.js
@@ -2,6 +2,8 @@ import { connect } from 'react-redux';
 import { SETTINGS, doBalanceSubscribe, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux';
 import {
   doAuthenticate,
+  doInstallNew,
+  doInstallNewWithParams,
   doBlackListedOutpointsSubscribe,
   doFilteredOutpointsSubscribe,
   doFetchMySubscriptions,
@@ -27,6 +29,8 @@ const select = state => ({
 
 const perform = dispatch => ({
   authenticate: (appVersion, os, firebaseToken) => dispatch(doAuthenticate(appVersion, os, firebaseToken)),
+  installNewWithParams: (appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken) =>
+    dispatch(doInstallNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken)),
   balanceSubscribe: () => dispatch(doBalanceSubscribe()),
   blacklistedOutpointsSubscribe: () => dispatch(doBlackListedOutpointsSubscribe()),
   filteredOutpointsSubscribe: () => dispatch(doFilteredOutpointsSubscribe()),
@@ -42,7 +46,4 @@ const perform = dispatch => ({
   verifyUserEmailFailure: error => dispatch(doUserEmailVerifyFailure(error)),
 });
 
-export default connect(
-  select,
-  perform,
-)(SplashScreen);
+export default connect(select, perform)(SplashScreen);
diff --git a/src/page/splash/view.js b/src/page/splash/view.js
index 8f520c8..98b2601 100644
--- a/src/page/splash/view.js
+++ b/src/page/splash/view.js
@@ -24,8 +24,10 @@ class SplashScreen extends React.PureComponent {
 
   state = {
     accountUnlockFailed: false,
+    appVersion: null,
     daemonReady: false,
     details: __('Starting up'),
+    firebaseToken: null,
     message: __('Connecting'),
     isRunning: false,
     isLagging: false,
@@ -34,12 +36,57 @@ class SplashScreen extends React.PureComponent {
     headersDownloadProgress: 0,
     shouldAuthenticate: false,
     subscriptionsFetched: false,
+    liteMode: false,
+    liteModeParams: {},
+  };
+
+  initLiteMode = () => {
+    NativeModules.UtilityModule.getLbrynetDirectory().then(path => {
+      NativeModules.UtilityModule.getPlatform().then(platform => {
+        RNFS.readFile(`${path}/install_id`, 'utf8')
+          .then(installIdContent => {
+            // node_id is actually optional (won't be present if dht is disabled)
+            // RNFS.readFile(`${path}/node_id`, 'utf8').then(nodeIdContent => {
+            // TODO: Load proper lbrynetVersion value
+            this.setState(
+              {
+                liteModeParams: {
+                  installationId: installIdContent,
+                  nodeId: null,
+                  lbrynetVersion: '0.62.0',
+                  platform,
+                },
+              },
+              () => this.updateStatus(),
+            );
+            // }).catch((err) => { console.log(err); console.log('node_id not found.'); this.lbryConnect() });
+          })
+          .catch(() => this.lbryConnect());
+      });
+    });
   };
 
   updateStatus() {
-    Lbry.status().then(status => {
-      this._updateStatusCallback(status);
-    });
+    const { authenticate } = this.props;
+    const { liteMode } = this.state;
+
+    if (liteMode) {
+      // authenticate immediately
+      NativeModules.VersionInfo.getAppVersion().then(appVersion => {
+        this.setState({ appVersion, shouldAuthenticate: true });
+        NativeModules.Firebase.getMessagingToken()
+          .then(firebaseToken => {
+            this.setState({ firebaseToken }, () => authenticate(appVersion, Platform.OS, firebaseToken, false));
+          })
+          .catch(() => {
+            authenticate(appVersion, Platform.OS, null, false);
+          });
+      });
+    } else {
+      Lbry.status().then(status => {
+        this._updateStatusCallback(status);
+      });
+    }
   }
 
   navigateToMain = () => {
@@ -73,12 +120,28 @@ class SplashScreen extends React.PureComponent {
   };
 
   componentWillReceiveProps(nextProps) {
-    const { emailToVerify, getSync, setEmailToVerify, verifyUserEmail, verifyUserEmailFailure } = this.props;
-    const { daemonReady, shouldAuthenticate } = this.state;
+    const { getSync, installNewWithParams } = this.props;
+    const { daemonReady, shouldAuthenticate, liteMode, liteModeParams, appVersion, firebaseToken } = this.state;
     const { user } = nextProps;
 
-    if (daemonReady && shouldAuthenticate && user && user.id) {
+    if (liteMode && user && user.id) {
+      this.navigateToLiteMode();
+    } else if (daemonReady && shouldAuthenticate && user && user.id) {
       this.setState({ shouldAuthenticate: false }, () => {
+        // call install new after successful authentication
+        if (liteMode) {
+          const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams;
+          installNewWithParams(
+            appVersion,
+            installationId,
+            nodeId,
+            lbrynetVersion,
+            Platform.OS,
+            platform,
+            firebaseToken,
+          );
+        }
+
         // user is authenticated, navigate to the main view
         if (user.has_verified_email) {
           NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(walletPassword => {
@@ -95,6 +158,21 @@ class SplashScreen extends React.PureComponent {
     }
   }
 
+  navigateToLiteMode = () => {
+    const { navigation } = this.props;
+    const { launchUrl } = this.state;
+    const resetAction = StackActions.reset({
+      index: 0,
+      actions: [
+        NavigationActions.navigate({
+          routeName: Constants.DRAWER_ROUTE_LITE_FILE,
+          params: { uri: launchUrl },
+        }),
+      ],
+    });
+    navigation.dispatch(resetAction);
+  };
+
   getUserSettings = () => {
     const { populateSharedUserState } = this.props;
 
@@ -260,32 +338,30 @@ class SplashScreen extends React.PureComponent {
   componentDidMount() {
     NativeModules.Firebase.track('app_launch', null);
     NativeModules.Firebase.setCurrentScreen('Splash');
+    const { navigation } = this.props;
+    const { resetUrl } = navigation.state.params;
+    const isResetUrlSet = !!resetUrl;
 
     this.props.fetchRewardedContent();
     Linking.getInitialURL().then(url => {
+      let liteMode;
       if (url) {
-        this.setState({ launchUrl: url });
+        liteMode = !isResetUrlSet && url.indexOf('liteMode=1') > -1;
+        this.setState({ launchUrl: resetUrl || url, liteMode });
       }
 
       NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => {
         if (target) {
-          this.setState({ launchUrl: target });
+          liteMode = !isResetUrlSet && target.indexOf('liteMode=1') > -1;
+          this.setState({ launchUrl: resetUrl || target, liteMode });
         }
 
         // Only connect after checking initial launch url / notification launch target
-        Lbry.connect()
-          .then(() => {
-            this.updateStatus();
-          })
-          .catch(e => {
-            this.setState({
-              isLagging: true,
-              message: __('Connection Failure'),
-              details: __(
-                'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.',
-              ),
-            });
-          });
+        if (liteMode) {
+          this.initLiteMode();
+        } else {
+          this.lbryConnect();
+        }
       });
     });
 
@@ -300,6 +376,22 @@ class SplashScreen extends React.PureComponent {
     });
   }
 
+  lbryConnect = () => {
+    Lbry.connect()
+      .then(() => {
+        this.updateStatus();
+      })
+      .catch(e => {
+        this.setState({
+          isLagging: true,
+          message: __('Connection Failure'),
+          details: __(
+            'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.',
+          ),
+        });
+      });
+  };
+
   handleContinueAnywayPressed = () => {
     this.setState(
       {
diff --git a/src/redux/reducers/drawer.js b/src/redux/reducers/drawer.js
index dc01e74..6b5a8c5 100644
--- a/src/redux/reducers/drawer.js
+++ b/src/redux/reducers/drawer.js
@@ -45,12 +45,13 @@ reducers[Constants.ACTION_PUSH_DRAWER_STACK] = (state, action) => {
   if (routeName === Constants.DRAWER_ROUTE_SUBSCRIPTIONS && newStack.length === 1) {
     canPushStack = false;
   }
+  if (routeName === Constants.DRAWER_ROUTE_LITE_FILE) {
+    canPushStack = false;
+  }
 
   let lastRouteInStack;
   if (canPushStack) {
     newStack.push({ route: routeName, params });
-
-    // save the route
     lastRouteInStack = { route: routeName, params };
   }
 
diff --git a/src/utils/helper.js b/src/utils/helper.js
index 38daa46..756826c 100644
--- a/src/utils/helper.js
+++ b/src/utils/helper.js
@@ -432,3 +432,7 @@ export function fetchReferralCode(successCallback, errorCallback) {
       }
     });
 }
+
+export function decode(value) {
+  return decodeURIComponent(value).replace(/\+/g, ' ');
+}
diff --git a/yarn.lock b/yarn.lock
index bed52b5..0cc4999 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,17 +10,17 @@
     "@babel/highlight" "^7.8.3"
 
 "@babel/core@^7.0.0", "@babel/core@^7.6.2":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e"
-  integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b"
+  integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA==
   dependencies:
     "@babel/code-frame" "^7.8.3"
-    "@babel/generator" "^7.8.4"
+    "@babel/generator" "^7.8.7"
     "@babel/helpers" "^7.8.4"
-    "@babel/parser" "^7.8.4"
-    "@babel/template" "^7.8.3"
-    "@babel/traverse" "^7.8.4"
-    "@babel/types" "^7.8.3"
+    "@babel/parser" "^7.8.7"
+    "@babel/template" "^7.8.6"
+    "@babel/traverse" "^7.8.6"
+    "@babel/types" "^7.8.7"
     convert-source-map "^1.7.0"
     debug "^4.1.0"
     gensync "^1.0.0-beta.1"
@@ -30,12 +30,12 @@
     semver "^5.4.1"
     source-map "^0.5.0"
 
-"@babel/generator@^7.0.0", "@babel/generator@^7.8.4":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e"
-  integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==
+"@babel/generator@^7.0.0", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7"
+  integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==
   dependencies:
-    "@babel/types" "^7.8.3"
+    "@babel/types" "^7.8.7"
     jsesc "^2.5.1"
     lodash "^4.17.13"
     source-map "^0.5.0"
@@ -63,32 +63,33 @@
     "@babel/types" "^7.8.3"
     esutils "^2.0.0"
 
-"@babel/helper-call-delegate@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692"
-  integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==
+"@babel/helper-call-delegate@^7.8.7":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab"
+  integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==
   dependencies:
     "@babel/helper-hoist-variables" "^7.8.3"
     "@babel/traverse" "^7.8.3"
-    "@babel/types" "^7.8.3"
+    "@babel/types" "^7.8.7"
 
 "@babel/helper-create-class-features-plugin@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397"
-  integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0"
+  integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==
   dependencies:
     "@babel/helper-function-name" "^7.8.3"
     "@babel/helper-member-expression-to-functions" "^7.8.3"
     "@babel/helper-optimise-call-expression" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.3"
+    "@babel/helper-replace-supers" "^7.8.6"
     "@babel/helper-split-export-declaration" "^7.8.3"
 
 "@babel/helper-create-regexp-features-plugin@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79"
-  integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b"
+  integrity sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A==
   dependencies:
+    "@babel/helper-annotate-as-pure" "^7.8.3"
     "@babel/helper-regex" "^7.8.3"
     regexpu-core "^4.6.0"
 
@@ -147,15 +148,16 @@
     "@babel/types" "^7.8.3"
 
 "@babel/helper-module-transforms@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590"
-  integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4"
+  integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==
   dependencies:
     "@babel/helper-module-imports" "^7.8.3"
+    "@babel/helper-replace-supers" "^7.8.6"
     "@babel/helper-simple-access" "^7.8.3"
     "@babel/helper-split-export-declaration" "^7.8.3"
-    "@babel/template" "^7.8.3"
-    "@babel/types" "^7.8.3"
+    "@babel/template" "^7.8.6"
+    "@babel/types" "^7.8.6"
     lodash "^4.17.13"
 
 "@babel/helper-optimise-call-expression@^7.8.3":
@@ -188,15 +190,15 @@
     "@babel/traverse" "^7.8.3"
     "@babel/types" "^7.8.3"
 
-"@babel/helper-replace-supers@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc"
-  integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==
+"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6":
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8"
+  integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==
   dependencies:
     "@babel/helper-member-expression-to-functions" "^7.8.3"
     "@babel/helper-optimise-call-expression" "^7.8.3"
-    "@babel/traverse" "^7.8.3"
-    "@babel/types" "^7.8.3"
+    "@babel/traverse" "^7.8.6"
+    "@babel/types" "^7.8.6"
 
 "@babel/helper-simple-access@^7.8.3":
   version "7.8.3"
@@ -241,10 +243,10 @@
     esutils "^2.0.2"
     js-tokens "^4.0.0"
 
-"@babel/parser@^7.0.0", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8"
-  integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==
+"@babel/parser@^7.0.0", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a"
+  integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==
 
 "@babel/plugin-external-helpers@^7.0.0":
   version "7.8.3"
@@ -403,16 +405,16 @@
     lodash "^4.17.13"
 
 "@babel/plugin-transform-classes@^7.0.0":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8"
-  integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d"
+  integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.8.3"
     "@babel/helper-define-map" "^7.8.3"
     "@babel/helper-function-name" "^7.8.3"
     "@babel/helper-optimise-call-expression" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.3"
+    "@babel/helper-replace-supers" "^7.8.6"
     "@babel/helper-split-export-declaration" "^7.8.3"
     globals "^11.1.0"
 
@@ -447,9 +449,9 @@
     "@babel/plugin-syntax-flow" "^7.8.3"
 
 "@babel/plugin-transform-for-of@^7.0.0":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d"
-  integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085"
+  integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==
   dependencies:
     "@babel/helper-plugin-utils" "^7.8.3"
 
@@ -501,11 +503,11 @@
     "@babel/helper-replace-supers" "^7.8.3"
 
 "@babel/plugin-transform-parameters@^7.0.0":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3"
-  integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz#66fa2f1de4129b4e0447509223ac71bda4955395"
+  integrity sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g==
   dependencies:
-    "@babel/helper-call-delegate" "^7.8.3"
+    "@babel/helper-call-delegate" "^7.8.7"
     "@babel/helper-get-function-arity" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
 
@@ -541,11 +543,11 @@
     "@babel/plugin-syntax-jsx" "^7.8.3"
 
 "@babel/plugin-transform-regenerator@^7.0.0":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8"
-  integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8"
+  integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==
   dependencies:
-    regenerator-transform "^0.14.0"
+    regenerator-transform "^0.14.2"
 
 "@babel/plugin-transform-runtime@^7.0.0":
   version "7.8.3"
@@ -587,10 +589,10 @@
     "@babel/helper-annotate-as-pure" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
 
-"@babel/plugin-transform-typescript@^7.0.0", "@babel/plugin-transform-typescript@^7.5.0":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917"
-  integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ==
+"@babel/plugin-transform-typescript@^7.0.0":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda"
+  integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ==
   dependencies:
     "@babel/helper-create-class-features-plugin" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
@@ -605,9 +607,9 @@
     "@babel/helper-plugin-utils" "^7.8.3"
 
 "@babel/register@^7.0.0":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.3.tgz#5d5d30cfcc918437535d724b8ac1e4a60c5db1f8"
-  integrity sha512-t7UqebaWwo9nXWClIPLPloa5pN33A2leVs8Hf0e9g9YwUP8/H9NeR7DJU+4CXo23QtjChQv5a3DjEtT83ih1rg==
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.6.tgz#a1066aa6168a73a70c35ef28cc5865ccc087ea69"
+  integrity sha512-7IDO93fuRsbyml7bAafBQb3RcBGlCpU4hh5wADA2LJEEcYk92WkwFZ0pHyIi2fb5Auoz1714abETdZKCOxN0CQ==
   dependencies:
     find-cache-dir "^2.0.0"
     lodash "^4.17.13"
@@ -615,41 +617,41 @@
     pirates "^4.0.0"
     source-map-support "^0.5.16"
 
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308"
-  integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d"
+  integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==
   dependencies:
-    regenerator-runtime "^0.13.2"
+    regenerator-runtime "^0.13.4"
 
-"@babel/template@^7.0.0", "@babel/template@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8"
-  integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==
+"@babel/template@^7.0.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
+  integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==
   dependencies:
     "@babel/code-frame" "^7.8.3"
-    "@babel/parser" "^7.8.3"
-    "@babel/types" "^7.8.3"
+    "@babel/parser" "^7.8.6"
+    "@babel/types" "^7.8.6"
 
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c"
-  integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6":
+  version "7.8.6"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff"
+  integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==
   dependencies:
     "@babel/code-frame" "^7.8.3"
-    "@babel/generator" "^7.8.4"
+    "@babel/generator" "^7.8.6"
     "@babel/helper-function-name" "^7.8.3"
     "@babel/helper-split-export-declaration" "^7.8.3"
-    "@babel/parser" "^7.8.4"
-    "@babel/types" "^7.8.3"
+    "@babel/parser" "^7.8.6"
+    "@babel/types" "^7.8.6"
     debug "^4.1.0"
     globals "^11.1.0"
     lodash "^4.17.13"
 
-"@babel/types@^7.0.0", "@babel/types@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
-  integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==
+"@babel/types@^7.0.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7":
+  version "7.8.7"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d"
+  integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==
   dependencies:
     esutils "^2.0.2"
     lodash "^4.17.13"
@@ -768,9 +770,9 @@
     chalk "^3.0.0"
 
 "@react-native-community/async-storage@^1.5.1":
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.8.0.tgz#5f23ad486daa284398c71f2cc94d15fb7be40bb8"
-  integrity sha512-R8hYm9h7MqoTa/opzBID6hhL5rseNoMJK1wG/B/Diob+JzEv7b1GMpHjsAZX2pU2o82LU73XbPJOPzfvkGFaUA==
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.8.1.tgz#c93e69dcf948667b207e409b8039b7edf199159b"
+  integrity sha512-MA1fTp4SB7OOtDmNAwds6jIpiwwty1NIoFboWjEWkoyWW35zIuxlhHxD4joSy21aWEzUVwvv6JJ2hSsP/HTb7A==
 
 "@react-native-community/cli-debugger-ui@^3.0.0":
   version "3.0.0"
@@ -818,9 +820,9 @@
   integrity sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg==
 
 "@react-native-community/cli@^3.0.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.2.0.tgz#f4b04b94bf96810c4a7f57379a69ebd11fd9c933"
-  integrity sha512-k8GmNQH/EbIIVd4VlVbFP99IRNhovWV6hhnJ3y2+FfZq18H/U6yV/t1bpI3A3QqPuAyWxk/1jBdXvP6BY/7kbw==
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.2.1.tgz#2a466801eb6080a1f73358c5d740c53c24ed8c6f"
+  integrity sha512-bZ/bfZ+9r1gQSxp6t7+00DcpC6vmbVYSvzUCFM/yo5k8bhsDdcy8aocscIaXXVGG+v9Edri/Q7hH9ks7L18/Rg==
   dependencies:
     "@hapi/joi" "^15.0.3"
     "@react-native-community/cli-debugger-ui" "^3.0.0"
@@ -881,9 +883,9 @@
     prettier "1.16.4"
 
 "@react-native-community/masked-view@^0.1.5":
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.6.tgz#c7f2ac187c1f25aa8c30d11baa8f4398eca3bb84"
-  integrity sha512-PpMoeXwPUoldCRKDuSi+zK5rT+sJTW6ri6RdGPkSKRzU77Q1d9IaR0O5IKvBj0XSdL3p+dcOa05gk35aGDffBQ==
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.7.tgz#a65ce0702f55cb67fd777995de6fc7b3e5781903"
+  integrity sha512-9KbP7LTLFz9dx1heURJbO6nuVMdSjDez8znlrUzaB1nUwKVsTTwlKRuHxGUYIIkReLWrJQeCv9tidy+84z2eCw==
 
 "@react-navigation/core@^3.6.1":
   version "3.6.1"
@@ -1053,15 +1055,15 @@ accepts@~1.3.5, accepts@~1.3.7:
     mime-types "~2.1.24"
     negotiator "0.6.2"
 
-acorn-jsx@^5.1.0:
+acorn-jsx@^5.2.0:
   version "5.2.0"
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
   integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
 
 acorn@^7.1.0:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
-  integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
+  integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==
 
 ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
   version "6.12.0"
@@ -1100,11 +1102,11 @@ ansi-escapes@^3.0.0:
   integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
 
 ansi-escapes@^4.2.1:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d"
-  integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
+  integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
   dependencies:
-    type-fest "^0.8.1"
+    type-fest "^0.11.0"
 
 ansi-fragments@^0.2.1:
   version "0.2.1"
@@ -2178,9 +2180,9 @@ camelcase@^5.0.0, camelcase@^5.3.1:
   integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
 
 caniuse-lite@^1.0.30000844:
-  version "1.0.30001030"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee"
-  integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==
+  version "1.0.30001032"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz#b8d224914e2cd7f507085583d4e38144c652bce4"
+  integrity sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA==
 
 capture-exit@^2.0.0:
   version "2.0.0"
@@ -2754,9 +2756,9 @@ electron-download@^3.0.1:
     sumchecker "^1.2.0"
 
 electron-to-chromium@^1.3.47:
-  version "1.3.361"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.361.tgz#a820bf52da171c0024314745462cfe0dc944373e"
-  integrity sha512-OzSVjWpsRhJyr9PSAXkeloSe6e9viU2ToGt1wXlXFsGcxuI9vlsnalL+V/AM59Z2pEo3wRxIddtOGsT7Y6x/sQ==
+  version "1.3.370"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.370.tgz#420fba483d30ba3f7965b30ecf850fdb5f08a0bc"
+  integrity sha512-399cXDE9C7qoVF2CUgCA/MLflfvxbo1F0kB/pkB94426freL/JgZ0HNaloomsOfnE+VC/qgTFZqzmivSdaNfPQ==
 
 electron@^1.8.7:
   version "1.8.8"
@@ -3100,12 +3102,12 @@ eslint@^6.5.1:
     v8-compile-cache "^2.0.3"
 
 espree@^6.1.2:
-  version "6.1.2"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
-  integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.0.tgz#349fef01a202bbab047748300deb37fa44da79d7"
+  integrity sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA==
   dependencies:
     acorn "^7.1.0"
-    acorn-jsx "^5.1.0"
+    acorn-jsx "^5.2.0"
     eslint-visitor-keys "^1.1.0"
 
 esprima@^4.0.0:
@@ -3513,9 +3515,9 @@ flow-babel-webpack-plugin@^1.1.1:
     lodash.merge "^4.6.0"
 
 "flow-bin@>=0.44.2 <1":
-  version "0.119.1"
-  resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.119.1.tgz#b6d763b386ec9f1085848ca7df98909d80a16bd0"
-  integrity sha512-mX6qjJVi7aLqR9sDf8QIHt8yYEWQbkMLw7qFoC7sM/AbJwvqFm3pATPN96thsaL9o1rrshvxJpSgoj1PJSC3KA==
+  version "0.120.1"
+  resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.120.1.tgz#ab051d6df71829b70a26a2c90bb81f9d43797cae"
+  integrity sha512-KgE+d+rKzdXzhweYVJty1QIOOZTTbtnXZf+4SLnmArLvmdfeLreQOZpeLbtq5h79m7HhDzX/HkUkoyu/fmSC2A==
 
 for-in@^1.0.2:
   version "1.0.2"
@@ -3847,9 +3849,9 @@ home-path@^1.0.1:
   integrity sha512-tM1pVa+u3ZqQwIkXcWfhUlY3HWS3TsnKsfi2OHHvnhkX52s9etyktPyy1rQotkr0euWimChDq+QkQuDe8ngUlQ==
 
 hosted-git-info@^2.1.4:
-  version "2.8.6"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.6.tgz#3a6e6d0324c5371fc8c7ba7175e1e5d14578724d"
-  integrity sha512-Kp6rShEsCHhF5dD3EWKdkgVA8ix90oSUJ0VY4g9goxxa0+f4lx63muTftn0mlJ/+8IESGWyKnP//V2D7S4ZbIQ==
+  version "2.8.8"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+  integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
 
 http-errors@~1.7.2:
   version "1.7.3"
@@ -3979,22 +3981,22 @@ inquirer@^3.0.6:
     through "^2.3.6"
 
 inquirer@^7.0.0:
-  version "7.0.4"
-  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703"
-  integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==
+  version "7.0.6"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c"
+  integrity sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w==
   dependencies:
     ansi-escapes "^4.2.1"
-    chalk "^2.4.2"
+    chalk "^3.0.0"
     cli-cursor "^3.1.0"
     cli-width "^2.0.0"
     external-editor "^3.0.3"
     figures "^3.0.0"
     lodash "^4.17.15"
     mute-stream "0.0.8"
-    run-async "^2.2.0"
+    run-async "^2.4.0"
     rxjs "^6.5.3"
     string-width "^4.1.0"
-    strip-ansi "^5.1.0"
+    strip-ansi "^6.0.0"
     through "^2.3.6"
 
 internal-slot@^1.0.2:
@@ -4589,17 +4591,17 @@ latest-version@^3.0.0:
   dependencies:
     package-json "^4.0.0"
 
-lbry-redux@lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee:
+lbry-redux@lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/9c48cce570ee8e057068c86cb6507e1b441841ee"
+  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f6e99498d2bc5b3f07e1e2b6f668a1a48de35047"
   dependencies:
     proxy-polyfill "0.1.6"
     reselect "^3.0.0"
     uuid "^3.3.2"
 
-lbryinc@lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676:
+lbryinc@lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/0dc8829a319a708f45a855765f70a193ccb72676"
+  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/1fc104c2d29d1d3975234c3606e848eaa28e1b6e"
   dependencies:
     reselect "^3.0.0"
 
@@ -5047,10 +5049,10 @@ metro-minify-uglify@^0.56.4:
   dependencies:
     uglify-es "^3.1.9"
 
-metro-react-native-babel-preset@^0.56.4:
-  version "0.56.4"
-  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8"
-  integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA==
+metro-react-native-babel-preset@0.56.3:
+  version "0.56.3"
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz#5a1097c2f94e8ee0797a8ba2ab8f86d096f4c093"
+  integrity sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==
   dependencies:
     "@babel/plugin-proposal-class-properties" "^7.0.0"
     "@babel/plugin-proposal-export-default-from" "^7.0.0"
@@ -5088,10 +5090,10 @@ metro-react-native-babel-preset@^0.56.4:
     "@babel/template" "^7.0.0"
     react-refresh "^0.4.0"
 
-metro-react-native-babel-preset@^0.58.0:
-  version "0.58.0"
-  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz#18f48d33fe124280ffabc000ab8b42c488d762a2"
-  integrity sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA==
+metro-react-native-babel-preset@^0.56.4:
+  version "0.56.4"
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8"
+  integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA==
   dependencies:
     "@babel/plugin-proposal-class-properties" "^7.0.0"
     "@babel/plugin-proposal-export-default-from" "^7.0.0"
@@ -5124,7 +5126,7 @@ metro-react-native-babel-preset@^0.58.0:
     "@babel/plugin-transform-spread" "^7.0.0"
     "@babel/plugin-transform-sticky-regex" "^7.0.0"
     "@babel/plugin-transform-template-literals" "^7.0.0"
-    "@babel/plugin-transform-typescript" "^7.5.0"
+    "@babel/plugin-transform-typescript" "^7.0.0"
     "@babel/plugin-transform-unicode-regex" "^7.0.0"
     "@babel/template" "^7.0.0"
     react-refresh "^0.4.0"
@@ -6039,7 +6041,7 @@ pretty-format@^25.1.0:
     ansi-styles "^4.0.0"
     react-is "^16.12.0"
 
-private@^0.1.6:
+private@^0.1.6, private@^0.1.8:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
   integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
@@ -6121,9 +6123,9 @@ query-string@6.8.1:
     strict-uri-encode "^2.0.0"
 
 query-string@^6.11.0:
-  version "6.11.0"
-  resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.0.tgz#dc27a05733d1be66f16d0f83dfa957270f45f66d"
-  integrity sha512-jS+me8X3OEGFTsF6kF+vUUMFG/d3WUCvD7bHhfZP5784nOq1pjj8yau/u86nfOncmcN6ZkSWKWkKAvv/MGxzLA==
+  version "6.11.1"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.1.tgz#ab021f275d463ce1b61e88f0ce6988b3e8fe7c2c"
+  integrity sha512-1ZvJOUl8ifkkBxu2ByVM/8GijMIPx+cef7u3yroO3Ogm4DOdZcF5dcrWTIlSHe3Pg/mtlt6/eFjObDfJureZZA==
   dependencies:
     decode-uri-component "^0.2.0"
     split-on-first "^1.0.0"
@@ -6170,9 +6172,9 @@ react-devtools@^3.6.3:
     update-notifier "^2.1.0"
 
 react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6:
-  version "16.12.0"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
-  integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
+  version "16.13.0"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527"
+  integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==
 
 react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4:
   version "3.0.4"
@@ -6180,9 +6182,9 @@ react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4:
   integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
 
 react-native-camera@^3.15.0:
-  version "3.18.0"
-  resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.18.0.tgz#aa046a86ea8a691f25fd579b8abcbda1503e13fa"
-  integrity sha512-rLjLKJDEnI0E0nN7ZfK3GKEP37cYURh6QV2DCI1BRs9FWcETwDcgVYtQSfFEibWcGazPtsAqVDTg5LUYMFPjCA==
+  version "3.19.0"
+  resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.19.0.tgz#32c43908d3ba398c89d21437a9dba2ebb17f3896"
+  integrity sha512-ef3ccKUu5nYRvc2fXlnRDsrBPBygkXoMvk0c/mrgfLYgr4X0G/8Qg7t+MOAisQ0V6RastHVygpjgAW+dxcZnyA==
   dependencies:
     prop-types "^15.6.2"
 
@@ -6277,9 +6279,9 @@ react-native-safe-area-view@^0.14.6, react-native-safe-area-view@^0.14.8:
     hoist-non-react-statics "^2.3.1"
 
 react-native-screens@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.0.0.tgz#ac9db593351474790f8daa5d85b5ea337b20cfb1"
-  integrity sha512-T1xxYajGuiaOXjqKWKfjw9LKwoGTn69WrYZcg0jB2ZlPE6o6QqlJWtR1ytqu/4fg8pHdsk5S1iPY06mqTylrYA==
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.2.0.tgz#cc4cdf17426fdda97ad93a5e812a1899390f1978"
+  integrity sha512-a0VzxOWot7F9B/GQyDSssBRd3jUJazFnTQS61IiyReWB6aHlFhf3Xz10jBRoURXy1EMCDCHgenmTVTkKHpKyqQ==
   dependencies:
     debounce "^1.2.0"
 
@@ -6396,9 +6398,9 @@ react-navigation-stack@^1.10.3:
     prop-types "^15.7.2"
 
 react-navigation-tabs@^2.7.0:
-  version "2.8.1"
-  resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-2.8.1.tgz#1c8202945e7f7e3fe9e6cbfcd9e203027658703d"
-  integrity sha512-hF9rotTe/wjJRj0HCIltYm38renbp18kUBi9VG3wF6/RR9pI8dcXNPdkpL7J3wQXyq+Zri3ltHbmEKtexnWWug==
+  version "2.8.2"
+  resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-2.8.2.tgz#b49534a77a6b15fd7f681a33007e3fff7faf3f84"
+  integrity sha512-eLoLh2DetaXdrKkb4wR8e6+npi0E7UGn6iHmDKHdV5M6SFdsgz5CaEXW/tg+pgvGDb/8iG6syTUV1KrUtFCZ4Q==
   dependencies:
     hoist-non-react-statics "^3.3.2"
     react-lifecycles-compat "^3.0.4"
@@ -6406,9 +6408,9 @@ react-navigation-tabs@^2.7.0:
     react-native-tab-view "^2.11.0"
 
 react-navigation@^4.0.10:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.2.1.tgz#45565e0c9e3e9266b13df27762b59281f3b0135d"
-  integrity sha512-/SMeEyBkgIA+cNQ/oZJdK5UvboR1c9W/8J1E3ZNh9VWCRFHGImlURphcxvCzRWI7sClTuC5/xnHeT+UU6K7wrg==
+  version "4.2.2"
+  resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.2.2.tgz#8183f47c1b0c7c2350e970aa652c0fee4160ef9e"
+  integrity sha512-/CdQsDkUEJWyKKK68txvFUJDO79+MYFX6DYTVbQ23YtSw/GD5J5pQ/E08IJy8PJNYgnWP/OhiOYg2UpNoh96RQ==
   dependencies:
     "@react-navigation/core" "^3.6.1"
     "@react-navigation/native" "^3.7.3"
@@ -6593,6 +6595,11 @@ regenerator-runtime@^0.13.2:
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
   integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
 
+regenerator-runtime@^0.13.4:
+  version "0.13.4"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91"
+  integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==
+
 regenerator-transform@^0.10.0:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
@@ -6602,12 +6609,13 @@ regenerator-transform@^0.10.0:
     babel-types "^6.19.0"
     private "^0.1.6"
 
-regenerator-transform@^0.14.0:
-  version "0.14.1"
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"
-  integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==
+regenerator-transform@^0.14.2:
+  version "0.14.2"
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.2.tgz#949d9d87468ff88d5a7e4734ebb994a892de1ff2"
+  integrity sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==
   dependencies:
-    private "^0.1.6"
+    "@babel/runtime" "^7.8.4"
+    private "^0.1.8"
 
 regex-not@^1.0.0, regex-not@^1.0.2:
   version "1.0.2"
@@ -6846,7 +6854,7 @@ rsvp@^4.8.4:
   resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
   integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
 
-run-async@^2.2.0:
+run-async@^2.2.0, run-async@^2.4.0:
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8"
   integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==
@@ -7633,9 +7641,9 @@ trim-newlines@^1.0.0:
   integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
 
 tslib@^1.8.1, tslib@^1.9.0:
-  version "1.11.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc"
-  integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==
+  version "1.11.1"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
+  integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==
 
 tsutils@^3.7.0:
   version "3.17.1"
@@ -7663,6 +7671,11 @@ type-check@~0.3.2:
   dependencies:
     prelude-ls "~1.1.2"
 
+type-fest@^0.11.0:
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
+  integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+
 type-fest@^0.7.1:
   version "0.7.1"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"

From 08c6cf1b7f7904a388884b51142ea5bf5c98b08a Mon Sep 17 00:00:00 2001
From: YULIUS KURNIAWAN KRISTIANTO <yuliuskristianto9@gmail.com>
Date: Wed, 11 Mar 2020 04:09:06 +0700
Subject: [PATCH 02/15] added more languages support (#128)

12 new languages
* Danish
* Basa Jawa
* Ukrainian
* Hindi
* Dutch
* French
* Estonian
* Marathi
* Russian
* Romanian
* Slovak
* Ukrainian
---
 src/page/settings/view.js | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/page/settings/view.js b/src/page/settings/view.js
index 53bcd25..9573803 100644
--- a/src/page/settings/view.js
+++ b/src/page/settings/view.js
@@ -10,17 +10,28 @@ import RNFS from 'react-native-fs';
 import settingsStyle from 'styles/settings';
 
 const languageOptions = [
-  { code: 'default', name: 'Use device language' },
-  { code: 'en', name: 'English' },
-  { code: 'gu', name: 'Gujarati' },
-  { code: 'hi', name: 'Hindi' },
-  { code: 'id', name: 'Indonesian' },
-  { code: 'it', name: 'Italian' },
-  { code: 'ms', name: 'Malay' },
-  { code: 'tr', name: 'Turkish' },
-  { code: 'pl', name: 'Polish' },
-  { code: 'pt', name: 'Portuguese' },
-  { code: 'es', name: 'Spanish' },
+    { code: 'default', name: 'Use device language' },
+    { code: 'jv', name: 'Basa Jawa' },
+    { code: 'da', name: 'Danish' },
+    { code: 'nl', name: 'Dutch' },
+    { code: 'en', name: 'English' },
+    { code: 'et', name: 'Estonian' },
+    { code: 'fr', name: 'French' },
+    { code: 'gu', name: 'Gujarati' },
+    { code: 'hi', name: 'Hindi' },
+    { code: 'id', name: 'Indonesian' },
+    { code: 'it', name: 'Italian' },
+    { code: 'kn', name: 'Kannada' },
+    { code: 'ms', name: 'Malay' },
+    { code: 'mr', name: 'Marathi' },
+    { code: 'pl', name: 'Polish' },
+    { code: 'pt', name: 'Portuguese' },
+    { code: 'ro', name: 'Romanian' },
+    { code: 'ru', name: 'Russian' },
+    { code: 'sk', name: 'Slovak' },
+    { code: 'es', name: 'Spanish' },
+    { code: 'tr', name: 'Turkish' },
+    { code: 'uk', name: 'Ukrainian' },
 ];
 
 class SettingsPage extends React.PureComponent {

From dabba98c0c51c34cd0e760be807bf5b4dc588d89 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 13 Mar 2020 17:05:29 +0100
Subject: [PATCH 03/15] Add DHT setting (#130)

* dht setting
* update setting text
---
 android                       |  2 +-
 src/component/AppNavigator.js |  2 --
 src/constants.js              |  1 +
 src/index.js                  |  1 -
 src/page/liteFile/index.js    |  5 +--
 src/page/settings/index.js    |  6 ++--
 src/page/settings/view.js     | 65 ++++++++++++++++++++++-------------
 7 files changed, 47 insertions(+), 35 deletions(-)

diff --git a/android b/android
index b7b6c05..ea8ac78 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit b7b6c05bd3a61c1cec09a08f1b5c413a68597026
+Subproject commit ea8ac783a8b05db8ab78472efc3fff32dc6869e6
diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js
index 1154c58..be85fdc 100644
--- a/src/component/AppNavigator.js
+++ b/src/component/AppNavigator.js
@@ -312,8 +312,6 @@ class AppWithNavigationState extends React.Component {
       'hardwareBackPress',
       function() {
         const { dispatch, nav, drawerStack } = this.props;
-        console.log(nav);
-
         if (drawerStack.length > 1) {
           dispatchNavigateBack(dispatch, nav, drawerStack);
           return true;
diff --git a/src/constants.js b/src/constants.js
index bf019b5..fca862e 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -44,6 +44,7 @@ const Constants = {
   SETTING_BACKUP_DISMISSED: 'backupDismissed',
   SETTING_REWARDS_NOT_INTERESTED: 'rewardsNotInterested',
   SETTING_DEVICE_WALLET_SYNCED: 'deviceWalletSynced',
+  SETTING_DHT_ENABLED: 'dhtEnabled',
 
   ACTION_DELETE_COMPLETED_BLOBS: 'DELETE_COMPLETED_BLOBS',
   ACTION_FIRST_RUN_PAGE_CHANGED: 'FIRST_RUN_PAGE_CHANGED',
diff --git a/src/index.js b/src/index.js
index f64e3e5..5a52168 100644
--- a/src/index.js
+++ b/src/index.js
@@ -58,7 +58,6 @@ window.__ = __;
 
 const globalExceptionHandler = (error, isFatal) => {
   if (error && NativeModules.Firebase) {
-    console.log(error);
     NativeModules.Firebase.logException(!!isFatal, error.message ? error.message : 'No message', JSON.stringify(error));
   }
 };
diff --git a/src/page/liteFile/index.js b/src/page/liteFile/index.js
index 49b4570..533d439 100644
--- a/src/page/liteFile/index.js
+++ b/src/page/liteFile/index.js
@@ -25,7 +25,4 @@ const perform = dispatch => ({
   toggleFullscreenMode: mode => dispatch(doToggleFullscreenMode(mode)),
 });
 
-export default connect(
-  select,
-  perform,
-)(LiteFilePage);
+export default connect(select, perform)(LiteFilePage);
diff --git a/src/page/settings/index.js b/src/page/settings/index.js
index 01bd9d4..f5353a4 100644
--- a/src/page/settings/index.js
+++ b/src/page/settings/index.js
@@ -11,6 +11,7 @@ const select = state => ({
   backgroundPlayEnabled: makeSelectClientSetting(SETTINGS.BACKGROUND_PLAY_ENABLED)(state),
   currentRoute: selectCurrentRoute(state),
   drawerStack: selectDrawerStack(state),
+  enableDht: makeSelectClientSetting(Constants.SETTING_DHT_ENABLED)(state),
   keepDaemonRunning: makeSelectClientSetting(SETTINGS.KEEP_DAEMON_RUNNING)(state),
   language: makeSelectClientSetting(SETTINGS.LANGUAGE)(state),
   showNsfw: makeSelectClientSetting(SETTINGS.SHOW_NSFW)(state),
@@ -29,7 +30,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform
-)(SettingsPage);
+export default connect(select, perform)(SettingsPage);
diff --git a/src/page/settings/view.js b/src/page/settings/view.js
index 9573803..8a3a29c 100644
--- a/src/page/settings/view.js
+++ b/src/page/settings/view.js
@@ -10,28 +10,28 @@ import RNFS from 'react-native-fs';
 import settingsStyle from 'styles/settings';
 
 const languageOptions = [
-    { code: 'default', name: 'Use device language' },
-    { code: 'jv', name: 'Basa Jawa' },
-    { code: 'da', name: 'Danish' },
-    { code: 'nl', name: 'Dutch' },
-    { code: 'en', name: 'English' },
-    { code: 'et', name: 'Estonian' },
-    { code: 'fr', name: 'French' },
-    { code: 'gu', name: 'Gujarati' },
-    { code: 'hi', name: 'Hindi' },
-    { code: 'id', name: 'Indonesian' },
-    { code: 'it', name: 'Italian' },
-    { code: 'kn', name: 'Kannada' },
-    { code: 'ms', name: 'Malay' },
-    { code: 'mr', name: 'Marathi' },
-    { code: 'pl', name: 'Polish' },
-    { code: 'pt', name: 'Portuguese' },
-    { code: 'ro', name: 'Romanian' },
-    { code: 'ru', name: 'Russian' },
-    { code: 'sk', name: 'Slovak' },
-    { code: 'es', name: 'Spanish' },
-    { code: 'tr', name: 'Turkish' },
-    { code: 'uk', name: 'Ukrainian' },
+  { code: 'default', name: 'Use device language' },
+  { code: 'jv', name: 'Basa Jawa' },
+  { code: 'da', name: 'Danish' },
+  { code: 'nl', name: 'Dutch' },
+  { code: 'en', name: 'English' },
+  { code: 'et', name: 'Estonian' },
+  { code: 'fr', name: 'French' },
+  { code: 'gu', name: 'Gujarati' },
+  { code: 'hi', name: 'Hindi' },
+  { code: 'id', name: 'Indonesian' },
+  { code: 'it', name: 'Italian' },
+  { code: 'kn', name: 'Kannada' },
+  { code: 'ms', name: 'Malay' },
+  { code: 'mr', name: 'Marathi' },
+  { code: 'pl', name: 'Polish' },
+  { code: 'pt', name: 'Portuguese' },
+  { code: 'ro', name: 'Romanian' },
+  { code: 'ru', name: 'Russian' },
+  { code: 'sk', name: 'Slovak' },
+  { code: 'es', name: 'Spanish' },
+  { code: 'tr', name: 'Turkish' },
+  { code: 'uk', name: 'Ukrainian' },
 ];
 
 class SettingsPage extends React.PureComponent {
@@ -151,6 +151,7 @@ class SettingsPage extends React.PureComponent {
   render() {
     const {
       backgroundPlayEnabled,
+      enableDht,
       keepDaemonRunning,
       receiveSubscriptionNotifications,
       receiveRewardNotifications,
@@ -168,6 +169,7 @@ class SettingsPage extends React.PureComponent {
     const actualReceiveRewardNotifications = this.getBooleanSetting(receiveRewardNotifications, true);
     const actualReceiveInterestsNotifications = this.getBooleanSetting(receiveInterestsNotifications, true);
     const actualReceiveCreatorNotifications = this.getBooleanSetting(receiveCreatorNotifications, true);
+    const actualEnableDht = this.getBooleanSetting(enableDht, false);
 
     return (
       <View style={settingsStyle.container}>
@@ -305,7 +307,7 @@ class SettingsPage extends React.PureComponent {
               </Text>
               <Text style={settingsStyle.description}>
                 {__(
-                  'Enable this option for quicker app launch and to keep the synchronisation with the blockchain up to date.'
+                  'Enable this option for quicker app launch and to keep the synchronisation with the blockchain up to date.',
                 )}
               </Text>
             </View>
@@ -321,6 +323,23 @@ class SettingsPage extends React.PureComponent {
               />
             </View>
           </View>
+
+          <View style={settingsStyle.row}>
+            <View style={settingsStyle.switchText}>
+              <Text style={settingsStyle.label}>{__('Participate in the data network')}</Text>
+              <Text style={settingsStyle.description}>
+                {__('Enable DHT (this will take effect upon app and background service restart)')}
+              </Text>
+            </View>
+            <View style={settingsStyle.switchContainer}>
+              <Switch
+                value={actualEnableDht}
+                onValueChange={value => {
+                  this.setNativeBooleanSetting(Constants.SETTING_DHT_ENABLED, value);
+                }}
+              />
+            </View>
+          </View>
         </ScrollView>
       </View>
     );

From f26f1fe215159a5bfb47ef4d17e62323399eff08 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 13 Mar 2020 17:37:44 +0100
Subject: [PATCH 04/15] fix related content

---
 package.json | 2 +-
 yarn.lock    | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/package.json b/package.json
index 570c0e9..97dac96 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
     "base-64": "^0.1.0",
     "@expo/vector-icons": "^8.1.0",
     "gfycat-style-urls": "^1.0.3",
-    "lbry-redux": "lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047",
+    "lbry-redux": "lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391",
     "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e",
     "lodash": ">=4.17.11",
     "merge": ">=1.2.1",
diff --git a/yarn.lock b/yarn.lock
index 0cc4999..a0a9c22 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4591,9 +4591,9 @@ latest-version@^3.0.0:
   dependencies:
     package-json "^4.0.0"
 
-lbry-redux@lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047:
+lbry-redux@lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f6e99498d2bc5b3f07e1e2b6f668a1a48de35047"
+  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/84e697079968364fe526020086c8a44f4d2ef391"
   dependencies:
     proxy-polyfill "0.1.6"
     reselect "^3.0.0"

From 4645a8f412d5a911971e5562126fe9be0779186c Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Tue, 17 Mar 2020 22:17:40 +0100
Subject: [PATCH 05/15] update pinned lbryinc commit

---
 android                  | 2 +-
 package.json             | 2 +-
 src/page/splash/index.js | 3 ++-
 src/page/splash/view.js  | 4 ++--
 yarn.lock                | 4 ++--
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/android b/android
index ea8ac78..bfd3c71 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit ea8ac783a8b05db8ab78472efc3fff32dc6869e6
+Subproject commit bfd3c711abc4f693dbb68b06fdfce67036b1e4a3
diff --git a/package.json b/package.json
index 97dac96..3e1423d 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
     "@expo/vector-icons": "^8.1.0",
     "gfycat-style-urls": "^1.0.3",
     "lbry-redux": "lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391",
-    "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e",
+    "lbryinc": "lbryio/lbryinc#28afb9b06c3d142bad8347939c043a21b6cb1ae1",
     "lodash": ">=4.17.11",
     "merge": ">=1.2.1",
     "moment": "^2.22.1",
diff --git a/src/page/splash/index.js b/src/page/splash/index.js
index bfa8aaf..346a6c3 100644
--- a/src/page/splash/index.js
+++ b/src/page/splash/index.js
@@ -28,7 +28,8 @@ const select = state => ({
 });
 
 const perform = dispatch => ({
-  authenticate: (appVersion, os, firebaseToken) => dispatch(doAuthenticate(appVersion, os, firebaseToken)),
+  authenticate: (appVersion, os, firebaseToken, callInstall) =>
+    dispatch(doAuthenticate(appVersion, os, firebaseToken, true, null, callInstall)),
   installNewWithParams: (appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken) =>
     dispatch(doInstallNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken)),
   balanceSubscribe: () => dispatch(doBalanceSubscribe()),
diff --git a/src/page/splash/view.js b/src/page/splash/view.js
index 98b2601..de62aab 100644
--- a/src/page/splash/view.js
+++ b/src/page/splash/view.js
@@ -223,9 +223,9 @@ class SplashScreen extends React.PureComponent {
         this.setState({ shouldAuthenticate: true }, () => {
           NativeModules.Firebase.getMessagingToken()
             .then(firebaseToken => {
-              authenticate(appVersion, Platform.OS, firebaseToken);
+              authenticate(appVersion, Platform.OS, firebaseToken, true);
             })
-            .catch(() => authenticate(appVersion, Platform.OS));
+            .catch(() => authenticate(appVersion, Platform.OS, null, true));
         });
       });
     }
diff --git a/yarn.lock b/yarn.lock
index a0a9c22..a411c72 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4599,9 +4599,9 @@ lbry-redux@lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391:
     reselect "^3.0.0"
     uuid "^3.3.2"
 
-lbryinc@lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e:
+lbryinc@lbryio/lbryinc#28afb9b06c3d142bad8347939c043a21b6cb1ae1:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/1fc104c2d29d1d3975234c3606e848eaa28e1b6e"
+  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/28afb9b06c3d142bad8347939c043a21b6cb1ae1"
   dependencies:
     reselect "^3.0.0"
 

From 12d7fbd4727a88658c42a3469e716fe0a20e945e Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 20 Mar 2020 08:25:39 +0100
Subject: [PATCH 06/15] lbry.tv hybrid mode (#132)

* use lbry.tv for resolve and claim_search
* gracefully handle dynamic sdk ready state
* update pinned lbry-redux commit
* use empty state view when sdk is not ready
* traditional mode if dht is enabled
---
 android                                       |     2 +-
 package-lock.json                             | 12178 ----------------
 package.json                                  |     4 +-
 src/component/AppNavigator.js                 |    47 +
 src/component/channelIconItem/index.js        |     5 +-
 src/component/claimList/index.js              |     5 +-
 src/component/claimResultItem/index.js        |     5 +-
 src/component/drawerContent/index.js          |    11 +-
 src/component/drawerContent/view.js           |    31 +-
 src/component/fileItem/index.js               |     5 +-
 src/component/fileListItem/index.js           |     5 +-
 src/component/fileListItem/view.js            |    14 +-
 src/component/sdkLoadingStatus/index.js       |     4 +
 src/component/sdkLoadingStatus/view.js        |    15 +
 .../suggestedSubscriptionItem/index.js        |     5 +-
 src/component/suggestedSubscriptions/index.js |     5 +-
 .../suggestedSubscriptionsGrid/index.js       |     5 +-
 src/constants.js                              |     2 +
 src/index.js                                  |     4 +
 src/page/channelCreator/index.js              |     7 +-
 src/page/channelCreator/view.js               |    27 +-
 src/page/discover/index.js                    |     8 +-
 src/page/discover/view.js                     |     9 +-
 src/page/downloads/index.js                   |     9 +-
 src/page/downloads/view.js                    |    15 +-
 src/page/file/index.js                        |     7 +-
 src/page/file/view.js                         |    54 +-
 src/page/invites/index.js                     |    20 +-
 src/page/invites/view.js                      |    23 +-
 src/page/publish/index.js                     |     7 +-
 src/page/publish/view.js                      |    16 +-
 src/page/publishes/index.js                   |     7 +-
 src/page/publishes/view.js                    |    17 +-
 src/page/rewards/index.js                     |     9 +-
 src/page/rewards/view.js                      |    17 +-
 src/page/settings/view.js                     |    16 +-
 src/page/splash/index.js                      |     8 +-
 src/page/splash/view.js                       |   189 +-
 src/page/subscriptions/index.js               |     8 +-
 src/page/subscriptions/view.js                |    19 +-
 src/page/tag/index.js                         |     8 +-
 src/page/tag/view.js                          |     6 +-
 src/page/wallet/index.js                      |     8 +-
 src/page/wallet/view.js                       |    27 +-
 src/redux/actions/settings.js                 |     8 +
 src/redux/reducers/settings.js                |     6 +
 src/redux/selectors/settings.js               |    32 +-
 src/styles/discover.js                        |    17 +
 yarn.lock                                     |     8 +-
 49 files changed, 479 insertions(+), 12485 deletions(-)
 delete mode 100644 package-lock.json
 create mode 100644 src/component/sdkLoadingStatus/index.js
 create mode 100644 src/component/sdkLoadingStatus/view.js

diff --git a/android b/android
index bfd3c71..e9f2554 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit bfd3c711abc4f693dbb68b06fdfce67036b1e4a3
+Subproject commit e9f25546979eee36751353c187dc9944ab1e508e
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index b8c3872..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,12178 +0,0 @@
-{
-    "name": "LBRYApp",
-    "version": "0.0.1",
-    "lockfileVersion": 1,
-    "requires": true,
-    "dependencies": {
-        "@babel/code-frame": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
-            "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
-            "requires": {
-                "@babel/highlight": "^7.0.0"
-            }
-        },
-        "@babel/core": {
-            "version": "7.7.7",
-            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
-            "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
-            "requires": {
-                "@babel/code-frame": "^7.5.5",
-                "@babel/generator": "^7.7.7",
-                "@babel/helpers": "^7.7.4",
-                "@babel/parser": "^7.7.7",
-                "@babel/template": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4",
-                "convert-source-map": "^1.7.0",
-                "debug": "^4.1.0",
-                "json5": "^2.1.0",
-                "lodash": "^4.17.13",
-                "resolve": "^1.3.2",
-                "semver": "^5.4.1",
-                "source-map": "^0.5.0"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/generator": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
-            "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
-            "requires": {
-                "@babel/types": "^7.5.5",
-                "jsesc": "^2.5.1",
-                "lodash": "^4.17.13",
-                "source-map": "^0.5.0",
-                "trim-right": "^1.0.1"
-            }
-        },
-        "@babel/helper-annotate-as-pure": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz",
-            "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==",
-            "requires": {
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-builder-binary-assignment-operator-visitor": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz",
-            "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==",
-            "requires": {
-                "@babel/helper-explode-assignable-expression": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-builder-react-jsx": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz",
-            "integrity": "sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA==",
-            "requires": {
-                "@babel/types": "^7.7.4",
-                "esutils": "^2.0.0"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-call-delegate": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz",
-            "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==",
-            "requires": {
-                "@babel/helper-hoist-variables": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/helper-create-class-features-plugin": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz",
-            "integrity": "sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==",
-            "requires": {
-                "@babel/helper-function-name": "^7.7.4",
-                "@babel/helper-member-expression-to-functions": "^7.7.4",
-                "@babel/helper-optimise-call-expression": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-replace-supers": "^7.7.4",
-                "@babel/helper-split-export-declaration": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-create-regexp-features-plugin": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz",
-            "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==",
-            "requires": {
-                "@babel/helper-regex": "^7.4.4",
-                "regexpu-core": "^4.6.0"
-            }
-        },
-        "@babel/helper-define-map": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz",
-            "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==",
-            "requires": {
-                "@babel/helper-function-name": "^7.7.4",
-                "@babel/types": "^7.7.4",
-                "lodash": "^4.17.13"
-            },
-            "dependencies": {
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-explode-assignable-expression": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz",
-            "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==",
-            "requires": {
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/helper-function-name": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
-            "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
-            "requires": {
-                "@babel/helper-get-function-arity": "^7.0.0",
-                "@babel/template": "^7.1.0",
-                "@babel/types": "^7.0.0"
-            }
-        },
-        "@babel/helper-get-function-arity": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
-            "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
-            "requires": {
-                "@babel/types": "^7.0.0"
-            }
-        },
-        "@babel/helper-hoist-variables": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz",
-            "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==",
-            "requires": {
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-member-expression-to-functions": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz",
-            "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==",
-            "requires": {
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-module-imports": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz",
-            "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==",
-            "requires": {
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-module-transforms": {
-            "version": "7.7.5",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz",
-            "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==",
-            "requires": {
-                "@babel/helper-module-imports": "^7.7.4",
-                "@babel/helper-simple-access": "^7.7.4",
-                "@babel/helper-split-export-declaration": "^7.7.4",
-                "@babel/template": "^7.7.4",
-                "@babel/types": "^7.7.4",
-                "lodash": "^4.17.13"
-            },
-            "dependencies": {
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-optimise-call-expression": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz",
-            "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==",
-            "requires": {
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-plugin-utils": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
-            "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
-        },
-        "@babel/helper-regex": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
-            "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
-            "requires": {
-                "lodash": "^4.17.13"
-            }
-        },
-        "@babel/helper-remap-async-to-generator": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz",
-            "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==",
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.7.4",
-                "@babel/helper-wrap-function": "^7.7.4",
-                "@babel/template": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/helper-replace-supers": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz",
-            "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==",
-            "requires": {
-                "@babel/helper-member-expression-to-functions": "^7.7.4",
-                "@babel/helper-optimise-call-expression": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/helper-simple-access": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz",
-            "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==",
-            "requires": {
-                "@babel/template": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/helper-split-export-declaration": {
-            "version": "7.4.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
-            "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
-            "requires": {
-                "@babel/types": "^7.4.4"
-            }
-        },
-        "@babel/helper-wrap-function": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz",
-            "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==",
-            "requires": {
-                "@babel/helper-function-name": "^7.7.4",
-                "@babel/template": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/helpers": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
-            "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
-            "requires": {
-                "@babel/template": "^7.7.4",
-                "@babel/traverse": "^7.7.4",
-                "@babel/types": "^7.7.4"
-            },
-            "dependencies": {
-                "@babel/generator": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-                    "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-                    "requires": {
-                        "@babel/types": "^7.7.4",
-                        "jsesc": "^2.5.1",
-                        "lodash": "^4.17.13",
-                        "source-map": "^0.5.0"
-                    }
-                },
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/traverse": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
-                    "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.5.5",
-                        "@babel/generator": "^7.7.4",
-                        "@babel/helper-function-name": "^7.7.4",
-                        "@babel/helper-split-export-declaration": "^7.7.4",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4",
-                        "debug": "^4.1.0",
-                        "globals": "^11.1.0",
-                        "lodash": "^4.17.13"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/highlight": {
-            "version": "7.5.0",
-            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
-            "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
-            "requires": {
-                "chalk": "^2.0.0",
-                "esutils": "^2.0.2",
-                "js-tokens": "^4.0.0"
-            }
-        },
-        "@babel/parser": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
-            "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g=="
-        },
-        "@babel/plugin-external-helpers": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.7.4.tgz",
-            "integrity": "sha512-RVGNajLaFlknbZLutaP/uv7Q+xmVs2LMlEWFXbcjLnwtBdPqAVpV3nzYIAJqri/VjJCUrhG5nALijtg0aND+XA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-proposal-class-properties": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz",
-            "integrity": "sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==",
-            "requires": {
-                "@babel/helper-create-class-features-plugin": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-proposal-export-default-from": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.7.4.tgz",
-            "integrity": "sha512-1t6dh7BHYUz4zD1m4pozYYEZy/3m8dgOr9owx3r0mPPI3iGKRUKUbIxfYmcJ4hwljs/dhd0qOTr1ZDUp43ix+w==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-export-default-from": "^7.7.4"
-            }
-        },
-        "@babel/plugin-proposal-nullish-coalescing-operator": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz",
-            "integrity": "sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.7.4"
-            }
-        },
-        "@babel/plugin-proposal-object-rest-spread": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
-            "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
-            }
-        },
-        "@babel/plugin-proposal-optional-catch-binding": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz",
-            "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-optional-catch-binding": "^7.7.4"
-            }
-        },
-        "@babel/plugin-proposal-optional-chaining": {
-            "version": "7.7.5",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.5.tgz",
-            "integrity": "sha512-sOwFqT8JSchtJeDD+CjmWCaiFoLxY4Ps7NjvwHC/U7l4e9i5pTRNt8nDMIFSOUL+ncFbYSwruHM8WknYItWdXw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-optional-chaining": "^7.7.4"
-            }
-        },
-        "@babel/plugin-syntax-class-properties": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.7.4.tgz",
-            "integrity": "sha512-JH3v5ZOeKT0qqdJ9BeBcZTFQiJOMax8RopSr1bH6ASkZKo2qWsvBML7W1mp89sszBRDBBRO8snqcByGdrMTdMg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-dynamic-import": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz",
-            "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-export-default-from": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.7.4.tgz",
-            "integrity": "sha512-j888jpjATLEzOWhKawq46UrpXnCRDbdhBd5io4jgwjJ3+CHHGCRb6PNAVEgs+BXIb+dNRAmnkv36zfB992PRVw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-flow": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz",
-            "integrity": "sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-jsx": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz",
-            "integrity": "sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-nullish-coalescing-operator": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz",
-            "integrity": "sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-object-rest-spread": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
-            "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-optional-catch-binding": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz",
-            "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-optional-chaining": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz",
-            "integrity": "sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-syntax-typescript": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz",
-            "integrity": "sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-arrow-functions": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz",
-            "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-async-to-generator": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz",
-            "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==",
-            "requires": {
-                "@babel/helper-module-imports": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-remap-async-to-generator": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-block-scoped-functions": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz",
-            "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-block-scoping": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz",
-            "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "lodash": "^4.17.13"
-            }
-        },
-        "@babel/plugin-transform-classes": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz",
-            "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==",
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.7.4",
-                "@babel/helper-define-map": "^7.7.4",
-                "@babel/helper-function-name": "^7.7.4",
-                "@babel/helper-optimise-call-expression": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-replace-supers": "^7.7.4",
-                "@babel/helper-split-export-declaration": "^7.7.4",
-                "globals": "^11.1.0"
-            },
-            "dependencies": {
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-split-export-declaration": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
-                    "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/plugin-transform-computed-properties": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz",
-            "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-destructuring": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz",
-            "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-exponentiation-operator": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz",
-            "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==",
-            "requires": {
-                "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-flow-strip-types": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz",
-            "integrity": "sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-flow": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-for-of": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz",
-            "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-function-name": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz",
-            "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==",
-            "requires": {
-                "@babel/helper-function-name": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            },
-            "dependencies": {
-                "@babel/helper-function-name": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
-                    "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
-                    "requires": {
-                        "@babel/helper-get-function-arity": "^7.7.4",
-                        "@babel/template": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/parser": {
-                    "version": "7.7.7",
-                    "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz",
-                    "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw=="
-                },
-                "@babel/template": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
-                    "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.7.4",
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/plugin-transform-literals": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz",
-            "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-member-expression-literals": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz",
-            "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-modules-commonjs": {
-            "version": "7.7.5",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz",
-            "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==",
-            "requires": {
-                "@babel/helper-module-transforms": "^7.7.5",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-simple-access": "^7.7.4",
-                "babel-plugin-dynamic-import-node": "^2.3.0"
-            }
-        },
-        "@babel/plugin-transform-object-assign": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.7.4.tgz",
-            "integrity": "sha512-0TpeUlnhQDwKxPLTIckdaWt46L2s61c/5w5snw1OUod5ehOJywZD98Ha3dFHVjeqkfOFtOTH7cqxddjxUuvcmg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-object-super": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz",
-            "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-replace-supers": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-parameters": {
-            "version": "7.7.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz",
-            "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==",
-            "requires": {
-                "@babel/helper-call-delegate": "^7.7.4",
-                "@babel/helper-get-function-arity": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            },
-            "dependencies": {
-                "@babel/helper-get-function-arity": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
-                    "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
-                    "requires": {
-                        "@babel/types": "^7.7.4"
-                    }
-                },
-                "@babel/types": {
-                    "version": "7.7.4",
-                    "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
-                    "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "lodash": "^4.17.13",
-                        "to-fast-properties": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "@babel/plugin-transform-property-literals": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz",
-            "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-react-display-name": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz",
-            "integrity": "sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-react-jsx": {
-            "version": "7.7.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz",
-            "integrity": "sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw==",
-            "requires": {
-                "@babel/helper-builder-react-jsx": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-jsx": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-react-jsx-source": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz",
-            "integrity": "sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-jsx": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-regenerator": {
-            "version": "7.7.5",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz",
-            "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==",
-            "requires": {
-                "regenerator-transform": "^0.14.0"
-            }
-        },
-        "@babel/plugin-transform-runtime": {
-            "version": "7.7.6",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz",
-            "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==",
-            "requires": {
-                "@babel/helper-module-imports": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "resolve": "^1.8.1",
-                "semver": "^5.5.1"
-            }
-        },
-        "@babel/plugin-transform-shorthand-properties": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz",
-            "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-spread": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz",
-            "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-sticky-regex": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz",
-            "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==",
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/helper-regex": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-template-literals": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz",
-            "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==",
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/plugin-transform-typescript": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz",
-            "integrity": "sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg==",
-            "requires": {
-                "@babel/helper-create-class-features-plugin": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/plugin-syntax-typescript": "^7.7.4"
-            }
-        },
-        "@babel/plugin-transform-unicode-regex": {
-            "version": "7.7.4",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz",
-            "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==",
-            "requires": {
-                "@babel/helper-create-regexp-features-plugin": "^7.7.4",
-                "@babel/helper-plugin-utils": "^7.0.0"
-            }
-        },
-        "@babel/register": {
-            "version": "7.7.7",
-            "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.7.tgz",
-            "integrity": "sha512-S2mv9a5dc2pcpg/ConlKZx/6wXaEwHeqfo7x/QbXsdCAZm+WJC1ekVvL1TVxNsedTs5y/gG63MhJTEsmwmjtiA==",
-            "requires": {
-                "find-cache-dir": "^2.0.0",
-                "lodash": "^4.17.13",
-                "make-dir": "^2.1.0",
-                "pirates": "^4.0.0",
-                "source-map-support": "^0.5.16"
-            }
-        },
-        "@babel/runtime": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
-            "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
-            "requires": {
-                "regenerator-runtime": "^0.13.2"
-            },
-            "dependencies": {
-                "regenerator-runtime": {
-                    "version": "0.13.3",
-                    "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
-                    "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
-                }
-            }
-        },
-        "@babel/template": {
-            "version": "7.4.4",
-            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
-            "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "@babel/parser": "^7.4.4",
-                "@babel/types": "^7.4.4"
-            }
-        },
-        "@babel/traverse": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
-            "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
-            "requires": {
-                "@babel/code-frame": "^7.5.5",
-                "@babel/generator": "^7.5.5",
-                "@babel/helper-function-name": "^7.1.0",
-                "@babel/helper-split-export-declaration": "^7.4.4",
-                "@babel/parser": "^7.5.5",
-                "@babel/types": "^7.5.5",
-                "debug": "^4.1.0",
-                "globals": "^11.1.0",
-                "lodash": "^4.17.13"
-            },
-            "dependencies": {
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "@babel/types": {
-            "version": "7.5.5",
-            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
-            "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
-            "requires": {
-                "esutils": "^2.0.2",
-                "lodash": "^4.17.13",
-                "to-fast-properties": "^2.0.0"
-            }
-        },
-        "@callstack/react-theme-provider": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.3.tgz",
-            "integrity": "sha512-B+9JBK7zsND/AdVkjwHvbb4cR05fJofLFG30hOeoXke8WkKAWN36yFljauAhI8qwlXlGFGZMYE1wQvsqBSccrA==",
-            "requires": {
-                "@types/hoist-non-react-statics": "^3.3.1",
-                "deepmerge": "^3.2.0",
-                "hoist-non-react-statics": "^3.3.0"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.1",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-                    "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                }
-            }
-        },
-        "@cnakazawa/watch": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
-            "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
-            "requires": {
-                "exec-sh": "^0.3.2",
-                "minimist": "^1.2.0"
-            }
-        },
-        "@expo/vector-icons": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-8.1.0.tgz",
-            "integrity": "sha512-/aKa+bgp3LIcTKJWPLRYTYCL0wf/Fr4dwl4XYmNGFG092pK3McuBoDk3b8tWyZnXBnEiqnMLd6Qwr+LEX6Jc0Q==",
-            "requires": {
-                "lodash": "^4.17.4",
-                "react-native-vector-icons": "6.0.0"
-            },
-            "dependencies": {
-                "react-native-vector-icons": {
-                    "version": "6.0.0",
-                    "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.0.0.tgz",
-                    "integrity": "sha512-uF3oWb3TV42uXi2apVOZHw9oy9Nr5SXDVwOo1umQWo/yYCrDzXyVfq14DzezgEbJ9jfc/yghBelj0agkXmOKlg==",
-                    "requires": {
-                        "lodash": "^4.0.0",
-                        "prop-types": "^15.6.2",
-                        "yargs": "^8.0.2"
-                    }
-                }
-            }
-        },
-        "@hapi/address": {
-            "version": "2.1.4",
-            "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
-            "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ=="
-        },
-        "@hapi/bourne": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
-            "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA=="
-        },
-        "@hapi/hoek": {
-            "version": "8.5.0",
-            "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.0.tgz",
-            "integrity": "sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw=="
-        },
-        "@hapi/joi": {
-            "version": "15.1.1",
-            "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
-            "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
-            "requires": {
-                "@hapi/address": "2.x.x",
-                "@hapi/bourne": "1.x.x",
-                "@hapi/hoek": "8.x.x",
-                "@hapi/topo": "3.x.x"
-            }
-        },
-        "@hapi/topo": {
-            "version": "3.1.6",
-            "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
-            "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
-            "requires": {
-                "@hapi/hoek": "^8.3.0"
-            }
-        },
-        "@jest/console": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
-            "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
-            "requires": {
-                "@jest/source-map": "^24.9.0",
-                "chalk": "^2.0.1",
-                "slash": "^2.0.0"
-            }
-        },
-        "@jest/fake-timers": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
-            "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
-            "requires": {
-                "@jest/types": "^24.9.0",
-                "jest-message-util": "^24.9.0",
-                "jest-mock": "^24.9.0"
-            }
-        },
-        "@jest/source-map": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
-            "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
-            "requires": {
-                "callsites": "^3.0.0",
-                "graceful-fs": "^4.1.15",
-                "source-map": "^0.6.0"
-            },
-            "dependencies": {
-                "callsites": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-                    "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
-            }
-        },
-        "@jest/test-result": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
-            "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
-            "requires": {
-                "@jest/console": "^24.9.0",
-                "@jest/types": "^24.9.0",
-                "@types/istanbul-lib-coverage": "^2.0.0"
-            }
-        },
-        "@jest/types": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
-            "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
-            "requires": {
-                "@types/istanbul-lib-coverage": "^2.0.0",
-                "@types/istanbul-reports": "^1.1.1",
-                "@types/yargs": "^13.0.0"
-            }
-        },
-        "@react-native-community/async-storage": {
-            "version": "1.6.1",
-            "resolved": "https://registry.npmjs.org/@react-native-community/async-storage/-/async-storage-1.6.1.tgz",
-            "integrity": "sha512-1WA28xfdhG+unkTEk/lXnqI2izv6belo0CYw7UdvaeHm8TIYT6eTmIIdGR7oiCa2xSKEnaPQqRMH6h7gyLNbww=="
-        },
-        "@react-native-community/cli-debugger-ui": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz",
-            "integrity": "sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g==",
-            "requires": {
-                "serve-static": "^1.13.1"
-            }
-        },
-        "@react-native-community/cli-platform-android": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-3.0.3.tgz",
-            "integrity": "sha512-rNO9DmRiVhB6aP2DVUjEJv7ecriTARDZND88ny3xNVUkrD1Y+zwF6aZu3eoT52VXOxLCSLiJzz19OiyGmfqxYg==",
-            "requires": {
-                "@react-native-community/cli-tools": "^3.0.0",
-                "chalk": "^2.4.2",
-                "execa": "^1.0.0",
-                "jetifier": "^1.6.2",
-                "logkitty": "^0.6.0",
-                "slash": "^3.0.0",
-                "xmldoc": "^1.1.2"
-            },
-            "dependencies": {
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "execa": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-                    "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-                    "requires": {
-                        "cross-spawn": "^6.0.0",
-                        "get-stream": "^4.0.0",
-                        "is-stream": "^1.1.0",
-                        "npm-run-path": "^2.0.0",
-                        "p-finally": "^1.0.0",
-                        "signal-exit": "^3.0.0",
-                        "strip-eof": "^1.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-                }
-            }
-        },
-        "@react-native-community/cli-platform-ios": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.0.0.tgz",
-            "integrity": "sha512-QoNVlDj8eMXRZk9uktPFsctHurQpv9jKmiu6mQii4NEtT2npE7g1hbWpRNojutBsfgmCdQGDHd9uB54eeCnYgg==",
-            "requires": {
-                "@react-native-community/cli-tools": "^3.0.0",
-                "chalk": "^2.4.2",
-                "js-yaml": "^3.13.1",
-                "xcode": "^2.0.0"
-            }
-        },
-        "@react-native-community/cli-tools": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-3.0.0.tgz",
-            "integrity": "sha512-8IhQKZdf3E4CR8T7HhkPGgorot/cLkRDgneJFDSWk/wCYZAuUh4NEAdumQV7N0jLSMWX7xxiWUPi94lOBxVY9g==",
-            "requires": {
-                "chalk": "^2.4.2",
-                "lodash": "^4.17.5",
-                "mime": "^2.4.1",
-                "node-fetch": "^2.5.0"
-            },
-            "dependencies": {
-                "mime": {
-                    "version": "2.4.4",
-                    "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-                    "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
-                }
-            }
-        },
-        "@react-native-community/cli-types": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-3.0.0.tgz",
-            "integrity": "sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg=="
-        },
-        "@react-native-community/eslint-config": {
-            "version": "0.0.5",
-            "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-0.0.5.tgz",
-            "integrity": "sha512-jwO2tnKaTPTLX5XYXMHGEnFdf543SU7jz98/OF5mDH3b7lP+BOaCD+jVfqqHoDRkcqyPlYiR1CgwVGWpi0vMWg==",
-            "dev": true,
-            "requires": {
-                "@typescript-eslint/eslint-plugin": "^1.5.0",
-                "@typescript-eslint/parser": "^1.5.0",
-                "babel-eslint": "10.0.1",
-                "eslint-plugin-eslint-comments": "^3.1.1",
-                "eslint-plugin-flowtype": "2.50.3",
-                "eslint-plugin-jest": "22.4.1",
-                "eslint-plugin-prettier": "2.6.2",
-                "eslint-plugin-react": "7.12.4",
-                "eslint-plugin-react-hooks": "^1.5.1",
-                "eslint-plugin-react-native": "3.6.0",
-                "prettier": "1.16.4"
-            },
-            "dependencies": {
-                "babel-eslint": {
-                    "version": "10.0.1",
-                    "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
-                    "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "@babel/parser": "^7.0.0",
-                        "@babel/traverse": "^7.0.0",
-                        "@babel/types": "^7.0.0",
-                        "eslint-scope": "3.7.1",
-                        "eslint-visitor-keys": "^1.0.0"
-                    }
-                },
-                "eslint-plugin-react": {
-                    "version": "7.12.4",
-                    "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz",
-                    "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==",
-                    "dev": true,
-                    "requires": {
-                        "array-includes": "^3.0.3",
-                        "doctrine": "^2.1.0",
-                        "has": "^1.0.3",
-                        "jsx-ast-utils": "^2.0.1",
-                        "object.fromentries": "^2.0.0",
-                        "prop-types": "^15.6.2",
-                        "resolve": "^1.9.0"
-                    }
-                },
-                "prettier": {
-                    "version": "1.16.4",
-                    "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz",
-                    "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==",
-                    "dev": true
-                }
-            }
-        },
-        "@react-native-community/masked-view": {
-            "version": "0.1.5",
-            "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.5.tgz",
-            "integrity": "sha512-Lj1DzfCmW0f4HnmHtEuX8Yy2f7cnUA8r5KGGUuDDGtQt1so6QJkKeUmsnLo2zYDtsF8due6hvIL06Vdo5xxuLQ=="
-        },
-        "@react-navigation/core": {
-            "version": "3.5.1",
-            "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.5.1.tgz",
-            "integrity": "sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==",
-            "requires": {
-                "hoist-non-react-statics": "^3.3.0",
-                "path-to-regexp": "^1.7.0",
-                "query-string": "^6.4.2",
-                "react-is": "^16.8.6"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.1",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-                    "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                }
-            }
-        },
-        "@react-navigation/native": {
-            "version": "3.6.2",
-            "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.6.2.tgz",
-            "integrity": "sha512-Cybeou6N82ZeRmgnGlu+wzlV3z5BZQR2dmYaNFV1TNLUGHqtvv8E7oNw9uYcz9Ox5LFbiX+FdNTn2d6ZPlK0kg==",
-            "requires": {
-                "hoist-non-react-statics": "^3.0.1",
-                "react-native-safe-area-view": "^0.14.1",
-                "react-native-screens": "^1.0.0 || ^1.0.0-alpha"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.1",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-                    "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                },
-                "react-native-safe-area-view": {
-                    "version": "0.14.8",
-                    "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz",
-                    "integrity": "sha512-MtRSIcZNstxv87Jet+UsPhEd1tpGe8cVskDXlP657x6rHpSrbrc+y13ZNXrwAgGNNhqQNX7UJT68ZIq//ZRmvw==",
-                    "requires": {
-                        "hoist-non-react-statics": "^2.3.1"
-                    },
-                    "dependencies": {
-                        "hoist-non-react-statics": {
-                            "version": "2.5.5",
-                            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
-                            "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
-                        }
-                    }
-                }
-            }
-        },
-        "@samverschueren/stream-to-observable": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
-            "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
-            "dev": true,
-            "requires": {
-                "any-observable": "^0.3.0"
-            }
-        },
-        "@types/eslint-visitor-keys": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
-            "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
-            "dev": true
-        },
-        "@types/hoist-non-react-statics": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-            "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
-            "requires": {
-                "@types/react": "*",
-                "hoist-non-react-statics": "^3.3.0"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.1",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-                    "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                }
-            }
-        },
-        "@types/istanbul-lib-coverage": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
-            "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg=="
-        },
-        "@types/istanbul-lib-report": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
-            "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
-            "requires": {
-                "@types/istanbul-lib-coverage": "*"
-            }
-        },
-        "@types/istanbul-reports": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
-            "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
-            "requires": {
-                "@types/istanbul-lib-coverage": "*",
-                "@types/istanbul-lib-report": "*"
-            }
-        },
-        "@types/json-schema": {
-            "version": "7.0.4",
-            "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz",
-            "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==",
-            "dev": true
-        },
-        "@types/node": {
-            "version": "8.10.52",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.52.tgz",
-            "integrity": "sha512-2RbW7WXeLex6RI+kQSxq6Ym0GiVcODeQ4Km7MnnTX5BHdOGQnqVa+s6AUmAW+OFYAJ8wv9QxvNZXm7/kBdGTVw==",
-            "dev": true
-        },
-        "@types/prop-types": {
-            "version": "15.7.3",
-            "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
-            "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
-        },
-        "@types/react": {
-            "version": "16.9.17",
-            "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.17.tgz",
-            "integrity": "sha512-UP27In4fp4sWF5JgyV6pwVPAQM83Fj76JOcg02X5BZcpSu5Wx+fP9RMqc2v0ssBoQIFvD5JdKY41gjJJKmw6Bg==",
-            "requires": {
-                "@types/prop-types": "*",
-                "csstype": "^2.2.0"
-            }
-        },
-        "@types/stack-utils": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
-            "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw=="
-        },
-        "@types/yargs": {
-            "version": "13.0.4",
-            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.4.tgz",
-            "integrity": "sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A==",
-            "requires": {
-                "@types/yargs-parser": "*"
-            }
-        },
-        "@types/yargs-parser": {
-            "version": "13.1.0",
-            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
-            "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg=="
-        },
-        "@typescript-eslint/eslint-plugin": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz",
-            "integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==",
-            "dev": true,
-            "requires": {
-                "@typescript-eslint/experimental-utils": "1.13.0",
-                "eslint-utils": "^1.3.1",
-                "functional-red-black-tree": "^1.0.1",
-                "regexpp": "^2.0.1",
-                "tsutils": "^3.7.0"
-            }
-        },
-        "@typescript-eslint/experimental-utils": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
-            "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
-            "dev": true,
-            "requires": {
-                "@types/json-schema": "^7.0.3",
-                "@typescript-eslint/typescript-estree": "1.13.0",
-                "eslint-scope": "^4.0.0"
-            },
-            "dependencies": {
-                "eslint-scope": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-                    "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-                    "dev": true,
-                    "requires": {
-                        "esrecurse": "^4.1.0",
-                        "estraverse": "^4.1.1"
-                    }
-                }
-            }
-        },
-        "@typescript-eslint/parser": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz",
-            "integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==",
-            "dev": true,
-            "requires": {
-                "@types/eslint-visitor-keys": "^1.0.0",
-                "@typescript-eslint/experimental-utils": "1.13.0",
-                "@typescript-eslint/typescript-estree": "1.13.0",
-                "eslint-visitor-keys": "^1.0.0"
-            }
-        },
-        "@typescript-eslint/typescript-estree": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
-            "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
-            "dev": true,
-            "requires": {
-                "lodash.unescape": "4.0.1",
-                "semver": "5.5.0"
-            },
-            "dependencies": {
-                "semver": {
-                    "version": "5.5.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
-                    "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
-                    "dev": true
-                }
-            }
-        },
-        "abort-controller": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
-            "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-            "requires": {
-                "event-target-shim": "^5.0.0"
-            }
-        },
-        "absolute-path": {
-            "version": "0.0.0",
-            "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
-            "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c="
-        },
-        "accepts": {
-            "version": "1.3.7",
-            "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-            "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-            "requires": {
-                "mime-types": "~2.1.24",
-                "negotiator": "0.6.2"
-            }
-        },
-        "acorn": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
-            "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
-            "dev": true
-        },
-        "acorn-jsx": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
-            "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
-            "dev": true
-        },
-        "ajv": {
-            "version": "6.10.2",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
-            "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
-            "dev": true,
-            "requires": {
-                "fast-deep-equal": "^2.0.1",
-                "fast-json-stable-stringify": "^2.0.0",
-                "json-schema-traverse": "^0.4.1",
-                "uri-js": "^4.2.2"
-            }
-        },
-        "ansi-align": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
-            "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
-            "dev": true,
-            "requires": {
-                "string-width": "^2.0.0"
-            }
-        },
-        "ansi-colors": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
-            "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
-            "requires": {
-                "ansi-wrap": "^0.1.0"
-            }
-        },
-        "ansi-cyan": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
-            "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
-            "requires": {
-                "ansi-wrap": "0.1.0"
-            }
-        },
-        "ansi-escapes": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-            "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="
-        },
-        "ansi-fragments": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
-            "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
-            "requires": {
-                "colorette": "^1.0.7",
-                "slice-ansi": "^2.0.0",
-                "strip-ansi": "^5.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
-        "ansi-gray": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
-            "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
-            "requires": {
-                "ansi-wrap": "0.1.0"
-            }
-        },
-        "ansi-red": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
-            "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
-            "requires": {
-                "ansi-wrap": "0.1.0"
-            }
-        },
-        "ansi-regex": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-            "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
-        },
-        "ansi-styles": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-            "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-            "dev": true
-        },
-        "ansi-wrap": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
-            "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
-        },
-        "any-observable": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
-            "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
-            "dev": true
-        },
-        "anymatch": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-            "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-            "requires": {
-                "micromatch": "^3.1.4",
-                "normalize-path": "^2.1.1"
-            }
-        },
-        "argparse": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-            "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-            "requires": {
-                "sprintf-js": "~1.0.2"
-            }
-        },
-        "arr-diff": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-            "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
-        },
-        "arr-flatten": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-            "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
-        },
-        "arr-union": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-            "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
-        },
-        "array-filter": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
-            "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
-        },
-        "array-find-index": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-            "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-            "dev": true
-        },
-        "array-includes": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
-            "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.2",
-                "es-abstract": "^1.7.0"
-            }
-        },
-        "array-map": {
-            "version": "0.0.0",
-            "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
-            "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
-        },
-        "array-reduce": {
-            "version": "0.0.0",
-            "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
-            "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
-        },
-        "array-slice": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
-            "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
-        },
-        "array-unique": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-            "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
-        },
-        "art": {
-            "version": "0.10.3",
-            "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz",
-            "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ=="
-        },
-        "asap": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-            "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
-        },
-        "asn1": {
-            "version": "0.2.4",
-            "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-            "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-            "dev": true,
-            "requires": {
-                "safer-buffer": "~2.1.0"
-            }
-        },
-        "assert-plus": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-            "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-            "dev": true
-        },
-        "assign-symbols": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-            "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
-        },
-        "astral-regex": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-            "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
-        },
-        "async": {
-            "version": "2.6.3",
-            "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-            "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
-            "requires": {
-                "lodash": "^4.17.14"
-            }
-        },
-        "async-limiter": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-            "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
-        },
-        "asynckit": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-            "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-            "dev": true
-        },
-        "atob": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-            "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
-        },
-        "aws-sign2": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-            "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-            "dev": true
-        },
-        "aws4": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
-            "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
-            "dev": true
-        },
-        "babel-code-frame": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
-            "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
-            "dev": true,
-            "requires": {
-                "chalk": "^1.1.3",
-                "esutils": "^2.0.2",
-                "js-tokens": "^3.0.2"
-            },
-            "dependencies": {
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "js-tokens": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
-                    "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
-                    "dev": true
-                }
-            }
-        },
-        "babel-eslint": {
-            "version": "10.0.2",
-            "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.2.tgz",
-            "integrity": "sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "@babel/parser": "^7.0.0",
-                "@babel/traverse": "^7.0.0",
-                "@babel/types": "^7.0.0",
-                "eslint-scope": "3.7.1",
-                "eslint-visitor-keys": "^1.0.0"
-            }
-        },
-        "babel-helper-bindify-decorators": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz",
-            "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-builder-binary-assignment-operator-visitor": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
-            "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
-            "dev": true,
-            "requires": {
-                "babel-helper-explode-assignable-expression": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-call-delegate": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
-            "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
-            "dev": true,
-            "requires": {
-                "babel-helper-hoist-variables": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-define-map": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
-            "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
-            "dev": true,
-            "requires": {
-                "babel-helper-function-name": "^6.24.1",
-                "babel-runtime": "^6.26.0",
-                "babel-types": "^6.26.0",
-                "lodash": "^4.17.4"
-            }
-        },
-        "babel-helper-explode-assignable-expression": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
-            "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-explode-class": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz",
-            "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=",
-            "dev": true,
-            "requires": {
-                "babel-helper-bindify-decorators": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-function-name": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
-            "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
-            "dev": true,
-            "requires": {
-                "babel-helper-get-function-arity": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-get-function-arity": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
-            "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-hoist-variables": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
-            "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-optimise-call-expression": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
-            "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-regex": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
-            "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.26.0",
-                "babel-types": "^6.26.0",
-                "lodash": "^4.17.4"
-            }
-        },
-        "babel-helper-remap-async-to-generator": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
-            "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
-            "dev": true,
-            "requires": {
-                "babel-helper-function-name": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-helper-replace-supers": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
-            "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
-            "dev": true,
-            "requires": {
-                "babel-helper-optimise-call-expression": "^6.24.1",
-                "babel-messages": "^6.23.0",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-messages": {
-            "version": "6.23.0",
-            "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
-            "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-check-es2015-constants": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
-            "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-dynamic-import-node": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
-            "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
-            "requires": {
-                "object.assign": "^4.1.0"
-            }
-        },
-        "babel-plugin-module-resolver": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz",
-            "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==",
-            "dev": true,
-            "requires": {
-                "find-babel-config": "^1.1.0",
-                "glob": "^7.1.2",
-                "pkg-up": "^2.0.0",
-                "reselect": "^3.0.1",
-                "resolve": "^1.4.0"
-            }
-        },
-        "babel-plugin-syntax-async-functions": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
-            "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
-            "dev": true
-        },
-        "babel-plugin-syntax-async-generators": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz",
-            "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=",
-            "dev": true
-        },
-        "babel-plugin-syntax-class-properties": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
-            "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
-            "dev": true
-        },
-        "babel-plugin-syntax-decorators": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
-            "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=",
-            "dev": true
-        },
-        "babel-plugin-syntax-dynamic-import": {
-            "version": "6.18.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
-            "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
-            "dev": true
-        },
-        "babel-plugin-syntax-exponentiation-operator": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
-            "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
-            "dev": true
-        },
-        "babel-plugin-syntax-flow": {
-            "version": "6.18.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
-            "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=",
-            "dev": true
-        },
-        "babel-plugin-syntax-object-rest-spread": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
-            "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
-            "dev": true
-        },
-        "babel-plugin-syntax-trailing-function-commas": {
-            "version": "7.0.0-beta.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
-            "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ=="
-        },
-        "babel-plugin-transform-async-generator-functions": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
-            "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
-            "dev": true,
-            "requires": {
-                "babel-helper-remap-async-to-generator": "^6.24.1",
-                "babel-plugin-syntax-async-generators": "^6.5.0",
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-async-to-generator": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
-            "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
-            "dev": true,
-            "requires": {
-                "babel-helper-remap-async-to-generator": "^6.24.1",
-                "babel-plugin-syntax-async-functions": "^6.8.0",
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-class-properties": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
-            "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
-            "dev": true,
-            "requires": {
-                "babel-helper-function-name": "^6.24.1",
-                "babel-plugin-syntax-class-properties": "^6.8.0",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-decorators": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz",
-            "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=",
-            "dev": true,
-            "requires": {
-                "babel-helper-explode-class": "^6.24.1",
-                "babel-plugin-syntax-decorators": "^6.13.0",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-arrow-functions": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
-            "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-block-scoped-functions": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
-            "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-block-scoping": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
-            "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.26.0",
-                "babel-template": "^6.26.0",
-                "babel-traverse": "^6.26.0",
-                "babel-types": "^6.26.0",
-                "lodash": "^4.17.4"
-            }
-        },
-        "babel-plugin-transform-es2015-classes": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
-            "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
-            "dev": true,
-            "requires": {
-                "babel-helper-define-map": "^6.24.1",
-                "babel-helper-function-name": "^6.24.1",
-                "babel-helper-optimise-call-expression": "^6.24.1",
-                "babel-helper-replace-supers": "^6.24.1",
-                "babel-messages": "^6.23.0",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-computed-properties": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
-            "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-destructuring": {
-            "version": "6.23.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
-            "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-duplicate-keys": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
-            "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-for-of": {
-            "version": "6.23.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
-            "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-function-name": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
-            "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
-            "dev": true,
-            "requires": {
-                "babel-helper-function-name": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-literals": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
-            "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-modules-amd": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
-            "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-modules-commonjs": {
-            "version": "6.26.2",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
-            "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
-            "dev": true,
-            "requires": {
-                "babel-plugin-transform-strict-mode": "^6.24.1",
-                "babel-runtime": "^6.26.0",
-                "babel-template": "^6.26.0",
-                "babel-types": "^6.26.0"
-            }
-        },
-        "babel-plugin-transform-es2015-modules-systemjs": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
-            "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
-            "dev": true,
-            "requires": {
-                "babel-helper-hoist-variables": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-modules-umd": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
-            "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-object-super": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
-            "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
-            "dev": true,
-            "requires": {
-                "babel-helper-replace-supers": "^6.24.1",
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-parameters": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
-            "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
-            "dev": true,
-            "requires": {
-                "babel-helper-call-delegate": "^6.24.1",
-                "babel-helper-get-function-arity": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-template": "^6.24.1",
-                "babel-traverse": "^6.24.1",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-shorthand-properties": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
-            "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-spread": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
-            "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-sticky-regex": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
-            "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
-            "dev": true,
-            "requires": {
-                "babel-helper-regex": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-plugin-transform-es2015-template-literals": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
-            "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-typeof-symbol": {
-            "version": "6.23.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
-            "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-es2015-unicode-regex": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
-            "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
-            "dev": true,
-            "requires": {
-                "babel-helper-regex": "^6.24.1",
-                "babel-runtime": "^6.22.0",
-                "regexpu-core": "^2.0.0"
-            },
-            "dependencies": {
-                "jsesc": {
-                    "version": "0.5.0",
-                    "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-                    "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
-                    "dev": true
-                },
-                "regexpu-core": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
-                    "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
-                    "dev": true,
-                    "requires": {
-                        "regenerate": "^1.2.1",
-                        "regjsgen": "^0.2.0",
-                        "regjsparser": "^0.1.4"
-                    }
-                },
-                "regjsgen": {
-                    "version": "0.2.0",
-                    "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
-                    "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
-                    "dev": true
-                },
-                "regjsparser": {
-                    "version": "0.1.5",
-                    "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
-                    "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
-                    "dev": true,
-                    "requires": {
-                        "jsesc": "~0.5.0"
-                    }
-                }
-            }
-        },
-        "babel-plugin-transform-exponentiation-operator": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
-            "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
-            "dev": true,
-            "requires": {
-                "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
-                "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-flow-comments": {
-            "version": "6.22.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-comments/-/babel-plugin-transform-flow-comments-6.22.0.tgz",
-            "integrity": "sha1-jZSREy8rSKvQZW+Wwg87vW/BdSk=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-syntax-flow": "^6.8.0",
-                "babel-runtime": "^6.22.0"
-            }
-        },
-        "babel-plugin-transform-object-rest-spread": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
-            "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-syntax-object-rest-spread": "^6.8.0",
-                "babel-runtime": "^6.26.0"
-            }
-        },
-        "babel-plugin-transform-regenerator": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
-            "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
-            "dev": true,
-            "requires": {
-                "regenerator-transform": "^0.10.0"
-            },
-            "dependencies": {
-                "regenerator-transform": {
-                    "version": "0.10.1",
-                    "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
-                    "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
-                    "dev": true,
-                    "requires": {
-                        "babel-runtime": "^6.18.0",
-                        "babel-types": "^6.19.0",
-                        "private": "^0.1.6"
-                    }
-                }
-            }
-        },
-        "babel-plugin-transform-strict-mode": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
-            "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.22.0",
-                "babel-types": "^6.24.1"
-            }
-        },
-        "babel-preset-env": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
-            "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
-            "dev": true,
-            "requires": {
-                "babel-plugin-check-es2015-constants": "^6.22.0",
-                "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
-                "babel-plugin-transform-async-to-generator": "^6.22.0",
-                "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
-                "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
-                "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
-                "babel-plugin-transform-es2015-classes": "^6.23.0",
-                "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
-                "babel-plugin-transform-es2015-destructuring": "^6.23.0",
-                "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
-                "babel-plugin-transform-es2015-for-of": "^6.23.0",
-                "babel-plugin-transform-es2015-function-name": "^6.22.0",
-                "babel-plugin-transform-es2015-literals": "^6.22.0",
-                "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
-                "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
-                "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
-                "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
-                "babel-plugin-transform-es2015-object-super": "^6.22.0",
-                "babel-plugin-transform-es2015-parameters": "^6.23.0",
-                "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
-                "babel-plugin-transform-es2015-spread": "^6.22.0",
-                "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
-                "babel-plugin-transform-es2015-template-literals": "^6.22.0",
-                "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
-                "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
-                "babel-plugin-transform-exponentiation-operator": "^6.22.0",
-                "babel-plugin-transform-regenerator": "^6.22.0",
-                "browserslist": "^3.2.6",
-                "invariant": "^2.2.2",
-                "semver": "^5.3.0"
-            },
-            "dependencies": {
-                "babel-plugin-syntax-trailing-function-commas": {
-                    "version": "6.22.0",
-                    "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
-                    "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
-                    "dev": true
-                }
-            }
-        },
-        "babel-preset-fbjs": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz",
-            "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==",
-            "requires": {
-                "@babel/plugin-proposal-class-properties": "^7.0.0",
-                "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-                "@babel/plugin-syntax-class-properties": "^7.0.0",
-                "@babel/plugin-syntax-flow": "^7.0.0",
-                "@babel/plugin-syntax-jsx": "^7.0.0",
-                "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
-                "@babel/plugin-transform-arrow-functions": "^7.0.0",
-                "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
-                "@babel/plugin-transform-block-scoping": "^7.0.0",
-                "@babel/plugin-transform-classes": "^7.0.0",
-                "@babel/plugin-transform-computed-properties": "^7.0.0",
-                "@babel/plugin-transform-destructuring": "^7.0.0",
-                "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-                "@babel/plugin-transform-for-of": "^7.0.0",
-                "@babel/plugin-transform-function-name": "^7.0.0",
-                "@babel/plugin-transform-literals": "^7.0.0",
-                "@babel/plugin-transform-member-expression-literals": "^7.0.0",
-                "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-                "@babel/plugin-transform-object-super": "^7.0.0",
-                "@babel/plugin-transform-parameters": "^7.0.0",
-                "@babel/plugin-transform-property-literals": "^7.0.0",
-                "@babel/plugin-transform-react-display-name": "^7.0.0",
-                "@babel/plugin-transform-react-jsx": "^7.0.0",
-                "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-                "@babel/plugin-transform-spread": "^7.0.0",
-                "@babel/plugin-transform-template-literals": "^7.0.0",
-                "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
-            }
-        },
-        "babel-preset-stage-2": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz",
-            "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-syntax-dynamic-import": "^6.18.0",
-                "babel-plugin-transform-class-properties": "^6.24.1",
-                "babel-plugin-transform-decorators": "^6.24.1",
-                "babel-preset-stage-3": "^6.24.1"
-            }
-        },
-        "babel-preset-stage-3": {
-            "version": "6.24.1",
-            "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz",
-            "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
-                "babel-plugin-transform-async-generator-functions": "^6.24.1",
-                "babel-plugin-transform-async-to-generator": "^6.24.1",
-                "babel-plugin-transform-exponentiation-operator": "^6.24.1",
-                "babel-plugin-transform-object-rest-spread": "^6.22.0"
-            },
-            "dependencies": {
-                "babel-plugin-syntax-trailing-function-commas": {
-                    "version": "6.22.0",
-                    "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
-                    "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
-                    "dev": true
-                }
-            }
-        },
-        "babel-runtime": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-            "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-            "dev": true,
-            "requires": {
-                "core-js": "^2.4.0",
-                "regenerator-runtime": "^0.11.0"
-            }
-        },
-        "babel-template": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
-            "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.26.0",
-                "babel-traverse": "^6.26.0",
-                "babel-types": "^6.26.0",
-                "babylon": "^6.18.0",
-                "lodash": "^4.17.4"
-            }
-        },
-        "babel-traverse": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
-            "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
-            "dev": true,
-            "requires": {
-                "babel-code-frame": "^6.26.0",
-                "babel-messages": "^6.23.0",
-                "babel-runtime": "^6.26.0",
-                "babel-types": "^6.26.0",
-                "babylon": "^6.18.0",
-                "debug": "^2.6.8",
-                "globals": "^9.18.0",
-                "invariant": "^2.2.2",
-                "lodash": "^4.17.4"
-            },
-            "dependencies": {
-                "globals": {
-                    "version": "9.18.0",
-                    "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
-                    "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
-                    "dev": true
-                }
-            }
-        },
-        "babel-types": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
-            "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
-            "dev": true,
-            "requires": {
-                "babel-runtime": "^6.26.0",
-                "esutils": "^2.0.2",
-                "lodash": "^4.17.4",
-                "to-fast-properties": "^1.0.3"
-            },
-            "dependencies": {
-                "to-fast-properties": {
-                    "version": "1.0.3",
-                    "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
-                    "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
-                    "dev": true
-                }
-            }
-        },
-        "babylon": {
-            "version": "6.18.0",
-            "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-            "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
-            "dev": true
-        },
-        "balanced-match": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-            "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-        },
-        "base": {
-            "version": "0.11.2",
-            "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-            "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-            "requires": {
-                "cache-base": "^1.0.1",
-                "class-utils": "^0.3.5",
-                "component-emitter": "^1.2.1",
-                "define-property": "^1.0.0",
-                "isobject": "^3.0.1",
-                "mixin-deep": "^1.2.0",
-                "pascalcase": "^0.1.1"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "base-64": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
-            "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs="
-        },
-        "base64-js": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
-            "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
-        },
-        "basic-auth": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
-            "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
-            "requires": {
-                "safe-buffer": "5.1.2"
-            }
-        },
-        "bcrypt-pbkdf": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-            "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-            "dev": true,
-            "requires": {
-                "tweetnacl": "^0.14.3"
-            }
-        },
-        "big-integer": {
-            "version": "1.6.48",
-            "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
-            "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
-        },
-        "bindings": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-            "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-            "optional": true,
-            "requires": {
-                "file-uri-to-path": "1.0.0"
-            }
-        },
-        "boxen": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
-            "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
-            "dev": true,
-            "requires": {
-                "ansi-align": "^2.0.0",
-                "camelcase": "^4.0.0",
-                "chalk": "^2.0.1",
-                "cli-boxes": "^1.0.0",
-                "string-width": "^2.0.0",
-                "term-size": "^1.2.0",
-                "widest-line": "^2.0.0"
-            }
-        },
-        "bplist-creator": {
-            "version": "0.0.8",
-            "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
-            "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
-            "requires": {
-                "stream-buffers": "~2.2.0"
-            }
-        },
-        "bplist-parser": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
-            "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
-            "requires": {
-                "big-integer": "^1.6.44"
-            }
-        },
-        "brace-expansion": {
-            "version": "1.1.11",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-            "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-            }
-        },
-        "braces": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-            "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-            "requires": {
-                "arr-flatten": "^1.1.0",
-                "array-unique": "^0.3.2",
-                "extend-shallow": "^2.0.1",
-                "fill-range": "^4.0.0",
-                "isobject": "^3.0.1",
-                "repeat-element": "^1.1.2",
-                "snapdragon": "^0.8.1",
-                "snapdragon-node": "^2.0.1",
-                "split-string": "^3.0.2",
-                "to-regex": "^3.0.1"
-            },
-            "dependencies": {
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "browserslist": {
-            "version": "3.2.8",
-            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
-            "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
-            "dev": true,
-            "requires": {
-                "caniuse-lite": "^1.0.30000844",
-                "electron-to-chromium": "^1.3.47"
-            }
-        },
-        "bser": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
-            "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
-            "requires": {
-                "node-int64": "^0.4.0"
-            }
-        },
-        "buffer-crc32": {
-            "version": "0.2.13",
-            "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-            "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
-        },
-        "buffer-from": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-            "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-        },
-        "bytes": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-            "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
-        },
-        "cache-base": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-            "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-            "requires": {
-                "collection-visit": "^1.0.0",
-                "component-emitter": "^1.2.1",
-                "get-value": "^2.0.6",
-                "has-value": "^1.0.0",
-                "isobject": "^3.0.1",
-                "set-value": "^2.0.0",
-                "to-object-path": "^0.3.0",
-                "union-value": "^1.0.0",
-                "unset-value": "^1.0.0"
-            },
-            "dependencies": {
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "caller-callsite": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-            "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
-            "requires": {
-                "callsites": "^2.0.0"
-            }
-        },
-        "caller-path": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-            "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
-            "requires": {
-                "caller-callsite": "^2.0.0"
-            }
-        },
-        "callsites": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-            "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
-        },
-        "camelcase": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-            "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
-        },
-        "camelcase-keys": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-            "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-            "dev": true,
-            "requires": {
-                "camelcase": "^2.0.0",
-                "map-obj": "^1.0.0"
-            },
-            "dependencies": {
-                "camelcase": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-                    "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-                    "dev": true
-                }
-            }
-        },
-        "caniuse-lite": {
-            "version": "1.0.30000989",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz",
-            "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==",
-            "dev": true
-        },
-        "capture-exit": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
-            "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
-            "requires": {
-                "rsvp": "^4.8.4"
-            }
-        },
-        "capture-stack-trace": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
-            "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
-            "dev": true
-        },
-        "caseless": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-            "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-            "dev": true
-        },
-        "chalk": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-            "requires": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                },
-                "supports-color": {
-                    "version": "5.5.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-                    "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-                    "requires": {
-                        "has-flag": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "chardet": {
-            "version": "0.4.2",
-            "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
-            "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
-        },
-        "ci-info": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
-            "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
-            "dev": true
-        },
-        "class-utils": {
-            "version": "0.3.6",
-            "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-            "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-            "requires": {
-                "arr-union": "^3.1.0",
-                "define-property": "^0.2.5",
-                "isobject": "^3.0.0",
-                "static-extend": "^0.1.1"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "cli-boxes": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
-            "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
-            "dev": true
-        },
-        "cli-cursor": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-            "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-            "requires": {
-                "restore-cursor": "^2.0.0"
-            }
-        },
-        "cli-spinners": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
-            "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="
-        },
-        "cli-truncate": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
-            "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
-            "dev": true,
-            "requires": {
-                "slice-ansi": "0.0.4",
-                "string-width": "^1.0.1"
-            },
-            "dependencies": {
-                "slice-ansi": {
-                    "version": "0.0.4",
-                    "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
-                    "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "dev": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "cli-width": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-            "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
-        },
-        "cliui": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-            "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-            "requires": {
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wrap-ansi": "^2.0.0"
-            },
-            "dependencies": {
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "clone": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-            "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
-        },
-        "code-point-at": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-            "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
-        },
-        "collection-visit": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-            "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-            "requires": {
-                "map-visit": "^1.0.0",
-                "object-visit": "^1.0.0"
-            }
-        },
-        "color-convert": {
-            "version": "1.9.3",
-            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-            "requires": {
-                "color-name": "1.1.3"
-            }
-        },
-        "color-name": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-            "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
-        },
-        "color-support": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-            "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
-        },
-        "colorette": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz",
-            "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg=="
-        },
-        "combined-stream": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-            "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-            "dev": true,
-            "requires": {
-                "delayed-stream": "~1.0.0"
-            }
-        },
-        "command-exists": {
-            "version": "1.2.8",
-            "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz",
-            "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw=="
-        },
-        "commander": {
-            "version": "2.20.0",
-            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-            "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
-        },
-        "commondir": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-            "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-        },
-        "component-emitter": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-            "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
-        },
-        "compressible": {
-            "version": "2.0.17",
-            "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
-            "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
-            "requires": {
-                "mime-db": ">= 1.40.0 < 2"
-            }
-        },
-        "compression": {
-            "version": "1.7.4",
-            "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-            "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-            "requires": {
-                "accepts": "~1.3.5",
-                "bytes": "3.0.0",
-                "compressible": "~2.0.16",
-                "debug": "2.6.9",
-                "on-headers": "~1.0.2",
-                "safe-buffer": "5.1.2",
-                "vary": "~1.1.2"
-            }
-        },
-        "concat-map": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-        },
-        "concat-stream": {
-            "version": "1.6.2",
-            "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-            "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-            "requires": {
-                "buffer-from": "^1.0.0",
-                "inherits": "^2.0.3",
-                "readable-stream": "^2.2.2",
-                "typedarray": "^0.0.6"
-            }
-        },
-        "configstore": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
-            "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
-            "dev": true,
-            "requires": {
-                "dot-prop": "^4.1.0",
-                "graceful-fs": "^4.1.2",
-                "make-dir": "^1.0.0",
-                "unique-string": "^1.0.0",
-                "write-file-atomic": "^2.0.0",
-                "xdg-basedir": "^3.0.0"
-            },
-            "dependencies": {
-                "make-dir": {
-                    "version": "1.3.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
-                    "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
-                    "dev": true,
-                    "requires": {
-                        "pify": "^3.0.0"
-                    }
-                },
-                "pify": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-                    "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-                    "dev": true
-                },
-                "write-file-atomic": {
-                    "version": "2.4.3",
-                    "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
-                    "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.11",
-                        "imurmurhash": "^0.1.4",
-                        "signal-exit": "^3.0.2"
-                    }
-                }
-            }
-        },
-        "connect": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
-            "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
-            "requires": {
-                "debug": "2.6.9",
-                "finalhandler": "1.1.2",
-                "parseurl": "~1.3.3",
-                "utils-merge": "1.0.1"
-            }
-        },
-        "contains-path": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
-            "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
-            "dev": true
-        },
-        "convert-source-map": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-            "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
-            "requires": {
-                "safe-buffer": "~5.1.1"
-            }
-        },
-        "copy-descriptor": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-            "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
-        },
-        "core-js": {
-            "version": "2.6.9",
-            "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
-            "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
-        },
-        "core-util-is": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-            "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-        },
-        "cosmiconfig": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-            "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-            "requires": {
-                "import-fresh": "^2.0.0",
-                "is-directory": "^0.3.1",
-                "js-yaml": "^3.13.1",
-                "parse-json": "^4.0.0"
-            },
-            "dependencies": {
-                "parse-json": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-                    "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-                    "requires": {
-                        "error-ex": "^1.3.1",
-                        "json-parse-better-errors": "^1.0.1"
-                    }
-                }
-            }
-        },
-        "create-error-class": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
-            "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
-            "dev": true,
-            "requires": {
-                "capture-stack-trace": "^1.0.0"
-            }
-        },
-        "create-react-class": {
-            "version": "15.6.3",
-            "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
-            "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
-            "requires": {
-                "fbjs": "^0.8.9",
-                "loose-envify": "^1.3.1",
-                "object-assign": "^4.1.1"
-            },
-            "dependencies": {
-                "core-js": {
-                    "version": "1.2.7",
-                    "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
-                    "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
-                },
-                "fbjs": {
-                    "version": "0.8.17",
-                    "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
-                    "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
-                    "requires": {
-                        "core-js": "^1.0.0",
-                        "isomorphic-fetch": "^2.1.1",
-                        "loose-envify": "^1.0.0",
-                        "object-assign": "^4.1.0",
-                        "promise": "^7.1.1",
-                        "setimmediate": "^1.0.5",
-                        "ua-parser-js": "^0.7.18"
-                    }
-                }
-            }
-        },
-        "cross-spawn": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-            "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-            "requires": {
-                "lru-cache": "^4.0.1",
-                "shebang-command": "^1.2.0",
-                "which": "^1.2.9"
-            }
-        },
-        "crypto-random-string": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
-            "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
-            "dev": true
-        },
-        "csstype": {
-            "version": "2.6.8",
-            "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.8.tgz",
-            "integrity": "sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA=="
-        },
-        "currently-unhandled": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-            "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-            "dev": true,
-            "requires": {
-                "array-find-index": "^1.0.1"
-            }
-        },
-        "dashdash": {
-            "version": "1.14.1",
-            "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-            "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0"
-            }
-        },
-        "date-fns": {
-            "version": "1.30.1",
-            "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
-            "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
-            "dev": true
-        },
-        "dayjs": {
-            "version": "1.8.18",
-            "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.18.tgz",
-            "integrity": "sha512-JBMJZghNK8TtuoPnKNIzW9xavVVigld/zmZNpZSyQbkb2Opp55YIfZUpE4OEqPF/iyUVQTKcn1bC2HtC8B7s3g=="
-        },
-        "debounce": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
-            "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg=="
-        },
-        "debug": {
-            "version": "2.6.9",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-            "requires": {
-                "ms": "2.0.0"
-            }
-        },
-        "decamelize": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-            "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
-        },
-        "decode-uri-component": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-            "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
-        },
-        "dedent": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
-            "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
-            "dev": true
-        },
-        "deep-extend": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-            "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-            "dev": true
-        },
-        "deep-is": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-            "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-            "dev": true
-        },
-        "deepmerge": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
-            "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
-        },
-        "defaults": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-            "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
-            "requires": {
-                "clone": "^1.0.2"
-            }
-        },
-        "define-properties": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-            "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-            "requires": {
-                "object-keys": "^1.0.12"
-            }
-        },
-        "define-property": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-            "requires": {
-                "is-descriptor": "^1.0.2",
-                "isobject": "^3.0.1"
-            },
-            "dependencies": {
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "delayed-stream": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-            "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-            "dev": true
-        },
-        "denodeify": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
-            "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE="
-        },
-        "depd": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-            "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-        },
-        "destroy": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-            "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-        },
-        "doctrine": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-            "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-            "dev": true,
-            "requires": {
-                "esutils": "^2.0.2"
-            }
-        },
-        "dot-prop": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
-            "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
-            "dev": true,
-            "requires": {
-                "is-obj": "^1.0.0"
-            }
-        },
-        "duplexer3": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
-            "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
-            "dev": true
-        },
-        "ecc-jsbn": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-            "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-            "dev": true,
-            "requires": {
-                "jsbn": "~0.1.0",
-                "safer-buffer": "^2.1.0"
-            }
-        },
-        "ee-first": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-            "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "electron": {
-            "version": "1.8.8",
-            "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.8.tgz",
-            "integrity": "sha512-1f9zJehcTTGjrkb06o6ds+gsRq6SYhZJyxOk6zIWjRH8hVy03y/RzUDELzNas71f5vcvXmfGVvyjeEsadDI8tg==",
-            "dev": true,
-            "requires": {
-                "@types/node": "^8.0.24",
-                "electron-download": "^3.0.1",
-                "extract-zip": "^1.0.3"
-            }
-        },
-        "electron-download": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz",
-            "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=",
-            "dev": true,
-            "requires": {
-                "debug": "^2.2.0",
-                "fs-extra": "^0.30.0",
-                "home-path": "^1.0.1",
-                "minimist": "^1.2.0",
-                "nugget": "^2.0.0",
-                "path-exists": "^2.1.0",
-                "rc": "^1.1.2",
-                "semver": "^5.3.0",
-                "sumchecker": "^1.2.0"
-            },
-            "dependencies": {
-                "fs-extra": {
-                    "version": "0.30.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
-                    "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "jsonfile": "^2.1.0",
-                        "klaw": "^1.0.0",
-                        "path-is-absolute": "^1.0.0",
-                        "rimraf": "^2.2.8"
-                    }
-                },
-                "jsonfile": {
-                    "version": "2.4.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-                    "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.6"
-                    }
-                },
-                "path-exists": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-                    "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-                    "dev": true,
-                    "requires": {
-                        "pinkie-promise": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "electron-to-chromium": {
-            "version": "1.3.241",
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.241.tgz",
-            "integrity": "sha512-Gb9E6nWZlbgjDDNe5cAvMJixtn79krNJ70EDpq/M10lkGo7PGtBUe7Y0CYVHsBScRwi6ybCS+YetXAN9ysAHDg==",
-            "dev": true
-        },
-        "elegant-spinner": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
-            "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
-            "dev": true
-        },
-        "eme-encryption-scheme-polyfill": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-1.0.3.tgz",
-            "integrity": "sha512-BO98g91VkDSpFHHgWAeppz9hn1U3WRQWKh4O3mZk5JvaUvgYm0Q67t7/bC+8iEQsK+JA/K7+v2lhz1B+zXR/zA=="
-        },
-        "emoji-regex": {
-            "version": "7.0.3",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
-        },
-        "encodeurl": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-            "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-        },
-        "encoding": {
-            "version": "0.1.12",
-            "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
-            "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
-            "requires": {
-                "iconv-lite": "~0.4.13"
-            }
-        },
-        "end-of-stream": {
-            "version": "1.4.4",
-            "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-            "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-            "requires": {
-                "once": "^1.4.0"
-            }
-        },
-        "envinfo": {
-            "version": "7.5.0",
-            "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz",
-            "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ=="
-        },
-        "error-ex": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-            "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-            "requires": {
-                "is-arrayish": "^0.2.1"
-            }
-        },
-        "errorhandler": {
-            "version": "1.5.1",
-            "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
-            "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
-            "requires": {
-                "accepts": "~1.3.7",
-                "escape-html": "~1.0.3"
-            }
-        },
-        "es-abstract": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
-            "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
-            "dev": true,
-            "requires": {
-                "es-to-primitive": "^1.2.0",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3",
-                "is-callable": "^1.1.4",
-                "is-regex": "^1.0.4",
-                "object-keys": "^1.0.12"
-            }
-        },
-        "es-to-primitive": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
-            "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
-            "dev": true,
-            "requires": {
-                "is-callable": "^1.1.4",
-                "is-date-object": "^1.0.1",
-                "is-symbol": "^1.0.2"
-            }
-        },
-        "es6-promise": {
-            "version": "4.2.8",
-            "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-            "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-            "dev": true
-        },
-        "escape-html": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-            "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-        },
-        "escape-string-regexp": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-            "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
-        },
-        "eslint": {
-            "version": "6.8.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
-            "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "ajv": "^6.10.0",
-                "chalk": "^2.1.0",
-                "cross-spawn": "^6.0.5",
-                "debug": "^4.0.1",
-                "doctrine": "^3.0.0",
-                "eslint-scope": "^5.0.0",
-                "eslint-utils": "^1.4.3",
-                "eslint-visitor-keys": "^1.1.0",
-                "espree": "^6.1.2",
-                "esquery": "^1.0.1",
-                "esutils": "^2.0.2",
-                "file-entry-cache": "^5.0.1",
-                "functional-red-black-tree": "^1.0.1",
-                "glob-parent": "^5.0.0",
-                "globals": "^12.1.0",
-                "ignore": "^4.0.6",
-                "import-fresh": "^3.0.0",
-                "imurmurhash": "^0.1.4",
-                "inquirer": "^7.0.0",
-                "is-glob": "^4.0.0",
-                "js-yaml": "^3.13.1",
-                "json-stable-stringify-without-jsonify": "^1.0.1",
-                "levn": "^0.3.0",
-                "lodash": "^4.17.14",
-                "minimatch": "^3.0.4",
-                "mkdirp": "^0.5.1",
-                "natural-compare": "^1.4.0",
-                "optionator": "^0.8.3",
-                "progress": "^2.0.0",
-                "regexpp": "^2.0.1",
-                "semver": "^6.1.2",
-                "strip-ansi": "^5.2.0",
-                "strip-json-comments": "^3.0.1",
-                "table": "^5.2.3",
-                "text-table": "^0.2.0",
-                "v8-compile-cache": "^2.0.3"
-            },
-            "dependencies": {
-                "ansi-escapes": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
-                    "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
-                    "dev": true,
-                    "requires": {
-                        "type-fest": "^0.8.1"
-                    }
-                },
-                "ansi-regex": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-                    "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-                    "dev": true
-                },
-                "chardet": {
-                    "version": "0.7.0",
-                    "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-                    "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
-                    "dev": true
-                },
-                "cli-cursor": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
-                    "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
-                    "dev": true,
-                    "requires": {
-                        "restore-cursor": "^3.1.0"
-                    }
-                },
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "dev": true,
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    },
-                    "dependencies": {
-                        "semver": {
-                            "version": "5.7.1",
-                            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                            "dev": true
-                        }
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "doctrine": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-                    "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-                    "dev": true,
-                    "requires": {
-                        "esutils": "^2.0.2"
-                    }
-                },
-                "emoji-regex": {
-                    "version": "8.0.0",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-                    "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-                    "dev": true
-                },
-                "eslint-scope": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
-                    "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
-                    "dev": true,
-                    "requires": {
-                        "esrecurse": "^4.1.0",
-                        "estraverse": "^4.1.1"
-                    }
-                },
-                "eslint-utils": {
-                    "version": "1.4.3",
-                    "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
-                    "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
-                    "dev": true,
-                    "requires": {
-                        "eslint-visitor-keys": "^1.1.0"
-                    }
-                },
-                "external-editor": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
-                    "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
-                    "dev": true,
-                    "requires": {
-                        "chardet": "^0.7.0",
-                        "iconv-lite": "^0.4.24",
-                        "tmp": "^0.0.33"
-                    }
-                },
-                "figures": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
-                    "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5"
-                    }
-                },
-                "globals": {
-                    "version": "12.3.0",
-                    "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
-                    "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
-                    "dev": true,
-                    "requires": {
-                        "type-fest": "^0.8.1"
-                    }
-                },
-                "ignore": {
-                    "version": "4.0.6",
-                    "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-                    "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-                    "dev": true
-                },
-                "import-fresh": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
-                    "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
-                    "dev": true,
-                    "requires": {
-                        "parent-module": "^1.0.0",
-                        "resolve-from": "^4.0.0"
-                    }
-                },
-                "inquirer": {
-                    "version": "7.0.1",
-                    "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz",
-                    "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-escapes": "^4.2.1",
-                        "chalk": "^2.4.2",
-                        "cli-cursor": "^3.1.0",
-                        "cli-width": "^2.0.0",
-                        "external-editor": "^3.0.3",
-                        "figures": "^3.0.0",
-                        "lodash": "^4.17.15",
-                        "mute-stream": "0.0.8",
-                        "run-async": "^2.2.0",
-                        "rxjs": "^6.5.3",
-                        "string-width": "^4.1.0",
-                        "strip-ansi": "^5.1.0",
-                        "through": "^2.3.6"
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-                    "dev": true
-                },
-                "mimic-fn": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-                    "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "mute-stream": {
-                    "version": "0.0.8",
-                    "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
-                    "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
-                    "dev": true
-                },
-                "onetime": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
-                    "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
-                    "dev": true,
-                    "requires": {
-                        "mimic-fn": "^2.1.0"
-                    }
-                },
-                "resolve-from": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-                    "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-                    "dev": true
-                },
-                "restore-cursor": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
-                    "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
-                    "dev": true,
-                    "requires": {
-                        "onetime": "^5.1.0",
-                        "signal-exit": "^3.0.2"
-                    }
-                },
-                "rxjs": {
-                    "version": "6.5.4",
-                    "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
-                    "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
-                    "dev": true,
-                    "requires": {
-                        "tslib": "^1.9.0"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-                    "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^8.0.0",
-                        "is-fullwidth-code-point": "^3.0.0",
-                        "strip-ansi": "^6.0.0"
-                    },
-                    "dependencies": {
-                        "strip-ansi": {
-                            "version": "6.0.0",
-                            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-                            "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-                            "dev": true,
-                            "requires": {
-                                "ansi-regex": "^5.0.0"
-                            }
-                        }
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    },
-                    "dependencies": {
-                        "ansi-regex": {
-                            "version": "4.1.0",
-                            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                            "dev": true
-                        }
-                    }
-                },
-                "strip-json-comments": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
-                    "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
-                    "dev": true
-                },
-                "type-fest": {
-                    "version": "0.8.1",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-                    "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-                    "dev": true
-                }
-            }
-        },
-        "eslint-config-standard": {
-            "version": "12.0.0",
-            "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
-            "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
-            "dev": true
-        },
-        "eslint-config-standard-jsx": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz",
-            "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==",
-            "dev": true
-        },
-        "eslint-import-resolver-node": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
-            "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
-            "dev": true,
-            "requires": {
-                "debug": "^2.6.9",
-                "resolve": "^1.5.0"
-            }
-        },
-        "eslint-module-utils": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
-            "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
-            "dev": true,
-            "requires": {
-                "debug": "^2.6.8",
-                "pkg-dir": "^2.0.0"
-            },
-            "dependencies": {
-                "pkg-dir": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
-                    "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^2.1.0"
-                    }
-                }
-            }
-        },
-        "eslint-plugin-es": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz",
-            "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==",
-            "dev": true,
-            "requires": {
-                "eslint-utils": "^1.3.0",
-                "regexpp": "^2.0.1"
-            }
-        },
-        "eslint-plugin-eslint-comments": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz",
-            "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==",
-            "dev": true,
-            "requires": {
-                "escape-string-regexp": "^1.0.5",
-                "ignore": "^5.0.5"
-            }
-        },
-        "eslint-plugin-flowtype": {
-            "version": "2.50.3",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz",
-            "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==",
-            "dev": true,
-            "requires": {
-                "lodash": "^4.17.10"
-            }
-        },
-        "eslint-plugin-import": {
-            "version": "2.18.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
-            "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
-            "dev": true,
-            "requires": {
-                "array-includes": "^3.0.3",
-                "contains-path": "^0.1.0",
-                "debug": "^2.6.9",
-                "doctrine": "1.5.0",
-                "eslint-import-resolver-node": "^0.3.2",
-                "eslint-module-utils": "^2.4.0",
-                "has": "^1.0.3",
-                "minimatch": "^3.0.4",
-                "object.values": "^1.1.0",
-                "read-pkg-up": "^2.0.0",
-                "resolve": "^1.11.0"
-            },
-            "dependencies": {
-                "doctrine": {
-                    "version": "1.5.0",
-                    "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
-                    "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
-                    "dev": true,
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "isarray": "^1.0.0"
-                    }
-                }
-            }
-        },
-        "eslint-plugin-jest": {
-            "version": "22.4.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz",
-            "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==",
-            "dev": true
-        },
-        "eslint-plugin-node": {
-            "version": "8.0.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz",
-            "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==",
-            "dev": true,
-            "requires": {
-                "eslint-plugin-es": "^1.3.1",
-                "eslint-utils": "^1.3.1",
-                "ignore": "^5.0.2",
-                "minimatch": "^3.0.4",
-                "resolve": "^1.8.1",
-                "semver": "^5.5.0"
-            },
-            "dependencies": {
-                "ignore": {
-                    "version": "5.1.4",
-                    "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
-                    "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
-                    "dev": true
-                }
-            }
-        },
-        "eslint-plugin-prettier": {
-            "version": "2.6.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz",
-            "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==",
-            "dev": true,
-            "requires": {
-                "fast-diff": "^1.1.1",
-                "jest-docblock": "^21.0.0"
-            }
-        },
-        "eslint-plugin-promise": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
-            "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
-            "dev": true
-        },
-        "eslint-plugin-react": {
-            "version": "7.14.3",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz",
-            "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==",
-            "dev": true,
-            "requires": {
-                "array-includes": "^3.0.3",
-                "doctrine": "^2.1.0",
-                "has": "^1.0.3",
-                "jsx-ast-utils": "^2.1.0",
-                "object.entries": "^1.1.0",
-                "object.fromentries": "^2.0.0",
-                "object.values": "^1.1.0",
-                "prop-types": "^15.7.2",
-                "resolve": "^1.10.1"
-            },
-            "dependencies": {
-                "doctrine": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-                    "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-                    "dev": true,
-                    "requires": {
-                        "esutils": "^2.0.2"
-                    }
-                }
-            }
-        },
-        "eslint-plugin-react-hooks": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz",
-            "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==",
-            "dev": true
-        },
-        "eslint-plugin-react-native": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.6.0.tgz",
-            "integrity": "sha512-BEQcHZ06hZSBYWFVuNEq0xuui5VEsWpHDsZGBtfadHfCRqRMUrkYPgdDb3bpc60qShHE83kqIv59uKdinEg91Q==",
-            "dev": true,
-            "requires": {
-                "eslint-plugin-react-native-globals": "^0.1.1"
-            }
-        },
-        "eslint-plugin-react-native-globals": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz",
-            "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==",
-            "dev": true
-        },
-        "eslint-plugin-standard": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
-            "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
-            "dev": true
-        },
-        "eslint-scope": {
-            "version": "3.7.1",
-            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
-            "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
-            "dev": true,
-            "requires": {
-                "esrecurse": "^4.1.0",
-                "estraverse": "^4.1.1"
-            }
-        },
-        "eslint-utils": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
-            "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
-            "dev": true,
-            "requires": {
-                "eslint-visitor-keys": "^1.0.0"
-            }
-        },
-        "eslint-visitor-keys": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
-            "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
-            "dev": true
-        },
-        "espree": {
-            "version": "6.1.2",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
-            "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
-            "dev": true,
-            "requires": {
-                "acorn": "^7.1.0",
-                "acorn-jsx": "^5.1.0",
-                "eslint-visitor-keys": "^1.1.0"
-            }
-        },
-        "esprima": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
-        },
-        "esquery": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
-            "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
-            "dev": true,
-            "requires": {
-                "estraverse": "^4.0.0"
-            }
-        },
-        "esrecurse": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
-            "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
-            "dev": true,
-            "requires": {
-                "estraverse": "^4.1.0"
-            }
-        },
-        "estraverse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-            "dev": true
-        },
-        "esutils": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-            "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
-        },
-        "etag": {
-            "version": "1.8.1",
-            "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-            "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-        },
-        "event-target-shim": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
-            "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
-        },
-        "eventemitter3": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
-            "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
-        },
-        "exec-sh": {
-            "version": "0.3.4",
-            "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
-            "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A=="
-        },
-        "execa": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
-            "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
-            "requires": {
-                "cross-spawn": "^5.0.1",
-                "get-stream": "^3.0.0",
-                "is-stream": "^1.1.0",
-                "npm-run-path": "^2.0.0",
-                "p-finally": "^1.0.0",
-                "signal-exit": "^3.0.0",
-                "strip-eof": "^1.0.0"
-            }
-        },
-        "expand-brackets": {
-            "version": "2.1.4",
-            "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-            "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-            "requires": {
-                "debug": "^2.3.3",
-                "define-property": "^0.2.5",
-                "extend-shallow": "^2.0.1",
-                "posix-character-classes": "^0.1.0",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.1"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "extend": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-            "dev": true
-        },
-        "extend-shallow": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-            "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-            "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-            },
-            "dependencies": {
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
-            }
-        },
-        "external-editor": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
-            "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
-            "requires": {
-                "chardet": "^0.4.0",
-                "iconv-lite": "^0.4.17",
-                "tmp": "^0.0.33"
-            }
-        },
-        "extglob": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-            "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-            "requires": {
-                "array-unique": "^0.3.2",
-                "define-property": "^1.0.0",
-                "expand-brackets": "^2.1.4",
-                "extend-shallow": "^2.0.1",
-                "fragment-cache": "^0.2.1",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.1"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "extract-zip": {
-            "version": "1.6.7",
-            "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
-            "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
-            "dev": true,
-            "requires": {
-                "concat-stream": "1.6.2",
-                "debug": "2.6.9",
-                "mkdirp": "0.5.1",
-                "yauzl": "2.4.1"
-            }
-        },
-        "extsprintf": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-            "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-            "dev": true
-        },
-        "fancy-log": {
-            "version": "1.3.3",
-            "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
-            "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
-            "requires": {
-                "ansi-gray": "^0.1.1",
-                "color-support": "^1.1.3",
-                "parse-node-version": "^1.0.0",
-                "time-stamp": "^1.0.0"
-            }
-        },
-        "fast-deep-equal": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-            "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
-            "dev": true
-        },
-        "fast-diff": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
-            "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
-            "dev": true
-        },
-        "fast-json-stable-stringify": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-            "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-            "dev": true
-        },
-        "fast-levenshtein": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-            "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
-            "dev": true
-        },
-        "fb-watchman": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
-            "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
-            "requires": {
-                "bser": "2.1.1"
-            }
-        },
-        "fbjs": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
-            "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
-            "requires": {
-                "core-js": "^2.4.1",
-                "fbjs-css-vars": "^1.0.0",
-                "isomorphic-fetch": "^2.1.1",
-                "loose-envify": "^1.0.0",
-                "object-assign": "^4.1.0",
-                "promise": "^7.1.1",
-                "setimmediate": "^1.0.5",
-                "ua-parser-js": "^0.7.18"
-            }
-        },
-        "fbjs-css-vars": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
-            "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
-        },
-        "fbjs-scripts": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz",
-            "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==",
-            "requires": {
-                "@babel/core": "^7.0.0",
-                "ansi-colors": "^1.0.1",
-                "babel-preset-fbjs": "^3.2.0",
-                "core-js": "^2.4.1",
-                "cross-spawn": "^5.1.0",
-                "fancy-log": "^1.3.2",
-                "object-assign": "^4.0.1",
-                "plugin-error": "^0.1.2",
-                "semver": "^5.1.0",
-                "through2": "^2.0.0"
-            }
-        },
-        "fd-slicer": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
-            "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
-            "dev": true,
-            "requires": {
-                "pend": "~1.2.0"
-            }
-        },
-        "figures": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-            "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-            "requires": {
-                "escape-string-regexp": "^1.0.5"
-            }
-        },
-        "file-entry-cache": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
-            "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
-            "dev": true,
-            "requires": {
-                "flat-cache": "^2.0.1"
-            }
-        },
-        "file-uri-to-path": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-            "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-            "optional": true
-        },
-        "fill-range": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-            "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-            "requires": {
-                "extend-shallow": "^2.0.1",
-                "is-number": "^3.0.0",
-                "repeat-string": "^1.6.1",
-                "to-regex-range": "^2.1.0"
-            },
-            "dependencies": {
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "finalhandler": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-            "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-            "requires": {
-                "debug": "2.6.9",
-                "encodeurl": "~1.0.2",
-                "escape-html": "~1.0.3",
-                "on-finished": "~2.3.0",
-                "parseurl": "~1.3.3",
-                "statuses": "~1.5.0",
-                "unpipe": "~1.0.0"
-            }
-        },
-        "find-babel-config": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
-            "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
-            "dev": true,
-            "requires": {
-                "json5": "^0.5.1",
-                "path-exists": "^3.0.0"
-            },
-            "dependencies": {
-                "json5": {
-                    "version": "0.5.1",
-                    "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-                    "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-                    "dev": true
-                }
-            }
-        },
-        "find-cache-dir": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-            "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-            "requires": {
-                "commondir": "^1.0.1",
-                "make-dir": "^2.0.0",
-                "pkg-dir": "^3.0.0"
-            }
-        },
-        "find-parent-dir": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz",
-            "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
-            "dev": true
-        },
-        "find-up": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-            "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-            "requires": {
-                "locate-path": "^2.0.0"
-            }
-        },
-        "flat-cache": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
-            "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
-            "dev": true,
-            "requires": {
-                "flatted": "^2.0.0",
-                "rimraf": "2.6.3",
-                "write": "1.0.3"
-            },
-            "dependencies": {
-                "rimraf": {
-                    "version": "2.6.3",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-                    "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
-            }
-        },
-        "flatted": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
-            "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
-            "dev": true
-        },
-        "flow-babel-webpack-plugin": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/flow-babel-webpack-plugin/-/flow-babel-webpack-plugin-1.1.1.tgz",
-            "integrity": "sha512-xgZt6sWUWMek1P+rdzJqXG9OaWCUqTfaDb1OoEVh2mXFb7Nppcd4Rm9WW9Dz4uS5T3MTe/BFVH0ZjUX8Oxh1JQ==",
-            "dev": true,
-            "requires": {
-                "babel-plugin-transform-flow-comments": "^6.17.0",
-                "flow-bin": ">=0.44.2 <1",
-                "lodash.merge": "^4.6.0"
-            }
-        },
-        "flow-bin": {
-            "version": "0.106.1",
-            "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.106.1.tgz",
-            "integrity": "sha512-UqAbzDZsxNgZ+pv3/OwZEpo/Dt4ZCiMgiyJ5cAPC9bHq8/wti8ZhLWuIVBgDFpV7OPflmQXQNXqbvB8/5BvEDQ==",
-            "dev": true
-        },
-        "for-in": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-            "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
-        },
-        "forever-agent": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-            "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-            "dev": true
-        },
-        "form-data": {
-            "version": "2.3.3",
-            "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-            "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-            "dev": true,
-            "requires": {
-                "asynckit": "^0.4.0",
-                "combined-stream": "^1.0.6",
-                "mime-types": "^2.1.12"
-            }
-        },
-        "fragment-cache": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-            "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-            "requires": {
-                "map-cache": "^0.2.2"
-            }
-        },
-        "fresh": {
-            "version": "0.5.2",
-            "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-            "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-        },
-        "fs-extra": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-            "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "jsonfile": "^4.0.0",
-                "universalify": "^0.1.0"
-            }
-        },
-        "fs.realpath": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-            "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-        },
-        "fsevents": {
-            "version": "1.2.11",
-            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
-            "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
-            "optional": true,
-            "requires": {
-                "bindings": "^1.5.0",
-                "nan": "^2.12.1",
-                "node-pre-gyp": "*"
-            },
-            "dependencies": {
-                "abbrev": {
-                    "version": "1.1.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "aproba": {
-                    "version": "1.2.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "are-we-there-yet": {
-                    "version": "1.1.5",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "delegates": "^1.0.0",
-                        "readable-stream": "^2.0.6"
-                    }
-                },
-                "balanced-match": {
-                    "version": "1.0.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "brace-expansion": {
-                    "version": "1.1.11",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "balanced-match": "^1.0.0",
-                        "concat-map": "0.0.1"
-                    }
-                },
-                "chownr": {
-                    "version": "1.1.3",
-                    "bundled": true,
-                    "optional": true
-                },
-                "code-point-at": {
-                    "version": "1.1.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "concat-map": {
-                    "version": "0.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "console-control-strings": {
-                    "version": "1.1.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "core-util-is": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "debug": {
-                    "version": "3.2.6",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "deep-extend": {
-                    "version": "0.6.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "delegates": {
-                    "version": "1.0.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "detect-libc": {
-                    "version": "1.0.3",
-                    "bundled": true,
-                    "optional": true
-                },
-                "fs-minipass": {
-                    "version": "1.2.7",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "minipass": "^2.6.0"
-                    }
-                },
-                "fs.realpath": {
-                    "version": "1.0.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "gauge": {
-                    "version": "2.7.4",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "aproba": "^1.0.3",
-                        "console-control-strings": "^1.0.0",
-                        "has-unicode": "^2.0.0",
-                        "object-assign": "^4.1.0",
-                        "signal-exit": "^3.0.0",
-                        "string-width": "^1.0.1",
-                        "strip-ansi": "^3.0.1",
-                        "wide-align": "^1.1.0"
-                    }
-                },
-                "glob": {
-                    "version": "7.1.6",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "fs.realpath": "^1.0.0",
-                        "inflight": "^1.0.4",
-                        "inherits": "2",
-                        "minimatch": "^3.0.4",
-                        "once": "^1.3.0",
-                        "path-is-absolute": "^1.0.0"
-                    }
-                },
-                "has-unicode": {
-                    "version": "2.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "iconv-lite": {
-                    "version": "0.4.24",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "safer-buffer": ">= 2.1.2 < 3"
-                    }
-                },
-                "ignore-walk": {
-                    "version": "3.0.3",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "minimatch": "^3.0.4"
-                    }
-                },
-                "inflight": {
-                    "version": "1.0.6",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "once": "^1.3.0",
-                        "wrappy": "1"
-                    }
-                },
-                "inherits": {
-                    "version": "2.0.4",
-                    "bundled": true,
-                    "optional": true
-                },
-                "ini": {
-                    "version": "1.3.5",
-                    "bundled": true,
-                    "optional": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "1.0.0",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "number-is-nan": "^1.0.0"
-                    }
-                },
-                "isarray": {
-                    "version": "1.0.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "minimatch": {
-                    "version": "3.0.4",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "brace-expansion": "^1.1.7"
-                    }
-                },
-                "minimist": {
-                    "version": "0.0.8",
-                    "bundled": true,
-                    "optional": true
-                },
-                "minipass": {
-                    "version": "2.9.0",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "safe-buffer": "^5.1.2",
-                        "yallist": "^3.0.0"
-                    }
-                },
-                "minizlib": {
-                    "version": "1.3.3",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "minipass": "^2.9.0"
-                    }
-                },
-                "mkdirp": {
-                    "version": "0.5.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "minimist": "0.0.8"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "needle": {
-                    "version": "2.4.0",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "debug": "^3.2.6",
-                        "iconv-lite": "^0.4.4",
-                        "sax": "^1.2.4"
-                    }
-                },
-                "node-pre-gyp": {
-                    "version": "0.14.0",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "detect-libc": "^1.0.2",
-                        "mkdirp": "^0.5.1",
-                        "needle": "^2.2.1",
-                        "nopt": "^4.0.1",
-                        "npm-packlist": "^1.1.6",
-                        "npmlog": "^4.0.2",
-                        "rc": "^1.2.7",
-                        "rimraf": "^2.6.1",
-                        "semver": "^5.3.0",
-                        "tar": "^4.4.2"
-                    }
-                },
-                "nopt": {
-                    "version": "4.0.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "abbrev": "1",
-                        "osenv": "^0.1.4"
-                    }
-                },
-                "npm-bundled": {
-                    "version": "1.1.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "npm-normalize-package-bin": "^1.0.1"
-                    }
-                },
-                "npm-normalize-package-bin": {
-                    "version": "1.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "npm-packlist": {
-                    "version": "1.4.7",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "ignore-walk": "^3.0.1",
-                        "npm-bundled": "^1.0.1"
-                    }
-                },
-                "npmlog": {
-                    "version": "4.1.2",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "are-we-there-yet": "~1.1.2",
-                        "console-control-strings": "~1.1.0",
-                        "gauge": "~2.7.3",
-                        "set-blocking": "~2.0.0"
-                    }
-                },
-                "number-is-nan": {
-                    "version": "1.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "object-assign": {
-                    "version": "4.1.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "once": {
-                    "version": "1.4.0",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "wrappy": "1"
-                    }
-                },
-                "os-homedir": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "os-tmpdir": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "osenv": {
-                    "version": "0.1.5",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "os-homedir": "^1.0.0",
-                        "os-tmpdir": "^1.0.0"
-                    }
-                },
-                "path-is-absolute": {
-                    "version": "1.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "process-nextick-args": {
-                    "version": "2.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "rc": {
-                    "version": "1.2.8",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "deep-extend": "^0.6.0",
-                        "ini": "~1.3.0",
-                        "minimist": "^1.2.0",
-                        "strip-json-comments": "~2.0.1"
-                    },
-                    "dependencies": {
-                        "minimist": {
-                            "version": "1.2.0",
-                            "bundled": true,
-                            "optional": true
-                        }
-                    }
-                },
-                "readable-stream": {
-                    "version": "2.3.6",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "core-util-is": "~1.0.0",
-                        "inherits": "~2.0.3",
-                        "isarray": "~1.0.0",
-                        "process-nextick-args": "~2.0.0",
-                        "safe-buffer": "~5.1.1",
-                        "string_decoder": "~1.1.1",
-                        "util-deprecate": "~1.0.1"
-                    }
-                },
-                "rimraf": {
-                    "version": "2.7.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                },
-                "safe-buffer": {
-                    "version": "5.1.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "safer-buffer": {
-                    "version": "2.1.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "sax": {
-                    "version": "1.2.4",
-                    "bundled": true,
-                    "optional": true
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "set-blocking": {
-                    "version": "2.0.0",
-                    "bundled": true,
-                    "optional": true
-                },
-                "signal-exit": {
-                    "version": "3.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "string-width": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                },
-                "string_decoder": {
-                    "version": "1.1.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "safe-buffer": "~5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                },
-                "strip-json-comments": {
-                    "version": "2.0.1",
-                    "bundled": true,
-                    "optional": true
-                },
-                "tar": {
-                    "version": "4.4.13",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "chownr": "^1.1.1",
-                        "fs-minipass": "^1.2.5",
-                        "minipass": "^2.8.6",
-                        "minizlib": "^1.2.1",
-                        "mkdirp": "^0.5.0",
-                        "safe-buffer": "^5.1.2",
-                        "yallist": "^3.0.3"
-                    }
-                },
-                "util-deprecate": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "wide-align": {
-                    "version": "1.1.3",
-                    "bundled": true,
-                    "optional": true,
-                    "requires": {
-                        "string-width": "^1.0.2 || 2"
-                    }
-                },
-                "wrappy": {
-                    "version": "1.0.2",
-                    "bundled": true,
-                    "optional": true
-                },
-                "yallist": {
-                    "version": "3.1.1",
-                    "bundled": true,
-                    "optional": true
-                }
-            }
-        },
-        "function-bind": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-        },
-        "functional-red-black-tree": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-            "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
-            "dev": true
-        },
-        "fuse.js": {
-            "version": "3.4.5",
-            "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.5.tgz",
-            "integrity": "sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ=="
-        },
-        "get-caller-file": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-            "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
-        },
-        "get-own-enumerable-property-symbols": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
-            "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==",
-            "dev": true
-        },
-        "get-stdin": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-            "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-            "dev": true
-        },
-        "get-stream": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
-            "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
-        },
-        "get-value": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-            "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
-        },
-        "getpass": {
-            "version": "0.1.7",
-            "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-            "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0"
-            }
-        },
-        "gfycat-style-urls": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/gfycat-style-urls/-/gfycat-style-urls-1.0.3.tgz",
-            "integrity": "sha512-HirQ+dsQWChjnfwZXB07ytzh3eZQFVlOdO2ML1YvpHBOXplumtzGIAejVu91wmj4Cw7t4760M2fKtgI+NAi/2w=="
-        },
-        "glob": {
-            "version": "7.1.4",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-            "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
-            "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-            }
-        },
-        "glob-parent": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
-            "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
-            "dev": true,
-            "requires": {
-                "is-glob": "^4.0.1"
-            }
-        },
-        "global-dirs": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
-            "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
-            "dev": true,
-            "requires": {
-                "ini": "^1.3.4"
-            }
-        },
-        "globals": {
-            "version": "11.12.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-            "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
-        },
-        "google-libphonenumber": {
-            "version": "2.0.19",
-            "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-2.0.19.tgz",
-            "integrity": "sha512-kwtbruT+eyiof081cxT1tltMTxgTOq3CQhUoEYBROC+vNf+COPqzfKJtVnDvgXQe4SzfbnAYkP8KoSpbJBIlSg=="
-        },
-        "got": {
-            "version": "6.7.1",
-            "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
-            "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
-            "dev": true,
-            "requires": {
-                "create-error-class": "^3.0.0",
-                "duplexer3": "^0.1.4",
-                "get-stream": "^3.0.0",
-                "is-redirect": "^1.0.0",
-                "is-retry-allowed": "^1.0.0",
-                "is-stream": "^1.0.0",
-                "lowercase-keys": "^1.0.0",
-                "safe-buffer": "^5.0.1",
-                "timed-out": "^4.0.0",
-                "unzip-response": "^2.0.1",
-                "url-parse-lax": "^1.0.0"
-            }
-        },
-        "graceful-fs": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
-            "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q=="
-        },
-        "growly": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
-            "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
-        },
-        "hammerjs": {
-            "version": "2.0.8",
-            "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
-            "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
-        },
-        "har-schema": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-            "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-            "dev": true
-        },
-        "har-validator": {
-            "version": "5.1.3",
-            "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
-            "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
-            "dev": true,
-            "requires": {
-                "ajv": "^6.5.5",
-                "har-schema": "^2.0.0"
-            }
-        },
-        "has": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-            "dev": true,
-            "requires": {
-                "function-bind": "^1.1.1"
-            }
-        },
-        "has-ansi": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-            "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-            "dev": true,
-            "requires": {
-                "ansi-regex": "^2.0.0"
-            }
-        },
-        "has-flag": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-            "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
-        },
-        "has-symbols": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
-            "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
-        },
-        "has-value": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-            "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-            "requires": {
-                "get-value": "^2.0.6",
-                "has-values": "^1.0.0",
-                "isobject": "^3.0.0"
-            },
-            "dependencies": {
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "has-values": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-            "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-            "requires": {
-                "is-number": "^3.0.0",
-                "kind-of": "^4.0.0"
-            },
-            "dependencies": {
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "kind-of": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-                    "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
-            }
-        },
-        "hermes-engine": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.2.1.tgz",
-            "integrity": "sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ=="
-        },
-        "hoist-non-react-statics": {
-            "version": "2.5.5",
-            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
-            "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
-        },
-        "home-path": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz",
-            "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==",
-            "dev": true
-        },
-        "hosted-git-info": {
-            "version": "2.8.4",
-            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
-            "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ=="
-        },
-        "http-errors": {
-            "version": "1.7.3",
-            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
-            "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
-            "requires": {
-                "depd": "~1.1.2",
-                "inherits": "2.0.4",
-                "setprototypeof": "1.1.1",
-                "statuses": ">= 1.5.0 < 2",
-                "toidentifier": "1.0.0"
-            }
-        },
-        "http-signature": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-            "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0",
-                "jsprim": "^1.2.2",
-                "sshpk": "^1.7.0"
-            }
-        },
-        "husky": {
-            "version": "0.14.3",
-            "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz",
-            "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==",
-            "dev": true,
-            "requires": {
-                "is-ci": "^1.0.10",
-                "normalize-path": "^1.0.0",
-                "strip-indent": "^2.0.0"
-            },
-            "dependencies": {
-                "normalize-path": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz",
-                    "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
-                    "dev": true
-                }
-            }
-        },
-        "iconv-lite": {
-            "version": "0.4.24",
-            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-            "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-            }
-        },
-        "ignore": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
-            "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
-            "dev": true
-        },
-        "image-size": {
-            "version": "0.6.3",
-            "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
-            "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA=="
-        },
-        "import-fresh": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-            "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
-            "requires": {
-                "caller-path": "^2.0.0",
-                "resolve-from": "^3.0.0"
-            }
-        },
-        "import-lazy": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-            "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
-            "dev": true
-        },
-        "imurmurhash": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-            "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
-        },
-        "indent-string": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
-            "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
-            "dev": true
-        },
-        "inflight": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-            "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-            "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-            }
-        },
-        "inherits": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-        },
-        "ini": {
-            "version": "1.3.5",
-            "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-            "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-            "dev": true
-        },
-        "inquirer": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
-            "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
-            "requires": {
-                "ansi-escapes": "^3.0.0",
-                "chalk": "^2.0.0",
-                "cli-cursor": "^2.1.0",
-                "cli-width": "^2.0.0",
-                "external-editor": "^2.0.4",
-                "figures": "^2.0.0",
-                "lodash": "^4.3.0",
-                "mute-stream": "0.0.7",
-                "run-async": "^2.2.0",
-                "rx-lite": "^4.0.8",
-                "rx-lite-aggregates": "^4.0.8",
-                "string-width": "^2.1.0",
-                "strip-ansi": "^4.0.0",
-                "through": "^2.3.6"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "invariant": {
-            "version": "2.2.4",
-            "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-            "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-            "requires": {
-                "loose-envify": "^1.0.0"
-            }
-        },
-        "invert-kv": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-            "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
-        },
-        "ip": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-            "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
-            "dev": true
-        },
-        "is-accessor-descriptor": {
-            "version": "0.1.6",
-            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-            "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-            "requires": {
-                "kind-of": "^3.0.2"
-            }
-        },
-        "is-arrayish": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-            "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
-        },
-        "is-buffer": {
-            "version": "1.1.6",
-            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
-        },
-        "is-callable": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
-            "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
-            "dev": true
-        },
-        "is-ci": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
-            "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
-            "dev": true,
-            "requires": {
-                "ci-info": "^1.5.0"
-            }
-        },
-        "is-data-descriptor": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-            "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-            "requires": {
-                "kind-of": "^3.0.2"
-            }
-        },
-        "is-date-object": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
-            "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
-            "dev": true
-        },
-        "is-descriptor": {
-            "version": "0.1.6",
-            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-            "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-            "requires": {
-                "is-accessor-descriptor": "^0.1.6",
-                "is-data-descriptor": "^0.1.4",
-                "kind-of": "^5.0.0"
-            },
-            "dependencies": {
-                "kind-of": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                    "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
-                }
-            }
-        },
-        "is-directory": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-            "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
-        },
-        "is-extendable": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-            "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
-        },
-        "is-extglob": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-            "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-            "dev": true
-        },
-        "is-finite": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
-            "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-            "dev": true,
-            "requires": {
-                "number-is-nan": "^1.0.0"
-            }
-        },
-        "is-fullwidth-code-point": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-            "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-            "requires": {
-                "number-is-nan": "^1.0.0"
-            }
-        },
-        "is-glob": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-            "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-            "dev": true,
-            "requires": {
-                "is-extglob": "^2.1.1"
-            }
-        },
-        "is-installed-globally": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
-            "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
-            "dev": true,
-            "requires": {
-                "global-dirs": "^0.1.0",
-                "is-path-inside": "^1.0.0"
-            }
-        },
-        "is-npm": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
-            "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
-            "dev": true
-        },
-        "is-number": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-            "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-            "requires": {
-                "kind-of": "^3.0.2"
-            }
-        },
-        "is-obj": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-            "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
-            "dev": true
-        },
-        "is-observable": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
-            "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
-            "dev": true,
-            "requires": {
-                "symbol-observable": "^1.1.0"
-            }
-        },
-        "is-path-inside": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
-            "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
-            "dev": true,
-            "requires": {
-                "path-is-inside": "^1.0.1"
-            }
-        },
-        "is-plain-object": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-            "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-            "requires": {
-                "isobject": "^3.0.1"
-            },
-            "dependencies": {
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "is-promise": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-            "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
-        },
-        "is-redirect": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
-            "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
-            "dev": true
-        },
-        "is-regex": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
-            "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
-            "dev": true,
-            "requires": {
-                "has": "^1.0.1"
-            }
-        },
-        "is-regexp": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
-            "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
-            "dev": true
-        },
-        "is-retry-allowed": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
-            "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
-            "dev": true
-        },
-        "is-stream": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-            "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
-        },
-        "is-symbol": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
-            "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
-            "dev": true,
-            "requires": {
-                "has-symbols": "^1.0.0"
-            }
-        },
-        "is-typedarray": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-            "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-            "dev": true
-        },
-        "is-utf8": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-            "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-            "dev": true
-        },
-        "is-windows": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-            "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
-        },
-        "is-wsl": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-            "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
-        },
-        "isarray": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-            "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-        },
-        "isexe": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
-        },
-        "isobject": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-            "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        },
-        "isomorphic-fetch": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
-            "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
-            "requires": {
-                "node-fetch": "^1.0.1",
-                "whatwg-fetch": ">=0.10.0"
-            },
-            "dependencies": {
-                "node-fetch": {
-                    "version": "1.7.3",
-                    "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
-                    "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
-                    "requires": {
-                        "encoding": "^0.1.11",
-                        "is-stream": "^1.0.1"
-                    }
-                }
-            }
-        },
-        "isstream": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-            "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-            "dev": true
-        },
-        "jest-docblock": {
-            "version": "21.2.0",
-            "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
-            "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==",
-            "dev": true
-        },
-        "jest-get-type": {
-            "version": "22.4.3",
-            "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz",
-            "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==",
-            "dev": true
-        },
-        "jest-haste-map": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
-            "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
-            "requires": {
-                "@jest/types": "^24.9.0",
-                "anymatch": "^2.0.0",
-                "fb-watchman": "^2.0.0",
-                "fsevents": "^1.2.7",
-                "graceful-fs": "^4.1.15",
-                "invariant": "^2.2.4",
-                "jest-serializer": "^24.9.0",
-                "jest-util": "^24.9.0",
-                "jest-worker": "^24.9.0",
-                "micromatch": "^3.1.10",
-                "sane": "^4.0.3",
-                "walker": "^1.0.7"
-            }
-        },
-        "jest-message-util": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
-            "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "@jest/test-result": "^24.9.0",
-                "@jest/types": "^24.9.0",
-                "@types/stack-utils": "^1.0.1",
-                "chalk": "^2.0.1",
-                "micromatch": "^3.1.10",
-                "slash": "^2.0.0",
-                "stack-utils": "^1.0.1"
-            }
-        },
-        "jest-mock": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
-            "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
-            "requires": {
-                "@jest/types": "^24.9.0"
-            }
-        },
-        "jest-serializer": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
-            "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ=="
-        },
-        "jest-util": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
-            "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
-            "requires": {
-                "@jest/console": "^24.9.0",
-                "@jest/fake-timers": "^24.9.0",
-                "@jest/source-map": "^24.9.0",
-                "@jest/test-result": "^24.9.0",
-                "@jest/types": "^24.9.0",
-                "callsites": "^3.0.0",
-                "chalk": "^2.0.1",
-                "graceful-fs": "^4.1.15",
-                "is-ci": "^2.0.0",
-                "mkdirp": "^0.5.1",
-                "slash": "^2.0.0",
-                "source-map": "^0.6.0"
-            },
-            "dependencies": {
-                "callsites": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-                    "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
-                },
-                "ci-info": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-                    "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
-                },
-                "is-ci": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-                    "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-                    "requires": {
-                        "ci-info": "^2.0.0"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
-            }
-        },
-        "jest-validate": {
-            "version": "23.6.0",
-            "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz",
-            "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==",
-            "dev": true,
-            "requires": {
-                "chalk": "^2.0.1",
-                "jest-get-type": "^22.1.0",
-                "leven": "^2.1.0",
-                "pretty-format": "^23.6.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                },
-                "pretty-format": {
-                    "version": "23.6.0",
-                    "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz",
-                    "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0",
-                        "ansi-styles": "^3.2.0"
-                    }
-                }
-            }
-        },
-        "jest-worker": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-            "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
-            "requires": {
-                "merge-stream": "^2.0.0",
-                "supports-color": "^6.1.0"
-            },
-            "dependencies": {
-                "merge-stream": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-                    "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
-                },
-                "supports-color": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-                    "requires": {
-                        "has-flag": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "jetifier": {
-            "version": "1.6.5",
-            "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.5.tgz",
-            "integrity": "sha512-T7yzBSu9PR+DqjYt+I0KVO1XTb1QhAfHnXV5Nd3xpbXM6Xg4e3vP60Q4qkNU8Fh6PHC2PivPUNN3rY7G2MxcDQ=="
-        },
-        "js-tokens": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-            "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-        },
-        "js-yaml": {
-            "version": "3.13.1",
-            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-            "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
-            "requires": {
-                "argparse": "^1.0.7",
-                "esprima": "^4.0.0"
-            }
-        },
-        "jsbn": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-            "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-            "dev": true
-        },
-        "jsc-android": {
-            "version": "245459.0.0",
-            "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
-            "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg=="
-        },
-        "jsesc": {
-            "version": "2.5.2",
-            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-            "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
-        },
-        "json-parse-better-errors": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-            "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
-        },
-        "json-schema": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-            "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-            "dev": true
-        },
-        "json-schema-traverse": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-            "dev": true
-        },
-        "json-stable-stringify": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
-            "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
-            "requires": {
-                "jsonify": "~0.0.0"
-            }
-        },
-        "json-stable-stringify-without-jsonify": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-            "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
-            "dev": true
-        },
-        "json-stringify-safe": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-            "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
-        },
-        "json5": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
-            "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
-            "requires": {
-                "minimist": "^1.2.0"
-            }
-        },
-        "jsonfile": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-            "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-            "requires": {
-                "graceful-fs": "^4.1.6"
-            }
-        },
-        "jsonify": {
-            "version": "0.0.0",
-            "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
-            "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
-        },
-        "jsprim": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-            "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "1.0.0",
-                "extsprintf": "1.3.0",
-                "json-schema": "0.2.3",
-                "verror": "1.10.0"
-            }
-        },
-        "jsx-ast-utils": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz",
-            "integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==",
-            "dev": true,
-            "requires": {
-                "array-includes": "^3.0.3",
-                "object.assign": "^4.1.0"
-            }
-        },
-        "keymirror": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz",
-            "integrity": "sha1-kYiJ6hP40KQufFVyUO7nE63JXDU="
-        },
-        "kind-of": {
-            "version": "3.2.2",
-            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-            "requires": {
-                "is-buffer": "^1.1.5"
-            }
-        },
-        "klaw": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
-            "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
-            "requires": {
-                "graceful-fs": "^4.1.9"
-            }
-        },
-        "latest-version": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
-            "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
-            "dev": true,
-            "requires": {
-                "package-json": "^4.0.0"
-            }
-        },
-        "lbry-redux": {
-            "version": "github:lbryio/lbry-redux#5c874e921769093428966fa7ecdf723719cb9067",
-            "from": "github:lbryio/lbry-redux#5c874e921769093428966fa7ecdf723719cb9067",
-            "requires": {
-                "proxy-polyfill": "0.1.6",
-                "reselect": "^3.0.0",
-                "uuid": "^3.3.2"
-            }
-        },
-        "lbryinc": {
-            "version": "github:lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676",
-            "from": "github:lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676",
-            "requires": {
-                "reselect": "^3.0.0"
-            }
-        },
-        "lcid": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-            "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-            "requires": {
-                "invert-kv": "^1.0.0"
-            }
-        },
-        "leven": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
-            "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
-            "dev": true
-        },
-        "levn": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-            "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-            "dev": true,
-            "requires": {
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2"
-            }
-        },
-        "lint-staged": {
-            "version": "7.3.0",
-            "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.3.0.tgz",
-            "integrity": "sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==",
-            "dev": true,
-            "requires": {
-                "chalk": "^2.3.1",
-                "commander": "^2.14.1",
-                "cosmiconfig": "^5.0.2",
-                "debug": "^3.1.0",
-                "dedent": "^0.7.0",
-                "execa": "^0.9.0",
-                "find-parent-dir": "^0.3.0",
-                "is-glob": "^4.0.0",
-                "is-windows": "^1.0.2",
-                "jest-validate": "^23.5.0",
-                "listr": "^0.14.1",
-                "lodash": "^4.17.5",
-                "log-symbols": "^2.2.0",
-                "micromatch": "^3.1.8",
-                "npm-which": "^3.0.1",
-                "p-map": "^1.1.1",
-                "path-is-inside": "^1.0.2",
-                "pify": "^3.0.0",
-                "please-upgrade-node": "^3.0.2",
-                "staged-git-files": "1.1.1",
-                "string-argv": "^0.0.2",
-                "stringify-object": "^3.2.2"
-            },
-            "dependencies": {
-                "arr-diff": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-                    "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-                    "dev": true
-                },
-                "array-unique": {
-                    "version": "0.3.2",
-                    "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-                    "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-                    "dev": true
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "debug": {
-                    "version": "3.2.6",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-                    "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "execa": {
-                    "version": "0.9.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz",
-                    "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==",
-                    "dev": true,
-                    "requires": {
-                        "cross-spawn": "^5.0.1",
-                        "get-stream": "^3.0.0",
-                        "is-stream": "^1.1.0",
-                        "npm-run-path": "^2.0.0",
-                        "p-finally": "^1.0.0",
-                        "signal-exit": "^3.0.0",
-                        "strip-eof": "^1.0.0"
-                    }
-                },
-                "expand-brackets": {
-                    "version": "2.1.4",
-                    "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-                    "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-                    "dev": true,
-                    "requires": {
-                        "debug": "^2.3.3",
-                        "define-property": "^0.2.5",
-                        "extend-shallow": "^2.0.1",
-                        "posix-character-classes": "^0.1.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "debug": {
-                            "version": "2.6.9",
-                            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                            "dev": true,
-                            "requires": {
-                                "ms": "2.0.0"
-                            }
-                        },
-                        "define-property": {
-                            "version": "0.2.5",
-                            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                            "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                            "dev": true,
-                            "requires": {
-                                "is-descriptor": "^0.1.0"
-                            }
-                        },
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        },
-                        "is-accessor-descriptor": {
-                            "version": "0.1.6",
-                            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-                            "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-                            "dev": true,
-                            "requires": {
-                                "kind-of": "^3.0.2"
-                            },
-                            "dependencies": {
-                                "kind-of": {
-                                    "version": "3.2.2",
-                                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                    "dev": true,
-                                    "requires": {
-                                        "is-buffer": "^1.1.5"
-                                    }
-                                }
-                            }
-                        },
-                        "is-data-descriptor": {
-                            "version": "0.1.4",
-                            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-                            "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-                            "dev": true,
-                            "requires": {
-                                "kind-of": "^3.0.2"
-                            },
-                            "dependencies": {
-                                "kind-of": {
-                                    "version": "3.2.2",
-                                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                    "dev": true,
-                                    "requires": {
-                                        "is-buffer": "^1.1.5"
-                                    }
-                                }
-                            }
-                        },
-                        "is-descriptor": {
-                            "version": "0.1.6",
-                            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-                            "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-                            "dev": true,
-                            "requires": {
-                                "is-accessor-descriptor": "^0.1.6",
-                                "is-data-descriptor": "^0.1.4",
-                                "kind-of": "^5.0.0"
-                            }
-                        },
-                        "kind-of": {
-                            "version": "5.1.0",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                            "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-                            "dev": true
-                        },
-                        "ms": {
-                            "version": "2.0.0",
-                            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                            "dev": true
-                        }
-                    }
-                },
-                "extglob": {
-                    "version": "2.0.4",
-                    "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-                    "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-                    "dev": true,
-                    "requires": {
-                        "array-unique": "^0.3.2",
-                        "define-property": "^1.0.0",
-                        "expand-brackets": "^2.1.4",
-                        "extend-shallow": "^2.0.1",
-                        "fragment-cache": "^0.2.1",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "define-property": {
-                            "version": "1.0.0",
-                            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                            "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                            "dev": true,
-                            "requires": {
-                                "is-descriptor": "^1.0.0"
-                            }
-                        },
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "dev": true,
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                },
-                "is-extglob": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-                    "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-                    "dev": true
-                },
-                "is-glob": {
-                    "version": "4.0.1",
-                    "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-                    "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-                    "dev": true,
-                    "requires": {
-                        "is-extglob": "^2.1.1"
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-                    "dev": true
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-                    "dev": true
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "pify": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-                    "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-                    "dev": true
-                }
-            }
-        },
-        "listr": {
-            "version": "0.14.3",
-            "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
-            "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
-            "dev": true,
-            "requires": {
-                "@samverschueren/stream-to-observable": "^0.3.0",
-                "is-observable": "^1.1.0",
-                "is-promise": "^2.1.0",
-                "is-stream": "^1.1.0",
-                "listr-silent-renderer": "^1.1.1",
-                "listr-update-renderer": "^0.5.0",
-                "listr-verbose-renderer": "^0.5.0",
-                "p-map": "^2.0.0",
-                "rxjs": "^6.3.3"
-            },
-            "dependencies": {
-                "p-map": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-                    "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-                    "dev": true
-                }
-            }
-        },
-        "listr-silent-renderer": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
-            "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
-            "dev": true
-        },
-        "listr-update-renderer": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
-            "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
-            "dev": true,
-            "requires": {
-                "chalk": "^1.1.3",
-                "cli-truncate": "^0.2.1",
-                "elegant-spinner": "^1.0.1",
-                "figures": "^1.7.0",
-                "indent-string": "^3.0.0",
-                "log-symbols": "^1.0.2",
-                "log-update": "^2.3.0",
-                "strip-ansi": "^3.0.1"
-            },
-            "dependencies": {
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "figures": {
-                    "version": "1.7.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-                    "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5",
-                        "object-assign": "^4.1.0"
-                    }
-                },
-                "log-symbols": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
-                    "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
-                    "dev": true,
-                    "requires": {
-                        "chalk": "^1.0.0"
-                    }
-                }
-            }
-        },
-        "listr-verbose-renderer": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
-            "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
-            "dev": true,
-            "requires": {
-                "chalk": "^2.4.1",
-                "cli-cursor": "^2.1.0",
-                "date-fns": "^1.27.2",
-                "figures": "^2.0.0"
-            }
-        },
-        "load-json-file": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
-            "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "parse-json": "^2.2.0",
-                "pify": "^2.0.0",
-                "strip-bom": "^3.0.0"
-            }
-        },
-        "locate-path": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-            "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-            "requires": {
-                "p-locate": "^2.0.0",
-                "path-exists": "^3.0.0"
-            }
-        },
-        "lodash": {
-            "version": "4.17.15",
-            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-            "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
-        },
-        "lodash.clonedeep": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-            "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
-        },
-        "lodash.forin": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.forin/-/lodash.forin-4.4.0.tgz",
-            "integrity": "sha1-XT8grlZAEfvog4H32YlJyclRlzE="
-        },
-        "lodash.get": {
-            "version": "4.4.2",
-            "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
-            "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
-        },
-        "lodash.isempty": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
-            "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
-        },
-        "lodash.merge": {
-            "version": "4.6.2",
-            "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-            "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-            "dev": true
-        },
-        "lodash.pickby": {
-            "version": "4.6.0",
-            "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
-            "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8="
-        },
-        "lodash.set": {
-            "version": "4.3.2",
-            "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
-            "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
-        },
-        "lodash.throttle": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-            "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
-        },
-        "lodash.toarray": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
-            "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
-        },
-        "lodash.unescape": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
-            "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
-            "dev": true
-        },
-        "lodash.unset": {
-            "version": "4.5.2",
-            "resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz",
-            "integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0="
-        },
-        "log-symbols": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-            "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-            "requires": {
-                "chalk": "^2.0.1"
-            }
-        },
-        "log-update": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
-            "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
-            "dev": true,
-            "requires": {
-                "ansi-escapes": "^3.0.0",
-                "cli-cursor": "^2.0.0",
-                "wrap-ansi": "^3.0.1"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
-                    "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^2.1.1",
-                        "strip-ansi": "^4.0.0"
-                    }
-                }
-            }
-        },
-        "logkitty": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.6.1.tgz",
-            "integrity": "sha512-cHuXN8qUZuzX/7kB6VyS7kB4xyD24e8gyHXIFNhIv+fjW3P+jEXNUhj0o/7qWJtv7UZpbnPgUqzu/AZQ8RAqxQ==",
-            "requires": {
-                "ansi-fragments": "^0.2.1",
-                "dayjs": "^1.8.15",
-                "yargs": "^12.0.5"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-                },
-                "cliui": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-                    "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-                    "requires": {
-                        "string-width": "^2.1.1",
-                        "strip-ansi": "^4.0.0",
-                        "wrap-ansi": "^2.0.0"
-                    }
-                },
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "execa": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-                    "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-                    "requires": {
-                        "cross-spawn": "^6.0.0",
-                        "get-stream": "^4.0.0",
-                        "is-stream": "^1.1.0",
-                        "npm-run-path": "^2.0.0",
-                        "p-finally": "^1.0.0",
-                        "signal-exit": "^3.0.0",
-                        "strip-eof": "^1.0.0"
-                    }
-                },
-                "find-up": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-                    "requires": {
-                        "locate-path": "^3.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "invert-kv": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-                    "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
-                },
-                "lcid": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-                    "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-                    "requires": {
-                        "invert-kv": "^2.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-                    "requires": {
-                        "p-locate": "^3.0.0",
-                        "path-exists": "^3.0.0"
-                    }
-                },
-                "mem": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-                    "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-                    "requires": {
-                        "map-age-cleaner": "^0.1.1",
-                        "mimic-fn": "^2.0.0",
-                        "p-is-promise": "^2.0.0"
-                    }
-                },
-                "mimic-fn": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-                    "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
-                },
-                "os-locale": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-                    "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-                    "requires": {
-                        "execa": "^1.0.0",
-                        "lcid": "^2.0.0",
-                        "mem": "^4.0.0"
-                    }
-                },
-                "p-limit": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
-                    "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
-                    "requires": {
-                        "p-try": "^2.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-                    "requires": {
-                        "p-limit": "^2.0.0"
-                    }
-                },
-                "p-try": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                },
-                "yargs": {
-                    "version": "12.0.5",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-                    "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
-                    "requires": {
-                        "cliui": "^4.0.0",
-                        "decamelize": "^1.2.0",
-                        "find-up": "^3.0.0",
-                        "get-caller-file": "^1.0.1",
-                        "os-locale": "^3.0.0",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^1.0.1",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^2.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^3.2.1 || ^4.0.0",
-                        "yargs-parser": "^11.1.1"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "11.1.1",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-                    "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
-            }
-        },
-        "loose-envify": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-            "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-            "requires": {
-                "js-tokens": "^3.0.0 || ^4.0.0"
-            }
-        },
-        "loud-rejection": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-            "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-            "dev": true,
-            "requires": {
-                "currently-unhandled": "^0.4.1",
-                "signal-exit": "^3.0.0"
-            }
-        },
-        "lowercase-keys": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-            "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-            "dev": true
-        },
-        "lru-cache": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-            "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-            "requires": {
-                "pseudomap": "^1.0.2",
-                "yallist": "^2.1.2"
-            }
-        },
-        "lz-string": {
-            "version": "1.4.4",
-            "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
-            "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY="
-        },
-        "make-dir": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-            "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-            "requires": {
-                "pify": "^4.0.1",
-                "semver": "^5.6.0"
-            },
-            "dependencies": {
-                "pify": {
-                    "version": "4.0.1",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-                    "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
-                }
-            }
-        },
-        "makeerror": {
-            "version": "1.0.11",
-            "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
-            "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
-            "requires": {
-                "tmpl": "1.0.x"
-            }
-        },
-        "map-age-cleaner": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-            "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-            "requires": {
-                "p-defer": "^1.0.0"
-            }
-        },
-        "map-cache": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-            "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
-        },
-        "map-obj": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-            "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-            "dev": true
-        },
-        "map-visit": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-            "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-            "requires": {
-                "object-visit": "^1.0.0"
-            }
-        },
-        "mem": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
-            "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
-            "requires": {
-                "mimic-fn": "^1.0.0"
-            }
-        },
-        "meow": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-            "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-            "dev": true,
-            "requires": {
-                "camelcase-keys": "^2.0.0",
-                "decamelize": "^1.1.2",
-                "loud-rejection": "^1.0.0",
-                "map-obj": "^1.0.1",
-                "minimist": "^1.1.3",
-                "normalize-package-data": "^2.3.4",
-                "object-assign": "^4.0.1",
-                "read-pkg-up": "^1.0.1",
-                "redent": "^1.0.0",
-                "trim-newlines": "^1.0.0"
-            },
-            "dependencies": {
-                "find-up": {
-                    "version": "1.1.2",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-                    "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-                    "dev": true,
-                    "requires": {
-                        "path-exists": "^2.0.0",
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "load-json-file": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-                    "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "parse-json": "^2.2.0",
-                        "pify": "^2.0.0",
-                        "pinkie-promise": "^2.0.0",
-                        "strip-bom": "^2.0.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-                    "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-                    "dev": true,
-                    "requires": {
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "path-type": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-                    "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "pify": "^2.0.0",
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "read-pkg": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-                    "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-                    "dev": true,
-                    "requires": {
-                        "load-json-file": "^1.0.0",
-                        "normalize-package-data": "^2.3.2",
-                        "path-type": "^1.0.0"
-                    }
-                },
-                "read-pkg-up": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-                    "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^1.0.0",
-                        "read-pkg": "^1.0.0"
-                    }
-                },
-                "strip-bom": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-                    "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-                    "dev": true,
-                    "requires": {
-                        "is-utf8": "^0.2.0"
-                    }
-                }
-            }
-        },
-        "merge": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
-            "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ=="
-        },
-        "merge-stream": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
-            "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
-            "requires": {
-                "readable-stream": "^2.0.1"
-            }
-        },
-        "metro": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro/-/metro-0.56.3.tgz",
-            "integrity": "sha512-mxHpvBGWanZ46wAEZVLinNO5IYMcFbTdMZIRhC7r+rvoSK6r9iPj95AujBfzLXMAl36RI2O3D7yp5hOYif/gEQ==",
-            "requires": {
-                "@babel/core": "^7.0.0",
-                "@babel/generator": "^7.0.0",
-                "@babel/parser": "^7.0.0",
-                "@babel/plugin-external-helpers": "^7.0.0",
-                "@babel/template": "^7.0.0",
-                "@babel/traverse": "^7.0.0",
-                "@babel/types": "^7.0.0",
-                "absolute-path": "^0.0.0",
-                "async": "^2.4.0",
-                "babel-preset-fbjs": "^3.1.2",
-                "buffer-crc32": "^0.2.13",
-                "chalk": "^2.4.1",
-                "concat-stream": "^1.6.0",
-                "connect": "^3.6.5",
-                "debug": "^2.2.0",
-                "denodeify": "^1.2.1",
-                "eventemitter3": "^3.0.0",
-                "fbjs": "^1.0.0",
-                "fs-extra": "^1.0.0",
-                "graceful-fs": "^4.1.3",
-                "image-size": "^0.6.0",
-                "invariant": "^2.2.4",
-                "jest-haste-map": "^24.7.1",
-                "jest-worker": "^24.6.0",
-                "json-stable-stringify": "^1.0.1",
-                "lodash.throttle": "^4.1.1",
-                "merge-stream": "^1.0.1",
-                "metro-babel-register": "0.56.3",
-                "metro-babel-transformer": "0.56.3",
-                "metro-cache": "0.56.3",
-                "metro-config": "0.56.3",
-                "metro-core": "0.56.3",
-                "metro-inspector-proxy": "0.56.3",
-                "metro-minify-uglify": "0.56.3",
-                "metro-react-native-babel-preset": "0.56.3",
-                "metro-resolver": "0.56.3",
-                "metro-source-map": "0.56.3",
-                "metro-symbolicate": "0.56.3",
-                "mime-types": "2.1.11",
-                "mkdirp": "^0.5.1",
-                "node-fetch": "^2.2.0",
-                "nullthrows": "^1.1.0",
-                "resolve": "^1.5.0",
-                "rimraf": "^2.5.4",
-                "serialize-error": "^2.1.0",
-                "source-map": "^0.5.6",
-                "temp": "0.8.3",
-                "throat": "^4.1.0",
-                "wordwrap": "^1.0.0",
-                "write-file-atomic": "^1.2.0",
-                "ws": "^1.1.5",
-                "xpipe": "^1.0.5",
-                "yargs": "^9.0.0"
-            },
-            "dependencies": {
-                "fs-extra": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
-                    "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "jsonfile": "^2.1.0",
-                        "klaw": "^1.0.0"
-                    }
-                },
-                "jsonfile": {
-                    "version": "2.4.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-                    "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-                    "requires": {
-                        "graceful-fs": "^4.1.6"
-                    }
-                },
-                "metro-react-native-babel-preset": {
-                    "version": "0.56.3",
-                    "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz",
-                    "integrity": "sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==",
-                    "requires": {
-                        "@babel/plugin-proposal-class-properties": "^7.0.0",
-                        "@babel/plugin-proposal-export-default-from": "^7.0.0",
-                        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-                        "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-                        "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
-                        "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-                        "@babel/plugin-syntax-dynamic-import": "^7.0.0",
-                        "@babel/plugin-syntax-export-default-from": "^7.0.0",
-                        "@babel/plugin-syntax-flow": "^7.2.0",
-                        "@babel/plugin-transform-arrow-functions": "^7.0.0",
-                        "@babel/plugin-transform-block-scoping": "^7.0.0",
-                        "@babel/plugin-transform-classes": "^7.0.0",
-                        "@babel/plugin-transform-computed-properties": "^7.0.0",
-                        "@babel/plugin-transform-destructuring": "^7.0.0",
-                        "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
-                        "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-                        "@babel/plugin-transform-for-of": "^7.0.0",
-                        "@babel/plugin-transform-function-name": "^7.0.0",
-                        "@babel/plugin-transform-literals": "^7.0.0",
-                        "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-                        "@babel/plugin-transform-object-assign": "^7.0.0",
-                        "@babel/plugin-transform-parameters": "^7.0.0",
-                        "@babel/plugin-transform-react-display-name": "^7.0.0",
-                        "@babel/plugin-transform-react-jsx": "^7.0.0",
-                        "@babel/plugin-transform-react-jsx-source": "^7.0.0",
-                        "@babel/plugin-transform-regenerator": "^7.0.0",
-                        "@babel/plugin-transform-runtime": "^7.0.0",
-                        "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-                        "@babel/plugin-transform-spread": "^7.0.0",
-                        "@babel/plugin-transform-sticky-regex": "^7.0.0",
-                        "@babel/plugin-transform-template-literals": "^7.0.0",
-                        "@babel/plugin-transform-typescript": "^7.0.0",
-                        "@babel/plugin-transform-unicode-regex": "^7.0.0",
-                        "@babel/template": "^7.0.0",
-                        "react-refresh": "^0.4.0"
-                    }
-                },
-                "mime-db": {
-                    "version": "1.23.0",
-                    "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz",
-                    "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk="
-                },
-                "mime-types": {
-                    "version": "2.1.11",
-                    "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz",
-                    "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
-                    "requires": {
-                        "mime-db": "~1.23.0"
-                    }
-                },
-                "react-refresh": {
-                    "version": "0.4.2",
-                    "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz",
-                    "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ=="
-                },
-                "yargs": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
-                    "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
-                    "requires": {
-                        "camelcase": "^4.1.0",
-                        "cliui": "^3.2.0",
-                        "decamelize": "^1.1.1",
-                        "get-caller-file": "^1.0.1",
-                        "os-locale": "^2.0.0",
-                        "read-pkg-up": "^2.0.0",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^1.0.1",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^2.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^3.2.1",
-                        "yargs-parser": "^7.0.0"
-                    }
-                }
-            }
-        },
-        "metro-babel-register": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.56.3.tgz",
-            "integrity": "sha512-ILCRtNFdW6vzqmLAG2MYWdTSE1vCAZqDKNggiNhlfViuoxmWAIL0vOqixl1CHZF5z4t55+fk46A0jSN7UgPyVw==",
-            "requires": {
-                "@babel/core": "^7.0.0",
-                "@babel/plugin-proposal-class-properties": "^7.0.0",
-                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-                "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-                "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
-                "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-                "@babel/plugin-transform-async-to-generator": "^7.0.0",
-                "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-                "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-                "@babel/register": "^7.0.0",
-                "core-js": "^2.2.2",
-                "escape-string-regexp": "^1.0.5"
-            }
-        },
-        "metro-babel-transformer": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.56.3.tgz",
-            "integrity": "sha512-N5/ftb3rBkt6uKlgYAv+lwtzYc4dK0tBpfZ8pjec3kcypGuGTuf4LTHEh65EuzySreLngYI0bQzoFSn3G3DYsw==",
-            "requires": {
-                "@babel/core": "^7.0.0",
-                "metro-source-map": "0.56.3"
-            }
-        },
-        "metro-cache": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.56.3.tgz",
-            "integrity": "sha512-SsryVe/TVkt2IkEGnYhB3gQlg9iMlu8WJikQHcCEjMfPEnSIzmeymrX73fwQNPnTnN7F3E0HVjH6Wvq6fh0mcA==",
-            "requires": {
-                "jest-serializer": "^24.4.0",
-                "metro-core": "0.56.3",
-                "mkdirp": "^0.5.1",
-                "rimraf": "^2.5.4"
-            }
-        },
-        "metro-config": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.56.3.tgz",
-            "integrity": "sha512-C3ZLA5y5gW5auDSQN5dsCTduJg7LXEiX/tLAADOkgXWVImr5P74x9Wt8y1MMWrKx6p+4p5RMDyEwWDMXJt/DwA==",
-            "requires": {
-                "cosmiconfig": "^5.0.5",
-                "jest-validate": "^24.7.0",
-                "metro": "0.56.3",
-                "metro-cache": "0.56.3",
-                "metro-core": "0.56.3",
-                "pretty-format": "^24.7.0"
-            },
-            "dependencies": {
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-                },
-                "jest-get-type": {
-                    "version": "24.9.0",
-                    "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
-                    "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q=="
-                },
-                "jest-validate": {
-                    "version": "24.9.0",
-                    "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
-                    "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
-                    "requires": {
-                        "@jest/types": "^24.9.0",
-                        "camelcase": "^5.3.1",
-                        "chalk": "^2.0.1",
-                        "jest-get-type": "^24.9.0",
-                        "leven": "^3.1.0",
-                        "pretty-format": "^24.9.0"
-                    }
-                },
-                "leven": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-                    "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
-                }
-            }
-        },
-        "metro-core": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.56.3.tgz",
-            "integrity": "sha512-OAaHP3mBdlACMZRwDJzZzYC0o2S3qfb4BBK75L8H4Ds+y3QUSrjsDEpHACcpaMTOds8rBvjzn+jjB5tqNoHfBA==",
-            "requires": {
-                "jest-haste-map": "^24.7.1",
-                "lodash.throttle": "^4.1.1",
-                "metro-resolver": "0.56.3",
-                "wordwrap": "^1.0.0"
-            }
-        },
-        "metro-inspector-proxy": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.56.3.tgz",
-            "integrity": "sha512-7WtHinw+VJcunQ3q8El1MqqzYSRvXEjW5QE13VYwcLtnay3pvcqACeiQmGbWI0IqxB1+QH8tf3nkA7z7pQ7Vpw==",
-            "requires": {
-                "connect": "^3.6.5",
-                "debug": "^2.2.0",
-                "rxjs": "^5.4.3",
-                "ws": "^1.1.5",
-                "yargs": "^9.0.0"
-            },
-            "dependencies": {
-                "rxjs": {
-                    "version": "5.5.12",
-                    "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
-                    "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
-                    "requires": {
-                        "symbol-observable": "1.0.1"
-                    }
-                },
-                "symbol-observable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
-                    "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
-                },
-                "yargs": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
-                    "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
-                    "requires": {
-                        "camelcase": "^4.1.0",
-                        "cliui": "^3.2.0",
-                        "decamelize": "^1.1.1",
-                        "get-caller-file": "^1.0.1",
-                        "os-locale": "^2.0.0",
-                        "read-pkg-up": "^2.0.0",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^1.0.1",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^2.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^3.2.1",
-                        "yargs-parser": "^7.0.0"
-                    }
-                }
-            }
-        },
-        "metro-minify-uglify": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.56.3.tgz",
-            "integrity": "sha512-b9ljyeUpkJWVlFy8M/i4aNbvEBI0zN9vJh1jfU7yx+k9dX7FulLnpGmAQxxQdEszcM//sJrsKNS1oLYBxr0NMQ==",
-            "requires": {
-                "uglify-es": "^3.1.9"
-            }
-        },
-        "metro-react-native-babel-preset": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz",
-            "integrity": "sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==",
-            "dev": true,
-            "requires": {
-                "@babel/plugin-proposal-class-properties": "^7.0.0",
-                "@babel/plugin-proposal-export-default-from": "^7.0.0",
-                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-                "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-                "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
-                "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-                "@babel/plugin-syntax-dynamic-import": "^7.0.0",
-                "@babel/plugin-syntax-export-default-from": "^7.0.0",
-                "@babel/plugin-syntax-flow": "^7.2.0",
-                "@babel/plugin-transform-arrow-functions": "^7.0.0",
-                "@babel/plugin-transform-block-scoping": "^7.0.0",
-                "@babel/plugin-transform-classes": "^7.0.0",
-                "@babel/plugin-transform-computed-properties": "^7.0.0",
-                "@babel/plugin-transform-destructuring": "^7.0.0",
-                "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
-                "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-                "@babel/plugin-transform-for-of": "^7.0.0",
-                "@babel/plugin-transform-function-name": "^7.0.0",
-                "@babel/plugin-transform-literals": "^7.0.0",
-                "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-                "@babel/plugin-transform-object-assign": "^7.0.0",
-                "@babel/plugin-transform-parameters": "^7.0.0",
-                "@babel/plugin-transform-react-display-name": "^7.0.0",
-                "@babel/plugin-transform-react-jsx": "^7.0.0",
-                "@babel/plugin-transform-react-jsx-source": "^7.0.0",
-                "@babel/plugin-transform-regenerator": "^7.0.0",
-                "@babel/plugin-transform-runtime": "^7.0.0",
-                "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-                "@babel/plugin-transform-spread": "^7.0.0",
-                "@babel/plugin-transform-sticky-regex": "^7.0.0",
-                "@babel/plugin-transform-template-literals": "^7.0.0",
-                "@babel/plugin-transform-typescript": "^7.0.0",
-                "@babel/plugin-transform-unicode-regex": "^7.0.0",
-                "@babel/template": "^7.0.0",
-                "react-refresh": "^0.4.0"
-            }
-        },
-        "metro-react-native-babel-transformer": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.3.tgz",
-            "integrity": "sha512-T87m4jDu0gIvJo8kWEvkodWFgQ8XBzJUESs1hUUTBSMIqTa31MdWfA1gs+MipadG7OsEJpcb9m83mGr8K70MWw==",
-            "requires": {
-                "@babel/core": "^7.0.0",
-                "babel-preset-fbjs": "^3.1.2",
-                "metro-babel-transformer": "0.56.3",
-                "metro-react-native-babel-preset": "0.56.3",
-                "metro-source-map": "0.56.3"
-            },
-            "dependencies": {
-                "metro-react-native-babel-preset": {
-                    "version": "0.56.3",
-                    "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz",
-                    "integrity": "sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==",
-                    "requires": {
-                        "@babel/plugin-proposal-class-properties": "^7.0.0",
-                        "@babel/plugin-proposal-export-default-from": "^7.0.0",
-                        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-                        "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-                        "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
-                        "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-                        "@babel/plugin-syntax-dynamic-import": "^7.0.0",
-                        "@babel/plugin-syntax-export-default-from": "^7.0.0",
-                        "@babel/plugin-syntax-flow": "^7.2.0",
-                        "@babel/plugin-transform-arrow-functions": "^7.0.0",
-                        "@babel/plugin-transform-block-scoping": "^7.0.0",
-                        "@babel/plugin-transform-classes": "^7.0.0",
-                        "@babel/plugin-transform-computed-properties": "^7.0.0",
-                        "@babel/plugin-transform-destructuring": "^7.0.0",
-                        "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
-                        "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-                        "@babel/plugin-transform-for-of": "^7.0.0",
-                        "@babel/plugin-transform-function-name": "^7.0.0",
-                        "@babel/plugin-transform-literals": "^7.0.0",
-                        "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-                        "@babel/plugin-transform-object-assign": "^7.0.0",
-                        "@babel/plugin-transform-parameters": "^7.0.0",
-                        "@babel/plugin-transform-react-display-name": "^7.0.0",
-                        "@babel/plugin-transform-react-jsx": "^7.0.0",
-                        "@babel/plugin-transform-react-jsx-source": "^7.0.0",
-                        "@babel/plugin-transform-regenerator": "^7.0.0",
-                        "@babel/plugin-transform-runtime": "^7.0.0",
-                        "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-                        "@babel/plugin-transform-spread": "^7.0.0",
-                        "@babel/plugin-transform-sticky-regex": "^7.0.0",
-                        "@babel/plugin-transform-template-literals": "^7.0.0",
-                        "@babel/plugin-transform-typescript": "^7.0.0",
-                        "@babel/plugin-transform-unicode-regex": "^7.0.0",
-                        "@babel/template": "^7.0.0",
-                        "react-refresh": "^0.4.0"
-                    }
-                },
-                "react-refresh": {
-                    "version": "0.4.2",
-                    "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz",
-                    "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ=="
-                }
-            }
-        },
-        "metro-resolver": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.56.3.tgz",
-            "integrity": "sha512-VvMl4xUp0fy76WiP3YDtzMmrn6tN/jwxOBqlTy9MjN6R9sUXrGyO5thwn/uKQqp5vwBTuJev7nZL7OKzwludKA==",
-            "requires": {
-                "absolute-path": "^0.0.0"
-            }
-        },
-        "metro-source-map": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.56.3.tgz",
-            "integrity": "sha512-CheqWbJZSM0zjcNBqELUiocwH3XArrOk6alhVuzJ2gV/WTMBQFwP0TtQssSMwjnouMHNEzY8RxErXKXBk/zJmQ==",
-            "requires": {
-                "@babel/traverse": "^7.0.0",
-                "@babel/types": "^7.0.0",
-                "invariant": "^2.2.4",
-                "metro-symbolicate": "0.56.3",
-                "ob1": "0.56.3",
-                "source-map": "^0.5.6",
-                "vlq": "^1.0.0"
-            }
-        },
-        "metro-symbolicate": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.56.3.tgz",
-            "integrity": "sha512-fSQtjjy4eiJDThSl9eloxMElhrs+5PQB+DKKzmTFXT8e2GDga+pa1xTBFRUACMO8BXGuWmxR7SnGDw0wo5Ngrw==",
-            "requires": {
-                "invariant": "^2.2.4",
-                "metro-source-map": "0.56.3",
-                "source-map": "^0.5.6",
-                "through2": "^2.0.1",
-                "vlq": "^1.0.0"
-            }
-        },
-        "micromatch": {
-            "version": "3.1.10",
-            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-            "requires": {
-                "arr-diff": "^4.0.0",
-                "array-unique": "^0.3.2",
-                "braces": "^2.3.1",
-                "define-property": "^2.0.2",
-                "extend-shallow": "^3.0.2",
-                "extglob": "^2.0.4",
-                "fragment-cache": "^0.2.1",
-                "kind-of": "^6.0.2",
-                "nanomatch": "^1.2.9",
-                "object.pick": "^1.3.0",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.2"
-            },
-            "dependencies": {
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "mime": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
-        },
-        "mime-db": {
-            "version": "1.40.0",
-            "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-            "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
-        },
-        "mime-types": {
-            "version": "2.1.24",
-            "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-            "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-            "requires": {
-                "mime-db": "1.40.0"
-            }
-        },
-        "mimic-fn": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-            "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
-        },
-        "minimatch": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-            "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-            "requires": {
-                "brace-expansion": "^1.1.7"
-            }
-        },
-        "minimist": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-            "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
-        },
-        "mitt": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz",
-            "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==",
-            "dev": true
-        },
-        "mixin-deep": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-            "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-            "requires": {
-                "for-in": "^1.0.2",
-                "is-extendable": "^1.0.1"
-            },
-            "dependencies": {
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
-            }
-        },
-        "mkdirp": {
-            "version": "0.5.1",
-            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-            "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-            "requires": {
-                "minimist": "0.0.8"
-            },
-            "dependencies": {
-                "minimist": {
-                    "version": "0.0.8",
-                    "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-                    "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
-                }
-            }
-        },
-        "modal-react-native-web": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/modal-react-native-web/-/modal-react-native-web-0.2.0.tgz",
-            "integrity": "sha512-sC0/jL3ZL4bGtv1VS43TnrH7/FHUqgb7IU3VYWNDzuR223fYlpG5Gc974GsTP172Vi+lnnBL/G70xONmaggxeQ==",
-            "requires": {
-                "warning": "^4.0.1"
-            }
-        },
-        "moment": {
-            "version": "2.24.0",
-            "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
-            "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
-        },
-        "morgan": {
-            "version": "1.9.1",
-            "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
-            "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
-            "requires": {
-                "basic-auth": "~2.0.0",
-                "debug": "2.6.9",
-                "depd": "~1.1.2",
-                "on-finished": "~2.3.0",
-                "on-headers": "~1.0.1"
-            }
-        },
-        "ms": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-        },
-        "mute-stream": {
-            "version": "0.0.7",
-            "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-            "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
-        },
-        "nan": {
-            "version": "2.14.0",
-            "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-            "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-            "optional": true
-        },
-        "nanomatch": {
-            "version": "1.2.13",
-            "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-            "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-            "requires": {
-                "arr-diff": "^4.0.0",
-                "array-unique": "^0.3.2",
-                "define-property": "^2.0.2",
-                "extend-shallow": "^3.0.2",
-                "fragment-cache": "^0.2.1",
-                "is-windows": "^1.0.2",
-                "kind-of": "^6.0.2",
-                "object.pick": "^1.3.0",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.1"
-            },
-            "dependencies": {
-                "arr-diff": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-                    "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
-                },
-                "array-unique": {
-                    "version": "0.3.2",
-                    "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-                    "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "natural-compare": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-            "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
-            "dev": true
-        },
-        "negotiator": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-            "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
-        },
-        "nice-try": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-            "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
-        },
-        "node-emoji": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
-            "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
-            "requires": {
-                "lodash.toarray": "^4.4.0"
-            }
-        },
-        "node-fetch": {
-            "version": "2.6.0",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
-            "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
-        },
-        "node-int64": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-            "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
-        },
-        "node-modules-regexp": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
-            "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
-        },
-        "node-notifier": {
-            "version": "5.4.3",
-            "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz",
-            "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==",
-            "requires": {
-                "growly": "^1.3.0",
-                "is-wsl": "^1.1.0",
-                "semver": "^5.5.0",
-                "shellwords": "^0.1.1",
-                "which": "^1.3.0"
-            }
-        },
-        "normalize-package-data": {
-            "version": "2.5.0",
-            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-            "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-            "requires": {
-                "hosted-git-info": "^2.1.4",
-                "resolve": "^1.10.0",
-                "semver": "2 || 3 || 4 || 5",
-                "validate-npm-package-license": "^3.0.1"
-            }
-        },
-        "normalize-path": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-            "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-            "requires": {
-                "remove-trailing-separator": "^1.0.1"
-            }
-        },
-        "npm-path": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz",
-            "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==",
-            "dev": true,
-            "requires": {
-                "which": "^1.2.10"
-            }
-        },
-        "npm-run-path": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-            "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-            "requires": {
-                "path-key": "^2.0.0"
-            }
-        },
-        "npm-which": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz",
-            "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=",
-            "dev": true,
-            "requires": {
-                "commander": "^2.9.0",
-                "npm-path": "^2.0.2",
-                "which": "^1.2.10"
-            }
-        },
-        "nugget": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
-            "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
-            "dev": true,
-            "requires": {
-                "debug": "^2.1.3",
-                "minimist": "^1.1.0",
-                "pretty-bytes": "^1.0.2",
-                "progress-stream": "^1.1.0",
-                "request": "^2.45.0",
-                "single-line-log": "^1.1.2",
-                "throttleit": "0.0.2"
-            }
-        },
-        "nullthrows": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
-            "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
-        },
-        "number-is-nan": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-            "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
-        },
-        "oauth-sign": {
-            "version": "0.9.0",
-            "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-            "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-            "dev": true
-        },
-        "ob1": {
-            "version": "0.56.3",
-            "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.56.3.tgz",
-            "integrity": "sha512-3JL2ZyWOHDGTEAe4kcG+TxhGPKCCikgyoUIjE82JnXnmpR1LXItM9K3WhGsi4+O7oYngMW6FjpHHoc5xJTMkTQ=="
-        },
-        "object-assign": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-            "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
-        },
-        "object-copy": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-            "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-            "requires": {
-                "copy-descriptor": "^0.1.0",
-                "define-property": "^0.2.5",
-                "kind-of": "^3.0.3"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "object-keys": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
-        },
-        "object-visit": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-            "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-            "requires": {
-                "isobject": "^3.0.0"
-            },
-            "dependencies": {
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "object.assign": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
-            "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
-            "requires": {
-                "define-properties": "^1.1.2",
-                "function-bind": "^1.1.1",
-                "has-symbols": "^1.0.0",
-                "object-keys": "^1.0.11"
-            }
-        },
-        "object.entries": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
-            "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.12.0",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3"
-            }
-        },
-        "object.fromentries": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz",
-            "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.2",
-                "es-abstract": "^1.11.0",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.1"
-            }
-        },
-        "object.pick": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-            "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-            "requires": {
-                "isobject": "^3.0.1"
-            },
-            "dependencies": {
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "object.values": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
-            "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.12.0",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3"
-            }
-        },
-        "on-finished": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-            "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-            "requires": {
-                "ee-first": "1.1.1"
-            }
-        },
-        "on-headers": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-            "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
-        },
-        "once": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-            "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-            "requires": {
-                "wrappy": "1"
-            }
-        },
-        "onetime": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-            "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-            "requires": {
-                "mimic-fn": "^1.0.0"
-            }
-        },
-        "open": {
-            "version": "6.4.0",
-            "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
-            "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
-            "requires": {
-                "is-wsl": "^1.1.0"
-            }
-        },
-        "optionator": {
-            "version": "0.8.3",
-            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-            "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-            "dev": true,
-            "requires": {
-                "deep-is": "~0.1.3",
-                "fast-levenshtein": "~2.0.6",
-                "levn": "~0.3.0",
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2",
-                "word-wrap": "~1.2.3"
-            }
-        },
-        "options": {
-            "version": "0.0.6",
-            "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
-            "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
-        },
-        "ora": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
-            "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
-            "requires": {
-                "chalk": "^2.4.2",
-                "cli-cursor": "^2.1.0",
-                "cli-spinners": "^2.0.0",
-                "log-symbols": "^2.2.0",
-                "strip-ansi": "^5.2.0",
-                "wcwidth": "^1.0.1"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
-        "os-locale": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-            "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-            "requires": {
-                "execa": "^0.7.0",
-                "lcid": "^1.0.0",
-                "mem": "^1.1.0"
-            }
-        },
-        "os-tmpdir": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-            "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
-        },
-        "p-defer": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-            "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
-        },
-        "p-finally": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-            "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
-        },
-        "p-is-promise": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-            "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
-        },
-        "p-limit": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-            "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-            "requires": {
-                "p-try": "^1.0.0"
-            }
-        },
-        "p-locate": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-            "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-            "requires": {
-                "p-limit": "^1.1.0"
-            }
-        },
-        "p-map": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
-            "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
-            "dev": true
-        },
-        "p-try": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-            "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
-        },
-        "package-json": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
-            "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
-            "dev": true,
-            "requires": {
-                "got": "^6.7.1",
-                "registry-auth-token": "^3.0.1",
-                "registry-url": "^3.0.3",
-                "semver": "^5.1.0"
-            }
-        },
-        "parent-module": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-            "dev": true,
-            "requires": {
-                "callsites": "^3.0.0"
-            },
-            "dependencies": {
-                "callsites": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-                    "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-                    "dev": true
-                }
-            }
-        },
-        "parse-json": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-            "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-            "requires": {
-                "error-ex": "^1.2.0"
-            }
-        },
-        "parse-node-version": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
-            "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
-        },
-        "parseurl": {
-            "version": "1.3.3",
-            "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-            "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-        },
-        "pascalcase": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-            "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
-        },
-        "path-exists": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-            "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
-        },
-        "path-is-absolute": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-            "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-        },
-        "path-is-inside": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-            "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
-            "dev": true
-        },
-        "path-key": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-            "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
-        },
-        "path-parse": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-            "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
-        },
-        "path-to-regexp": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-            "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-            "requires": {
-                "isarray": "0.0.1"
-            },
-            "dependencies": {
-                "isarray": {
-                    "version": "0.0.1",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-                    "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-                }
-            }
-        },
-        "path-type": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
-            "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
-            "requires": {
-                "pify": "^2.0.0"
-            }
-        },
-        "pend": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-            "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
-            "dev": true
-        },
-        "performance-now": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-            "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-            "dev": true
-        },
-        "pify": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-            "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
-        },
-        "pinkie": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-            "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-            "dev": true
-        },
-        "pinkie-promise": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-            "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-            "dev": true,
-            "requires": {
-                "pinkie": "^2.0.0"
-            }
-        },
-        "pirates": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
-            "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
-            "requires": {
-                "node-modules-regexp": "^1.0.0"
-            }
-        },
-        "pkg-dir": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-            "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-            "requires": {
-                "find-up": "^3.0.0"
-            },
-            "dependencies": {
-                "find-up": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-                    "requires": {
-                        "locate-path": "^3.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-                    "requires": {
-                        "p-locate": "^3.0.0",
-                        "path-exists": "^3.0.0"
-                    }
-                },
-                "p-limit": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
-                    "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
-                    "requires": {
-                        "p-try": "^2.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-                    "requires": {
-                        "p-limit": "^2.0.0"
-                    }
-                },
-                "p-try": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-                }
-            }
-        },
-        "pkg-up": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
-            "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
-            "dev": true,
-            "requires": {
-                "find-up": "^2.1.0"
-            }
-        },
-        "please-upgrade-node": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
-            "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
-            "dev": true,
-            "requires": {
-                "semver-compare": "^1.0.0"
-            }
-        },
-        "plist": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
-            "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
-            "requires": {
-                "base64-js": "^1.2.3",
-                "xmlbuilder": "^9.0.7",
-                "xmldom": "0.1.x"
-            }
-        },
-        "plugin-error": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
-            "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
-            "requires": {
-                "ansi-cyan": "^0.1.1",
-                "ansi-red": "^0.1.1",
-                "arr-diff": "^1.0.1",
-                "arr-union": "^2.0.1",
-                "extend-shallow": "^1.1.2"
-            },
-            "dependencies": {
-                "arr-diff": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
-                    "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
-                    "requires": {
-                        "arr-flatten": "^1.0.1",
-                        "array-slice": "^0.2.3"
-                    }
-                },
-                "arr-union": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
-                    "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
-                },
-                "extend-shallow": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
-                    "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
-                    "requires": {
-                        "kind-of": "^1.1.0"
-                    }
-                },
-                "kind-of": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
-                    "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
-                }
-            }
-        },
-        "posix-character-classes": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-            "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
-        },
-        "prelude-ls": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-            "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
-            "dev": true
-        },
-        "prepend-http": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
-            "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
-            "dev": true
-        },
-        "prettier": {
-            "version": "1.18.2",
-            "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
-            "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
-            "dev": true
-        },
-        "pretty-bytes": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
-            "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
-            "dev": true,
-            "requires": {
-                "get-stdin": "^4.0.1",
-                "meow": "^3.1.0"
-            }
-        },
-        "pretty-format": {
-            "version": "24.9.0",
-            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
-            "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
-            "requires": {
-                "@jest/types": "^24.9.0",
-                "ansi-regex": "^4.0.0",
-                "ansi-styles": "^3.2.0",
-                "react-is": "^16.8.4"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                }
-            }
-        },
-        "private": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
-            "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
-        },
-        "process-nextick-args": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-            "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-        },
-        "progress": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-            "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-            "dev": true
-        },
-        "progress-stream": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
-            "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
-            "dev": true,
-            "requires": {
-                "speedometer": "~0.1.2",
-                "through2": "~0.2.3"
-            },
-            "dependencies": {
-                "isarray": {
-                    "version": "0.0.1",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-                    "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-                    "dev": true
-                },
-                "object-keys": {
-                    "version": "0.4.0",
-                    "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
-                    "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
-                    "dev": true
-                },
-                "readable-stream": {
-                    "version": "1.1.14",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-                    "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-                    "dev": true,
-                    "requires": {
-                        "core-util-is": "~1.0.0",
-                        "inherits": "~2.0.1",
-                        "isarray": "0.0.1",
-                        "string_decoder": "~0.10.x"
-                    }
-                },
-                "string_decoder": {
-                    "version": "0.10.31",
-                    "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-                    "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-                    "dev": true
-                },
-                "through2": {
-                    "version": "0.2.3",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
-                    "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
-                    "dev": true,
-                    "requires": {
-                        "readable-stream": "~1.1.9",
-                        "xtend": "~2.1.1"
-                    }
-                },
-                "xtend": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
-                    "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
-                    "dev": true,
-                    "requires": {
-                        "object-keys": "~0.4.0"
-                    }
-                }
-            }
-        },
-        "promise": {
-            "version": "7.3.1",
-            "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-            "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-            "requires": {
-                "asap": "~2.0.3"
-            }
-        },
-        "prop-types": {
-            "version": "15.7.2",
-            "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
-            "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
-            "requires": {
-                "loose-envify": "^1.4.0",
-                "object-assign": "^4.1.1",
-                "react-is": "^16.8.1"
-            }
-        },
-        "proxy-polyfill": {
-            "version": "0.1.6",
-            "resolved": "https://registry.npmjs.org/proxy-polyfill/-/proxy-polyfill-0.1.6.tgz",
-            "integrity": "sha1-70HsbGb1NNsV2zbFRJOmLRhLNk4="
-        },
-        "pseudomap": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-            "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
-        },
-        "psl": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
-            "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
-            "dev": true
-        },
-        "pump": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-            "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-            "requires": {
-                "end-of-stream": "^1.1.0",
-                "once": "^1.3.1"
-            }
-        },
-        "punycode": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-            "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-            "dev": true
-        },
-        "qs": {
-            "version": "6.5.2",
-            "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-            "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-            "dev": true
-        },
-        "query-string": {
-            "version": "6.9.0",
-            "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.9.0.tgz",
-            "integrity": "sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA==",
-            "requires": {
-                "decode-uri-component": "^0.2.0",
-                "split-on-first": "^1.0.0",
-                "strict-uri-encode": "^2.0.0"
-            }
-        },
-        "range-parser": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-            "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
-        },
-        "rc": {
-            "version": "1.2.8",
-            "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-            "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-            "dev": true,
-            "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-            }
-        },
-        "react": {
-            "version": "16.9.0",
-            "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz",
-            "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==",
-            "requires": {
-                "loose-envify": "^1.1.0",
-                "object-assign": "^4.1.1",
-                "prop-types": "^15.6.2"
-            }
-        },
-        "react-async-hook": {
-            "version": "3.6.1",
-            "resolved": "https://registry.npmjs.org/react-async-hook/-/react-async-hook-3.6.1.tgz",
-            "integrity": "sha512-YWBB2feVQF79t5u2raMPHlZ8975Jds+guCvkWVC4kRLDlSCouLsYpQm4DGSqPeHvoHYVVcDfqNayLZAXQmnxnw=="
-        },
-        "react-devtools": {
-            "version": "3.6.3",
-            "resolved": "https://registry.npmjs.org/react-devtools/-/react-devtools-3.6.3.tgz",
-            "integrity": "sha512-7JrGlKHvyamqDfDi7EEoIC8BHygKC1Mc8PmAAYm0aokwYuam/42bO1gnF5y2K7K1MbO+6f7J93s1N4VK0YdmEw==",
-            "dev": true,
-            "requires": {
-                "cross-spawn": "^5.0.1",
-                "electron": "^1.8.7",
-                "ip": "^1.1.4",
-                "minimist": "^1.2.0",
-                "react-devtools-core": "^3.6.0",
-                "update-notifier": "^2.1.0"
-            }
-        },
-        "react-devtools-core": {
-            "version": "3.6.3",
-            "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz",
-            "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==",
-            "requires": {
-                "shell-quote": "^1.6.1",
-                "ws": "^3.3.1"
-            },
-            "dependencies": {
-                "ultron": {
-                    "version": "1.1.1",
-                    "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
-                    "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
-                },
-                "ws": {
-                    "version": "3.3.3",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-                    "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-                    "requires": {
-                        "async-limiter": "~1.0.0",
-                        "safe-buffer": "~5.1.0",
-                        "ultron": "~1.1.0"
-                    }
-                }
-            }
-        },
-        "react-is": {
-            "version": "16.9.0",
-            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz",
-            "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw=="
-        },
-        "react-lifecycles-compat": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
-            "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
-        },
-        "react-native": {
-            "version": "0.61.5",
-            "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.61.5.tgz",
-            "integrity": "sha512-MXqE3NoGO0T3dUKIKkIppijBhRRMpfN6ANbhMXHDuyfA+fSilRWgCwYgR/YNCC7ntECoJYikKaNTUBB0DeQy6Q==",
-            "requires": {
-                "@babel/runtime": "^7.0.0",
-                "@react-native-community/cli": "^3.0.0",
-                "@react-native-community/cli-platform-android": "^3.0.0",
-                "@react-native-community/cli-platform-ios": "^3.0.0",
-                "abort-controller": "^3.0.0",
-                "art": "^0.10.0",
-                "base64-js": "^1.1.2",
-                "connect": "^3.6.5",
-                "create-react-class": "^15.6.3",
-                "escape-string-regexp": "^1.0.5",
-                "event-target-shim": "^5.0.1",
-                "fbjs": "^1.0.0",
-                "fbjs-scripts": "^1.1.0",
-                "hermes-engine": "^0.2.1",
-                "invariant": "^2.2.4",
-                "jsc-android": "^245459.0.0",
-                "metro-babel-register": "^0.56.0",
-                "metro-react-native-babel-transformer": "^0.56.0",
-                "metro-source-map": "^0.56.0",
-                "nullthrows": "^1.1.0",
-                "pretty-format": "^24.7.0",
-                "promise": "^7.1.1",
-                "prop-types": "^15.7.2",
-                "react-devtools-core": "^3.6.3",
-                "react-refresh": "^0.4.0",
-                "regenerator-runtime": "^0.13.2",
-                "scheduler": "0.15.0",
-                "stacktrace-parser": "^0.1.3",
-                "whatwg-fetch": "^3.0.0"
-            },
-            "dependencies": {
-                "@react-native-community/cli": {
-                    "version": "3.0.4",
-                    "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-3.0.4.tgz",
-                    "integrity": "sha512-kt+ENtC+eRUSfWPbbpx3r7fAQDcFwgM03VW/lBdVAUjkNxffPFT2GGdK23CJSBOXTjRSiGuwhvwH4Z28PdrlRA==",
-                    "requires": {
-                        "@hapi/joi": "^15.0.3",
-                        "@react-native-community/cli-debugger-ui": "^3.0.0",
-                        "@react-native-community/cli-tools": "^3.0.0",
-                        "@react-native-community/cli-types": "^3.0.0",
-                        "chalk": "^2.4.2",
-                        "command-exists": "^1.2.8",
-                        "commander": "^2.19.0",
-                        "compression": "^1.7.1",
-                        "connect": "^3.6.5",
-                        "cosmiconfig": "^5.1.0",
-                        "deepmerge": "^3.2.0",
-                        "envinfo": "^7.1.0",
-                        "errorhandler": "^1.5.0",
-                        "execa": "^1.0.0",
-                        "find-up": "^4.1.0",
-                        "fs-extra": "^7.0.1",
-                        "glob": "^7.1.1",
-                        "graceful-fs": "^4.1.3",
-                        "inquirer": "^3.0.6",
-                        "lodash": "^4.17.5",
-                        "metro": "^0.56.0",
-                        "metro-config": "^0.56.0",
-                        "metro-core": "^0.56.0",
-                        "metro-react-native-babel-transformer": "^0.56.0",
-                        "minimist": "^1.2.0",
-                        "mkdirp": "^0.5.1",
-                        "morgan": "^1.9.0",
-                        "node-notifier": "^5.2.1",
-                        "open": "^6.2.0",
-                        "ora": "^3.4.0",
-                        "plist": "^3.0.0",
-                        "semver": "^6.3.0",
-                        "serve-static": "^1.13.1",
-                        "shell-quote": "1.6.1",
-                        "strip-ansi": "^5.2.0",
-                        "sudo-prompt": "^9.0.0",
-                        "wcwidth": "^1.0.1",
-                        "ws": "^1.1.0"
-                    }
-                },
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    },
-                    "dependencies": {
-                        "semver": {
-                            "version": "5.7.1",
-                            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                        }
-                    }
-                },
-                "execa": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-                    "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-                    "requires": {
-                        "cross-spawn": "^6.0.0",
-                        "get-stream": "^4.0.0",
-                        "is-stream": "^1.1.0",
-                        "npm-run-path": "^2.0.0",
-                        "p-finally": "^1.0.0",
-                        "signal-exit": "^3.0.0",
-                        "strip-eof": "^1.0.0"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-limit": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
-                    "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
-                    "requires": {
-                        "p-try": "^2.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "p-try": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-                },
-                "react-refresh": {
-                    "version": "0.4.2",
-                    "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz",
-                    "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ=="
-                },
-                "regenerator-runtime": {
-                    "version": "0.13.3",
-                    "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
-                    "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
-        "react-native-camera": {
-            "version": "3.15.0",
-            "resolved": "https://registry.npmjs.org/react-native-camera/-/react-native-camera-3.15.0.tgz",
-            "integrity": "sha512-GoRq2gHMvidcMCzj0AjaIbrJy5ZRE1XxLUIGN+M/Ev2r2RXGFWBToGoDvy4KZcwF3THWefVAZL1It+fT8pvxgQ==",
-            "requires": {
-                "prop-types": "^15.6.2"
-            }
-        },
-        "react-native-country-picker-modal": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/react-native-country-picker-modal/-/react-native-country-picker-modal-1.10.0.tgz",
-            "integrity": "sha512-NkPBF7GJRp1FONiirN0vOLb9q6HKA/S1oIVNQUNGk9lVv5OLJ5Op3XhY7f+Dg4g7tF/M3kMXZWuvRWmKoHrMMQ==",
-            "requires": {
-                "@callstack/react-theme-provider": "3.0.3",
-                "fuse.js": "3.4.5",
-                "modal-react-native-web": "0.2.0",
-                "node-emoji": "1.10.0",
-                "prop-types": "15.7.2",
-                "react-async-hook": "3.6.1"
-            }
-        },
-        "react-native-exception-handler": {
-            "version": "2.10.8",
-            "resolved": "https://registry.npmjs.org/react-native-exception-handler/-/react-native-exception-handler-2.10.8.tgz",
-            "integrity": "sha512-ZN+jwpADRkCUNdad/50k0mZdMoICGrGdtaxgvRU+pNcWRRBAXJhuo4+jY0eQaoVpx1ghycGE6tBu9ka8gL2NOQ=="
-        },
-        "react-native-fast-image": {
-            "version": "7.0.2",
-            "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-7.0.2.tgz",
-            "integrity": "sha512-MfuzJbC0RjYobR2gFCdqe1I7jvNOCfDkjQ7VGOHXniqjohhULMkcWNBE9Umovi9Dx93lJ6t5utcE2wf/09zvlg=="
-        },
-        "react-native-fs": {
-            "version": "2.14.1",
-            "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.14.1.tgz",
-            "integrity": "sha512-ZcfiwNP+FBgvv2eRk0B62/NI58mbjszjjYvQlP352HLkUqVsK4Ld6X8fdBO1lZAz6SgitUk8WEc9NEciRIt31g==",
-            "requires": {
-                "base-64": "^0.1.0",
-                "utf8": "^2.1.1"
-            }
-        },
-        "react-native-gesture-handler": {
-            "version": "1.5.2",
-            "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.5.2.tgz",
-            "integrity": "sha512-Xp03dq4XYVTD0xmWx4DW4eX+ox1NQLjHmbykspTdS5FCNIVIOekVXRLFCw1698/v8dYUHApNo6K3s3BCD8fqPA==",
-            "requires": {
-                "hammerjs": "^2.0.8",
-                "hoist-non-react-statics": "^2.3.1",
-                "invariant": "^2.2.4",
-                "prop-types": "^15.7.2"
-            }
-        },
-        "react-native-image-pan-zoom": {
-            "version": "2.1.11",
-            "resolved": "https://registry.npmjs.org/react-native-image-pan-zoom/-/react-native-image-pan-zoom-2.1.11.tgz",
-            "integrity": "sha512-ZCisGUFpPchHXsjT7ZI0anlSLPgcTmjRKXqpVnPu3RDWFXfKjuL4zpY57DX4Y8YgGZCpbf9fApN7KjVYody2Mw=="
-        },
-        "react-native-image-zoom-viewer": {
-            "version": "2.2.26",
-            "resolved": "https://registry.npmjs.org/react-native-image-zoom-viewer/-/react-native-image-zoom-viewer-2.2.26.tgz",
-            "integrity": "sha512-Mh4+CJQCDcAumLFXLlDk8nQ5iMxNnupc9HwktsZ3I/v4HULcFPmTLDQ0HGAxjLa5foZRPnKDN06iKGsEb9raoA==",
-            "requires": {
-                "react-native-image-pan-zoom": "^2.1.9"
-            }
-        },
-        "react-native-password-strength-meter": {
-            "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/react-native-password-strength-meter/-/react-native-password-strength-meter-0.0.2.tgz",
-            "integrity": "sha512-jONkwnbznl2xJnJK3/eGa/EL87darI6n+/FtVFXRdyGqypWy6lFJALn/C6m9FyodVArrrpXJ60Ke8nWaGmPALw==",
-            "requires": {
-                "prop-types": "^15.6.2",
-                "react-native-speedometer": "^1.0.0"
-            }
-        },
-        "react-native-phone-input": {
-            "version": "github:lbryio/react-native-phone-input#60fdef484e8bf27328c7fb6a203baab9eb9cd4a1",
-            "from": "github:lbryio/react-native-phone-input",
-            "requires": {
-                "google-libphonenumber": "^2.0.9",
-                "lodash": "^4.17.4",
-                "prop-types": "^15.5.10"
-            }
-        },
-        "react-native-progress-circle": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/react-native-progress-circle/-/react-native-progress-circle-2.1.0.tgz",
-            "integrity": "sha512-VP0s92bgbTMQy4hQzPU4LlGyFj3z5u7i1HYFG8/yzXXfGkX1cxKS4xOlE+OTaObWC99w7Bodi3h8R7En2nQPYw=="
-        },
-        "react-native-reanimated": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.4.0.tgz",
-            "integrity": "sha512-tO7nSNNP+iRLVbkcSS5GXyDBb7tSI02+XuRL3/S39EAr35rnvUy2JfeLUQG+fWSObJjnMVhasUDEUwlENk8IXw=="
-        },
-        "react-native-safe-area-context": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-0.6.2.tgz",
-            "integrity": "sha512-VtBW0JymVCwVt0TGxTv25Co3wtOv3Yb/K5pAUYkjKXNhWFDz5ZwUG/Yho/p0EkWYlFdroJcSqlvVFl2n3AU7SA=="
-        },
-        "react-native-screens": {
-            "version": "1.0.0-alpha.23",
-            "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.23.tgz",
-            "integrity": "sha512-tOxHGQUN83MTmQB4ghoQkibqOdGiX4JQEmeyEv96MKWO/x8T2PJv84ECUos9hD3blPRQwVwSpAid1PPPhrVEaw==",
-            "requires": {
-                "debounce": "^1.2.0"
-            }
-        },
-        "react-native-snackbar": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/react-native-snackbar/-/react-native-snackbar-2.0.4.tgz",
-            "integrity": "sha512-q0NhXYV3uBebN4z9MenR8SIycFGM7QN8NWgwcbJn1zuEiRp49jaJRR/KX7ucS385BvqzBdUu+QqF7SrFN7HiRA=="
-        },
-        "react-native-speedometer": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/react-native-speedometer/-/react-native-speedometer-1.0.3.tgz",
-            "integrity": "sha512-34Ne/ptaWv97jbSOq87b+gKHvGKeZ4AjYXZvovbEnQMnYNzCBWZbQNJqWWzOxyFZXbzeDsfiQ6d4xpq2pc1Tfw==",
-            "requires": {
-                "prop-types": "^15.6.2"
-            }
-        },
-        "react-native-super-grid": {
-            "version": "3.0.9",
-            "resolved": "https://registry.npmjs.org/react-native-super-grid/-/react-native-super-grid-3.0.9.tgz",
-            "integrity": "sha512-d/kht8T6604/x3scunXDldmVnLygXUEDKkZtRzv6AWe69H4W1uYhc/6OhaBnTGD9SmuRXMqB8QRFHDTsCLsa0w==",
-            "requires": {
-                "prop-types": "^15.6.0"
-            }
-        },
-        "react-native-tab-view": {
-            "version": "2.11.0",
-            "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-2.11.0.tgz",
-            "integrity": "sha512-vqetlxGO7A8bnqvXcB50MWpRZAImXFrDGz1WCQKdCqe03Ey3ZzENe7yLuWrtBJYlepGfOLAsmCXv+wW82Yfm1w=="
-        },
-        "react-native-vector-icons": {
-            "version": "6.6.0",
-            "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz",
-            "integrity": "sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw==",
-            "requires": {
-                "lodash": "^4.0.0",
-                "prop-types": "^15.6.2",
-                "yargs": "^13.2.2"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-                },
-                "cliui": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-                    "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-                    "requires": {
-                        "string-width": "^3.1.0",
-                        "strip-ansi": "^5.2.0",
-                        "wrap-ansi": "^5.1.0"
-                    }
-                },
-                "find-up": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-                    "requires": {
-                        "locate-path": "^3.0.0"
-                    }
-                },
-                "get-caller-file": {
-                    "version": "2.0.5",
-                    "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-                    "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-                },
-                "locate-path": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-                    "requires": {
-                        "p-locate": "^3.0.0",
-                        "path-exists": "^3.0.0"
-                    }
-                },
-                "p-limit": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
-                    "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
-                    "requires": {
-                        "p-try": "^2.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-                    "requires": {
-                        "p-limit": "^2.0.0"
-                    }
-                },
-                "p-try": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-                },
-                "require-main-filename": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-                    "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-                    "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-                    "requires": {
-                        "ansi-styles": "^3.2.0",
-                        "string-width": "^3.0.0",
-                        "strip-ansi": "^5.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-                    "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
-                },
-                "yargs": {
-                    "version": "13.3.0",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
-                    "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
-                    "requires": {
-                        "cliui": "^5.0.0",
-                        "find-up": "^3.0.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^3.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^13.1.1"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "13.1.1",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
-                    "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
-            }
-        },
-        "react-native-video": {
-            "version": "github:lbryio/react-native-video#7992ff945872f9bd00a3736d9ff1318f343abf47",
-            "from": "github:lbryio/react-native-video#7992ff945872f9bd00a3736d9ff1318f343abf47",
-            "requires": {
-                "keymirror": "^0.1.1",
-                "prop-types": "^15.5.10",
-                "shaka-player": "^2.4.4"
-            }
-        },
-        "react-native-webview": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-8.0.2.tgz",
-            "integrity": "sha512-Higfj0CCPM9N76S3rQsKHKS8Rw5QA7h7UENrREmMarEN/2saZJ+ko0aIVYOlEJ4P9ZhhRLNH/3mWvzmT4spncw==",
-            "requires": {
-                "escape-string-regexp": "2.0.0",
-                "invariant": "2.2.4"
-            },
-            "dependencies": {
-                "escape-string-regexp": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-                    "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
-                }
-            }
-        },
-        "react-navigation": {
-            "version": "4.0.10",
-            "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-4.0.10.tgz",
-            "integrity": "sha512-7PqvmsdQ7HIyxPUMYbd9Uq//VoMdniEOLAOSvIhb/ExtbAt/1INSjUF+RiMWOMCWLTCNvNPRvTz7xy7qwWureg==",
-            "requires": {
-                "@react-navigation/core": "^3.5.1",
-                "@react-navigation/native": "^3.6.2"
-            }
-        },
-        "react-navigation-drawer": {
-            "version": "2.3.3",
-            "resolved": "https://registry.npmjs.org/react-navigation-drawer/-/react-navigation-drawer-2.3.3.tgz",
-            "integrity": "sha512-d/rA8Slqv7HoMfONKVDBQUrRF7YQH796Gzal/KOhaY4VOwUUqIwfxMRJ3WrsdL2OkDPixtkXJE2Fz6KAj658uA=="
-        },
-        "react-navigation-redux-helpers": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/react-navigation-redux-helpers/-/react-navigation-redux-helpers-3.0.2.tgz",
-            "integrity": "sha512-+z7/eBGBpws/W3ffu7ayEl1YFMAbXO3Sgul3KIDyESI1BbmfSvKD2aRMEfE7AlO+58fJJsqWUMhNw+VACAdHjw==",
-            "requires": {
-                "invariant": "^2.2.2"
-            }
-        },
-        "react-navigation-stack": {
-            "version": "1.10.3",
-            "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-1.10.3.tgz",
-            "integrity": "sha512-1gksFi/g/Lg9sBhgLlD0OiEB5xnatHb4C0eNMA5tli9cTVlhq375XNPIqOiTyftibBmjdApAsZFj5srUCoOu/w==",
-            "requires": {
-                "prop-types": "^15.7.2"
-            }
-        },
-        "react-navigation-tabs": {
-            "version": "2.7.0",
-            "resolved": "https://registry.npmjs.org/react-navigation-tabs/-/react-navigation-tabs-2.7.0.tgz",
-            "integrity": "sha512-fQEHjFrIBi+89loLL521HjGS0Z9tl4Y89SSamRkDl8Of6bPS1Ep++an3ctl2j7c3veqBZBrj3H1qa7qjd3apBQ==",
-            "requires": {
-                "hoist-non-react-statics": "^3.3.0",
-                "react-lifecycles-compat": "^3.0.4",
-                "react-native-safe-area-view": "^0.14.6",
-                "react-native-tab-view": "^2.11.0"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.1",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-                    "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                },
-                "react-native-safe-area-view": {
-                    "version": "0.14.8",
-                    "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz",
-                    "integrity": "sha512-MtRSIcZNstxv87Jet+UsPhEd1tpGe8cVskDXlP657x6rHpSrbrc+y13ZNXrwAgGNNhqQNX7UJT68ZIq//ZRmvw==",
-                    "requires": {
-                        "hoist-non-react-statics": "^2.3.1"
-                    },
-                    "dependencies": {
-                        "hoist-non-react-statics": {
-                            "version": "2.5.5",
-                            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
-                            "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
-                        }
-                    }
-                }
-            }
-        },
-        "react-redux": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.1.tgz",
-            "integrity": "sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg==",
-            "requires": {
-                "@babel/runtime": "^7.1.2",
-                "hoist-non-react-statics": "^3.1.0",
-                "invariant": "^2.2.4",
-                "loose-envify": "^1.1.0",
-                "prop-types": "^15.6.1",
-                "react-is": "^16.6.0",
-                "react-lifecycles-compat": "^3.0.0"
-            },
-            "dependencies": {
-                "hoist-non-react-statics": {
-                    "version": "3.3.0",
-                    "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
-                    "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
-                    "requires": {
-                        "react-is": "^16.7.0"
-                    }
-                }
-            }
-        },
-        "react-refresh": {
-            "version": "0.4.2",
-            "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz",
-            "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ==",
-            "dev": true
-        },
-        "reactotron-core-client": {
-            "version": "2.8.6",
-            "resolved": "https://registry.npmjs.org/reactotron-core-client/-/reactotron-core-client-2.8.6.tgz",
-            "integrity": "sha512-xgg6dusfgQHC98f4iRH/Zak/PNvA46znupEd2U7DSCmmhZbfCpSSveKUsYok0OW0HiSCSvi41tNELj+QU6pRVQ==",
-            "dev": true
-        },
-        "reactotron-react-native": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/reactotron-react-native/-/reactotron-react-native-4.0.2.tgz",
-            "integrity": "sha512-zY5m0TV9y52h31/Vvd/Zs3jneEKYWbJ6vGrBeZ/d6Z2gVvwI3su+7B2qh8s00KHStIF4MTg0MrKc0FYRFWmmoQ==",
-            "dev": true,
-            "requires": {
-                "mitt": "1.1.3",
-                "query-string": "6.8.1",
-                "reactotron-core-client": "2.8.6",
-                "rn-host-detect": "1.1.5"
-            },
-            "dependencies": {
-                "query-string": {
-                    "version": "6.8.1",
-                    "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.8.1.tgz",
-                    "integrity": "sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q==",
-                    "dev": true,
-                    "requires": {
-                        "decode-uri-component": "^0.2.0",
-                        "split-on-first": "^1.0.0",
-                        "strict-uri-encode": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "reactotron-redux": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/reactotron-redux/-/reactotron-redux-3.1.2.tgz",
-            "integrity": "sha512-2ScTmE2+kxjKPc7+vsYuw+igkhd4tjoftn4ouugVudQCO7B5vXVyQwLkNv/feaFfFoPlCQSVeJVg7PdzDFOsEQ==",
-            "dev": true
-        },
-        "read-pkg": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
-            "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
-            "requires": {
-                "load-json-file": "^2.0.0",
-                "normalize-package-data": "^2.3.2",
-                "path-type": "^2.0.0"
-            }
-        },
-        "read-pkg-up": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
-            "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
-            "requires": {
-                "find-up": "^2.0.0",
-                "read-pkg": "^2.0.0"
-            }
-        },
-        "readable-stream": {
-            "version": "2.3.6",
-            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-            "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-            "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-            }
-        },
-        "redent": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
-            "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-            "dev": true,
-            "requires": {
-                "indent-string": "^2.1.0",
-                "strip-indent": "^1.0.1"
-            },
-            "dependencies": {
-                "indent-string": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
-                    "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-                    "dev": true,
-                    "requires": {
-                        "repeating": "^2.0.0"
-                    }
-                },
-                "strip-indent": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
-                    "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-                    "dev": true,
-                    "requires": {
-                        "get-stdin": "^4.0.1"
-                    }
-                }
-            }
-        },
-        "redux": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz",
-            "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==",
-            "requires": {
-                "loose-envify": "^1.4.0",
-                "symbol-observable": "^1.2.0"
-            }
-        },
-        "redux-persist": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
-            "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ=="
-        },
-        "redux-persist-filesystem-storage": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/redux-persist-filesystem-storage/-/redux-persist-filesystem-storage-2.1.0.tgz",
-            "integrity": "sha512-KFj4opJCu8WXUveNV8YKZ1OMGiQm0kiTjWHSSYJ2hmQNrhEa7MOMiIcTImfNDO3vfRl9U+bidKDhQebtCeWrCw==",
-            "requires": {
-                "rn-fetch-blob": "^0.10.16"
-            },
-            "dependencies": {
-                "glob": {
-                    "version": "7.0.6",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-                    "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
-                    "requires": {
-                        "fs.realpath": "^1.0.0",
-                        "inflight": "^1.0.4",
-                        "inherits": "2",
-                        "minimatch": "^3.0.2",
-                        "once": "^1.3.0",
-                        "path-is-absolute": "^1.0.0"
-                    }
-                },
-                "rn-fetch-blob": {
-                    "version": "0.10.16",
-                    "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.10.16.tgz",
-                    "integrity": "sha512-hZV+nF0HK4CWmspXGMw7/G8Q8qugpS/wbKiNLsFpdBZR8XYzjFZNvBWgGyC0F5JWQn3sjmK2w/FJjBlwdQWNQg==",
-                    "requires": {
-                        "base-64": "0.1.0",
-                        "glob": "7.0.6"
-                    }
-                }
-            }
-        },
-        "redux-persist-transform-compress": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/redux-persist-transform-compress/-/redux-persist-transform-compress-4.2.0.tgz",
-            "integrity": "sha1-UInimd9xMIePykX5f/6CiIugJpA=",
-            "requires": {
-                "json-stringify-safe": "^5.0.1",
-                "lz-string": "^1.4.4"
-            }
-        },
-        "redux-persist-transform-filter": {
-            "version": "0.0.18",
-            "resolved": "https://registry.npmjs.org/redux-persist-transform-filter/-/redux-persist-transform-filter-0.0.18.tgz",
-            "integrity": "sha512-x9NxuHNDnK/THLLBqwP1tqw0yIcuxuVYXBssgGcmm5anxL0flbpLQGB5CbFYHWGG68VdQKr1vUneVnttxWJDtA==",
-            "requires": {
-                "lodash.clonedeep": "^4.5.0",
-                "lodash.forin": "^4.4.0",
-                "lodash.get": "^4.4.2",
-                "lodash.isempty": "^4.4.0",
-                "lodash.pickby": "^4.6.0",
-                "lodash.set": "^4.3.2",
-                "lodash.unset": "^4.5.2"
-            }
-        },
-        "redux-thunk": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz",
-            "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw=="
-        },
-        "regenerate": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
-            "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="
-        },
-        "regenerate-unicode-properties": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
-            "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
-            "requires": {
-                "regenerate": "^1.4.0"
-            }
-        },
-        "regenerator-runtime": {
-            "version": "0.11.1",
-            "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-            "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
-            "dev": true
-        },
-        "regenerator-transform": {
-            "version": "0.14.1",
-            "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
-            "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
-            "requires": {
-                "private": "^0.1.6"
-            }
-        },
-        "regex-not": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-            "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-            "requires": {
-                "extend-shallow": "^3.0.2",
-                "safe-regex": "^1.1.0"
-            }
-        },
-        "regexpp": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
-            "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
-            "dev": true
-        },
-        "regexpu-core": {
-            "version": "4.6.0",
-            "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
-            "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
-            "requires": {
-                "regenerate": "^1.4.0",
-                "regenerate-unicode-properties": "^8.1.0",
-                "regjsgen": "^0.5.0",
-                "regjsparser": "^0.6.0",
-                "unicode-match-property-ecmascript": "^1.0.4",
-                "unicode-match-property-value-ecmascript": "^1.1.0"
-            }
-        },
-        "registry-auth-token": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
-            "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
-            "dev": true,
-            "requires": {
-                "rc": "^1.1.6",
-                "safe-buffer": "^5.0.1"
-            }
-        },
-        "registry-url": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
-            "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
-            "dev": true,
-            "requires": {
-                "rc": "^1.0.1"
-            }
-        },
-        "regjsgen": {
-            "version": "0.5.1",
-            "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
-            "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg=="
-        },
-        "regjsparser": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz",
-            "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==",
-            "requires": {
-                "jsesc": "~0.5.0"
-            },
-            "dependencies": {
-                "jsesc": {
-                    "version": "0.5.0",
-                    "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-                    "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
-                }
-            }
-        },
-        "remove-trailing-separator": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-            "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
-        },
-        "repeat-element": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-            "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
-        },
-        "repeat-string": {
-            "version": "1.6.1",
-            "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-            "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
-        },
-        "repeating": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
-            "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-            "dev": true,
-            "requires": {
-                "is-finite": "^1.0.0"
-            }
-        },
-        "request": {
-            "version": "2.88.0",
-            "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
-            "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
-            "dev": true,
-            "requires": {
-                "aws-sign2": "~0.7.0",
-                "aws4": "^1.8.0",
-                "caseless": "~0.12.0",
-                "combined-stream": "~1.0.6",
-                "extend": "~3.0.2",
-                "forever-agent": "~0.6.1",
-                "form-data": "~2.3.2",
-                "har-validator": "~5.1.0",
-                "http-signature": "~1.2.0",
-                "is-typedarray": "~1.0.0",
-                "isstream": "~0.1.2",
-                "json-stringify-safe": "~5.0.1",
-                "mime-types": "~2.1.19",
-                "oauth-sign": "~0.9.0",
-                "performance-now": "^2.1.0",
-                "qs": "~6.5.2",
-                "safe-buffer": "^5.1.2",
-                "tough-cookie": "~2.4.3",
-                "tunnel-agent": "^0.6.0",
-                "uuid": "^3.3.2"
-            }
-        },
-        "require-directory": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-            "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
-        },
-        "require-main-filename": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-            "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
-        },
-        "reselect": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz",
-            "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc="
-        },
-        "resolve": {
-            "version": "1.12.0",
-            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
-            "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
-            "requires": {
-                "path-parse": "^1.0.6"
-            }
-        },
-        "resolve-from": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-            "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
-        },
-        "resolve-url": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-            "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
-        },
-        "restore-cursor": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-            "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-            "requires": {
-                "onetime": "^2.0.0",
-                "signal-exit": "^3.0.2"
-            }
-        },
-        "ret": {
-            "version": "0.1.15",
-            "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-            "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
-        },
-        "rimraf": {
-            "version": "2.7.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-            "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-            "requires": {
-                "glob": "^7.1.3"
-            }
-        },
-        "rn-fetch-blob": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.12.0.tgz",
-            "integrity": "sha512-+QnR7AsJ14zqpVVUbzbtAjq0iI8c9tCg49tIoKO2ezjzRunN7YL6zFSFSWZm6d+mE/l9r+OeDM3jmb2tBb2WbA==",
-            "requires": {
-                "base-64": "0.1.0",
-                "glob": "7.0.6"
-            },
-            "dependencies": {
-                "glob": {
-                    "version": "7.0.6",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-                    "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
-                    "requires": {
-                        "fs.realpath": "^1.0.0",
-                        "inflight": "^1.0.4",
-                        "inherits": "2",
-                        "minimatch": "^3.0.2",
-                        "once": "^1.3.0",
-                        "path-is-absolute": "^1.0.0"
-                    }
-                }
-            }
-        },
-        "rn-host-detect": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/rn-host-detect/-/rn-host-detect-1.1.5.tgz",
-            "integrity": "sha512-ufk2dFT3QeP9HyZ/xTuMtW27KnFy815CYitJMqQm+pgG3ZAtHBsrU8nXizNKkqXGy3bQmhEoloVbrfbvMJMqkg==",
-            "dev": true
-        },
-        "rsvp": {
-            "version": "4.8.5",
-            "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-            "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
-        },
-        "run-async": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
-            "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
-            "requires": {
-                "is-promise": "^2.1.0"
-            }
-        },
-        "rx-lite": {
-            "version": "4.0.8",
-            "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
-            "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
-        },
-        "rx-lite-aggregates": {
-            "version": "4.0.8",
-            "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
-            "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
-            "requires": {
-                "rx-lite": "*"
-            }
-        },
-        "rxjs": {
-            "version": "6.5.2",
-            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
-            "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
-            "dev": true,
-            "requires": {
-                "tslib": "^1.9.0"
-            }
-        },
-        "safe-buffer": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        },
-        "safe-regex": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-            "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-            "requires": {
-                "ret": "~0.1.10"
-            }
-        },
-        "safer-buffer": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-        },
-        "sane": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
-            "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
-            "requires": {
-                "@cnakazawa/watch": "^1.0.3",
-                "anymatch": "^2.0.0",
-                "capture-exit": "^2.0.0",
-                "exec-sh": "^0.3.2",
-                "execa": "^1.0.0",
-                "fb-watchman": "^2.0.0",
-                "micromatch": "^3.1.4",
-                "minimist": "^1.1.1",
-                "walker": "~1.0.5"
-            },
-            "dependencies": {
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "execa": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-                    "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-                    "requires": {
-                        "cross-spawn": "^6.0.0",
-                        "get-stream": "^4.0.0",
-                        "is-stream": "^1.1.0",
-                        "npm-run-path": "^2.0.0",
-                        "p-finally": "^1.0.0",
-                        "signal-exit": "^3.0.0",
-                        "strip-eof": "^1.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "sax": {
-            "version": "1.2.4",
-            "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-            "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
-        },
-        "scheduler": {
-            "version": "0.15.0",
-            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
-            "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
-            "requires": {
-                "loose-envify": "^1.1.0",
-                "object-assign": "^4.1.1"
-            }
-        },
-        "seedrandom": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.3.tgz",
-            "integrity": "sha512-PJLhhxIMjlMJaiIRtqiVW061EZn3cS+waZkbFe7eCa2R3g88HbNdWmw4NTFG1w5unxd0GeNaUUxZJP7gPAzSDQ=="
-        },
-        "semver": {
-            "version": "5.7.1",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        },
-        "semver-compare": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
-            "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
-            "dev": true
-        },
-        "semver-diff": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
-            "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
-            "dev": true,
-            "requires": {
-                "semver": "^5.0.3"
-            }
-        },
-        "send": {
-            "version": "0.17.1",
-            "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-            "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-            "requires": {
-                "debug": "2.6.9",
-                "depd": "~1.1.2",
-                "destroy": "~1.0.4",
-                "encodeurl": "~1.0.2",
-                "escape-html": "~1.0.3",
-                "etag": "~1.8.1",
-                "fresh": "0.5.2",
-                "http-errors": "~1.7.2",
-                "mime": "1.6.0",
-                "ms": "2.1.1",
-                "on-finished": "~2.3.0",
-                "range-parser": "~1.2.1",
-                "statuses": "~1.5.0"
-            },
-            "dependencies": {
-                "ms": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-                    "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
-                }
-            }
-        },
-        "serialize-error": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
-            "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go="
-        },
-        "serve-static": {
-            "version": "1.14.1",
-            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-            "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-            "requires": {
-                "encodeurl": "~1.0.2",
-                "escape-html": "~1.0.3",
-                "parseurl": "~1.3.3",
-                "send": "0.17.1"
-            }
-        },
-        "set-blocking": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-            "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
-        },
-        "set-value": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-            "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-            "requires": {
-                "extend-shallow": "^2.0.1",
-                "is-extendable": "^0.1.1",
-                "is-plain-object": "^2.0.3",
-                "split-string": "^3.0.1"
-            },
-            "dependencies": {
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "setimmediate": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-            "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
-        },
-        "setprototypeof": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-            "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
-        },
-        "shaka-player": {
-            "version": "2.5.7",
-            "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.7.tgz",
-            "integrity": "sha512-Hcanwr1cnGru1E42EXml6XaoRCByutr3DRI9LRoknZKdIlsBG+F4kT5aWrMlwFw6foFNw9hoMpRsB6LWUPlrIw==",
-            "requires": {
-                "eme-encryption-scheme-polyfill": "^1.0.2"
-            }
-        },
-        "shebang-command": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-            "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-            "requires": {
-                "shebang-regex": "^1.0.0"
-            }
-        },
-        "shebang-regex": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-            "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
-        },
-        "shell-quote": {
-            "version": "1.6.1",
-            "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
-            "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
-            "requires": {
-                "array-filter": "~0.0.0",
-                "array-map": "~0.0.0",
-                "array-reduce": "~0.0.0",
-                "jsonify": "~0.0.0"
-            }
-        },
-        "shellwords": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
-            "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="
-        },
-        "showdown": {
-            "version": "1.9.1",
-            "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz",
-            "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==",
-            "requires": {
-                "yargs": "^14.2"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-                },
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-                },
-                "cliui": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-                    "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-                    "requires": {
-                        "string-width": "^3.1.0",
-                        "strip-ansi": "^5.2.0",
-                        "wrap-ansi": "^5.1.0"
-                    }
-                },
-                "find-up": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-                    "requires": {
-                        "locate-path": "^3.0.0"
-                    }
-                },
-                "get-caller-file": {
-                    "version": "2.0.5",
-                    "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-                    "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-                },
-                "locate-path": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-                    "requires": {
-                        "p-locate": "^3.0.0",
-                        "path-exists": "^3.0.0"
-                    }
-                },
-                "p-limit": {
-                    "version": "2.2.2",
-                    "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-                    "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-                    "requires": {
-                        "p-try": "^2.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-                    "requires": {
-                        "p-limit": "^2.0.0"
-                    }
-                },
-                "p-try": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                    "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-                },
-                "require-main-filename": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-                    "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-                    "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-                    "requires": {
-                        "ansi-styles": "^3.2.0",
-                        "string-width": "^3.0.0",
-                        "strip-ansi": "^5.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-                    "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
-                },
-                "yargs": {
-                    "version": "14.2.2",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.2.tgz",
-                    "integrity": "sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA==",
-                    "requires": {
-                        "cliui": "^5.0.0",
-                        "decamelize": "^1.2.0",
-                        "find-up": "^3.0.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^3.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^15.0.0"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "15.0.0",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz",
-                    "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==",
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
-            }
-        },
-        "signal-exit": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-            "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
-        },
-        "simple-plist": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.0.tgz",
-            "integrity": "sha512-2i5Tc0BYAqppM7jVzmNrI+aEUntPolIq4fDgji6WuNNn1D/qYdn2KwoLhZdzQkE04lu9L5tUoeJsjuJAvd+lFg==",
-            "requires": {
-                "bplist-creator": "0.0.8",
-                "bplist-parser": "0.2.0",
-                "plist": "^3.0.1"
-            }
-        },
-        "single-line-log": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
-            "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
-            "dev": true,
-            "requires": {
-                "string-width": "^1.0.1"
-            },
-            "dependencies": {
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "dev": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "slash": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-            "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
-        },
-        "slice-ansi": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
-            "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
-            "requires": {
-                "ansi-styles": "^3.2.0",
-                "astral-regex": "^1.0.0",
-                "is-fullwidth-code-point": "^2.0.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "3.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-                    "requires": {
-                        "color-convert": "^1.9.0"
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-                }
-            }
-        },
-        "slide": {
-            "version": "1.1.6",
-            "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
-            "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
-        },
-        "snapdragon": {
-            "version": "0.8.2",
-            "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-            "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-            "requires": {
-                "base": "^0.11.1",
-                "debug": "^2.2.0",
-                "define-property": "^0.2.5",
-                "extend-shallow": "^2.0.1",
-                "map-cache": "^0.2.2",
-                "source-map": "^0.5.6",
-                "source-map-resolve": "^0.5.0",
-                "use": "^3.1.0"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                    "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                    "requires": {
-                        "is-extendable": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "snapdragon-node": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-            "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-            "requires": {
-                "define-property": "^1.0.0",
-                "isobject": "^3.0.0",
-                "snapdragon-util": "^3.0.1"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                },
-                "kind-of": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-                    "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-                }
-            }
-        },
-        "snapdragon-util": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-            "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-            "requires": {
-                "kind-of": "^3.2.0"
-            }
-        },
-        "source-map": {
-            "version": "0.5.7",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-            "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        },
-        "source-map-resolve": {
-            "version": "0.5.2",
-            "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
-            "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
-            "requires": {
-                "atob": "^2.1.1",
-                "decode-uri-component": "^0.2.0",
-                "resolve-url": "^0.2.1",
-                "source-map-url": "^0.4.0",
-                "urix": "^0.1.0"
-            }
-        },
-        "source-map-support": {
-            "version": "0.5.16",
-            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-            "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
-            "requires": {
-                "buffer-from": "^1.0.0",
-                "source-map": "^0.6.0"
-            },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
-            }
-        },
-        "source-map-url": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-            "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
-        },
-        "spdx-correct": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
-            "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
-            "requires": {
-                "spdx-expression-parse": "^3.0.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
-        "spdx-exceptions": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
-            "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
-        },
-        "spdx-expression-parse": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-            "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
-            "requires": {
-                "spdx-exceptions": "^2.1.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
-        "spdx-license-ids": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
-            "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
-        },
-        "speedometer": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
-            "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
-            "dev": true
-        },
-        "split-on-first": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
-            "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
-        },
-        "split-string": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-            "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-            "requires": {
-                "extend-shallow": "^3.0.0"
-            }
-        },
-        "sprintf-js": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-            "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
-        },
-        "sshpk": {
-            "version": "1.16.1",
-            "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-            "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
-            "dev": true,
-            "requires": {
-                "asn1": "~0.2.3",
-                "assert-plus": "^1.0.0",
-                "bcrypt-pbkdf": "^1.0.0",
-                "dashdash": "^1.12.0",
-                "ecc-jsbn": "~0.1.1",
-                "getpass": "^0.1.1",
-                "jsbn": "~0.1.0",
-                "safer-buffer": "^2.0.2",
-                "tweetnacl": "~0.14.0"
-            }
-        },
-        "stack-utils": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
-            "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA=="
-        },
-        "stacktrace-parser": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.8.tgz",
-            "integrity": "sha512-ig5rHJSdJrAsVqdb3oAI/8C6aQ7dEwJXoy/TIEIOTzdJHssmn12o6RsFoeQSLHoKjq0lX+kqhmnLDpyQTuWiJA==",
-            "requires": {
-                "type-fest": "^0.7.1"
-            }
-        },
-        "staged-git-files": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz",
-            "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==",
-            "dev": true
-        },
-        "static-extend": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-            "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-            "requires": {
-                "define-property": "^0.2.5",
-                "object-copy": "^0.1.0"
-            },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
-            }
-        },
-        "statuses": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-            "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-        },
-        "stream-buffers": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
-            "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
-        },
-        "strict-uri-encode": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
-            "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
-        },
-        "string-argv": {
-            "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz",
-            "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=",
-            "dev": true
-        },
-        "string-width": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-            "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-            "requires": {
-                "is-fullwidth-code-point": "^2.0.0",
-                "strip-ansi": "^4.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "string_decoder": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-            "requires": {
-                "safe-buffer": "~5.1.0"
-            }
-        },
-        "stringify-object": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
-            "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
-            "dev": true,
-            "requires": {
-                "get-own-enumerable-property-symbols": "^3.0.0",
-                "is-obj": "^1.0.1",
-                "is-regexp": "^1.0.0"
-            }
-        },
-        "strip-ansi": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-            "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-            "requires": {
-                "ansi-regex": "^2.0.0"
-            }
-        },
-        "strip-bom": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-            "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
-        },
-        "strip-eof": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-            "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
-        },
-        "strip-indent": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
-            "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
-            "dev": true
-        },
-        "strip-json-comments": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-            "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-            "dev": true
-        },
-        "sudo-prompt": {
-            "version": "9.1.1",
-            "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz",
-            "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA=="
-        },
-        "sumchecker": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz",
-            "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=",
-            "dev": true,
-            "requires": {
-                "debug": "^2.2.0",
-                "es6-promise": "^4.0.5"
-            }
-        },
-        "supports-color": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-            "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-            "dev": true
-        },
-        "symbol-observable": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
-            "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
-        },
-        "table": {
-            "version": "5.4.6",
-            "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-            "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
-            "dev": true,
-            "requires": {
-                "ajv": "^6.10.2",
-                "lodash": "^4.17.14",
-                "slice-ansi": "^2.1.0",
-                "string-width": "^3.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
-        "temp": {
-            "version": "0.8.3",
-            "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
-            "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
-            "requires": {
-                "os-tmpdir": "^1.0.0",
-                "rimraf": "~2.2.6"
-            },
-            "dependencies": {
-                "rimraf": {
-                    "version": "2.2.8",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
-                    "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
-                }
-            }
-        },
-        "term-size": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
-            "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
-            "dev": true,
-            "requires": {
-                "execa": "^0.7.0"
-            }
-        },
-        "text-table": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-            "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
-            "dev": true
-        },
-        "throat": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
-            "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo="
-        },
-        "throttleit": {
-            "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
-            "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
-            "dev": true
-        },
-        "through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
-        },
-        "through2": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-            "requires": {
-                "readable-stream": "~2.3.6",
-                "xtend": "~4.0.1"
-            }
-        },
-        "time-stamp": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
-            "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
-        },
-        "timed-out": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
-            "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
-            "dev": true
-        },
-        "tmp": {
-            "version": "0.0.33",
-            "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-            "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-            "requires": {
-                "os-tmpdir": "~1.0.2"
-            }
-        },
-        "tmpl": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
-            "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
-        },
-        "to-fast-properties": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-            "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
-        },
-        "to-object-path": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-            "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-            "requires": {
-                "kind-of": "^3.0.2"
-            }
-        },
-        "to-regex": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-            "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-            "requires": {
-                "define-property": "^2.0.2",
-                "extend-shallow": "^3.0.2",
-                "regex-not": "^1.0.2",
-                "safe-regex": "^1.1.0"
-            }
-        },
-        "to-regex-range": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-            "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-            "requires": {
-                "is-number": "^3.0.0",
-                "repeat-string": "^1.6.1"
-            },
-            "dependencies": {
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    }
-                }
-            }
-        },
-        "toidentifier": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-            "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
-        },
-        "tough-cookie": {
-            "version": "2.4.3",
-            "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
-            "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
-            "dev": true,
-            "requires": {
-                "psl": "^1.1.24",
-                "punycode": "^1.4.1"
-            },
-            "dependencies": {
-                "punycode": {
-                    "version": "1.4.1",
-                    "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-                    "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-                    "dev": true
-                }
-            }
-        },
-        "trim-newlines": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-            "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-            "dev": true
-        },
-        "trim-right": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
-            "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
-        },
-        "tslib": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-            "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
-            "dev": true
-        },
-        "tsutils": {
-            "version": "3.17.1",
-            "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
-            "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
-            "dev": true,
-            "requires": {
-                "tslib": "^1.8.1"
-            }
-        },
-        "tunnel-agent": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-            "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-            "dev": true,
-            "requires": {
-                "safe-buffer": "^5.0.1"
-            }
-        },
-        "tweetnacl": {
-            "version": "0.14.5",
-            "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-            "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-            "dev": true
-        },
-        "type-check": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-            "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-            "dev": true,
-            "requires": {
-                "prelude-ls": "~1.1.2"
-            }
-        },
-        "type-fest": {
-            "version": "0.7.1",
-            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
-            "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
-        },
-        "typedarray": {
-            "version": "0.0.6",
-            "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-            "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
-        },
-        "ua-parser-js": {
-            "version": "0.7.20",
-            "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz",
-            "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw=="
-        },
-        "uglify-es": {
-            "version": "3.3.9",
-            "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
-            "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
-            "requires": {
-                "commander": "~2.13.0",
-                "source-map": "~0.6.1"
-            },
-            "dependencies": {
-                "commander": {
-                    "version": "2.13.0",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
-                    "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
-            }
-        },
-        "ultron": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
-            "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
-        },
-        "unicode-canonical-property-names-ecmascript": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
-            "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ=="
-        },
-        "unicode-match-property-ecmascript": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
-            "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
-            "requires": {
-                "unicode-canonical-property-names-ecmascript": "^1.0.4",
-                "unicode-property-aliases-ecmascript": "^1.0.4"
-            }
-        },
-        "unicode-match-property-value-ecmascript": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
-            "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g=="
-        },
-        "unicode-property-aliases-ecmascript": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
-            "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw=="
-        },
-        "union-value": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-            "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-            "requires": {
-                "arr-union": "^3.1.0",
-                "get-value": "^2.0.6",
-                "is-extendable": "^0.1.1",
-                "set-value": "^2.0.1"
-            }
-        },
-        "unique-string": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
-            "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
-            "dev": true,
-            "requires": {
-                "crypto-random-string": "^1.0.0"
-            }
-        },
-        "universalify": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
-        },
-        "unpipe": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-            "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-        },
-        "unset-value": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-            "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-            "requires": {
-                "has-value": "^0.3.1",
-                "isobject": "^3.0.0"
-            },
-            "dependencies": {
-                "has-value": {
-                    "version": "0.3.1",
-                    "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-                    "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-                    "requires": {
-                        "get-value": "^2.0.3",
-                        "has-values": "^0.1.4",
-                        "isobject": "^2.0.0"
-                    },
-                    "dependencies": {
-                        "isobject": {
-                            "version": "2.1.0",
-                            "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-                            "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-                            "requires": {
-                                "isarray": "1.0.0"
-                            }
-                        }
-                    }
-                },
-                "has-values": {
-                    "version": "0.1.4",
-                    "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-                    "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
-                },
-                "isobject": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                    "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-                }
-            }
-        },
-        "unzip-response": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
-            "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
-            "dev": true
-        },
-        "update-notifier": {
-            "version": "2.5.0",
-            "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
-            "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
-            "dev": true,
-            "requires": {
-                "boxen": "^1.2.1",
-                "chalk": "^2.0.1",
-                "configstore": "^3.0.0",
-                "import-lazy": "^2.1.0",
-                "is-ci": "^1.0.10",
-                "is-installed-globally": "^0.1.0",
-                "is-npm": "^1.0.0",
-                "latest-version": "^3.0.0",
-                "semver-diff": "^2.0.0",
-                "xdg-basedir": "^3.0.0"
-            }
-        },
-        "uri-js": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-            "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
-            "dev": true,
-            "requires": {
-                "punycode": "^2.1.0"
-            }
-        },
-        "urix": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-            "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
-        },
-        "url-parse-lax": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
-            "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
-            "dev": true,
-            "requires": {
-                "prepend-http": "^1.0.1"
-            }
-        },
-        "use": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-            "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
-        },
-        "utf8": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz",
-            "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY="
-        },
-        "util-deprecate": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-            "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-        },
-        "utils-merge": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-            "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-        },
-        "uuid": {
-            "version": "3.3.3",
-            "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
-            "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
-        },
-        "v8-compile-cache": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
-            "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
-            "dev": true
-        },
-        "validate-npm-package-license": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-            "requires": {
-                "spdx-correct": "^3.0.0",
-                "spdx-expression-parse": "^3.0.0"
-            }
-        },
-        "vary": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-            "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-        },
-        "verror": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0",
-                "core-util-is": "1.0.2",
-                "extsprintf": "^1.2.0"
-            }
-        },
-        "vlq": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
-            "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
-        },
-        "walker": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
-            "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
-            "requires": {
-                "makeerror": "1.0.x"
-            }
-        },
-        "warning": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
-            "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
-            "requires": {
-                "loose-envify": "^1.0.0"
-            }
-        },
-        "wcwidth": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-            "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
-            "requires": {
-                "defaults": "^1.0.3"
-            }
-        },
-        "whatwg-fetch": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
-            "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
-        },
-        "which": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-            "requires": {
-                "isexe": "^2.0.0"
-            }
-        },
-        "which-module": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-            "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
-        },
-        "widest-line": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
-            "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
-            "dev": true,
-            "requires": {
-                "string-width": "^2.1.1"
-            }
-        },
-        "word-wrap": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-            "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-            "dev": true
-        },
-        "wordwrap": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-            "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
-        },
-        "wrap-ansi": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-            "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-            "requires": {
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1"
-            },
-            "dependencies": {
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                }
-            }
-        },
-        "wrappy": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-        },
-        "write": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
-            "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
-            "dev": true,
-            "requires": {
-                "mkdirp": "^0.5.1"
-            }
-        },
-        "write-file-atomic": {
-            "version": "1.3.4",
-            "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
-            "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
-            "requires": {
-                "graceful-fs": "^4.1.11",
-                "imurmurhash": "^0.1.4",
-                "slide": "^1.1.5"
-            }
-        },
-        "ws": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
-            "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
-            "requires": {
-                "options": ">=0.0.5",
-                "ultron": "1.0.x"
-            }
-        },
-        "xcode": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz",
-            "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==",
-            "requires": {
-                "simple-plist": "^1.0.0",
-                "uuid": "^3.3.2"
-            }
-        },
-        "xdg-basedir": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
-            "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
-            "dev": true
-        },
-        "xmlbuilder": {
-            "version": "9.0.7",
-            "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-            "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
-        },
-        "xmldoc": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
-            "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
-            "requires": {
-                "sax": "^1.2.1"
-            }
-        },
-        "xmldom": {
-            "version": "0.1.31",
-            "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
-            "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
-        },
-        "xpipe": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
-            "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98="
-        },
-        "xtend": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-            "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-        },
-        "y18n": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-            "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
-        },
-        "yallist": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-            "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
-        },
-        "yargs": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
-            "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
-            "requires": {
-                "camelcase": "^4.1.0",
-                "cliui": "^3.2.0",
-                "decamelize": "^1.1.1",
-                "get-caller-file": "^1.0.1",
-                "os-locale": "^2.0.0",
-                "read-pkg-up": "^2.0.0",
-                "require-directory": "^2.1.1",
-                "require-main-filename": "^1.0.1",
-                "set-blocking": "^2.0.0",
-                "string-width": "^2.0.0",
-                "which-module": "^2.0.0",
-                "y18n": "^3.2.1",
-                "yargs-parser": "^7.0.0"
-            }
-        },
-        "yargs-parser": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
-            "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
-            "requires": {
-                "camelcase": "^4.1.0"
-            }
-        },
-        "yauzl": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
-            "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
-            "dev": true,
-            "requires": {
-                "fd-slicer": "~1.0.1"
-            }
-        }
-    }
-}
diff --git a/package.json b/package.json
index 3e1423d..6e2bbb9 100644
--- a/package.json
+++ b/package.json
@@ -15,8 +15,8 @@
     "base-64": "^0.1.0",
     "@expo/vector-icons": "^8.1.0",
     "gfycat-style-urls": "^1.0.3",
-    "lbry-redux": "lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391",
-    "lbryinc": "lbryio/lbryinc#28afb9b06c3d142bad8347939c043a21b6cb1ae1",
+    "lbry-redux": "lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017",
+    "lbryinc": "lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955",
     "lodash": ">=4.17.11",
     "merge": ">=1.2.1",
     "moment": "^2.22.1",
diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js
index be85fdc..6dc355b 100644
--- a/src/component/AppNavigator.js
+++ b/src/component/AppNavigator.js
@@ -42,8 +42,10 @@ import {
 } from 'react-native';
 import { selectDrawerStack } from 'redux/selectors/drawer';
 import {
+  Lbry,
   ACTIONS,
   SETTINGS,
+  doBalanceSubscribe,
   doDismissToast,
   doPopulateSharedUserState,
   doPreferenceGet,
@@ -52,6 +54,8 @@ import {
 } from 'lbry-redux';
 import {
   Lbryio,
+  doBlackListedOutpointsSubscribe,
+  doFilteredOutpointsSubscribe,
   doGetSync,
   doUserCheckEmailVerified,
   doUserEmailVerify,
@@ -75,6 +79,7 @@ import discoverStyle from 'styles/discover';
 import searchStyle from 'styles/search';
 import SearchRightHeaderIcon from 'component/searchRightHeaderIcon';
 import Snackbar from 'react-native-snackbar';
+import { doSetSdkReady } from 'redux/actions/settings';
 
 const SYNC_GET_INTERVAL = 1000 * 60 * 5; // every 5 minutes
 
@@ -327,6 +332,7 @@ class AppWithNavigationState extends React.Component {
     this.emailVerifyCheckInterval = setInterval(() => this.checkEmailVerification(), 5000);
     Linking.addEventListener('url', this._handleUrl);
 
+    DeviceEventEmitter.addListener('onSdkReady', this.handleSdkReady);
     DeviceEventEmitter.addListener('onDownloadAborted', this.handleDownloadAborted);
     DeviceEventEmitter.addListener('onDownloadStarted', this.handleDownloadStarted);
     DeviceEventEmitter.addListener('onDownloadUpdated', this.handleDownloadUpdated);
@@ -366,6 +372,46 @@ class AppWithNavigationState extends React.Component {
     );
   };
 
+  handleSdkReady = () => {
+    const { dispatch } = this.props;
+    dispatch(doSetSdkReady());
+    dispatch(doBalanceSubscribe());
+    dispatch(doBlackListedOutpointsSubscribe());
+    dispatch(doFilteredOutpointsSubscribe());
+
+    Lbry.wallet_status().then(secureWalletStatus => {
+      // For now, automatically unlock the wallet if a password is set so that downloads work
+      NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(password => {
+        if ((secureWalletStatus.is_encrypted && !secureWalletStatus.is_locked) || secureWalletStatus.is_locked) {
+          this.setState({
+            message: __('Unlocking account'),
+            details: __('Decrypting wallet'),
+          });
+
+          // unlock the wallet and then finish the splash screen
+          Lbry.wallet_unlock({ password: password || '' }).then(unlocked => {
+            if (unlocked) {
+            } else {
+              // this.handleAccountUnlockFailed();
+            }
+          });
+        }
+      });
+    });
+  };
+
+  handleAccountUnlockFailed() {
+    const { dispatch } = this.props;
+    dispatch(
+      doToast({
+        message: __(
+          'Your wallet failed to unlock, which means you may not be able to play any videos or access your funds. Restart the app to fix this.',
+        ),
+        isError: true,
+      }),
+    );
+  }
+
   handleDownloadStarted = evt => {
     const { dispatch } = this.props;
     const { uri, outpoint, fileInfo } = evt;
@@ -401,6 +447,7 @@ class AppWithNavigationState extends React.Component {
   };
 
   componentWillUnmount() {
+    DeviceEventEmitter.removeListener('onSdkReady', this.handleSdkReady);
     DeviceEventEmitter.removeListener('onDownloadAborted', this.handleDownloadAborted);
     DeviceEventEmitter.removeListener('onDownloadStarted', this.handleDownloadStarted);
     DeviceEventEmitter.removeListener('onDownloadUpdated', this.handleDownloadUpdated);
diff --git a/src/component/channelIconItem/index.js b/src/component/channelIconItem/index.js
index 22d589c..5c3f56c 100644
--- a/src/component/channelIconItem/index.js
+++ b/src/component/channelIconItem/index.js
@@ -19,7 +19,4 @@ const perform = dispatch => ({
   resolveUri: uri => dispatch(doResolveUri(uri)),
 });
 
-export default connect(
-  select,
-  perform
-)(ChannelIconItem);
+export default connect(select, perform)(ChannelIconItem);
diff --git a/src/component/claimList/index.js b/src/component/claimList/index.js
index fb4d5e9..21ee91b 100644
--- a/src/component/claimList/index.js
+++ b/src/component/claimList/index.js
@@ -23,7 +23,4 @@ const perform = dispatch => ({
   claimSearch: options => dispatch(doClaimSearch(options)),
 });
 
-export default connect(
-  select,
-  perform,
-)(ClaimList);
+export default connect(select, perform)(ClaimList);
diff --git a/src/component/claimResultItem/index.js b/src/component/claimResultItem/index.js
index 6a0c712..7eb7346 100644
--- a/src/component/claimResultItem/index.js
+++ b/src/component/claimResultItem/index.js
@@ -36,7 +36,4 @@ const perform = dispatch => ({
   setPlayerVisible: (visible, uri) => dispatch(doSetPlayerVisible(visible, uri)),
 });
 
-export default connect(
-  select,
-  perform,
-)(ClaimResultItem);
+export default connect(select, perform)(ClaimResultItem);
diff --git a/src/component/drawerContent/index.js b/src/component/drawerContent/index.js
index f1c92ef..b2e48fb 100644
--- a/src/component/drawerContent/index.js
+++ b/src/component/drawerContent/index.js
@@ -1,18 +1,17 @@
 import { connect } from 'react-redux';
-import { doFetchChannelListMine, selectMyChannelClaims } from 'lbry-redux';
+import { doToast, selectMyChannelClaims } from 'lbry-redux';
 import { selectUser } from 'lbryinc';
+import { selectSdkReady } from 'redux/selectors/settings';
 import DrawerContent from './view';
 
 const select = state => ({
   channels: selectMyChannelClaims(state),
+  sdkReady: selectSdkReady(state),
   user: selectUser(state),
 });
 
 const perform = dispatch => ({
-  fetchChannelListMine: () => dispatch(doFetchChannelListMine(1, 99999, true)),
+  notify: data => dispatch(doToast(data)),
 });
 
-export default connect(
-  select,
-  perform,
-)(DrawerContent);
+export default connect(select, perform)(DrawerContent);
diff --git a/src/component/drawerContent/view.js b/src/component/drawerContent/view.js
index b8fa70d..5b26c22 100644
--- a/src/component/drawerContent/view.js
+++ b/src/component/drawerContent/view.js
@@ -31,13 +31,17 @@ const groupedMenuItems = {
 };
 
 const groupNames = Object.keys(groupedMenuItems);
+const routesRequiringSdkReady = [
+  Constants.DRAWER_ROUTE_CHANNEL_CREATOR,
+  Constants.DRAWER_ROUTE_MY_LBRY,
+  Constants.DRAWER_ROUTE_PUBLISHES,
+  Constants.DRAWER_ROUTE_PUBLISH,
+  Constants.DRAWER_ROUTE_WALLET,
+  Constants.DRAWER_ROUTE_REWARDS,
+  Constants.DRAWER_ROUTE_INVITES,
+];
 
 class DrawerContent extends React.PureComponent {
-  componentDidMount() {
-    const { fetchChannelListMine } = this.props;
-    fetchChannelListMine();
-  }
-
   getAvatarImageUrl = () => {
     const { channels = [] } = this.props;
     if (channels) {
@@ -62,6 +66,21 @@ class DrawerContent extends React.PureComponent {
     });
   };
 
+  handleItemPress = routeName => {
+    const { navigation, notify, sdkReady } = this.props;
+    if (!sdkReady && routesRequiringSdkReady.includes(routeName)) {
+      if (navigation.closeDrawer) {
+        navigation.closeDrawer();
+      }
+      notify({
+        message: __('The background service is still initializing. Please try again when initialization is complete.'),
+      });
+      return;
+    }
+
+    navigation.navigate({ routeName: routeName });
+  };
+
   render() {
     const { activeTintColor, navigation, user, onItemPress } = this.props;
     const { state } = navigation;
@@ -157,7 +176,7 @@ class DrawerContent extends React.PureComponent {
                           focused ? discoverStyle.menuItemTouchAreaFocused : null,
                         ]}
                         key={item.label}
-                        onPress={() => navigation.navigate({ routeName: item.route })}
+                        onPress={() => this.handleItemPress(item.route)}
                         delayPressIn={0}
                       >
                         <View style={discoverStyle.menuItemIcon}>
diff --git a/src/component/fileItem/index.js b/src/component/fileItem/index.js
index 618388e..fd9a61d 100644
--- a/src/component/fileItem/index.js
+++ b/src/component/fileItem/index.js
@@ -35,7 +35,4 @@ const perform = dispatch => ({
   setPlayerVisible: (visible, uri) => dispatch(doSetPlayerVisible(visible, uri)),
 });
 
-export default connect(
-  select,
-  perform,
-)(FileItem);
+export default connect(select, perform)(FileItem);
diff --git a/src/component/fileListItem/index.js b/src/component/fileListItem/index.js
index e4b6756..78e0e0a 100644
--- a/src/component/fileListItem/index.js
+++ b/src/component/fileListItem/index.js
@@ -36,7 +36,4 @@ const perform = dispatch => ({
   setPlayerVisible: (visible, uri) => dispatch(doSetPlayerVisible(visible, uri)),
 });
 
-export default connect(
-  select,
-  perform,
-)(FileListItem);
+export default connect(select, perform)(FileListItem);
diff --git a/src/component/fileListItem/view.js b/src/component/fileListItem/view.js
index e6e08f7..de665d1 100644
--- a/src/component/fileListItem/view.js
+++ b/src/component/fileListItem/view.js
@@ -125,7 +125,9 @@ class FileListItem extends React.PureComponent {
         const outpointsToHide = !blackListedOutpoints
           ? filteredOutpoints
           : blackListedOutpoints.concat(filteredOutpoints);
-        shouldHide = outpointsToHide.some(outpoint => outpoint.txid === claim.txid && outpoint.nout === claim.nout);
+        shouldHide = outpointsToHide.some(
+          outpoint => outpoint && outpoint.txid === claim.txid && outpoint.nout === claim.nout,
+        );
       }
 
       // TODO: hide channels on tag pages?
@@ -143,10 +145,14 @@ class FileListItem extends React.PureComponent {
       <View>
         {isRepost && (
           <View style={fileListStyle.repostInfo}>
-            <Icon name={"retweet"} size={14} style={fileListStyle.repostIcon} />
+            <Icon name={'retweet'} size={14} style={fileListStyle.repostIcon} />
             <Text style={fileListStyle.repostChannelName}>
-              <Link text={repostChannel}
-                onPress={() => navigateToUri(navigation, normalizeURI(repostChannelUrl), null, false, null, false)} /> reposted</Text>
+              <Link
+                text={repostChannel}
+                onPress={() => navigateToUri(navigation, normalizeURI(repostChannelUrl), null, false, null, false)}
+              />{' '}
+              reposted
+            </Text>
           </View>
         )}
 
diff --git a/src/component/sdkLoadingStatus/index.js b/src/component/sdkLoadingStatus/index.js
new file mode 100644
index 0000000..e820594
--- /dev/null
+++ b/src/component/sdkLoadingStatus/index.js
@@ -0,0 +1,4 @@
+import { connect } from 'react-redux';
+import SdkLoadingStatus from './view';
+
+export default connect()(SdkLoadingStatus);
diff --git a/src/component/sdkLoadingStatus/view.js b/src/component/sdkLoadingStatus/view.js
new file mode 100644
index 0000000..4fa9725
--- /dev/null
+++ b/src/component/sdkLoadingStatus/view.js
@@ -0,0 +1,15 @@
+import { ActivityIndicator, Text, View } from 'react-native';
+import React from 'react';
+import discoverStyle from 'styles/discover';
+import Colors from 'styles/colors';
+
+export default class SdkLoadingStatus extends React.PureComponent {
+  render() {
+    return (
+      <View style={discoverStyle.sdkLoading}>
+        <ActivityIndicator color={Colors.White} size={'small'} />
+        <Text style={discoverStyle.sdkLoadingText}>{__('The LBRY background service is initializing...')}</Text>
+      </View>
+    );
+  }
+}
diff --git a/src/component/suggestedSubscriptionItem/index.js b/src/component/suggestedSubscriptionItem/index.js
index 1807378..4327f63 100644
--- a/src/component/suggestedSubscriptionItem/index.js
+++ b/src/component/suggestedSubscriptionItem/index.js
@@ -23,7 +23,4 @@ const perform = dispatch => ({
   unsubscribe: subscription => doChannelUnsubscribe(subscription),
 });
 
-export default connect(
-  select,
-  perform,
-)(SuggestedSubscriptionItem);
+export default connect(select, perform)(SuggestedSubscriptionItem);
diff --git a/src/component/suggestedSubscriptions/index.js b/src/component/suggestedSubscriptions/index.js
index 4d940cc..a935b2c 100644
--- a/src/component/suggestedSubscriptions/index.js
+++ b/src/component/suggestedSubscriptions/index.js
@@ -16,7 +16,4 @@ const perform = dispatch => ({
   claimSearch: options => dispatch(doClaimSearch(options)),
 });
 
-export default connect(
-  select,
-  perform
-)(SuggestedSubscriptions);
+export default connect(select, perform)(SuggestedSubscriptions);
diff --git a/src/component/suggestedSubscriptionsGrid/index.js b/src/component/suggestedSubscriptionsGrid/index.js
index d418e5c..7122e33 100644
--- a/src/component/suggestedSubscriptionsGrid/index.js
+++ b/src/component/suggestedSubscriptionsGrid/index.js
@@ -24,7 +24,4 @@ const perform = dispatch => ({
   claimSearch: options => dispatch(doClaimSearch(options)),
 });
 
-export default connect(
-  select,
-  perform,
-)(SuggestedSubscriptionsGrid);
+export default connect(select, perform)(SuggestedSubscriptionsGrid);
diff --git a/src/constants.js b/src/constants.js
index fca862e..c207f3d 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -46,6 +46,8 @@ const Constants = {
   SETTING_DEVICE_WALLET_SYNCED: 'deviceWalletSynced',
   SETTING_DHT_ENABLED: 'dhtEnabled',
 
+  ACTION_SDK_READY: 'SDK_READY',
+
   ACTION_DELETE_COMPLETED_BLOBS: 'DELETE_COMPLETED_BLOBS',
   ACTION_FIRST_RUN_PAGE_CHANGED: 'FIRST_RUN_PAGE_CHANGED',
 
diff --git a/src/index.js b/src/index.js
index 5a52168..608c65e 100644
--- a/src/index.js
+++ b/src/index.js
@@ -55,6 +55,10 @@ import settingsReducer from 'redux/reducers/settings';
 import thunk from 'redux-thunk';
 
 window.__ = __;
+if (!NativeModules.UtilityModule.dhtEnabled) {
+  Lbry.alternateConnectionString = 'https://api.lbry.tv/api/v1/proxy';
+  Lbry.methodsUsingAlternateConnectionString = ['claim_search', 'resolve'];
+}
 
 const globalExceptionHandler = (error, isFatal) => {
   if (error && NativeModules.Firebase) {
diff --git a/src/page/channelCreator/index.js b/src/page/channelCreator/index.js
index a5dec30..c9f8f21 100644
--- a/src/page/channelCreator/index.js
+++ b/src/page/channelCreator/index.js
@@ -22,6 +22,7 @@ import {
 import { doUpdateChannelFormState, doClearChannelFormState } from 'redux/actions/form';
 import { selectDrawerStack } from 'redux/selectors/drawer';
 import { selectChannelFormState, selectHasChannelFormState } from 'redux/selectors/form';
+import { selectSdkReady } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import ChannelCreator from './view';
 
@@ -33,6 +34,7 @@ const select = state => ({
   fetchingChannels: selectFetchingMyChannels(state),
   balance: selectBalance(state),
   hasFormState: selectHasChannelFormState(state),
+  sdkReady: selectSdkReady(state),
   updatingChannel: selectUpdatingChannel(state),
   updateChannelError: selectUpdateChannelError(state),
 });
@@ -52,7 +54,4 @@ const perform = dispatch => ({
   setExplicitNavigateBack: flag => dispatch(doSetExplicitNavigateBack(flag)),
 });
 
-export default connect(
-  select,
-  perform,
-)(ChannelCreator);
+export default connect(select, perform)(ChannelCreator);
diff --git a/src/page/channelCreator/view.js b/src/page/channelCreator/view.js
index 3926ff0..7189ba2 100644
--- a/src/page/channelCreator/view.js
+++ b/src/page/channelCreator/view.js
@@ -176,9 +176,7 @@ export default class ChannelCreator extends React.PureComponent {
     NativeModules.Firebase.setCurrentScreen('Channels').then(result => {
       pushDrawerStack(Constants.DRAWER_ROUTE_CHANNEL_CREATOR, navigation.state.params ? navigation.state.params : null);
       setPlayerVisible();
-      if (!fetchingChannels) {
-        fetchChannelListMine();
-      }
+      fetchChannelListMine();
 
       DeviceEventEmitter.addListener('onDocumentPickerFilePicked', this.onFilePicked);
       DeviceEventEmitter.addListener('onDocumentPickerCanceled', this.onPickerCanceled);
@@ -802,7 +800,15 @@ export default class ChannelCreator extends React.PureComponent {
   };
 
   render() {
-    const { abandoningClaimIds, balance, fetchingChannels, updatingChannel, channels = [], navigation } = this.props;
+    const {
+      abandoningClaimIds,
+      balance,
+      fetchingChannels,
+      sdkReady,
+      updatingChannel,
+      channels = [],
+      navigation,
+    } = this.props;
     const {
       autoStyle,
       autoStyles,
@@ -826,6 +832,19 @@ export default class ChannelCreator extends React.PureComponent {
 
     const hasChannels = channels && channels.length > 0;
 
+    if (!sdkReady) {
+      return (
+        <View style={channelCreatorStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     return (
       <View style={channelCreatorStyle.container}>
         <UriBar
diff --git a/src/page/discover/index.js b/src/page/discover/index.js
index 662adad..6af8574 100644
--- a/src/page/discover/index.js
+++ b/src/page/discover/index.js
@@ -13,7 +13,7 @@ import {
 } from 'lbryinc';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { doSetClientSetting, doSetSortByItem, doSetTimeItem } from 'redux/actions/settings';
-import { makeSelectClientSetting, selectSortByItem, selectTimeItem } from 'redux/selectors/settings';
+import { makeSelectClientSetting, selectSdkReady, selectSortByItem, selectTimeItem } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import DiscoverPage from './view';
 
@@ -27,6 +27,7 @@ const select = state => ({
   followedTags: selectFollowedTags(state),
   ratingReminderDisabled: makeSelectClientSetting(Constants.SETTING_RATING_REMINDER_DISABLED)(state),
   ratingReminderLastShown: makeSelectClientSetting(Constants.SETTING_RATING_REMINDER_LAST_SHOWN)(state),
+  sdkReady: selectSdkReady(state),
   sortByItem: selectSortByItem(state),
   timeItem: selectTimeItem(state),
   unreadSubscriptions: selectUnreadSubscriptions(state),
@@ -46,7 +47,4 @@ const perform = dispatch => ({
   setTimeItem: item => dispatch(doSetTimeItem(item)),
 });
 
-export default connect(
-  select,
-  perform,
-)(DiscoverPage);
+export default connect(select, perform)(DiscoverPage);
diff --git a/src/page/discover/view.js b/src/page/discover/view.js
index 56c5560..a707619 100644
--- a/src/page/discover/view.js
+++ b/src/page/discover/view.js
@@ -23,6 +23,7 @@ import Icon from 'react-native-vector-icons/FontAwesome5';
 import Link from 'component/link';
 import ModalTagSelector from 'component/modalTagSelector';
 import ModalPicker from 'component/modalPicker';
+import SdkLoadingStatus from 'component/sdkLoadingStatus';
 import UriBar from 'component/uriBar';
 import _ from 'lodash';
 
@@ -268,8 +269,8 @@ class DiscoverPage extends React.PureComponent {
   );
 
   render() {
-    const { currentRoute, navigation, sortByItem, timeItem } = this.props;
-    const { orderBy, showModalTagSelector, showSortPicker, showTimePicker } = this.state;
+    const { currentRoute, navigation, sdkReady, sortByItem, timeItem } = this.props;
+    const { showModalTagSelector, showSortPicker, showTimePicker } = this.state;
 
     return (
       <View style={discoverStyle.container}>
@@ -289,7 +290,7 @@ class DiscoverPage extends React.PureComponent {
             keyExtractor={(item, index) => item}
           />
         )}
-        {!showModalTagSelector && !showSortPicker && !showTimePicker && (
+        {sdkReady && !showModalTagSelector && !showSortPicker && !showTimePicker && (
           <FloatingWalletBalance navigation={navigation} />
         )}
         {showModalTagSelector && (
@@ -316,6 +317,8 @@ class DiscoverPage extends React.PureComponent {
             items={Constants.CLAIM_SEARCH_TIME_ITEMS}
           />
         )}
+
+        {!sdkReady && <SdkLoadingStatus />}
       </View>
     );
   }
diff --git a/src/page/downloads/index.js b/src/page/downloads/index.js
index 1f30842..ddb9290 100644
--- a/src/page/downloads/index.js
+++ b/src/page/downloads/index.js
@@ -11,15 +11,17 @@ import {
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { doDeleteFile } from 'redux/actions/file';
 import { selectCurrentRoute } from 'redux/selectors/drawer';
+import { selectSdkReady } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import DownloadsPage from './view';
 
 const select = state => ({
   claims: selectMyClaimsWithoutChannels(state),
   currentRoute: selectCurrentRoute(state),
-  fileInfos: selectFileInfosDownloaded(state),
   downloadedUris: selectDownloadedUris(state),
+  fileInfos: selectFileInfosDownloaded(state),
   fetching: selectIsFetchingFileList(state) || selectIsFetchingClaimListMine(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -32,7 +34,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform
-)(DownloadsPage);
+export default connect(select, perform)(DownloadsPage);
diff --git a/src/page/downloads/view.js b/src/page/downloads/view.js
index be50262..758eaef 100644
--- a/src/page/downloads/view.js
+++ b/src/page/downloads/view.js
@@ -144,11 +144,24 @@ class DownloadsPage extends React.PureComponent {
   };
 
   render() {
-    const { fetching, claims, downloadedUris, fileInfos, navigation } = this.props;
+    const { downloadedUris, fetching, navigation, sdkReady } = this.props;
     const { selectionMode, selectedUris } = this.state;
     const filteredUris = this.getFilteredUris();
     const hasDownloads = filteredUris && filteredUris.length > 0;
 
+    if (!sdkReady) {
+      return (
+        <View style={downloadsStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     return (
       <View style={downloadsStyle.container}>
         <UriBar
diff --git a/src/page/file/index.js b/src/page/file/index.js
index cbf680d..cc99564 100644
--- a/src/page/file/index.js
+++ b/src/page/file/index.js
@@ -41,6 +41,7 @@ import { doDeleteFile, doStopDownloadingFile } from 'redux/actions/file';
 import { doPushDrawerStack, doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { doToggleFullscreenMode } from 'redux/actions/settings';
 import { selectDrawerStack, makeSelectPlayerVisible } from 'redux/selectors/drawer';
+import { selectSdkReady } from 'redux/selectors/settings';
 import FilePage from './view';
 
 const select = (state, props) => {
@@ -66,6 +67,7 @@ const select = (state, props) => {
     failedPurchaseUris: selectFailedPurchaseUris(state),
     myClaimUris: selectMyClaimUrisWithoutChannels(state),
     purchaseUriErrorMessage: selectPurchaseUriErrorMessage(state),
+    sdkReady: selectSdkReady(state),
     streamingUrl: makeSelectStreamingUrlForUri(contentUri)(state),
     thumbnail: makeSelectThumbnailForUri(contentUri)(state),
     title: makeSelectTitleForUri(contentUri)(state),
@@ -99,7 +101,4 @@ const perform = dispatch => ({
   toggleFullscreenMode: mode => dispatch(doToggleFullscreenMode(mode)),
 });
 
-export default connect(
-  select,
-  perform,
-)(FilePage);
+export default connect(select, perform)(FilePage);
diff --git a/src/page/file/view.js b/src/page/file/view.js
index 133fe49..f8b1ce1 100644
--- a/src/page/file/view.js
+++ b/src/page/file/view.js
@@ -43,7 +43,6 @@ import RelatedContent from 'component/relatedContent';
 import SubscribeButton from 'component/subscribeButton';
 import SubscribeNotificationButton from 'component/subscribeNotificationButton';
 import UriBar from 'component/uriBar';
-import Video from 'react-native-video';
 import FileRewardsDriver from 'component/fileRewardsDriver';
 import filePageStyle from 'styles/filePage';
 import uriBarStyle from 'styles/uriBar';
@@ -73,7 +72,7 @@ class FilePage extends React.PureComponent {
   constructor(props) {
     super(props);
     this.state = {
-      attemptAutoGet: false,
+      autoGetAttempted: false,
       autoOpened: false,
       autoDownloadStarted: false,
       autoPlayMedia: false,
@@ -297,7 +296,17 @@ class FilePage extends React.PureComponent {
   }
 
   componentDidUpdate(prevProps, prevState) {
-    const { claim, contentType, costInfo, fileInfo, isResolvingUri, resolveUri, navigation, title } = this.props;
+    const {
+      claim,
+      contentType,
+      costInfo,
+      fileInfo,
+      isResolvingUri,
+      resolveUri,
+      sdkReady,
+      navigation,
+      title,
+    } = this.props;
     const { uri } = this.state;
     if (!isResolvingUri && claim === undefined && uri) {
       resolveUri(uri);
@@ -323,10 +332,12 @@ class FilePage extends React.PureComponent {
     const isPlayable = mediaType === 'video' || mediaType === 'audio';
     const isViewable = mediaType === 'image' || mediaType === 'text';
     if (claim && costInfo && costInfo.cost === 0 && !this.state.autoGetAttempted && isViewable) {
-      this.setState({ autoGetAttempted: true }, () => this.checkStoragePermissionForDownload());
+      this.setState({ autoGetAttempted: true }, () => {
+        this.checkStoragePermissionForDownload();
+      });
     }
 
-    if (((costInfo && costInfo.cost > 0) || !isPlayable) && (!fileInfo && !isViewable) && !this.state.showRecommended) {
+    if (((costInfo && costInfo.cost > 0) || !isPlayable) && !fileInfo && !isViewable && !this.state.showRecommended) {
       this.setState({ showRecommended: true });
     }
 
@@ -706,7 +717,7 @@ class FilePage extends React.PureComponent {
   };
 
   confirmPurchaseUri = (uri, costInfo, download) => {
-    const { notify, purchaseUri, title } = this.props;
+    const { notify, purchaseUri, sdkReady, title } = this.props;
     if (!costInfo) {
       notify({ message: __('This content cannot be viewed at this time. Please try again in a bit.'), isError: true });
       this.setState({ downloadPressed: false });
@@ -715,6 +726,11 @@ class FilePage extends React.PureComponent {
     }
 
     const { cost } = costInfo;
+    if (!NativeModules.UtilityModule.dhtEnabled && !sdkReady && parseFloat(cost) === 0) {
+      this.attemptLbryTvPlayback();
+      return;
+    }
+
     if (costInfo.cost > 0) {
       Alert.alert(
         __('Confirm Purchase'),
@@ -742,22 +758,40 @@ class FilePage extends React.PureComponent {
     }
   };
 
+  getStreamUrlForClaim = claim => {
+    const { name, claim_id: claimId } = claim;
+    return `https://player.lbry.tv/content/claims/${name}/${claimId}/stream`;
+  };
+
+  attemptLbryTvPlayback = () => {
+    const { claim } = this.props;
+    if (claim) {
+      this.setState({ streamingMode: true, currentStreamUrl: this.getStreamUrlForClaim(claim) });
+    }
+  };
+
   onFileDownloadButtonPressed = () => {
     this.startTime = Date.now();
-    const { claim, costInfo, contentType, setPlayerVisible } = this.props;
+    const { claim, costInfo, contentType, notify, sdkReady, setPlayerVisible } = this.props;
     const mediaType = Lbry.getMediaType(contentType);
     const isPlayable = mediaType === 'video' || mediaType === 'audio';
     const isViewable = mediaType === 'image' || mediaType === 'text';
-
     const purchaseUrl = this.getPurchaseUrl();
-    NativeModules.Firebase.track('purchase_uri', { uri: purchaseUrl });
 
     if (!isPlayable) {
+      if (!sdkReady) {
+        notify({
+          message: __('The LBRY background service is still initializing. Please wait a few moments and try again.'),
+        });
+        return;
+      }
       this.onDownloadPressed();
     } else {
       this.confirmPurchaseUri(purchaseUrl, costInfo, !isPlayable);
     }
 
+    NativeModules.Firebase.track('purchase_uri', { uri: purchaseUrl });
+
     if (isPlayable) {
       this.setState({ downloadPressed: true, autoPlayMedia: true, stopDownloadConfirmed: false });
     }
@@ -1177,7 +1211,7 @@ class FilePage extends React.PureComponent {
               style={filePageStyle.mediaContainer}
               onPress={this.onFileDownloadButtonPressed}
             >
-              {(canOpen || (!fileInfo || (isPlayable && !canLoadMedia)) || (!canOpen && fileInfo)) && (
+              {(canOpen || !fileInfo || (isPlayable && !canLoadMedia) || (!canOpen && fileInfo)) && (
                 <FileItemMedia
                   duration={duration}
                   style={filePageStyle.thumbnail}
diff --git a/src/page/invites/index.js b/src/page/invites/index.js
index 7ce02e5..ad1c35c 100644
--- a/src/page/invites/index.js
+++ b/src/page/invites/index.js
@@ -12,23 +12,22 @@ import {
   doFetchInviteStatus,
   doUserInviteNew,
 } from 'lbryinc';
-import { doPushDrawerStack, doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
-import { doUpdateChannelFormState, doClearChannelFormState } from 'redux/actions/form';
-import { selectDrawerStack } from 'redux/selectors/drawer';
-import { selectChannelFormState, selectHasChannelFormState } from 'redux/selectors/form';
+import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
+import { selectSdkReady } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import InvitesPage from './view';
 
 const select = state => ({
   channels: selectMyChannelClaims(state),
+  errorMessage: selectUserInviteNewErrorMessage(state),
   fetchingChannels: selectFetchingMyChannels(state),
   fetchingInvitees: selectUserInviteStatusIsPending(state),
-  errorMessage: selectUserInviteNewErrorMessage(state),
-  invitesRemaining: selectUserInvitesRemaining(state),
-  referralCode: selectUserInviteReferralCode(state),
-  isPending: selectUserInviteNewIsPending(state),
   invitees: selectUserInvitees(state),
+  invitesRemaining: selectUserInvitesRemaining(state),
+  isPending: selectUserInviteNewIsPending(state),
+  referralCode: selectUserInviteReferralCode(state),
   referralReward: selectReferralReward(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -40,7 +39,4 @@ const perform = dispatch => ({
   notify: data => dispatch(doToast(data)),
 });
 
-export default connect(
-  select,
-  perform,
-)(InvitesPage);
+export default connect(select, perform)(InvitesPage);
diff --git a/src/page/invites/view.js b/src/page/invites/view.js
index 661f532..f5e3776 100644
--- a/src/page/invites/view.js
+++ b/src/page/invites/view.js
@@ -11,14 +11,10 @@ import {
   View,
 } from 'react-native';
 import Colors from 'styles/colors';
-import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import Icon from 'react-native-vector-icons/FontAwesome5';
-import Link from 'component/link';
 import Button from 'component/button';
 import ChannelSelector from 'component/channelSelector';
-import PageHeader from 'component/pageHeader';
-import RewardCard from 'component/rewardCard';
-import RewardEnrolment from 'component/rewardEnrolment';
+import EmptyStateView from 'component/emptyStateView';
 import UriBar from 'component/uriBar';
 import invitesStyle from 'styles/invites';
 import { fetchReferralCode, logPublish } from 'utils/helper';
@@ -134,10 +130,23 @@ class InvitesPage extends React.PureComponent {
   };
 
   render() {
-    const { fetchingInvitees, user, navigation, notify, isPending, invitees } = this.props;
-    const { email, inviteLink } = this.state;
+    const { fetchingInvitees, invitees, isPending, navigation, sdkReady } = this.props;
+    const { email } = this.state;
     const hasInvitees = invitees && invitees.length > 0;
 
+    if (!sdkReady) {
+      return (
+        <View style={invitesStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     return (
       <View style={invitesStyle.container}>
         <UriBar navigation={navigation} />
diff --git a/src/page/publish/index.js b/src/page/publish/index.js
index 41094a2..7d9065e 100644
--- a/src/page/publish/index.js
+++ b/src/page/publish/index.js
@@ -13,6 +13,7 @@ import { selectDrawerStack } from 'redux/selectors/drawer';
 import { doUpdatePublishFormState, doClearPublishFormState, doPendingPublishSuccess } from 'redux/actions/form';
 import { doPushDrawerStack, doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { selectPublishFormState, selectHasPublishFormState } from 'redux/selectors/form';
+import { selectSdkReady } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import PublishPage from './view';
 
@@ -23,6 +24,7 @@ const select = state => ({
   myClaims: selectMyClaims(state),
   publishFormState: selectPublishFormState(state),
   publishFormValues: selectPublishFormValues(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -39,7 +41,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform,
-)(PublishPage);
+export default connect(select, perform)(PublishPage);
diff --git a/src/page/publish/view.js b/src/page/publish/view.js
index db5147a..70b53ca 100644
--- a/src/page/publish/view.js
+++ b/src/page/publish/view.js
@@ -37,6 +37,7 @@ import Button from 'component/button';
 import ChannelSelector from 'component/channelSelector';
 import Colors from 'styles/colors';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
+import EmptyStateView from 'component/emptyStateView';
 import FastImage from 'react-native-fast-image';
 import FloatingWalletBalance from 'component/floatingWalletBalance';
 import Icon from 'react-native-vector-icons/FontAwesome5';
@@ -974,7 +975,7 @@ class PublishPage extends React.PureComponent {
   };
 
   render() {
-    const { balance, navigation, notify, publishFormValues } = this.props;
+    const { balance, navigation, notify, sdkReady } = this.props;
     const {
       allThumbnailsChecked,
       canUseCamera,
@@ -987,6 +988,19 @@ class PublishPage extends React.PureComponent {
       videos,
     } = this.state;
 
+    if (!sdkReady) {
+      return (
+        <View style={publishStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     let content;
     if (Constants.PHASE_SELECTOR === currentPhase) {
       content = (
diff --git a/src/page/publishes/index.js b/src/page/publishes/index.js
index efb7557..0b365be 100644
--- a/src/page/publishes/index.js
+++ b/src/page/publishes/index.js
@@ -9,6 +9,7 @@ import {
   selectIsFetchingClaimListMine,
 } from 'lbry-redux';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
+import { selectSdkReady } from 'redux/selectors/settings';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import PublishesPage from './view';
 
@@ -16,6 +17,7 @@ const select = state => ({
   uris: selectMyClaimUrisWithoutChannels(state),
   fetching: selectIsFetchingClaimListMine(state),
   pendingClaims: selectPendingClaims(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -27,7 +29,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform
-)(PublishesPage);
+export default connect(select, perform)(PublishesPage);
diff --git a/src/page/publishes/view.js b/src/page/publishes/view.js
index a02213c..321c026 100644
--- a/src/page/publishes/view.js
+++ b/src/page/publishes/view.js
@@ -114,14 +114,27 @@ class PublishesPage extends React.PureComponent {
           },
         },
       ],
-      { cancelable: true }
+      { cancelable: true },
     );
   };
 
   render() {
-    const { fetching, navigation, uris } = this.props;
+    const { fetching, navigation, sdkReady, uris } = this.props;
     const { selectionMode, selectedUris } = this.state;
 
+    if (!sdkReady) {
+      return (
+        <View style={publishStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     return (
       <View style={publishStyle.container}>
         <UriBar
diff --git a/src/page/rewards/index.js b/src/page/rewards/index.js
index 410a976..2232f3f 100644
--- a/src/page/rewards/index.js
+++ b/src/page/rewards/index.js
@@ -12,7 +12,8 @@ import {
 import { doToast } from 'lbry-redux';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { selectCurrentRoute } from 'redux/selectors/drawer';
-import Constants from 'constants';
+import { selectSdkReady } from 'redux/selectors/settings';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import RewardsPage from './view';
 
 const select = state => ({
@@ -22,6 +23,7 @@ const select = state => ({
   emailVerifyPending: selectEmailVerifyIsPending(state),
   fetching: selectFetchingRewards(state),
   rewards: selectUnclaimedRewards(state),
+  sdkReady: selectSdkReady(state),
   user: selectUser(state),
 });
 
@@ -33,7 +35,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform
-)(RewardsPage);
+export default connect(select, perform)(RewardsPage);
diff --git a/src/page/rewards/view.js b/src/page/rewards/view.js
index c3aee39..7bad9ac 100644
--- a/src/page/rewards/view.js
+++ b/src/page/rewards/view.js
@@ -5,7 +5,7 @@ import Colors from 'styles/colors';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import Link from 'component/link';
 import CustomRewardCard from 'component/customRewardCard';
-import PageHeader from 'component/pageHeader';
+import EmptyStateView from 'component/emptyStateView';
 import RewardCard from 'component/rewardCard';
 import RewardEnrolment from 'component/rewardEnrolment';
 import UriBar from 'component/uriBar';
@@ -192,9 +192,22 @@ class RewardsPage extends React.PureComponent {
   };
 
   render() {
-    const { user, navigation } = this.props;
+    const { navigation, sdkReady } = this.props;
     const { currentFilter } = this.state;
 
+    if (!sdkReady) {
+      return (
+        <View style={rewardStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
+
     return (
       <View style={rewardStyle.container}>
         <UriBar navigation={navigation} />
diff --git a/src/page/settings/view.js b/src/page/settings/view.js
index 8a3a29c..04c23c6 100644
--- a/src/page/settings/view.js
+++ b/src/page/settings/view.js
@@ -1,6 +1,16 @@
 import React from 'react';
 import { SETTINGS } from 'lbry-redux';
-import { ActivityIndicator, Picker, Platform, Text, View, ScrollView, Switch, NativeModules } from 'react-native';
+import {
+  ActivityIndicator,
+  Picker,
+  Platform,
+  Text,
+  TextInput,
+  View,
+  ScrollView,
+  Switch,
+  NativeModules,
+} from 'react-native';
 import { navigateBack } from 'utils/helper';
 import AsyncStorage from '@react-native-community/async-storage';
 import Colors from 'styles/colors';
@@ -328,7 +338,9 @@ class SettingsPage extends React.PureComponent {
             <View style={settingsStyle.switchText}>
               <Text style={settingsStyle.label}>{__('Participate in the data network')}</Text>
               <Text style={settingsStyle.description}>
-                {__('Enable DHT (this will take effect upon app and background service restart)')}
+                {__(
+                  'Enable peer-to-peer functionality (this will take effect upon app and background service restart)',
+                )}
               </Text>
             </View>
             <View style={settingsStyle.switchContainer}>
diff --git a/src/page/splash/index.js b/src/page/splash/index.js
index 346a6c3..e9a3a3b 100644
--- a/src/page/splash/index.js
+++ b/src/page/splash/index.js
@@ -1,11 +1,8 @@
 import { connect } from 'react-redux';
-import { SETTINGS, doBalanceSubscribe, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux';
+import { SETTINGS, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux';
 import {
   doAuthenticate,
-  doInstallNew,
   doInstallNewWithParams,
-  doBlackListedOutpointsSubscribe,
-  doFilteredOutpointsSubscribe,
   doFetchMySubscriptions,
   doFetchRewardedContent,
   doGetSync,
@@ -32,9 +29,6 @@ const perform = dispatch => ({
     dispatch(doAuthenticate(appVersion, os, firebaseToken, true, null, callInstall)),
   installNewWithParams: (appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken) =>
     dispatch(doInstallNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken)),
-  balanceSubscribe: () => dispatch(doBalanceSubscribe()),
-  blacklistedOutpointsSubscribe: () => dispatch(doBlackListedOutpointsSubscribe()),
-  filteredOutpointsSubscribe: () => dispatch(doFilteredOutpointsSubscribe()),
   fetchRewardedContent: () => dispatch(doFetchRewardedContent()),
   fetchSubscriptions: callback => dispatch(doFetchMySubscriptions(callback)),
   getSync: (password, callback) => dispatch(doGetSync(password, callback)),
diff --git a/src/page/splash/view.js b/src/page/splash/view.js
index de62aab..11b64aa 100644
--- a/src/page/splash/view.js
+++ b/src/page/splash/view.js
@@ -23,6 +23,7 @@ class SplashScreen extends React.PureComponent {
   };
 
   state = {
+    authWithoutSdk: false,
     accountUnlockFailed: false,
     appVersion: null,
     daemonReady: false,
@@ -53,7 +54,7 @@ class SplashScreen extends React.PureComponent {
                 liteModeParams: {
                   installationId: installIdContent,
                   nodeId: null,
-                  lbrynetVersion: '0.62.0',
+                  lbrynetVersion: '0.64.0',
                   platform,
                 },
               },
@@ -66,26 +67,26 @@ class SplashScreen extends React.PureComponent {
     });
   };
 
-  updateStatus() {
+  authenticateWithoutSdk() {
     const { authenticate } = this.props;
+    NativeModules.VersionInfo.getAppVersion().then(appVersion => {
+      this.setState({ appVersion, shouldAuthenticate: true, authWithoutSdk: true });
+      NativeModules.Firebase.getMessagingToken()
+        .then(firebaseToken => {
+          this.setState({ firebaseToken }, () => authenticate(appVersion, Platform.OS, firebaseToken, false));
+        })
+        .catch(() => {
+          authenticate(appVersion, Platform.OS, null, false);
+        });
+    });
+  }
+
+  updateStatus() {
     const { liteMode } = this.state;
 
-    if (liteMode) {
-      // authenticate immediately
-      NativeModules.VersionInfo.getAppVersion().then(appVersion => {
-        this.setState({ appVersion, shouldAuthenticate: true });
-        NativeModules.Firebase.getMessagingToken()
-          .then(firebaseToken => {
-            this.setState({ firebaseToken }, () => authenticate(appVersion, Platform.OS, firebaseToken, false));
-          })
-          .catch(() => {
-            authenticate(appVersion, Platform.OS, null, false);
-          });
-      });
-    } else {
-      Lbry.status().then(status => {
-        this._updateStatusCallback(status);
-      });
+    // authenticate immediately
+    if (!NativeModules.UtilityModule.dhtEnabled) {
+      this.authenticateWithoutSdk();
     }
   }
 
@@ -121,40 +122,50 @@ class SplashScreen extends React.PureComponent {
 
   componentWillReceiveProps(nextProps) {
     const { getSync, installNewWithParams } = this.props;
-    const { daemonReady, shouldAuthenticate, liteMode, liteModeParams, appVersion, firebaseToken } = this.state;
+    const {
+      daemonReady,
+      authWithoutSdk,
+      shouldAuthenticate,
+      liteMode,
+      liteModeParams,
+      appVersion,
+      firebaseToken,
+    } = this.state;
     const { user } = nextProps;
 
     if (liteMode && user && user.id) {
       this.navigateToLiteMode();
-    } else if (daemonReady && shouldAuthenticate && user && user.id) {
-      this.setState({ shouldAuthenticate: false }, () => {
-        // call install new after successful authentication
-        if (liteMode) {
-          const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams;
-          installNewWithParams(
-            appVersion,
-            installationId,
-            nodeId,
-            lbrynetVersion,
-            Platform.OS,
-            platform,
-            firebaseToken,
-          );
-        }
+    } else if (shouldAuthenticate && user && user.id) {
+      if (daemonReady || authWithoutSdk) {
+        this.setState({ shouldAuthenticate: false }, () => {
+          // call install new after successful authentication
+          if (authWithoutSdk) {
+            const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams;
+            installNewWithParams(
+              appVersion,
+              installationId,
+              nodeId,
+              lbrynetVersion,
+              Platform.OS,
+              platform,
+              firebaseToken,
+            );
+          }
 
-        // user is authenticated, navigate to the main view
-        if (user.has_verified_email) {
-          NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(walletPassword => {
-            getSync(walletPassword, () => {
-              this.getUserSettings();
+          // user is authenticated, navigate to the main view
+          if (user.has_verified_email) {
+            NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(walletPassword => {
+              getSync(walletPassword, () => {
+                this.getUserSettings();
+              });
             });
-          });
-          this.navigateToMain();
-          return;
-        }
+            this.navigateToMain();
+            return;
+          }
 
-        this.navigateToMain();
-      });
+          this.navigateToMain();
+        });
+      }
     }
   }
 
@@ -194,22 +205,9 @@ class SplashScreen extends React.PureComponent {
   };
 
   finishSplashScreen = () => {
-    const {
-      authenticate,
-      balanceSubscribe,
-      blacklistedOutpointsSubscribe,
-      filteredOutpointsSubscribe,
-      getSync,
-      updateBlockHeight,
-      user,
-    } = this.props;
+    const { authenticate, getSync, user } = this.props;
 
-    // Lbry.resolve({ urls: 'lbry://one' }).then(() => {
     // Leave the splash screen
-    balanceSubscribe();
-    blacklistedOutpointsSubscribe();
-    filteredOutpointsSubscribe();
-
     if (user && user.id && user.has_verified_email) {
       // user already authenticated
       NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(walletPassword => {
@@ -229,31 +227,14 @@ class SplashScreen extends React.PureComponent {
         });
       });
     }
-    // });
   };
 
   handleAccountUnlockFailed() {
     this.setState({ accountUnlockFailed: true });
   }
 
-  _updateStatusCallback(status) {
-    const { fetchSubscriptions, getSync, setClientSetting } = this.props;
-    const startupStatus = status.startup_status;
-    const walletStatus = status.wallet;
-
-    // At the minimum, wallet should be started and blocks_behind equal to 0 before calling resolve
-    const hasStarted = startupStatus.stream_manager && startupStatus.wallet && status.wallet.blocks_behind <= 0;
-    if (hasStarted) {
-      // Wait until we are able to resolve a name before declaring
-      // that we are done.
-      // TODO: This is a hack, and the logic should live in the daemon
-      // to give us a better sense of when we are actually started
-      this.setState({
-        daemonReady: true,
-        isLagging: false,
-        isRunning: true,
-      });
-
+  handleSdkReady = () => {
+    this.setState({ daemonReady: true }, () => {
       Lbry.wallet_status().then(secureWalletStatus => {
         // For now, automatically unlock the wallet if a password is set so that downloads work
         NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(password => {
@@ -284,9 +265,12 @@ class SplashScreen extends React.PureComponent {
           }
         });
       });
+    });
+  };
 
-      return;
-    }
+  handleSdkStatusResponse = evt => {
+    const { status } = evt;
+    const walletStatus = status.wallet;
 
     const headerSyncProgress = walletStatus ? walletStatus.headers_synchronization_progress : null;
     if (headerSyncProgress && headerSyncProgress < 100) {
@@ -321,23 +305,24 @@ class SplashScreen extends React.PureComponent {
         details: __('Initializing LBRY service'),
       });
     }
-
-    setTimeout(() => {
-      this.updateStatus();
-    }, 1000);
-  }
+  };
 
   componentWillMount() {
     DeviceEventEmitter.addListener('onNotificationTargetLaunch', this.onNotificationTargetLaunch);
+    DeviceEventEmitter.addListener('onSdkReady', this.handleSdkReady);
+    DeviceEventEmitter.addListener('onSdkStatusResponse', this.handleSdkStatusResponse);
   }
 
   componentWillUnmount() {
     DeviceEventEmitter.removeListener('onNotificationTargetLaunch', this.onNotificationTargetLaunch);
+    DeviceEventEmitter.removeListener('onSdkReady', this.handleSdkReady);
+    DeviceEventEmitter.removeListener('onSdkStatusResponse', this.handleSdkStatusResponse);
   }
 
   componentDidMount() {
     NativeModules.Firebase.track('app_launch', null);
     NativeModules.Firebase.setCurrentScreen('Splash');
+
     const { navigation } = this.props;
     const { resetUrl } = navigation.state.params;
     const isResetUrlSet = !!resetUrl;
@@ -357,11 +342,7 @@ class SplashScreen extends React.PureComponent {
         }
 
         // Only connect after checking initial launch url / notification launch target
-        if (liteMode) {
-          this.initLiteMode();
-        } else {
-          this.lbryConnect();
-        }
+        this.initLiteMode();
       });
     });
 
@@ -377,19 +358,23 @@ class SplashScreen extends React.PureComponent {
   }
 
   lbryConnect = () => {
-    Lbry.connect()
-      .then(() => {
-        this.updateStatus();
-      })
-      .catch(e => {
-        this.setState({
-          isLagging: true,
-          message: __('Connection Failure'),
-          details: __(
-            'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.',
-          ),
+    if (NativeModules.UtilityModule.dhtEnabled) {
+      Lbry.connect()
+        .then(() => {
+          this.updateStatus();
+        })
+        .catch(e => {
+          this.setState({
+            isLagging: true,
+            message: __('Connection Failure'),
+            details: __(
+              'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.',
+            ),
+          });
         });
-      });
+    } else {
+      this.updateStatus(); // skip lbry.connect for now (unless dht flag is enabled)
+    }
   };
 
   handleContinueAnywayPressed = () => {
diff --git a/src/page/subscriptions/index.js b/src/page/subscriptions/index.js
index 3806ab9..87af9d4 100644
--- a/src/page/subscriptions/index.js
+++ b/src/page/subscriptions/index.js
@@ -16,7 +16,7 @@ import {
 import { doToast, selectFetchingClaimSearch } from 'lbry-redux';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { doSetClientSetting, doSetTimeItem } from 'redux/actions/settings';
-import { makeSelectClientSetting, selectTimeItem } from 'redux/selectors/settings';
+import { makeSelectClientSetting, selectSdkReady, selectTimeItem } from 'redux/selectors/settings';
 import { selectCurrentRoute } from 'redux/selectors/drawer';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import SubscriptionsPage from './view';
@@ -34,6 +34,7 @@ const select = state => ({
   firstRunCompleted: selectFirstRunCompleted(state),
   showSuggestedSubs: selectShowSuggestedSubs(state),
   timeItem: selectTimeItem(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -48,7 +49,4 @@ const perform = dispatch => ({
   setTimeItem: item => dispatch(doSetTimeItem(item)),
 });
 
-export default connect(
-  select,
-  perform,
-)(SubscriptionsPage);
+export default connect(select, perform)(SubscriptionsPage);
diff --git a/src/page/subscriptions/view.js b/src/page/subscriptions/view.js
index 1270bc3..4405026 100644
--- a/src/page/subscriptions/view.js
+++ b/src/page/subscriptions/view.js
@@ -30,6 +30,7 @@ import SubscribedChannelList from 'component/subscribedChannelList';
 import SuggestedSubscriptions from 'component/suggestedSubscriptions';
 import SuggestedSubscriptionsGrid from 'component/suggestedSubscriptionsGrid';
 import UriBar from 'component/uriBar';
+import SdkLoadingStatus from 'component/sdkLoadingStatus';
 
 class SubscriptionsPage extends React.PureComponent {
   state = {
@@ -137,21 +138,7 @@ class SubscriptionsPage extends React.PureComponent {
   };
 
   render() {
-    const {
-      suggestedChannels,
-      subscribedChannels,
-      allSubscriptions,
-      doCompleteFirstRun,
-      doShowSuggestedSubs,
-      loading,
-      loadingSuggested,
-      firstRunCompleted,
-      showSuggestedSubs,
-      timeItem,
-      unreadSubscriptions,
-      navigation,
-      notify,
-    } = this.props;
+    const { subscribedChannels, loading, loadingSuggested, sdkReady, timeItem, navigation, notify } = this.props;
     const { currentSortByItem, filteredChannels, showModalSuggestedSubs, showSortPicker, showTimePicker } = this.state;
 
     const numberOfSubscriptions = subscribedChannels ? subscribedChannels.length : 0;
@@ -296,6 +283,8 @@ class SubscriptionsPage extends React.PureComponent {
             onDonePress={() => this.setState({ showModalSuggestedSubs: false })}
           />
         )}
+
+        {!sdkReady && <SdkLoadingStatus />}
       </View>
     );
   }
diff --git a/src/page/tag/index.js b/src/page/tag/index.js
index b03e8f0..ca0b81d 100644
--- a/src/page/tag/index.js
+++ b/src/page/tag/index.js
@@ -3,11 +3,12 @@ import { selectFollowedTags, doToggleTagFollow } from 'lbry-redux';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { doSetSortByItem, doSetTimeItem } from 'redux/actions/settings';
 import { selectCurrentRoute } from 'redux/selectors/drawer';
-import { selectSortByItem, selectTimeItem } from 'redux/selectors/settings';
+import { selectSdkReady, selectSortByItem, selectTimeItem } from 'redux/selectors/settings';
 import TagPage from './view';
 
 const select = state => ({
   currentRoute: selectCurrentRoute(state),
+  sdkReady: selectSdkReady(state),
   sortByItem: selectSortByItem(state),
   timeItem: selectTimeItem(state),
   followedTags: selectFollowedTags(state),
@@ -21,7 +22,4 @@ const perform = dispatch => ({
   toggleTagFollow: tag => dispatch(doToggleTagFollow(tag)),
 });
 
-export default connect(
-  select,
-  perform
-)(TagPage);
+export default connect(select, perform)(TagPage);
diff --git a/src/page/tag/view.js b/src/page/tag/view.js
index cf860cb..82093f4 100644
--- a/src/page/tag/view.js
+++ b/src/page/tag/view.js
@@ -14,6 +14,7 @@ import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import FloatingWalletBalance from 'component/floatingWalletBalance';
 import Link from 'component/link';
 import ModalPicker from 'component/modalPicker';
+import SdkLoadingStatus from 'component/sdkLoadingStatus';
 import UriBar from 'component/uriBar';
 
 class TagPage extends React.PureComponent {
@@ -127,7 +128,7 @@ class TagPage extends React.PureComponent {
   };
 
   render() {
-    const { navigation, sortByItem, timeItem } = this.props;
+    const { navigation, sdkReady, sortByItem, timeItem } = this.props;
     const { tag, showSortPicker, showTimePicker } = this.state;
 
     return (
@@ -144,7 +145,7 @@ class TagPage extends React.PureComponent {
             orientation={Constants.ORIENTATION_VERTICAL}
           />
         )}
-        {!showSortPicker && !showTimePicker && <FloatingWalletBalance navigation={navigation} />}
+        {sdkReady && !showSortPicker && !showTimePicker && <FloatingWalletBalance navigation={navigation} />}
         {showSortPicker && (
           <ModalPicker
             title={__('Sort content by')}
@@ -163,6 +164,7 @@ class TagPage extends React.PureComponent {
             items={Constants.CLAIM_SEARCH_TIME_ITEMS}
           />
         )}
+        {!sdkReady && <SdkLoadingStatus />}
       </View>
     );
   }
diff --git a/src/page/wallet/index.js b/src/page/wallet/index.js
index d1475f6..1089ea2 100644
--- a/src/page/wallet/index.js
+++ b/src/page/wallet/index.js
@@ -1,6 +1,6 @@
 import { connect } from 'react-redux';
 import { doSetClientSetting } from 'redux/actions/settings';
-import { makeSelectClientSetting } from 'redux/selectors/settings';
+import { makeSelectClientSetting, selectSdkReady } from 'redux/selectors/settings';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
 import { selectCurrentRoute } from 'redux/selectors/drawer';
 import { selectBalance } from 'lbry-redux';
@@ -15,6 +15,7 @@ const select = state => ({
   deviceWalletSynced: makeSelectClientSetting(Constants.SETTING_DEVICE_WALLET_SYNCED)(state),
   hasSyncedWallet: selectHasSyncedWallet(state),
   rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state),
+  sdkReady: selectSdkReady(state),
   understandsRisks: makeSelectClientSetting(Constants.SETTING_ALPHA_UNDERSTANDS_RISKS)(state),
   user: selectUser(state),
 });
@@ -27,7 +28,4 @@ const perform = dispatch => ({
   setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
 });
 
-export default connect(
-  select,
-  perform
-)(WalletPage);
+export default connect(select, perform)(WalletPage);
diff --git a/src/page/wallet/view.js b/src/page/wallet/view.js
index 06dd592..4996426 100644
--- a/src/page/wallet/view.js
+++ b/src/page/wallet/view.js
@@ -1,5 +1,6 @@
 import React from 'react';
 import { NativeModules, ScrollView, Text, View } from 'react-native';
+import EmptyStateView from 'component/emptyStateView';
 import TransactionListRecent from 'component/transactionListRecent';
 import WalletAddress from 'component/walletAddress';
 import WalletBalance from 'component/walletBalance';
@@ -8,8 +9,6 @@ import WalletSend from 'component/walletSend';
 import WalletRewardsDriver from 'component/walletRewardsDriver';
 import WalletSignIn from 'component/walletSignIn';
 import WalletSyncDriver from 'component/walletSyncDriver';
-import Button from 'component/button';
-import Link from 'component/link';
 import UriBar from 'component/uriBar';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import walletStyle from 'styles/wallet';
@@ -60,16 +59,20 @@ class WalletPage extends React.PureComponent {
   };
 
   render() {
-    const {
-      balance,
-      backupDismissed,
-      hasSyncedWallet,
-      rewardsNotInterested,
-      understandsRisks,
-      setClientSetting,
-      navigation,
-      user,
-    } = this.props;
+    const { balance, rewardsNotInterested, understandsRisks, navigation, sdkReady, user } = this.props;
+
+    if (!sdkReady) {
+      return (
+        <View style={walletStyle.container}>
+          <UriBar navigation={navigation} />
+          <EmptyStateView
+            message={__(
+              'The background service is still initializing. You can still explore and watch content during the initialization process.',
+            )}
+          />
+        </View>
+      );
+    }
 
     const signedIn = user && user.has_verified_email;
     if (!signedIn && !understandsRisks) {
diff --git a/src/redux/actions/settings.js b/src/redux/actions/settings.js
index 9795f0d..1d7f919 100644
--- a/src/redux/actions/settings.js
+++ b/src/redux/actions/settings.js
@@ -17,6 +17,14 @@ export function doSetClientSetting(key, value) {
   };
 }
 
+export function doSetSdkReady() {
+  return dispatch => {
+    dispatch({
+      type: Constants.ACTION_SDK_READY,
+    });
+  };
+}
+
 export function doSetSortByItem(item) {
   return dispatch => {
     dispatch({
diff --git a/src/redux/reducers/settings.js b/src/redux/reducers/settings.js
index 2ddf0c9..85a64bb 100644
--- a/src/redux/reducers/settings.js
+++ b/src/redux/reducers/settings.js
@@ -4,6 +4,7 @@ import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 const reducers = {};
 const defaultState = {
   clientSettings: {},
+  sdkReady: false,
   sortByItemName: Constants.SORT_BY_HOT,
   timeItemName: Constants.TIME_WEEK,
   fullscreenMode: false,
@@ -20,6 +21,11 @@ reducers[ACTIONS.CLIENT_SETTING_CHANGED] = (state, action) => {
   });
 };
 
+reducers[Constants.ACTION_SDK_READY] = (state, action) =>
+  Object.assign({}, state, {
+    sdkReady: true,
+  });
+
 reducers[Constants.ACTION_SORT_BY_ITEM_CHANGED] = (state, action) =>
   Object.assign({}, state, {
     sortByItemName: action.data.name,
diff --git a/src/redux/selectors/settings.js b/src/redux/selectors/settings.js
index d147c91..1bebeff 100644
--- a/src/redux/selectors/settings.js
+++ b/src/redux/selectors/settings.js
@@ -4,38 +4,22 @@ import { getSortByItemForName, getTimeItemForName } from 'utils/helper';
 
 const selectState = state => state.settings || {};
 
-export const selectDaemonSettings = createSelector(
-  selectState,
-  state => state.daemonSettings
-);
+export const selectDaemonSettings = createSelector(selectState, state => state.daemonSettings);
 
-export const selectClientSettings = createSelector(
-  selectState,
-  state => state.clientSettings || {}
-);
+export const selectClientSettings = createSelector(selectState, state => state.clientSettings || {});
 
-export const selectSortByItem = createSelector(
-  selectState,
-  state => getSortByItemForName(state.sortByItemName)
-);
+export const selectSortByItem = createSelector(selectState, state => getSortByItemForName(state.sortByItemName));
 
-export const selectTimeItem = createSelector(
-  selectState,
-  state => getTimeItemForName(state.timeItemName)
-);
+export const selectTimeItem = createSelector(selectState, state => getTimeItemForName(state.timeItemName));
 
 export const makeSelectClientSetting = setting =>
-  createSelector(
-    selectClientSettings,
-    settings => (settings ? settings[setting] : undefined)
-  );
+  createSelector(selectClientSettings, settings => (settings ? settings[setting] : undefined));
 
 // refactor me
 export const selectShowNsfw = makeSelectClientSetting(SETTINGS.SHOW_NSFW);
 
 export const selectKeepDaemonRunning = makeSelectClientSetting(SETTINGS.KEEP_DAEMON_RUNNING);
 
-export const selectFullscreenMode = createSelector(
-  selectState,
-  state => state.fullscreenMode
-);
+export const selectFullscreenMode = createSelector(selectState, state => state.fullscreenMode);
+
+export const selectSdkReady = createSelector(selectState, state => state.sdkReady);
diff --git a/src/styles/discover.js b/src/styles/discover.js
index cfece22..34f0d12 100644
--- a/src/styles/discover.js
+++ b/src/styles/discover.js
@@ -398,6 +398,23 @@ const discoverStyle = StyleSheet.create({
     fontSize: 14,
     textAlign: 'center',
   },
+  sdkLoading: {
+    position: 'absolute',
+    flexDirection: 'row',
+    alignItems: 'center',
+    justifyContent: 'center',
+    bottom: 0,
+    left: 0,
+    right: 0,
+    padding: 8,
+    backgroundColor: Colors.LbryGreen,
+  },
+  sdkLoadingText: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    color: Colors.White,
+    marginLeft: 8,
+  },
 });
 
 export default discoverStyle;
diff --git a/yarn.lock b/yarn.lock
index a411c72..11f51b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4591,17 +4591,17 @@ latest-version@^3.0.0:
   dependencies:
     package-json "^4.0.0"
 
-lbry-redux@lbryio/lbry-redux#84e697079968364fe526020086c8a44f4d2ef391:
+lbry-redux@lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/84e697079968364fe526020086c8a44f4d2ef391"
+  resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/69ffd110dbf3633e5847f61f008751edec033017"
   dependencies:
     proxy-polyfill "0.1.6"
     reselect "^3.0.0"
     uuid "^3.3.2"
 
-lbryinc@lbryio/lbryinc#28afb9b06c3d142bad8347939c043a21b6cb1ae1:
+lbryinc@lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/28afb9b06c3d142bad8347939c043a21b6cb1ae1"
+  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/021ac75d9aa2db488cfff8e9be320402f038f955"
   dependencies:
     reselect "^3.0.0"
 

From d33ed55bdf8ea1c92feeb92c13356fdbe6bc5297 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 20 Mar 2020 08:36:04 +0100
Subject: [PATCH 07/15] add gitlab CI for multi-project pipeline

---
 .gitlab-ci.yml | 8 ++++++++
 android        | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..b0b2e39
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,8 @@
+stages:
+  - build
+
+build:
+  variables:
+    REACT_NATIVE_BRANCH: $CI_COMMIT_REF_NAME
+  stage: build
+  trigger: lbry/lbry-android
diff --git a/android b/android
index e9f2554..56c375f 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit e9f25546979eee36751353c187dc9944ab1e508e
+Subproject commit 56c375f344911bffe64c0564dd37d2bb8b7761f1

From a5953dcef041b66bf8d66d7a54b672218ffda934 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 20 Mar 2020 14:21:18 +0100
Subject: [PATCH 08/15] Repost creation (#133)

* create reposts
* display reposts properly on publishes page
* show/hide advanced link
* fix edit mode on owned publishes
---
 android                                |   2 +-
 src/component/fileListItem/view.js     |  23 ++-
 src/component/modalRepostView/index.js |  28 ++++
 src/component/modalRepostView/view.js  | 204 +++++++++++++++++++++++++
 src/component/modalTipView/view.js     |  10 +-
 src/constants.js                       |   2 +-
 src/page/file/view.js                  |  24 ++-
 src/page/splash/view.js                |   1 +
 src/styles/modalRepost.js              |  93 +++++++++++
 src/styles/publish.js                  |  12 +-
 10 files changed, 380 insertions(+), 19 deletions(-)
 create mode 100644 src/component/modalRepostView/index.js
 create mode 100644 src/component/modalRepostView/view.js
 create mode 100644 src/styles/modalRepost.js

diff --git a/android b/android
index 56c375f..4d1f142 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit 56c375f344911bffe64c0564dd37d2bb8b7761f1
+Subproject commit 4d1f142f9cf4f221a2110b7d7aa77b9f42731253
diff --git a/src/component/fileListItem/view.js b/src/component/fileListItem/view.js
index de665d1..498a18b 100644
--- a/src/component/fileListItem/view.js
+++ b/src/component/fileListItem/view.js
@@ -99,6 +99,7 @@ class FileListItem extends React.PureComponent {
       isRewardContent,
       channelClaimId,
       fullChannelUri,
+      repostUrl,
       repostChannel,
       repostChannelUrl,
       shortChannelUri,
@@ -114,12 +115,13 @@ class FileListItem extends React.PureComponent {
       channelClaimId = signingChannel ? signingChannel.claim_id : null;
       fullChannelUri = channelClaimId ? `${channel}#${channelClaimId}` : channel;
       shortChannelUri = signingChannel ? signingChannel.short_url : null;
+      repostUrl = claim.repost_url;
       repostChannelUrl = claim.repost_channel_url;
-      if (repostChannelUrl) {
-        const { claimName: repostChannelName } = parseURI(repostChannelUrl);
-        repostChannel = repostChannelName;
+      if (repostUrl) {
+        const { claimName: repostName, channelName } = parseURI(repostUrl);
+        repostChannel = channelName;
       }
-      isRepost = !!repostChannelUrl;
+      isRepost = !!repostUrl;
 
       if (blackListedOutpoints || filteredOutpoints) {
         const outpointsToHide = !blackListedOutpoints
@@ -148,8 +150,17 @@ class FileListItem extends React.PureComponent {
             <Icon name={'retweet'} size={14} style={fileListStyle.repostIcon} />
             <Text style={fileListStyle.repostChannelName}>
               <Link
-                text={repostChannel}
-                onPress={() => navigateToUri(navigation, normalizeURI(repostChannelUrl), null, false, null, false)}
+                text={`@${repostChannel}`}
+                onPress={() =>
+                  navigateToUri(
+                    navigation,
+                    normalizeURI(repostChannelUrl || `@${repostChannel}`),
+                    null,
+                    false,
+                    null,
+                    false,
+                  )
+                }
               />{' '}
               reposted
             </Text>
diff --git a/src/component/modalRepostView/index.js b/src/component/modalRepostView/index.js
new file mode 100644
index 0000000..12b1a45
--- /dev/null
+++ b/src/component/modalRepostView/index.js
@@ -0,0 +1,28 @@
+import { connect } from 'react-redux';
+import {
+  doClearRepostError,
+  doFetchChannelListMine,
+  doRepost,
+  doToast,
+  selectBalance,
+  selectMyChannelClaims,
+  selectRepostError,
+  selectRepostLoading,
+} from 'lbry-redux';
+import ModalRepostView from './view';
+
+const select = state => ({
+  balance: selectBalance(state),
+  channels: selectMyChannelClaims(state),
+  reposting: selectRepostLoading(state),
+  error: selectRepostError(state),
+});
+
+const perform = dispatch => ({
+  fetchChannelListMine: () => dispatch(doFetchChannelListMine(1, 99999, true)),
+  notify: data => dispatch(doToast(data)),
+  repost: options => dispatch(doRepost(options)),
+  clearError: () => dispatch(doClearRepostError()),
+});
+
+export default connect(select, perform)(ModalRepostView);
diff --git a/src/component/modalRepostView/view.js b/src/component/modalRepostView/view.js
new file mode 100644
index 0000000..e9fe577
--- /dev/null
+++ b/src/component/modalRepostView/view.js
@@ -0,0 +1,204 @@
+import React from 'react';
+import { ActivityIndicator, Alert, Text, TextInput, TouchableOpacity, View } from 'react-native';
+import { formatCredits, creditsToString } from 'lbry-redux';
+import modalStyle from 'styles/modal';
+import modalRepostStyle from 'styles/modalRepost';
+import ChannelSelector from 'component/channelSelector';
+import Button from 'component/button';
+import Colors from 'styles/colors';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
+import Icon from 'react-native-vector-icons/FontAwesome5';
+import Link from 'component/link';
+import { logPublish } from 'utils/helper';
+
+export default class ModalRepostView extends React.PureComponent {
+  depositAmountInput;
+
+  state = {
+    channelName: null,
+    creditsInputFocused: false,
+    depositAmount: '0.1',
+    repostName: null,
+    repostStarted: false,
+    showAdvanced: false,
+  };
+
+  componentDidMount() {
+    const { claim, fetchChannelListMine } = this.props;
+    const { name } = claim;
+    fetchChannelListMine();
+    this.setState({ repostName: name });
+    this.checkChannelSelection(this.props);
+  }
+
+  componentWillReceiveProps(nextProps) {
+    this.checkChannelSelection(nextProps);
+    const { notify } = this.props;
+    const { reposting, error } = nextProps;
+    if (this.state.repostStarted && !reposting && error) {
+      this.setState({ repostStarted: false });
+      notify({ message: error, isError: true });
+    }
+  }
+
+  checkChannelSelection = props => {
+    const { channels = [] } = props;
+    if (!this.state.channelName && channels && channels.length > 0) {
+      const firstChannel = channels[0];
+      this.setState({ channelName: firstChannel.name });
+    }
+  };
+
+  handleChannelChange = channelName => {
+    const { channels = [] } = this.props;
+    if (channels && channels.length > 0) {
+      const filtered = channels.filter(c => c.name === channelName);
+      if (filtered.length > 0) {
+        const channel = filtered[0];
+        this.setState({ channelName });
+      }
+    }
+  };
+
+  handleRepost = () => {
+    const { claim, balance, notify, repost, onRepostSuccessful, channels = [], clearError } = this.props;
+    const { depositAmount, repostName, channelName } = this.state;
+
+    if (parseInt(depositAmount, 10) > balance) {
+      notify({
+        message: 'Insufficient credits',
+        isError: true,
+      });
+      return;
+    }
+
+    clearError();
+    const channel = channels.filter(ch => ch.name === channelName)[0];
+    this.setState({ repostStarted: true }, () => {
+      repost({
+        name: repostName,
+        bid: creditsToString(depositAmount),
+        channel_id: channel.claim_id,
+        claim_id: claim.claim_id,
+      }).then(repostClaim => {
+        logPublish(repostClaim);
+        this.setState({ repostStarted: false });
+        notify({ message: __('The content was successfully reposted!') });
+        if (onRepostSuccessful) onRepostSuccessful();
+      });
+    });
+  };
+
+  render() {
+    const { balance, channels, reposting, title, onCancelPress, onOverlayPress } = this.props;
+    const canRepost = !!this.state.channelName && !!this.state.repostName;
+    const channelsLoaded = channels && channels.length > 0;
+    const processing = this.state.repostStarted || reposting || !channelsLoaded;
+
+    return (
+      <TouchableOpacity style={modalStyle.overlay} activeOpacity={1} onPress={onOverlayPress}>
+        <TouchableOpacity style={modalStyle.container} activeOpacity={1}>
+          <View
+            style={modalRepostStyle.container}
+            onLayout={() => {
+              if (this.tipAmountInput) {
+                this.tipAmountInput.focus();
+              }
+            }}
+          >
+            <Text style={modalRepostStyle.title} numberOfLines={1}>
+              {__('Repost %title%', { title })}
+            </Text>
+            <Text style={modalRepostStyle.infoText}>
+              {__('Repost your favorite content to help more people discover them!')}
+            </Text>
+
+            <Text style={modalRepostStyle.label}>{__('Channel to post on')}</Text>
+            <ChannelSelector
+              showAnonymous={false}
+              channelName={this.state.channelName}
+              onChannelChange={this.handleChannelChange}
+            />
+
+            {this.state.showAdvanced && (
+              <View>
+                <Text style={modalRepostStyle.label}>{__('Name')}</Text>
+                <View style={modalRepostStyle.nameRow}>
+                  <TextInput
+                    editable={false}
+                    value={this.state.channelName ? `lbry://${this.state.channelName}/` : ''}
+                    style={modalRepostStyle.input}
+                  />
+                  <TextInput
+                    editable={canRepost}
+                    value={this.state.repostName}
+                    underlineColorAndroid={Colors.NextLbryGreen}
+                    selectTextOnFocus
+                    onChangeText={value => this.setState({ repostName: value })}
+                    style={modalRepostStyle.input}
+                  />
+                </View>
+
+                <Text style={modalRepostStyle.label}>{__('Deposit')}</Text>
+                <View style={modalRepostStyle.row}>
+                  <View style={modalRepostStyle.amountRow}>
+                    <TextInput
+                      editable={!this.state.repostStarted}
+                      ref={ref => (this.depositAmountInput = ref)}
+                      onChangeText={value => this.setState({ tipAmount: value })}
+                      underlineColorAndroid={Colors.NextLbryGreen}
+                      keyboardType={'numeric'}
+                      onFocus={() => this.setState({ creditsInputFocused: true })}
+                      onBlur={() => this.setState({ creditsInputFocused: false })}
+                      placeholder={'0'}
+                      value={this.state.depositAmount}
+                      selectTextOnFocus
+                      style={modalRepostStyle.depositAmountInput}
+                    />
+                    <Text style={modalRepostStyle.currency}>LBC</Text>
+                    <View style={modalRepostStyle.balance}>
+                      {this.state.creditsInputFocused && <Icon name="coins" size={12} />}
+                      {this.state.creditsInputFocused && (
+                        <Text style={modalRepostStyle.balanceText}>{formatCredits(parseFloat(balance), 1, true)}</Text>
+                      )}
+                    </View>
+                  </View>
+                </View>
+              </View>
+            )}
+
+            <View style={modalRepostStyle.buttonRow}>
+              {!processing && (
+                <Link
+                  style={modalRepostStyle.cancelLink}
+                  text={__('Cancel')}
+                  onPress={() => {
+                    if (onCancelPress) onCancelPress();
+                  }}
+                />
+              )}
+
+              {processing && <ActivityIndicator size={'small'} color={Colors.NextLbryGreen} />}
+
+              <View style={modalRepostStyle.rightButtonRow}>
+                <Link
+                  style={modalRepostStyle.advancedLink}
+                  text={this.state.showAdvanced ? __('Hide advanced') : __('Show advanced')}
+                  onPress={() => {
+                    this.setState({ showAdvanced: !this.state.showAdvanced });
+                  }}
+                />
+                <Button
+                  text={__('Repost')}
+                  style={modalRepostStyle.button}
+                  disabled={!canRepost || this.state.repostStarted || reposting}
+                  onPress={this.handleRepost}
+                />
+              </View>
+            </View>
+          </View>
+        </TouchableOpacity>
+      </TouchableOpacity>
+    );
+  }
+}
diff --git a/src/component/modalTipView/view.js b/src/component/modalTipView/view.js
index a435265..9cdd5e1 100644
--- a/src/component/modalTipView/view.js
+++ b/src/component/modalTipView/view.js
@@ -5,7 +5,6 @@ import modalStyle from 'styles/modal';
 import modalTipStyle from 'styles/modalTip';
 import Button from 'component/button';
 import Colors from 'styles/colors';
-import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import Icon from 'react-native-vector-icons/FontAwesome5';
 import Link from 'component/link';
 
@@ -25,6 +24,7 @@ export default class ModalTipView extends React.PureComponent {
     if (tipAmount > balance) {
       notify({
         message: 'Insufficient credits',
+        isError: true,
       });
       return;
     }
@@ -56,13 +56,13 @@ export default class ModalTipView extends React.PureComponent {
                 () => {
                   // error
                   if (onSendTipFailed) onSendTipFailed();
-                }
-              )
+                },
+              ),
             );
           },
         },
       ],
-      { cancelable: true }
+      { cancelable: true },
     );
   };
 
@@ -115,7 +115,7 @@ export default class ModalTipView extends React.PureComponent {
               <Text style={modalTipStyle.infoText}>
                 {__(
                   'This will appear as a tip for %content%, which will boost its ability to be discovered while active.',
-                  { content: contentName }
+                  { content: contentName },
                 )}{' '}
                 <Link
                   style={modalTipStyle.learnMoreLink}
diff --git a/src/constants.js b/src/constants.js
index c207f3d..bd66bc7 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -149,7 +149,7 @@ const Constants = {
 
   TRUE_STRING: 'true',
 
-  MINIMUM_TRANSACTION_BALANCE: 0.1,
+  MINIMUM_TRANSACTION_BALANCE: 0.01,
 
   SHARE_BASE_URL: 'https://open.lbry.com',
 };
diff --git a/src/page/file/view.js b/src/page/file/view.js
index f8b1ce1..f98a408 100644
--- a/src/page/file/view.js
+++ b/src/page/file/view.js
@@ -37,6 +37,7 @@ import FilePrice from 'component/filePrice';
 import FloatingWalletBalance from 'component/floatingWalletBalance';
 import Link from 'component/link';
 import MediaPlayer from 'component/mediaPlayer';
+import ModalRepostView from 'component/modalRepostView';
 import ModalTipView from 'component/modalTipView';
 import ProgressCircle from 'react-native-progress-circle';
 import RelatedContent from 'component/relatedContent';
@@ -94,6 +95,7 @@ class FilePage extends React.PureComponent {
       showImageViewer: false,
       showWebView: false,
       showTipView: false,
+      showRepostView: false,
       playbackStarted: false,
       playerBgHeight: 0,
       playerHeight: 0,
@@ -265,6 +267,7 @@ class FilePage extends React.PureComponent {
       'playerBgHeighht',
       'playerHeight',
       'relatedY',
+      'showRepostView',
       'showTipView',
       'showImageViewer',
       'showWebView',
@@ -1127,7 +1130,8 @@ class FilePage extends React.PureComponent {
     const channelName = signingChannel && signingChannel.name;
     const channelClaimId = claim && claim.signing_channel && claim.signing_channel.claim_id;
     const fullUri = `${claim.name}#${claim.claim_id}`;
-    const canEdit = myClaimUris.includes(normalizeURI(fullUri));
+    const canEdit =
+      myClaimUris.includes(normalizeURI(fullUri)) || myClaimUris.includes(normalizeURI(claim.canonical_url));
     const showActions =
       (canEdit || (fileInfo && fileInfo.download_path)) &&
       !this.state.fullscreenMode &&
@@ -1348,6 +1352,14 @@ class FilePage extends React.PureComponent {
                     <Text style={filePageStyle.largeButtonText}>{__('Share')}</Text>
                   </TouchableOpacity>
 
+                  <TouchableOpacity
+                    style={filePageStyle.largeButton}
+                    onPress={() => this.setState({ showRepostView: true })}
+                  >
+                    <Icon name={'retweet'} size={16} style={filePageStyle.largeButtonIcon} />
+                    <Text style={filePageStyle.largeButtonText}>{__('Repost')}</Text>
+                  </TouchableOpacity>
+
                   <TouchableOpacity
                     style={filePageStyle.largeButton}
                     onPress={() => this.setState({ showTipView: true })}
@@ -1522,7 +1534,17 @@ class FilePage extends React.PureComponent {
             onSendTipSuccessful={() => this.setState({ showTipView: false })}
           />
         )}
+        {this.state.showRepostView && (
+          <ModalRepostView
+            claim={claim}
+            title={title}
+            onCancelPress={() => this.setState({ showRepostView: false })}
+            onOverlayPress={() => this.setState({ showRepostView: false })}
+            onRepostSuccessful={() => this.setState({ showRepostView: false })}
+          />
+        )}
         {!this.state.fullscreenMode &&
+          !this.state.showRepostView &&
           !this.state.showTipView &&
           !this.state.showImageViewer &&
           !this.state.showWebView && <FloatingWalletBalance navigation={navigation} />}
diff --git a/src/page/splash/view.js b/src/page/splash/view.js
index 11b64aa..83c93f7 100644
--- a/src/page/splash/view.js
+++ b/src/page/splash/view.js
@@ -322,6 +322,7 @@ class SplashScreen extends React.PureComponent {
   componentDidMount() {
     NativeModules.Firebase.track('app_launch', null);
     NativeModules.Firebase.setCurrentScreen('Splash');
+    NativeModules.UtilityModule.checkSdkReady();
 
     const { navigation } = this.props;
     const { resetUrl } = navigation.state.params;
diff --git a/src/styles/modalRepost.js b/src/styles/modalRepost.js
new file mode 100644
index 0000000..8854a49
--- /dev/null
+++ b/src/styles/modalRepost.js
@@ -0,0 +1,93 @@
+import { StyleSheet } from 'react-native';
+import Colors from './colors';
+
+const modalRepostStyle = StyleSheet.create({
+  container: {
+    padding: 16,
+  },
+  title: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 24,
+    marginBottom: 8,
+  },
+  row: {
+    flexDirection: 'row',
+    flex: 1,
+  },
+  amountRow: {
+    flexDirection: 'row',
+    alignItems: 'center',
+    marginRight: 24,
+  },
+  depositAmountInput: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    alignSelf: 'flex-start',
+    textAlign: 'right',
+    width: 80,
+    letterSpacing: 1,
+  },
+  currency: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 12,
+    marginLeft: 4,
+  },
+  buttonRow: {
+    alignItems: 'center',
+    flexDirection: 'row',
+    justifyContent: 'space-between',
+    marginTop: 16,
+  },
+  button: {
+    backgroundColor: Colors.LbryGreen,
+  },
+  cancelLink: {
+    color: Colors.Grey,
+  },
+  advancedLink: {
+    color: Colors.Grey,
+    marginRight: 16,
+  },
+  balance: {
+    alignItems: 'center',
+    flexDirection: 'row',
+    marginLeft: 24,
+  },
+  balanceText: {
+    fontFamily: 'Inter-SemiBold',
+    fontSize: 14,
+    marginLeft: 4,
+  },
+  info: {
+    marginTop: 4,
+  },
+  infoText: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    color: Colors.DescriptionGrey,
+  },
+  learnMoreLink: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    color: Colors.LbryGreen,
+  },
+  label: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    marginTop: 8,
+  },
+  nameRow: {
+    flexDirection: 'row',
+    alignItems: 'center',
+  },
+  rightButtonRow: {
+    flexDirection: 'row',
+    alignItems: 'center',
+  },
+  input: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+  },
+});
+
+export default modalRepostStyle;
diff --git a/src/styles/publish.js b/src/styles/publish.js
index a7ebd80..1e5096e 100644
--- a/src/styles/publish.js
+++ b/src/styles/publish.js
@@ -411,6 +411,7 @@ const publishStyle = StyleSheet.create({
     marginTop: 60,
   },
   publishesScrollPadding: {
+    paddingTop: 16,
     paddingBottom: 16,
   },
   listItem: {
@@ -418,8 +419,9 @@ const publishStyle = StyleSheet.create({
     flexDirection: 'row',
     justifyContent: 'space-between',
     marginTop: 8,
-    marginLeft: 8,
-    marginRight: 8,
+    marginLeft: 16,
+    marginRight: 16,
+    marginBottom: 12,
   },
   noVideos: {
     color: Colors.White,
@@ -443,13 +445,13 @@ const publishStyle = StyleSheet.create({
   },
   publishesFooter: {
     marginTop: 2,
-    marginLeft: 16,
-    marginRight: 16,
+    marginLeft: 8,
+    marginRight: 8,
   },
   publishesFooterButton: {
     alignSelf: 'flex-start',
     backgroundColor: Colors.LbryGreen,
-    marginTop: 16,
+    marginTop: 8,
   },
   thumbnailEditOverlay: {
     alignItems: 'center',

From 4c4d561f30d4399c46c94b3f314dbcb9efb59f2c Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 20 Mar 2020 17:00:18 +0100
Subject: [PATCH 09/15] new_android reward

---
 package.json                   |  2 +-
 src/component/AppNavigator.js  | 26 ++++++++++++++++++++++++++
 src/component/fileItem/view.js |  4 +++-
 src/constants.js               |  1 +
 src/page/splash/index.js       |  1 +
 src/page/splash/view.js        |  1 +
 yarn.lock                      |  4 ++--
 7 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/package.json b/package.json
index 6e2bbb9..0338f00 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
     "@expo/vector-icons": "^8.1.0",
     "gfycat-style-urls": "^1.0.3",
     "lbry-redux": "lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017",
-    "lbryinc": "lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955",
+    "lbryinc": "lbryio/lbryinc#667024ebb7cb207609273174ca422cee47469270",
     "lodash": ">=4.17.11",
     "merge": ">=1.2.1",
     "moment": "^2.22.1",
diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js
index 6dc355b..d003376 100644
--- a/src/component/AppNavigator.js
+++ b/src/component/AppNavigator.js
@@ -54,7 +54,9 @@ import {
 } from 'lbry-redux';
 import {
   Lbryio,
+  rewards as REWARD_TYPES,
   doBlackListedOutpointsSubscribe,
+  doClaimRewardType,
   doFilteredOutpointsSubscribe,
   doGetSync,
   doUserCheckEmailVerified,
@@ -372,6 +374,28 @@ class AppWithNavigationState extends React.Component {
     );
   };
 
+  checkNewAndroidReward = () => {
+    const { dispatch, doToast } = this.props;
+    const claimRewardCallback = err => {
+      if (err) {
+        // an error occurred, do not display anything
+        return;
+      }
+      // reward successfully claimed
+      NativeModules.UtilityModule.setNativeBooleanSetting(Constants.SETTING_NEW_ANDROID_REWARD_CLAIMED, true);
+    };
+
+    NativeModules.UtilityModule.getNativeBooleanSetting(Constants.SETTING_NEW_ANDROID_REWARD_CLAIMED, false).then(
+      rewardClaimed => {
+        if (!rewardClaimed) {
+          dispatch(
+            doClaimRewardType(REWARD_TYPES.TYPE_NEW_ANDROID, { notifyError: false, callback: claimRewardCallback }),
+          );
+        }
+      },
+    );
+  };
+
   handleSdkReady = () => {
     const { dispatch } = this.props;
     dispatch(doSetSdkReady());
@@ -398,6 +422,8 @@ class AppWithNavigationState extends React.Component {
         }
       });
     });
+
+    this.checkNewAndroidReward();
   };
 
   handleAccountUnlockFailed() {
diff --git a/src/component/fileItem/view.js b/src/component/fileItem/view.js
index 5de069b..c2066a5 100644
--- a/src/component/fileItem/view.js
+++ b/src/component/fileItem/view.js
@@ -70,7 +70,9 @@ class FileItem extends React.PureComponent {
       const outpointsToHide = !blackListedOutpoints
         ? filteredOutpoints
         : blackListedOutpoints.concat(filteredOutpoints);
-      shouldHide = outpointsToHide.some(outpoint => outpoint.txid === claim.txid && outpoint.nout === claim.nout);
+      shouldHide = outpointsToHide.some(
+        outpoint => outpoint && outpoint.txid === claim.txid && outpoint.nout === claim.nout,
+      );
     }
     if (shouldHide) {
       // don't display blacklisted or filtered outpoints on the Your tags page
diff --git a/src/constants.js b/src/constants.js
index bd66bc7..e3ac8df 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -45,6 +45,7 @@ const Constants = {
   SETTING_REWARDS_NOT_INTERESTED: 'rewardsNotInterested',
   SETTING_DEVICE_WALLET_SYNCED: 'deviceWalletSynced',
   SETTING_DHT_ENABLED: 'dhtEnabled',
+  SETTING_NEW_ANDROID_REWARD_CLAIMED: 'newAndroidRewardClaimed',
 
   ACTION_SDK_READY: 'SDK_READY',
 
diff --git a/src/page/splash/index.js b/src/page/splash/index.js
index e9a3a3b..7e8e3b7 100644
--- a/src/page/splash/index.js
+++ b/src/page/splash/index.js
@@ -2,6 +2,7 @@ import { connect } from 'react-redux';
 import { SETTINGS, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux';
 import {
   doAuthenticate,
+  doClaimRewardType,
   doInstallNewWithParams,
   doFetchMySubscriptions,
   doFetchRewardedContent,
diff --git a/src/page/splash/view.js b/src/page/splash/view.js
index 83c93f7..5ad5265 100644
--- a/src/page/splash/view.js
+++ b/src/page/splash/view.js
@@ -159,6 +159,7 @@ class SplashScreen extends React.PureComponent {
                 this.getUserSettings();
               });
             });
+
             this.navigateToMain();
             return;
           }
diff --git a/yarn.lock b/yarn.lock
index 11f51b7..7a7426d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4599,9 +4599,9 @@ lbry-redux@lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017:
     reselect "^3.0.0"
     uuid "^3.3.2"
 
-lbryinc@lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955:
+lbryinc@lbryio/lbryinc#667024ebb7cb207609273174ca422cee47469270:
   version "0.0.1"
-  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/021ac75d9aa2db488cfff8e9be320402f038f955"
+  resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/667024ebb7cb207609273174ca422cee47469270"
   dependencies:
     reselect "^3.0.0"
 

From 7e1794ce29db42d2ae298184518b5ae63f7c8909 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Mon, 23 Mar 2020 09:42:32 +0100
Subject: [PATCH 10/15] fix publishes link. change minimum bid to 0.01.

---
 android                               |  2 +-
 src/component/modalRepostView/view.js |  2 +-
 src/component/modalTipView/index.js   |  7 +++----
 src/component/modalTipView/view.js    | 11 ++++++++++-
 src/page/channelCreator/view.js       |  6 +++---
 src/page/file/view.js                 | 12 ++++++++++--
 src/page/publish/view.js              |  2 +-
 src/page/publishes/view.js            |  2 +-
 src/page/subscriptions/index.js       |  2 ++
 src/page/subscriptions/view.js        | 23 ++++++++++++-----------
 src/styles/publish.js                 |  4 ++--
 11 files changed, 46 insertions(+), 27 deletions(-)

diff --git a/android b/android
index 4d1f142..5aa0513 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit 4d1f142f9cf4f221a2110b7d7aa77b9f42731253
+Subproject commit 5aa051332447a00c0b6586c31b34108f5c8c132d
diff --git a/src/component/modalRepostView/view.js b/src/component/modalRepostView/view.js
index e9fe577..b10bb96 100644
--- a/src/component/modalRepostView/view.js
+++ b/src/component/modalRepostView/view.js
@@ -17,7 +17,7 @@ export default class ModalRepostView extends React.PureComponent {
   state = {
     channelName: null,
     creditsInputFocused: false,
-    depositAmount: '0.1',
+    depositAmount: '0.01',
     repostName: null,
     repostStarted: false,
     showAdvanced: false,
diff --git a/src/component/modalTipView/index.js b/src/component/modalTipView/index.js
index 7eaf6e6..743c259 100644
--- a/src/component/modalTipView/index.js
+++ b/src/component/modalTipView/index.js
@@ -1,9 +1,11 @@
 import { connect } from 'react-redux';
 import { doSendTip, doToast, selectBalance } from 'lbry-redux';
+import { selectSdkReady } from 'redux/selectors/settings';
 import ModalTipView from './view';
 
 const select = state => ({
   balance: selectBalance(state),
+  sdkReady: selectSdkReady(state),
 });
 
 const perform = dispatch => ({
@@ -12,7 +14,4 @@ const perform = dispatch => ({
     dispatch(doSendTip(amount, claimId, isSupport, successCallback, errorCallback)),
 });
 
-export default connect(
-  select,
-  perform
-)(ModalTipView);
+export default connect(select, perform)(ModalTipView);
diff --git a/src/component/modalTipView/view.js b/src/component/modalTipView/view.js
index 9cdd5e1..3fcdd6f 100644
--- a/src/component/modalTipView/view.js
+++ b/src/component/modalTipView/view.js
@@ -18,9 +18,18 @@ export default class ModalTipView extends React.PureComponent {
   };
 
   handleSendTip = () => {
-    const { claim, balance, notify, onSendTipFailed, onSendTipSuccessful, sendTip } = this.props;
+    const { claim, balance, notify, onSendTipFailed, onSendTipSuccessful, sdkReady, sendTip } = this.props;
     const { tipAmount } = this.state;
 
+    if (!sdkReady) {
+      notify({
+        message: __(
+          'The background service is still initializing. You can still explore and watch content during the initialization process.',
+        ),
+      });
+      return;
+    }
+
     if (tipAmount > balance) {
       notify({
         message: 'Insufficient credits',
diff --git a/src/page/channelCreator/view.js b/src/page/channelCreator/view.js
index 7189ba2..a7f6400 100644
--- a/src/page/channelCreator/view.js
+++ b/src/page/channelCreator/view.js
@@ -47,7 +47,7 @@ export default class ChannelCreator extends React.PureComponent {
     channelNameUserEdited: false,
     newChannelTitle: '',
     newChannelName: '',
-    newChannelBid: 0.1,
+    newChannelBid: 0.01,
     addingChannel: false,
     creatingChannel: false,
     editChannelUrl: null,
@@ -280,7 +280,7 @@ export default class ChannelCreator extends React.PureComponent {
   handleCreateCancel = () => {
     const { clearChannelFormState } = this.props;
     clearChannelFormState(); // explicitly clear state on cancel?
-    this.setState({ showCreateChannel: false, newChannelName: '', newChannelBid: 0.1 });
+    this.setState({ showCreateChannel: false, newChannelName: '', newChannelBid: 0.01 });
   };
 
   handlePickerValueChange = (itemValue, itemIndex) => {
@@ -589,7 +589,7 @@ export default class ChannelCreator extends React.PureComponent {
       channelNameUserEdited: false,
       newChannelTitle: '',
       newChannelName: '',
-      newChannelBid: 0.1,
+      newChannelBid: 0.01,
       addingChannel: false,
       creatingChannel: false,
       newChannelNameError: '',
diff --git a/src/page/file/view.js b/src/page/file/view.js
index f98a408..6a62a05 100644
--- a/src/page/file/view.js
+++ b/src/page/file/view.js
@@ -820,7 +820,16 @@ class FilePage extends React.PureComponent {
   };
 
   onDownloadPressed = () => {
-    const { claim, title } = this.props;
+    const { claim, notify, sdkReady, title } = this.props;
+    if (!sdkReady) {
+      notify({
+        message: __(
+          'The background service is still initializing. You can still explore and watch content during the initialization process.',
+        ),
+      });
+      return;
+    }
+
     const fileSize = claim && claim.value && claim.value.source ? claim.value.source.size : 0;
     Alert.alert(
       __('Download file'),
@@ -1020,7 +1029,6 @@ class FilePage extends React.PureComponent {
       myClaimUris,
       navigation,
       position,
-      purchaseUri,
       pushDrawerStack,
       setPlayerVisible,
       thumbnail,
diff --git a/src/page/publish/view.js b/src/page/publish/view.js
index 70b53ca..26e308f 100644
--- a/src/page/publish/view.js
+++ b/src/page/publish/view.js
@@ -121,7 +121,7 @@ class PublishPage extends React.PureComponent {
 
     // input data
     hasEditedContentAddress: false,
-    bid: 0.1,
+    bid: 0.01,
     description: null,
     title: null,
     language: 'en',
diff --git a/src/page/publishes/view.js b/src/page/publishes/view.js
index 321c026..b43dcbf 100644
--- a/src/page/publishes/view.js
+++ b/src/page/publishes/view.js
@@ -194,7 +194,7 @@ class PublishesPage extends React.PureComponent {
                       });
                     } else {
                       // TODO: when shortUrl is available for my claims, navigate to that URL instead
-                      navigateToUri(navigation, item);
+                      navigateToUri(navigation, claim.permanent_url);
                     }
                   }
                 }}
diff --git a/src/page/subscriptions/index.js b/src/page/subscriptions/index.js
index 87af9d4..9ad5586 100644
--- a/src/page/subscriptions/index.js
+++ b/src/page/subscriptions/index.js
@@ -12,6 +12,7 @@ import {
   selectViewMode,
   selectFirstRunCompleted,
   selectShowSuggestedSubs,
+  selectUser,
 } from 'lbryinc';
 import { doToast, selectFetchingClaimSearch } from 'lbry-redux';
 import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
@@ -35,6 +36,7 @@ const select = state => ({
   showSuggestedSubs: selectShowSuggestedSubs(state),
   timeItem: selectTimeItem(state),
   sdkReady: selectSdkReady(state),
+  user: selectUser(state),
 });
 
 const perform = dispatch => ({
diff --git a/src/page/subscriptions/view.js b/src/page/subscriptions/view.js
index 4405026..f087914 100644
--- a/src/page/subscriptions/view.js
+++ b/src/page/subscriptions/view.js
@@ -38,6 +38,7 @@ class SubscriptionsPage extends React.PureComponent {
     showSortPicker: false,
     showTimePicker: false,
     showModalSuggestedSubs: false,
+    userEmailVerified: false,
     orderBy: ['release_time'],
     filteredChannels: [],
     currentSortByItem: Constants.CLAIM_SEARCH_SORT_BY_ITEMS[1], // should always default to sorting subscriptions by new
@@ -57,21 +58,14 @@ class SubscriptionsPage extends React.PureComponent {
   }
 
   onComponentFocused = () => {
-    const {
-      currentRoute,
-      doFetchMySubscriptions,
-      doFetchRecommendedSubscriptions,
-      doSetViewMode,
-      pushDrawerStack,
-      setPlayerVisible,
-      subscriptionsViewMode,
-    } = this.props;
+    const { currentRoute, doFetchMySubscriptions, pushDrawerStack, setPlayerVisible, user } = this.props;
 
     if (currentRoute === Constants.DRAWER_ROUTE_SUBSCRIPTIONS) {
       pushDrawerStack();
     }
     setPlayerVisible();
     NativeModules.Firebase.setCurrentScreen('Subscriptions');
+    this.setState({ userEmailVerified: user && user.has_verified_email });
 
     doFetchMySubscriptions();
   };
@@ -81,12 +75,19 @@ class SubscriptionsPage extends React.PureComponent {
   }
 
   componentWillReceiveProps(nextProps) {
-    const { currentRoute } = nextProps;
-    const { currentRoute: prevRoute } = this.props;
+    const { currentRoute, user } = nextProps;
+    const { currentRoute: prevRoute, doFetchMySubscriptions } = this.props;
     if (Constants.DRAWER_ROUTE_SUBSCRIPTIONS === currentRoute && currentRoute !== prevRoute) {
       this.onComponentFocused();
     }
 
+    if (user && user.has_verified_email && !this.state.userEmailVerified) {
+      // user just signed in
+      this.setState({ showingSuggestedSubs: false, userEmailVerified: true }, () => {
+        doFetchMySubscriptions();
+      });
+    }
+
     this.unsubscribeShortChannelUrls();
   }
 
diff --git a/src/styles/publish.js b/src/styles/publish.js
index 1e5096e..459ff99 100644
--- a/src/styles/publish.js
+++ b/src/styles/publish.js
@@ -445,8 +445,8 @@ const publishStyle = StyleSheet.create({
   },
   publishesFooter: {
     marginTop: 2,
-    marginLeft: 8,
-    marginRight: 8,
+    marginLeft: 16,
+    marginRight: 16,
   },
   publishesFooterButton: {
     alignSelf: 'flex-start',

From 33b4806c844aafb3f38670475ffed4d2a6cb1aed Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Mon, 23 Mar 2020 17:22:29 +0100
Subject: [PATCH 11/15] add values to liteFile state

---
 android                   |  2 +-
 src/page/liteFile/view.js | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/android b/android
index 5aa0513..cbc4a66 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit 5aa051332447a00c0b6586c31b34108f5c8c132d
+Subproject commit cbc4a662e670941b1c82aa6846ac56923c30af2f
diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js
index 82cf610..f2511a0 100644
--- a/src/page/liteFile/view.js
+++ b/src/page/liteFile/view.js
@@ -38,15 +38,19 @@ class LiteFilePage extends React.PureComponent {
 
   player = null;
 
+  startTime = null;
+
   state = {
     channelName: null,
     channelUrl: null,
-    title: null,
+    fileViewLogged: false,
     fullscreenMode: false,
+    playbackStarted: false,
     playerHeight: null,
     isLandscape: false,
     sdkReady: false, // TODO: progressively enable features (e.g. tip) when sdk is ready
     showRecommended: false,
+    title: null,
     viewCount: 0,
   };
 
@@ -127,6 +131,10 @@ class LiteFilePage extends React.PureComponent {
     );
   };
 
+  componentDidMount() {
+    this.startTime = Date.now();
+  }
+
   componentDidUpdate() {
     const { navigation } = this.props;
     const { uri } = navigation.state.params;

From 689e30a5f03ed5f247e0a1662e2b1428a5e99f9a Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Tue, 24 Mar 2020 16:17:33 +0100
Subject: [PATCH 12/15] display lbry.tv sync custody message (#134)

* display lbry.tv sync custody message
* rephrase text
---
 src/component/walletBalanceExtra/view.js | 66 +++++++++++++++---------
 src/component/walletSyncDriver/view.js   |  2 +-
 src/styles/wallet.js                     | 22 +++++++-
 3 files changed, 64 insertions(+), 26 deletions(-)

diff --git a/src/component/walletBalanceExtra/view.js b/src/component/walletBalanceExtra/view.js
index 59b26bd..564ef90 100644
--- a/src/component/walletBalanceExtra/view.js
+++ b/src/component/walletBalanceExtra/view.js
@@ -6,6 +6,7 @@ import Address from 'component/address';
 import Button from 'component/button';
 import Colors from 'styles/colors';
 import Icon from 'react-native-vector-icons/FontAwesome5';
+import Link from 'component/link';
 import walletStyle from 'styles/wallet';
 
 type Props = {
@@ -16,34 +17,53 @@ type Props = {
 
 class WalletBalanceExtra extends React.PureComponent<Props> {
   render() {
-    const { claimsBalance, supportsBalance, tipsBalance } = this.props;
+    const { claimsBalance, deviceWalletSynced, supportsBalance, tipsBalance } = this.props;
 
     return (
-      <View style={walletStyle.balanceExtraCard}>
-        <View style={walletStyle.walletExtraRow}>
-          <View style={walletStyle.walletExtraCol}>
-            <Icon style={walletStyle.walletExtraIcon} color={Colors.LbryGreen} name={'gift'} size={16} />
-            <Text style={walletStyle.walletExtraCaption}>{__('You also have')}</Text>
-            <View style={walletStyle.balanceRow}>
-              <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(tipsBalance), 2)}</Text>
-              <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
-            </View>
-            <Text style={walletStyle.text}>{__('in tips')}</Text>
-          </View>
+      <View style={walletStyle.balanceExtra}>
+        <View style={walletStyle.syncDriverCustody}>
+          <Text style={walletStyle.syncInfoText}>
+            {deviceWalletSynced
+              ? __('A backup of your wallet is synced with lbry.tv')
+              : __('Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.')}
+          </Text>
+          <Link
+            text={__('What does this mean?')}
+            href={
+              deviceWalletSynced
+                ? 'https://lbry.com/faq/account-sync'
+                : 'https://lbry.com/faq/how-to-backup-wallet#android'
+            }
+            style={walletStyle.syncInfoLink}
+          />
+        </View>
 
-          <View style={walletStyle.walletExtraCol}>
-            <Icon style={walletStyle.walletExtraIcon} color={Colors.LbryGreen} name={'lock'} size={16} />
-            <Text style={walletStyle.walletExtraCaption}>{__('You staked')}</Text>
-            <View style={walletStyle.balanceRow}>
-              <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(claimsBalance), 2)}</Text>
-              <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
+        <View style={walletStyle.balanceExtraCard}>
+          <View style={walletStyle.walletExtraRow}>
+            <View style={walletStyle.walletExtraCol}>
+              <Icon style={walletStyle.walletExtraIcon} color={Colors.LbryGreen} name={'gift'} size={16} />
+              <Text style={walletStyle.walletExtraCaption}>{__('You also have')}</Text>
+              <View style={walletStyle.balanceRow}>
+                <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(tipsBalance), 2)}</Text>
+                <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
+              </View>
+              <Text style={walletStyle.text}>{__('in tips')}</Text>
             </View>
-            <Text style={walletStyle.text}>{__('in your publishes')}</Text>
-            <View style={[walletStyle.balanceRow, walletStyle.walletExtraTopMargin]}>
-              <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(supportsBalance), 2)}</Text>
-              <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
+
+            <View style={walletStyle.walletExtraCol}>
+              <Icon style={walletStyle.walletExtraIcon} color={Colors.LbryGreen} name={'lock'} size={16} />
+              <Text style={walletStyle.walletExtraCaption}>{__('You staked')}</Text>
+              <View style={walletStyle.balanceRow}>
+                <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(claimsBalance), 2)}</Text>
+                <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
+              </View>
+              <Text style={walletStyle.text}>{__('in your publishes')}</Text>
+              <View style={[walletStyle.balanceRow, walletStyle.walletExtraTopMargin]}>
+                <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(supportsBalance), 2)}</Text>
+                <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
+              </View>
+              <Text style={walletStyle.text}>{__('in your supports')}</Text>
             </View>
-            <Text style={walletStyle.text}>{__('in your supports')}</Text>
           </View>
         </View>
       </View>
diff --git a/src/component/walletSyncDriver/view.js b/src/component/walletSyncDriver/view.js
index 93291d1..455621a 100644
--- a/src/component/walletSyncDriver/view.js
+++ b/src/component/walletSyncDriver/view.js
@@ -27,7 +27,7 @@ class WalletSyncDriver extends React.PureComponent<Props> {
             },
           },
         ],
-        { cancelable: true }
+        { cancelable: true },
       );
     }
   };
diff --git a/src/styles/wallet.js b/src/styles/wallet.js
index 12c074d..63bc0c7 100644
--- a/src/styles/wallet.js
+++ b/src/styles/wallet.js
@@ -103,10 +103,12 @@ const walletStyle = StyleSheet.create({
     marginLeft: 16,
     marginRight: 16,
   },
-  balanceExtraCard: {
-    backgroundColor: Colors.White,
+  balanceExtra: {
     marginLeft: 16,
     marginRight: 16,
+  },
+  balanceExtraCard: {
+    backgroundColor: Colors.White,
     padding: 16,
   },
   balanceBackground: {
@@ -252,6 +254,22 @@ const walletStyle = StyleSheet.create({
     borderBottomWidth: 1,
     borderBottomColor: Colors.PageBackground,
   },
+  syncDriverCustody: {
+    backgroundColor: Colors.LbryGreen,
+    padding: 16,
+  },
+  syncInfoText: {
+    color: Colors.White,
+    fontFamily: 'Inter-Regular',
+    fontSize: 16,
+    marginBottom: 8,
+  },
+  syncInfoLink: {
+    color: Colors.White,
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    textDecorationLine: 'underline',
+  },
   syncDriverLink: {
     color: Colors.LbryGreen,
     fontFamily: 'Inter-Regular',

From 89a9571ce1ed9695e42a5ad883051ee2b53b9db7 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Thu, 26 Mar 2020 15:13:56 +0100
Subject: [PATCH 13/15] Display USD (#135)

* show usd values for lbc on wallet and rewards pages
* link to publish page
* update phrasing
* don't show rewards nag if user is not interested
---
 src/component/drawerContent/index.js          |  6 +-
 src/component/drawerContent/view.js           | 25 ++++++-
 src/component/floatingWalletBalance/index.js  |  7 +-
 src/component/rewardCard/view.js              | 19 +++--
 src/component/rewardEnrolment/view.js         |  9 ++-
 .../suggestedSubscriptionsGrid/view.js        |  6 +-
 src/component/walletBalance/index.js          |  5 +-
 src/component/walletBalance/view.js           | 25 ++++++-
 src/component/walletBalanceExtra/view.js      | 75 ++++++++++++++-----
 src/page/rewards/view.js                      | 20 +++--
 src/page/subscriptions/index.js               |  3 +
 src/page/subscriptions/view.js                | 62 +++++++++++++--
 src/page/wallet/view.js                       |  2 +-
 src/styles/reward.js                          | 11 +++
 src/styles/subscriptions.js                   |  8 +-
 src/styles/tag.js                             |  2 +-
 src/styles/wallet.js                          | 40 ++++++++++
 src/utils/helper.js                           |  7 ++
 18 files changed, 270 insertions(+), 62 deletions(-)

diff --git a/src/component/drawerContent/index.js b/src/component/drawerContent/index.js
index b2e48fb..e4a5531 100644
--- a/src/component/drawerContent/index.js
+++ b/src/component/drawerContent/index.js
@@ -1,12 +1,14 @@
 import { connect } from 'react-redux';
-import { doToast, selectMyChannelClaims } from 'lbry-redux';
-import { selectUser } from 'lbryinc';
+import { doToast, selectBalance, selectMyChannelClaims } from 'lbry-redux';
+import { selectUnclaimedRewardValue, selectUser } from 'lbryinc';
 import { selectSdkReady } from 'redux/selectors/settings';
 import DrawerContent from './view';
 
 const select = state => ({
+  balance: selectBalance(state),
   channels: selectMyChannelClaims(state),
   sdkReady: selectSdkReady(state),
+  unclaimedRewardAmount: selectUnclaimedRewardValue(state),
   user: selectUser(state),
 });
 
diff --git a/src/component/drawerContent/view.js b/src/component/drawerContent/view.js
index 5b26c22..cf224c2 100644
--- a/src/component/drawerContent/view.js
+++ b/src/component/drawerContent/view.js
@@ -6,6 +6,8 @@ import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import Icon from 'react-native-vector-icons/FontAwesome5';
 import channelIconStyle from 'styles/channelIcon';
 import discoverStyle from 'styles/discover';
+import { Lbryio } from 'lbryinc';
+import { formatUsd } from 'utils/helper';
 
 const groupedMenuItems = {
   'Find content': [
@@ -42,6 +44,18 @@ const routesRequiringSdkReady = [
 ];
 
 class DrawerContent extends React.PureComponent {
+  state = {
+    usdExchangeRate: 0,
+  };
+
+  componentDidMount() {
+    Lbryio.getExchangeRates().then(rates => {
+      if (!isNaN(rates.LBC_USD)) {
+        this.setState({ usdExchangeRate: rates.LBC_USD });
+      }
+    });
+  }
+
   getAvatarImageUrl = () => {
     const { channels = [] } = this.props;
     if (channels) {
@@ -82,7 +96,7 @@ class DrawerContent extends React.PureComponent {
   };
 
   render() {
-    const { activeTintColor, navigation, user, onItemPress } = this.props;
+    const { activeTintColor, balance, navigation, unclaimedRewardAmount, user, onItemPress } = this.props;
     const { state } = navigation;
 
     const activeItemKey = state.routes[state.index] ? state.routes[state.index].key : null;
@@ -189,6 +203,15 @@ class DrawerContent extends React.PureComponent {
                         </View>
                         <Text style={[discoverStyle.menuItem, focused ? discoverStyle.menuItemFocused : null]}>
                           {__(item.label)}
+                          {item.label === 'Wallet' && this.state.usdExchangeRate > 0 && (
+                            <Text> ({formatUsd(parseFloat(balance) * parseFloat(this.state.usdExchangeRate))})</Text>
+                          )}
+                          {item.label === 'Rewards' && this.state.usdExchangeRate > 0 && (
+                            <Text>
+                              {' '}
+                              ({formatUsd(parseFloat(unclaimedRewardAmount) * parseFloat(this.state.usdExchangeRate))})
+                            </Text>
+                          )}
                         </Text>
                       </TouchableOpacity>
                     );
diff --git a/src/component/floatingWalletBalance/index.js b/src/component/floatingWalletBalance/index.js
index cd88305..29aa00a 100644
--- a/src/component/floatingWalletBalance/index.js
+++ b/src/component/floatingWalletBalance/index.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
 import { makeSelectClientSetting } from 'redux/selectors/settings';
 import { selectBalance } from 'lbry-redux';
 import { selectUnclaimedRewardValue } from 'lbryinc';
-import Constants from 'constants';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 import FloatingWalletBalance from './view';
 
 const select = state => ({
@@ -11,7 +11,4 @@ const select = state => ({
   rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state),
 });
 
-export default connect(
-  select,
-  null
-)(FloatingWalletBalance);
+export default connect(select, null)(FloatingWalletBalance);
diff --git a/src/component/rewardCard/view.js b/src/component/rewardCard/view.js
index 87eceaa..eab3b70 100644
--- a/src/component/rewardCard/view.js
+++ b/src/component/rewardCard/view.js
@@ -1,10 +1,11 @@
 // @flow
 import React from 'react';
 import { ActivityIndicator, Text, TouchableOpacity, View } from 'react-native';
-import Colors from '../../styles/colors';
+import { formatUsd } from 'utils/helper';
+import Colors from 'styles/colors';
 import Icon from 'react-native-vector-icons/FontAwesome5';
-import Link from '../link';
-import rewardStyle from '../../styles/reward';
+import Link from 'component/link';
+import rewardStyle from 'styles/reward';
 
 type Props = {
   canClaim: boolean,
@@ -61,7 +62,7 @@ class RewardCard extends React.PureComponent<Props> {
     if (reward) {
       const claimed = !!reward.transaction_id;
       if (!claimed && reward.reward_range && reward.reward_range.includes('-')) {
-        return reward.reward_range.split('-')[0] + '+'; // ex: 5+
+        return reward.reward_range.split('-')[1];
       } else if (reward.reward_amount > 0) {
         return reward.reward_amount;
       }
@@ -72,7 +73,7 @@ class RewardCard extends React.PureComponent<Props> {
   };
 
   render() {
-    const { canClaim, isPending, onClaimPress, reward } = this.props;
+    const { canClaim, isPending, onClaimPress, reward, usdExchangeRate } = this.props;
     const claimed = !!reward.transaction_id;
 
     return (
@@ -117,8 +118,16 @@ class RewardCard extends React.PureComponent<Props> {
           )}
         </View>
         <View style={rewardStyle.rightCol}>
+          {reward.reward_range && reward.reward_range.indexOf('-') > -1 && (
+            <Text style={rewardStyle.rightColHeader}>{__('up to')}</Text>
+          )}
           <Text style={rewardStyle.rewardAmount}>{this.getDisplayAmount()}</Text>
           <Text style={rewardStyle.rewardCurrency}>LBC</Text>
+          {usdExchangeRate > 0 && (
+            <Text style={rewardStyle.rewardUsd}>
+              &asymp;{formatUsd(parseFloat(this.getDisplayAmount()) * parseFloat(usdExchangeRate))}
+            </Text>
+          )}
         </View>
       </TouchableOpacity>
     );
diff --git a/src/component/rewardEnrolment/view.js b/src/component/rewardEnrolment/view.js
index a010ca9..ff5a9f6 100644
--- a/src/component/rewardEnrolment/view.js
+++ b/src/component/rewardEnrolment/view.js
@@ -7,6 +7,7 @@ import Link from 'component/link';
 import Colors from 'styles/colors';
 import Icon from 'react-native-vector-icons/FontAwesome5';
 import rewardStyle from 'styles/reward';
+import { formatUsd } from '../../utils/helper';
 
 class RewardEnrolment extends React.Component {
   componentDidMount() {
@@ -29,7 +30,7 @@ class RewardEnrolment extends React.Component {
   };
 
   render() {
-    const { fetching, navigation, unclaimedRewardAmount, user } = this.props;
+    const { unclaimedRewardAmount, usdExchangeRate } = this.props;
 
     return (
       <View style={rewardStyle.enrollContainer}>
@@ -43,9 +44,11 @@ class RewardEnrolment extends React.Component {
 
         <View style={rewardStyle.onboarding}>
           <Text style={rewardStyle.enrollDescText}>
-            {__('LBRY credits allow you to purchase content, publish content, and influence the network.')}
+            {__('LBRY credits allow you to publish or purchase content.')}
             {'\n\n'}
-            {__('You get credits for free for providing an email address and taking other basic actions.')}
+            {__('You can obtain free credits worth %amount% after you provide an email address.', {
+              amount: formatUsd(parseFloat(unclaimedRewardAmount) * parseFloat(usdExchangeRate)),
+            })}
             {'\n\n'}
             <Link style={rewardStyle.learnMoreLink} text={__('Learn more')} onPress={this.onLearnMorePressed} />.
           </Text>
diff --git a/src/component/suggestedSubscriptionsGrid/view.js b/src/component/suggestedSubscriptionsGrid/view.js
index a046392..d0d1e08 100644
--- a/src/component/suggestedSubscriptionsGrid/view.js
+++ b/src/component/suggestedSubscriptionsGrid/view.js
@@ -58,7 +58,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
     const uris = claimSearchByQuery[claimSearchKey];
     if (
       lastPageReached[claimSearchKey] ||
-      ((uris.length > 0 && uris.length < suggestedPageSize) || uris.length >= softLimit)
+      (uris.length > 0 && uris.length < suggestedPageSize) || uris.length >= softLimit
     ) {
       return;
     }
@@ -81,7 +81,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
   }
 
   render() {
-    const { claimSearchByQuery, suggested, inModal, navigation } = this.props;
+    const { claimSearchByQuery, inModal, navigation } = this.props;
     const options = this.buildClaimSearchOptions();
     const claimSearchKey = createNormalizedClaimSearchKey(options);
     const claimSearchUris = claimSearchByQuery[claimSearchKey];
@@ -92,7 +92,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
         maxToRenderPerBatch={48}
         removeClippedSubviews
         itemDimension={120}
-        spacing={2}
+        spacing={1}
         items={claimSearchUris}
         style={inModal ? subscriptionsStyle.modalScrollContainer : subscriptionsStyle.scrollContainer}
         contentContainerStyle={
diff --git a/src/component/walletBalance/index.js b/src/component/walletBalance/index.js
index 6e136f1..9f69e65 100644
--- a/src/component/walletBalance/index.js
+++ b/src/component/walletBalance/index.js
@@ -6,7 +6,4 @@ const select = state => ({
   balance: selectBalance(state),
 });
 
-export default connect(
-  select,
-  null
-)(WalletBalance);
+export default connect(select, null)(WalletBalance);
diff --git a/src/component/walletBalance/view.js b/src/component/walletBalance/view.js
index 3ef9bf0..f620e9a 100644
--- a/src/component/walletBalance/view.js
+++ b/src/component/walletBalance/view.js
@@ -1,9 +1,9 @@
 // @flow
 import React from 'react';
 import { Image, Text, View } from 'react-native';
-import { Lbry, formatCredits } from 'lbry-redux';
-import Address from 'component/address';
-import Button from 'component/button';
+import { formatCredits } from 'lbry-redux';
+import { Lbryio } from 'lbryinc';
+import { formatUsd } from 'utils/helper';
 import walletStyle from 'styles/wallet';
 
 type Props = {
@@ -11,6 +11,18 @@ type Props = {
 };
 
 class WalletBalance extends React.PureComponent<Props> {
+  state = {
+    usdExchangeRate: 0,
+  };
+
+  componentDidMount() {
+    Lbryio.getExchangeRates().then(rates => {
+      if (!isNaN(rates.LBC_USD)) {
+        this.setState({ usdExchangeRate: rates.LBC_USD });
+      }
+    });
+  }
+
   render() {
     const { balance } = this.props;
     return (
@@ -21,6 +33,13 @@ class WalletBalance extends React.PureComponent<Props> {
         <Text style={walletStyle.balance}>
           {(balance || balance === 0) && formatCredits(parseFloat(balance), 2) + ' LBC'}
         </Text>
+        <Text style={walletStyle.usdBalance}>
+          {this.state.usdExchangeRate > 0 && (
+            <Text>
+              &asymp;{formatUsd(isNaN(balance) ? 0 : parseFloat(balance) * parseFloat(this.state.usdExchangeRate))}
+            </Text>
+          )}
+        </Text>
       </View>
     );
   }
diff --git a/src/component/walletBalanceExtra/view.js b/src/component/walletBalanceExtra/view.js
index 564ef90..067cc43 100644
--- a/src/component/walletBalanceExtra/view.js
+++ b/src/component/walletBalanceExtra/view.js
@@ -1,13 +1,14 @@
 // @flow
 import React from 'react';
-import { Image, Text, View } from 'react-native';
-import { Lbry, formatCredits } from 'lbry-redux';
-import Address from 'component/address';
-import Button from 'component/button';
+import { Text, View } from 'react-native';
+import { formatCredits } from 'lbry-redux';
+import { Lbryio } from 'lbryinc';
+import { formatUsd } from 'utils/helper';
 import Colors from 'styles/colors';
 import Icon from 'react-native-vector-icons/FontAwesome5';
 import Link from 'component/link';
 import walletStyle from 'styles/wallet';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 
 type Props = {
   claimsBalance: number,
@@ -16,25 +17,37 @@ type Props = {
 };
 
 class WalletBalanceExtra extends React.PureComponent<Props> {
+  state = {
+    usdExchangeRate: 0,
+  };
+
+  componentDidMount() {
+    Lbryio.getExchangeRates().then(rates => {
+      if (!isNaN(rates.LBC_USD)) {
+        this.setState({ usdExchangeRate: rates.LBC_USD });
+      }
+    });
+  }
+
   render() {
-    const { claimsBalance, deviceWalletSynced, supportsBalance, tipsBalance } = this.props;
+    const { claimsBalance, deviceWalletSynced, navigation, supportsBalance, tipsBalance } = this.props;
 
     return (
       <View style={walletStyle.balanceExtra}>
-        <View style={walletStyle.syncDriverCustody}>
-          <Text style={walletStyle.syncInfoText}>
-            {deviceWalletSynced
-              ? __('A backup of your wallet is synced with lbry.tv')
-              : __('Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.')}
+        <View style={walletStyle.usdInfoCard}>
+          <Text style={walletStyle.usdInfoText}>
+            You can convert your credits to USD and withdraw the converted amount using an exchange.{' '}
+            <Link
+              style={walletStyle.usdConvertFaqLink}
+              href={'https://lbry.com/faq/exchanges'}
+              text={__('Learn more')}
+            />
+            .
           </Text>
           <Link
-            text={__('What does this mean?')}
-            href={
-              deviceWalletSynced
-                ? 'https://lbry.com/faq/account-sync'
-                : 'https://lbry.com/faq/how-to-backup-wallet#android'
-            }
-            style={walletStyle.syncInfoLink}
+            style={walletStyle.usdConvertLink}
+            href={'https://bittrex.com/Account/Register?referralCode=4M1-P30-BON'}
+            text={__('Convert credits to USD on Bittrex')}
           />
         </View>
 
@@ -47,7 +60,18 @@ class WalletBalanceExtra extends React.PureComponent<Props> {
                 <Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(tipsBalance), 2)}</Text>
                 <Text style={walletStyle.walletExtraCurrency}>LBC</Text>
               </View>
+              <Text style={walletStyle.usdWalletExtraBalance}>
+                &asymp;{formatUsd(parseFloat(tipsBalance) * parseFloat(this.state.usdExchangeRate))}
+              </Text>
               <Text style={walletStyle.text}>{__('in tips')}</Text>
+
+              <Link
+                style={walletStyle.earnTipsLink}
+                onPress={() => {
+                  navigation.navigate({ routeName: Constants.DRAWER_ROUTE_PUBLISH });
+                }}
+                text={__('Earn more tips by uploading cool videos')}
+              />
             </View>
 
             <View style={walletStyle.walletExtraCol}>
@@ -66,6 +90,23 @@ class WalletBalanceExtra extends React.PureComponent<Props> {
             </View>
           </View>
         </View>
+
+        <View style={walletStyle.syncDriverCustody}>
+          <Text style={walletStyle.syncInfoText}>
+            {deviceWalletSynced
+              ? __('A backup of your wallet is synced with lbry.tv')
+              : __('Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.')}
+          </Text>
+          <Link
+            text={__('What does this mean?')}
+            href={
+              deviceWalletSynced
+                ? 'https://lbry.com/faq/account-sync'
+                : 'https://lbry.com/faq/how-to-backup-wallet#android'
+            }
+            style={walletStyle.syncInfoLink}
+          />
+        </View>
       </View>
     );
   }
diff --git a/src/page/rewards/view.js b/src/page/rewards/view.js
index 7bad9ac..4edec91 100644
--- a/src/page/rewards/view.js
+++ b/src/page/rewards/view.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import { Lbry } from 'lbry-redux';
+import { Lbryio } from 'lbryinc';
 import { ActivityIndicator, NativeModules, ScrollView, Text, View } from 'react-native';
 import Colors from 'styles/colors';
 import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
@@ -17,13 +17,14 @@ const FILTER_CLAIMED = 'claimed';
 
 class RewardsPage extends React.PureComponent {
   state = {
+    currentFilter: FILTER_AVAILABLE,
+    firstRewardClaimed: false,
     isEmailVerified: false,
     isIdentityVerified: false,
     isRewardApproved: false,
-    verifyRequestStarted: false,
     revealVerification: true,
-    firstRewardClaimed: false,
-    currentFilter: FILTER_AVAILABLE,
+    usdExchangeRate: 0,
+    verifyRequestStarted: false,
   };
 
   scrollView = null;
@@ -48,6 +49,12 @@ class RewardsPage extends React.PureComponent {
     setPlayerVisible();
     NativeModules.Firebase.setCurrentScreen('Rewards');
 
+    Lbryio.getExchangeRates().then(rates => {
+      if (!isNaN(rates.LBC_USD)) {
+        this.setState({ usdExchangeRate: rates.LBC_USD });
+      }
+    });
+
     fetchRewards();
 
     this.setState({
@@ -158,6 +165,7 @@ class RewardsPage extends React.PureComponent {
             canClaim={!isNotEligible}
             reward={reward}
             reward_type={reward.reward_type}
+            usdExchangeRate={this.state.usdExchangeRate}
           />
         ))}
         <CustomRewardCard canClaim={!isNotEligible} showVerification={this.showVerification} />
@@ -211,7 +219,9 @@ class RewardsPage extends React.PureComponent {
     return (
       <View style={rewardStyle.container}>
         <UriBar navigation={navigation} />
-        {(!this.state.isEmailVerified || !this.state.isRewardApproved) && <RewardEnrolment navigation={navigation} />}
+        {(!this.state.isEmailVerified || !this.state.isRewardApproved) && (
+          <RewardEnrolment usdExchangeRate={this.state.usdExchangeRate} navigation={navigation} />
+        )}
 
         {this.state.isEmailVerified && this.state.isRewardApproved && (
           <ScrollView
diff --git a/src/page/subscriptions/index.js b/src/page/subscriptions/index.js
index 9ad5586..8ed92bb 100644
--- a/src/page/subscriptions/index.js
+++ b/src/page/subscriptions/index.js
@@ -12,6 +12,7 @@ import {
   selectViewMode,
   selectFirstRunCompleted,
   selectShowSuggestedSubs,
+  selectUnclaimedRewardValue,
   selectUser,
 } from 'lbryinc';
 import { doToast, selectFetchingClaimSearch } from 'lbry-redux';
@@ -33,9 +34,11 @@ const select = state => ({
   unreadSubscriptions: selectUnreadSubscriptions(state),
   viewMode: selectViewMode(state),
   firstRunCompleted: selectFirstRunCompleted(state),
+  rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state),
   showSuggestedSubs: selectShowSuggestedSubs(state),
   timeItem: selectTimeItem(state),
   sdkReady: selectSdkReady(state),
+  unclaimedRewardAmount: selectUnclaimedRewardValue(state),
   user: selectUser(state),
 });
 
diff --git a/src/page/subscriptions/view.js b/src/page/subscriptions/view.js
index f087914..4a48f01 100644
--- a/src/page/subscriptions/view.js
+++ b/src/page/subscriptions/view.js
@@ -11,7 +11,7 @@ import {
   View,
 } from 'react-native';
 import { buildURI, parseURI } from 'lbry-redux';
-import { getOrderBy } from 'utils/helper';
+import { formatUsd, getOrderBy } from 'utils/helper';
 import AsyncStorage from '@react-native-community/async-storage';
 import moment from 'moment';
 import Button from 'component/button';
@@ -31,17 +31,21 @@ import SuggestedSubscriptions from 'component/suggestedSubscriptions';
 import SuggestedSubscriptionsGrid from 'component/suggestedSubscriptionsGrid';
 import UriBar from 'component/uriBar';
 import SdkLoadingStatus from 'component/sdkLoadingStatus';
+import Snackbar from 'react-native-snackbar';
+import { Lbryio } from 'lbryinc';
 
 class SubscriptionsPage extends React.PureComponent {
   state = {
+    currentSortByItem: Constants.CLAIM_SEARCH_SORT_BY_ITEMS[1], // should always default to sorting subscriptions by new
+    filteredChannels: [],
+    orderBy: ['release_time'],
+    showRewardsNag: true,
     showingSuggestedSubs: false,
     showSortPicker: false,
     showTimePicker: false,
     showModalSuggestedSubs: false,
+    usdExchangeRate: 0,
     userEmailVerified: false,
-    orderBy: ['release_time'],
-    filteredChannels: [],
-    currentSortByItem: Constants.CLAIM_SEARCH_SORT_BY_ITEMS[1], // should always default to sorting subscriptions by new
   };
 
   didFocusListener;
@@ -58,15 +62,25 @@ class SubscriptionsPage extends React.PureComponent {
   }
 
   onComponentFocused = () => {
-    const { currentRoute, doFetchMySubscriptions, pushDrawerStack, setPlayerVisible, user } = this.props;
+    const { currentRoute, doFetchMySubscriptions, pushDrawerStack, sdkReady, setPlayerVisible, user } = this.props;
 
     if (currentRoute === Constants.DRAWER_ROUTE_SUBSCRIPTIONS) {
       pushDrawerStack();
     }
     setPlayerVisible();
     NativeModules.Firebase.setCurrentScreen('Subscriptions');
-    this.setState({ userEmailVerified: user && user.has_verified_email });
 
+    Lbryio.getExchangeRates().then(rates => {
+      if (!isNaN(rates.LBC_USD)) {
+        this.setState({ usdExchangeRate: rates.LBC_USD }, () => {
+          if (sdkReady && parseFloat(this.state.usdExchangeRate) > 0 && user && !user.is_reward_approved) {
+            this.showRewardsAvailable();
+          }
+        });
+      }
+    });
+
+    this.setState({ userEmailVerified: user && user.has_verified_email });
     doFetchMySubscriptions();
   };
 
@@ -75,7 +89,7 @@ class SubscriptionsPage extends React.PureComponent {
   }
 
   componentWillReceiveProps(nextProps) {
-    const { currentRoute, user } = nextProps;
+    const { currentRoute, user, sdkReady } = nextProps;
     const { currentRoute: prevRoute, doFetchMySubscriptions } = this.props;
     if (Constants.DRAWER_ROUTE_SUBSCRIPTIONS === currentRoute && currentRoute !== prevRoute) {
       this.onComponentFocused();
@@ -88,9 +102,43 @@ class SubscriptionsPage extends React.PureComponent {
       });
     }
 
+    if (
+      sdkReady &&
+      parseFloat(this.state.usdExchangeRate) > 0 &&
+      this.state.showRewardsNag &&
+      user &&
+      !user.is_reward_approved
+    ) {
+      this.showRewardsAvailable();
+    }
+
     this.unsubscribeShortChannelUrls();
   }
 
+  showRewardsAvailable = () => {
+    const { navigation, unclaimedRewardAmount, rewardsNotInterested } = this.props;
+    if (rewardsNotInterested) {
+      this.setState({ showRewardsNag: false });
+      return;
+    }
+
+    this.setState({ showRewardsNag: false }, () => {
+      Snackbar.show({
+        title: __('Did you know that you can earn free credits worth up to %amount%?', {
+          amount: formatUsd(parseFloat(this.state.usdExchangeRate) * parseFloat(unclaimedRewardAmount)),
+        }),
+        duration: Snackbar.LENGTH_LONG,
+        action: {
+          title: __('SHOW ME'),
+          color: Colors.LbryGreen,
+          onPress: () => {
+            navigation.navigate({ routeName: Constants.DRAWER_ROUTE_REWARDS });
+          },
+        },
+      });
+    });
+  };
+
   handleSortByItemSelected = item => {
     this.setState({ currentSortByItem: item, orderBy: getOrderBy(item), showSortPicker: false });
   };
diff --git a/src/page/wallet/view.js b/src/page/wallet/view.js
index 4996426..ed6e9a6 100644
--- a/src/page/wallet/view.js
+++ b/src/page/wallet/view.js
@@ -94,7 +94,7 @@ class WalletPage extends React.PureComponent {
         >
           {!rewardsNotInterested && (!balance || balance === 0) && <WalletRewardsDriver navigation={navigation} />}
           <WalletBalance />
-          <WalletBalanceExtra />
+          <WalletBalanceExtra navigation={navigation} />
           <WalletAddress />
           <WalletSend />
           <TransactionListRecent navigation={navigation} />
diff --git a/src/styles/reward.js b/src/styles/reward.js
index f4b1178..aa5d603 100644
--- a/src/styles/reward.js
+++ b/src/styles/reward.js
@@ -147,6 +147,10 @@ const rewardStyle = StyleSheet.create({
     width: '18%',
     alignItems: 'center',
   },
+  rightColHeader: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 12,
+  },
   rewardAmount: {
     fontFamily: 'Inter-Regular',
     fontSize: 26,
@@ -154,6 +158,7 @@ const rewardStyle = StyleSheet.create({
   },
   rewardCurrency: {
     fontFamily: 'Inter-Regular',
+    fontSize: 12,
   },
   rewardTitle: {
     fontFamily: 'Inter-Regular',
@@ -322,6 +327,12 @@ const rewardStyle = StyleSheet.create({
   activeFilterLink: {
     fontFamily: 'Inter-SemiBold',
   },
+  rewardUsd: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 12,
+    color: Colors.DescriptionGrey,
+    marginTop: 6,
+  },
 });
 
 export default rewardStyle;
diff --git a/src/styles/subscriptions.js b/src/styles/subscriptions.js
index 2a3a47d..5c03cc2 100644
--- a/src/styles/subscriptions.js
+++ b/src/styles/subscriptions.js
@@ -192,8 +192,6 @@ const subscriptionsStyle = StyleSheet.create({
   suggestedItem: {
     alignItems: 'center',
     marginBottom: 16,
-    marginLeft: 16,
-    marginRight: 16,
     height: 140,
   },
   suggestedItemThumbnailContainer: {
@@ -209,8 +207,8 @@ const subscriptionsStyle = StyleSheet.create({
     height: '100%',
   },
   suggestedItemDetails: {
-    marginLeft: 16,
-    marginRight: 16,
+    marginLeft: 8,
+    marginRight: 8,
     alignItems: 'center',
   },
   suggestedItemSubscribe: {
@@ -229,7 +227,7 @@ const subscriptionsStyle = StyleSheet.create({
   suggestedItemTitle: {
     fontFamily: 'Inter-Regular',
     textAlign: 'center',
-    fontSize: 14,
+    fontSize: 13,
     marginTop: 4,
     marginBottom: 2,
   },
diff --git a/src/styles/tag.js b/src/styles/tag.js
index e028410..15bee52 100644
--- a/src/styles/tag.js
+++ b/src/styles/tag.js
@@ -23,7 +23,7 @@ const tagStyle = StyleSheet.create({
   },
   text: {
     fontFamily: 'Inter-Regular',
-    fontSize: 14,
+    fontSize: 12,
     marginRight: 8,
   },
   tagResultsList: {
diff --git a/src/styles/wallet.js b/src/styles/wallet.js
index 63bc0c7..6b037df 100644
--- a/src/styles/wallet.js
+++ b/src/styles/wallet.js
@@ -137,6 +137,13 @@ const walletStyle = StyleSheet.create({
     fontFamily: 'Inter-Bold',
     fontSize: 36,
     marginLeft: 16,
+  },
+  usdBalance: {
+    color: Colors.White,
+    fontFamily: 'Inter-Regular',
+    fontSize: 20,
+    marginLeft: 16,
+    marginTop: 2,
     marginBottom: 16,
   },
   balanceFocus: {
@@ -402,6 +409,11 @@ const walletStyle = StyleSheet.create({
     fontFamily: 'Inter-SemiBold',
     fontSize: 28,
   },
+  usdWalletExtraBalance: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 16,
+    color: Colors.DescriptionGrey,
+  },
   balanceRow: {
     flexDirection: 'row',
     alignItems: 'center',
@@ -424,6 +436,34 @@ const walletStyle = StyleSheet.create({
     left: 0,
     top: 0,
   },
+  usdInfoCard: {
+    backgroundColor: Colors.White,
+    padding: 16,
+    borderBottomColor: Colors.VeryLightGrey,
+    borderBottomWidth: 1,
+  },
+  usdInfoText: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    marginBottom: 8,
+  },
+  usdConvertLink: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 16,
+    color: Colors.LbryGreen,
+  },
+  usdConvertFaqLink: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    color: Colors.LbryGreen,
+  },
+  earnTipsLink: {
+    fontFamily: 'Inter-Regular',
+    fontSize: 14,
+    color: Colors.LbryGreen,
+    marginTop: 12,
+    marginRight: 16,
+  },
 });
 
 export default walletStyle;
diff --git a/src/utils/helper.js b/src/utils/helper.js
index 756826c..66d2e2a 100644
--- a/src/utils/helper.js
+++ b/src/utils/helper.js
@@ -436,3 +436,10 @@ export function fetchReferralCode(successCallback, errorCallback) {
 export function decode(value) {
   return decodeURIComponent(value).replace(/\+/g, ' ');
 }
+
+export function formatUsd(value) {
+  if (isNaN(parseFloat(value))) {
+    value = 0;
+  }
+  return '$' + parseFloat(value).toFixed(2);
+}

From 47c6fb5889bee19f093b97916adbd99256ed1ff4 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Thu, 26 Mar 2020 15:46:33 +0100
Subject: [PATCH 14/15] update app strings

---
 lbry-app-strings.json | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/lbry-app-strings.json b/lbry-app-strings.json
index 5cf831d..47795ae 100644
--- a/lbry-app-strings.json
+++ b/lbry-app-strings.json
@@ -304,5 +304,23 @@
   "This content cannot be viewed at this time. Please try again in a bit.": "This content cannot be viewed at this time. Please try again in a bit.",
   "Download file": "Download file",
   "Save %title% (%size%) to your device": "Save %title% (%size%) to your device",
-  "Save \"%title%\" (%size%) to your device": "Save \"%title%\" (%size%) to your device"
+  "Save \"%title%\" (%size%) to your device": "Save \"%title%\" (%size%) to your device",
+  "Find Channels to follow": "Find Channels to follow",
+  "LBRY works better if you follow at least 5 creators you like. Sign in to show creators you follow if you already have an account.": "LBRY works better if you follow at least 5 creators you like. Sign in to show creators you follow if you already have an account.",
+  "%remaining% more...": "%remaining% more...",
+  "Did you know that you can earn free credits worth up to %amount%?": "Did you know that you can earn free credits worth up to %amount%?",
+  "SHOW ME": "SHOW ME",
+  "Convert credits to USD on Bittrex": "Convert credits to USD on Bittrex",
+  "You also have": "You also have",
+  "in tips": "in tips",
+  "Earn more tips by uploading cool videos": "Earn more tips by uploading cool videos",
+  "You staked": "You staked",
+  "in your publishes": "in your publishes",
+  "in your supports": "in your supports",
+  "Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.": "Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.",
+  "A backup of your wallet is synced with lbry.tv": "A backup of your wallet is synced with lbry.tv",
+  "What does this mean?": "What does this mean?",
+  "LBRY credits allow you to publish or purchase content.": "LBRY credits allow you to publish or purchase content.",
+  "You can obtain free credits worth %amount% after you provide an email address.": "You can obtain free credits worth %amount% after you provide an email address.",
+  "up to": "up to"
 }
\ No newline at end of file

From aa5dd878c0638128db2c6f48472ead47e75b0bfa Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Tue, 31 Mar 2020 21:17:21 +0100
Subject: [PATCH 15/15] fix displayed wallet custody message when signed in

---
 android                                   | 2 +-
 src/component/walletBalanceExtra/index.js | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/android b/android
index cbc4a66..ff30e7f 160000
--- a/android
+++ b/android
@@ -1 +1 @@
-Subproject commit cbc4a662e670941b1c82aa6846ac56923c30af2f
+Subproject commit ff30e7f6a4358fd997a9e6d9f75bfe6959eafcb6
diff --git a/src/component/walletBalanceExtra/index.js b/src/component/walletBalanceExtra/index.js
index e893037..9aba337 100644
--- a/src/component/walletBalanceExtra/index.js
+++ b/src/component/walletBalanceExtra/index.js
@@ -1,14 +1,14 @@
 import { connect } from 'react-redux';
 import { selectClaimsBalance, selectSupportsBalance, selectTipsBalance } from 'lbry-redux';
+import { makeSelectClientSetting } from 'redux/selectors/settings';
 import WalletBalanceExtra from './view';
+import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
 
 const select = state => ({
   claimsBalance: selectClaimsBalance(state) || 0,
+  deviceWalletSynced: makeSelectClientSetting(Constants.SETTING_DEVICE_WALLET_SYNCED)(state),
   supportsBalance: selectSupportsBalance(state) || 0,
   tipsBalance: selectTipsBalance(state) || 0,
 });
 
-export default connect(
-  select,
-  null,
-)(WalletBalanceExtra);
+export default connect(select, null)(WalletBalanceExtra);