{"version":3,"sources":["C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/components/ImagePicker/index.tsx","C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/components/Native/index.tsx","C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/components/Overlay/index.tsx","C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/App.tsx","C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/hooks/useAppState.ts","C:/Users/gebruiker/Documents/projects/33reasons/okioki/React Native/node_modules/moment/locale sync /^/.*$"],"names":["StyleSheet","create","container","flex","backgroundColor","alignItems","justifyContent","ImagePicker","props","TouchableOpacity","style","alignSelf","onPress","a","async","makeSpinnerVisible","starttime","moment","options","mediaTypes","ImagePickerExpo","Images","exif","result","cancelled","stoptime","diff","addPicture","Text","fontSize","marginBottom","color","Native","base64","skipProcessing","quality","styles","button","borderRadius","padding","Overlay","useState","type","Camera","Constants","Type","back","autoFocus","AutoFocus","off","useCamera2Api","focusDepth","setOptions","ratios","setRatios","camera","setCamera","cameraRef","useCallback","node","setTimeout","getSupportedRatiosAsync","list","Fragment","Permissions","status","setHasCameraPermission","hasCameraPermission","marginTop","position","zIndex","width","height","left","top","ref","View","flexDirection","right","flexWrap","takePictureAsync","picture","pausePreview","resumePreview","map","r","i","key","ratio","on","Sentry","enableInExpoDevelopment","platform","web","config","install","captureMessage","check","console","log","Updates","checkForUpdateAsync","isAvailable","fetchUpdateAndReload","App","pictures","setPictures","uris","setUris","showSpinner","setShowSpinner","times","setTimes","modalVisibility","setModalVisibility","settings","onChange","onForeground","onBackground","AppState","currentState","appState","setAppState","handleAppStateChange","nextAppState","isValidFunction","match","func","useEffect","addEventListener","removeEventListener","useAppState","newAppState","urisNew","concat","uri","saveOptions","compress","aspectRatio","sourceWidth","actions","crop","originX","originY","ImageManipulator","picturesNew","diff2","timesNew","show","length","alignContent","pic","index","alert","JSON","stringify","ImageBackground","source","manifest","version","time","isVisible","webpackContext","req","id","webpackContextResolve","__webpack_require__","e","Error","code","keys","Object","resolve","module","exports"],"mappings":"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","file":"static/js/app.e605f5fb.chunk.js","sourcesContent":["import React, {useEffect}  from 'react';\r\nimport { StyleSheet, Text, TouchableOpacity } from 'react-native';\r\nimport * as ImagePickerExpo from 'expo-image-picker';\r\nimport moment from 'moment'\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    flex: 1,\r\n    backgroundColor: 'black',\r\n    alignItems: 'center',\r\n    justifyContent: 'center',\r\n  },\r\n});\r\n\r\nexport default function ImagePicker(props) {\r\n  return <TouchableOpacity\r\n          style={{\r\n            flex: 0.1,\r\n            alignSelf: 'center',\r\n            alignItems: 'center',\r\n          }}\r\n          onPress={async () => {\r\n            props.makeSpinnerVisible(true)\r\n            const starttime = moment()\r\n            const options = {\r\n              mediaTypes: ImagePickerExpo.MediaTypeOptions.Images,\r\n              // base64: true,\r\n              exif: true\r\n            }\r\n            try{\r\n              const result = await ImagePickerExpo.launchImageLibraryAsync(options)\r\n              if(!result.cancelled) {\r\n                debugger\r\n                const stoptime = moment()\r\n                const diff = stoptime.diff(starttime);\r\n                props.addPicture(result, 'from ImagePicker', diff)\r\n              } else {\r\n                debugger\r\n                props.makeSpinnerVisible(false)\r\n              }\r\n            } catch(ex) {\r\n              debugger\r\n              props.makeSpinnerVisible(false)\r\n            }\r\n          }}>\r\n          <Text style={{ fontSize: 18, marginBottom: 10, color: 'white' }}> Use image picker</Text>\r\n        </TouchableOpacity>\r\n}\r\n","import React  from 'react';\r\nimport { Text, TouchableOpacity } from 'react-native';\r\nimport * as ImagePicker from 'expo-image-picker';\r\nimport moment from 'moment'\r\n\r\nexport default function Native(props) {\r\n  return <TouchableOpacity\r\n        style={{\r\n            flex: 0.1,\r\n            alignSelf: 'center',\r\n            alignItems: 'center',\r\n        }}\r\n        onPress={async () => {\r\n            props.makeSpinnerVisible(true)\r\n            const starttime = moment()\r\n            const options = {\r\n                mediaTypes: ImagePicker.MediaTypeOptions.Images,\r\n                base64: false,\r\n                exif: true,\r\n                skipProcessing: true,\r\n                quality: 0.1\r\n            }\r\n            const result = await ImagePicker.launchCameraAsync(options)\r\n            if(!result.cancelled) {\r\n                const stoptime = moment()\r\n                const diff = stoptime.diff(starttime);\r\n                props.addPicture(result, 'from Native', diff)\r\n            } else {\r\n                props.makeSpinnerVisible(false)\r\n            }\r\n        }}>\r\n        <Text style={{ fontSize: 18, marginBottom: 10, color: 'white' }}> Use native camera</Text>\r\n    </TouchableOpacity>\r\n}\r\n","import React, {useState, useEffect, useCallback}  from 'react';\r\nimport { StyleSheet, Text, View, TouchableOpacity } from 'react-native';\r\nimport { Camera } from 'expo-camera';\r\nimport * as Permissions from 'expo-permissions';\r\nimport moment from 'moment'\r\n\r\nfunction useEffectAsync(effect, inputs) {\r\n    useEffect(() => {\r\n        effect();\r\n    }, inputs);\r\n  }\r\n  \r\nconst styles = StyleSheet.create({\r\n    button: {\r\n      fontSize: 18,\r\n      marginBottom: 10,\r\n      color: 'white',\r\n      backgroundColor: 'black',\r\n      borderRadius: 10,\r\n      padding: 3 \r\n    },\r\n  });\r\n\r\nexport default function Overlay(props) {\r\n  const [options, setOptions] = useState({type: Camera.Constants.Type.back, autoFocus: Camera.Constants.AutoFocus.off, useCamera2Api: true, focusDepth: 0.9});\r\n  const [ratios, setRatios] = useState([])\r\n  const [emailLoginLoading, setEmailLoginLoading] = useState(false)\r\n\r\n  const [camera, setCamera] = useState([])\r\n\r\n  const cameraRef = useCallback(async (node) => {\r\n    if (node !== null) {\r\n        setCamera(node)\r\n        setTimeout(async () => {\r\n            const list = await node.getSupportedRatiosAsync();\r\n            setRatios(list)\r\n        }, 500);\r\n    }\r\n  }, []);\r\n\r\n//      ectAsync(async () => {\r\n//     if(camera && camera.current) {\r\n//         debugger\r\n//         const list = await camera.current.getSupportedRatiosAsync();\r\n//         setRatios(list)\r\n//     }\r\n//   }, [camera])\r\n\r\n  return <React.Fragment>\r\n            <TouchableOpacity\r\n                style={{\r\n                    flex: 0.1,\r\n                    alignSelf: 'center',\r\n                    alignItems: 'center',\r\n                }}\r\n                onPress={async () => {\r\n                    const { status } = await Permissions.askAsync(Permissions.CAMERA);\r\n                    props.setHasCameraPermission(status === 'granted')\r\n                }}>\r\n                <Text style={{ fontSize: 18, marginBottom: 10, color: 'white' }}>Use camera with overlay</Text>\r\n            </TouchableOpacity>\r\n\r\n            {props.hasCameraPermission === false && <React.Fragment>\r\n                <Text style={{\r\n                       color: 'white'\r\n                    }}>No access to camera</Text>\r\n                <TouchableOpacity\r\n                    style={{\r\n                        marginTop: 15\r\n                    }}\r\n                    onPress={() => {\r\n                        props.setHasCameraPermission(null)\r\n                    }}>\r\n                    <Text style={styles.button}> BACK </Text>\r\n                </TouchableOpacity>\r\n            </React.Fragment>}\r\n                \r\n            {props.hasCameraPermission && <Camera\r\n                style={{ position: 'absolute', zIndex: 1000, width: '96%', height: '96%', left: '2%', top: '2%' }}\r\n                ref={cameraRef}\r\n                {...options}>\r\n                <View\r\n                style={{\r\n                    flex: 1,\r\n                    backgroundColor: 'transparent',\r\n                    justifyContent: 'flex-end',\r\n                    flexDirection: 'column',\r\n                }}>\r\n                     <TouchableOpacity\r\n                            style={{\r\n                                position: 'absolute', right: 10, top: 10\r\n                            }}\r\n                            onPress={() => {\r\n                                props.setHasCameraPermission(null)\r\n                            }}>\r\n                            <Text style={styles.button}> BACK </Text>\r\n                        </TouchableOpacity>\r\n                    <View\r\n                    style={{\r\n                        flex: 0.1,\r\n                        flexWrap: 'wrap',\r\n                        alignItems: 'center',\r\n                        backgroundColor: 'transparent',\r\n                        flexDirection: 'row',\r\n                    }}>\r\n                        <TouchableOpacity\r\n                            style={{\r\n                            flex: 1,\r\n                            alignSelf: 'flex-end',\r\n                            alignItems: 'center',\r\n                            }}\r\n                            onPress={async () => {\r\n                                props.makeSpinnerVisible(true)\r\n                                let starttime = moment()\r\n                                const options = {\r\n                                    exif: true,\r\n                                    quality: 1,\r\n                                    skipProcessing: true\r\n                                }\r\n                                debugger\r\n                                const picture = await camera.takePictureAsync(options)\r\n                                debugger\r\n                                props.setHasCameraPermission(null)\r\n                                debugger\r\n                                const stoptime = moment()\r\n                                const diff = stoptime.diff(starttime)\r\n                                debugger\r\n                                props.addPicture(picture, 'from Overlay', diff)\r\n                            }}>\r\n                            <Text style={styles.button}> Take picture </Text>\r\n                        </TouchableOpacity>\r\n                    </View>\r\n                    <View\r\n                    style={{\r\n                        flex: 0.1,\r\n                        flexWrap: 'wrap',\r\n                        alignItems: 'center',\r\n                        backgroundColor: 'transparent',\r\n                        flexDirection: 'row',\r\n                    }}>\r\n                        <TouchableOpacity\r\n                            style={{\r\n                            flex: 0.5,\r\n                            alignSelf: 'flex-end',\r\n                            alignItems: 'center',\r\n                            }}\r\n                            onPress={async () => {\r\n                                debugger\r\n                                camera.pausePreview()\r\n                            }}>\r\n                            <Text style={styles.button}> pause Preview </Text>\r\n                        </TouchableOpacity>\r\n                        <TouchableOpacity\r\n                            style={{\r\n                            flex: 0.5,\r\n                            alignSelf: 'flex-end',\r\n                            alignItems: 'center',\r\n                            }}\r\n                            onPress={() => {\r\n                                camera.resumePreview()\r\n                            }}>\r\n                            <Text style={styles.button}> resume Preview </Text>\r\n                        </TouchableOpacity>\r\n                    </View>\r\n                    <View\r\n                    style={{\r\n                        flex: 0.1,\r\n                        flexWrap: 'wrap',\r\n                        backgroundColor: 'transparent',\r\n                        flexDirection: 'row',\r\n                    }}>\r\n                        {ratios.map((r, i) => <TouchableOpacity\r\n                            key={r}\r\n                            style={{\r\n                                flex: 0.3,\r\n                                alignSelf: 'flex-end',\r\n                                alignItems: 'center',\r\n                            }}\r\n                            onPress={() => {\r\n                                setOptions({...options, ratio: r})\r\n                            }}>\r\n                            <Text style={styles.button}> {r} </Text>\r\n                        </TouchableOpacity>)}\r\n                    </View>\r\n                    <View\r\n                    style={{\r\n                        flex: 0.1,\r\n                        flexWrap: 'wrap',\r\n                        backgroundColor: 'transparent',\r\n                        flexDirection: 'row',\r\n                        alignItems: 'center',\r\n                    }}>\r\n                        <TouchableOpacity\r\n                            style={{\r\n                                flex: 1,\r\n                                alignItems: 'center',\r\n                            }}\r\n                            onPress={() => {\r\n                                debugger\r\n                                if(camera.props.autoFocus) {\r\n                                    setOptions({...options, autoFocus: Camera.Constants.AutoFocus.off}) \r\n                                } else {\r\n                                    setOptions({...options, autoFocus: Camera.Constants.AutoFocus.on})\r\n                                }\r\n                            }}>\r\n                            <Text style={styles.button}> {camera && camera.props && camera.props.autoFocus ? 'put focus off' : 'put focus on'} </Text>\r\n                        </TouchableOpacity>\r\n                    </View>\r\n                    <View\r\n                    style={{\r\n                        flex: 0.1,\r\n                        flexWrap: 'wrap',\r\n                        backgroundColor: 'transparent',\r\n                        flexDirection: 'row',\r\n                        alignItems: 'center',\r\n                        justifyContent: 'center'\r\n                    }}>\r\n                            <Text style={{...styles.button, alignItems: 'center', borderRadius: 0}}> focusDepth {camera && camera.props && camera.props.focusDepth} </Text>\r\n                    </View>\r\n                </View>\r\n            </Camera>}\r\n        </React.Fragment>\r\n}","import React, {useState, useEffect}  from 'react';\r\nimport { StyleSheet, Text, View, TouchableOpacity, Image, ImageBackground } from 'react-native';\r\nimport { Spinner } from 'native-base';\r\nimport * as ImageManipulator from 'expo-image-manipulator';\r\nimport ImagePicker from './components/ImagePicker';\r\nimport Native from './components/Native';\r\nimport Overlay from './components/Overlay';\r\nimport Constants from 'expo-constants';\r\nimport { Updates } from 'expo';\r\nimport Toast from 'react-native-root-toast';\r\nimport useAppState from './hooks/useAppState';\r\nimport moment from 'moment'\r\nimport Sentry from 'sentry-expo';\r\nimport Modal from 'react-native-modal'\r\n\r\nSentry.enableInExpoDevelopment = true;\r\n\r\nif(!Constants.platform.web){\r\n  Sentry.config('https://716a355d76c74af4acb134dad3a86d3e@sentry.io/1541798').install();\r\n  Sentry.captureMessage(\"app started\");\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    // flex:1,\r\n    height: '100%', width: '100%', \r\n    backgroundColor: 'blue',\r\n    alignItems: 'center',\r\n    justifyContent: 'center',\r\n  },\r\n  button: {\r\n    fontSize: 18,\r\n    marginTop: 10,\r\n    color: 'white',\r\n    backgroundColor: 'black',\r\n    borderRadius: 10,\r\n    padding: 3\r\n  },\r\n});\r\n\r\nconst fetchUpdateAndReload = async () => {\r\n  try {\r\n      // ... notify user of update ...\r\n    Toast.show('Er is een update beschikbaar. Downloading...', {\r\n      duration: 10000,\r\n      position: 60,\r\n      shadow: true,\r\n      animation: true,\r\n      hideOnPress: true,\r\n      delay: 0,\r\n      backgroundColor: '#004277'\r\n    });\r\n\r\n    await Updates.fetchUpdateAsync()\r\n\r\n    Toast.show('Update is gedownload. Herstarten...', {\r\n      duration: 10000,\r\n      position: 60,\r\n      shadow: true,\r\n      animation: true,\r\n      hideOnPress: true,\r\n      delay: 0,\r\n      backgroundColor: '#004277'\r\n    });\r\n\r\n    setTimeout(() => {\r\n      Updates.reloadFromCache()\r\n    }, 3000)\r\n  } catch (error) {\r\n    console.log(error)\r\n  }\r\n}\r\n\r\nconst check = async () => {\r\n  try {\r\n    if(!__DEV__) {\r\n      console.log(\"checking for update\")\r\n      const update = await Updates.checkForUpdateAsync()\r\n      if (update.isAvailable) {\r\n        debugger\r\n        this.fetchUpdateAndReload()\r\n      }\r\n    }\r\n  } catch (error) {\r\n    console.log(error)\r\n  }\r\n}\r\n\r\nexport default function App() {\r\n  const [pictures, setPictures] = useState([]);\r\n  const [uris, setUris] = useState([]);\r\n  const [showSpinner, setShowSpinner] = useState(false);\r\n  const [times, setTimes] = useState([]);\r\n  const [hasCameraPermission, setHasCameraPermission] = useState(null);\r\n  const [modalVisibility, setModalVisibility] = useState(false);\r\n  \r\n  const { appState } = useAppState({\r\n    onChange: (newAppState) => {\r\n      console.log('App state changed to ', newAppState)\r\n    },\r\n    onForeground: () => {\r\n      console.log('App went to Foreground')\r\n      check()\r\n    },\r\n    onBackground: () => {\r\n      console.log('App went to background')\r\n    }\r\n  });\r\n\r\n  const addPicture = async (picture, type, diff) => {\r\n    const starttime = moment()\r\n\r\n    if(!Constants.platform.web){\r\n      const urisNew = uris.concat(picture.uri + ' (' + picture.width + 'px X ' + picture.height + 'px)')\r\n      setUris(urisNew)\r\n  \r\n      const saveOptions = {\r\n        compress: 0.5\r\n      }\r\n      debugger\r\n      const width = picture.width\r\n      const height = picture.height\r\n      let left = width * 0.05\r\n      let top = height * 0.1\r\n      let aspectRatio = height / width\r\n      if(width > height) {\r\n        aspectRatio = width / height \r\n      }\r\n  \r\n      let sourceWidth = width * 0.9;\r\n      let sourceHeight = (height / aspectRatio) * 0.6;\r\n  \r\n      if(type === 'from Overlay') { //bug in ImageManipulator.manipulateAsync https://github.com/expo/expo/issues/3862\r\n        sourceWidth *= 0.75\r\n      }\r\n  \r\n      const actions = [{crop: {originX: left, originY: top, width: sourceWidth, height: sourceHeight}}]\r\n      const result = await ImageManipulator.manipulateAsync(picture.uri, actions, saveOptions)\r\n      picture.uri = result.uri\r\n    } \r\n    debugger\r\n\r\n    picture.type = type\r\n    const picturesNew = pictures.concat(picture)\r\n    setPictures(picturesNew)\r\n    const stoptime = moment()\r\n    const diff2 = stoptime.diff(starttime)\r\n\r\n    const timesNew = times.concat(diff + ' ms + ' + diff2 + ' ms')\r\n    setTimes(timesNew)\r\n    setShowSpinner(false)\r\n  }\r\n\r\n  const makeSpinnerVisible = (show) => {\r\n    debugger\r\n    setShowSpinner(show)\r\n  }\r\n\r\n  return <View style={styles.container}>\r\n      {hasCameraPermission === null &&\r\n        <ImagePicker\r\n          addPicture={addPicture}\r\n          makeSpinnerVisible={makeSpinnerVisible} />}\r\n      {hasCameraPermission === null &&\r\n        <Native\r\n          addPicture={addPicture}\r\n          makeSpinnerVisible={makeSpinnerVisible} />}\r\n      <Overlay\r\n        addPicture={addPicture}\r\n        makeSpinnerVisible={makeSpinnerVisible}\r\n        hasCameraPermission={hasCameraPermission}\r\n        setHasCameraPermission={setHasCameraPermission} />\r\n\r\n      {pictures.length > 0 && <View style={{flexDirection: 'row', flexWrap: 'wrap', alignContent: 'center', justifyContent: 'center', marginBottom: 30}}>\r\n        {pictures.map((pic, index) => {\r\n        return <TouchableOpacity\r\n          key={index}\r\n          onPress={async () => {\r\n            if(pic.exif) {\r\n              alert(JSON.stringify(pic.exif))\r\n            }\r\n          }}>\r\n            <View style={{width: 150, height: 100}}>\r\n              <ImageBackground style={{width: 150, height: 100, flex: 1, flexDirection: 'row', justifyContent: 'center', alignContent: 'center', alignItems: 'center'}} source={{ uri: pic.uri }} >\r\n                <Text style={{color: 'white', backgroundColor: 'black', borderRadius: 10, padding: 3}}>{pic.type}</Text>\r\n              </ImageBackground>\r\n            </View>\r\n        </TouchableOpacity>})}\r\n      </View>}\r\n\r\n      {hasCameraPermission === null && <React.Fragment>\r\n        {showSpinner && <Spinner />}\r\n\r\n        {pictures.length > 0 && <Text style={{color: 'white', flex: 0.1}}>Tap a picture to see exif info</Text>}\r\n        {Constants && <Text style={{color: 'white', flex: 0.1}}>{'version ' + Constants.manifest.version}</Text>}\r\n\r\n        {uris.length > 0 && <React.Fragment>\r\n          <Text style={{color: 'white', fontSize: 10}} >Latest Uri's</Text>\r\n          {uris.map((uri, index) => <Text style={{color: 'white', fontSize: 8}} key={uri} >{uri}</Text>)}\r\n        </React.Fragment>}\r\n\r\n        {times.length > 0 &&  <React.Fragment>\r\n          <Text style={{color: 'white', fontSize: 10}} >Latest Times</Text>\r\n          {times.map((time, index) => <Text style={{color: 'white', fontSize: 8}} key={time} >{time}</Text>)}\r\n        </React.Fragment>}\r\n\r\n        <TouchableOpacity\r\n            onPress={() => {\r\n              setUris([])\r\n              setTimes([])\r\n              setPictures([])\r\n            }}>\r\n            <Text style={styles.button}> CLEAR </Text> \r\n        </TouchableOpacity>\r\n\r\n        <TouchableOpacity\r\n            style={{ marginTop: 10 }}\r\n            onPress={() => {\r\n              setModalVisibility(true)\r\n            }}>\r\n            <Text style={styles.button}> TEST modal (web & mobile) </Text> \r\n        </TouchableOpacity>\r\n      </React.Fragment>}\r\n      \r\n      <Modal isVisible={modalVisibility}>\r\n        <View style={{backgroundColor:'#ffffff', padding:20}}>\r\n          <Text style={{fontSize:18, color:'#004277', marginTop:10, marginBottom:10}}> Title of modal </Text>\r\n          <Text style={{fontSize:14, color:'#004277', marginTop:10, marginBottom:10}}> Contents of modal </Text>\r\n\r\n          <View style={{marginTop:20, marginBottom:20, alignItems:'flex-end'}}>\r\n            <View style={{width:100, flexDirection:'row', justifyContent:'space-between'}}>\r\n              <TouchableOpacity onPress={ () => setModalVisibility(false) }>\r\n                <Text style={{fontSize:14, color:'#004277'}}>cancel</Text>\r\n              </TouchableOpacity>\r\n              <TouchableOpacity onPress={ () => setModalVisibility(false) }>\r\n                <Text style={{fontSize:14, color:'#004277'}}>OK</Text>\r\n              </TouchableOpacity>\r\n            </View>\r\n          </View>\r\n        </View>\r\n      </Modal>\r\n  </View>\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport { AppState } from 'react-native';\r\n\r\nexport default function useAppState(settings) {\r\n  const { onChange, onForeground, onBackground } = settings || {};\r\n  const [appState, setAppState] = useState(AppState.currentState);\r\n\r\n  function handleAppStateChange(nextAppState) {\r\n    if (nextAppState === 'active') {\r\n      isValidFunction(onForeground) && onForeground();\r\n    } else if(nextAppState.match(/inactive|background/)) {\r\n      isValidFunction(onBackground) && onBackground();\r\n    }\r\n    setAppState(nextAppState);\r\n    isValidFunction(onChange) && onChange(nextAppState);\r\n  }\r\n\r\n  // didMount effect\r\n  useEffect(() => {\r\n    AppState.addEventListener('change', handleAppStateChange);\r\n    // didUnmount effect\r\n    return () => AppState.removeEventListener('change', handleAppStateChange);\r\n  },[]);\r\n\r\n  // settings validation\r\n  function isValidFunction(func) {\r\n    return func && typeof func === 'function';\r\n  }\r\n\r\n  return { appState };\r\n}","var map = {\n\t\"./af\": 292,\n\t\"./af.js\": 292,\n\t\"./ar\": 293,\n\t\"./ar-dz\": 294,\n\t\"./ar-dz.js\": 294,\n\t\"./ar-kw\": 295,\n\t\"./ar-kw.js\": 295,\n\t\"./ar-ly\": 296,\n\t\"./ar-ly.js\": 296,\n\t\"./ar-ma\": 297,\n\t\"./ar-ma.js\": 297,\n\t\"./ar-sa\": 298,\n\t\"./ar-sa.js\": 298,\n\t\"./ar-tn\": 299,\n\t\"./ar-tn.js\": 299,\n\t\"./ar.js\": 293,\n\t\"./az\": 300,\n\t\"./az.js\": 300,\n\t\"./be\": 301,\n\t\"./be.js\": 301,\n\t\"./bg\": 302,\n\t\"./bg.js\": 302,\n\t\"./bm\": 303,\n\t\"./bm.js\": 303,\n\t\"./bn\": 304,\n\t\"./bn.js\": 304,\n\t\"./bo\": 305,\n\t\"./bo.js\": 305,\n\t\"./br\": 306,\n\t\"./br.js\": 306,\n\t\"./bs\": 307,\n\t\"./bs.js\": 307,\n\t\"./ca\": 308,\n\t\"./ca.js\": 308,\n\t\"./cs\": 309,\n\t\"./cs.js\": 309,\n\t\"./cv\": 310,\n\t\"./cv.js\": 310,\n\t\"./cy\": 311,\n\t\"./cy.js\": 311,\n\t\"./da\": 312,\n\t\"./da.js\": 312,\n\t\"./de\": 313,\n\t\"./de-at\": 314,\n\t\"./de-at.js\": 314,\n\t\"./de-ch\": 315,\n\t\"./de-ch.js\": 315,\n\t\"./de.js\": 313,\n\t\"./dv\": 316,\n\t\"./dv.js\": 316,\n\t\"./el\": 317,\n\t\"./el.js\": 317,\n\t\"./en-SG\": 318,\n\t\"./en-SG.js\": 318,\n\t\"./en-au\": 319,\n\t\"./en-au.js\": 319,\n\t\"./en-ca\": 320,\n\t\"./en-ca.js\": 320,\n\t\"./en-gb\": 321,\n\t\"./en-gb.js\": 321,\n\t\"./en-ie\": 322,\n\t\"./en-ie.js\": 322,\n\t\"./en-il\": 323,\n\t\"./en-il.js\": 323,\n\t\"./en-nz\": 324,\n\t\"./en-nz.js\": 324,\n\t\"./eo\": 325,\n\t\"./eo.js\": 325,\n\t\"./es\": 326,\n\t\"./es-do\": 327,\n\t\"./es-do.js\": 327,\n\t\"./es-us\": 328,\n\t\"./es-us.js\": 328,\n\t\"./es.js\": 326,\n\t\"./et\": 329,\n\t\"./et.js\": 329,\n\t\"./eu\": 330,\n\t\"./eu.js\": 330,\n\t\"./fa\": 331,\n\t\"./fa.js\": 331,\n\t\"./fi\": 332,\n\t\"./fi.js\": 332,\n\t\"./fo\": 333,\n\t\"./fo.js\": 333,\n\t\"./fr\": 334,\n\t\"./fr-ca\": 335,\n\t\"./fr-ca.js\": 335,\n\t\"./fr-ch\": 336,\n\t\"./fr-ch.js\": 336,\n\t\"./fr.js\": 334,\n\t\"./fy\": 337,\n\t\"./fy.js\": 337,\n\t\"./ga\": 338,\n\t\"./ga.js\": 338,\n\t\"./gd\": 339,\n\t\"./gd.js\": 339,\n\t\"./gl\": 340,\n\t\"./gl.js\": 340,\n\t\"./gom-latn\": 341,\n\t\"./gom-latn.js\": 341,\n\t\"./gu\": 342,\n\t\"./gu.js\": 342,\n\t\"./he\": 343,\n\t\"./he.js\": 343,\n\t\"./hi\": 344,\n\t\"./hi.js\": 344,\n\t\"./hr\": 345,\n\t\"./hr.js\": 345,\n\t\"./hu\": 346,\n\t\"./hu.js\": 346,\n\t\"./hy-am\": 347,\n\t\"./hy-am.js\": 347,\n\t\"./id\": 348,\n\t\"./id.js\": 348,\n\t\"./is\": 349,\n\t\"./is.js\": 349,\n\t\"./it\": 350,\n\t\"./it-ch\": 351,\n\t\"./it-ch.js\": 351,\n\t\"./it.js\": 350,\n\t\"./ja\": 352,\n\t\"./ja.js\": 352,\n\t\"./jv\": 353,\n\t\"./jv.js\": 353,\n\t\"./ka\": 354,\n\t\"./ka.js\": 354,\n\t\"./kk\": 355,\n\t\"./kk.js\": 355,\n\t\"./km\": 356,\n\t\"./km.js\": 356,\n\t\"./kn\": 357,\n\t\"./kn.js\": 357,\n\t\"./ko\": 358,\n\t\"./ko.js\": 358,\n\t\"./ku\": 359,\n\t\"./ku.js\": 359,\n\t\"./ky\": 360,\n\t\"./ky.js\": 360,\n\t\"./lb\": 361,\n\t\"./lb.js\": 361,\n\t\"./lo\": 362,\n\t\"./lo.js\": 362,\n\t\"./lt\": 363,\n\t\"./lt.js\": 363,\n\t\"./lv\": 364,\n\t\"./lv.js\": 364,\n\t\"./me\": 365,\n\t\"./me.js\": 365,\n\t\"./mi\": 366,\n\t\"./mi.js\": 366,\n\t\"./mk\": 367,\n\t\"./mk.js\": 367,\n\t\"./ml\": 368,\n\t\"./ml.js\": 368,\n\t\"./mn\": 369,\n\t\"./mn.js\": 369,\n\t\"./mr\": 370,\n\t\"./mr.js\": 370,\n\t\"./ms\": 371,\n\t\"./ms-my\": 372,\n\t\"./ms-my.js\": 372,\n\t\"./ms.js\": 371,\n\t\"./mt\": 373,\n\t\"./mt.js\": 373,\n\t\"./my\": 374,\n\t\"./my.js\": 374,\n\t\"./nb\": 375,\n\t\"./nb.js\": 375,\n\t\"./ne\": 376,\n\t\"./ne.js\": 376,\n\t\"./nl\": 377,\n\t\"./nl-be\": 378,\n\t\"./nl-be.js\": 378,\n\t\"./nl.js\": 377,\n\t\"./nn\": 379,\n\t\"./nn.js\": 379,\n\t\"./pa-in\": 380,\n\t\"./pa-in.js\": 380,\n\t\"./pl\": 381,\n\t\"./pl.js\": 381,\n\t\"./pt\": 382,\n\t\"./pt-br\": 383,\n\t\"./pt-br.js\": 383,\n\t\"./pt.js\": 382,\n\t\"./ro\": 384,\n\t\"./ro.js\": 384,\n\t\"./ru\": 385,\n\t\"./ru.js\": 385,\n\t\"./sd\": 386,\n\t\"./sd.js\": 386,\n\t\"./se\": 387,\n\t\"./se.js\": 387,\n\t\"./si\": 388,\n\t\"./si.js\": 388,\n\t\"./sk\": 389,\n\t\"./sk.js\": 389,\n\t\"./sl\": 390,\n\t\"./sl.js\": 390,\n\t\"./sq\": 391,\n\t\"./sq.js\": 391,\n\t\"./sr\": 392,\n\t\"./sr-cyrl\": 393,\n\t\"./sr-cyrl.js\": 393,\n\t\"./sr.js\": 392,\n\t\"./ss\": 394,\n\t\"./ss.js\": 394,\n\t\"./sv\": 395,\n\t\"./sv.js\": 395,\n\t\"./sw\": 396,\n\t\"./sw.js\": 396,\n\t\"./ta\": 397,\n\t\"./ta.js\": 397,\n\t\"./te\": 398,\n\t\"./te.js\": 398,\n\t\"./tet\": 399,\n\t\"./tet.js\": 399,\n\t\"./tg\": 400,\n\t\"./tg.js\": 400,\n\t\"./th\": 401,\n\t\"./th.js\": 401,\n\t\"./tl-ph\": 402,\n\t\"./tl-ph.js\": 402,\n\t\"./tlh\": 403,\n\t\"./tlh.js\": 403,\n\t\"./tr\": 404,\n\t\"./tr.js\": 404,\n\t\"./tzl\": 405,\n\t\"./tzl.js\": 405,\n\t\"./tzm\": 406,\n\t\"./tzm-latn\": 407,\n\t\"./tzm-latn.js\": 407,\n\t\"./tzm.js\": 406,\n\t\"./ug-cn\": 408,\n\t\"./ug-cn.js\": 408,\n\t\"./uk\": 409,\n\t\"./uk.js\": 409,\n\t\"./ur\": 410,\n\t\"./ur.js\": 410,\n\t\"./uz\": 411,\n\t\"./uz-latn\": 412,\n\t\"./uz-latn.js\": 412,\n\t\"./uz.js\": 411,\n\t\"./vi\": 413,\n\t\"./vi.js\": 413,\n\t\"./x-pseudo\": 414,\n\t\"./x-pseudo.js\": 414,\n\t\"./yo\": 415,\n\t\"./yo.js\": 415,\n\t\"./zh-cn\": 416,\n\t\"./zh-cn.js\": 416,\n\t\"./zh-hk\": 417,\n\t\"./zh-hk.js\": 417,\n\t\"./zh-tw\": 418,\n\t\"./zh-tw.js\": 418\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 697;"],"sourceRoot":""}