commit b51de8b13c88a1f0619a5cffa28d434c4598520f Author: Philip Cheung Date: Tue Feb 27 16:49:28 2024 +0800 first commit diff --git a/.buckconfig b/.buckconfig new file mode 100644 index 0000000..934256c --- /dev/null +++ b/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..40c6dcd --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native-community', +}; diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..b274ad1 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,73 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore "BUCK" generated dirs +/\.buckd/ + +; Ignore polyfills +node_modules/react-native/Libraries/polyfills/.* + +; These should not be required directly +; require from fbjs/lib instead: require('fbjs/lib/warning') +node_modules/warning/.* + +; Flow doesn't support platforms +.*/Libraries/Utilities/LoadingView.js + +[untyped] +.*/node_modules/@react-native-community/cli/.*/.* + +[include] + +[libs] +node_modules/react-native/interface.js +node_modules/react-native/flow/ + +[options] +emoji=true + +esproposal.optional_chaining=enable +esproposal.nullish_coalescing=enable + +module.file_ext=.js +module.file_ext=.json +module.file_ext=.ios.js + +munge_underscores=true + +module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' +module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +[lints] +sketchy-null-number=warn +sketchy-null-mixed=warn +sketchy-number=warn +untyped-type-import=warn +nonstrict-import=warn +deprecated-type=warn +unsafe-getters-setters=warn +unnecessary-invariant=warn +signature-verification-failure=warn +deprecated-utility=error + +[strict] +deprecated-type +nonstrict-import +sketchy-null +unclear-type +unsafe-getters-setters +untyped-import +untyped-type-import + +[version] +^0.122.0 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d42ff18 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad572e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore +!debug.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifact +*.jsbundle + +# CocoaPods +/ios/Pods/ diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..5c4de1a --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + bracketSpacing: false, + jsxBracketSameLine: true, + singleQuote: true, + trailingComma: 'all', +}; diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/App.js b/App.js new file mode 100644 index 0000000..d65b220 --- /dev/null +++ b/App.js @@ -0,0 +1,254 @@ +//ios Certificates key : rentchatYs962816 + +// twilio +// FRIENDLY NAME : rentchat +// SID : SKd9452f332bc79084af9b03b8098c18cd +// KEY TYPE : Standard +// SECRET : ImrUyVKfoQqGxC7xuBbhCcIfCePBIlU0 +import React, {Component} from 'react'; +import {StatusBar, Platform, Text, TextInput} from 'react-native'; +import { + SafeAreaView, + createStackNavigator, + createAppContainer, +} from 'react-navigation'; +import Router from './src/router'; +import JMessage from 'jmessage-react-plugin'; +import {colors} from './src/assets/styles/colors-theme'; +import {handleNavigationChange} from './src/common/history'; +import LoadingView from './src/common/loading'; +import {Provider, observer} from 'mobx-react'; +import NavigationService from './src/services/NavigationService'; +import JPush from 'jpush-react-native'; +import stores from './src/store'; +import { + checkNotifications, + requestNotifications, +} from 'react-native-permissions'; +//import * as stores from './src/stores/index'; +import {handleErrors} from './src/common/global-error-handler'; +import Event from './src/common/event'; +import PushService from './src/common/PushService'; +import NotifService from './src/common/NotifService'; + +@observer +export default class App extends Component { + constructor(props) { + super(props); + Text.defaultProps = Text.defaultProps || {}; + TextInput.defaultProps = TextInput.defaultProps || {}; + // Ignore dynamic type scaling on iOS + Text.defaultProps.allowFontScaling = false; + TextInput.defaultProps.allowFontScaling = false; + this.timer = null; + this.state = { + loadingCount: 0, + }; + //this.notif = new NotifService(this.onRegister.bind(this)); + // require('promise/setimmediate/rejection-tracking').enable({ + // allRejections: true, + // onUnhandled: (id, error) => { + // handleErrors(error); + // } + // }) + + // this._handleGlobalError = this.handleGlobalError.bind(this) + // this._handleShowLoading = this.handleShowLoading.bind(this) + // this._handleHideLoading = this.handleHideLoading.bind(this) + } + + checkPermission() { + checkNotifications().then(({status, settings}) => { + console.log(status); + if (status == 'DENIED') { + this.requestNotifications(); + } + }); + } + requestNotifications() { + requestNotifications([ + 'alert', + 'sound', + 'badge', + ]).then(({status, settings}) => {}); + } + + async componentWillMount() {} + + notificationClickAction(data) { + console.log(data); + if (data.hasOwnProperty('extras')) { + console.log('oh...'); + if (data.extras.hasOwnProperty('_j_type')) { + if (data.extras._j_type == 'jmessage') { + if (data.notificationEventType == 'notificationOpened') { + console.log(data.extras.custom.id); + console.log(data.extras.custom.type); + console.log(data.extras.custom.nickname); + if (data.extras.custom.type == 'group') { + var data = { + id: data.extras.custom.id, + type: 'group', + nickname: 'Helper', + }; + try { + NavigationService.navigate('chat', {conversation: data}); + } catch (error) { + console.log(error); + } + } else { + var data = { + username: data.extras.custom.id, + type: 'single', + nickname: data.extras.custom.nickname, + }; + try { + NavigationService.navigate('chat', {conversation: data}); + } catch (error) { + console.log(error); + } + } + } + } + } + } + } + + async componentDidMount() { + await this.checkPermission(); + var params = { + appkey: '89d24c00f8f896623e0bccef', + isOpenMessageRoaming: false, + isProduction: true, + channel: '', + }; + await JMessage.init(params); + await JPush.init(); + JMessage.getUserInfo( + { + username: '4dbc5b294f184772a043573d7ad9b8c8', + appKey: '89d24c00f8f896623e0bccef', + }, + userInfo => { + // do something. + console.log(userInfo); + }, + error => { + var code = error.code; + var desc = error.description; + }, + ); + JMessage.setDebugMode({enable: false}); + JMessage.setBadge(0, success => {}); + JMessage.getMyInfo(myInfo => { + if (myInfo.username) { + } else { + console.log(myInfo); + } + }); + JMessage.addSyncOfflineMessageListener(message => { + console.log( + '| JIGUANG |===addSyncOfflineMessageListener====' + + JSON.stringify(message), + ); + }); + + this.connectListener = result => { + console.log('connectListener:' + JSON.stringify(result)); + }; + + JPush.addNotificationListener(result => { + console.log(`notificationListener: ${JSON.stringify(result)}`); + this.notificationClickAction(result); + }); + JPush.addCustomMessagegListener(result => { + console.log(`customMessageListener: ${JSON.stringify(result)}`); + }); + //PushService.configure() + // 监听全局报错 + // Event.listen('GLOBAL_ERROR', this._handleGlobalError, this) + + // 显示加载动画 + // Event.listen('SHOW_LOADING', this._handleShowLoading, this) + + // 隐藏加载动画 + // Event.listen('HIDE_LOADING', this._handleHideLoading, this) + } + + //组件卸载之前移除监听 + componentWillUnmount() { + // Event.remove('GLOBAL_ERROR', this) + //Event.remove('SHOW_LOADING', this) + // Event.remove('HIDE_LOADING', this) + // JPush.removeListener(result => { + // console.log(`remove listener: ${JSON.stringify(result)}`); + // }); + } + + onRegister(token) { + console.log(token); + } + + onNotif(notif) { + console.log(notif); + } + render() { + return ( + + + + { + NavigationService.setTopLevelNavigator(navigatorRef); + }} + /> + 0} /> + + + ); + } + + /** + * showLoading + */ + handleShowLoading() { + if (this.timer) { + clearTimeout(this.timer); + } + + this.timer = setTimeout(() => { + this.setState({ + loadingCount: this.state.loadingCount + 1, + }); + }, 50); + } + + /** + * hideLoading + * @param bForece + */ + handleHideLoading(bForece) { + if (this.timer) { + clearTimeout(this.timer); + } + + this.timer = setTimeout(() => { + if (this.state.loadingCount > 0) { + this.setState({ + loadingCount: bForece ? 0 : this.state.loadingCount - 1, + }); + } + }, 50); + } +} diff --git a/AuthKey_B6LJQ88G44.p8 b/AuthKey_B6LJQ88G44.p8 new file mode 100644 index 0000000..8b8a4c0 --- /dev/null +++ b/AuthKey_B6LJQ88G44.p8 @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgRdoZOqwblY00OEmY +c0Yoo74RwTBSvzLmRiuO1rUBWb+gCgYIKoZIzj0DAQehRANCAASa37Z5ZdZ2w9YZ +tFoOkqGNbN+TrkRuJ03qggxpC1D5S2eQtJJ2iWf42JR+jHXb5HuOCQRxpQPsa3Cr +kdTNynO3 +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/CertificateSigningRequest.certSigningRequest b/CertificateSigningRequest.certSigningRequest new file mode 100644 index 0000000..fecf682 --- /dev/null +++ b/CertificateSigningRequest.certSigningRequest @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICjDCCAXQCAQAwRzEnMCUGCSqGSIb3DQEJARYYcGhpbGlwLmNoZXVuZ0BuaXJv +bnMuY29tMQ8wDQYDVQQDDAZwaGlsaXAxCzAJBgNVBAYTAkhLMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqFjySinOVdAYMKcaUN6bqBssHQbqbDC/oknV +hgS2YnJd2PmRwrVgx9v3/RucnVHxFkjtcT3JbZgnS4AUo3uGKU7tDkM39ZGWBqun +lWeFC5a3t7anZjlk38fwftBg99HZPkQ3kVrZVQtKraKtzETLngHOKKlCvcNWT0+o +L+Dv+HWKalbNt9u9TK8bEhZQKKoqknjyueHPxjEfBN79eLhjFCAlVl0VkcJngW4V +kCyl+csEQvnmncvQBotU5VVJlD5kFU799VscdMRq+GQ03SFYam/zC9atfR7gEiaD +lU4223jB1mTD2WoDnDwgBoUXypR9wZfQQUe2fcrhRCYBMj8nPwIDAQABoAAwDQYJ +KoZIhvcNAQELBQADggEBACPSAG0udA1y93TgtDmSMA3TeoMZvLUL4uQyGPRbp/uW +89nyn9zUVEpBcWxUFqcDevpDRP7yczNxT2a8VmJ/efNE0WkGPgCtZBfjsegdEJNa +NoPhqpVFn7TrS+Zk9frFXJHq7MLeuTowLZ8DCUFQ5YdiunvdcwHbMAyQxN/7J5t1 +2fHUTQLZFIi8WMNI2TLcelOoZjJM8FWfxuUTaAmwnDhogNFo05bbEH1/6aUE7TW2 +a2WzRTk7tDKIrKaZZcPBKTj8ItxIVf85lEKFa9T6mfIAU/bDcLH77pqdDPqR8aYf +QwnJvH1KmEl3OdsPjd9sghNE/ef7hi7EmMq58uXPCVE= +-----END CERTIFICATE REQUEST----- diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6a6a61 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +## Rent Chat + +## Description +This mobile application is primarily designed for communication between tenants and landlords. Users can input their property information within the app, and tenants can connect with landlords using an invitation code to facilitate communication. The main features of the app include online chat, intelligent lease agreements, property listings, rent reminders, feedback on property issues to landlords, online payments, and renovation services. + +### Screenshot + + + + + + + + + + + + + +This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). + +# Getting Started + +>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. + +## Step 1: Start the Metro Server + +First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. + +To start Metro, run the following command from the _root_ of your React Native project: + +```bash +# using npm +npm start + +# OR using Yarn +yarn start +``` + +## Step 2: Start your Application + +Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: + +### For Android + +```bash +# using npm +npm run android + +# OR using Yarn +yarn android +``` + +### For iOS + +```bash +# using npm +npm run ios + +# OR using Yarn +yarn ios +``` + +If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. + +This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. + +## Step 3: Modifying your App + +Now that you have successfully run the app, let's modify it. + +1. Open `App.tsx` in your text editor of choice and edit some lines. +2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! + + For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! + +## Congratulations! :tada: + +You've successfully run and modified your React Native App. :partying_face: + +### Now what? + +- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). +- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). + +# Troubleshooting + +If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. + +# Learn More + +To learn more about React Native, take a look at the following resources: + +- [React Native Website](https://reactnative.dev) - learn more about React Native. +- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. +- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. +- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. +- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. diff --git a/__tests__/App-test.js b/__tests__/App-test.js new file mode 100644 index 0000000..1784766 --- /dev/null +++ b/__tests__/App-test.js @@ -0,0 +1,14 @@ +/** + * @format + */ + +import 'react-native'; +import React from 'react'; +import App from '../App'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + renderer.create(); +}); diff --git a/app.json b/app.json new file mode 100644 index 0000000..3092823 --- /dev/null +++ b/app.json @@ -0,0 +1,4 @@ +{ + "name": "rentchat", + "displayName": "rentchat" +} \ No newline at end of file diff --git a/aps.cer b/aps.cer new file mode 100755 index 0000000..7ed0a6f Binary files /dev/null and b/aps.cer differ diff --git a/aps_development.cer b/aps_development.cer new file mode 100755 index 0000000..0c5e5a2 Binary files /dev/null and b/aps_development.cer differ diff --git a/babel.config copy.js b/babel.config copy.js new file mode 100644 index 0000000..22b2abd --- /dev/null +++ b/babel.config copy.js @@ -0,0 +1,8 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], + plugins: [ + ['@babel/plugin-transform-flow-strip-types'], + ['@babel/plugin-proposal-decorators', {legacy: true}], + ['@babel/plugin-proposal-class-properties', {loose: true}], + ], +}; diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..f842b77 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], +}; diff --git a/base-2.6.1.301.aar b/base-2.6.1.301.aar new file mode 100644 index 0000000..4636fa7 Binary files /dev/null and b/base-2.6.1.301.aar differ diff --git a/index copy.js b/index copy.js new file mode 100755 index 0000000..f3478ab --- /dev/null +++ b/index copy.js @@ -0,0 +1,10 @@ +/** + * @format + */ +import 'react-native-gesture-handler'; +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; +console.disableYellowBox = true; + +AppRegistry.registerComponent(appName, () => App); diff --git a/index.js b/index.js new file mode 100644 index 0000000..a850d03 --- /dev/null +++ b/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/metro.config copy.js b/metro.config copy.js new file mode 100644 index 0000000..afa332f --- /dev/null +++ b/metro.config copy.js @@ -0,0 +1,20 @@ +/** + * Metro configuration for React Native + * https://github.com/facebook/react-native + * + * @format + */ + +module.exports = { + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + babelTransformerPath: require.resolve( + 'react-native-typescript-transformer', + ), + }, + }), + }, +}; diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..13a9642 --- /dev/null +++ b/metro.config.js @@ -0,0 +1,17 @@ +/** + * Metro configuration for React Native + * https://github.com/facebook/react-native + * + * @format + */ + +module.exports = { + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + }, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ffb2d9c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14944 @@ +{ + "name": "rentchat", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "7.10.4" + } + }, + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "requires": { + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.5", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helpers": "7.12.5", + "@babel/parser": "7.12.5", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "convert-source-map": "1.7.0", + "debug": "4.2.0", + "gensync": "1.0.0-beta.2", + "json5": "2.1.3", + "lodash": "4.17.20", + "resolve": "1.19.0", + "semver": "5.7.1", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "requires": { + "@babel/types": "7.12.6", + "jsesc": "2.5.2", + "source-map": "0.5.7" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "7.12.1", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "requires": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", + "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", + "requires": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-module-imports": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "7.10.4", + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-replace-supers": "7.12.5", + "@babel/helper-split-export-declaration": "7.11.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "requires": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-regex": "7.10.5", + "regexpu-core": "4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "7.10.4", + "@babel/types": "7.12.6", + "lodash": "4.17.20" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "7.10.4", + "@babel/template": "7.10.4", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "7.12.5", + "@babel/helper-replace-supers": "7.12.5", + "@babel/helper-simple-access": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/helper-validator-identifier": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "lodash": "4.17.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "requires": { + "lodash": "4.17.20" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-wrap-function": "7.12.3", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "requires": { + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "requires": { + "@babel/types": "7.12.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "7.10.4", + "chalk": "2.4.2", + "js-tokens": "4.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.3" + } + }, + "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.5.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" + } + } + } + }, + "@babel/parser": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==" + }, + "@babel/plugin-external-helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.12.1.tgz", + "integrity": "sha512-5VBqan0daXhDSRjrq2miABuELRwWJWFdM42Jvs/CDuhp+Es+fW+ISA5l+co8d+9oN3WLz/N3VvzyeseL3AvjxA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", + "integrity": "sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-decorators": "7.12.1" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz", + "integrity": "sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-export-default-from": "7.12.1" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-parameters": "7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1", + "@babel/plugin-syntax-optional-chaining": "7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", + "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz", + "integrity": "sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", + "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "7.12.5", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-remap-async-to-generator": "7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-define-map": "7.10.5", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.5", + "@babel/helper-split-export-declaration": "7.11.0", + "globals": "11.12.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz", + "integrity": "sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-flow": "7.12.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-simple-access": "7.12.1", + "babel-plugin-dynamic-import-node": "2.3.3" + } + }, + "@babel/plugin-transform-object-assign": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz", + "integrity": "sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz", + "integrity": "sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ==", + "requires": { + "@babel/helper-builder-react-jsx": "7.10.4", + "@babel/helper-builder-react-jsx-experimental": "7.12.4", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-jsx": "7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "0.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "requires": { + "@babel/helper-module-imports": "7.12.5", + "@babel/helper-plugin-utils": "7.10.4", + "resolve": "1.19.0", + "semver": "5.7.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-regex": "7.10.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-typescript": "7.12.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "@babel/register": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.12.1.tgz", + "integrity": "sha512-XWcmseMIncOjoydKZnWvWi0/5CUCD+ZYKhRwgYlWOrA8fGZ/FjuLRpqtIhLOVD/fvR1b9DQHtZPn68VvhpYf+Q==", + "requires": { + "find-cache-dir": "2.1.0", + "lodash": "4.17.20", + "make-dir": "2.1.0", + "pirates": "4.0.1", + "source-map-support": "0.5.19" + }, + "dependencies": { + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + } + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "0.13.7" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + } + } + }, + "@babel/runtime-corejs3": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", + "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "dev": true, + "requires": { + "core-js-pure": "3.7.0", + "regenerator-runtime": "0.13.7" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "7.10.4", + "@babel/parser": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@babel/traverse": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "requires": { + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.5", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/parser": "7.12.5", + "@babel/types": "7.12.6", + "debug": "4.2.0", + "globals": "11.12.0", + "lodash": "4.17.20" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "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.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "requires": { + "@babel/helper-validator-identifier": "7.10.4", + "lodash": "4.17.20", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "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=" + } + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@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.3.0", + "hoist-non-react-statics": "3.3.2" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "0.3.4", + "minimist": "1.2.5" + } + }, + "@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "requires": { + "@types/hammerjs": "2.0.36" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@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.1.4", + "@hapi/bourne": "1.3.2", + "@hapi/hoek": "8.5.1", + "@hapi/topo": "3.1.6" + } + }, + "@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.5.1" + } + }, + "@invertase/react-native-apple-authentication": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@invertase/react-native-apple-authentication/-/react-native-apple-authentication-2.1.0.tgz", + "integrity": "sha512-9F4aZVS2wpwZS81zi6I4R3OEctrpDUjDfJaJRHaedQ9d3DQjsbFNpKN2eKUMLnJoY2hweE2dRdgwXrJaNaEZ+g==" + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "5.3.1", + "find-up": "4.1.0", + "get-package-type": "0.1.0", + "js-yaml": "3.14.0", + "resolve-from": "5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@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.4.2", + "slash": "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.3" + } + }, + "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.5.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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" + } + } + } + }, + "@jest/core": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", + "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/reporters": "25.5.1", + "@jest/test-result": "25.5.0", + "@jest/transform": "25.5.1", + "@jest/types": "25.5.0", + "ansi-escapes": "4.3.1", + "chalk": "3.0.0", + "exit": "0.1.2", + "graceful-fs": "4.2.4", + "jest-changed-files": "25.5.0", + "jest-config": "25.5.4", + "jest-haste-map": "25.5.1", + "jest-message-util": "25.5.0", + "jest-regex-util": "25.2.6", + "jest-resolve": "25.5.1", + "jest-resolve-dependencies": "25.5.4", + "jest-runner": "25.5.4", + "jest-runtime": "25.5.4", + "jest-snapshot": "25.5.1", + "jest-util": "25.5.0", + "jest-validate": "25.5.0", + "jest-watcher": "25.5.0", + "micromatch": "4.0.2", + "p-each-series": "2.1.0", + "realpath-native": "2.0.0", + "rimraf": "3.0.2", + "slash": "3.0.0", + "strip-ansi": "6.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.1" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "0.11.0" + } + }, + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "jest-get-type": "25.2.6", + "leven": "3.1.0", + "pretty-format": "25.5.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "7.1.6" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "@jest/environment": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", + "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", + "dev": true, + "requires": { + "@jest/fake-timers": "25.5.0", + "@jest/types": "25.5.0", + "jest-mock": "25.5.0" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "jest-message-util": "25.5.0", + "jest-mock": "25.5.0", + "jest-util": "25.5.0", + "lolex": "5.1.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.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" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + } + } + }, + "@jest/globals": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", + "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", + "dev": true, + "requires": { + "@jest/environment": "25.5.0", + "@jest/types": "25.5.0", + "expect": "25.5.0" + } + }, + "@jest/reporters": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", + "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "0.2.3", + "@jest/console": "25.5.0", + "@jest/test-result": "25.5.0", + "@jest/transform": "25.5.1", + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "collect-v8-coverage": "1.0.1", + "exit": "0.1.2", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "istanbul-lib-coverage": "3.0.0", + "istanbul-lib-instrument": "4.0.3", + "istanbul-lib-report": "3.0.0", + "istanbul-lib-source-maps": "4.0.0", + "istanbul-reports": "3.0.2", + "jest-haste-map": "25.5.1", + "jest-resolve": "25.5.1", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "node-notifier": "6.0.0", + "slash": "3.0.0", + "source-map": "0.6.1", + "string-length": "3.1.0", + "terminal-link": "2.1.1", + "v8-to-istanbul": "4.1.4" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.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.1.0", + "graceful-fs": "4.2.4", + "source-map": "0.6.1" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "@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.3" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", + "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", + "dev": true, + "requires": { + "@jest/test-result": "25.5.0", + "graceful-fs": "4.2.4", + "jest-haste-map": "25.5.1", + "jest-runner": "25.5.4", + "jest-runtime": "25.5.4" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "@jest/transform": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", + "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", + "dev": true, + "requires": { + "@babel/core": "7.12.3", + "@jest/types": "25.5.0", + "babel-plugin-istanbul": "6.0.0", + "chalk": "3.0.0", + "convert-source-map": "1.7.0", + "fast-json-stable-stringify": "2.1.0", + "graceful-fs": "4.2.4", + "jest-haste-map": "25.5.1", + "jest-regex-util": "25.2.6", + "jest-util": "25.5.0", + "micromatch": "4.0.2", + "pirates": "4.0.1", + "realpath-native": "2.0.0", + "slash": "3.0.0", + "source-map": "0.6.1", + "write-file-atomic": "3.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "0.1.4", + "is-typedarray": "1.0.0", + "signal-exit": "3.0.3", + "typedarray-to-buffer": "3.1.5" + } + } + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "2.0.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "15.0.9", + "chalk": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "@react-native-community/async-storage": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@react-native-community/async-storage/-/async-storage-1.12.1.tgz", + "integrity": "sha512-70WGaH3PKYASi4BThuEEKMkyAgE9k7VytBqmgPRx3MzJx9/MkspwqJGmn3QLCgHLIFUgF1pit2mWICbRJ3T3lg==", + "requires": { + "deep-assign": "3.0.0" + } + }, + "@react-native-community/cameraroll": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cameraroll/-/cameraroll-4.0.1.tgz", + "integrity": "sha512-KLKh5rAg511KUoGKHrbRhBLvkHhOz6kZ2sx8dPhndZ5ZFVYfVpTadSN1x3cfQbOAlkyGZql07p1hk7lEb3sa8g==" + }, + "@react-native-community/cli-debugger-ui": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz", + "integrity": "sha512-fBFGamHm4VUrDqkBGnsrwQL8OC6Om7K6EBQb4xj0nWekpXt1HSa3ScylYHTTWwYcpRf9htGMRGiv4dQDY/odAw==", + "requires": { + "serve-static": "1.14.1" + } + }, + "@react-native-community/cli-hermes": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz", + "integrity": "sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ==", + "requires": { + "@react-native-community/cli-platform-android": "4.13.0", + "@react-native-community/cli-tools": "4.13.0", + "chalk": "3.0.0", + "hermes-profile-transformer": "0.0.6", + "ip": "1.1.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-android": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz", + "integrity": "sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA==", + "requires": { + "@react-native-community/cli-tools": "4.13.0", + "chalk": "3.0.0", + "execa": "1.0.0", + "fs-extra": "8.1.0", + "glob": "7.1.6", + "jetifier": "1.6.6", + "lodash": "4.17.20", + "logkitty": "0.7.1", + "slash": "3.0.0", + "xmldoc": "1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-ios": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz", + "integrity": "sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA==", + "requires": { + "@react-native-community/cli-tools": "4.13.0", + "chalk": "3.0.0", + "glob": "7.1.6", + "js-yaml": "3.14.0", + "lodash": "4.17.20", + "plist": "3.0.1", + "xcode": "2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "@react-native-community/cli-server-api": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-4.13.0.tgz", + "integrity": "sha512-ER138ChLc1YYX7j9yE6fDm4DdNdsHThr+pla/B6iZoKje1r7TwymDdKaUvOsYalG7sWG9glW3bofcCq+Yh0Dvw==", + "requires": { + "@react-native-community/cli-debugger-ui": "4.9.0", + "@react-native-community/cli-tools": "4.13.0", + "compression": "1.7.4", + "connect": "3.7.0", + "errorhandler": "1.5.1", + "pretty-format": "25.5.0", + "serve-static": "1.14.1", + "ws": "1.1.5" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + } + } + }, + "@react-native-community/cli-tools": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz", + "integrity": "sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg==", + "requires": { + "chalk": "3.0.0", + "lodash": "4.17.20", + "mime": "2.4.6", + "node-fetch": "2.6.1", + "open": "6.4.0", + "shell-quote": "1.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "@react-native-community/cli-types": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz", + "integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ==" + }, + "@react-native-community/datetimepicker": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-3.0.4.tgz", + "integrity": "sha512-IsBkemz1XYubH5twfQPC/xleZdILA5SEUaLJ2C86IbnIOctb6suk8tB6uT9VxQkCsw4zjkrlqt9p9LGx9DJ97w==", + "requires": { + "invariant": "2.2.4" + } + }, + "@react-native-community/eslint-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-1.1.0.tgz", + "integrity": "sha512-hwb1hC28BhkwLwnO6vDISV6XZbipw2RIEhBVBN+pE7AUG9HjFXxoksiiOSoYgox9C8g86VJwHnKpak/3NnVBkQ==", + "dev": true, + "requires": { + "@react-native-community/eslint-plugin": "1.1.0", + "@typescript-eslint/eslint-plugin": "2.34.0", + "@typescript-eslint/parser": "2.34.0", + "babel-eslint": "10.1.0", + "eslint-config-prettier": "6.15.0", + "eslint-plugin-eslint-comments": "3.2.0", + "eslint-plugin-flowtype": "2.50.3", + "eslint-plugin-jest": "22.4.1", + "eslint-plugin-prettier": "3.1.2", + "eslint-plugin-react": "7.19.0", + "eslint-plugin-react-hooks": "3.0.0", + "eslint-plugin-react-native": "3.8.1", + "prettier": "2.1.2" + } + }, + "@react-native-community/eslint-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz", + "integrity": "sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ==", + "dev": true + }, + "@react-native-community/google-signin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/google-signin/-/google-signin-5.0.0.tgz", + "integrity": "sha512-MvFHImmtlmE1kJZgZ9XaULm/OBuQ/AQWOCPr3NzYTUv2cCqyGwfFrealo5PS/fuL/InCGcfqK1k/1dZ+67Hjmg==" + }, + "@react-native-community/image-editor": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/image-editor/-/image-editor-2.3.0.tgz", + "integrity": "sha512-+UJY8WkTkfSkjoU5blQnEI7tTg11jJLoM+YojjiQpEopUaRlYQU4SZ9Zd6F6wWfvc9bjvIeMY6FlKuESK/q4fQ==" + }, + "@react-native-community/masked-view": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.10.tgz", + "integrity": "sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ==" + }, + "@react-native-community/netinfo": { + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-5.9.7.tgz", + "integrity": "sha512-NAkkT68oF+M9o6El2xeUqZK7magPjG/tAcEbvCbqyhlh3yElKWnI1e1vpbVvFXzTefy67FwYFWOJqBN6U7Mnkg==" + }, + "@react-native-community/picker": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@react-native-community/picker/-/picker-1.6.0.tgz", + "integrity": "sha512-ijB33rCW3m9vu8jbXAcEh+icCmK0pyvCXiGfAwPgGSaFLsmE27dsle3022EbE+dqqQgpxUNtOkrd5C3B+/dcuA==" + }, + "@react-native-community/progress-bar-android": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@react-native-community/progress-bar-android/-/progress-bar-android-1.0.4.tgz", + "integrity": "sha512-O7UCpXDXlpxIx2eusj6bc8noJ5KyXZjnad0NQig9myq6iV4D9uGVziSj6J2v46dTnMd9iTX60szBu1LvsUO6rg==" + }, + "@react-native-community/progress-view": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@react-native-community/progress-view/-/progress-view-1.2.3.tgz", + "integrity": "sha512-CW7eOhxduIxA723aZlKMOnBEz1o5Cjo5ibMNsf81TcjNqtsamRHm8jFS98za7t5P7XdhM0MhzkbaS90cwOlN+Q==" + }, + "@react-native-community/push-notification-ios": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@react-native-community/push-notification-ios/-/push-notification-ios-1.7.3.tgz", + "integrity": "sha512-SLGQMxSB4WTvATjCXELxansnseLcmqJ6jIC8U4AyjxL30k3m1YmbrO4wGMw/ZF/VSC1toK+a39aD+ozDjon3mw==", + "requires": { + "invariant": "2.2.4" + } + }, + "@react-native-community/toolbar-android": { + "version": "0.1.0-rc.2", + "resolved": "https://registry.npmjs.org/@react-native-community/toolbar-android/-/toolbar-android-0.1.0-rc.2.tgz", + "integrity": "sha512-UCblqsitOcoYxVc6QzcaqCKogeRnePPMw7cbGvW5GI/GXIwQel8Kge9d910W3MUPUzw3pFzhIZVug6U3W067Pg==" + }, + "@react-native-community/viewpager": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/viewpager/-/viewpager-4.2.0.tgz", + "integrity": "sha512-tptvkyStulE9Jv/LVYSldvydAq3DVOwsfqmy3mTh3NWl1LZwE4gZwZ455jiRmW5StsJ3Q/Od/GGsN0FI8gHAXQ==" + }, + "@react-navigation/core": { + "version": "3.7.9", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.7.9.tgz", + "integrity": "sha512-EknbzM8OI9A5alRxXtQRV5Awle68B+z1QAxNty5DxmlS3BNfmduWNGnim159ROyqxkuDffK9L/U/Tbd45mx+Jg==", + "requires": { + "hoist-non-react-statics": "3.3.2", + "path-to-regexp": "1.8.0", + "query-string": "6.13.7", + "react-is": "16.13.1" + } + }, + "@react-navigation/native": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.8.3.tgz", + "integrity": "sha512-1yLd2pi8SK3wPC58mWZ5fjW5uYr1gmMN8YwjkA2qVjyVYfzzctRkoFDu8poO5UzxEIgf/4ns6ezBtKY1Q601UQ==", + "requires": { + "hoist-non-react-statics": "3.3.2", + "react-native-safe-area-view": "0.14.9" + }, + "dependencies": { + "react-native-safe-area-view": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.9.tgz", + "integrity": "sha512-WII/ulhpVyL/qbYb7vydq7dJAfZRBcEhg4/UWt6F6nAKpLa3gAceMOxBxI914ppwSP/TdUsandFy6lkJQE0z4A==", + "requires": { + "hoist-non-react-statics": "2.5.5" + }, + "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==" + } + } + } + } + }, + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "dev": true, + "requires": { + "@babel/parser": "7.12.5", + "@babel/types": "7.12.6", + "@types/babel__generator": "7.6.2", + "@types/babel__template": "7.0.3", + "@types/babel__traverse": "7.0.15" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "7.12.6" + } + }, + "@types/babel__template": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.3.tgz", + "integrity": "sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q==", + "dev": true, + "requires": { + "@babel/parser": "7.12.5", + "@babel/types": "7.12.6" + } + }, + "@types/babel__traverse": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz", + "integrity": "sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A==", + "dev": true, + "requires": { + "@babel/types": "7.12.6" + } + }, + "@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/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "dev": true, + "requires": { + "@types/node": "14.14.7" + } + }, + "@types/hammerjs": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.36.tgz", + "integrity": "sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ==" + }, + "@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": "16.9.56", + "hoist-non-react-statics": "3.3.2" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "2.0.3" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "2.0.3", + "@types/istanbul-lib-report": "3.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "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.56", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.56.tgz", + "integrity": "sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ==", + "requires": { + "@types/prop-types": "15.7.3", + "csstype": "3.0.4" + } + }, + "@types/react-native": { + "version": "0.63.33", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.33.tgz", + "integrity": "sha512-bqRtJI4EwiV3OTc9pHjmtE/ZIOLYi9KbrnMWyJIb90Z7+eXKPimKPTBU1oDVNdw8CXkDCrZaengvvdu2JMvjtg==", + "requires": { + "@types/react": "16.9.56" + } + }, + "@types/react-native-vector-icons": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.6.tgz", + "integrity": "sha512-lAyxNfMd5L1xZvXWsGcJmNegDf61TAp40uL6ashNNWj9W3IrDJO59L9+9inh0Y2MsEZpLTdxzVU8Unb4/0FQng==", + "requires": { + "@types/react": "16.9.56", + "@types/react-native": "0.63.33" + } + }, + "@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": "15.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", + "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "1.0.1", + "regexpp": "3.1.0", + "tsutils": "3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "7.0.6", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "5.1.1", + "eslint-utils": "2.1.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "1.3.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "4.2.0", + "eslint-visitor-keys": "1.3.0", + "glob": "7.1.6", + "is-glob": "4.0.1", + "lodash": "4.17.20", + "semver": "7.3.2", + "tsutils": "3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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 + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "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.1" + } + }, + "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.27", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "6.4.2", + "acorn-walk": "6.2.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "3.1.3", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.4.0" + } + }, + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" + }, + "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.2.1", + "slice-ansi": "2.1.0", + "strip-ansi": "5.2.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=" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "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.10", + "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.3" + } + }, + "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-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "is-string": "1.0.5" + } + }, + "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=" + }, + "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.2" + } + }, + "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.20" + } + }, + "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==" + }, + "aurora-imui-react-native": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/aurora-imui-react-native/-/aurora-imui-react-native-0.14.0.tgz", + "integrity": "sha512-DzSuxPV6rtpCi6H3lGEB2YBCIAkldURzOdD5PU2Zi3RDGc/bN7PQk2TigFS4Uh2RK9vqlqsHko1dtB87vfXToQ==" + }, + "auto-changelog": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.2.1.tgz", + "integrity": "sha512-XlykJfZrXlWUAADBqGoN1elmntrRcx7oEymyYB3NRPEZxv0TfYHfivmwzejUMnwAdXKCgbQPo7GV5ULs3jwpfw==", + "requires": { + "commander": "5.1.0", + "handlebars": "4.7.6", + "lodash.uniqby": "4.7.0", + "node-fetch": "2.6.1", + "parse-github-url": "1.0.2", + "semver": "6.3.0" + } + }, + "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.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", + "requires": { + "follow-redirects": "1.13.0" + } + }, + "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=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.3", + "js-tokens": "3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.7.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.20", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@babel/parser": "7.12.5", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "eslint-visitor-keys": "1.3.0", + "resolve": "1.19.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.20", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", + "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", + "dev": true, + "requires": { + "@jest/transform": "25.5.1", + "@jest/types": "25.5.0", + "@types/babel__core": "7.1.12", + "babel-plugin-istanbul": "6.0.0", + "babel-preset-jest": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "slash": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "4.1.2" + } + }, + "babel-plugin-flow-react-proptypes": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-flow-react-proptypes/-/babel-plugin-flow-react-proptypes-9.2.0.tgz", + "integrity": "sha512-gmClrDpTB1H27mh+6/8iliV5BzGic5F9DO7INAd/30sSkg4XZd7LTbv4z06usuUHS8SzXibwotk8ct51IZ5OaQ==", + "requires": { + "babel-core": "6.26.3", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@istanbuljs/load-nyc-config": "1.1.0", + "@istanbuljs/schema": "0.1.2", + "istanbul-lib-instrument": "4.0.3", + "test-exclude": "6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", + "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", + "dev": true, + "requires": { + "@babel/template": "7.10.4", + "@babel/types": "7.12.6", + "@types/babel__traverse": "7.0.15" + } + }, + "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=" + }, + "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-decorators-legacy": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz", + "integrity": "sha512-jYHwjzRXRelYQ1uGm353zNzf3QmtdCfvJbuYTZ4gKveK7M9H1fs3a5AKdY1JUDl0z97E30ukORW1dzhWvsabtA==", + "requires": { + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-preset-current-node-syntax": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", + "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-bigint": "7.8.3", + "@babel/plugin-syntax-class-properties": "7.12.1", + "@babel/plugin-syntax-import-meta": "7.10.4", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-syntax-numeric-separator": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-syntax-optional-chaining": "7.8.3" + } + }, + "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.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-class-properties": "7.12.1", + "@babel/plugin-syntax-flow": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-block-scoped-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-member-expression-literals": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-object-super": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-property-literals": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.5", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0" + } + }, + "babel-preset-jest": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", + "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "25.5.0", + "babel-preset-current-node-syntax": "0.1.4" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.3", + "babel-runtime": "6.26.0", + "core-js": "2.6.11", + "home-or-tmp": "2.0.0", + "lodash": "4.17.20", + "mkdirp": "0.5.5", + "source-map-support": "0.4.18" + } + }, + "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=", + "requires": { + "core-js": "2.6.11", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.20" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "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.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.20" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.3", + "lodash": "4.17.20", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "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.6", + "component-emitter": "1.3.0", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "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.2" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + } + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.0.tgz", + "integrity": "sha512-Jrdy04F2EKcNggUDfubMUPNAZg2vMquLQSm8sKLYJvz40ClFL1S8GKyDshGkNsbNNE5Z+fQavzU7nSK1I9JUGA==" + }, + "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.5" + } + }, + "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" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "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.48" + } + }, + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "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": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "1.5.0", + "ieee754": "1.2.1", + "isarray": "1.0.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.3.0", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.1", + "to-object-path": "0.3.0", + "union-value": "1.0.1", + "unset-value": "1.0.0" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "1.1.1", + "get-intrinsic": "1.0.1" + } + }, + "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": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "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.5" + } + }, + "card-validator": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-3.0.1.tgz", + "integrity": "sha1-3ML6vWoc0h82GyU2Qjpy3pmgiU8=", + "requires": { + "credit-card-type": "5.0.4", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.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": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "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.1", + "static-extend": "0.1.2" + }, + "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.6" + } + } + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "4.2.0", + "strip-ansi": "6.0.0", + "wrap-ansi": "6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "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.1" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "requires": { + "color-convert": "1.9.3", + "color-string": "1.5.4" + } + }, + "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-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "requires": { + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "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.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "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.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": "1.44.0" + } + }, + "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.7", + "bytes": "3.0.0", + "compressible": "2.0.18", + "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.1.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "typedarray": "0.0.6" + } + }, + "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" + } + }, + "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.2" + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-js-pure": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.7.0.tgz", + "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==", + "dev": true + }, + "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.14.0", + "parse-json": "4.0.0" + } + }, + "credit-card-type": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-5.0.4.tgz", + "integrity": "sha1-LdnfKAQRziu5Htlawx6BRgVxeu0=" + }, + "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.5", + "path-key": "2.0.1", + "semver": "5.7.1", + "shebang-command": "1.2.0", + "which": "1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "1.0.0", + "css-what": "3.4.2", + "domutils": "1.7.0", + "nth-check": "1.0.2" + } + }, + "css-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0.tgz", + "integrity": "sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==", + "requires": { + "mdn-data": "2.0.12", + "source-map": "0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "0.3.8" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csstype": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz", + "integrity": "sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==" + }, + "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" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "2.0.5", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "7.1.0" + } + }, + "dayjs": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.6.tgz", + "integrity": "sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw==" + }, + "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.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", + "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=" + }, + "deep-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-3.0.0.tgz", + "integrity": "sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==", + "requires": { + "is-obj": "1.0.1" + } + }, + "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.4" + } + }, + "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.1.1" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + } + } + }, + "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=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, + "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.3" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "2.0.2", + "entities": "2.1.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==" + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1.3.1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0.2.2", + "domelementtype": "1.3.1" + } + }, + "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.1", + "safer-buffer": "2.1.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "eme-encryption-scheme-polyfill": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.1.tgz", + "integrity": "sha512-Wz+Ro1c0/2Wsx2RLFvTOO0m4LvYn+7cSnq3XOvRvLLBq8jbvUACH/zpU9s0/5+mQa5oaelkU69x+q0z/iWYrFA==" + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "0.6.2" + } + }, + "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" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==" + }, + "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" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + } + } + }, + "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.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.2", + "string.prototype.trimend": "1.0.2", + "string.prototype.trimstart": "1.0.2" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "1.2.2", + "is-date-object": "1.0.2", + "is-symbol": "1.0.3" + } + }, + "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=" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "4.0.1", + "estraverse": "4.3.0", + "esutils": "2.0.3", + "optionator": "0.8.3", + "source-map": "0.6.1" + } + }, + "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.10.4", + "ajv": "6.12.6", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "debug": "4.2.0", + "doctrine": "3.0.0", + "eslint-scope": "5.1.1", + "eslint-utils": "1.4.3", + "eslint-visitor-keys": "1.3.0", + "espree": "6.2.1", + "esquery": "1.3.1", + "esutils": "2.0.3", + "file-entry-cache": "5.0.1", + "functional-red-black-tree": "1.0.1", + "glob-parent": "5.1.1", + "globals": "12.4.0", + "ignore": "4.0.6", + "import-fresh": "3.2.2", + "imurmurhash": "0.1.4", + "inquirer": "7.3.3", + "is-glob": "4.0.1", + "js-yaml": "3.14.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.20", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "natural-compare": "1.4.0", + "optionator": "0.8.3", + "progress": "2.0.3", + "regexpp": "2.0.1", + "semver": "6.3.0", + "strip-ansi": "5.2.0", + "strip-json-comments": "3.1.1", + "table": "5.4.6", + "text-table": "0.2.0", + "v8-compile-cache": "2.2.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "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 + }, + "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.3" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "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" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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.3" + } + }, + "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.3.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.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "0.8.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "dev": true, + "requires": { + "parent-module": "1.0.1", + "resolve-from": "4.0.0" + } + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "4.3.1", + "chalk": "4.1.0", + "cli-cursor": "3.1.0", + "cli-width": "3.0.0", + "external-editor": "3.1.0", + "figures": "3.2.0", + "lodash": "4.17.20", + "mute-stream": "0.0.8", + "run-async": "2.4.1", + "rxjs": "6.6.3", + "string-width": "4.2.0", + "strip-ansi": "6.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.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==", + "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.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "2.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 + }, + "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.2", + "signal-exit": "3.0.3" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "1.14.1" + } + }, + "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 + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "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-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "6.0.0" + } + }, + "eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "ignore": "5.1.8" + } + }, + "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.20" + } + }, + "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-prettier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "dev": true, + "requires": { + "array-includes": "3.1.1", + "doctrine": "2.1.0", + "has": "1.0.3", + "jsx-ast-utils": "2.4.1", + "object.entries": "1.1.2", + "object.fromentries": "2.0.2", + "object.values": "1.1.1", + "prop-types": "15.7.2", + "resolve": "1.19.0", + "semver": "6.3.0", + "string.prototype.matchall": "4.0.2", + "xregexp": "4.4.0" + } + }, + "eslint-plugin-react-hooks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-3.0.0.tgz", + "integrity": "sha512-EjxTHxjLKIBWFgDJdhKKzLh5q+vjTFrqNZX36uIxWS4OfyXe5DawqPj3U5qeJ1ngLwatjzQnmR0Lz0J0YH3kxw==", + "dev": true + }, + "eslint-plugin-react-native": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.8.1.tgz", + "integrity": "sha512-6Z4s4nvgFRdda/1s1+uu4a6EMZwEjjJ9Bk/1yBImv0fd9U2CsGu2cUakAtV83cZKhizbWhSouXoaK4JtlScdFg==", + "dev": true, + "requires": { + "eslint-plugin-react-native-globals": "0.1.2" + } + }, + "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-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "4.3.0", + "estraverse": "4.3.0" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "1.3.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "7.4.1", + "acorn-jsx": "5.3.1", + "eslint-visitor-keys": "1.3.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.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "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==" + }, + "eventemitter2": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-1.0.5.tgz", + "integrity": "sha1-+YNhBRexc3wLncZDvsqTiTwE3xg=" + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" + }, + "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": "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.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.3", + "strip-eof": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + } + } + }, + "expect": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", + "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-styles": "4.3.0", + "jest-get-type": "25.2.6", + "jest-matcher-utils": "25.5.0", + "jest-message-util": "25.5.0", + "jest-regex-util": "25.2.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.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.2", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" + }, + "dependencies": { + "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" + } + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + } + } + }, + "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.1", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "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.6.11", + "fbjs-css-vars": "1.0.2", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.22" + } + }, + "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.12.3", + "ansi-colors": "1.1.0", + "babel-preset-fbjs": "3.3.0", + "core-js": "2.6.11", + "cross-spawn": "5.1.0", + "fancy-log": "1.3.3", + "object-assign": "4.1.1", + "plugin-error": "0.1.2", + "semver": "5.7.1", + "through2": "2.0.5" + }, + "dependencies": { + "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.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "fetch-intercept": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fetch-intercept/-/fetch-intercept-2.3.1.tgz", + "integrity": "sha512-6tEgV10w4Zr4YFLc+RXaUQ1k8O4okX6AsnYYQqGhfXeiDZcBTQonVpjM5LbLWXWzaQzCA3DyJbsOHEB5szRn5A==" + }, + "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.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.1" + } + } + } + }, + "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-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.1.0", + "pkg-dir": "3.0.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "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" + } + }, + "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.2", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.6" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" + }, + "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.8", + "mime-types": "2.1.27" + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "4.2.4", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "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.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "1.5.0", + "nan": "2.14.2" + } + }, + "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==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "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==" + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "requires": { + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "4.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "1.2.5", + "neo-async": "2.6.2", + "source-map": "0.6.1", + "uglify-js": "3.11.5", + "wordwrap": "1.0.0" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "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==", + "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=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "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.1" + } + }, + "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": { + "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.6" + } + } + } + }, + "hermes-engine": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz", + "integrity": "sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg==" + }, + "hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "requires": { + "source-map": "0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "16.13.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.5" + } + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "1.3.1", + "domhandler": "2.4.2", + "domutils": "1.7.0", + "entities": "1.1.2", + "inherits": "2.0.4", + "readable-stream": "3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "2.0.4", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + } + } + }, + "htmlparser2-without-node-native": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2-without-node-native/-/htmlparser2-without-node-native-3.9.2.tgz", + "integrity": "sha1-s+0FDYd9D/NGWWnjOYd7f59mMfY=", + "requires": { + "domelementtype": "1.3.1", + "domhandler": "2.4.2", + "domutils": "1.7.0", + "entities": "1.1.2", + "eventemitter2": "1.0.5", + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "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", + "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.4.1", + "sshpk": "1.16.1" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "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-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "4.2.0", + "resolve-cwd": "3.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "4.1.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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.2.0", + "chalk": "2.4.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.1", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.20", + "mute-stream": "0.0.7", + "run-async": "2.4.1", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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.3" + } + }, + "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.5.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=" + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "1.17.7", + "has": "1.0.3", + "side-channel": "1.0.3" + } + }, + "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.4.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "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.2.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.6" + } + } + } + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "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" + } + }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "requires": { + "has": "1.0.3" + } + }, + "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.2.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.6" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "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.1.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-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true, + "optional": true + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "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==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "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-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "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.2.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.6" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "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" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "1.0.1" + } + }, + "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-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.7.3", + "whatwg-fetch": "3.5.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.13", + "is-stream": "1.1.0" + } + } + } + }, + "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 + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "7.12.3", + "@istanbuljs/schema": "0.1.2", + "istanbul-lib-coverage": "3.0.0", + "semver": "6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "3.0.0", + "make-dir": "3.1.0", + "supports-color": "7.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "4.2.0", + "istanbul-lib-coverage": "3.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.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 + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "2.0.2", + "istanbul-lib-report": "3.0.0" + } + }, + "jcore-react-native": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/jcore-react-native/-/jcore-react-native-1.9.0.tgz", + "integrity": "sha512-CWr7j5OGZP7Q7a3J9UfGHtD/w2gRv95CKUOm1uW4LH2mEul/Qq18/73Tw7XOO1UtPkNBsYZZNtM+bBdrTG7V3Q==" + }, + "jest": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", + "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", + "dev": true, + "requires": { + "@jest/core": "25.5.4", + "import-local": "3.0.2", + "jest-cli": "25.5.4" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-cli": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", + "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", + "dev": true, + "requires": { + "@jest/core": "25.5.4", + "@jest/test-result": "25.5.0", + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "exit": "0.1.2", + "graceful-fs": "4.2.4", + "import-local": "3.0.2", + "is-ci": "2.0.0", + "jest-config": "25.5.4", + "jest-util": "25.5.0", + "jest-validate": "25.5.0", + "prompts": "2.4.0", + "realpath-native": "2.0.0", + "yargs": "15.4.1" + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "jest-get-type": "25.2.6", + "leven": "3.1.0", + "pretty-format": "25.5.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", + "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "execa": "3.4.0", + "throat": "5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "3.1.1", + "shebang-command": "2.0.0", + "which": "2.0.2" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "7.0.3", + "get-stream": "5.2.0", + "human-signals": "1.1.1", + "is-stream": "2.0.0", + "merge-stream": "2.0.0", + "npm-run-path": "4.0.1", + "onetime": "5.1.2", + "p-finally": "2.0.1", + "signal-exit": "3.0.3", + "strip-final-newline": "2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "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==", + "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 + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "3.1.1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "jest-config": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", + "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", + "dev": true, + "requires": { + "@babel/core": "7.12.3", + "@jest/test-sequencer": "25.5.4", + "@jest/types": "25.5.0", + "babel-jest": "25.5.1", + "chalk": "3.0.0", + "deepmerge": "4.2.2", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "jest-environment-jsdom": "25.5.0", + "jest-environment-node": "25.5.0", + "jest-get-type": "25.2.6", + "jest-jasmine2": "25.5.4", + "jest-regex-util": "25.2.6", + "jest-resolve": "25.5.1", + "jest-util": "25.5.0", + "jest-validate": "25.5.0", + "micromatch": "4.0.2", + "pretty-format": "25.5.0", + "realpath-native": "2.0.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "jest-get-type": "25.2.6", + "leven": "3.1.0", + "pretty-format": "25.5.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "dev": true, + "requires": { + "chalk": "3.0.0", + "diff-sequences": "25.2.6", + "jest-get-type": "25.2.6", + "pretty-format": "25.5.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", + "dev": true, + "requires": { + "detect-newline": "3.1.0" + } + }, + "jest-each": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", + "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-get-type": "25.2.6", + "jest-util": "25.5.0", + "pretty-format": "25.5.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", + "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", + "dev": true, + "requires": { + "@jest/environment": "25.5.0", + "@jest/fake-timers": "25.5.0", + "@jest/types": "25.5.0", + "jest-mock": "25.5.0", + "jest-util": "25.5.0", + "jsdom": "15.2.1" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "jest-message-util": "25.5.0", + "jest-mock": "25.5.0", + "jest-util": "25.5.0", + "lolex": "5.1.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", + "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", + "dev": true, + "requires": { + "@jest/environment": "25.5.0", + "@jest/fake-timers": "25.5.0", + "@jest/types": "25.5.0", + "jest-mock": "25.5.0", + "jest-util": "25.5.0", + "semver": "6.3.0" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "jest-message-util": "25.5.0", + "jest-mock": "25.5.0", + "jest-util": "25.5.0", + "lolex": "5.1.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "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-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.1", + "fsevents": "1.2.13", + "graceful-fs": "4.2.4", + "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.1.0", + "walker": "1.0.7" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", + "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", + "dev": true, + "requires": { + "@babel/traverse": "7.12.5", + "@jest/environment": "25.5.0", + "@jest/source-map": "25.5.0", + "@jest/test-result": "25.5.0", + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "co": "4.6.0", + "expect": "25.5.0", + "is-generator-fn": "2.1.0", + "jest-each": "25.5.0", + "jest-matcher-utils": "25.5.0", + "jest-message-util": "25.5.0", + "jest-runtime": "25.5.4", + "jest-snapshot": "25.5.1", + "jest-util": "25.5.0", + "pretty-format": "25.5.0", + "throat": "5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "dev": true, + "requires": { + "callsites": "3.1.0", + "graceful-fs": "4.2.4", + "source-map": "0.6.1" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", + "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", + "dev": true, + "requires": { + "jest-get-type": "25.2.6", + "pretty-format": "25.5.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + } + } + }, + "jest-matcher-utils": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", + "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", + "dev": true, + "requires": { + "chalk": "3.0.0", + "jest-diff": "25.5.0", + "jest-get-type": "25.2.6", + "pretty-format": "25.5.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "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.10.4", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "@types/stack-utils": "1.0.1", + "chalk": "2.4.2", + "micromatch": "3.1.10", + "slash": "2.0.0", + "stack-utils": "1.0.2" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + }, + "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.3" + } + }, + "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.5.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + }, + "jest-resolve": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", + "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "browser-resolve": "1.11.3", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "jest-pnp-resolver": "1.2.2", + "read-pkg-up": "7.0.1", + "realpath-native": "2.0.0", + "resolve": "1.19.0", + "slash": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", + "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "jest-regex-util": "25.2.6", + "jest-snapshot": "25.5.1" + } + }, + "jest-runner": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", + "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/environment": "25.5.0", + "@jest/test-result": "25.5.0", + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "exit": "0.1.2", + "graceful-fs": "4.2.4", + "jest-config": "25.5.4", + "jest-docblock": "25.3.0", + "jest-haste-map": "25.5.1", + "jest-jasmine2": "25.5.4", + "jest-leak-detector": "25.5.0", + "jest-message-util": "25.5.0", + "jest-resolve": "25.5.1", + "jest-runtime": "25.5.4", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "source-map-support": "0.5.19", + "throat": "5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "jest-runtime": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", + "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/environment": "25.5.0", + "@jest/globals": "25.5.2", + "@jest/source-map": "25.5.0", + "@jest/test-result": "25.5.0", + "@jest/transform": "25.5.1", + "@jest/types": "25.5.0", + "@types/yargs": "15.0.9", + "chalk": "3.0.0", + "collect-v8-coverage": "1.0.1", + "exit": "0.1.2", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "jest-config": "25.5.4", + "jest-haste-map": "25.5.1", + "jest-message-util": "25.5.0", + "jest-mock": "25.5.0", + "jest-regex-util": "25.2.6", + "jest-resolve": "25.5.1", + "jest-snapshot": "25.5.1", + "jest-util": "25.5.0", + "jest-validate": "25.5.0", + "realpath-native": "2.0.0", + "slash": "3.0.0", + "strip-bom": "4.0.0", + "yargs": "15.4.1" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "dev": true, + "requires": { + "callsites": "3.1.0", + "graceful-fs": "4.2.4", + "source-map": "0.6.1" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "fsevents": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.2.1.tgz", + "integrity": "sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "@types/graceful-fs": "4.1.4", + "anymatch": "3.1.1", + "fb-watchman": "2.0.1", + "fsevents": "2.2.1", + "graceful-fs": "4.2.4", + "jest-serializer": "25.5.0", + "jest-util": "25.5.0", + "jest-worker": "25.5.0", + "micromatch": "4.0.2", + "sane": "4.1.0", + "walker": "1.0.7", + "which": "2.0.2" + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0" + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.4" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "jest-get-type": "25.2.6", + "leven": "3.1.0", + "pretty-format": "25.5.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "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==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "2.0.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-snapshot": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", + "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", + "dev": true, + "requires": { + "@babel/types": "7.12.6", + "@jest/types": "25.5.0", + "@types/prettier": "1.19.1", + "chalk": "3.0.0", + "expect": "25.5.0", + "graceful-fs": "4.2.4", + "jest-diff": "25.5.0", + "jest-get-type": "25.2.6", + "jest-matcher-utils": "25.5.0", + "jest-message-util": "25.5.0", + "jest-resolve": "25.5.1", + "make-dir": "3.1.0", + "natural-compare": "1.4.0", + "pretty-format": "25.5.0", + "semver": "6.3.0" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + } + } + }, + "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.1.0", + "chalk": "2.4.2", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "mkdirp": "0.5.5", + "slash": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + }, + "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.3" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "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.5.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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" + } + } + } + }, + "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.4.2", + "jest-get-type": "24.9.0", + "leven": "3.1.0", + "pretty-format": "24.9.0" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.0" + } + }, + "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.3" + } + }, + "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.5.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" + } + } + } + }, + "jest-watcher": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", + "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", + "dev": true, + "requires": { + "@jest/test-result": "25.5.0", + "@jest/types": "25.5.0", + "ansi-escapes": "4.3.1", + "chalk": "3.0.0", + "jest-util": "25.5.0", + "string-length": "3.1.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "jest-message-util": "25.5.0", + "jest-util": "25.5.0", + "slash": "3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "25.5.0", + "@jest/types": "25.5.0", + "@types/istanbul-lib-coverage": "2.0.3", + "collect-v8-coverage": "1.0.1" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "0.11.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "@jest/types": "25.5.0", + "@types/stack-utils": "1.0.1", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "micromatch": "4.0.2", + "slash": "3.0.0", + "stack-utils": "1.0.2" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "25.5.0", + "chalk": "3.0.0", + "graceful-fs": "4.2.4", + "is-ci": "2.0.0", + "make-dir": "3.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "6.3.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "7.0.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "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.6", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.6.tgz", + "integrity": "sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==" + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=" + }, + "jmessage-react-plugin": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/jmessage-react-plugin/-/jmessage-react-plugin-3.1.8.tgz", + "integrity": "sha512-0d+PRxlXjCYndH8sNroR/f1ih4P33T2W1K9PHu/uwZZq06iG9K6Es9rLbmaohWBfoxEuuvb9BNiUFND6Um8n4w==", + "requires": { + "jcore-react-native": "1.9.0" + } + }, + "jpush-react-native": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/jpush-react-native/-/jpush-react-native-2.8.1.tgz", + "integrity": "sha512-1TZvLhZbv84hzW/Wk+yd/dxBBja1WO5BQx+8YPHh0sfpOiaECd/zIlYNX4yArFKXmY1BxgQymJ06YDTWuapH6g==" + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "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==" + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "2.0.5", + "acorn": "7.4.1", + "acorn-globals": "4.3.4", + "array-equal": "1.0.0", + "cssom": "0.4.4", + "cssstyle": "2.3.0", + "data-urls": "1.1.0", + "domexception": "1.0.1", + "escodegen": "1.14.3", + "html-encoding-sniffer": "1.0.2", + "nwsapi": "2.2.0", + "parse5": "5.1.0", + "pn": "1.1.0", + "request": "2.88.2", + "request-promise-native": "1.0.9", + "saxes": "3.1.11", + "symbol-tree": "3.2.4", + "tough-cookie": "3.0.1", + "w3c-hr-time": "1.0.2", + "w3c-xmlserializer": "1.1.2", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.5", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "7.1.0", + "ws": "7.4.0", + "xml-name-validator": "3.0.0" + }, + "dependencies": { + "ws": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", + "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "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-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "4.2.4" + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "3.1.1", + "object.assign": "4.1.2" + } + }, + "keymirror": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz", + "integrity": "sha1-kYiJ6hP40KQufFVyUO7nE63JXDU=" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "4.2.4" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "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==" + }, + "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" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.compact": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.compact/-/lodash.compact-3.0.1.tgz", + "integrity": "sha1-VAzjg3dFl1gHRx4WtKK6IeclbKU=" + }, + "lodash.every": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", + "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" + }, + "lodash.frompairs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz", + "integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.2.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, + "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.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=" + }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" + }, + "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.4.2" + }, + "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.3" + } + }, + "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.5.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" + } + } + } + }, + "logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "requires": { + "ansi-fragments": "0.2.1", + "dayjs": "1.9.6", + "yargs": "15.4.1" + } + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "1.8.1" + } + }, + "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": "4.0.0" + } + }, + "lottie-ios": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/lottie-ios/-/lottie-ios-3.1.9.tgz", + "integrity": "sha512-iB/jtMQiZnhNvPiQOkyRU3h8y+SKsIL8bqo8aAC9wTv2YStXSInmCPLw3JbIFy0HqW6YPwEFbqgFjtgo9vAHUg==" + }, + "lottie-react-native": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-3.5.0.tgz", + "integrity": "sha512-yKYj58xynDAG/BqJUhg9LTATBqwD4ATGXJKL2Ho6g4BTmPexOjDBNnPSeRBwjlpBxQ1nP4Qw//0zbuFsTFD1TA==", + "requires": { + "invariant": "2.2.4", + "lottie-ios": "3.1.9", + "prop-types": "15.7.2", + "react-native-safe-modules": "1.0.0" + } + }, + "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" + } + }, + "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.7.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.4" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "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.1" + } + }, + "mdn-data": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.12.tgz", + "integrity": "sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q==" + }, + "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.3.7" + } + }, + "metro": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.58.0.tgz", + "integrity": "sha512-yi/REXX+/s4r7RjzXht+E+qE6nzvFIrEXO5Q61h+70Q7RODMU8EnlpXx04JYk7DevHuMhFaX+NWhCtRINzR4zA==", + "requires": { + "@babel/code-frame": "7.10.4", + "@babel/core": "7.12.3", + "@babel/generator": "7.12.5", + "@babel/parser": "7.12.5", + "@babel/plugin-external-helpers": "7.12.1", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "absolute-path": "0.0.0", + "async": "2.6.3", + "babel-preset-fbjs": "3.3.0", + "buffer-crc32": "0.2.13", + "chalk": "2.4.2", + "ci-info": "2.0.0", + "concat-stream": "1.6.2", + "connect": "3.7.0", + "debug": "2.6.9", + "denodeify": "1.2.1", + "eventemitter3": "3.1.2", + "fbjs": "1.0.0", + "fs-extra": "1.0.0", + "graceful-fs": "4.2.4", + "image-size": "0.6.3", + "invariant": "2.2.4", + "jest-haste-map": "24.9.0", + "jest-worker": "24.9.0", + "json-stable-stringify": "1.0.1", + "lodash.throttle": "4.1.1", + "merge-stream": "1.0.1", + "metro-babel-register": "0.58.0", + "metro-babel-transformer": "0.58.0", + "metro-cache": "0.58.0", + "metro-config": "0.58.0", + "metro-core": "0.58.0", + "metro-inspector-proxy": "0.58.0", + "metro-minify-uglify": "0.58.0", + "metro-react-native-babel-preset": "0.58.0", + "metro-resolver": "0.58.0", + "metro-source-map": "0.58.0", + "metro-symbolicate": "0.58.0", + "mime-types": "2.1.11", + "mkdirp": "0.5.5", + "node-fetch": "2.6.1", + "nullthrows": "1.1.1", + "resolve": "1.19.0", + "rimraf": "2.7.1", + "serialize-error": "2.1.0", + "source-map": "0.5.7", + "strip-ansi": "4.0.0", + "temp": "0.8.3", + "throat": "4.1.0", + "wordwrap": "1.0.0", + "write-file-atomic": "1.3.4", + "ws": "1.1.5", + "xpipe": "1.0.5", + "yargs": "14.2.3" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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.3" + } + }, + "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.5.0" + } + }, + "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" + }, + "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" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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" + } + }, + "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.2.4", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "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=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "4.2.4" + } + }, + "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" + } + }, + "metro-babel-register": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.58.0.tgz", + "integrity": "sha512-P5+G3ufhSYL6cA3a7xkbSJzzFBvtivj/PhWvGXFXnuFssDlMAX1CTktff+0gpka5Cd6B6QLt0UAMWulUAAE4Eg==", + "requires": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/register": "7.12.1", + "core-js": "2.6.11", + "escape-string-regexp": "1.0.5" + } + }, + "metro-react-native-babel-preset": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz", + "integrity": "sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA==", + "requires": { + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-export-default-from": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.12.1", + "@babel/plugin-syntax-flow": "7.12.1", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-exponentiation-operator": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-object-assign": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.5", + "@babel/plugin-transform-react-jsx-source": "7.12.1", + "@babel/plugin-transform-regenerator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-sticky-regex": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "@babel/plugin-transform-typescript": "7.12.1", + "@babel/plugin-transform-unicode-regex": "7.12.1", + "@babel/template": "7.10.4", + "react-refresh": "0.4.3" + } + }, + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "invariant": "2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "0.5.7", + "vlq": "1.0.1" + } + }, + "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" + } + }, + "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.3.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.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" + } + } + } + }, + "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" + } + }, + "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" + } + }, + "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.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.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" + } + } + } + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "5.0.0", + "decamelize": "1.2.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + } + } + } + }, + "metro-babel-register": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.59.0.tgz", + "integrity": "sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg==", + "requires": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/register": "7.12.1", + "escape-string-regexp": "1.0.5" + } + }, + "metro-babel-transformer": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.58.0.tgz", + "integrity": "sha512-yBX3BkRhw2TCNPhe+pmLSgsAEA3huMvnX08UwjFqSXXI1aiqzRQobn92uKd1U5MM1Vx8EtXVomlJb95ZHNAv6A==", + "requires": { + "@babel/core": "7.12.3", + "metro-source-map": "0.58.0" + }, + "dependencies": { + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "invariant": "2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "0.5.7", + "vlq": "1.0.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "metro-cache": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.58.0.tgz", + "integrity": "sha512-jjW9zCTKxhgKcVkyQ6LHyna9Zdf4TK/45vvT1fPyyTk1RY82ZYjU1qs+84ycKEd08Ka4YcK9xcUew9SIDJYI8Q==", + "requires": { + "jest-serializer": "24.9.0", + "metro-core": "0.58.0", + "mkdirp": "0.5.5", + "rimraf": "2.7.1" + } + }, + "metro-config": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.58.0.tgz", + "integrity": "sha512-4vgBliXwL56vjUlYplvGMVSNrJJpkHuLcD+O20trV3FvPxKg4ZsvuOcNSxqDSMU26FCtIEJ15ojcuCbRL7KY0w==", + "requires": { + "cosmiconfig": "5.2.1", + "jest-validate": "24.9.0", + "metro": "0.58.0", + "metro-cache": "0.58.0", + "metro-core": "0.58.0", + "pretty-format": "24.9.0" + } + }, + "metro-core": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.58.0.tgz", + "integrity": "sha512-RzXUjGFmCLOyzUqcKDvr91AldGtIOxnzNZrWUIiG8uC3kerVLo0mQp4YH3+XVm6fMNiLMg6iER7HLqD+MbpUjQ==", + "requires": { + "jest-haste-map": "24.9.0", + "lodash.throttle": "4.1.1", + "metro-resolver": "0.58.0", + "wordwrap": "1.0.0" + } + }, + "metro-inspector-proxy": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.58.0.tgz", + "integrity": "sha512-oFqTyNTJdCdvcw1Ha6SKE7ITbSaoTbO4xpYownIoJR+WZ0ZfxbWpp225JkHuBJm9UcBAnG9c0CME924m3uBbaw==", + "requires": { + "connect": "3.7.0", + "debug": "2.6.9", + "rxjs": "5.5.12", + "ws": "1.1.5", + "yargs": "14.2.3" + }, + "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.3" + } + }, + "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" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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" + } + }, + "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-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.3.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "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.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.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.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" + } + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "5.0.0", + "decamelize": "1.2.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "requires": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + } + } + } + }, + "metro-minify-uglify": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.58.0.tgz", + "integrity": "sha512-vRHsA7bCi7eCn3LXLm20EfY2NoWDyYOnmWaq/N8LB0OxL2L5DXRqMYAQK+prWGJ5S1yvVnDuuNVP+peQ9851TA==", + "requires": { + "uglify-es": "3.3.9" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "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" + } + } + } + }, + "metro-react-native-babel-preset": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz", + "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==", + "requires": { + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-export-default-from": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.12.1", + "@babel/plugin-syntax-flow": "7.12.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-syntax-optional-chaining": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-exponentiation-operator": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-object-assign": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.5", + "@babel/plugin-transform-react-jsx-self": "7.12.1", + "@babel/plugin-transform-react-jsx-source": "7.12.1", + "@babel/plugin-transform-regenerator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-sticky-regex": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "@babel/plugin-transform-typescript": "7.12.1", + "@babel/plugin-transform-unicode-regex": "7.12.1", + "@babel/template": "7.10.4", + "react-refresh": "0.4.3" + } + }, + "metro-react-native-babel-transformer": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz", + "integrity": "sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ==", + "requires": { + "@babel/core": "7.12.3", + "babel-preset-fbjs": "3.3.0", + "metro-babel-transformer": "0.59.0", + "metro-react-native-babel-preset": "0.59.0", + "metro-source-map": "0.59.0" + }, + "dependencies": { + "metro-babel-transformer": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz", + "integrity": "sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w==", + "requires": { + "@babel/core": "7.12.3", + "metro-source-map": "0.59.0" + } + } + } + }, + "metro-resolver": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.58.0.tgz", + "integrity": "sha512-XFbAKvCHN2iWqKeiRARzEXn69eTDdJVJC7lu16S4dPQJ+Dy82dZBr5Es12iN+NmbJuFgrAuIHbpWrdnA9tOf6Q==", + "requires": { + "absolute-path": "0.0.0" + } + }, + "metro-source-map": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.59.0.tgz", + "integrity": "sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ==", + "requires": { + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "invariant": "2.2.4", + "metro-symbolicate": "0.59.0", + "ob1": "0.59.0", + "source-map": "0.5.7", + "vlq": "1.0.1" + }, + "dependencies": { + "metro-symbolicate": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz", + "integrity": "sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw==", + "requires": { + "invariant": "2.2.4", + "metro-source-map": "0.59.0", + "source-map": "0.5.7", + "through2": "2.0.5", + "vlq": "1.0.1" + } + }, + "ob1": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.59.0.tgz", + "integrity": "sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "metro-symbolicate": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.58.0.tgz", + "integrity": "sha512-uIVxUQC1E26qOMj13dKROhwAa2FmZk5eR0NcBqej/aXmQhpr8LjJg2sondkoLKUp827Tf/Fm9+pS4icb5XiqCw==", + "requires": { + "invariant": "2.2.4", + "metro-source-map": "0.58.0", + "source-map": "0.5.7", + "through2": "2.0.5", + "vlq": "1.0.1" + }, + "dependencies": { + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "invariant": "2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "0.5.7", + "vlq": "1.0.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "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.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.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.11" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "1.2.5" + } + }, + "mobx": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.0.3.tgz", + "integrity": "sha512-DBMd0NXsMn25HJMUAWBndgJ2wRjOJPbpn6wdzUvZW0PVsyTnrw028XwQfzsjnxnKG+bAXGVNb38rvd+1o0G9uQ==" + }, + "mobx-persist": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mobx-persist/-/mobx-persist-0.4.1.tgz", + "integrity": "sha512-cPxVuZTY5neesxOV/Z25SF4+/NbC6wfHOe9HT5XoSEkAALNxNE41yDK48peJQ3iK14m0G2ywQRklCXeV3wftnQ==", + "requires": { + "serializr": "1.5.4" + } + }, + "mobx-react": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.0.4.tgz", + "integrity": "sha512-T40zOPBs8cC85TV6VX9BD9Fp2pV1ldwFb5Aj7GvwwpDvnF7W2d/pekZ1HaE7DGS9EqbyJPFwPkGVltn9TQnodA==", + "requires": { + "mobx-react-lite": "3.1.5" + } + }, + "mobx-react-form": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-2.0.9.tgz", + "integrity": "sha512-YLbtXVUF6BtifeVr6XWJ76dQWJs3T/+aPNI/DKvNs1Opcl4jNCzENahqlqNsNI+RgXZbP36zck//IGWBNZsr0A==", + "requires": { + "lodash": "4.17.20" + } + }, + "mobx-react-lite": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.1.5.tgz", + "integrity": "sha512-LWub3+lURIvZ3LrAEqyxN4nG5Zr7mUHV5L48PIQdT0+CXLXmGHHV7iB+RDzm3TySr4XbazISgo0wkHdOlrrRWA==" + }, + "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.3" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "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.3", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "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==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", + "dev": true, + "optional": true, + "requires": { + "growly": "1.3.0", + "is-wsl": "2.2.0", + "semver": "6.3.0", + "shellwords": "0.1.1", + "which": "1.3.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "2.1.1" + } + } + } + }, + "node-stream-zip": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.11.7.tgz", + "integrity": "sha512-tpJYTP3wgNcgCH4dsXC9x+K7No2qNzDRwoTaW9LPm39sA5elxWdSKHcv6j5TIPmjyOcxx9LoEvSdR16mi1Rfdg==" + }, + "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==", + "dev": true, + "requires": { + "hosted-git-info": "2.8.8", + "resolve": "1.19.0", + "semver": "5.7.1", + "validate-npm-package-license": "3.0.4" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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.1.0" + } + }, + "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.1" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "1.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "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.58.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.58.0.tgz", + "integrity": "sha512-uZP44cbowAfHafP1k4skpWItk5iHCoRevMfrnUvYCfyNNPPJd3rfDCyj0exklWi2gDXvjlj2ObsfiqP/bs/J7Q==" + }, + "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.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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.6" + } + }, + "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.6" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "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.1" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "1.0.0", + "define-properties": "1.1.3", + "has-symbols": "1.0.1", + "object-keys": "1.1.1" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "has": "1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "function-bind": "1.1.1", + "has": "1.0.3" + } + }, + "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" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "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.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.2.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" + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + }, + "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.5.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==" + }, + "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.3" + } + }, + "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.5.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" + } + }, + "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" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "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-each-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", + "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "2.2.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.3.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==" + }, + "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.1.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-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==" + }, + "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.2", + "json-parse-better-errors": "1.0.2" + } + }, + "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==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "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-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=" + } + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "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-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.3.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "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.5.0", + "xmlbuilder": "9.0.7", + "xmldom": "0.1.31" + }, + "dependencies": { + "xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" + } + } + }, + "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.1.0", + "arr-union": "2.1.0", + "extend-shallow": "1.1.4" + }, + "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.1.0", + "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=" + } + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "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 + }, + "prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "1.2.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.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" + }, + "dependencies": { + "@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.3", + "@types/istanbul-reports": "1.1.2", + "@types/yargs": "13.0.11" + } + }, + "@types/yargs": { + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", + "requires": { + "@types/yargs-parser": "15.0.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==" + }, + "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.3" + } + } + } + }, + "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 + }, + "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.6" + } + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "requires": { + "kleur": "3.0.3", + "sisteransi": "1.0.5" + } + }, + "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.13.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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.4.4", + "once": "1.4.0" + } + }, + "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.13.7", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.7.tgz", + "integrity": "sha512-CsGs8ZYb39zu0WLkeOhe0NMePqgYdAuCqxOYKDR5LVCytDZYMGx3Bb+xypvQvPHVPijRXB0HZNFllCzHRe4gEA==", + "requires": { + "decode-uri-component": "0.2.0", + "split-on-first": "1.1.0", + "strict-uri-encode": "2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.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-core": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.9.0.tgz", + "integrity": "sha512-3NyHXW1ClqxEXdHunawAytDxiIxs620oP3wB8DHsbx1fkGgqjMkwlyHVf0zmES/b4ffqzJySowRwSYds/uAHzw==", + "requires": { + "shell-quote": "1.6.1", + "ws": "7.4.0" + }, + "dependencies": { + "ws": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", + "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==" + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "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.63.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.3.tgz", + "integrity": "sha512-71wq13uNo5W8QVQnFlnzZ3AD+XgUBYGhpsxysQFW/hJ8GAt/J5o+Bvhy81FXichp6IBDJDh/JgfHH2gNji8dFA==", + "requires": { + "@babel/runtime": "7.12.5", + "@react-native-community/cli": "4.13.0", + "@react-native-community/cli-platform-android": "4.13.0", + "@react-native-community/cli-platform-ios": "4.13.0", + "abort-controller": "3.0.0", + "anser": "1.4.10", + "base64-js": "1.5.0", + "event-target-shim": "5.0.1", + "fbjs": "1.0.0", + "fbjs-scripts": "1.2.0", + "hermes-engine": "0.5.1", + "invariant": "2.2.4", + "jsc-android": "245459.0.0", + "metro-babel-register": "0.59.0", + "metro-react-native-babel-transformer": "0.59.0", + "metro-source-map": "0.59.0", + "nullthrows": "1.1.1", + "pretty-format": "24.9.0", + "promise": "8.1.0", + "prop-types": "15.7.2", + "react-devtools-core": "4.9.0", + "react-refresh": "0.4.3", + "regenerator-runtime": "0.13.7", + "scheduler": "0.19.1", + "stacktrace-parser": "0.1.10", + "use-subscription": "1.5.0", + "whatwg-fetch": "3.5.0" + }, + "dependencies": { + "@react-native-community/cli": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.13.0.tgz", + "integrity": "sha512-R+1VehIQ6VTLf+e7YOwzJk0F9tstfeSC4xy7oT6GSgB3FnXbTJGHFUp4siyO68Ae/gzGqt8SiUO145teWkP+ZA==", + "requires": { + "@hapi/joi": "15.1.1", + "@react-native-community/cli-debugger-ui": "4.9.0", + "@react-native-community/cli-hermes": "4.13.0", + "@react-native-community/cli-server-api": "4.13.0", + "@react-native-community/cli-tools": "4.13.0", + "@react-native-community/cli-types": "4.10.1", + "chalk": "3.0.0", + "command-exists": "1.2.9", + "commander": "2.20.3", + "cosmiconfig": "5.2.1", + "deepmerge": "3.3.0", + "envinfo": "7.7.3", + "execa": "1.0.0", + "find-up": "4.1.0", + "fs-extra": "8.1.0", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "inquirer": "3.3.0", + "leven": "3.1.0", + "lodash": "4.17.20", + "metro": "0.58.0", + "metro-config": "0.58.0", + "metro-core": "0.58.0", + "metro-react-native-babel-transformer": "0.58.0", + "metro-resolver": "0.58.0", + "minimist": "1.2.5", + "mkdirp": "0.5.5", + "node-stream-zip": "1.11.7", + "ora": "3.4.0", + "pretty-format": "25.5.0", + "semver": "6.3.0", + "serve-static": "1.14.1", + "strip-ansi": "5.2.0", + "sudo-prompt": "9.2.1", + "wcwidth": "1.0.1" + }, + "dependencies": { + "metro-react-native-babel-transformer": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.58.0.tgz", + "integrity": "sha512-3A73+cRq1eUPQ8g+hPNGgMUMCGmtQjwqHfoG1DwinAoJ/kr4WOXWWbGZo0xHJNBe/zdHGl0uHcDCp2knPglTdQ==", + "requires": { + "@babel/core": "7.12.3", + "babel-preset-fbjs": "3.3.0", + "metro-babel-transformer": "0.58.0", + "metro-react-native-babel-preset": "0.58.0", + "metro-source-map": "0.58.0" + } + }, + "metro-source-map": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz", + "integrity": "sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw==", + "requires": { + "@babel/traverse": "7.12.5", + "@babel/types": "7.12.6", + "invariant": "2.2.4", + "metro-symbolicate": "0.58.0", + "ob1": "0.58.0", + "source-map": "0.5.7", + "vlq": "1.0.1" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "25.5.0", + "ansi-regex": "5.0.0", + "ansi-styles": "4.3.0", + "react-is": "16.13.1" + } + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "metro-react-native-babel-preset": { + "version": "0.58.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz", + "integrity": "sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA==", + "requires": { + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-export-default-from": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.12.1", + "@babel/plugin-syntax-flow": "7.12.1", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-exponentiation-operator": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-object-assign": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.5", + "@babel/plugin-transform-react-jsx-source": "7.12.1", + "@babel/plugin-transform-regenerator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-sticky-regex": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "@babel/plugin-transform-typescript": "7.12.1", + "@babel/plugin-transform-unicode-regex": "7.12.1", + "@babel/template": "7.10.4", + "react-refresh": "0.4.3" + } + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "2.0.6" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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" + }, + "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==" + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "react-native-amazing-cropper": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/react-native-amazing-cropper/-/react-native-amazing-cropper-0.1.4.tgz", + "integrity": "sha512-Dv33LxI0Hr1xzgHMzNPQXm+sNPq+UtC1P7yFTyE8VkuXY5XiTv/RWAUz9oab9PqE1MvOoPawnlxexCZ0DyFfwQ==" + }, + "react-native-app-intro-slider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-native-app-intro-slider/-/react-native-app-intro-slider-4.0.4.tgz", + "integrity": "sha512-Zkjaol6X3BbZkHUpVDj2LjdidpS6rCgKi0fx80xgGKa0pHxBRd4swWTv2bHnnvu5k1/HXwYk0mY2TbK+2jHl5w==" + }, + "react-native-autocomplete-input": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-native-autocomplete-input/-/react-native-autocomplete-input-4.2.0.tgz", + "integrity": "sha512-bLZ9FO3NwcqYY3r6hefEEC4VW45L97kXuCyAqKXW1SJkkG/pGcen6zLq3SMFgoQuG3ryrO/ohz7gme7hFwzjoQ==" + }, + "react-native-blink-view": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/react-native-blink-view/-/react-native-blink-view-0.0.6.tgz", + "integrity": "sha512-zdd+v9UcPy0RIbmR13Q9gDFa2UXTy1a8Zkcn8YewUbUIzha+nVjn9NhjgKuEyGq0IHZ2QCpdCQdMUnBFsVuhIg==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-check-box": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/react-native-check-box/-/react-native-check-box-2.1.7.tgz", + "integrity": "sha512-dPVOoz4jKs2je2HSHp7+XJXNyZFq8Kij7IHutigrQKzB550Dko6ZAQu/1mG1FzdUMFxxkZ2nX59KmbR0Co0T8Q==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-country-picker-modal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-native-country-picker-modal/-/react-native-country-picker-modal-2.0.0.tgz", + "integrity": "sha512-p0wfkKx1mOCEkn3Qm2/FA8TrxSdUw/nqaCcT6KYvIGmPtPdia1Ce+iWh5G0j2hZcDs6yJSkYAx+7lrZ0HwixAw==", + "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-credit-card-input": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/react-native-credit-card-input/-/react-native-credit-card-input-0.4.1.tgz", + "integrity": "sha1-5i3Rqb7qtnh+U3O6I7k4Mcv1894=", + "requires": { + "card-validator": "3.0.1", + "lodash.compact": "3.0.1", + "lodash.every": "4.6.0", + "lodash.pick": "4.4.0", + "lodash.values": "4.3.0", + "prop-types": "15.7.2", + "react-native-flip-card": "3.5.6" + } + }, + "react-native-dark-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/react-native-dark-mode/-/react-native-dark-mode-0.2.2.tgz", + "integrity": "sha512-2vhWOOimU7DRKYjCU/pdv0+JpnGKURq5+c7bre093Jtzk57HtlJfd+ViibbC9Y8zh0viIOyKtfL5mYhVhZ6Crw==", + "requires": { + "@types/events": "3.0.0", + "@types/react": "16.9.56", + "@types/react-native": "0.63.33", + "events": "3.2.0", + "toolkit.ts": "0.0.2" + } + }, + "react-native-device-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-7.0.2.tgz", + "integrity": "sha512-3jzEzzX0Zo5rm+fClPFp3OGUnRPjK0w4X6RCNZtuaNbwMG+Vm3BLcU69dv+UfkYMrCo5JSKV6lA2fG25qq2tuA==" + }, + "react-native-document-picker": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-native-document-picker/-/react-native-document-picker-4.1.0.tgz", + "integrity": "sha512-tHYNng9GrnVrOoLk9K2j+T1xa8gAfC2Mk2dbJq32QBYD3zkHGMkFYGd2FZt0nuYxCBnd768tOQWuEZXwXM1tsg==" + }, + "react-native-easy-toast": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-native-easy-toast/-/react-native-easy-toast-1.2.0.tgz", + "integrity": "sha512-UtpxnRn1ME+035Uey4VR+9K0P4aVoTcWNOx5QkioWBe3LBKMPb/kZjrQ1LtvWzOyeGP4TeTUTtMX3IOPWv5MtA==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-elements": { + "version": "3.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-3.0.0-alpha.1.tgz", + "integrity": "sha512-m85yQLo3wPkC5pF4Sp6bWltINElOVk6G57Ld2QNnVnXHwJ4PI5gYOoSvatxbsUV8MHQuvzTePRwDLZIjFu7HDg==", + "requires": { + "@types/react-native-vector-icons": "6.4.6", + "auto-changelog": "2.2.1", + "color": "3.1.3", + "deepmerge": "4.2.2", + "hoist-non-react-statics": "3.3.2", + "lodash.isequal": "4.5.0", + "opencollective-postinstall": "2.0.3", + "prop-types": "15.7.2", + "react-native-ratings": "7.3.0", + "react-native-size-matters": "0.3.1", + "react-native-status-bar-height": "2.6.0" + }, + "dependencies": { + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + } + } + }, + "react-native-fast-image": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.3.3.tgz", + "integrity": "sha512-gVAgQdSgzmuBhwjCOxzwv55j/OJd0iJB15RgVk1FuDgq29DVcTeQgtC2Ici/ezaKaOWSgMmR8/wwUGjgIuJW9w==" + }, + "react-native-fbsdk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-native-fbsdk/-/react-native-fbsdk-2.0.0.tgz", + "integrity": "sha512-CyPKoBVt9Y+KznALcnN4lkh6dUNqZjyFS6GbkXXTFf72wR9Dl8bXF2dDj56w/o5/TFoCnNCmQlZgh7P/NiElZQ==" + }, + "react-native-flip-card": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/react-native-flip-card/-/react-native-flip-card-3.5.6.tgz", + "integrity": "sha512-lqsjl4vF5DyHD7mjBJpyBoaLKVxalzoKfCosE63QF+TaCF9MKdJrxmGFQj/i64GDiMJqeS/5sNDcICUXtgFsVA==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-fs": { + "version": "2.16.6", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.16.6.tgz", + "integrity": "sha512-ZWOooD1AuFoAGY3HS2GY7Qx2LZo4oIg6AK0wbC68detxwvX75R/q9lRqThXNKP6vIo2VHWa0fYUo/SrLw80E8w==", + "requires": { + "base-64": "0.1.0", + "utf8": "3.0.0" + } + }, + "react-native-gesture-handler": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz", + "integrity": "sha512-E2FZa0qZ5Bi0Z8Jg4n9DaFomHvedSjwbO2DPmUUHYRy1lH2yxXUpSrqJd6yymu+Efzmjg2+JZzsjFYA2Iq8VEQ==", + "requires": { + "@egjs/hammerjs": "2.0.17", + "hoist-non-react-statics": "3.3.2", + "invariant": "2.2.4", + "prop-types": "15.7.2" + } + }, + "react-native-html-to-pdf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/react-native-html-to-pdf/-/react-native-html-to-pdf-0.8.0.tgz", + "integrity": "sha512-64Hx7JbX3sZ1iXgouuCI25/C6o8BHyTzOO3RzvLfw4O8VcdpB+wJ4d24iWRtKjeJmArsubN9+WMOebBxQaPzJw==" + }, + "react-native-htmlview": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/react-native-htmlview/-/react-native-htmlview-0.16.0.tgz", + "integrity": "sha512-yUrzXje+kKKLkWkccKNBeg3CbvrodA7f4+1d/XRrrg0SDFfIdj7NnjRdH+WXqGze6R501bfRZOPaZx/M5HTz3A==", + "requires": { + "entities": "1.1.2", + "htmlparser2-without-node-native": "3.9.2" + } + }, + "react-native-image-crop-picker": { + "version": "0.35.1", + "resolved": "https://registry.npmjs.org/react-native-image-crop-picker/-/react-native-image-crop-picker-0.35.1.tgz", + "integrity": "sha512-5HY2NnkmgL/Nw1IpU9CkTWj4qgFYPF8KxDaHoaufEWNjvOCRGziMoui55cO7k4KdwsIKmb1UbDzkCYemJqcyow==" + }, + "react-native-image-pan-zoom": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/react-native-image-pan-zoom/-/react-native-image-pan-zoom-2.1.12.tgz", + "integrity": "sha512-BF66XeP6dzuANsPmmFsJshM2Jyh/Mo1t8FsGc1L9Q9/sVP8MJULDabB1hms+eAoqgtyhMr5BuXV3E1hJ5U5H6Q==" + }, + "react-native-image-rotate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-native-image-rotate/-/react-native-image-rotate-2.1.0.tgz", + "integrity": "sha512-TN0nk4xF/UmwCO2mcq7cA2kLki7Q9MLhCqamF/PvoLnLwvdgmkeh59o2B+YkvpJ6pADa4qjOxXZ5eFEYjLkJZA==" + }, + "react-native-image-to-pdf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-native-image-to-pdf/-/react-native-image-to-pdf-1.2.0.tgz", + "integrity": "sha512-EgrdcrHHBrL6gwDFwL9S7Ztd211RZuC1csLnXNpz2pBN385OR33fODzmNwlrpZwwviLVEIURO0vCjxCXyyjdcQ==" + }, + "react-native-image-viewing": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/react-native-image-viewing/-/react-native-image-viewing-0.2.0.tgz", + "integrity": "sha512-j2JXv86WRXGNme4LPsNCJ/2MgX+oVbmJ5ZLbGrYbKXcCPe9OshqlQI5L3SdbAxWu/F5pubcMaXp0zoYNaZVuzA==" + }, + "react-native-iphone-x-helper": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz", + "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==" + }, + "react-native-keyboard-aware-scroll-view": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.3.tgz", + "integrity": "sha512-EDyFp8wAJoKvi1T2pzoPRn8R0Inp3G+575jPAWEFTlXq26URMmk8760rzde2XLW+v/1+QwDyBg6d/5mz63/ZRA==", + "requires": { + "prop-types": "15.7.2", + "react-native-iphone-x-helper": "1.3.1" + } + }, + "react-native-linear-gradient": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz", + "integrity": "sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg==" + }, + "react-native-md5": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-native-md5/-/react-native-md5-1.0.0.tgz", + "integrity": "sha1-IyC+JNZ0k4rl709JJpjtu/oOAgU=" + }, + "react-native-modal-datetime-picker": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-9.0.0.tgz", + "integrity": "sha512-8856SLrlVokhBaNWQmkwKbrwjfZP0AfRFIaA4CGXtXq83Hd+mvdmGbwKSfrAGQspAsqFMi7CYxSf4s0n16xCeg==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-modals": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/react-native-modals/-/react-native-modals-0.19.9.tgz", + "integrity": "sha512-blBIiWEnn+DEZEqc8xmmb53Osc3vU7QD0A3QOT0ALovQdbDHOw5nBqKNIehl3+eC2ddyJEehf9KiE9fbn9b7QQ==", + "requires": { + "babel-plugin-flow-react-proptypes": "9.2.0", + "prop-types": "15.7.2", + "react-native-root-siblings": "3.2.3" + } + }, + "react-native-paper": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-4.3.1.tgz", + "integrity": "sha512-3UYPtTJrRZz0OJFFZcD/Nzd7oIUBSiZkavLtPch+FzOSGEezvL0nV9P2VPvGHjFidel0VmDAMptX95UY3qSzPw==", + "requires": { + "@callstack/react-theme-provider": "3.0.5", + "color": "3.1.3", + "react-native-safe-area-view": "0.14.9" + }, + "dependencies": { + "@callstack/react-theme-provider": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.5.tgz", + "integrity": "sha512-Iec+ybWN0FvNj87sD3oWo/49edGUP0UOSdMnzCJEFJIDYr992ECIuOV89burAAh2/ibPCxgLiK6dmgv2mO/8Tg==", + "requires": { + "deepmerge": "3.3.0", + "hoist-non-react-statics": "3.3.2" + } + }, + "react-native-safe-area-view": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.9.tgz", + "integrity": "sha512-WII/ulhpVyL/qbYb7vydq7dJAfZRBcEhg4/UWt6F6nAKpLa3gAceMOxBxI914ppwSP/TdUsandFy6lkJQE0z4A==", + "requires": { + "hoist-non-react-statics": "2.5.5" + }, + "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-native-pdf": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-native-pdf/-/react-native-pdf-6.2.2.tgz", + "integrity": "sha512-ylRqbjf9BDSZpOV9eJpASZ+0FWZwEhEGyWJVhA6epr+HY8G2EOThr1HNXbf3nTIwL/t+Esfw4b60+w+2k614Pg==", + "requires": { + "@react-native-community/progress-bar-android": "1.0.4", + "@react-native-community/progress-view": "1.2.3", + "crypto-js": "3.3.0", + "prop-types": "15.7.2" + } + }, + "react-native-permissions": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-2.2.2.tgz", + "integrity": "sha512-ihf4shQDSX5Oo9ChQXb9kr13mmyyNem5MaEvOpr3dCjhBOBWyEMztXm9/uPK1Qg5PsNpaYLa1KpcPZDCw87LXg==" + }, + "react-native-picker-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-native-picker-js/-/react-native-picker-js-1.1.2.tgz", + "integrity": "sha1-EYbHxGJIbaSCq6YFt/bDMMH+H60=" + }, + "react-native-picker-select": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/react-native-picker-select/-/react-native-picker-select-8.0.2.tgz", + "integrity": "sha512-A0VyIdkWyE6D+AK8t2uQ95PJ+RjpiUZia8+rQLr5cK3GPmCqBLQ8+aWbnUr3vT/TV4bGMqc8u2Dov5h7CVQIXQ==", + "requires": { + "@react-native-community/picker": "1.6.0", + "lodash.isequal": "4.5.0" + } + }, + "react-native-popup-menu": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/react-native-popup-menu/-/react-native-popup-menu-0.15.9.tgz", + "integrity": "sha512-PO99dptMocEfUSS3SM7gY6UqophaBxizKjnZ7FcEwa+H4ONVxTk310/JCXJ9vdNunomgpxHluKRXnApfm9Md1w==" + }, + "react-native-push-notification": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/react-native-push-notification/-/react-native-push-notification-6.1.3.tgz", + "integrity": "sha512-qNbFCkObCXwSFQbK6hJyx1Bym1D7V4XM8iN2L6eL3GAdNLmeBTdLdx3mPbKJtuaDJ1+deniFTQ2rz6hU4ELOXA==" + }, + "react-native-ratings": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/react-native-ratings/-/react-native-ratings-7.3.0.tgz", + "integrity": "sha512-NCDIkmrVPnxPzP9zKdlcNpa2rPs3Hiv2qXsojUr3FpwbANWfgYE+jjGSSCBcS3vpXndTjhoaTGFDnybnUSFPFA==", + "requires": { + "lodash": "4.17.20", + "prop-types": "15.7.2" + } + }, + "react-native-reanimated": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.13.1.tgz", + "integrity": "sha512-3sF46jts9MbktgIasf0sTM8uhOYO5a5Q3YyQ4X1jjSE82n/fY2nW3XTFsLGfLEpK2ir4XSDhQWVgFHazaXZTww==", + "requires": { + "fbjs": "1.0.0" + } + }, + "react-native-render-html": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/react-native-render-html/-/react-native-render-html-4.2.4.tgz", + "integrity": "sha512-OiLItEzKgS7dzD9XI5bHhjcUEfpWdzH1FgexzjbBdICPfYjmmcefpcRmLZY1+HMfxJ7wL8iF1PzTF48LchGTBA==", + "requires": { + "buffer": "4.9.2", + "events": "1.1.1", + "html-entities": "1.3.1", + "htmlparser2": "3.10.1" + }, + "dependencies": { + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + } + } + }, + "react-native-root-siblings": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-native-root-siblings/-/react-native-root-siblings-3.2.3.tgz", + "integrity": "sha512-wOCCtKJteaSIW3K++hzhkfdWRikTqjrG34DnhNDVSzKatuNQyFY1fPBD1YFT/3+kxOIUmNsJdiaPMao9QgoZMA==", + "requires": { + "prop-types": "15.7.2", + "static-container": "1.5.1" + } + }, + "react-native-rss-parser": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-native-rss-parser/-/react-native-rss-parser-1.5.1.tgz", + "integrity": "sha512-47JcRW8utdnA0nhxnj1FNRy5o0UNPQP7UT1OBJKYq0LEkzbQIVi44LlUivazCmGQnxlAKLXo0imepsM39WxwTQ==", + "requires": { + "xmldom": "0.3.0" + } + }, + "react-native-safe-area-context": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-3.1.8.tgz", + "integrity": "sha512-9gUlsDZ96QwT9AKzA6aVWM/NX5rlJgauZ9HgCDVzKbe29UQYT1740QJnnaI2GExmkFGp6o7ZLNhCXZW95eYVFA==" + }, + "react-native-safe-area-view": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-1.1.1.tgz", + "integrity": "sha512-bbLCtF+tqECyPWlgkWbIwx4vDPb0GEufx/ZGcSS4UljMcrpwluachDXoW9DBxhbMCc6k1V0ccqHWN7ntbRdERQ==", + "requires": { + "hoist-non-react-statics": "2.5.5" + }, + "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-native-safe-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-native-safe-modules/-/react-native-safe-modules-1.0.0.tgz", + "integrity": "sha512-ShT8duWBT30W4OFcltZl+UvpPDikZFURvLDQqAsrvbyy6HzWPGJDCpdqM+6GqzPPs4DPEW31YfMNmdJcZ6zI2w==", + "requires": { + "dedent": "0.6.0" + } + }, + "react-native-screens": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-2.14.0.tgz", + "integrity": "sha512-7EfxpYiJVvlFQNb1NlkEz7JRELVMLNIsrKo8jHq0+vXbDq+UxnAm/dMeYIXi8hY5iwqzk43uNPL8VyGPcLfBGQ==" + }, + "react-native-share": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-4.1.0.tgz", + "integrity": "sha512-ytkgi9UsjQviKgWKuniApomB3opjydxPKnrApBF+SPMnQFVVDlH5EyHR6rK+qxMtIAcspb7ylNPj3KzgO+YCrg==" + }, + "react-native-signature-capture": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/react-native-signature-capture/-/react-native-signature-capture-0.4.10.tgz", + "integrity": "sha512-4VbZ6wJVLUdai3WfSiTR2YacTxVuDamBrYl7lxbCrsqa0QyBSiupc5Yz5/Qg7GOuD72jhVXpWJvwJQSmMRy4dQ==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-simple-radio-button": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/react-native-simple-radio-button/-/react-native-simple-radio-button-2.7.4.tgz", + "integrity": "sha512-QOZNmJUn0ViBGU+at7wAG/uGzd5PfXi0kMHr9lfTCLXknW/f9f2fOVjxjdHvOCdf/zA/eMJBjGjtusSDzQf1+w==" + }, + "react-native-size-matters": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/react-native-size-matters/-/react-native-size-matters-0.3.1.tgz", + "integrity": "sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw==" + }, + "react-native-sound": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-native-sound/-/react-native-sound-0.11.0.tgz", + "integrity": "sha512-4bGAZfni6E2L695NQjOZwNLBQGXgBGYC4Sy+h99K5h0HqNZjCqR0+aLel+ezASxEJDpaH83gylNObXpiqJgdwg==" + }, + "react-native-status-bar-height": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-native-status-bar-height/-/react-native-status-bar-height-2.6.0.tgz", + "integrity": "sha512-z3SGLF0mHT+OlJDq7B7h/jXPjWcdBT3V14Le5L2PjntjjWM3+EJzq2BcXDwV+v67KFNJic5pgA26cCmseYek6w==" + }, + "react-native-step-indicator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-native-step-indicator/-/react-native-step-indicator-1.0.3.tgz", + "integrity": "sha512-WwTb6lpJl0T7MV59sus1utoEQuqbuWHq6V0R0iDWmlPRFjM0qirhTNTS5on1+V9Qmc9dsUCT380/mRgDF+U6zw==" + }, + "react-native-svg": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.0.tgz", + "integrity": "sha512-1g9qBRci7man8QsHoXn6tP3DhCDiypGgc6+AOWq+Sy+PmP6yiyf8VmvKuoqrPam/tf5x+ZaBT2KI0gl7bptZ7w==", + "requires": { + "css-select": "2.1.0", + "css-tree": "1.0.0" + } + }, + "react-native-swiper": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/react-native-swiper/-/react-native-swiper-1.6.0.tgz", + "integrity": "sha512-OnkTTZi+9uZUgy0uz1I9oYDhCU3z36lZn+LFsk9FXPRelxb/KeABzvPs3r3SrHWy1aA67KGtSFj0xNK2QD0NJQ==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-switch-pro": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-native-switch-pro/-/react-native-switch-pro-1.0.5.tgz", + "integrity": "sha512-ZkS7/mRsJsG7heE12Y8emv3jAS2waLhk+3fyqoxq8k/r4Q4Uzzm3Q3gSECOJd5COJZT1B48c+xXW80FOrQpYtQ==", + "requires": { + "prop-types": "15.7.2" + } + }, + "react-native-tab-view": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-2.15.2.tgz", + "integrity": "sha512-2hxLkBnZtEKFDyfvNO5EUywhy3f/EiLOBO8SWqKj4BMBTO0QwnybaPE5MVF00Fhz+VA4+h/iI40Dkrrtq70dGg==" + }, + "react-native-typescript-transformer": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/react-native-typescript-transformer/-/react-native-typescript-transformer-1.2.13.tgz", + "integrity": "sha512-uLL6U9BirM+gKRZNKqJQW+m1onh+goiwDqG4+9XSy5dUhjmkjCkbx8j2eahie9hFcHJdnknJ6wRAEF5/7mGWmw==", + "requires": { + "babel-traverse": "6.26.0", + "chalk": "2.4.2", + "deepmerge": "4.2.2", + "find-root": "1.1.0", + "jju": "1.4.0", + "semver": "5.7.1", + "source-map": "0.5.7" + }, + "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.3" + } + }, + "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.5.0" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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" + } + } + } + }, + "react-native-uuid": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/react-native-uuid/-/react-native-uuid-1.4.9.tgz", + "integrity": "sha1-pSZ0L4/d/mQUUAZVISyo0QnEAik=", + "requires": { + "randombytes": "2.1.0" + } + }, + "react-native-vector-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-7.1.0.tgz", + "integrity": "sha512-V2a1zJ4i+kS8O4j183gIwX14St9AxxXabxwYpFBgRhvr2NDXyFcjHDEAgrOYYlt2W57e20aN1tBDU/I+wn9WtQ==", + "requires": { + "lodash.frompairs": "4.0.1", + "lodash.isequal": "4.5.0", + "lodash.isstring": "4.0.1", + "lodash.omit": "4.5.0", + "lodash.pick": "4.4.0", + "lodash.template": "4.5.0", + "prop-types": "15.7.2", + "yargs": "15.4.1" + } + }, + "react-native-video": { + "version": "5.1.0-alpha8", + "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.1.0-alpha8.tgz", + "integrity": "sha512-RRDSxqKe2F4OtiDWKCQlwVzvcsZ/TcWQdRxeAE3wsGBmFpAYFyhCz52QkFXgQQgYUuIK6Wd+j2lVxUoLp4+R2w==", + "requires": { + "keymirror": "0.1.1", + "prop-types": "15.7.2", + "shaka-player": "2.5.17" + } + }, + "react-native-view-shot": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-3.1.2.tgz", + "integrity": "sha512-9u9fPtp6a52UMoZ/UCPrCjKZk8tnkI9To0Eh6yYnLKFEGkRZ7Chm6DqwDJbYJHeZrheCCopaD5oEOnRqhF4L2Q==" + }, + "react-native-webview": { + "version": "10.10.2", + "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-10.10.2.tgz", + "integrity": "sha512-98Dh7q1gEflicFZ8KNL3nK5XRjx50OZXqw87jHofVjKfjbK0LKmvI5X8ymgUMGg61JVgI3AF+g8qpDvqjgQsfg==", + "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-native-wechat": { + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/react-native-wechat/-/react-native-wechat-1.9.12.tgz", + "integrity": "sha512-GpLRdmNmQd3pWSQG9O38e3+CfVGH67IcXMgTlOzTYsvxjUhLb3WpvAzveJ3ykdQMxB1mx3s3IJnQcbY9UBld9g==", + "requires": { + "events": "1.0.2" + }, + "dependencies": { + "events": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", + "integrity": "sha1-dYSdz+k9EPsFfDAFWv29UdBqjiQ=" + } + } + }, + "react-navigation": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-4.4.3.tgz", + "integrity": "sha512-tNBQQzbw0PVo9FLypQUUCISMcXW0wCW8oQeHtY0spWf35KC3IZHq/WcBm4E956wFsaqrDMGCUnyaVrxZNSuUGg==", + "requires": { + "@react-navigation/core": "3.7.9", + "@react-navigation/native": "3.8.3" + } + }, + "react-navigation-material-bottom-tabs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/react-navigation-material-bottom-tabs/-/react-navigation-material-bottom-tabs-2.3.3.tgz", + "integrity": "sha512-/r7f4zNpauc7wMI7ES5IKXRAe7rJ0dv9NG5bsjrsoleIxSpVnoBh0ZOBscDvtp35bxNfKO/EQpRvld0rrk8k3Q==" + }, + "react-navigation-stack": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-2.10.1.tgz", + "integrity": "sha512-h/SB7WZjNC1xTGZnpKC6e6eC5Q6PEiyhRTIun0+VTrdp5FfPqXlFOCYQBd+BLDy/oP4rsLvGC0D4LXjDDDaCfw==", + "requires": { + "color": "3.1.3", + "react-native-iphone-x-helper": "1.3.1" + } + }, + "react-navigation-tabs": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/react-navigation-tabs/-/react-navigation-tabs-2.10.1.tgz", + "integrity": "sha512-0J4QiQ1V1e59gjW6rm2xFXVCEDcznuJUoKthFfEJMWjiaZNgZ2xzpdqhiIyq6KtVJx6o3OTwrgQrBhJMXNQW5Q==", + "requires": { + "hoist-non-react-statics": "3.3.2", + "react-lifecycles-compat": "3.0.4", + "react-native-iphone-x-helper": "1.3.1", + "react-native-tab-view": "2.15.2" + } + }, + "react-navigation-transitions": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/react-navigation-transitions/-/react-navigation-transitions-1.0.12.tgz", + "integrity": "sha512-Hp0wX9KoXwsFch6Fgiz9HpGjQZDhnyucLbCai0LcaOC3VpmgYmvkbeAg/mQ5Z5exuY6PPrh/+FXU00yMPDHkcw==" + }, + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" + }, + "react-test-renderer": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", + "integrity": "sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ==", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "react-is": "16.13.1", + "scheduler": "0.19.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "2.4.0", + "normalize-package-data": "2.5.0", + "parse-json": "5.1.0", + "type-fest": "0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "error-ex": "1.3.2", + "json-parse-even-better-errors": "2.3.1", + "lines-and-columns": "1.1.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "4.1.0", + "read-pkg": "5.2.0", + "type-fest": "0.8.1" + }, + "dependencies": { + "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 + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "realpath-native": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "7.12.5" + } + }, + "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" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "1.4.2", + "regenerate-unicode-properties": "8.2.0", + "regjsgen": "0.5.2", + "regjsparser": "0.6.4", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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=", + "requires": { + "is-finite": "1.1.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.11.0", + "caseless": "0.12.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.5", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.27", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.5.0", + "tunnel-agent": "0.6.0", + "uuid": "3.4.0" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "1.8.0", + "punycode": "2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "4.17.20" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "1.1.1", + "tough-cookie": "2.5.0" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "1.8.0", + "punycode": "2.1.1" + } + } + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "requires": { + "is-core-module": "2.1.0", + "path-parse": "1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "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.1", + "signal-exit": "3.0.3" + } + }, + "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.6" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "rn-countdown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rn-countdown/-/rn-countdown-1.0.0.tgz", + "integrity": "sha512-hnYftQ44ylGcYNzj3VVSXjGV//BoVkzBttBHZE5I/1aLd+yETqk8JTdLmD/jIr+GmoPD9+BhIscBT0bxaeetmg==" + }, + "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" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "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": "4.0.8" + } + }, + "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" + } + }, + "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.15" + } + }, + "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.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "2.2.0" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "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.3", + "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=" + }, + "serializr": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/serializr/-/serializr-1.5.4.tgz", + "integrity": "sha512-ImLlkNfNSSv9d7Ah1j/yrPk1FHbRC1zkD7URcgx/8M1eYHGUxGf/Ig/d8ML04ifqN7QesyYKsfLYA4xjAVAR/g==" + }, + "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.4", + "split-string": "3.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.1" + } + } + } + }, + "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.17", + "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.17.tgz", + "integrity": "sha512-v8kzAXJOiEnI9B1z0CmlMSIbsIfmPseHuosriKqqnDWvDlYVwvdwUz4biPvxUiRIIw9v6His548kPQdO39+jow==", + "requires": { + "eme-encryption-scheme-polyfill": "2.0.1" + } + }, + "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.1", + "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==", + "dev": true, + "optional": true + }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "1.18.0-next.1", + "object-inspect": "1.8.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-negative-zero": "2.0.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.2", + "string.prototype.trimend": "1.0.2", + "string.prototype.trimstart": "1.0.2" + } + } + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-plist": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", + "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", + "requires": { + "bplist-creator": "0.0.8", + "bplist-parser": "0.2.0", + "plist": "3.0.1" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "0.3.2" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "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.1", + "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.3" + } + }, + "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.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.3", + "use": "3.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.6" + } + }, + "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.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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.1", + "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.2" + } + }, + "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.3" + } + }, + "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.3" + } + }, + "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.3" + } + } + } + }, + "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.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.6" + } + } + } + }, + "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-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "2.1.2", + "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.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.1", + "spdx-license-ids": "3.0.6" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "2.3.0", + "spdx-license-ids": "3.0.6" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "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.2" + } + }, + "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.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "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.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "requires": { + "type-fest": "0.7.1" + } + }, + "static-container": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/static-container/-/static-container-1.5.1.tgz", + "integrity": "sha512-OFChfLKIvSzaMA3otS5CEabJTIzHFPhMxogIT+io4F207PXTvS6woFyjXIyXyqMIYAhryePGeFZYC6uLcG1lpA==" + }, + "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.6" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "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-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "5.2.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-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" + } + } + } + }, + "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==", + "requires": { + "emoji-regex": "8.0.0", + "is-fullwidth-code-point": "3.0.0", + "strip-ansi": "6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "5.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "has-symbols": "1.0.1", + "internal-slot": "1.0.2", + "regexp.prototype.flags": "1.3.0", + "side-channel": "1.0.3" + } + }, + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-negative-zero": "2.0.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.2", + "string.prototype.trimend": "1.0.2", + "string.prototype.trimstart": "1.0.2" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-negative-zero": "2.0.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.2", + "string.prototype.trimend": "1.0.2", + "string.prototype.trimstart": "1.0.2" + } + } + } + }, + "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.2" + } + }, + "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.1.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "4.0.0", + "supports-color": "7.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "4.0.0" + } + } + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "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.12.6", + "lodash": "4.17.20", + "slice-ansi": "2.1.0", + "string-width": "3.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 + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "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.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.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.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "4.3.1", + "supports-hyperlinks": "2.1.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "0.11.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "0.1.2", + "glob": "7.1.6", + "minimatch": "3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "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=" + }, + "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.7", + "xtend": "4.0.2" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "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": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "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.2.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.6" + } + } + } + }, + "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" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toolkit.ts": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/toolkit.ts/-/toolkit.ts-0.0.2.tgz", + "integrity": "sha512-yJJTVbCwiD6AfFgReewJCGJuODmyZUeL1sDjnxp33t0UBxnezgQrLbz/F9++RC28CTlk5u5pVji4TbeondYEkw==" + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "2.1.0", + "psl": "1.8.0", + "punycode": "2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "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.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "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.14.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.1.2" + } + }, + "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-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "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=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "1.0.0" + } + }, + "ua-parser-js": { + "version": "0.7.22", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", + "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" + }, + "uglify-js": { + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.5.tgz", + "integrity": "sha512-btvv/baMqe7HxP7zJSF7Uc16h1mSfuuSplT0/qdjxseesDU+yYzH33eHBH+eMdeRXwujXspaCTooWHQVVBh09w==", + "optional": true + }, + "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.1.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "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" + } + }, + "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.1" + }, + "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.6", + "has-values": "0.1.4", + "isobject": "2.1.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=" + } + } + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "use-subscription": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.0.tgz", + "integrity": "sha512-/FVRiB2I7NDjzWoNBYPt6YkkvleMm/lFtxj1hH6nX2TVrJ/5UTbovw9OE1efv2Zl0HoAYuTjM7zHd9OsABn5sg==", + "requires": { + "object-assign": "4.1.1" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "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=" + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "v8-to-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", + "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "2.0.3", + "convert-source-map": "1.7.0", + "source-map": "0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, + "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==", + "dev": true, + "requires": { + "spdx-correct": "3.1.1", + "spdx-expression-parse": "3.0.1" + } + }, + "validatorjs": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/validatorjs/-/validatorjs-3.20.0.tgz", + "integrity": "sha512-Ksd5gAq4/LB0f4obwnen/Y7MWKypXXwQ4UpxE0TmkhaASAZpTJ6lQuB7XMq/a3xuH4H9NGYB2d0BMq5jQ1DpRQ==" + }, + "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.3.0" + } + }, + "vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "1.0.1", + "webidl-conversions": "4.0.2", + "xml-name-validator": "3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.11" + } + }, + "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.4.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" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + } + } + }, + "whatwg-fetch": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "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=" + }, + "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": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "4.3.0", + "string-width": "4.2.0", + "strip-ansi": "6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "5.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.5" + } + }, + "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.2.4", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "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.1.1", + "uuid": "3.4.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "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.4" + } + }, + "xmldom": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz", + "integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==" + }, + "xpipe": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", + "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" + }, + "xregexp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.0.tgz", + "integrity": "sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "7.12.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "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==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "6.0.0", + "decamelize": "1.2.0", + "find-up": "4.1.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "4.2.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "18.1.3" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..415e8fa --- /dev/null +++ b/package.json @@ -0,0 +1,127 @@ +{ + "name": "rentchat", + "version": "0.0.1", + "private": true, + "rnpm": { + "assets": [ + "./src/assets/" + ] + }, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "start": "react-native start", + "test": "jest", + "lint": "eslint ." + }, + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.1", + "@invertase/react-native-apple-authentication": "^2.1.0", + "@react-native-community/async-storage": "^1.12.1", + "@react-native-community/cameraroll": "^4.0.1", + "@react-native-community/datetimepicker": "^3.0.4", + "@react-native-community/google-signin": "^5.0.0", + "@react-native-community/image-editor": "^2.3.0", + "@react-native-community/masked-view": "^0.1.10", + "@react-native-community/netinfo": "^5.9.7", + "@react-native-community/push-notification-ios": "^1.7.3", + "@react-native-community/toolbar-android": "0.1.0-rc.2", + "@react-native-community/viewpager": "^4.2.0", + "aurora-imui-react-native": "^0.14.0", + "axios": "^0.21.0", + "babel-plugin-transform-decorators-legacy": "^1.3.5", + "fetch-intercept": "^2.3.1", + "jcore-react-native": "^1.9.0", + "jmessage-react-plugin": "^3.1.8", + "jpush-react-native": "^2.8.1", + "lodash": "^4.17.20", + "lottie-react-native": "^3.5.0", + "mobx": "^6.0.3", + "mobx-persist": "^0.4.1", + "mobx-react": "^7.0.4", + "mobx-react-form": "^2.0.9", + "moment": "^2.29.1", + "react": "16.13.1", + "react-native": "0.63.3", + "react-native-amazing-cropper": "^0.1.4", + "react-native-app-intro-slider": "^4.0.4", + "react-native-autocomplete-input": "^4.2.0", + "react-native-blink-view": "0.0.6", + "react-native-check-box": "^2.1.7", + "react-native-country-picker-modal": "^2.0.0", + "react-native-credit-card-input": "^0.4.1", + "react-native-dark-mode": "^0.2.2", + "react-native-device-info": "^7.0.2", + "react-native-document-picker": "^4.1.0", + "react-native-easy-toast": "^1.2.0", + "react-native-elements": "^3.0.0-alpha.1", + "react-native-fast-image": "^8.3.3", + "react-native-fbsdk": "^2.0.0", + "react-native-fs": "^2.16.6", + "react-native-gesture-handler": "^1.8.0", + "react-native-html-to-pdf": "^0.8.0", + "react-native-htmlview": "^0.16.0", + "react-native-image-crop-picker": "^0.35.1", + "react-native-image-pan-zoom": "^2.1.12", + "react-native-image-rotate": "^2.1.0", + "react-native-image-to-pdf": "^1.2.0", + "react-native-image-viewing": "^0.2.0", + "react-native-keyboard-aware-scroll-view": "^0.9.3", + "react-native-linear-gradient": "^2.5.6", + "react-native-md5": "^1.0.0", + "react-native-modal-datetime-picker": "^9.0.0", + "react-native-modals": "^0.19.9", + "react-native-paper": "^4.3.1", + "react-native-pdf": "^6.2.2", + "react-native-permissions": "^2.2.2", + "react-native-picker-js": "^1.1.2", + "react-native-picker-select": "^8.0.2", + "react-native-popup-menu": "^0.15.9", + "react-native-push-notification": "^6.1.3", + "react-native-reanimated": "^1.13.1", + "react-native-render-html": "^4.2.4", + "react-native-rss-parser": "^1.5.1", + "react-native-safe-area-context": "^3.1.8", + "react-native-safe-area-view": "^1.1.1", + "react-native-screens": "^2.14.0", + "react-native-share": "^4.1.0", + "react-native-signature-capture": "^0.4.10", + "react-native-simple-radio-button": "^2.7.4", + "react-native-size-matters": "^0.3.1", + "react-native-sound": "^0.11.0", + "react-native-step-indicator": "^1.0.3", + "react-native-svg": "^12.1.0", + "react-native-swiper": "^1.6.0", + "react-native-switch-pro": "^1.0.5", + "react-native-tab-view": "^2.15.2", + "react-native-typescript-transformer": "^1.2.13", + "react-native-uuid": "^1.4.9", + "react-native-vector-icons": "^7.1.0", + "react-native-video": "^5.1.0-alpha8", + "react-native-view-shot": "^3.1.2", + "react-native-webview": "^10.10.2", + "react-native-wechat": "^1.9.12", + "react-navigation": "^4.4.3", + "react-navigation-material-bottom-tabs": "^2.3.3", + "react-navigation-stack": "^2.10.1", + "react-navigation-tabs": "^2.10.1", + "react-navigation-transitions": "^1.0.12", + "rn-countdown": "^1.0.0", + "rn-fetch-blob": "^0.12.0", + "valid-url": "^1.0.9", + "validatorjs": "^3.20.0" + }, + "devDependencies": { + "@babel/core": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@react-native-community/eslint-config": "^1.1.0", + "babel-jest": "^25.1.0", + "eslint": "^6.5.1", + "jest": "^25.1.0", + "metro-react-native-babel-preset": "^0.59.0", + "react-test-renderer": "16.13.1" + }, + "jest": { + "preset": "react-native" + } +} diff --git a/push-2.6.1.301.aar b/push-2.6.1.301.aar new file mode 100644 index 0000000..46cae7f Binary files /dev/null and b/push-2.6.1.301.aar differ diff --git a/react-native.config.js b/react-native.config.js new file mode 100644 index 0000000..ef18d0b --- /dev/null +++ b/react-native.config.js @@ -0,0 +1,11 @@ +module.exports = { + dependencies: { + 'jmessage-react-plugin': { + platforms: { + android: { + packageInstance: 'new JMessageReactPackage(false)', + }, + }, + }, + }, +}; diff --git a/rentChatNotificationCert.p12 b/rentChatNotificationCert.p12 new file mode 100755 index 0000000..5c1b50f Binary files /dev/null and b/rentChatNotificationCert.p12 differ diff --git a/rentChatNotificationCert.pem b/rentChatNotificationCert.pem new file mode 100755 index 0000000..feec9fd --- /dev/null +++ b/rentChatNotificationCert.pem @@ -0,0 +1,116 @@ +Bag Attributes + friendlyName: 7788 dev key + localKeyID: 21 47 E5 7F FE 5A 1D 4B 63 22 DA C1 14 0E 5B 65 E0 AE DD 67 +subject=/CN=7788 dev key/C=HK/emailAddress=philip.cheung@nirons.com +issuer=/CN=7788 dev key/C=HK/emailAddress=philip.cheung@nirons.com +-----BEGIN CERTIFICATE----- +MIIDZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQsFADBNMRUwEwYDVQQDDAw3Nzg4 +IGRldiBrZXkxCzAJBgNVBAYTAkhLMScwJQYJKoZIhvcNAQkBFhhwaGlsaXAuY2hl +dW5nQG5pcm9ucy5jb20wHhcNMTkxMTA0MDIwODI0WhcNMjAxMTAzMDIwODI0WjBN +MRUwEwYDVQQDDAw3Nzg4IGRldiBrZXkxCzAJBgNVBAYTAkhLMScwJQYJKoZIhvcN +AQkBFhhwaGlsaXAuY2hldW5nQG5pcm9ucy5jb20wggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQClR8euadir+78GoN0JRitD59H3tm5M+PpdJiWw/7gsyckN +nYosF9Wu1oRKsIO8Z8FZAfOT2NAMNOMmfXsS7H29XhHU0A/c4UkBUXmi8BlHqsIm +ULncrge3IVZ8RcLhVkIKWy/fzaIjZNtsI2A4EHA/Y1U3sHVHBfHPdG0STouERpDg +/+qUz734zTsPqhyCsB4YfEiLjacjkj9hPjAXgLLHTv9urkOXT0F14CtDWAA8fbDT +fox9kwQIf5J4hGa6iPgNw9IwMD0eObwCpPCqg9iHs8mLWObLv5NJ7jz2WzicJpM5 +xiZb+PfNbo+pOuEAFlIQRhs7xXYTjx7QCY+WiWkLAgMBAAGjTzBNMA4GA1UdDwEB +/wQEAwIFoDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDBDAjBgNVHREEHDAagRhwaGls +aXAuY2hldW5nQG5pcm9ucy5jb20wDQYJKoZIhvcNAQELBQADggEBAIrRiHsH61Z/ +UgnxoQBFVKG1+IWm/1GENhizlPslkKsysHqX5StAPYNBZIwCd6muG8rd5GDNXv+2 +xsZ+BX+YCb6j1o+0xz77J2NHJXYaxT8tmXHJCO8ustMc6Nj+pYEuTWbOE6ljbRsB +VCGjeihk1l/ljYn0cD2ALcxUJm/1rar4udZNkXN+zWf68W5/sfMOLnhxNaImVQpI +Jvx67G1cs6kM3sFwnnMbYkJRdyFs+RWlopq43ylYifo2g5MLAMv3ra3Fn8BWuT9O +eopd3dO9ALyi70iZ7fZGdYYHI9oJqIodZ644o3Lf6WxIF35+8jIrL6iLNc0E2ZO4 +zWqYBNJS+v8= +-----END CERTIFICATE----- +Bag Attributes + friendlyName: 7788 dev key + localKeyID: 21 47 E5 7F FE 5A 1D 4B 63 22 DA C1 14 0E 5B 65 E0 AE DD 67 +subject=/CN=7788 dev key/C=HK/emailAddress=philip.cheung@nirons.com +issuer=/CN=7788 dev key/C=HK/emailAddress=philip.cheung@nirons.com +-----BEGIN CERTIFICATE----- +MIIDZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQsFADBNMRUwEwYDVQQDDAw3Nzg4 +IGRldiBrZXkxCzAJBgNVBAYTAkhLMScwJQYJKoZIhvcNAQkBFhhwaGlsaXAuY2hl +dW5nQG5pcm9ucy5jb20wHhcNMTkxMTA0MDIwODI0WhcNMjAxMTAzMDIwODI0WjBN +MRUwEwYDVQQDDAw3Nzg4IGRldiBrZXkxCzAJBgNVBAYTAkhLMScwJQYJKoZIhvcN +AQkBFhhwaGlsaXAuY2hldW5nQG5pcm9ucy5jb20wggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQClR8euadir+78GoN0JRitD59H3tm5M+PpdJiWw/7gsyckN +nYosF9Wu1oRKsIO8Z8FZAfOT2NAMNOMmfXsS7H29XhHU0A/c4UkBUXmi8BlHqsIm +ULncrge3IVZ8RcLhVkIKWy/fzaIjZNtsI2A4EHA/Y1U3sHVHBfHPdG0STouERpDg +/+qUz734zTsPqhyCsB4YfEiLjacjkj9hPjAXgLLHTv9urkOXT0F14CtDWAA8fbDT +fox9kwQIf5J4hGa6iPgNw9IwMD0eObwCpPCqg9iHs8mLWObLv5NJ7jz2WzicJpM5 +xiZb+PfNbo+pOuEAFlIQRhs7xXYTjx7QCY+WiWkLAgMBAAGjTzBNMA4GA1UdDwEB +/wQEAwIFoDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDBDAjBgNVHREEHDAagRhwaGls +aXAuY2hldW5nQG5pcm9ucy5jb20wDQYJKoZIhvcNAQELBQADggEBAIrRiHsH61Z/ +UgnxoQBFVKG1+IWm/1GENhizlPslkKsysHqX5StAPYNBZIwCd6muG8rd5GDNXv+2 +xsZ+BX+YCb6j1o+0xz77J2NHJXYaxT8tmXHJCO8ustMc6Nj+pYEuTWbOE6ljbRsB +VCGjeihk1l/ljYn0cD2ALcxUJm/1rar4udZNkXN+zWf68W5/sfMOLnhxNaImVQpI +Jvx67G1cs6kM3sFwnnMbYkJRdyFs+RWlopq43ylYifo2g5MLAMv3ra3Fn8BWuT9O +eopd3dO9ALyi70iZ7fZGdYYHI9oJqIodZ644o3Lf6WxIF35+8jIrL6iLNc0E2ZO4 +zWqYBNJS+v8= +-----END CERTIFICATE----- +Bag Attributes + friendlyName: 7788 dev key + localKeyID: 21 47 E5 7F FE 5A 1D 4B 63 22 DA C1 14 0E 5B 65 E0 AE DD 67 +Key Attributes: +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQClR8euadir+78G +oN0JRitD59H3tm5M+PpdJiWw/7gsyckNnYosF9Wu1oRKsIO8Z8FZAfOT2NAMNOMm +fXsS7H29XhHU0A/c4UkBUXmi8BlHqsImULncrge3IVZ8RcLhVkIKWy/fzaIjZNts +I2A4EHA/Y1U3sHVHBfHPdG0STouERpDg/+qUz734zTsPqhyCsB4YfEiLjacjkj9h +PjAXgLLHTv9urkOXT0F14CtDWAA8fbDTfox9kwQIf5J4hGa6iPgNw9IwMD0eObwC +pPCqg9iHs8mLWObLv5NJ7jz2WzicJpM5xiZb+PfNbo+pOuEAFlIQRhs7xXYTjx7Q +CY+WiWkLAgMBAAECggEBAIrdl0jUR6agOmyARZZgLUO9h21gCqaDXh9bSLnA8OY4 +l8LnxUqsr+1Y8Qer7NMkPY/iEtv6gzpuSRdywDAzIKY1Xjf2pA1J/0OrR859ek/7 +iWoV00M1uOfFi9uX5VfcWFpJKR0ZsYuZVr4xrssMDLNFazkB+lc1CGjsAiQqeBAm +u/N8Vfsqgfl1tVu5LryWy/8gReg39vF8oDDr/dksNPfmGbHysX06X1SCgG4AP/X8 +LpbAb9v+itP3jJulhR8TVIOx3aTWS9zjWwMr4VXtHkBkJPyk5qvjksSIbOEJ+fTc +z+xopaGEhJRKs6kV9qQ/8eahKVoRh9lQsSs0lO9MfIkCgYEA1dTqUiZF2L8N284G +lEhhkEns+19qWvoO1t67n6X9tthI+RLQulQqfuJxNDenevLqnlrjf5Hf9YVqsi0u +wlQbtTZNQQD1r9yUpswiN/u7UbA9zzcIN0eWhzPzKdLq4Sso+THl9Y2HRpqolQDg +z5dbmph+zD+8b4GnXXghuotIysUCgYEAxd/MmIqBjwd47F4VuWFgXMRrJ1NSdVyH +/T2OfGP7b3nBhT2QidWhwaMnO4RcjR/4/Vv8JYbqmzymFSLrFBhH1jeX4vJx8aj9 +ySnG4/yKFj1kpgC2owsaUfCdNID0M+h7Nx4Z3AD+kCcOVv37oAEcBi5gWgVMC2fl +psv73EKV4Y8CgYA+yrhIiV6naGs8acK61op34Y2Kv5kuwBGNfXihSBA6GkdLhP/w +R3j3K63MhK9UxnKpL81wj7ixk40iZ2w8upAsZZbICO0cyGyKkpVV1UFLmrJ74BA0 +k3wbleDJHlvE5XSxwLpjojzgOdhZcRmTPEI1IqTRe8HtCKjKJNXavr4QdQKBgBsg +CtP+aLRKufDtFN1M1ADjjCzf5zXfcWTtw1KaAiXN8xFo1x+OAZah3wbxph5Se7d/ +nJkoXZDaR4ouNzuR+IcNJ+0cfzI5kFC7QWCPhf52fA2lm2POadVBvssrwk47WGi9 +352hJURtljGmr4/Hlyfhw6OThlEp9PlgjS4sko9RAoGABQtBIg9kqv7Q7iRwtn5C +zD7zpuxY91tU5QDgDkMNknrE39o2TGrhGJq/bEIIMhrXBY2CnAIhZgO5nIiXjNbq +gqCDHnU3fCqcpxH5SFyVa1W+ONzBhg4orr64vXzd1fO6BINPFCiLzclUnn+/sBP4 +LJGpwr0pEqBHmdhz4tWwv84= +-----END PRIVATE KEY----- +Bag Attributes + friendlyName: 7788 dev key + localKeyID: 21 47 E5 7F FE 5A 1D 4B 63 22 DA C1 14 0E 5B 65 E0 AE DD 67 +Key Attributes: +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQClR8euadir+78G +oN0JRitD59H3tm5M+PpdJiWw/7gsyckNnYosF9Wu1oRKsIO8Z8FZAfOT2NAMNOMm +fXsS7H29XhHU0A/c4UkBUXmi8BlHqsImULncrge3IVZ8RcLhVkIKWy/fzaIjZNts +I2A4EHA/Y1U3sHVHBfHPdG0STouERpDg/+qUz734zTsPqhyCsB4YfEiLjacjkj9h +PjAXgLLHTv9urkOXT0F14CtDWAA8fbDTfox9kwQIf5J4hGa6iPgNw9IwMD0eObwC +pPCqg9iHs8mLWObLv5NJ7jz2WzicJpM5xiZb+PfNbo+pOuEAFlIQRhs7xXYTjx7Q +CY+WiWkLAgMBAAECggEBAIrdl0jUR6agOmyARZZgLUO9h21gCqaDXh9bSLnA8OY4 +l8LnxUqsr+1Y8Qer7NMkPY/iEtv6gzpuSRdywDAzIKY1Xjf2pA1J/0OrR859ek/7 +iWoV00M1uOfFi9uX5VfcWFpJKR0ZsYuZVr4xrssMDLNFazkB+lc1CGjsAiQqeBAm +u/N8Vfsqgfl1tVu5LryWy/8gReg39vF8oDDr/dksNPfmGbHysX06X1SCgG4AP/X8 +LpbAb9v+itP3jJulhR8TVIOx3aTWS9zjWwMr4VXtHkBkJPyk5qvjksSIbOEJ+fTc +z+xopaGEhJRKs6kV9qQ/8eahKVoRh9lQsSs0lO9MfIkCgYEA1dTqUiZF2L8N284G +lEhhkEns+19qWvoO1t67n6X9tthI+RLQulQqfuJxNDenevLqnlrjf5Hf9YVqsi0u +wlQbtTZNQQD1r9yUpswiN/u7UbA9zzcIN0eWhzPzKdLq4Sso+THl9Y2HRpqolQDg +z5dbmph+zD+8b4GnXXghuotIysUCgYEAxd/MmIqBjwd47F4VuWFgXMRrJ1NSdVyH +/T2OfGP7b3nBhT2QidWhwaMnO4RcjR/4/Vv8JYbqmzymFSLrFBhH1jeX4vJx8aj9 +ySnG4/yKFj1kpgC2owsaUfCdNID0M+h7Nx4Z3AD+kCcOVv37oAEcBi5gWgVMC2fl +psv73EKV4Y8CgYA+yrhIiV6naGs8acK61op34Y2Kv5kuwBGNfXihSBA6GkdLhP/w +R3j3K63MhK9UxnKpL81wj7ixk40iZ2w8upAsZZbICO0cyGyKkpVV1UFLmrJ74BA0 +k3wbleDJHlvE5XSxwLpjojzgOdhZcRmTPEI1IqTRe8HtCKjKJNXavr4QdQKBgBsg +CtP+aLRKufDtFN1M1ADjjCzf5zXfcWTtw1KaAiXN8xFo1x+OAZah3wbxph5Se7d/ +nJkoXZDaR4ouNzuR+IcNJ+0cfzI5kFC7QWCPhf52fA2lm2POadVBvssrwk47WGi9 +352hJURtljGmr4/Hlyfhw6OThlEp9PlgjS4sko9RAoGABQtBIg9kqv7Q7iRwtn5C +zD7zpuxY91tU5QDgDkMNknrE39o2TGrhGJq/bEIIMhrXBY2CnAIhZgO5nIiXjNbq +gqCDHnU3fCqcpxH5SFyVa1W+ONzBhg4orr64vXzd1fO6BINPFCiLzclUnn+/sBP4 +LJGpwr0pEqBHmdhz4tWwv84= +-----END PRIVATE KEY----- diff --git a/rentchat.mobileprovision b/rentchat.mobileprovision new file mode 100755 index 0000000..7f85fc5 Binary files /dev/null and b/rentchat.mobileprovision differ diff --git a/rentchat_char/Tenant.png b/rentchat_char/Tenant.png new file mode 100644 index 0000000..4524e1c Binary files /dev/null and b/rentchat_char/Tenant.png differ diff --git a/rentchat_char/Tenant@2x.png b/rentchat_char/Tenant@2x.png new file mode 100644 index 0000000..cc2c21a Binary files /dev/null and b/rentchat_char/Tenant@2x.png differ diff --git a/rentchat_char/Tenant@3x.png b/rentchat_char/Tenant@3x.png new file mode 100644 index 0000000..7d5ba44 Binary files /dev/null and b/rentchat_char/Tenant@3x.png differ diff --git a/rentchat_char/free.png b/rentchat_char/free.png new file mode 100644 index 0000000..05aad48 Binary files /dev/null and b/rentchat_char/free.png differ diff --git a/rentchat_char/free@2x.png b/rentchat_char/free@2x.png new file mode 100644 index 0000000..871eb02 Binary files /dev/null and b/rentchat_char/free@2x.png differ diff --git a/rentchat_char/free@3x.png b/rentchat_char/free@3x.png new file mode 100644 index 0000000..018ef44 Binary files /dev/null and b/rentchat_char/free@3x.png differ diff --git a/rentchat_char/owner.png b/rentchat_char/owner.png new file mode 100644 index 0000000..2d346d3 Binary files /dev/null and b/rentchat_char/owner.png differ diff --git a/rentchat_char/owner@2x.png b/rentchat_char/owner@2x.png new file mode 100644 index 0000000..04fc759 Binary files /dev/null and b/rentchat_char/owner@2x.png differ diff --git a/rentchat_char/owner@3x.png b/rentchat_char/owner@3x.png new file mode 100644 index 0000000..6f5b764 Binary files /dev/null and b/rentchat_char/owner@3x.png differ diff --git a/rentchatapplelogin.p8 b/rentchatapplelogin.p8 new file mode 100644 index 0000000..72fe213 --- /dev/null +++ b/rentchatapplelogin.p8 @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgFg+OneGGIEhXZT85 +uTDuAzOJSCQ6H0La7mYT9oS61kWgCgYIKoZIzj0DAQehRANCAARGi78fvWkdb4q7 +27dSU13aXIFJtbq5FhExGliJUMayFtYdfJw97sysB2WcK0mDmih76Zrjzox0Zc7p +UUscgRTL +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/rentchatkeystore b/rentchatkeystore new file mode 100644 index 0000000..7832dc9 Binary files /dev/null and b/rentchatkeystore differ diff --git a/src/assets/building.csv b/src/assets/building.csv new file mode 100644 index 0000000..63985d4 --- /dev/null +++ b/src/assets/building.csv @@ -0,0 +1,9478 @@ +FAy,EsEs,, +ͱۤuӤ,EsEs,, +Iª,EsEs,, +H,EsEs,, +Hs,EsEs,, + ѾȤѮ2y,EsEs N1,, +Ѿ,EsEs N1,, +Ҽw@,EsEs8G,, +bs,EsEsKIL11124`80,, +ɦw,EsEsKIL3254ȬҦѵ124-124M,, +DUNBAR PLACE,EsEsKIL3303nڹD23DUNBAR PLACE,, +s,EsEsϤEsD,, +p~jH,EsEsϤEsD10-16Ap~jH,, +֦ܤjH,EsEsϤEsD135֦ܤjH,, +Eb,EsEsϤEsD151Eb,, +ؤu~jH,EsEsϤEsD153-155ؤu~jH,, +_v,EsEsϤEsD157-159_v,, +s,EsEsϤEsD161-169s,, +jH,EsEsϤEsD23-25jH,, +jH,EsEsϤEsD27-31jH,, +FjH,EsEsϤEsD35-37FjH,, +׸ΤjH,EsEsϤEsD47-53׸ΤjH,, +HjH,EsEsϤEsD56A-56CHjH,, +P,EsEsϤEsD61P,, +s,EsEsϤEsD62-64s,, +w֤utjH,EsEsϤEsD88-90w֤utjHA y,, +sjH,EsEsϤWmD33sjH,, +wyj,EsEsϤUmD21-27Awyj,, +ɴI,EsEsϤUmD22ɴI,, +jH,EsEsϤUmD26-30jH,, +dIjH,EsEsϤUmD32dIjH,, +sjH,EsEsϤUmD35-47sjH,, +رjjH,EsEsϤUmD36رjjH,, +شjH,EsEsϤUmD38-54شjH,, +qjH,EsEsϤUmD5-19qjH,, +_jH,EsEsϤUmD67-77_jH,, +qIjH,EsEsϤUmD89-91qIjH,, +ߤ@jH,EsEsϤgWD,, +qפjHAy,EsEsϤgWD237qפjH,, +Fj,EsEsϤgWD249-259Fj,, +qjH,EsEsϤgWD313-321qjH,, +jH,EsEsϤgWD323jH,, +פu~jH,EsEsϤgWD33פu~jH,, +wwjH,EsEsϤgWD78-80WwwjH,, +ؤ,EsEsϤgWD84ؤ,, +pu~jH,EsEsϤgWD86pu~jH,, +sQؤ,EsEsϤgWD88sQؤ,, +ؤu~,EsEsϤgWD94ؤu~,, +o,EsEsϤhLOD2o,, +Qaj,EsEsϤs3Qaj,, +,EsEsϤsD12,, +E,EsEsϤsD1E,, +ojH,EsEsϤsD5-13ojH,, +DD6-8,EsEsϤDD6-8,, +߻O1y,EsEsϤDD9-11߻O1y,, +,EsEsϤ2,, +jH,EsEsϤ4jH,, +,EsEsϤ5,, +6A-6D,EsEsϤ6A-6D,, +wֻ,EsEsϤ8wֻ,, +uخx,EsEsϤѥD28,, +aF,EsEsϤѥD31-33aF,, +aF,EsEsϤѥD35-37aF,, +ѥj,EsEsϤѥD42-44ѥj,, +Űx,EsEsϤӤlD302-302AŰx,, +wb,EsEsϤӤlD,, +ӤljHĤ@,EsEsϤӤlD,, +jH,EsEsϤӤlD197-199AjH,, +xg,EsEsϤӤlD201-203xg,, +[hQjH,EsEsϤӤlD205-207[hQjH,, +SKY GARDEN,EsEsϤӤlD223SKY GARDEN,, +ŭۻ,EsEsϤӤlD225ŭۻ,, +ŽjH,EsEsϤӤlD227ŽjH,, +RؤjH,EsEsϤӤlD230RؤjH,, +Ӥlb,EsEsϤӤlD232Ӥlb,, +ӤljH,EsEsϤӤlD233-235ӤljH,, +Ӥl,EsEsϤӤlD234Ӥl,, +Q,EsEsϤӤlD240-246Q,, +djH,EsEsϤӤlD241-243AdjH,, +өMb,"EsEsϤӤlD249,249A, 251өMb",, +ۭb,EsEsϤӤlD263ۭb,, +,EsEsϤӤlD269-271,, +Ӥl,EsEsϤӤlD277ӤlղĤ@,, +,EsEsϤӤlD283,, +,EsEsϤӤlD285,, +C,EsEsϤӤlD286C,, +_jH,EsEsϤӤlD287_jH,, +ض,"EsEsϤӤlD290,290Aض",, +~ӫҤjH,"EsEsϤӤlD293,293A,293B~ӫҤjH",, +,EsEsϤӤlD297,, +ۤjH,EsEsϤӤlD299ۤjH,, +Rػ(ĤG),EsEsϤӤlD303Rػ(ĤG),, +ɻ,EsEsϤӤlD304ɻ,, +حb,EsEsϤӤlD306-308حb,, +żֶ,EsEsϤӤlD310-310Ażֶ,, +Kb,EsEsϤӤlD317-319Kb,, +BA,EsEsϤӤlD320BA,, +,EsEsϤӤlD333,, +a,EsEsϤӤlD339a,, +ؤa,EsEsϤӤlD341ؤa,, +Lb,EsEsϤӤlD345-347Lb,, +,EsEsϤӤlD357-359,, +ѷ,EsEsϤӤlD361-367ѷ,, +s],EsEsϤӤlD368-374s],, +s,EsEsϤӤlD375s,, +Ӥl,EsEsϤӤlD376-378Ӥl,, +?w,EsEsϤӤlD377?w,, +aw,EsEsϤӤlD379aw,, +ؼ,EsEsϤӤlD382-384ؼ,, +sEӤl,EsEsϤӤlD398???sEӤl,, +Ӥl,EsEsϤӤlD448Ӥl,, +wjH,EsEsϤӥD11-19wjH,, +s,EsEsϤӥD1-1Ds,, +ӥ,EsEsϤӥD2ӥ,, +IjH,EsEsϤӥD3IjH,, +jH,EsEsϤӥD4jH,, +تY,EsEsϤӥD5تY,, +ӥ~,EsEsϤӥD6ӥ~,, +I{,EsEsϤӥD9-9BI{,, +s,EsEsϤڪD10s,, +ڪ,EsEsϤڪD11ڪ,, +wj,EsEsϤڪD1-3wj,, +ֶ,EsEsϤڪD15-15Aֶ,, +M,EsEsϤڪD6M,, +ڻb,EsEsϤڪD8ڻb,, +ڴIyI,EsEsϤڴI5ڴIyI,, +H,EsEsϤBD,, +Ż,EsEsϤBD1Ż,, +w,EsEsϤBD2w,, +wH,EsEsϤBD3wH,, +P,EsEsϤBD4P,, +wP,EsEsϤBD5wP,, +R,EsEsϤBD6R,, +w¤jH,EsEsϤֹD,, +Rb,EsEsϤֹD10Rb,, +ãb,EsEsϤֹD11ãb,, +ض,EsEsϤֹD12ض,, +ֶjH,EsEsϤֹD15-17ֶjH,, +ãLO,EsEsϤֹD19ãLO,, +"DxA, B, C, Dy","EsEsϤֹD21DxA, B, C, Dy",, +Ŵ,EsEsϤֹD22Ŵ,, +"DxE, Fy","EsEsϤֹD23DxE, Fy",, +A,EsEsϤt16-34A,, +putjH,EsEsϤt36putjH,, +B,EsEsϤt38B,, +u~jH,EsEsϤt5u~jH,, +z,EsEsϤzD17z,, +_ҤjH,EsEsϥ_ҵ,, +R,EsEsϥ_ҵ101-103R,, +ֲjH,EsEsϥ_ҵ107-111ֲjH,, +I,EsEsϥ_ҵ123I,, +פtjH,EsEsϥ_ҵ21-25פtjH,, +K,EsEsϥ_ҵ29-35K,, +Downtown38,EsEsϥ_ҵ,, +I,EsEsϥ_ҵ39I,, +wjH,EsEsϥ_ҵ47 -57wjH,, +FΤjH,EsEsϥ_ҵ59-63FΤjH,, +F_j,EsEsϥ_ҵ60-62F_j,, +Fj,EsEsϥ_ҵ64-66Fj,, +Ӹλ,EsEsϥ_ҵ73Ӹλ,, +üwjH,EsEsϥ_ҵ75-83üwjH,, +XjH,EsEsϥ_ҵ97-99XjH,, +oBjH,EsEsϥ_12-16oBjH,, +RIv,EsEsϥ_22-32RIv,, +PI,EsEsϥ_8PI,, +Iҥbs,EsEsϥbs|,, +jH,EsEsϥ|t2-6jH,, +E^jH,EsEsϥ|t8-12E^jH,, +ŦhQs,EsEsϥO[34B-34CŦhQs,, +֦~s,EsEsϥų7-21֦~s,, +s,EsEsϥų8s,, +W߳߼֤jH Hy,EsEsϥŵ,, +R,EsEsϥŵ18R,, +sؤjH,EsEsϥŵ34-42BsؤjH,, +Ŵa,EsEsϥŵ43Ŵa,, +F,EsEsϥŵ60-66F,, +HCy,EsEsϥŵ99HCy,, +P׼,EsEsϥD,, +ūej,EsEsϥD20ūej,, +poj,EsEsϥD26-28poj,, +Fw,EsEsϥD32-34AFw,, +,EsEsϥD33-35,, +ʦn,EsEsϥD37ʦn,, +֬P,EsEsϥD51֬P,, +,EsEsϥD64-66,, +׺a,EsEsϥD69׺a,, +X[,EsEsϥD73X[,, +d,EsEsϥD85d,, +~uӤjH,EsEsϥε30~uӤjH,, +a~jH,EsEsϥε36a~jH,, +Iu~,EsEsϥֵ21Iu~,, +@@,EsEsϥֵ23@@,, +f,EsEsϥ۹2f,, +_j,EsEsϥ۹bD21-25_j,, +͸sjH,EsEsϦX@D,, +MO,EsEsϦwD2MO,, +Ѽֶ,EsEsϦwD3Ѽֶ,, +ūHjH,EsEsϦw1-7ūHjH,, +w,EsEsϦw2w,, +pu~j,EsEsϦ11pu~j,, +mu~jH,EsEsϦ15mu~jH,, +u~jH,EsEsϦ17u~jH,, +u~j,EsEsϦ19u~j,, +֦u~jH,EsEsϦ1A֦u~jH,, +^u~jH,EsEsϦ1^u~jH,, +pXjH,EsEsϦ21pXjH,, +Τ,EsEsϦ3Τ,, +֮ajH,EsEsϦ12֮ajH,, +pۤjH,EsEsϦ13-15pۤjH,, +ojH,EsEsϦ2C-2EojH,, +QajH,EsEsϦ4-6BQajH,, +sjH,EsEsϦĬ1-3sjH,, +żֻ,EsEsϦĬ7-9żֻ,, +,EsEsϦĬ8-10,, +EBjH,EsEsϦs|2A-2BEBjH,, +RjH,EsEsϦs|2RjH,, +aw,EsEsϦs|4aw,, +QjH,EsEsϦs|8-12QjH,, +BA-By,EsEsϧB1-5B,, +ģO,EsEsϧB2AģO,, +§,EsEsϦФsD11-15A,, +[L,EsEsϦФsD12,, +ˮp,EsEsϦФsD15ˮp,, +ʧQjH,EsEsϦФsD17ʧQjH,, +Ps~,EsEsϦФsD19Ps~,, +jҲBy,EsEsϦФsD21jҲBy,, +æwx,EsEsϦФsD24æwx,, +ŽO,EsEsϦФsD26ŽO,, +Ѧ,EsEsϦФsD2Ѧ,, +sf,EsEsϦФsD3sf,, +K,EsEsϦФsD4K,, +廨,EsEsϦФsD5廨,, +л,EsEsϦФsD6л,, +Tz,EsEsϦФsD7Tz,, +d,EsEsϦе,, +R,EsEsϦе10-12R,, +嶮,EsEsϦе14-16嶮,, +wjH,EsEsϦе18-20wjH,, +ФjH,EsEsϦе19-21CФjH,, +WH,EsEsϦе1WH,, +ŴjH,EsEsϦе23-27ŴjH,, +,EsEsϦе26-28,, +,EsEsϦе30-32,, +A,EsEsϦе34-36A,, +λ,EsEsϦе38-40λ,, +,EsEsϦе42-50,, +Eb,EsEsϦе52-56Eb,, +_,EsEsϦе60_,, +ۭb,EsEsϦе62-64ۭb,, +,EsEsϦе6,, +nfB,EsEsϧӥxD70-78nfB,, +֮,EsEsϧӥxD8-12֮,, +ƶp,EsEsϧӻOD38,, +R,EsEsϧȧQ23R,, +Oasis Kai Tak,EsEsϨN,, +Ҽw@ @,EsEsϨN2,, +Ŷ,EsEsϨN7,, +Ҽw@ G,EsEsϨN8,, +sA,EsEsϨN9,, +صM~,EsEsϨNA 3,, +صM~,EsEsϨNA3,, +Aӷ~jH,EsEsϨFD31-35Aӷ~jH,, +ҫa,EsEsϨFD51-53ҫa,, +üw,EsEsϨq˶D10üw,, +ػ,EsEsϨq˶D11-13ػ,, +qRA & Cy,EsEsϨq˶D12qRA & Cy,, +q˭b,EsEsϨq˶D17-19q˭b,, +jH,EsEsϨq˶D5-5AjH,, +sjH,EsEsϨq˶D7-9sjH,, +ҹjH,EsEsϨȬҦѵ100ҹjH,, +ҿjH,EsEsϨȬҦѵ112-112AҿjH,, +R,EsEsϨȬҦѵ117-121R,, +Q_jH,EsEsϨȬҦѵ118-120BQ_jH,, +jH,EsEsϨȬҦѵ122-122AjH,, +AؤjH,EsEsϨȬҦѵ138-140AؤjH,, +SjH,EsEsϨȬҦѵ149SjH,, +,EsEsϨȬҦѵ151,, +jH,EsEsϨȬҦѵ153jH,, +_,EsEsϨȬҦѵ154-164,, +Ża,EsEsϨȬҦѵ155Ża,, +ɵؤjH,EsEsϨȬҦѵ159-161,, +dR,EsEsϨȬҦѵ165dR,, +Ѩλ,EsEsϨȬҦѵ169-171Ѩλ,, +bA-By,EsEsϨȬҦѵ173bA-By,, +R~,EsEsϨȬҦѵ180R~,, +h,EsEsϨȬҦѵ198h,, +ŵnjH,EsEsϨȬҦѵ210ŵnjH,, +ڮɤjH,EsEsϨȬҦѵ212-216ڮɤjH,, +ػ,EsEsϨȬҦѵ218-220ػ,, +_ػ,EsEsϨȬҦѵ224_ػ,, +ҴI,EsEsϨȬҦѵ226-232ҴI,, +§b,EsEsϨȬҦѵ234§b,, +ź֭b,EsEsϨȬҦѵ242ź֭b,, +tS,EsEsϨȬҦѵ250tS,, +IjH,EsEsϨȬҦѵ98IjH,, +MO,EsEsϩMD5MO,, +O,EsEsϩ§hD22O,, +ػ,EsEsϩ§hD30ػ,, +Tb,EsEsϩ66Tb,, +ss~,EsEsϩ83ss~,, +Yϰa,EsEsϩ93Yϰa,, +HBy,EsEsϩw15HBy,, +_|jH,EsEsϩw20_|jH,, +ɭb,"EsEsϪF_xD16, 18, 20 & 22ɭb",, +QwO,EsEsϪR38QwO,, +jNQ,EsEsϪڭ۹D45jNQ,, +d,EsEsϪ35d,, +QjH,EsEsϪ43-55QjH,, +njH,EsEsϪ7-9njH,, +ꩪ,EsEsϫC{3ꩪ,, +׽,EsEsϫJD17-25׽,, +Es,EsEsϫJD28-30Es,, +jH,EsEsϫJD57-59jH,, +Eֻ,EsEsϫJD61-63Eֻ,, +pw,EsEsϫJD65-67pw,, +Qv,EsEsϫJD85-87Qv,, +QjH,EsEsϫHε,, +֬PjH,EsEsϫHε16-22֬PjH,, +UjHAy,EsEsϫHε2UjHAy,, +UjHBy,EsEsϫHε2UjHBy,, +jH,EsEsϫHε6jH,, +~,EsEsϫnD17~,, +Ͷ,EsEsϫnD33Ͷ,, +p,EsEsϫnD35-37p,, +Uo,EsEsϫnD39-41Uo,, +n,EsEsϫnD9n,, +z,EsEsϫnD20 Cz,, +,EsEsϫnD24-28,, +Wּ,EsEsϫnD2-6Wּ,, +sj,EsEsϫnD33-37sj,, +׼,EsEsϫnD50׼,, +úa,EsEsϫnD52úa,, +jH,EsEsϫnD54-58jH,, +R,EsEsϫnD5R,, +_,EsEsϫnD76-78_,, +jH,EsEsϬM146-150jH,, +_pjH,EsEsϬM152_pjH,, +򻨶,EsEsϬM178򻨶,, +Iha,EsEsϬM22Iha,, +~,EsEsϬM34-36~,, +v,EsEsϬM38-44v,, +jH,EsEsϬM47-51jH,, +ū»,EsEsϬM50-52ū»,, +_jH,EsEsϬM68-80_jH,, +Ŵ,EsEsϬM71Ŵ,, +EsjH,EsEsϬɭ110-112EsjH,, +RjH,EsEsϬɭ114-116RjH,, +K,EsEsϬɭ118-120K,, +ӫa,EsEsϬɭ122-124ӫa,, +ڼw,EsEsϬɭ131-139ڼw,, +ζ,EsEsϬɭ150ζ,, +ֹB,EsEsϬɭ152ֹB,, +,EsEsϬɭ156-158,, +ɻ,EsEsϬɭ161-163ɻ,, +ؼ,EsEsϬɭ165ؼ,, +Lb,EsEsϬɭ167-169Lb,, +s,EsEsϬɭ171s,, +b,EsEsϬɭ175b,, +sQjH,EsEsϬɭ177-177AsQjH,, +ؿjH,EsEsϬɭ179ؿjH,, +tP,EsEsϬoD2tP,, +w,EsEsϬoD3w,, +ժ,EsEsϬoD8ժ,, +bqx,EsEsϬD8bqx,, +EP,EsEsϬ}D,, + EP1y,EsEsϬ}D 7,, +wMĤ@wMjH,EsEsϬ66wMĤ@wMjH,, +Rػ,EsEsϬP17-19Rػ,, +ɤjH,EsEsϬP8ɤjH,, +M,EsEsϬP9-11M,, +PjH,EsEsϬPD,, +Rb,EsEsϬPD,, +fd,EsEsϬPD102-104fd,, +ֻ,EsEsϬPD111-113ֻ,, +,EsEsϬPD115-117,, +,EsEsϬPD123-125,, +ŤjH,EsEsϬPD1ŤjH,, +jH,EsEsϬPD46jH,, +b,EsEsϬPD78-80b,, +aּ(PD),EsEsϬPD88-92aּ(PD),, +wּ (PD),EsEsϬPD99-101wּ (PD),, +ӲĤ@,EsEsϬ2-28ӲĤ@,, +wMĤGw֤jH,EsEsϬ36wMĤGw֤jH,, +wMĤGwjH,EsEsϬ39wMĤGwjH,, +wMĤGwjH,EsEsϬ54wMĤGwjH,, +wMĤGwdjH,EsEsϬ55wMĤGwdjH,, +wMĤGwjH,EsEsϬ68wMĤGwjH,, +s?,EsEsϬ79-113,, +wMĤGwjH,EsEsϬ86wMĤGwjH,, +کs?ĤGڴ,EsEsϬ92-132کs?ĤGڴ,, +,EsEsϭSHFD1,, +ڶ,EsEsϭSHFD2ڶ,, +ڶ(E-H) y,EsEsϭSHFD2ڶ(E-H) y,, +HF,EsEsϭSHFD3HF,, +u,EsEsϭSHFD4-6u,, +R,EsEsϭSHFD9-11R,, +ghs,EsEsϭ{K9ghs,, +EjH,EsEsϮt]17EjH,, +I~jH,EsEsϮt]21-27I~jH,, +_ߤjH,EsEsϮt]31-35,, +wjH,EsEsϮt]3-5wjH,, +ww,EsEsϮt]67-69ww,, +§Q,EsEsϮt]71-73§Q,, +ֳjH,EsEsϮt]75ֳjH,, +jH,EsEsϮt]9jH,, +׶,EsEsϮѰ|D1׶,, +֭b,EsEsϮѰ|D24֭b,, +qjH,EsEsϮѰ|D2A-2BqjH,, +R,EsEsϮѰ|D2R,, +դ,EsEsϮѰ|D5-7դ,, +s,EsEsϮԼwD15-21sAy,, +R,EsEsϮԼwD5-11R,, +^,EsEsϮڼwD3^,, +QDW18,EsEsϮ16-18QDW18,, +黨x,EsEsϮ19-23黨x,, +Hu~jH,EsEsϮ20Hu~jH,, +PjH,EsEsϮ22PjH,, +_wjH,"EsEsϮ25-27sw,_wjH",, +פjH,EsEsϮ31-33פjH,, +X۰ӷ~jH,EsEsϮ41-43X۰ӷ~jH,, +ojH,EsEsϮ46-50AojH,, +sH,"EsEsϮ52-52A, 54-54A, 56-56A, 58-58AsH",, +h1h,EsEsϮhD8h1h,, +h麮HXY,EsEsϮhD8h麮HXY,, +,EsEsϯ15-25,, +dֻ,EsEsϰiD1dֻ,, +Ѻ1y,EsEsϰiD3Ѻ1y,, +d,EsEsϰiD5d,, +ʬ,EsEsϰiD6ʬ,, +R,EsEsϰiD8-10R,, +@~,EsEsϰ|FD1@~,, +_j,EsEsϰ|FD2C_j,, +|FD3,EsEsϰ|FD3,, +ؤjH,EsEsϰ|FD5ؤjH,, +s_uӤ߲Ĥ@βĤG,EsEsϰYD116-118s_uӤ߲Ĥ@βĤG,, +b,EsEsϰYD28b,, +Ya,EsEsϰYD33Ya,, +FnutjH,EsEsϰYD40FnutjH,, +F,EsEsϰYD4-4AF,, +wjH,EsEsϰYD47-55wjH,, +jH,EsEsϰYD57-59jH,, +ѭi,EsEsϰYDNOS.35-45ѭi,, +֦wjH,EsEsϰYFD,, +AؤjH,EsEsϰYFD111-127AؤjH,, +wjH,EsEsϰYFD28-30wjH,, +ajH,EsEsϰYFD32-40ajH,, +֩~,EsEsϰYFD59-61֩~,, +p(YFD93-103),EsEsϰYFD63-65p(YFD93-103),, +p(YFD67-69),EsEsϰYFD67-69p(YFD67-69),, +njH,EsEsϰYFD68-88,, +շR,EsEsϰYFD75-77շR,, +ۤjHۤjH,EsEsϰYFD93-103ۤjHۤjH,, +ꩰӷ~,EsEsϰYD,, +qӷ~jH,EsEsϰYD100qӷ~jH,, +sؤj,"EsEsϰYD103,103A,105sؤj",, +I,EsEsϰYD108I,, +mIӷ~jH,EsEsϰYD116-118mIӷ~jH,, +ѴIjH,EsEsϰYD156-162ѴIjH,, +f,EsEsϰYD182-186f,, +Ƨ,EsEsϰYD200Ƨ,, +x2y,EsEsϰYD209x2y,, +qFu~jH,EsEsϰYD21qFu~jH,, +j,EsEsϰYD23-35j,, +ͩjH,EsEsϰYD276-276AͩjH,, +wjH,EsEsϰYD278-280wjH,, +fjH,EsEsϰYD288fjH,, +jH,EsEsϰYD290jH,, +ئw,EsEsϰYD292ئw,, +CߤjH,EsEsϰYD294-312CߤjH,, +_,EsEsϰYD314-318_,, +ģj,EsEsϰYD320-322ģj,, +֤jH,EsEsϰYD322A-322C֤jH,, +jH,EsEsϰYD356jH,, +nB,EsEsϰYD360nB,, +jH,EsEsϰYD372jH,, +ַN~,EsEsϰYD418ַN~,, +ɻ,EsEsϰYD422ɻ,, +,EsEsϰYD428,, +ؼ,EsEsϰYD436ؼ,, +wHjH,EsEsϰYD442-448wHjH,, +jH,EsEsϰYD450jH,, +VIVA,EsEsϰYD77-87VIVA,, +ŮԻx,EsEsϰYD80ŮԻx,, +C,EsEsϰYD88C,, +֬PjH,EsEsϰYD89-93A֬PjH,, +oQ,EsEsϰsD10-16oQ,, +sػ,EsEsϰsD28-30sػ,, +QjH,EsEsϰsD2-8QjH,, +Iɻ,EsEsϰsD72-88Iɻ,, +s,EsEsϰsD9s,, +wjH,EsEsϱҩ11-19wjH,, +ҩj,EsEsϱҩ16-18ҩj,, +,"EsEsϱҼwD43,43A,45",, +ü,EsEsϱҼwD50-52ü,, +w׼,EsEsϱҼwD61-63w׼,, +ѤjH,EsEsϱҼwD62-68ѤjH,, +Iw,EsEsϱR2Iw,, +s,EsEsϱRw17s,, +bqs,EsEsϱRw18bqs,, +ֹBjH,EsEsϱRӵ32-36ֹBjH,, +RrjH,EsEsϱR,, +`dE-Hy,EsEsϱ`d1`dE-Hy,, +q,EsEsϱ`28q,, +o,EsEsϱ`59-61o,, +wb,EsEsϱ`63-65wb,, +R,EsEsϱ`67R,, +bsWP,EsEsϱ`80bsWP,, +aub,EsEsϱ`ֵ1,, +aQb,EsEsϱ`ֵ3aQb,, +嶮jH,EsEsϱٲD15-15A嶮jH,, +b,EsEsϱٲD29-33b,, +[s@Ĥ@y,EsEsϲ[sD1[s@Ĥ@y,, +wjH,EsEsϲw12-14wjH,, +TFb,EsEsϲw20-26TFb,, +H,EsEsϲ,, +wλ,EsEsϲ4-6wλ,, +OjH,EsEsϲD2-2BOjH,, +׻,EsEsϳӧQD11-13׻,, +zy,EsEsϳӧQD12zy,, +djjH,EsEsϳӧQD14-14AdjjH,, +ӧQj,EsEsϳӧQD14F-14GӧQj,, +ѤjH,EsEsϳӧQD16ѤjH,, +ؼ,EsEsϳӧQD22-24ؼ,, +sӤj,EsEsϳӧQD28-36sӤj,, +hQjH,"EsEsϳӧQD7,7A-GhQjH",, +ͱ۩~,EsEsϳӧQD9ͱ۩~,, +ѵت,EsEsϳFQD,, +F,"EsEsϳFQD11A, 11B & 11CF",, +R3y,EsEsϳFQD17-21R3y,, +ɶ,EsEsϳFQD21Aɶ,, +ѭb,EsEsϳFQD27ѭb,, +R,EsEsϳFQD51-53R,, +L,EsEsϳFQD54-72L,, +RؤjH,EsEsϳFQD7RؤjH,, +ƦW,EsEsϳFQD8ƦW,, +s,EsEsϴǧQD1s,, +pjH,EsEsϴ,, +pjH,EsEsϴ1-7,, +s,EsEsϵ[sD55s,, +sO,EsEsϵ[sD57sO,, +ѵػ,EsEsϵ[sD67ѵػ,, +wMĤ@wyjH,"EsEs϶Q{4J-4PwM,Ĥ@wyjH",, +wMĤ@wjH,EsEs϶Q{4K -4PwMĤ@wjH,, +wMĤ@wjH,EsEs϶Q{4K-4PwMĤ@wjH,, +F~jH,EsEs϶Q{6F~jH,, +ثn,EsEsϷR8ثn,, +O,EsEsϷqw1-3O,, +qwx,EsEsϷqw4qwx,, +ػO,EsEsϷqw5-7ػO,, +ŭb,EsEsϷqw9ŭb,, +߰jH,EsEsϷssD29B߰jH,, +ssD3,EsEsϷssD3,, +ssD6,EsEsϷssD6,, +A,EsEsϷsh18A,, +aLjH,EsEsϷsh1A-1DaLjH,, +I,EsEsϷsh20-22I,, +Ej,EsEsϷsh5-7Ej,, +״IjH,EsEsϷs15-19״IjH,, +QjH,EsEsϷs21-23QjH,, +֤jH,EsEsϷsXY3-5֤jH,, +sW,EsEsϷsXY38,, +δ,EsEsϷūҵ61δ,, +wjH,EsEsϷūҵ63-73wjH,, +sw,EsEsϷl۹D10-16,, +sj,EsEsϷl۹D19-21sj,, +w,EsEsϷl۹D23-27w,, +p,EsEsϷl۹D40p,, +w,EsEsϷl۹D53-55w,, +sdjH,EsEsϷl۹D57-59sdjH,, +s,EsEsϷl۹D61-63s,, +ʧQ,EsEsϷl۹D65ʧQ,, +I,EsEsϷl۹D66-68I,, +з~,EsEsϷl۹D70з~,, +׼,EsEsϷl۹D72-76׼,, +ŴI,EsEsϷl۹D77-79ŴI,, +Ӽ,EsEsϷl۹D78-114Ӽ,, +j,EsEsϷl۹D93j,, +s,EsEsϸqD12s,, +b,EsEsϸqD3b,, +M,EsEsϸqD4M,, +,EsEsϸqD5,, +sEO,EsEsϸqD6sEO,, +[ѧO,EsEsϸqD8-10[ѧO,, +,EsEsϸqD9,, +qwO,EsEsϸqwD15qwO,, +yb,EsEsϸqwD17yb,, +A˶,EsEsϸqwD6A˶,, +b,EsEsϸqwD8b,, +ΤιojH,EsEsϸsD,, +өutjH,EsEsϸsD108өutjH,, +MjH,EsEsϸsD46-50MjH,, +QjH,EsEsϸsD58-70QjH,, +js,EsEsϸsD72-76js,, +ӲĤG,EsEsϸsD78ӲĤG,, +ūepv,EsEsϸūeD,, +Ab,EsEsϸūeD,, +I,EsEsϸūeD110I,, +Awa,EsEsϸūeD128-130Awa,, +ֿ,EsEsϸūeD132-134ֿ,, +EB,EsEsϸūeD140EB,, +AQ,EsEsϸūeD144AQ,, +b,EsEsϸūeD152b,, +ʼ,EsEsϸūeD160,, +حb,"EsEsϸūeD162,162A-Bحb",, +ɼw,EsEsϸūeD168ɼw,, +dx,EsEsϸūeD184A-Fdx,, +fb,EsEsϸūeD190-192fb,, +F,EsEsϸūeD202-208F,, +F_j,EsEsϸūeD27F_j,, +nb,EsEsϸūeD30nb,, +礤,EsEsϸūeD40-42礤,, +o,EsEsϸūeD45-45Co,, +,EsEsϸūeD51-53,, +s,EsEsϸūeD54s,, +d,EsEsϸūeD56-58d,, +,EsEsϸūeD57,, +ha,EsEsϸūeD64ha,, +а,EsEsϸūeD66а,, +,EsEsϸūeD70-72,, +r,EsEsϸūeD75r,, +nH,EsEsϸūeD86nH,, +w,EsEsϸūeD94w,, +¼,EsEsϸūeD96¼,, +~,EsEsϸūeD52-54~,, +sDe,EsEsϸūeD56-66sDe,, +jH,EsEsϸūeD68-72jH,, +hQ,EsEsϸūeD82-84hQ,, +P,EsEsϸ묱FD 33P,, +Үx,EsEsϹAED11Үx,, +ŻA,EsEsϹŪLD17ŻA,, +ֱd,EsEsϹŪLD18ֱd,, +R,EsEsϹŪLD19A-DR,, +ŵحb,EsEsϹŪLD22ŵحb,, +ŭb,EsEsϹŪLD27ŭb,, +LjH,EsEsϹŪLD30LjH,, +ŧQjH,EsEsϹŪLD3-3AŧQjH,, +,EsEsϹŪLD37,, +jH,EsEsϹŪLD41-43AjH,, +ŬjH,EsEsϹŪLD4-4AŬjH,, +ŪL,EsEsϹŪLD7ŪL,, +[hQssj,"EsEsϹŹDzD46A, 46B, 48A, 48B, 48C & 48D[hQssj",, +,EsEsϹŹDzD54,, +,EsEsϹŹD20,, +ajH,EsEsϺa52ajH,, +ajH2y,EsEsϺa52ajH2y,, +ajH,EsEsϺa6-16ajH,, +פs,EsEsϺqMѵ10פs,, +A,EsEsϺqMѵ14A,, +FB,EsEsϺqMѵ16FB,, +qMx,"EsEsϺqMѵ2E, 2F, 2G & 2HqMx",, +x,EsEsϺqMѵ2Mx,, +wR,EsEsϺqMѵ4wR,, +֥j,EsEsϺqMѵ6֥j,, +aפjH,EsEsϺwD_220-224aפjH,, +ֹŤjH,EsEsϺwD_240-242ֹŤjH,, +qsjH,"EsEsϺwD_244,246,248qsjH",, +j,EsEsϺwD_250-254j,, +ꩰӷ~,EsEsϺwD_270-274ꩰӷ~,, +ojH,EsEsϺwD_387-393AojH,, +@s,EsEsϺwD_388@s,, +׶,EsEsϺwD_395׶,, +FTӷ~jH,EsEsϺwD_397-399FTӷ~jH,, +yjH,EsEsϺwD_413-421yjH,, +ɽjH,EsEsϺwD_423-433ɽjH,, +_ujH,EsEsϺwD_435-439_ujH,, +IBjH,EsEsϺwD_436-450IBjH,, +ؿ,EsEsϺwD_441-449ؿ,, +IjH,EsEsϺwD_451-455IjH,, +TǼ,EsEsϺwD_468TǼ,, +w,EsEsϺwD_491-493w,, +wjH,EsEsϺwD_495-503wjH,, +żּ,EsEsϺ֨ЧD11-13żּ,, +M,EsEsϺ֨ЧD15-17M,, +s~,EsEsϺ֨ЧD18s~,, +֥,EsEsϺ֨ЧD29-31֥,, +֬Pj,EsEsϺ֨ЧD51-53֬Pj,, +Eּ,EsEsϺ֨ЧD58Eּ,, +pj,EsEsϺ֨ЧD62-64pj,, +֫p,EsEsϺ֨ЧD72֫p,, +Ihӷ~jH,EsEsϺ֨ЧD74Ihӷ~jH,, +sq,EsEsϺ֨ЧD75-77sq,, +֦,EsEsϺ֨ЧD82-84֦,, +źֻ,EsEsϺ֨ЧD88-90źֻ,, +j,EsEsϺ֨ЧD92-94j,, +,EsEsϺ֨ЧD97,, +ɦwAy,EsEsϺۥѹD,, +UjH,EsEsϺۥѹD,, +ګHjH,"EsEsϺۥѹD106,106AګHjH",, +״jH,EsEsϺۥѹD108-110״jH,, +׻,EsEsϺۥѹD112A-112B׻,, +jH,EsEsϺۥѹD120jH,, +dw,EsEsϺۥѹD140dw,, +sܪ,EsEsϺۥѹD142sܪ,, +fc,EsEsϺۥѹD154fc,, +QF,EsEsϺۥѹD61-63QF,, +~׼,EsEsϺۥѹD65-65D~׼,, +_ؤjH,EsEsϺۥѹD66_ؤjH,, +Fnj,EsEsϺۥѹD67A-67BFnj,, +QjH,EsEsϺۥѹD67CQjH,, +ӧQ,EsEsϺۥѹD67DӧQ,, +ɴjH,EsEsϺۥѹD67EɴjH,, +sjH,EsEsϺۥѹD68sjH,, +_jH,EsEsϺۥѹD70_jH,, +QH,EsEsϺۥѹD71A & BQH,, +ۥѤjH,EsEsϺۥѹD72ۥѤjH,, +qojH,"EsEsϺۥѹD73,73A,73BqojH",, +_,EsEsϺۥѹD73C_,, +b,EsEsϺۥѹD73Db,, +ؼ,EsEsϺۥѹD77-77Aؼ,, +֤jH,"EsEsϺۥѹD77B,77C֤jH",, +ALa,EsEsϺۥѹD78ALa,, +ҰjH,EsEsϺۥѹD79ҰjH,, +tvjH,EsEsϺۥѹD81tvjH,, +ŦhQ,EsEsϺۥѹD83ŦhQ,, +aض,EsEsϺۥѹD84aض,, +j,EsEsϺۥѹD85-91j,, +ѤjH,EsEsϺۥѹD92ѤjH,, +"RA, By","EsEsϺۥѹD94-96RA, By",, +jH,EsEsϺۥѹD97-97AjH,, +s˻,EsEsϺۥѹD98-100s˻,, +ΤjH,EsEsϺۥѹD99BΤjH,, +Ⱥ~j,EsEsϻȺ~15Ⱥ~j,, +ȧQjH,EsEsϻȺ~2-10ȧQjH,, +"sw,_wjHswjH","EsEsϻȺ~21-29sw,_wjHswjH",, +Es,EsEsϼCD1Es,, +R,EsEsϼsD,, +_,EsEsϼsD,, +hny,EsEsϼsD1 ,, +sb,EsEsϼsD15-37sb,, +hn,EsEsϼsD1,, +Ab,EsEsϼsD36Ab,, +ŬfιŻAŬf,EsEsϼsD38ιŻAŬf,, +A,EsEsϼsD39A,, +U_,EsEsϼsD41,, +,EsEsϼsD42,, +R,EsEsϼsD43R,, +_,EsEsϼsD45_,, +z,EsEsϼsD47z,, +Px,EsEsϼsD63Px,, +ʼֶ,EsEsϼsD6ʼֶ,, +ŬӻO,EsEsϼsD83ŬӻO,, +ֶ,EsEsϼsD85ֶ,, +wjH,EsEsϼw29wjH,, +ww11,EsEsϼww11H7(֭b),, +ػ,EsEsϾaIbD,, +״,EsEsϾaIbD103-105״,, +njH,"EsEsϾaIbD115,115AnjH",, +os,EsEsϾaIbD117-119os,, +Iλ,EsEsϾaIbD121Iλ,, +֤jH,EsEsϾaIbD141-143֤jH,, +|151,EsEsϾaIbD151|,, +U,EsEsϾaIbD153-155U,, +w,EsEsϾaIbD157-159w,, +pjH,EsEsϾǾl1-2pjH,, +jH,EsEsϾǾl3jH,, +o,EsEsϾQhn23-25o,, +QhjH,EsEsϾQhn29-37QhjH,, +Xq,EsEsϾQhn63Xq,, +jH,EsEsϾQhn9-21jH,, +~,"EsEsϿ105, 107, 109, 111, 113~",, +jH,EsEsϿ117-119jH,, +Tuخx,EsEsϿ118Tuخx,, +wb,EsEsϿ123wb,, +ؤjH,"EsEsϿ157-163, 167-171ؤjH",, +ηsjH,EsEsϿ177-191AηsjH,, +jH,EsEsϿ18-22jH,, +ꩤjH,EsEsϿ46-56AꩤjH,, +F,EsEsϿ58F,, +_,EsEsϿ63-69_,, +,EsEsϿ68,, +nwӷ~jH,EsEsϿ69Anwӷ~jH,, +Fӷ~jH,EsEsϿ70-74Fӷ~jH,, +pۼ,"EsEsϿ99,99A,101,103pۼ",, +s¤jH,EsEss^D11-13s¤jH,, +oF,EsEss^D14oF,, +s,EsEss^D2-4s,, +Iؼ,EsEss^D27Iؼ,, +s,EsEss^D33-39s,, +_,EsEss^D45-47_,, +_,EsEss^D49-49A_,, +δ,EsEss^D57-59δ,, +s,EsEss^D7s,, +sw,EsEsHֹD1sw,, +s,EsEspXD14-16s,, +pjH,EsEspXD2-4pjH,, +طs,EsEspXD320طs,, +,EsEspXD32,, +U,EsEspXD40-46U,, +po,EsEspXD52-54po,, +Ѧ,EsEspXD56-58Ѧ,, +W,EsEspXD64-66W,, +jH,EsEspXD68-74jH,, +R,EsEspXD80R,, +ŹB,EsEsӤD104ŹB,, +Ѥj,EsEsӤD108-114Ѥj,, +j,EsEsӤD123-125j,, +ڱdjH,EsEsӤD128-132ڱdjH,, +jH,EsEsӤD16-26jH,, +jH,EsEsӤD2-10jH,, +ئwjH,EsEsӤD34-38ئwjH,, +MjH,EsEsӤD41-43MjH,, +IdjH,EsEsӤD42-46IdjH,, +ӤjH,EsEsӤD45-63ӤjH,, +wӤjH,EsEsӤD50wӤjH,, +uӻȦjH(Es),EsEsӤD80uӻȦjH(Es),, +jH,EsEsӤD84-90jH,, +׻,EsEsӤD98׻,, +RjH,EsEsRص1-7RjH,, +,EsEs_Q121,, +ժخx,EsEs_Q123ժخx,, +_Q,EsEs_Q145-163_Q,, +_w,EsEs_Q165-167_w,, +_QjH,EsEs_Q173-177_QjH,, +_jH,EsEs_Q28_jH,, +HAy,EsEs_Q2GHAy,, +_jH,EsEs_Q33-41_jH.,, +ؤjH,EsEs_Q44-56BؤjH,, +U,EsEs_Q45-47U,, +_Q,EsEs_Q53_Q,, +_¤jH,EsEs_Q59-67_¤jH,, +wjH,EsEs_Q66wjH,, +FH,EsEs_Q73FH,, +jQjH,EsEs_Q81jQjH,, +_sjH,EsEs_Q89_sjH,, +ɶ,EsEs}LD17ɶ,, +C,EsEs}LD1C,, +RM,EsEs}LD22-24,, +EsAy,EsEs}LD4-8EsAy,, +S,EsEsSD16-18S,, +䤤,EsEsb,, +Iu~jH,EsEsbF1Iu~jH,, +æw,EsEsbF3æw,, +]_jH,EsEsbF4]_jH,, +dOjH,EsEsb13dOjH,, +פu~jH,EsEsb2Gפu~jH,, +a^jH,EsEsAD,, +ָsAy,Esoy,, +Es,EsoyKIL10227ȤhD29-39Es,, +g[p,EsoyKIL11118òzD18g[p,, +KIMBERLEY 26,EsoyKIL11147ڧQD26KIMBERLEY 26,, +WĤ@y,EsoyKIL1116238WĤ@y,, +Aװa,EsoyKIL1556sFD600Aװa,, +֤jH,EsoyKIL2028KD180-182֤jH,, +ּ,EsoyKIL2128֥25-27ּ,, +hw,EsoyKIL2232Fw28hw,, +s,EsoyKIL2234D67Cs,, +_jH,EsoyKIL2307򶩵2-16_jH,, +z,EsoyKIL2357VD18z,, +A,EsoyKIL2372VD50-56A,, +Ws,EsoyKIL2931sFD1145-1153Ws,, +d¤jH,EsoyKIL2990388d¤jH,, +Ӥl ~ Ű,EsoyKIL3073D761Ӥl ~ Ű,, +ꤤ,EsoyKIL310276Aꤤ,, +ڧQ,EsoyKIL3570]9ڧQ,, +IؤjH,EsoyKIL4010331-335IؤjH,, +ss~jH,EsoyKIL4253]1-7ss~jH,, +PӰOӷ~jH,EsoyKIL4317D25PӰOӷ~jH,, +w,EsoyKIL8064W322w,, +ŲjH,EsoyKIL8247wDn29-31ŲjH,, +@,EsoyKIL9883֥8@,, +w,EsoyKML84Fw38w,, +ԧʰa,Esoyt33ԧʰa,, +oӷ~jH,Esoyt9oӷ~jH,, +εذڤjH,EsoyϤEs|1εذڤjH,, +æw,EsoyϤW,, +uӤjH,EsoyϤW113-119uӤjH,, +jH,EsoyϤW121-123jH,, +Ep,EsoyϤW141-145Ep,, +Ѳ,EsoyϤW163-165Ѳ,, +jH,EsoyϤW167-169jH,, +ں֤jH,EsoyϤW170-174ں֤jH,, +j,EsoyϤW20-26j,, +w,EsoyϤW228w,, +ƭ,EsoyϤW25-35ƭ,, +ZjH,EsoyϤW278-284ZjH,, +ڨӷ~,EsoyϤW28-40ڨӷ~,, +δ,EsoyϤW287-297δ,, +ڭ^,EsoyϤW326ڭ^,, +Fn,EsoyϤW327-333Fn,, +w~,EsoyϤW328-334w~,, +ljH,EsoyϤW362ljH,, +R,EsoyϤW364-368R,, +opӤjH,EsoyϤW372-378AopӤjH,, +sjH,EsoyϤW375-379sjH,, +w~ӷ~jH,EsoyϤW395-397w~ӷ~jH,, +w,EsoyϤW406-408w,, +ܸۤjH,EsoyϤW407-417ܸۤjH,, +UƩ,EsoyϤW422-426UƩ,, +Mӷ~,EsoyϤW42-46Mӷ~,, +ؤ,EsoyϤW433ؤ,, +Pðӷ~,EsoyϤW438-444Pðӷ~,, +ͺajH,EsoyϤW439-443ͺajH,, +IFӷ~jH,EsoyϤW446-448IFӷ~jH,, +ͽjH,EsoyϤW451ͽjH,, +ؼ,EsoyϤW456-458ؼ,, +ּ,EsoyϤW466-468ּ,, +W,EsoyϤW473-475W,, +jH,EsoyϤW488jH,, +u,EsoyϤW499-501u,, +֭b,EsoyϤW50-54֭b,, +j,EsoyϤW515j,, +جjH,EsoyϤW518-522جjHجjH,, +F,EsoyϤW525F,, +,EsoyϤW55,, +wjH,EsoyϤW595-599AwjH,, +ŦjH,EsoyϤW61-67ŦjH,, +AVA 62,EsoyϤW62AVA 62,, +겻jH,EsoyϤW635-637겻jH,, +,EsoyϤW638,, +a,EsoyϤW639-645a,, +jH,EsoyϤW646-650jH,, +ػ,EsoyϤW647-651ػ,, +,EsoyϤW652-654,, +,EsoyϤW657-661A,, +_,EsoyϤW660-662_,, +ֵؤjH,EsoyϤW675-677ֵؤjH,, +ӷ~jH,EsoyϤW682ӷ~jH,, +ӷ~jH,EsoyϤW688-690ӷ~jH,, +EpjH,EsoyϤW689-693EpjH,, +o,EsoyϤW692-696o,, +ajH,EsoyϤW711ajH,, +خs,EsoyϤW80خs,, +M,EsoyϤjCD141-147M,, +^,EsoyϤjCD159-167^,, +@jH,EsoyϤjCD171@jH,, +غ֤jH,EsoyϤjCD249-255غ֤jH,, +sEss,EsoyϤjCD38sEss,, +j,EsoyϤjn14-16j,, +w,EsoyϤjn18-22w,, +jH,EsoyϤjn33-37jH,, +,EsoyϤjn40-42A,, +[XjH,EsoyϤjn4-10[XjH,, +ģ,EsoyϤjn77-79ģ,, +jn,EsoyϤjn81-83jn,, +,EsoyϤjn91-93,, +sa,EsoyϤsF18sa,, +s֤jH,EsoyϤsF28-30s֤jH,, +wӷ~jH,EsoyϤsF31-35wӷ~jH,, +s,EsoyϤsF38s,, +F,EsoyϤsF40QF,, +ӷ~jH,EsoyϤsF47-51ӷ~jH,, +ʲjH,EsoyϤsF59-65ʲjH,, +sL,EsoyϤsLD10-12sL,, +FajH,EsoyϤsLD14-16FajH,, +?ӷ~jH,EsoyϤsLD18?ӷ~jH,, +Tּ,EsoyϤsLD1Tּ,, +AjH,EsoyϤsLD20AjH,, +ãL,EsoyϤsLD22-26ãL,, +sQ,EsoyϤsLD29-31sQ,, +L,EsoyϤsLD30-32L,, +IjH,EsoyϤsLD33-35IjH,, +حb,EsoyϤsLD37-39حb,, +Ȯy38,EsoyϤsLD38Ȯy38,, +aӷ~jH,EsoyϤsLD3aӷ~jH,, +TjH,EsoyϤsLD41-43TjH,, +jH,EsoyϤsLD42-44jH,, +MjH,EsoyϤsLD45-47MjH,, +Bqӷ~jH,EsoyϤsLD46-48Bqӷ~jH,, +ڶTӷ~,EsoyϤsLD4ڶTӷ~,, +Tӷ~,EsoyϤsLD50-50ATӷ~,, +jH,EsoyϤsLD52jH,, +Qӷ~jH,EsoyϤsLD54-56Qӷ~jH,, +ӷ~,EsoyϤsLD8ӷ~,, +त,EsoyϤsLD9त,, +FjH,EsoyϤD5-6FjH,, +,EsoyϤ׵29-55,, +P,EsoyϤ׵57-69P,, +sE?,EsoyϤ͵D1sE?,, +Ѥx,EsoyϤѤO10-12Ѥx,, +ã,EsoyϤѤO1-3ã,, +ѤOD,EsoyϤѤOD,, +L,EsoyϤӤlv_324L,, +Qj,EsoyϤӤlD101-107Qj,, +d֤jH,EsoyϤӤlD108-118d֤jH,, +ŮpjH,EsoyϤӤlD109-111ŮpjH,, +?,EsoyϤӤlD115-123A?,, +ajH,EsoyϤӤlD141-155ajH,, +jH,EsoyϤӤlD146-148jH,, +Ӥlӷ~jH,EsoyϤӤlD150-152Ӥlӷ~jH,, +Ӥlj,EsoyϤӤlD152A-152DӤlj,, +jH,EsoyϤӤlD154-158jH,, +Oذa,EsoyϤӤlD157Oذa,, +nFjH,EsoyϤӤlD160nFjH,, +بӷ~,EsoyϤӤlD162بӷ~,, +b,EsoyϤӤlD166-168b,, +wj,EsoyϤӤlD170-172wj,, +O@~,EsoyϤӤlD171O@~,, +ӵؼ,EsoyϤӤlD178-180ӵؼ,, +jH,EsoyϤӤlD181-183jH,, +jH,EsoyϤӤlD185jH,, +[w,EsoyϤӤlD186-188A[w,, +_ӻ,EsoyϤӤlD214-216_ӻ,, +QjH,EsoyϤӤlD218-220AQjH,, +^j,EsoyϤӤlD66-70^j,, +n,EsoyϤӤlD76-78n,, +Qj,EsoyϤӤlD83-87Qj,, +ũɤjH,EsoyϤӤlD84-88ũɤjH,, +jؤj,EsoyϤӤlD90-94jؤj,, +?,EsoyϤӤlD93-95?,, +U~jH,EsoyϤӤlD96-100U~jH,, +Ӥl,EsoyϤӤlD97-99AӤl,, +ģ,EsoyϤb,, +^,EsoyϤb1-23,, +b y,EsoyϤb2-24b y,, +b ey,EsoyϤb2-24b ey,, +b y,EsoyϤb2-24b y,, +ؼ,EsoyϤ^1-23ؼ,, +,EsoyϤ^26-48,, +崺,EsoyϤ׵26-48,, +彫,EsoyϤ彫2-24,, + ,EsoyϤ彫26-48,, +w,EsoyϤD22-28w,, +P,EsoyϤD30-32AP,, +F֤j,EsoyϤD34-36F֤j,, +_ۤj,EsoyϤD38-42_ۤj,, +ӤӤljH,EsoyϤD46-52ӤӤljH,, +,Esoyϥ[D14,, +߸ۤjH,Esoyϥ[D15-19߸ۤjH,, +jH,Esoyϥ[D16jH,, +ڥͦyFCjH,Esoyϥ[D18ڥͦyFCjH,, +[s,Esoyϥ[D20[s,, +[ojH,"Esoyϥ[D22,22a,2424A[ojH",, +ڰӷ~HUȦjH,Esoyϥ[D25-31ڰӷ~HUȦjH,, +~jH,Esoyϥ[D26-28~jH,, +2 CARNARVON ROAD,Esoyϥ[D22 CARNARVON ROAD,, +oQjH,Esoyϥ[D33-35AoQjH,, +bjH(Ay),Esoyϥ[D40-46bjH(Ay),, +ײzӷ~jH,Esoyϥ[D41-43ײzӷ~jH,, +QŤjH,Esoyϥ[D4-4AQŤjH,, +ͤjH,Esoyϥ[D45-47ͤjH,, +L,Esoyϥ[D49L,, +ͤjH,Esoyϥ[D4B-6HͤjH,, +ŪjH,Esoyϥ[D8-12ŪjH,, +䴹,Esoyϥ[s¦ѹD100䴹,, +[s¤jH,Esoyϥ[s¦ѹD12-16[s¤jH,, +wߤjH,Esoyϥ[s¦ѹD21A-21BwߤjH,, +Rӷ~jH,Esoyϥ[s¦ѹD2-6Rӷ~jH,, +źajH,Esoyϥ[s¦ѹD27źajH,, +Hӷ~,Esoyϥ[s¦ѹD29Hӷ~,, +s,Esoyϥ[s¦ѹD34-36s,, +طujH,Esoyϥ[s¦ѹD38-40طujH,, +ӿӷ~jH,Esoyϥ[s¦ѹD39ӿӷ~jH,, +,Esoyϥ[s¦ѹD41A-41B,, +ū¤jH,Esoyϥ[s¦ѹD41C-41Dū¤jH,, +ڹBjH,Esoyϥ[s¦ѹD42-44ڹBjH,, +ڶȦjH,Esoyϥ[s¦ѹD46-48ڶȦjH,, +֤jH,Esoyϥ[s¦ѹD58-60A֤jH,, +µؤjH,Esoyϥ[s¦ѹD66-76µؤjH,, +}襤,Esoyϥ[s¦ѹD77-79}襤,, +[¤,Esoyϥ[s¦ѹD8A-10[¤,, +֤,Esoyϥ[s¦ѹD92֤,, +,Esoyϥ[s¦ѹD94,, +ƺyjH,Esoyϥ[s¦ѹD96ƺyjH,, +ӤlΤ,Esoyϥ_ʹD12AӤlΤ,, +곣jH,Esoyϥ_ʹD57곣jH,, +yӷ~jH,Esoyϥ_ʹD65-69yӷ~jH,, +۫HjH,Esoyϥ_ʹD71-77۫HjH,, +fjH,Esoyϥ_,, +ڶ,Esoyϥڵ38ڶ,, +jH,Esoyϥڵ8-8AjH,, +Z,EsoyϥoD118Z,, +Ф,EsoyϥoD128Ф,, +no,EsoyϥoD1-3no,, +ʺ֤jH,EsoyϥoD32-38Aʺ֤jH,, +FפjH,EsoyϥoD33FפjH,, +nؤutjH,EsoyϥoD40nؤutjH,, +֩Mj,EsoyϥoD42-52,, +outjH,EsoyϥoD51outjH,, +o,EsoyϥoD5o,, +oO,EsoyϥoD68-72oO,, +ojH,EsoyϥoD7-19ojH,, +SOLO,EsoyϥoD83SOLO,, +Qu~jH,EsoyϥoD89Qu~jH,, +THE BEDFORD,EsoyϥoD91-93THE BEDFORD,, +qu~jH,EsoyϥoD99-101qu~jH,, +PӰӷ~,EsoyϥìP1BPӰӷ~,, +ìP2A,EsoyϥìP2A,, +ìPӷ~jH,EsoyϥìP2ìPӷ~jH,, +̪ڤjH,Esoyϥ̪ڵ10-20̪ڤjH,, +sUQjH,Esoyϥ̪ڵ1-7AsUQjH,, +̪ڻ,Esoyϥ̪ڵ28̪ڻ,, +sפjH,EsoyϥM1-19sפjH,, +sΤjH,EsoyϥM21-39sΤjH,, +sjH,EsoyϥM2-20sjH,, +ôIjH,Esoyϥե[h10-24ôIjH,, +djH,Esoyϥե[h1-11djH,, +Y Center,Esoyϥե[h13-15Y Center,, +BŤhjH,Esoyϥե[h17-23BŤhjH,, +yӷ~jH,Esoyϥե[h25-27yӷ~jH,, +ذӷ~jH,Esoyϥե[h26-32ذӷ~jH,, +?Űӷ~,Esoyϥե[h2-8?Űӷ~,, +Ťhӷ~jH,Esoyϥե[h29-31Ťhӷ~jH,, +,Esoyϥե[h53-55,, +ͻӷ~,Esoyϥե[h56ͻӷ~,, +ּ,Esoyϥե[h61-63ּ,, +nʤj,Esoyϥե[h68-70nʤj,, +ʹFjH,Esoyϥե[h86-90ʹFjH,, +¼s(ե[h),Esoyϥե[h98¼s(ե[h),, +aojH,Esoyϥշ11-13aojH,, +򶩼,Esoyϥշ9򶩼,, +Ip,EsoyϥaD2Ip,, +u~jH,EsoyϦX17u~jH,, +֩utjH,EsoyϦX1֩utjH,, +ָsjH,EsoyϦX8ָsjH,, +^ӤjH,EsoyϦ{19-25^ӤjH,, +sӤjH,EsoyϦ{37-41sӤjH,, +ֳӤjH,EsoyϦ{43-49ֳӤjH,, +IA,EsoyϦ{51-53IA,, +î,EsoyϦ{9î,, +Is,EsoyϦv_179-179AIs,, +֭b,EsoyϦvn138֭b,, +aؤjH,EsoyϦvn14-24aؤjH,, +_Qӷ~,EsoyϦvn1A-1K_Qӷ~,, +͵ojH,EsoyϦvn218-220͵ojH,, +^ʼ,EsoyϦvn60^ʼ,, +űd,EsoyϦv_155űd,, +wڦwj,EsoyϦv_157-163Awڦwj,, +,EsoyϦv_167-173,, +Mq,EsoyϦv_175-177Mq,, +dj,EsoyϦv_290-302dj,, +Po,EsoyϦv_306-310APo,, +ص,EsoyϦv_312-314ص,, +Ȭwj,EsoyϦv_326-328Ȭwj,, +_jH,EsoyϦvn103-109_jH,, +QjH,EsoyϦvn178-182AQjH,, +vj,EsoyϦvn190-194A???vj,, +U,EsoyϦvn1NU,, +jH,EsoyϦvn258-260jH,, +jH,EsoyϦvn26-36jH,, +ȫs,EsoyϦvn2A-Hȫs,, +sj,EsoyϦvn2J-2Qsj,, +Kmӷ~,EsoyϦvn2TKmӷ~,, +FQӷ~jH,EsoyϦvn2YFQӷ~jH,, +Uӷ~jH,EsoyϦvn38-40Uӷ~jH,, +(_ؤjH),EsoyϦvn42-44(_ؤjH),, +͸۰ӷ~,EsoyϦvn51͸۰ӷ~,, +n樤jH,EsoyϦvn5-7n樤jH,, +HjH,EsoyϦvn6-12HjH,, +,EsoyϦvn74-84,, +pjH,EsoyϦvn86-88pjH,, +өMӷ~jH,EsoyϦ^20өMӷ~jH,, +ذӷ~jH,EsoyϦ^3-5ذӷ~jH,, +ģŻ,EsoyϦD10-12ģŻ,, +ūH,EsoyϦD14-16ūH,, +EBj,EsoyϦD18-24EBj,, +ּ֤jH,EsoyϦD21ּ֤jH,, +ۤjH,EsoyϦD24A-26ۤjH,, +lyjH,EsoyϦD26B-26DlyjH,, +_,EsoyϦD26E_,, +ʸۤjH,EsoyϦD31-37ʸۤjH,, +D,EsoyϦD32-34D,, +w_ӷ~,EsoyϦD37A-37Bw_ӷ~,, +,EsoyϦD37C-37D,, +Τ@jHAy,EsoyϦD37E-37KΤ@jHϮy,, +jH,EsoyϦD37L-37PjH,, +OjH,EsoyϦD37UOjH,, +pwjH,EsoyϦD40-44ApwjH,, +wjH,EsoyϦD45-49wjH,, +QjH,EsoyϦD51QjH,, +ܨqӷ~jH,EsoyϦD5ܨqӷ~jH,, +jH,EsoyϦD9-11jH,, +Q{C婤,EsoyϧQo11Q{C婤,, +QojH,EsoyϧQo40-42QojH,, +,EsoyϧQo44-54,, +Q,EsoyϧQ~14-18Q,, +ojH,EsoyϧdQ108ojH,, +oż,EsoyϧdQ119-121oż,, +Qڰӷ~jH,EsoyϧdQ122Qڰӷ~jH,, +dSj,EsoyϧdQ123-127dSj,, +SjH,EsoyϧdQ130-142SjH,, +ũMjH,EsoyϧdQ131-137ũMjH,, +л,EsoyϧdQ1-3л,, +_~ӷ~jH,EsoyϧdQ147_~ӷ~jH,, +sװӷ~jH,EsoyϧdQ149-151sװӷ~jH,, +,EsoyϧdQ15-17,, +_֤j,EsoyϧdQ154-164_֤j,, +mӷ~jH,EsoyϧdQ165-167mӷ~jH,, +aꤤ,EsoyϧdQ174-184aꤤ,, +},EsoyϧdQ191},, +j[,EsoyϧdQ42-52j[,, +Z,EsoyϧdQ45-51Z,, +ְӷ~jH,EsoyϧdQ62-64ְӷ~jH,, +_jH,EsoyϧdQ67-77_jH,, +wQ,EsoyϧdQ93-103wQ,, +Q,EsoyϧȧQ13-25Q,, +IQӷ~jH,EsoyϧȧQ14-20IQӷ~jH,, +jFjH,EsoyϧȧQ26-34jFjH,, +ۿ,EsoyϧȧQ53-55ۿ,, +ʧQӷ~jH,EsoyϧȧQ8ʧQӷ~jH,, +өM13,EsoyϧөM13,, +j,Esoyϧ2-16j,, +ʷsӷ~jH,Esoyϧ33ʷsӷ~jH,, +jQ,EsoyϨ31-41jQ,, +,EsoyϨ78-96A,, +hv,EsoyϨȤhD10-14hv,, +nQɤjH,EsoyϨȤhD22nQɤjH,, +ѬPjH,EsoyϨȤhD24-38ѬPjH,, +ASHLEY 27,EsoyϨȤhD27ASHLEY 27,, +Qؼ,EsoyϨȤhD8Qؼ,, +Ra,"EsoyϨȬҦѵ103,103A,105,105ARa",, +ҩӷ~jH,EsoyϨȬҦѵ109ҩӷ~jH,, +sȤjH,EsoyϨȬҦѵ15-17sȤjH,, +ӷ~jH,EsoyϨȬҦѵ16-16Bӷ~jH,, +FjH,EsoyϨȬҦѵ24-26FjH,, +Ҧpӷ~jH,EsoyϨȬҦѵ2CҦpӷ~jH,, +s,EsoyϨȬҦѵ2s,, +sӷ~,EsoyϨȬҦѵ39-41sӷ~,, +Qsj,EsoyϨȬҦѵ40-46Qsj,, +μ,EsoyϨȬҦѵ43-49μ,, +sjH,EsoyϨȬҦѵ48-50sjH,, +Qwj,EsoyϨȬҦѵ56-62Qwj,, +,EsoyϨȬҦѵ64-70,, +d֤j,EsoyϨȬҦѵ72-78d֤j,, +wjH,EsoyϨȬҦѵ73-81wjH,, +IjH,EsoyϨȬҦѵ83IjH,, +Fs,EsoyϨȬҦѵ83Fs,, +QפjH,EsoyϨȬҦѵ88-96QפjH,, +ʤhfsv,EsoyϨʤhfsD,, +Үx,EsoyϨʤhfD1Үx,, +h,EsoyϨʤhfD33h,, +ǤjH,EsoyϩxF14-18ǤjH,, +xF,EsoyϩxF15-21xF,, +ߺhjH,EsoyϩxF24-30ߺhjH,, +The Austine Place,EsoyϩxF38The Austine Place,, +xFj,EsoyϩxF44-48xFj,, +׵,EsoyϩxF7׵,, +ӷ~jH,EsoyϩD11-13ӷ~jH,, +饻HΤjH,EsoyϩD16饻HΤjH,, +Dӷ~,EsoyϩD1Dӷ~,, +Xڤ,EsoyϩD2AXڤ,, +_wj,EsoyϩD30-36_wj,, +ͳ~oijH,EsoyϩD33ͳ~oijH,, +sjH,EsoyϩD38-44sjH,, +QjH,EsoyϩD46-48QjH,, +ؼs,EsoyϩD4ؼs,, +aj,EsoyϩD8-8Caj,, +ljH,EsoyϩD93-99ljH,, +ģ,Esoyϩ78-90ģ,, +FΤjH,EsoyϪF6-8AFΤjH,, +F,"EsoyϪF9, 10 & 10AF",, +_jH,EsoyϪFw,, +Fw,EsoyϪFw17-21Fw,, +FjH,EsoyϪFw23-33FjH,, +Uw,EsoyϪFw2-4Uw,, +פjH,EsoyϪFw3פjH,, +@jH,EsoyϪFw40-48@jH,, +Ѷ,EsoyϪFw50Ѷ,, +QLjH,EsoyϪQsD5-11QLjH,, +QsjH,EsoyϪQsD8QsjH,, +Wű,EsoyϪeD18Wű,, +@ӷ~jH,EsoyϪeD3-4@ӷ~jH,, +ӷ~jH,EsoyϪeD5-7ӷ~jH.,, +Qj,EsoyϪ107-123Qj,, +|jH,EsoyϪ11-11A|jH,, +jwjH,EsoyϪ120-126jwjH,, +ͩMj,EsoyϪ132-136AͩMj,, +QEj,EsoyϪ137-143QEj,, +pwjH,EsoyϪ142-148pwjH,, +jH,EsoyϪ145-161jH,, +ج,EsoyϪ150-156ج,, +ضjH,EsoyϪ158-164ضjH,, +~jH,EsoyϪ183-189~jH,, +ض,EsoyϪ18ض,, +ج,"EsoyϪ191-193,195-197ج",, +ִIjH,EsoyϪ199-205ִIjH,, +s,EsoyϪ19s,, +EHjH,EsoyϪ1EHjH,, +Fo,EsoyϪ200-206AFo,, +yפjH,EsoyϪ207-209yפjH,, +ojH,EsoyϪ208-214ojH,, +j,EsoyϪ211-215Aj,, +,EsoyϪ216-218,, +nӷ~,EsoyϪ2-16nӷ~,, +,EsoyϪ222,, +§jH,EsoyϪ232-242§jH,, +jH,EsoyϪ233-235jH,, +żyb,EsoyϪ239-243żyb,, +,EsoyϪ244-246,, +A,EsoyϪ250A,, +I,EsoyϪ254-266I,, +E¤jHĤ@y,EsoyϪ3-5E¤jHĤ@y,, +E¤jHʪӳ,EsoyϪ3-5E¤jHʪӳ,, +,EsoyϪ37-39A,, +jH,EsoyϪ59jH,, +HjH,EsoyϪ60-62HjH,, +jH,EsoyϪ64-68jH,, +ӷ~jH,EsoyϪ75-77ӷ~jH,, +ΩjH,EsoyϪ7-9ΩjH,, +ؿjH,EsoyϪ97ؿjH,, +ãػ,EsoyϪVD10-16ãػ,, +Gػ,EsoyϪVD22-26Gػ,, +ػ,EsoyϪVD28-36ػ,, +ʪ,EsoyϪVD2-8ʪ,, +ڴ䤤,EsoyϪڧQ1Bڴ䤤,, +Ѥ,EsoyϪڧQ2AѤ,, +OjH,EsoyϪڧQ5OjH,, +wpjH,EsoyϪڧQ7-15wpjH,, +bjHBy,EsoyϪڧQD16bjHЮy,, +Qӷ~jH,EsoyϪڧQD25Qӷ~jH,, +çQjH,EsoyϪڧQD27-33çQjH,, +ڧQs,EsoyϪڧQD45-47ڧQs,, +FפjH,EsoyϪڧQD46-48FפjH,, +jH,EsoyϪڧQD49-51jH,, +ѻ,EsoyϪڧQD58-60Aѻ,, +ŷsjH,EsoyϪڧQD61-63ŷsjH,, +jH,EsoyϪڧQD64-66AjH,, +ӥvjH,EsoyϪڧQD65-67BӥvjH,, +jH,EsoyϪڧQD69-71AjH,, +_,EsoyϪڧQD74-76_,, +Fnj,EsoyϪڧQD75-77Fnj,, +,EsoyϪڧQD78,, +_ӷ~jH,EsoyϪڧQD80_ӷ~jH,, +դjH,EsoyϪڧQD82-84դjH,, +¤,EsoyϪ۹D10-10A¤,, +U԰ӷ~jH,EsoyϪ۹D18-20U԰ӷ~jH,, +FR,EsoyϪ۹D22-24FR,, +ۼs,EsoyϪ۹D23-25Aۼs,, +QF,EsoyϪ۹D2-4AQF,, +Sӷ~,EsoyϪ۹D26-28Sӷ~,, +ӷ~jH,EsoyϪ۹D30-32ӷ~jH,, +s,EsoyϪ۹D38-40s,, +igjH,EsoyϪ۹D3igjH,, +ۤ,EsoyϪ۹D42ۤ,, +OIjH,EsoyϪ۹D48OIjH,, +sOjH,EsoyϪ۹D54-56sOjH,, +jjH,EsoyϪ۹D58-60jjH,, +ӿs,EsoyϪ۹D5ӿs,, +jH,EsoyϪD15jH,, +jH,EsoyϪD17jH,, +b,EsoyϪD9-11b,, +쪺a,EsoyϪֵ11-21쪺a,, +w¤jH,EsoyϪֵ23-27w¤jH,, +忳,EsoyϪֵ6-12忳,, +ūn,Esoyϫnʵ13ūn,, +qjH,Esoyϫnʵ22-28qjH,, +hjH,Esoyϫnʵ3-5hjH,, +Űӷ~jH,Esoyϫpֵ12-12AŰӷ~jH,, +سհӷ~jH,Esoyϫpֵ3سհӷ~jH,, +hI,Esoyϫpֵ5-6hI,, +ػ,Esoyϫpֵ9ػ,, +wyjH,Esoyϫwy1-5AwyjH,, +R,EsoyϬf19-23R,, +̧QjH,EsoyϬVе12-14A̧QjH,, +Iؼ,EsoyϬVе1A-1BIؼ,, +jH,EsoyϬVе5jH,, +nw,EsoyϬ_hl107-109nw,, +ΤjH,EsoyϬ_hl1-1AΤjH,, +פjH,EsoyϬ_hl14-18CפjH,, +ŵؤjH,EsoyϬ_hl15BŵؤjH,, +}ͤjH,EsoyϬ_hl15C}ͤjH,, +ڧQjH,EsoyϬ_hl15ڧQjH,, +׼֤jH,EsoyϬ_hl17׼֤jH,, +Ooӷ~jH,EsoyϬ_hl20Ooӷ~jH,, +sڤjH,EsoyϬ_hl28sڤjH,, +NEW AUSTIN CENTRE,EsoyϬ_hl2NEW AUSTIN CENTRE,, +_hlӷ~,EsoyϬ_hl4_hlӷ~,, +اQӷ~jH,EsoyϬ_hl7-9اQӷ~jH,, +ͱ۪,EsoyϬ_hl1,, +ģj,EsoyϬ_hlD106-108ģj,, +GjH,EsoyϬ_hlD110-112AGjH,, +ʹF,EsoyϬ_hlD11-15ʹF,, +sL,EsoyϬ_hlD114-116sL,, +~sӷ~jH,EsoyϬ_hlD118-120~sӷ~jH,, +_,EsoyϬ_hlD124-126_,, +źѤjH,EsoyϬ_hlD130źѤjH,, +ӷ~jH,EsoyϬ_hlD136-138ӷ~jH,, +HΤjH,EsoyϬ_hlD140-142HΤjH,, +n~,EsoyϬ_hlD152n~,, +_hlDjH,EsoyϬ_hlD154-156_hlDjH,, +õojH,EsoyϬ_hlD19-23õojH,, +wjH,EsoyϬ_hlD3-3A,, +p~jH,EsoyϬ_hlD45-53p~jH,, +BjH,EsoyϬ_hlD65BjH,, +ӷ~MǮ,EsoyϬ_hlD79-81ӷ~MǮ,, +_hls,EsoyϬ_hlD83_hls,, +䵣x,EsoyϬ_hlD8䵣x,, +Oj,EsoyϬ_hlD91-95Oj,, +g{ѤU,EsoyϬ_hlD1,, +?,EsoyϬ_hlD1?,, +y~,EsoyϬ_hlD1y~,, +ѥbq,EsoyϬ_hlD1ѥbq,, +yTs,EsoyϬ_hlD1yTs,, +Grand Austin,EsoyϬ_hlD9Grand Austin,, +Ϋ~DPJ,EsoyϬvQ1Ϋ~DPJ,, +ɦwjH,EsoyϬvQ46-48ɦwjH,, +߼,EsoyϬvQ4-6A߼,, +ou~jH,EsoyϬvQ64-76ou~jH,, +guӤjH,EsoyϬvQ73-79guӤjH,, +vQu~jH,EsoyϬvQ8-10vQu~jH,, +ǪF,EsoyϬvQ81-83ǪF,, +duH,EsoyϬvQ85duH,, +ùŤutjH,EsoyϬvQ87ùŤutjH,, +쿳,EsoyϬvQ88쿳,, +putjH,EsoyϬvQ89-91putjH,, +ط׵طH,EsoyϬ~,, +ڤjH,EsoyϬ~137-139ڤjH,, +ؤjH,EsoyϬ~141-145ؤjH,, +ajH,EsoyϬ~147-149AajH,, +żwjH,EsoyϬ~167-175żwjH,, +NطH,EsoyϬ~177-179NطH,, +Qػ,EsoyϬ~181-183Qػ,, +QjH,EsoyϬ~185-191QjH,, +h~,EsoyϬ~193-199h~,, +ģjH,EsoyϬ~201-203ģjH,, +w,EsoyϬ~233-239w,, +û,EsoyϬ~241-243û,, +~,EsoyϬ~24-26~,, +Q,EsoyϬ~245-251Q,, +s,EsoyϬ~39s,, +o_jH,EsoyϬ~62-72o_jH,, +wQjH,EsoyϬx10-18wQjH,, +wjH,EsoyϬx107-117wjH,, +`wjH,EsoyϬx11-17`wjH,, +Q,EsoyϬx19-21Q,, +nʼ,EsoyϬx27nʼ,, +_ۤjH,EsoyϬx28-34_ۤjH,, +,EsoyϬx54-56,, +ΤjH,EsoyϬx65-71AΤjH,, +һ,EsoyϬx66-70һ,, +ؤjH,EsoyϬx73ؤjH,, +wjH,EsoyϬx95-105wjH,, +n,EsoyϬɭ10F-10Hn,, +j,EsoyϬɭ12Aj,, +إͼ,EsoyϬɭ14إͼ,, +~Q,EsoyϬɭ20-22~Q,, +UQ,EsoyϬɭ24-26UQ,, +Φ,EsoyϬɭ28-30Φ,, +ͤjH,EsoyϬɭ2E-2FͤjH,, +ɭj,EsoyϬɭ2ɭj,, +jH,EsoyϬɭ32-34AjH,, +ؤj,EsoyϬɭ38L-38Nؤj,, +ָsjH,EsoyϬɭ4-10ָsjH,, +ָSjH,EsoyϬɭ44-48ָSjH,, +Ѭfb,EsoyϬɭ54-56Ѭfb,, +sؤ,EsoyϬ]D14sؤ,, +s,EsoyϬ]D16s,, +sFӷ~,EsoyϬ]D9sFӷ~,, +,EsoyϬw1-29,, +ZLӷ~jH,EsoyϭZL16-18ZLӷ~jH,, +F,EsoyϭZL2F,, +䵽@Dw|,Esoyϭ䵽@Dw|,, +,EsoyϮJص18,, +,EsoyϮJص1,, +çQu~jH,EsoyϮJص26-28çQu~jH,, +w~utjH,EsoyϮJص33w~utjH,, +,EsoyϮa8-12,, +Pt˫HUjH,EsoyϮˬ[10Pt˫HUjH,, +mo,EsoyϮˬ[3mo,, +Rؤ,EsoyϮˬ[4Rؤ,, +djH,EsoyϮˬ[65-67djH,, +P,EsoyϮޤhڧQD3P,, +ͦ|aĤ@y,EsoyϮ|D11ͦ|aĤ@y,, +_פjH,EsoyϮD32-34_פjH,, +Q,EsoyϮD35-37Q,, +FjH,EsoyϮD38-40FjH,, +The Camphora,EsoyϮD51-52The Camphora,, +?Dӷ?ӷ,EsoyϮlD1?Dӷ?ӷ,, +Ia,EsoyϮxD,, +ҬfW,EsoyϮxD18ҬfW,, +fW,EsoyϮxD18fW,, +Ib,EsoyϮxD2Ib,, +nâ,EsoyϮD10,, +1 1,EsoyϮD111 1,, +W,EsoyϮD11WĤ@y,, +@ȮĤ@y,EsoyϮD18@Ȯ,, +W,EsoyϮD8,, +yojH,Esoy10-16yojH,, +ذӷ~jH,Esoy109-113ذӷ~jH,, +ڬs,Esoy115-121ڬs,, +Mצ,Esoy120-122Mצ,, +ܱ[,Esoy124-128ܱ[,, +wa,Esoy134-136wa,, +Wӷ~,Esoy138Wӷ~,, +xsZӰȤߤjH,Esoy139xsZӰȤߤjH,, +jH,Esoy141-145jH,, +UsjH,Esoy163-173UsjH,, +sjHFʻȮy,Esoy180sjHFʻȮy,, +TjH,Esoy18-26TjH,, +翳jH,Esoy199-205翳jH,, +FoijH,Esoy240-244FoijH,, +`w,Esoy2-4`w,, +ñd,Esoy283-285ñd,, +ѦjH,Esoy289-295ѦjH,, +mI,Esoy301mI,, +wjH,Esoy304-306wjH,, +֩jH,Esoy314-316֩jH,, +e,Esoy332-334e,, +E~j,Esoy340-342E~j,, +,Esoy355-357,, +QojH,Esoy362AQojH,, +a,Esoy364-366a,, +ģjH,Esoy368-370AģjH,, +򶩤jH,Esoy369-379򶩤jH,, +n,Esoy39-41n,, +Eưӷ~jH,Esoy400Eưӷ~jH,, +FjH,Esoy402-406FjH,, +دqj,Esoy408-410دqj,, +j,Esoy412-414j,, +_[,Esoy424-428_[,, +QpjH,Esoy430-436AQpjH,, +}s,Esoy438-440}s,, +HQ,Esoy450-454HQ,, +iRent Apartment,Esoy46-52iRent Apartment,, +,Esoy61-63,, +¤jH,Esoy62-66¤jH,, +BjH,Esoy78-84BjH,, +jH,Esoy86-88jH,, +,EsoyϯKD100-102,, +wjH,EsoyϯKD103-107wjH,, +줸,EsoyϯKD108-110줸,, +ӥvs~t,EsoyϯKD109ӥvs~t,, +ؼ,EsoyϯKD111-113ؼ,, +R_jH,EsoyϯKD115-117AR_jH,, +,EsoyϯKD127-133,, +,EsoyϯKD130-132,, +d,EsoyϯKD135-137d,, +a,EsoyϯKD142a,, +wjH,EsoyϯKD144-148wjH,, +aF,EsoyϯKD159-161aF,, +R]jH,EsoyϯKD163-165R]jH,, +U,EsoyϯKD168U,, +UհE,EsoyϯKD168UհE,, +ź֤,EsoyϯKD175-185ź֤,, +ʶװa,EsoyϯKD33ʶװa,, +KjH,EsoyϯKD63-69KjH,, +_פj,EsoyϯKD75-79_פj,, +ﴺ,EsoyϯKD81ﴺ,, +wפjH,EsoyϯKD85-91AwפjH,, +po,EsoyϯKD88po,, +פjH,EsoyϯKD93-95פjH,, +djH,EsoyϯKD94-98djH,, +pjH,EsoyϯKD99-101pjH,, +նjH,Esoyϰ10-12նjH,, +æwj,Esoyϰ21-27æwj,, +񯨹jH,Esoyϰ29-37񯨹jH,, +p,Esoyϰ44-52p,, +Q,Esoyϰ49-59Q,, +ذjH,Esoyϰ70-80ذjH,, +{ӷ~jH,Esoyϰ77-79{ӷ~jH,, +BA,Esoyϰ81-87BA,, +~jH,Esoyϰ82-88~jH,, +_j,Esoyϰ򶩵109-119_j,, +ð,Esoyϰ򶩵13-15ð,, +,Esoyϰ򶩵1-3,, +,Esoyϰ򶩵22-24,, +ŧQjH,Esoyϰ򶩵37-53ŧQjH,, +hs,Esoyϰ򶩵50hs,, +?,Esoyϰ򶩵55-57?,, +,Esoyϰ򶩵59-61,, +ڧQ,Esoyϰ򶩵9-11ڧQ,, +رd,Esoyϱdֵ13-20رd,, +sjH,Esoyϲ``1-6sjH,, +?פ,Esoyϲ`D,, +ŹBjH,Esoyϲ`D3ŹBjH,, +g״,Esoyϲ`D8g״,, +@o,Esoyϲ{3@o,, +شI,Esoyϳao110شI,, +UQӷ~jH,Esoyϳao15UQӷ~jH,, +`ΰӷ~jH,Esoyϳao20-22`ΰӷ~jH,, +OjH,Esoyϳao21-21BOjH,, +֮jH,Esoyϳao24-26֮jH,, +s,Esoyϳao28s,, +EjH,Esoyϳao60-104BEjH,, +wQjH,Esoyϳq{107-111wQjH,, +֤jH,Esoyϳq{113-117֤jH,, +T,Esoyϳq{123T,, +yQjH,Esoyϳq{131-133yQjH,, +w,Esoyϳq{135-137w,, +q{j,Esoyϳq{174-176q{j,, +IwjH,Esoyϳq{178-192IwjH,, +|,Esoyϳq{28|,, +s~j,Esoyϳq{51-67s~j,, +,Esoyϳq{71,, +u~jH,Esoyϳq{81-87u~jH,, +ڥͤ,Esoyϳq{95-97ڥͤ,, +QjH,Esoyϳq104-116QjH,, +F_jH,Esoyϳq111-117F_jH,, +A Hotel,Esoyϳq123-127A Hotel,, +͸ۤjH,Esoyϳq129-139͸ۤjH,, +ɽj,Esoyϳq141-151ɽj,, +ҹBjH,Esoyϳq142-146ҹBjH,, +Ej,Esoyϳq153-159Ej,, +wjH,Esoyϳq154-156wjH,, +ojH,Esoyϳq158A-158CojH,, +AؤjH,Esoyϳq173AؤjH,, +a^,Esoyϳq181-187a^,, +ýjH,Esoyϳq189-195ýjH,, +ؼ,Esoyϳq18ؼ,, +¹Fӷ~jH,Esoyϳq1A-1L¹Fӷ~jH,, +صojH,Esoyϳq1M-1TصojH,, +FjH,Esoyϳq20-22AFjH,, +s,Esoyϳq204s,, +,Esoyϳq210-212,, +ɹ,Esoyϳq211-215ɹ,, +󦨭,Esoyϳq214-216󦨭,, +Ѱ,Esoyϳq224-226Ѱ,, +aˤjH,Esoyϳq230-238aˤjH,, +ֿjH,Esoyϳq240-242ֿjH,, +פjH,Esoyϳq24-24AפjH,, +qojH,Esoyϳq248-250qojH,, +njH,Esoyϳq252njH,, +EjH,Esoyϳq2A-2PEjH,, +ʲjH,Esoyϳq30-34ʲjH,, +a,Esoyϳq3-7a,, +_jH,Esoyϳq56-62_jH,, +wojH,Esoyϳq59A-61CwojH,, +aj,Esoyϳq63-67aj,, +ɿjH,Esoyϳq66-70ɿjH,, +The Metropolis Residence,Esoyϳ|D8-9The Metropolis Residence,, +|a,Esoyϳ|D8-9|a,, +IQjHFy,Esoyϳդ1-7IQjHFy,, +IQjHy,Esoyϳդ9-21IQjHy,, +IQhjH,EsoyϳIQhD11IQhjH,, +ToijH,EsoyϳIQhD12ToijH,, +ɰ]ӷ~jH,EsoyϳIQhD3-3Aɰ]ӷ~jH,, +IQs,EsoyϳIQhD4IQs,, +FUJI HOUSE,EsoyϳIQhD5-5AFUJI HOUSE,, +ַӤutjH,Esoyϴ]20ַӤutjH,, +Es~qjH,Esoyϴ]2-12Es~qjH,, +ذз|ıФj,Esoyϴ]56ذз|ıФj,, +_,Esoyϴ]63_,, +],Esoyϴ]71-73A],, +ֵnjH,Esoyϴֵn|13-15ֵnjH,, +طjH,Esoyϴֵn|17-23طjH,, +ڦjH,Esoyϴֵn|22-26ڦjH,, +Aaӷ~jH,Esoyϴֵn|28Aaӷ~jH,, +ذӷ~jH,Esoyϴֵn|30ذӷ~jH,, +A,Esoyϴֵn|8A,, +aIb,Esoyϴľ2-20aIb,, +Iɻ,Esoyϴ11-16Iɻ,, +QjH,Esoyϴ240QjH,, +Iv,Esoyϴ252Iv,, +_ɰӷ~,Esoyϴ28_ɰӷ~,, +jH,Esoyϴ314-324BjH,, +IQӰӷ~jH,Esoyϴ32-36IQӰӷ~jH,, +jH,Esoyϴ325-334B,, +بӷ~jH,Esoyϴ38بӷ~jH,, +jH,Esoyϴ7-10jH,, +Ѷ,Esoyϵnh10-12Ѷ,, +jjH,Esoyϵnh20-22jjH,, +ſӷ~,Esoyϵnh23-29ſӷ~,, +nwjH,Esoyϵnh33-35BnwjH,, +°ӷ~,Esoyϵnh36°ӷ~,, +nhs,Esoyϵnh43-43Hnhs,, +EF,Esoyϵnh55EF,, +?ΰӷ~jH,Esoyϵnh56?ΰӷ~jH,, +ëHj,Esoyϵд4ëHj,, +],Esoy϶¥80-86A],, +µojH,Esoy϶¥96-102µojH,, +The Austin,Esoy϶׵D 8The Austin,, +_ФjH,Esoy϶,, +§jH,Esoy϶D18§jH,, +n@ɬv,Esoy϶D197-199n@ɬv,, +jHBy,Esoy϶D198D-198NjHBy,, +׽,Esoy϶D200-202׽,, +ئwjH,Esoy϶D201-203ئwjH,, +y~j,Esoy϶D208-228y~j,, +a,Esoy϶D209a,, +jH,Esoy϶D22jH,, +ģutjH,Esoy϶D50-52ģutjH,, +s仨x,Esoy϶D51s仨x,, +çQu~jH,Esoy϶D54-58çQu~jH,, +sӷ~jH,Esoy϶D55sӷ~jH,, +ֱdu~jH,Esoy϶D60-62Bֱdu~jH,, +aIjH,Esoy϶D61aIjH,, +ֱju~jH,Esoy϶D66-68ֱju~jH,, +@,Esoy϶D67A-67B@,, +jw,Esoy϶D75-77jw,, +פjH,Esoy϶D85-95פjH,, +sQjH,EsoyϷsa,, +aj,EsoyϷsa13-21Aaj,, +ڹB,EsoyϷsa141ڹB,, +Th,EsoyϷsa151Th,, +м,EsoyϷsa162-170м,, +ɷsjH,EsoyϷsa163ɷsjH,, +Pּ,EsoyϷsa173-177Pּ,, +פj,EsoyϷsa193-193Aפj,, +F_,EsoyϷsa202-214F_,, +ӷ~jH,EsoyϷsa249-253Aӷ~jH,, +FEjH,EsoyϷsa255-261FEjH,, +_j,EsoyϷsa260-264_j,, +_,EsoyϷsa263_,, +yؤjH,EsoyϷsa266-282yؤjH,, +jH,EsoyϷsa287-289jH,, +Űӷ~jH,EsoyϷsa288-290Űӷ~jH,, +zj,EsoyϷsa297-299zj,, +^ojH,EsoyϷsa308-310^ojH,, +ú֤j,EsoyϷsa316-320ú֤j,, +wפjH,EsoyϷsa374-388wפjH,, +AQ,EsoyϷsa3AQ,, +éjH,EsoyϷsa404-412éjH,, +T,EsoyϷsa435T,, +q,EsoyϷsa470q,, +UjH,EsoyϷsa472-480UjH,, +ŴIjH,EsoyϷsa482-488ŴIjH,, +aq,EsoyϷsa50Aaq,, +֬PjH,EsoyϷsa52-58֬PjH,, +]ؤjH,EsoyϷsa565-569]ؤjH,, +sӷ~,EsoyϷsa576sӷ~,, +~jH,EsoyϷsa596~jH,, +aOj,EsoyϷsa61-65aOj,, +߼,EsoyϷsa625-627߼,, +sj,EsoyϷsa78-86sj,, +MjH,EsoyϷsa98-104MjH,, +طutjH,EsoyϷ10-18AطutjH,, +~u~jH,EsoyϷ1~u~jH,, +sutjH,EsoyϷ9sutjH,, +EjH,EsoyϷϼt1-3EjH,, +طsjH,EsoyϷϼt6-20طsjH,, +U,EsoyϸUw15U,, +UQjH,EsoyϸUw19-21UQjH,, +UwjH,EsoyϸUw2-6UwjH,, +Q,EsoyϸֺqR16Q,, +b,EsoyϸֺqR22-24b,, +sj,EsoyϸֺqR64sj,, +G~,EsoyϸֺqR83G~,, +,EsoyϹBʳD12-14,, +ʵؤjH,EsoyϹBʳD15ʵؤjH,, +BjH,EsoyϹBʳD21-27BjH,, +۵ؼ,EsoyϹBʳD5۵ؼ,, +jH,EsoyϹBʳD8-10jH,, +ֲ,EsoyϹŵ32-48ֲ,, +Qɰӷ~jH,EsoyϹ5-11Qɰӷ~jH,, +ENutjH,EsoyϺi15ENutjH,, +Rػ,EsoyϺi6Rػ,, +NAȦv,EsoyϺw10-12NAȦv,, +ɰӷ~jH,EsoyϺw2-4ɰӷ~jH,, +IjH,EsoyϺw5-7IjH,, +w,EsoyϺw6-8w,, +Yd,EsoyϺw9-11Yd,, +jH,EsoyϺwDn,, +Ĥ,EsoyϺwDn107-109Ĥ,, +ػ,EsoyϺwDn111-113ػ,, +Eͤ,EsoyϺwDn11-15Eͤ,, +Fӷ~jH,EsoyϺwDn115Fӷ~jH,, +Rӷ~jH,EsoyϺwDn117Rӷ~jH,, +״jH,EsoyϺwDn119A-119C״jH,, +÷~jH,EsoyϺwDn121-123÷~jH,, +wDn@,EsoyϺwDn1wDn@,, +pjH,EsoyϺwDn33-35pjH,, +KjH,EsoyϺwDn39KjH,, +hjH,EsoyϺwDn45-51hjH,, +ۤ,EsoyϺwDn57-59ۤ,, +s,EsoyϺwDn61-65s,, +w~jH,EsoyϺwDn67-71w~jH,, +꤭qjH,EsoyϺwDn79꤭qjH,, +wjH,EsoyϺwDn83-85AwjH,, +ʧQӷ~,EsoyϺwDn87-105ʧQӷ~,, +snjH,EsoyϺ~fD17snjH,, +~yjH,EsoyϺ~fD19-21~yjH,, +~jH,EsoyϺ~fD25-29~jH,, +j,EsoyϺ~fD35-37j,, +~¤jH,EsoyϺ~fD42-44~¤jH,, +~fjH,EsoyϺ~fD43-49A~fjH,, +Ͱӷ~,EsoyϺ~fD4-6Ͱӷ~,, +~f,EsoyϺ~fD5-15~f,, +~jH,EsoyϺ~fD8-10~jH,, +Ia,EsoyϺѵ16-18Ia,, +ѵjH,EsoyϺѵ1-7ѵjH,, +»,EsoyϺѵ20-22»,, +a,EsoyϺѵ27Ba,, +sӷ~jH,EsoyϺѵ38sӷ~jH,, +֥jH,EsoyϺ֥12-16֥jH,, +ֿj,EsoyϺ֥20-28ֿj,, +֩j,EsoyϺ֥32-40֩j,, +aλ,EsoyϺ֥4aλ,, +hu~jH,EsoyϺ֥55-57hu~jH,, +ӵoutjH,EsoyϺ֥78-80ӵoutjH,, +Wx,EsoyϺ֧Q8Wx,, +D詤,EsoyϺֿA18D詤,, +õoj,EsoyϺֿA24-30õoj,, +awjH,EsoyϺۥѹD,, +jH,EsoyϺۥѹD16-24AjH,, +۰ӷ~j,EsoyϺۥѹD17۰ӷ~j,, +PIӷ~jH,EsoyϺۥѹD19PIӷ~jH,, +ؼwjH,EsoyϺۥѹD1A-1JؼwjH,, +Ajӡ]@^,EsoyϺۥѹD31-39AAjӡ]@^,, +P~,EsoyϺۥѹD45P~,, +?F,EsoyϺۥѹD53-55?F,, +?֤jH,EsoyϺۥѹD57-59?֤jH,, +QNӷ~jH,EsoyϻwD11QNӷ~jH,, +Q°ӷ~jH,EsoyϻwD1-3Q°ӷ~jH,, +HjH,EsoyϻwD17HjH,, +L,EsoyϻwD19-23L,, +Ĭ{,EsoyϻwD25Ĭ{,, +,EsoyϻwD2A,, +ӷ~,EsoyϻwD2ӷ~,, +wΤ,EsoyϻwD5-9wΤ,, +nwӷ~jH,EsoyϻwD6nwӷ~jH,, +wݤjH,EsoyϻaD1-3wݤjH,, +bqjH,EsoyϻaD16bqjH,, +جujH,EsoyϻaD18-20جujH,, +RjH,EsoyϻaD1A-1JRjH,, +ְӷ~jH,EsoyϻaD22-28ְӷ~jH,, +ajH,EsoyϻaD30ajH,, +jH,EsoyϻaD31-43jH,, +RFjH,EsoyϻaD32-48RFjH,, +aؤ,EsoyϻaD61aؤ,, +æws,EsoyϻaD62æws,, +nɤ,EsoyϻaD63nɤ,, +wF,EsoyϻaD65wF,, +bq,EsoyϻaD67bq,, +Ұꤤ,EsoyϻaD68Ұꤤ,, +nv,EsoyϻaD75,, +~ӷ~jH,Esoyϼq108-116~ӷ~jH,, +ɳӤjH,Esoyϼq123-127ɳӤjH,, +ojH,Esoyϼq133-137ojH,, +ӿ,Esoyϼq148-154ӿ,, +Ůj,Esoyϼq174-184AŮj,, +nʤjH,Esoyϼq220nʤjH,, +֯]_,Esoyϼq239֯]_,, +󲻤jH,Esoyϼq249-251󲻤jH,, +@ذӷ~jH,Esoyϼq253-255@ذӷ~jH,, +ֻ,Esoyϼq259Aֻ,, +Fӷ~jH,Esoyϼq26-28Fӷ~jH,, +jH,Esoyϼq263-267jH,, +ؿjH,Esoyϼq269-271ؿjH,, +_ojH,Esoyϼq273-285_ojH,, +w֤jH,Esoyϼq280-284w֤jH,, +اӤjH,Esoyϼq286-298اӤjH,, +jH,Esoyϼq2-8jH,, +мw,Esoyϼq291мw,, +IjH,Esoyϼq29-35IjH,, +_ؤjH,Esoyϼq300-306_ؤjH,, +͵ojH,Esoyϼq308͵ojH,, +ìPjH,Esoyϼq36-40FìPjH,, +UjH,Esoyϼq41-45UjH,, +dj,Esoyϼq47-57dj,, +פjH,Esoyϼq7-13פjH,, +wjH,Esoyϼq99-101wjH,, +qjH,EsoyϼsFD,, +wQ,EsoyϼsFD1001-1003wQ,, +y,EsoyϼsFD1004-1012y,, +mPΤjH,EsoyϼsFD100mPΤjH,, +۩Mּ,EsoyϼsFD1026۩Mּ,, +n,EsoyϼsFD1038-1040n,, +H,EsoyϼsFD1091-1093H,, +ִI,EsoyϼsFD1096ִI,, +jH,EsoyϼsFD1099-1103jH,, +sFj,EsoyϼsFD1128sFj,, +,EsoyϼsFD1130,, +w^jH,EsoyϼsFD1136-1142w^jH,, +~su~,EsoyϼsFD1139~su~,, +Mu~jH,EsoyϼsFD1141-1143Mu~jH,, +׼,EsoyϼsFD1146-1152׼,, +sj,EsoyϼsFD1154-1160sj,, +°ӷ~,EsoyϼsFD116-120°ӷ~,, +仫jH,EsoyϼsFD1162仫jH,, +غtjH,EsoyϼsFD1163غtjH,, +_,EsoyϼsFD1176-1178_,, +Uּ,EsoyϼsFD1180-1182Uּ,, +}ؼ,EsoyϼsFD1184-1186}ؼ,, +䫰@ɰӷ~,EsoyϼsFD11䫰@ɰӷ~,, +䤤,EsoyϼsFD122-126䤤,, +APjH,EsoyϼsFD1227-1229APjH,, +ؤjH,EsoyϼsFD1231-1233ؤjH,, +Qӷ~jH,EsoyϼsFD12Qӷ~jH,, +¤jH,"EsoyϼsFD15-25䫰,´¤jH",, +䫰yĤ,EsoyϼsFD17-19䫰yĤ,, +O_Ӷs,EsoyϼsFD28O_Ӷs,, +1881 Hertiage,EsoyϼsFD2A1881 Hertiage,, +PjH,EsoyϼsFD2PjH,, +mjH,EsoyϼsFD308-310AmjH,, +s䤤߷s䤤,EsoyϼsFD30s䤤߷s䤤,, +jH,EsoyϼsFD312-320jH,, +QӬv,EsoyϼsFD332-338QӬv,, +䫰䫰,EsoyϼsFD33䫰䫰,, +䫰BjH,EsoyϼsFD3䫰BjH,, +筻jH,EsoyϼsFD504-512筻jH,, +ɾs,EsoyϼsFD513ɾs,, +|ɾ,EsoyϼsFD530-536|ɾ,, +|Wa,EsoyϼsFD535-541|Wa,, +sjH,EsoyϼsFD543-553sjH,, +ҰjH,EsoyϼsFD54-66ҰjH,, +ɷuӷ~jH,EsoyϼsFD555-557ɷuӷ~jH,, +soӷ~jH,EsoyϼsFD582-588soӷ~jH,, +A,EsoyϼsFD587-589A,, +sjH,EsoyϼsFD602-616sjH,, +w@jH,EsoyϼsFD618-632w@jH.,, +ڧQjH,EsoyϼsFD68-80ڧQjH,, +䫰EܹqT,EsoyϼsFD7䫰EܹqT,, +îjH,EsoyϼsFD802-812îjH,, +jw,EsoyϼsFD820-832jw,, +y|,EsoyϼsFD82-84y|,, +ؤjH,EsoyϼsFD831A-831LؤjH,, +Q,EsoyϼsFD835-845Q,, +õo,EsoyϼsFD840-844õo,, +õojH,EsoyϼsFD847-865õojH,, +n,EsoyϼsFD856-858n,, +QjH,EsoyϼsFD86-98QjH,, +sojH,EsoyϼsFD878-888sojH,, +¤jH,EsoyϼsFD887-889¤jH,, +a,EsoyϼsFD896a,, +ذӷ~jH,EsoyϼsFD900-904ذӷ~jH,, +jH,EsoyϼsFD913-923jH,, +Iq,EsoyϼsFD932Iq,, +FjH,EsoyϼsFD950-954FjH,, +wFjH,EsoyϼsFD976-978wFjH,, +»,Esoyϼsص15-33»,, +wjHBy,Esoyϼsص1wjHЮy,, +Aj(G),Esoyϼsص2-20Aj(G),, +ʧQFs,Esoyϼsص3ʧQFs,, +soӷ~,Esoyϼsص42-56soӷ~,, +dձd,Esoyϼw1-5dձd,, +IλO,Esoyϼw4-16IλO,, +w,Esoyϼw19w,, +,Esoyϼw8,, +wߤjH,Esoyϼw18-26wߤjH,, +,Esoyϼw70-80,, +I,Esoyϼw12I,, +ɿ,Esoyϼw13ɿ,, +IR,Esoyϼw4-6IR,, +_ӤjH,Esoyϼw9-10_ӤjH,, +,Esoyϼָs1-19,, +wjH,EsoyϼֹD13-19AwjH,, +ü֤j,EsoyϼֹD1-3Aü֤j,, +sؤjH,EsoyϼֹD21-21AsؤjH,, +ֽӷ~jH,EsoyϼֹD27ֽӷ~jH,, +ż֤jH,EsoyϼֹD5-7Aż֤jH,, +qljH,EsoyϽqlO1-2BqljH,, +P,EsoyϽqlO3P,, +òzb,EsoyϽòzD15-23òzb,, +_jH,EsoyϾ~46-58_jH,, +wּ,EsoyϾ~2-4wּ,, +jCjH,EsoyϾ41-63jCjH,, +ײ,EsoyϾ66-68ײ,, +,EsoyϾ70-72,, +çQjH,EsoyϾ74-76çQjH,, +sMjH,EsoyϾ78sMjH,, +sMjH,"EsoyϾ80, 82 82AsMjH",, +w,EsoyϾ81-85Aw,, +ģjH,EsoyϿդhO12ģjH,, +ֺ֤jH,EsoyϿդhO13-14Aֺ֤jH,, +ONE KNUTSFORD,EsoyϿդhO1ONE KNUTSFORD,, +Fӷ~jH,EsoyϿդhO4-5Fӷ~jH,, +֪jH,EsoyϿդhO7-8֪jH,, +a֤,EsoyϿդhO9a֤,, +jH,EsoyD,, +Rذӳ,EsoyD132Rذӳ,, +ӥvjH,EsoyD172-174ӥvjH,, +_ؤjH,EsoyD180_ؤjH,, +͸ۤjH,EsoyD182͸ۤjH,, +Qj,EsoyD184A-188Qj,, +THE WAVE,EsoyD184THE WAVE,, +󦨦Es,EsoyD192-194󦨦Es,, +_wӷ~jH,EsoyD196-198_wӷ~jH,, +FoijH,EsoyD204-206FoijH,, +פ,EsoyD216-228פ,, +h۴s,EsoyD219h۴s,, +Pӷ~jH,EsoyD221-221APӷ~jH,, +ںְӷ~,EsoyD221B-221Eںְӷ~,, +]s,EsoyD225]s,, +sjH,EsoyD227sjH,, +jH,EsoyD231jH,, +mP,EsoyD23-25mP,, +P,EsoyD233-239P,, +߫HjH,EsoyD240-252߫HjH,, +pjH,EsoyD241-243pjH,, +}hjH,EsoyD27-33}hjH,, +פjH,EsoyD298-306פjH,, +Żӷ~jH,EsoyD301-309Żӷ~jH,, +jH,EsoyD312jH,, +~jH,EsoyD317-321~jH,, +ʼ֤jH,EsoyD322-326Aʼ֤jH,, +wjH,EsoyD328-342AwjH,, +HjH,EsoyD331-333HjH,, +[ӷ~,EsoyD333[ӷ~,, +Ȥ,EsoyD335Ȥ,, +,EsoyD337-339,, +jH,EsoyD341jH,, +æwEs,EsoyD345æwEs,, +ڼs,EsoyD35-79ڼs,, +jH,EsoyD358-366jH,, +y,EsoyD36-44y,, +jH,EsoyD375-381jH,, +wj,EsoyD383-389Cwj,, +yjHAy,EsoyD40-44yjHϮy,, +ӰȤjH,EsoyD430-436ӰȤjH,, +HjH,EsoyD438HjH,, +AפjH,EsoyD440-442AפjH,, +WjH,EsoyD444-446AWjH,, +廨,EsoyD448-452廨,, +jH,EsoyD458-460jH,, +ΤjH,EsoyD466-472ΤjH,, +sӷ~jH,EsoyD469-471sӷ~jH,, +d֤j,EsoyD475-477Ad֤j,, +ͳ,EsoyD476ͳ,, +Ŭ,EsoyD479-481Ŭ,, +E_ӷ~jH,EsoyD480E_ӷ~jH,, +EPjH,EsoyD482-484EPjH,, +qnطH,EsoyD486-488qnطH,, +LȦjH,EsoyD490-492LȦjH,, +ijH,EsoyD491-493AijH,, +ʧQӷ~jH,EsoyD494-496ʧQӷ~jH,, +RPjH,EsoyD495-497ARPjH,, +WߤjH,EsoyD499-501AWߤjH,, +UajH,EsoyD503-507UajH,, +Dj,EsoyD509-511ADj,, +Mӷ~j,EsoyD513Mӷ~j,, +Aؼ,EsoyD514-516Aؼ,, +nӷ~jH,EsoyD515-517nӷ~jH,, +§jH,EsoyD521-523§jH,, +sӷ~jH,EsoyD522sӷ~jH,, +jH,EsoyD524jH,, +_jH,EsoyD525-543A_jH,, +djH,EsoyD528djH,, +ùjH,EsoyD530ùjH,, +źajH,EsoyD532-538źajH,, +wQjH,EsoyD545wQjH,, +j,EsoyD546-548j,, +sjH,EsoyD550-552sjH,, +_njH,EsoyD554-556A_njH,, +Es,EsoyD555Es,, +é,EsoyD557-559é,, +qȦjH,EsoyD563qȦjH,, +ڤj,EsoyD564ڤj,, +Ȯys,EsoyD565-567Ȯys,, +ؤjH,EsoyD566-568AؤjH,, +Qӷ~jH,EsoyD570-572Qӷ~jH,, +IBӷ~,EsoyD573IBӷ~,, +MIӷ~jH,EsoyD574-576MIӷ~jH,, +j,EsoyD577-577Aj,, +ڶjH,EsoyD578-580ڶjH,, +,EsoyD580G-580K,, +Iɤ,EsoyD583A-585Iɤ,, +שɤ,EsoyD591שɤ,, +s,EsoyD594-596s,, +пs,EsoyD601пs,, +sjH,EsoyD603-609AsjH,, +ӷ~,EsoyD610ӷ~,, +߶ߤ@ & G,EsoyD625-639߶ߤ@ & G,, +ãؤ,EsoyD628ãؤ,, +FȻȦjH,EsoyD638-640FȻȦjH,, +wjH,EsoyD642-646wjH,, +Q¤j,EsoyD654-658Q¤j,, +Jͦ,EsoyD655Jͦ,, +Wӷ~ȦjH,EsoyD664-672Wӷ~ȦjH,, +ajH,EsoyD66-70ajH,, +ڥͩjH,EsoyD677ڥͩjH,, +عӷ~,EsoyD678عӷ~,, +jH,EsoyD683-685jH,, +ťݤjH,EsoyD687-689ťݤjH,, +߲Ĥ@y,EsoyD688߲Ĥ@y,, +æpjH,"EsoyD691-691A,693-695A,697æpjH",, +T.O.P,EsoyD700T.O.P,, +fojH,EsoyD701fojH,, +p?,EsoyD703-705p?,, +ȰڤjH,EsoyD707-713ȰڤjH,, +Kü,EsoyD717Kü,, +ȳӷ~jH,EsoyD719ȳӷ~jH,, +aּ,EsoyD720-722aּ,, +ؤȦjH,EsoyD721-725ؤȦjH,, +nsjH,EsoyD727nsjH,, +swȦjH,EsoyD728-730swȦjH,, +jH,EsoyD72jH,, +yjH,EsoyD731-733yjH,, +e,EsoyD732e,, +ؤjH,EsoyD735-735AؤjH,, +?ӷ~jH,EsoyD736?ӷ~jH,, +jH,EsoyD737-741CjH,, +QؤjH,EsoyD738-740AQؤjH,, +jH,EsoyD746-748jH,, +廹jH,EsoyD74-78廹jH,, +RB,EsoyD749ARB,, +ڨȻȦjH,EsoyD749ڨȻȦjH,, +lФ,EsoyD750lФ,, +s,EsoyD751-753As,, +aC,EsoyD751A-751CaC,, +Xհӷ~,EsoyD755Xհӷ~,, +FjH]UhpXs^,EsoyD760-780FjH]UhpXs^,, +sjH,EsoyD763-767sjH,, +?y,EsoyD771-775?y,, +ȤӤlj,EsoyD774ȤӤlj,, +ڧQӷ~jH,EsoyD776-778ڧQӷ~jH,, +w_,EsoyD777-781w_,, +R^jH,EsoyD780-782R^jH,, +jͻȦjH,EsoyD784jͻȦjH,, +QFj,EsoyD785-787AQFj,, +ӷ~jH,EsoyD786ӷ~jH,, +QjH,EsoyD788-790QjH,, +pOIjH,EsoyD789pOIjH,, +wdӷ~jH,EsoyD792wdӷ~jH,, +󦨦Ӥl,EsoyD794-802󦨦Ӥl,, +qjH,EsoyD80qjH,, +ߧQjH,EsoyD81ߧQjH,, +w֤jH,EsoyD86-88Aw֤jH,, +شjH,EsoyD90-94CشjH,, +jH,EsoyD99-101jH,, +_Oj,Esoy_ǫ13-15_Oj,, +jH,Esoy_ǫ1-3jH,, +sӷ~jH,Esoy_ǫ22-24sӷ~jH,, +Fװӷ~jH,Esoy_ǫ27Fװӷ~jH,, +_ӷ~jH,Esoy_ǫ29_ӷ~jH,, +UƩs,Esoy_ǫ3-7AUƩs,, +Ҧ,Esoy_ǫ4Ҧ,, +װӷ~jH,Esoy_ǫ6-8װӷ~jH,, +w~jH,Esoy_F1Hw~jH,, +,Esoy_F2-6,, +_wjH,Esoy_F32-38B_wjH,, +_,Esoy_F48-50_,, +_Fj,Esoy_F8-20_Fj,, +Fx,EsoyıhD3Fx,, +sO,EsoyıhD5sO,, +Ť,EsoyıhD9Ť,, +~,EsoyѾ37~,, +~suӤjH,EsoyѾ39-41~suӤjH,, +צ~u~jH,EsoyѾ7-13צ~u~jH,, +fDs? @y,EsoyѾ88fDs? @y,, +jH,Esoy22-22AjH,, +,Esoy24-24A,, +,EsoyK13-23A,, +nb,Es`?,, +礤Ay,Es`?,, +䯽tu~jHĤ@,Es`?,, +jH,Es`?,, +֦~,Es`?,, +Pӷ~j,Es`?NKIL1173FWD202-204Pӷ~j,, +ͮjH,Es`?NKIL1463 & 2018CsD329-331ͮjH,, +QpqjH,Es`?NKIL176KD390-394QpqjH,, +gͻx,Es`?NKIL2188ֵص561gͻx,, +ؼ,Es`?NKIL2877L151-153ؼ,, +D2 PLACE G,Es`?NKIL556015D2 PLACE G,, +حb,Es`?ϤE140-142حb,, +ma,Es`?ϤE158-160ma,, +׷,Es`?ϤE162׷,, +jH,Es`?ϤEsD5-7jH,, +յؤjH,Es`?ϤEsD9յؤjH,, +S@~,Es`?ϤS@~D9S@~,, +ض׼s,Es`?Ϥjn1008ض׼s,, +ʺ֤u~jH,Es`?Ϥjn615-617ʺ֤u~jH,, +򶰹ΤjH,Es`?Ϥjn156-158򶰹ΤjH,, +u,Es`?Ϥjn160-170u,, +jnӷ~jH,Es`?Ϥjn169-171jnӷ~jH,, +wּ,Es`?Ϥjn172-174wּ,, +jH,Es`?Ϥjn176-178jH,, +UפjH,Es`?Ϥjn180UפjH,, +w֤jH,Es`?Ϥjn181-183w֤jH,, +jH,Es`?Ϥjn195-201jH,, +«n,Es`?Ϥjn206-212«n,, +jH,Es`?Ϥjn223-223AjH,, +,Es`?Ϥjn230-234,, +nI,Es`?Ϥjn295-297nI,, +n,Es`?Ϥjn307-309n,, +Rw,Es`?Ϥjn315-319Rw,, +߰,Es`?Ϥjn321-323߰,, +QjH,Es`?Ϥjn339-341QjH,, +w,Es`?Ϥjn359-361Aw,, +ŧQ,Es`?Ϥjn370-372ŧQ,, +,Es`?Ϥjn376-378,, +øqs,Es`?Ϥjn609øqs,, +wwjH,Es`?ϤjHD10-12AwwjH,, +HjH,Es`?ϤjHD104-106HjH,, +jH,Es`?ϤjHD13-15jH,, +d_jH,Es`?ϤjHD132-134d_jH,, +Ffj,Es`?ϤjHD136-154Ffj,, +سjH,Es`?ϤjHD14-16سjH,, +ժjH,Es`?ϤjHD156-158ժjH,, +njH,Es`?ϤjHD168-178njH,, +Ͳ`?jH,Es`?ϤjHD180-182Ͳ`?jH,, +|,Es`?ϤjHD188|,, +pXȦjH,Es`?ϤjHD18pXȦjH,, +pjH,Es`?ϤjHD190-192BpjH,, +ŶjH,Es`?ϤjHD194-196ŶjH,, +s,Es`?ϤjHD198-200s,, +As,Es`?ϤjHD232-234As,, +wjH,Es`?ϤjHD236wjH,, +,Es`?ϤjHD238,, +tj,Es`?ϤjHD240-242tj,, +Ƚ,Es`?ϤjHD244-248Ƚ,, +Ab,Es`?ϤjHD25-27Ab,, +wӼ,Es`?ϤjHD29-29DwӼ,, +m,Es`?ϤjHD31-35m,, +nخx,Es`?ϤjHD369,, +A˭b,Es`?ϤjHD389A˭b,, +ذ´y`|jH,Es`?ϤjHD40ذ´y`|jH,, +׹,Es`?ϤjHD42-44׹,, +ɱdjH,Es`?ϤjHD43-45,, +õo,Es`?ϤjHD46õo,, +jH,Es`?ϤjHD48-52jH,, +֤jH,Es`?ϤjHD63-71֤jH,, +ģjH,Es`?ϤjHD6-8ģjH,, +Ӥl,Es`?ϤjHD70,, +Ӥl߰ӳ,Es`?ϤjHD70Ӥl߰ӳ,, +jH,Es`?ϤjHD72-74jH,, +«HjH,Es`?ϤjHD75«HjH,, +عjH,Es`?ϤjHD76-84عjH,, +wjH,Es`?ϤjHD79-85AwjH,, +εoj,Es`?ϤjHD87-91εoj,, +ؤjH,Es`?ϤjHD92-102ؤjH,, +۸10,Es`?Ϥ۸10,, +뤤,Es`?Ϥ۸12뤤,, +ۻ,Es`?Ϥ۸14ۻ,, +۸16,Es`?Ϥ۸16,, +۸3,Es`?Ϥ۸3,, +۸4,Es`?Ϥ۸4,, +IAb,Es`?Ϥ۸5IAb,, +Ab,Es`?Ϥ۸6-8Ab,, +qؤjH,Es`?Ϥ{,, +njH,Es`?Ϥ{124-126njH,, +sjH,Es`?Ϥ{131-135sjH,, +jjH,Es`?Ϥ{132jjH,, +j,Es`?Ϥ{1-3Aj.,, +I,Es`?Ϥ{143-145I,, +ؿj,Es`?Ϥ{146-150ؿj,, +swjH,Es`?Ϥ{151-153AswjH,, +ּ,Es`?Ϥ{152ּ,, +wjH,Es`?Ϥ{154-160wjH,, +AjH,Es`?Ϥ{155-163AjH,, +Buӷ~j,Es`?Ϥ{165Buӷ~j,, +EΤjH,Es`?Ϥ{174-188EΤjH,, +ؼ,Es`?Ϥ{18B-18Cؼ,, +~,Es`?Ϥ{213~,, +jH,Es`?Ϥ{223-229jH,, +ojH,Es`?Ϥ{231-247ojH,, +fü,Es`?Ϥ{24-26fü,, +hwu~jH,Es`?Ϥ{249-263hwu~jH,, +outjH,Es`?Ϥ{265-271outjH,, +utjH,Es`?Ϥ{273-279utjH,, +mFjH,Es`?Ϥ{28-30mFjH,, +詤ڤjH,Es`?Ϥ{290-296詤ڤjH,, +,Es`?Ϥ{298,, +,Es`?Ϥ{2,, +÷uu~jH,Es`?Ϥ{312-314÷uu~jH,, +õojH,Es`?Ϥ{318-320AõojH,, +wjH,Es`?Ϥ{32-40wjH,, +֦,Es`?Ϥ{33-35֦,, +nfjH,Es`?Ϥ{334nfjH,, +aajH,Es`?Ϥ{353-357aajH,, +|n,Es`?Ϥ{362|n,, +FpjH,Es`?Ϥ{388FpjH,, +ؼ,Es`?Ϥ{414-418ؼ,, +,Es`?Ϥ{43,, +_ػ,Es`?Ϥ{450-464_ػ,, +swjH,Es`?Ϥ{45swjH,, +ڤjH,Es`?Ϥ{477-483ڤjH,, +ѻ,Es`?Ϥ{482-492ѻ,, +IwjH,Es`?Ϥ{485-491IwjH,, +GؤjH,Es`?Ϥ{493-499GؤjH,, +Cػ,Es`?Ϥ{498Cػ,, +ۤ,Es`?Ϥ{50-52ۤ,, +EjH,Es`?Ϥ{58-60EjH,, +I,Es`?Ϥ{71-73I,, +wjH,Es`?Ϥ{72-82wjH,, +mw,Es`?Ϥ{77-81mw,, +hjH,Es`?Ϥ{85-95hjH,, +snqs,Es`?Ϥ{85-95snqs.,, +y,Es`?Ϥ{8-8Ay,, +ߺy,Es`?Ϥ{ߺy,, +ڰ,Es`?Ϥڰ51ڰ,, +sj,Es`?Ϥڰ61A-61Csj,, +ڰ~,Es`?Ϥڰ61ڰ~,, +,Es`?Ϥڰ69,, +ַN~,Es`?ϥ_e132ַN~,, +ȪejH,Es`?ϥ_e134-136ȪejH,, +ojH,Es`?ϥ_e147-151ojH,, +jQ,Es`?ϥ_e165-167jQ,, +yפj,Es`?ϥ_e169-171yפj,, +Iש~,Es`?ϥ_e183Iש~,, +pNjH,Es`?ϥ_e24-26pNjH,, +rAb,Es`?ϥ_e33-39rAb,, +ôIjH,Es`?ϥ_e48ôIjH,, +j,Es`?ϥ_e96-96Cj,, +ñd,Es`?ϥñd18ñd,, +wu~jH,Es`?ϥñd23-27wu~jH,, +¤u~jH,Es`?ϥñd29-33¤u~jH,, +׵ؤutjH,Es`?ϥñd41׵ؤutjH,, +aӷ~jH,Es`?ϥñd42Aaӷ~jH,, +ɿo,Es`?ϥñd51-53ɿo,, +djH B y,Es`?ϥñd60-62djH B y,, +P,Es`?ϥñd77P,, +suӤ,Es`?ϥñd79suӤ,, +䳣|,Es`?ϥñd7䳣|,, +,Es`?ϥ11A,, +s,Es`?ϥ11s,, +ػ,Es`?ϥ15ػ,, +bRb,Es`?ϥ17bRb,, +,Es`?ϥ19,, +ڻ,Es`?ϥ1ڻ,, +b,Es`?ϥ21b,, +,Es`?ϥ3,, +w,Es`?ϥ4w,, +,Es`?ϥ5,, +_,Es`?ϥ9_ 1y,, +Ӽ,Es`?ϥշ20-22Ӽ,, +,Es`?ϥշ21,, +ŦwjH,Es`?ϥշ27-29ŦwjH,, +A,Es`?ϥշ31A,, +b,Es`?ϥۦ˸11b,, +ۦ˻,Es`?ϥۦ˸12ۦ˻,, +Ӵ»,Es`?ϥۦ˸14-14DӴ»,, +ɳ߻,Es`?ϥۦ˸15ɳ߻,, +Id,Es`?ϥۦ˸16Id,, +,Es`?ϥۦ˸17,, +RQb,Es`?ϥۦ˸18RQb,, +ɥۭb,Es`?ϥۦ˸1ɥۭb,, +Iw,Es`?ϥۦ˸2-2MIw,, +R?b,Es`?ϥۦ˸3R?b,, +FE,Es`?ϥۦ˸7FE,, +Iɭb,Es`?ϥۦ˸8Iɭb,, +}b,Es`?ϥۦ˸9}b,, +pjH,Es`?ϥƧ2GpjH,, +ֵؼ,Es`?ϥƧ34-38ֵؼ,, +ojH,Es`?ϥƧ39-41ojH,, +Rb,Es`?ϦaA10Rb,, +d,Es`?ϦaA12d,, +A,Es`?ϦaA1A,, +RA,Es`?ϦaA3RA,, +ub,Es`?ϦaA4ub,, +Aw,Es`?ϦaA6Aw,, +ñdutjH,Es`?Ϧ{777-783ñdutjH,, +w,Es`?Ϧ{108-112w,, +UjH,Es`?Ϧ{130-134UjH,, +tzjH,Es`?Ϧ{136-138tzjH,, +IΤjH,Es`?Ϧ{175-177IΤjH,, +jH,Es`?Ϧ{184jH,, +jH,Es`?Ϧ{188-190jH,, +a,Es`?Ϧ{199a,, +O}ֲMjH,Es`?Ϧ{201-207O}ֲMjH,, +wjH,Es`?Ϧ{202-214wjH,, +jH ({),Es`?Ϧ{209-211jH ({),, +jH,Es`?Ϧ{213-221jH,, +wjH,Es`?Ϧ{218-224wjH,, +ɬu,Es`?Ϧ{237-241ɬu,, +[Ѽ,Es`?Ϧ{240-246[Ѽ,, +ةM,Es`?Ϧ{243-245ةM,, +FjH({),Es`?Ϧ{251-255FjH({),, +m,Es`?Ϧ{257-259m,, +˩jH,Es`?Ϧ{264-270˩jH,, +HjH,Es`?Ϧ{265-267HjH,, +ɻ,Es`?Ϧ{295-297ɻ,, +_ߤjH,Es`?Ϧ{42-46_ߤjH,, +UjH,Es`?Ϧ{48-56UjH,, +~jH,Es`?Ϧ{81-89~jH,, +jH,Es`?Ϧ{95-97jH,, +鴺jH 1y,Es`?Ϧv_197-209鴺jH 1y,, +jH,Es`?Ϧv_211-213AjH,, +jH,Es`?Ϧv_221-225jH,, +UMjH,Es`?Ϧv_227-229AUMjH,, +sjH,Es`?Ϧv_271-281sjH,, +,Es`?Ϧv_289,, +ѻA,Es`?Ϧv_444-446ѻA,, +?,Es`?Ϧv_468?,, +IRb,Es`?Ϩd11IRb,, +BA,Es`?Ϩd12BA,, +Ib,Es`?Ϩd2Ib,, +Ib,Es`?Ϩd3Ib,, +A,Es`?Ϩd4A,, +d,Es`?Ϩd5d,, +A?b,Es`?Ϩd6A?b,, +ػ,Es`?Ϩd7ػ,, +IFb,Es`?Ϩd8IFb,, +Tb,Es`?ϩ2,, +ҴpҴ~2y,Es`?ϩWD,, +ػ,Es`?ϩص20ػ,, +ujH,Es`?ϩص41-51ujH,, +F,Es`?ϪFFq167B-167EF,, +Iػ,Es`?ϪFFq171-175Iػ,, +jH,Es`?ϪFFq182jH,, +ڨӷ~jH,Es`?ϪFʵ31ڨӷ~jH,, +jH,Es`?ϪFʵ37-39jH,, +FjH,Es`?ϪFʵ40-42FjH,, +ŧQ,Es`?ϪFʵ56-58ŧQ,, +b,Es`?Ϫ,, +THE PRIMROSE,Es`?Ϫ38THE PRIMROSE,, +Rb,Es`?ϪE,, +ֲb,Es`?ϪE10ֲb,, +S@,Es`?ϪE11-11CS@,, +EO,Es`?ϪE12-14EO,, +ַsb,Es`?ϪE16ַsb,, +O,Es`?ϪE18-20O,, +O,Es`?ϪE26O,, +S@,Es`?ϪE63S@,, +BbO,Es`?ϪE6-8BbO,, +j,Es`?ϪFWD103-107j,, +aؼ,Es`?ϪFWD109-115aؼ,, +ú~,Es`?ϪFWD11-13ú~,, +Fj,Es`?ϪFWD116-122Fj,, +wj,Es`?ϪFWD124-126wj,, +ؤjH,Es`?ϪFWD125-127ؤjH,, +ɮajH,Es`?ϪFWD132-134ɮajH,, +Qӷ~jH,Es`?ϪFWD137-143Qӷ~jH,, +jsjH,Es`?ϪFWD140-142jsjH,, +jw,Es`?ϪFWD145-149Ajw,, +nWjH,Es`?ϪFWD151-153nWjH,, +AؤjH,Es`?ϪFWD15-19AAؤjH,, +󿳤jH,Es`?ϪFWD158-160A󿳤jH,, +djH,Es`?ϪFWD162-166djH,, +Qۼ,Es`?ϪFWD168-170Qۼ,, +ǤjH,Es`?ϪFWD172-176ǤjH,, +s,Es`?ϪFWD186-188s,, +Iwӷ~jH,Es`?ϪFWD190-192Iwӷ~jH,, +֤jH,Es`?ϪFWD191-203֤jH,, +ȪFWj,Es`?ϪFWD194-200ȪFWj,, +F,Es`?ϪFWD212-216F,, +פjH,Es`?ϪFWD21-25פjH,, +w֤jH,Es`?ϪFWD218w֤jH,, +Q,Es`?ϪFWD219Q,, +j,Es`?ϪFWD22-24j,, +`,Es`?ϪFWD226-242 G/F 3/F`,, +A|jH,Es`?ϪFWD227-229A|jH,, +fdjH,Es`?ϪFWD233-239fdjH,, +۲jH,Es`?ϪFWD241-249۲jH,, +ͿjH,Es`?ϪFWD244-246ͿjH,, +æwjH,Es`?ϪFWD250-252æwjH,, +ywjH,Es`?ϪFWD251-253ywjH,, +ڵطH,Es`?ϪFWD255-261ڵطH,, +,Es`?ϪFWD260,, +UQjH,Es`?ϪFWD262UQjH,, +EqjH,Es`?ϪFWD263-267EqjH,, +djH,Es`?ϪFWD26-32djH,, +kjH,Es`?ϪFWD264kjH,, +粻jH,Es`?ϪFWD269-273粻jH,, +OؤjH,Es`?ϪFWD276-278AOؤjH,, +fd,Es`?ϪFWD280fd,, +nvjH,Es`?ϪFWD286-300nvjH,, +ɹtb,Es`?ϪFWD311,, +EBjH,Es`?ϪFWD31-41EBjH,, +ɻխb,Es`?ϪFWD329-343ɻխb,, +jH,Es`?ϪFWD43-45jH,, +ߤjH,Es`?ϪFWD44ߤjH,, +sjH,Es`?ϪFWD52-54sjH,, +X,Es`?ϪFWD57-59X,, +Fq,Es`?ϪFWD64-66Fq,, +jH,Es`?ϪFWD650jH,, +Rsӷ~,Es`?ϪFWD678-684Rsӷ~,, +Ts,Es`?ϪFWD681Ts,, +WH~,Es`?ϪFWD68-70WH~,, +jH,Es`?ϪFWD72-74jH,, +EutjH,Es`?ϪFWD742-748EutjH,, +sjutjH,Es`?ϪFWD750sjutjH,, +jH,Es`?ϪFWD76-78jH,, +Ѧwu~jH,Es`?ϪFWD777-779Ѧwu~jH,, +䤤,Es`?ϪFWD778-784䤤,, +ū¤jH,Es`?ϪFWD7-9ū¤jH,, +,Es`?ϪFWD80-82,, +FWs,Es`?ϪFWD833FWs,, +s,Es`?ϪFWD84-86s,, +QפjH,Es`?ϪFWD868-888QפjH,, +Qu~,Es`?ϪFWD883Qu~,, +dI,Es`?ϪFWD88-92dI,, +wjH,Es`?ϪFWD910wjH,, +ɫH,Es`?ϪFWD912-914ɫH,, +RjH,Es`?ϪFWD918RjH,, +ɥN,Es`?ϪFWD928-930ɥN,, +s,Es`?ϪFWD932s,, +ñR,Es`?ϪFWD94-96ñR,, +ùjH,Es`?Ϫo17ùjH,, +jH,Es`?Ϫo22jH,, +wojH,Es`?Ϫo28wojH,, +utjH,Es`?Ϫ11utjH,, +زu~jH,Es`?Ϫ18زu~jH,, +ģQĤu~jH,Es`?Ϫ19ģQĤu~jH,, +su~jH,Es`?Ϫ1su~jH,, +y,Es`?Ϫ7y,, +u~jH,Es`?Ϫq10u~jH,, +utjH,Es`?Ϫq6utjH,, +D2 PLACE,Es`?Ϫq9D2 PLACE,, +wפ,Es`?Ϫε11wפ,, +gFs,Es`?Ϫε12gFs,, +éu~,Es`?Ϫε15éu~,, +fΤu~ B y,Es`?Ϫε18fΤu~ B y,, +ŹϤutjH,Es`?Ϫε2ŹϤutjH,, +ꧻjH,Es`?Ϫε5ꧻjH,, +ʼs,Es`?Ϫε8ʼs,, +öjH,Es`?ϫCsD,, +EΤjHA y,Es`?ϫCsD,, +׬նa,Es`?ϫCsD100׬նa,, +IΩ~,Es`?ϫCsD108IΩ~,, +§Qӷ~jH,Es`?ϫCsD128§Qӷ~jH,, +ujH,Es`?ϫCsD129-135ujH,, +o~,Es`?ϫCsD142o~,, +wjH,Es`?ϫCsD145-153wjH,, +ðӷ~jH,Es`?ϫCsD156-162ðӷ~jH,, +I{jH,Es`?ϫCsD15I{jH,, +tzjH,Es`?ϫCsD164-170tzjH,, +زjH,Es`?ϫCsD17-23زjH,, +÷~jH,Es`?ϫCsD193A÷~jH,, +ɩ~,Es`?ϫCsD195Aɩ~,, +,Es`?ϫCsD195,, +jH,Es`?ϫCsD202-210jH,, +KjH,Es`?ϫCsD205-209KjH,, +R,Es`?ϫCsD212R,, +FjH,Es`?ϫCsD242-244FjH,, +Csj,Es`?ϫCsD246-248Csj,, +y,Es`?ϫCsD252-256y,, +ڽ,Es`?ϫCsD253-259ڽ,, +óӤj,Es`?ϫCsD25-35óӤj.,, +dj,Es`?ϫCsD261-263dj,, +ɵo,Es`?ϫCsD289ɵo,, +ojH,Es`?ϫCsD290-292ojH,, +so,Es`?ϫCsD320-322so,, +333s,Es`?ϫCsD333s,, +Qӷ~jH,Es`?ϫCsD338-340Qӷ~jH,, +ڥͫCsDjH,Es`?ϫCsD339ڥͫCsDjH,, +طsjH,Es`?ϫCsD3-5طsjH,, +,Es`?ϫCsD368,, +LwjH,Es`?ϫCsD373-379LwjH,, +۬jH,Es`?ϫCsD386-390۬jH,, +P,Es`?ϫCsD399P,, +ӷ~,Es`?ϫCsD412-420ӷ~,, +FjH,Es`?ϫCsD413FjH,, +Iؼs,Es`?ϫCsD421Iؼs,, +аӷ~jH,Es`?ϫCsD422-428аӷ~jH,, +Rs,Es`?ϫCsD438Rs,, +dQjH,Es`?ϫCsD444-450dQjH,, +_jH,Es`?ϫCsD457-463_jH,, +pAy,Es`?ϫCsD467pբϮy,, +ʨΰӷ~,Es`?ϫCsD476ʨΰӷ~,, +ʪYjH,Es`?ϫCsD478ʪYjH,, +RutjH,Es`?ϫCsD479-479ARutjH,, +Ӽгy´t,Es`?ϫCsD483D-483EӼгy´t,, +AoutjH,Es`?ϫCsD483F-483GAoutjH,, +Ess,Es`?ϫCsD485Ess,, +u~,Es`?ϫCsD489-491u~,, +۫Hu~jH,Es`?ϫCsD495۫Hu~jH,, +ɨӤutjH,Es`?ϫCsD497ɨӤutjH,, +ÿu~jH,Es`?ϫCsD499ÿu~jH,, +ʬu~jH,Es`?ϫCsD500ʬu~jH,, +qwutjH,Es`?ϫCsD528qwutjH,, +jH,Es`?ϫCsD532-532AjH,, +bqjH,Es`?ϫCsD538bqjH,, +ڵou~jH,Es`?ϫCsD550-556ڵou~jH,, +su~,Es`?ϫCsD576-586su~,, +òu~jH,Es`?ϫCsD588-592òu~jH,, +aNu~jH,Es`?ϫCsD608aNu~jH,, +׵ؤu~jH,Es`?ϫCsD646-648A׵ؤu~jH,, +WHӷ~,Es`?ϫCsD64WHӷ~,, +qju~jH,Es`?ϫCsD650-652qju~jH,, +^jH,Es`?ϫCsD654-656^jH,, +֦ܤu~jH,Es`?ϫCsD658֦ܤu~jH,, +ʥͧQ,Es`?ϫCsD660-662ʥͧQ,, +_ؤu~jH,Es`?ϫCsD666_ؤu~jH,, +ؤjH,Es`?ϫCsD66-74ؤjH,, +yuT,Es`?ϫCsD682yuT,, +ŦWutjH,Es`?ϫCsD688-690ŦWutjH,, +Ӥu~jH,Es`?ϫCsD698Ӥu~jH,, +Xu~jH,Es`?ϫCsD702-704Xu~jH,, +^ۤjH,Es`?ϫCsD7-7A^ۤjH,, +s,Es`?ϫCsD84-90s,, +׸λ,Es`?ϫCsD92׸λ,, +s_jH,Es`?ϫOwD17-33s_jH,, +߶,Es`?ϫOwD18-28߶,, +_w,Es`?ϫOwD1_w,, +_bI,Es`?ϫOwD255_bI,, +_ba,Es`?ϫOwD255_ba,, +_Rb_d,Es`?ϫOwD325_Rb_d,, +_Rb_A,Es`?ϫOwD327_Rb_A,, +_Rb_ֻ,Es`?ϫOwD329_Rb_ֻ,, +_ػ,Es`?ϫOwD32_ػ,, +R_,Es`?ϫOwD383R_,, +ؼ,Es`?ϫn124-126ؼ,, +njH,Es`?ϫn128-136njH,, +n,Es`?ϫn133-135n,, +njH,Es`?ϫn153-155njH,, +s׼,Es`?ϫn16-18Cs׼,, +ģAj,Es`?ϫn164-166ģAj,, +LjH,Es`?ϫn169-175LjH,, +jH,Es`?ϫn176-180jH,, +n,Es`?ϫn177n,, +T,Es`?ϫn182T,, +Rs,Es`?ϫn188-200Rs,, +nb,Es`?ϫn191nb,, +n@,Es`?ϫn13n@,, +طs,Es`?ϫn203-211طs,, +n|j?,Es`?ϫn223-237n|j?,, +_ؼ,Es`?ϫn24-26_ؼ,, +,Es`?ϫn36-40,, +ؼ,Es`?ϫn42-44ؼ,, +w,Es`?ϫn46-48w,, +FjH(n),Es`?ϫn61-65FjH(n),, +FjH,Es`?ϫn80-82FjH,, +n,Es`?ϫn81-95n,, +ڼ,Es`?ϫn90ڼ,, +l,Es`?ϫn96l,, +k,Es`?ϫn97k,, +é,Es`?ϫn98-100é,, +ֺjH,Es`?ϫn99-103ֺjH,, +ܼ,Es`?Ϭɭ15-15Eܼ,, +wojH,Es`?Ϭɭ21B-21DwojH,, +Ӽ,Es`?Ϭɭ25-25BӼ,, +j,Es`?Ϭɭ27-41j,, +ڴIjH,Es`?Ϭɭ43ڴIjH,, +,Es`?Ϭɭ51,, +,Es`?Ϯ۪L121-125,, +,Es`?Ϯ۪L137-139,, +ۤjH,Es`?Ϯ۪L145-147ۤjH,, +PwjH,Es`?Ϯ۪L48-50APwjH,, +_,Es`?Ϯ۪L91-93_,, +ؤ,Es`?Ϯ緽37-37Aؤ,, +b,Es`?Ϯ緽39b,, +ŭb,Es`?ϮŸ,, +y,Es`?ϮŸ,, +Rb,Es`?ϮŸ1Rb,, +S@s,Es`?ϮŸ21-31S@s,, +sO,Es`?ϮŸ50sO.,, +̶,Es`?ϮŸ7̶,, +¤jH,Es`?Ϯµ145-149¤jH,, +,Es`?Ϯµ151-159,, +ȮjH,Es`?Ϯµ163-167ȮjH,, +w,Es`?Ϯµ166w,, +׮j,Es`?Ϯµ168׮j,, +_,Es`?Ϯµ186A_,, +^,Es`?Ϯµ194^,, +w~,Es`?Ϯµ219-221w~,, +ѤjH,Es`?Ϯµ224-226ѤjH,, +IjH,Es`?Ϯµ232-234IjH,, +h,Es`?Ϯµ236-236Ah,, +Ѥj,Es`?Ϯµ240-242Ѥj,, +jH,Es`?Ϯµ241-245jH,, +_jH,Es`?Ϯµ242A_jH,, +lO,Es`?ϯKD,, +jw,Es`?ϯKD195-201jw,, +,Es`?ϯKD203-207,, +οjH,Es`?ϯKD208-210οjH,, +_jH,Es`?ϯKD209-213_jH,, +ӷ~jH,Es`?ϯKD218-220ӷ~jH,, +éjH,Es`?ϯKD223-227AéjH,, +ﭻjH,Es`?ϯKD229-233AﭻjH,, +_,Es`?ϯKD240-244_,, +w,Es`?ϯKD256-258w,, +ع,Es`?ϯKD260-262ع,, +sd,Es`?ϯKD265-267sd,, +h,Es`?ϯKD270-272h,, +UwjH,Es`?ϯKD282-290AUwjH,, +ذӷ~jH,Es`?ϯKD292ذӷ~jH,, +ʲj,Es`?ϯKD295-297ʲj,, +Ťj,Es`?ϯKD299-303Ťj,, +չF,Es`?ϯKD315-315AչF,, +ɴ,Es`?ϯKD321ɴ,, +wjH,Es`?ϯKD324-330wjH,, +K,Es`?ϯKD338-342K,, +,Es`?ϯKD339,, +צ~,Es`?ϯKD352-354צ~,, +NwjH,Es`?ϯKD367-369NwjH,, +ۻ,Es`?ϯKD370-372ۻ,, +F,Es`?ϯKD378-380F,, +ѤjH,Es`?ϯKD382-384ѤjH,, +qjH,Es`?ϯKD396qjH,, +Ф~,Es`?ϯKD777Ф~,, +qu~jH,Es`?ϯKD802qu~jH,, +nBu~,Es`?ϯKD808nBu~,, +@~,Es`?ϯKD833,, +yפ,Es`?ϯKD838yפ,, +÷su~jH,Es`?ϯKD850-870÷su~jH,, +@.Es,Es`?ϯKD873@.Es,, +F۪ojH,Es`?ϯKD877F۪ojH,, +ͼ֭b,Es`?ϯյ3,, +MRb,Es`?ϯﴺs264MRbR,, +ŬĤsĤ@y,Es`?ϰqwǹD1-3ŬĤsĤ@y,, +qwǤsĤ@y,Es`?ϰqwǹD2qwǤsĤ@y,, +網,Es`?ϰi10網,, +n,Es`?ϰi12n,, +@ӻ,Es`?ϰi14@ӻ,, +db,Es`?ϰi1db,, +λ,Es`?ϰi2λ,, +b,Es`?ϰi6b,, +b,Es`?ϰi8b,, +׼,Es`?ϰ1-3׼,, +եɼ,Es`?ϰ1-3եɼ,, +֥ФjH,Es`?ϰ38֥ФjH,, +_ФjH,Es`?ϰ39_ФjH,, +,Es`?ϰ򶩵118-120,, +ط,Es`?ϰ򶩵123-129ط,, +Ѽ,Es`?ϰ򶩵128Ѽ,, +w,Es`?ϰ򶩵143-145w,, +~jH,Es`?ϰ򶩵152-154~jH,, +o,Es`?ϰ򶩵168-170o,, +aͼ,Es`?ϰ򶩵172-176Aaͼ,, +sjH,Es`?ϰ򶩵184-190sjH,, +jw,Es`?ϰ򶩵298-302jw,, +pdjH,Es`?ϰ򶩵316-324pdjH,, +򶩼,Es`?ϰ򶩵363-365򶩼,, +o,Es`?ϰ򶩵381-383o,, +jH,Es`?ϰ򶩵385-391jH,, +sy,Es`?ϰ򶩵92-94sy,, +â,Es`?ϲ`D28â,, +ѮŤ,Es`?ϲ`8ѮŤ,, +ta ĤTy,Es`?ϲ`D9,, +su~jH,Es`?ϳq{1059-1061su~jH,, +{njH,Es`?ϳq{200{njH,, +f,Es`?ϳq{208f,, +a,Es`?ϳq{218a,, +qjH,Es`?ϳq{252-254qjH,, +@BO,Es`?ϳq{256@BO,, +jH,Es`?ϳq{314-316jH,, +EwjH,Es`?ϳq{324-330EwjH,, +ɩ|خx,Es`?ϳq{336ɩ|خx,, +Pש~ Gy,Es`?ϳq{500Pש~ Gy,, +շuO,Es`?ϴ|8շuO,, +طsj,Es`?ϴܦ{11-21طsj,, +ؿj,Es`?ϴܦ{16-22ؿj,, +jH,Es`?ϴܦ{1-9AjH,, +wjH,Es`?ϴܦ{24-30wjH,, +éjH,Es`?ϴܦ{34-42éjH,, +Es,Es`?ϴܦ{37KEs,, +wjH,Es`?ϴܦ{52-54wjH,, +jH,Es`?ϴܦ{56jH,, +a,Es`?ϴܦ{58a,, +a~ӷ~jH,Es`?ϴܦ{65-71a~ӷ~jH,, +s,Es`?ϴܦ{72-74s,, +ܻ,Es`?ϴܦ{8ܻ,, +,Es`?ϴܦ{94,, +aaojH,Es`?ϵo9-11aaojH,, +û,Es`?ϵø2û,, +ê,Es`?ϵø9ê,, +ģjH,Es`?϶2-12ģjH,, +,Es`?϶D15,, +w,Es`?϶D17-25w,, +Q,Es`?϶D1Q,, +,Es`?϶D253-263,, +MפjH,Es`?϶D25BMפjH,, +dּ,Es`?϶D26-36dּ,, +jH,Es`?϶D265-277jH,, +öjH,Es`?϶D277A-277EöjH,, +b,Es`?϶D283b,, +s,Es`?϶D29-39s,, +H,Es`?϶D316-318H,, +,Es`?϶D320-328,, +fؼ,Es`?϶D323fؼ,, +,Es`?϶D329,, +d~,Es`?϶D38d~,, +ΦjH,Es`?϶D41-45ΦjH,, +~,Es`?϶D439-443~,, +ojH,Es`?϶D445-449ojH,, +qɻ,Es`?϶D451-461qɻ,, +ùjH,Es`?϶D501-511,, +F_,Es`?϶D50F_,, +ɴ,Es`?϶D513-521ɴ,, +~,Es`?϶D55-61~,, +jH,Es`?϶D63-67jH,, +QˤjH,Es`?϶˵1-3QˤjH,, +ɱdjH,Es`?϶˵43-45ɱdjH,, +jH,Es`?϶˵44-48jH,, +n,Es`?϶˵4-8n,, +ojH,Es`?϶˵55-57ojH,, +ww,Es`?϶˵9-13ww,, +UƹFs1-17,"Es`?ϸUƹFs1-17s?,ĤC",, +S@,Es`?ϹF,, +_H,Es`?ϹF11A_H,, +Fb,Es`?ϹF11Fb,, +Rb,Es`?ϹF15-17,, +Rs,Es`?ϹF21Rs,, +ִ,Es`?ϹF36ִ,, +зs,Es`?ϹF72зs,, +qb,Es`?ϹF7,, +S@,Es`?ϹF80S@,, +v,Es`?ϹF9v,, +qb ĤGy,Es`?Ϲص12-14qb ĤGy,, +A,Es`?Ϲص1A,, +b,Es`?Ϲص3b,, +U,Es`?Ϲص4U,, +ۻ,Es`?Ϲص6ۻ,, +MARAVILLA,Es`?Ϲص7MARAVILLA,, +wػ,Es`?Ϲص8wػ,, +[sp,Es`?ϺqMѵ20,, +_ejH,Es`?Ϻֵص,, +֩,Es`?Ϻֵص,, +ئwjH,Es`?Ϻֵص103-107ئwjH,, +_ejH_eӳ ,Es`?Ϻֵص115-117_ejH_eӳ (_ejH),, +ؤjH,Es`?Ϻֵص123-127ؤjH,, +Qؼ,Es`?Ϻֵص132-134Qؼ,, +øΤjH,Es`?Ϻֵص133øΤjH,, +jH,Es`?Ϻֵص1-3jH,, +ֹj,Es`?Ϻֵص143-145ֹj,, +yؤjH,Es`?Ϻֵص147-151AyؤjH,, +os,Es`?Ϻֵص14os,, +ؤjH,Es`?Ϻֵص153-155ؤjH,, +ɦ,Es`?Ϻֵص157A-157Dɦ,, +֤jH,Es`?Ϻֵص161-175֤jH,, +sؤjH,Es`?Ϻֵص16-24sؤjH,, +֪@jH,Es`?Ϻֵص17-25֪@jH,, +pjH,Es`?Ϻֵص177A-177CpjH,, +sؤj,Es`?Ϻֵص179-185sؤj,, +ɵػ,Es`?Ϻֵص182-186ɵػ,, +?,Es`?Ϻֵص188?,, +ֶjH,Es`?Ϻֵص191-199ֶjH,, +ֵػ,Es`?Ϻֵص201-205ֵػ,, +֦jH,Es`?Ϻֵص208A-208C֦jH,, +w,Es`?Ϻֵص210-212w,, +T^jH,Es`?Ϻֵص2-2CT^jH,, +¥ӷ~jH,Es`?Ϻֵص27¥ӷ~jH,, +Oͩ~,Es`?Ϻֵص28-30Oͩ~,, +ؤjH,Es`?Ϻֵص32-38ؤjH,, +E֤j,Es`?Ϻֵص45-51E֤j,, +ͼ,Es`?Ϻֵص54-56ͼ,, +`,Es`?Ϻֵص55B`,, +_,Es`?Ϻֵص5-7_,, +EͤjH,Es`?Ϻֵص61-67EͤjH,, +بj,Es`?Ϻֵص69-75بj,, +j,Es`?Ϻֵص77B-77Cj,, +֦wjH,Es`?Ϻֵص88-90֦wjH,, +׼,Es`?Ϻֵص96-100׼,, +ֺajH,Es`?Ϻֺa,, +ʺ֤jH,Es`?Ϻֺa100ʺ֤jH,, +QFjH,Es`?Ϻֺa103-105QFjH,, +ŶפjH,Es`?Ϻֺa1-11ŶפjH,, +j,Es`?Ϻֺa116-118j,, +aQjH,Es`?Ϻֺa138-148aQjH,, +o,Es`?Ϻֺa14o,, +a_jH,Es`?Ϻֺa153-159a_jH,, +è,Es`?Ϻֺa161-163è,, +֦w,Es`?Ϻֺa16A-16D֦w,, +E֤jH,Es`?Ϻֺa170-172E֤jH,, +pqjH,Es`?Ϻֺa17-19pqjH,, +õؤjH,Es`?Ϻֺa171õؤjH,, +,Es`?Ϻֺa174-176,, +ɻ,Es`?Ϻֺa178-182ɻ,, +֩ɤjH,Es`?Ϻֺa18-20֩ɤjH,, +`aj,Es`?Ϻֺa187-189`aj,, +ʼ֤j,Es`?Ϻֺa208-210ʼ֤j,, +֤jH,Es`?Ϻֺa212-214֤jH,, +J?,Es`?Ϻֺa228-232J?,, +saj,Es`?Ϻֺa25-31Asaj,, +ֲ,Es`?Ϻֺa26ֲ,, +ΦjH,Es`?Ϻֺa33-35ΦjH,, +֦~jH,Es`?Ϻֺa42-44֦~jH,, +ha,Es`?Ϻֺa47ha,, +aؤjH,Es`?Ϻֺa49-53aؤjH,, +ֺa,Es`?Ϻֺa4ֺa,, +̮ɤjH,Es`?Ϻֺa512-518̮ɤjH,, +߹J,Es`?Ϻֺa538߹J,, +pBy,Es`?Ϻֺa548pբЮy,, +,Es`?Ϻֺa55-57,, +,Es`?Ϻֺa64-66,, +,Es`?Ϻֺa80-82,, +w,Es`?Ϻֺa88-90w,, +`֤jH,Es`?Ϻֺa92-98`֤jH,, +_jH,Es`?ϺۥJ3_jH,, +s1,Es`?ϼs1,, +,Es`?ĺa188,, +XȤu{()q,Es`?Ͽئ 81XȤu{()q,, +HwȲȺ޲zq,Es`?Ͽئ 83HwȲȺ޲zq,, +wjH,Es`?Ͽئ 85wjH,, +MjH,Es`?Ͽص27A-27FMjH,, +Ra,Es`?Ͽص38Ra,, +䴺,Es`?nd102䴺,, +AjH,Es`?nd120-124AjH,, +z,Es`?nd12-14z,, +صnjH,Es`?nd139-141صnjH,, +FjH(nd),Es`?nd155-167FjH(nd),, +^,Es`?nd166-170^,, +]j,Es`?nd195-201]j,, +nɻ,Es`?nd214-216nɻ,, +jH(nd),Es`?nd240-242jH(nd),, +Bּ,Es`?nd28-36Bּ,, +еo,Es`?nd2еo,, +_jH,Es`?nd38-40_jH,, +ͨӤjH,Es`?nd9-19ͨӤjH,, +֤jH,Es`?nd97-101֤jH,, +[s,Es`?sWD1[s,, +ئwjH,Es`?L163-173ئwjH,, +u~jH,Es`?姽1033u~jH,, +`?jH,Es`?姽104-110`?jH,, +,Es`?姽128-132,, +пj,Es`?姽129-131Aпj,, +TFjH,Es`?姽148-152TFjH,, +ɼ,Es`?姽154-156ɼ,, +ߩ~,Es`?姽161ߩ~,, +۪LjH,Es`?姽193A-193D۪LjH,, +ŸΩ~,Es`?姽198ŸΩ~,, +,Es`?姽207,, +wIjH,Es`?姽211wIjH,, +˹F,Es`?姽214-216˹F,, +m׻,Es`?姽218-220m׻,, +ܦ{jH,Es`?姽219Bܦ{jH.,, +§jH,Es`?姽222-224§jH,, +_ajH_aj,Es`?姽235-249_ajH_aj,, +ŬAy,Es`?姽238ŬߢϮy,, +ŬBy,Es`?姽238ŬߢЮy,, +ɰu~,Es`?姽555ɰu~,, +QwjH,Es`?姽94-98QwjH,, +éu~jH,Es`?ãL121éu~jH,, +su~jH,Es`?ãL93su~jH,, +ҧJys,Es`?_1ҧJys,, +outjH,EsjPϤC_3outjH,, +Qu~jH,EsjPϤC_7Qu~jH,, +KFu~jH,EsjPϤKF1KFu~jH,, +wFu~jH,EsjPϤKF3-5wFu~jH,, +¹FuTӷ~,EsjPϤKF7-9¹FuTӷ~,, +ؤu~jH,EsjPϤT10ؤu~jH,, +a˲ĤGu~jH,EsjPϤT12-14a˲ĤGu~jH,, +ʳӤutjH,EsjPϤT16-20ʳӤutjH,, +ҼwutjHĤ@,EsjPϤT22ҼwutjHĤ@,, +UPu~jH,EsjPϤj14UPu~jH,, +utjH,EsjPϤj16utjH,, +зǤu~jH,EsjPϤj22-24зǤu~jH,, +_u~jH,EsjPϤj23_u~jH,, +ѭijH,EsjPϤj26-28ѭijH,, +u~jH,EsjPϤj31u~jH,, +ΤOu~jH,EsjPϤj33ΤOu~jH,, +s޼s,EsjPϤj34s޼s,, +qou~jH,EsjPϤj35qou~jH,, +ؿu~jH,EsjPϤj36ؿu~jH,, +s_,EsjPϤڵ10s_,, +Qu~j,EsjPϤڵ12Qu~j,, +ߦwu~jH,EsjPϤڵ18ߦwu~jH,, +outjH,EsjPϤڵ20-22AoutjH,, +au~jH,EsjPϤڵ24-26au~jH,, +٤u~jH,EsjPϤڵ27-29٤u~jH,, +QˤutjH,EsjPϤڵ28QˤutjH,, +άu~,EsjPϤڵ2άu~,, +utjH,EsjPϤڵ31-33utjH,, +u~jH,EsjPϤڵ5-7u~jH,, +Rj,EsjPϤR2-24Rj,, +wutjH,EsjPϤX11-13wutjH,, +U,EsjPϤX23U,, +u~jH,EsjPϤX2-4u~jH,, +ŮɤutjH,EsjPϤX25-27ŮɤutjH,, +QButjH,EsjPϤX5QButjH,, +õoLt,EsjPϤX6õoLt,, +Xu~jH,EsjPϤX8Xu~jH,, +ˤu~jH,EsjPϤX9ˤu~jH,, +AEW,EsjPϤӤlDF638AEW1y,, +_ӷ~,EsjPϤӤlDF698_ӷ~,, +WFu~jH,EsjPϤӤlDF708-710WFu~jH,, +u~jH,EsjPϤӤlDF714u~jH,, +ɵo,EsjPϥéwD15ɵo,, +ɴI,EsjPϥéwD20ɴI,, +»,EsjPϥéwD2»,, +˶s,EsjPϦ˶D15˶s,, +ѧb,EsjPϦ˶D51ѧb,, +ѧb,EsjPϦ˶D51ѧb,, +Ѱb,EsjPϦ˶D55Ѱb,, +djb,EsjPϧL23djb,, +üw,EsjPϨFD106-108üw,, +,EsjPϨFD46,, +sP,EsjPϨFD83sP,, +Үpb,EsjPϩsD183Үpb,, +,EsjPϩsD185,, +OwbwY,EsjPϪYص10OwbwY,, +ؼ,EsjPϪڵب1-11ؼ,, +I,EsjPϭly21-29I,, +_jH,EsjPϭly55-57_jH,, +FۤjH,EsjPϭly5-7FۤjH,, +էQjH,EsjPϭ17-29էQjH,, +KjH,EsjPϭ28-46KjH,, +ѭia,EsjPϭ45ѭia,, +QۤjH,EsjPϭ48-52QۤjH,, +,EsjPϭ54,, +w_jH,EsjPϭ64w_jH,, +su,EsjPϭ66-68su,, +sw,EsjPϱRص12sw,, +s,EsjPϱRص20s,, +sؼ,EsjPϱRص28sؼ,, +s,EsjPϱRص42s,, +s,EsjPϱRص4s,, +«H,EsjPϱRֵ1-3«H,, +sZ^s,EsjPϱRֵ33sZ^s,, +pN,EsjPϱRֵ80-94ApN,, +w֤j,EsjPϱRֵ95-97w֤j,, +djv,EsjPϱdj,, +djj,EsjPϱdj27-33djj,, +dӳ,EsjPϱdj28dӳ,, +Hwj,EsjPϱdj35-49Hwj,, +wjj,EsjPϱdj51-65Awjj,, +sZ^jH,EsjPϱmiD,, +Ҽw,EsjPϱmiD121Ҽw,, +u~jH,EsjPϱmiD206-208u~jH,, +źautjH,EsjPϱmiD214-216źautjH,, +nu~jH,EsjPϱmiD218-220nu~jH,, +[,EsjPϱmiD242[,, +R,EsjPϱmiD48-56R,, +lyjH,EsjPϱmiD58-82lyjH,, +mpb,EsjPϱm|23mpb,, +~jH,EsjPϲMWD19~jH,, +űjb,EsjPϴI3,, +Ijb,EsjPϴI8,, +wjb,EsjPϴIj9wjb,, +wojH A & C,EsjPϴI15wojH A & C,, +IR,EsjPϴI21-27IR,, +ҷsjH,EsjPϴI2ҷsjH,, +u~j,EsjPϴֵ100-102u~j,, +sɥNuTӷ~,EsjPϴֵ104sɥNuTӷ~,, +b,EsjPϴֵ118b,, +jH,EsjPϴֵ83-97jH,, +ORb,EsjP϶ص2,, +Ao,EsjPϷOب11Ao,, +çQ,EsjPϷOب1-3çQ,, +wO,EsjPϷOب4-14wO,, +ORb,EsjPϷOsD120ORb,, +ذj,EsjPϷب1-23ذj,, +ųߤjH,EsjPϷب20-22ųߤjH,, +}jH,EsjPϷب24}jH,, +ؼ,EsjPϷب26ؼ,, +U_jH,EsjPϷب28U_jH,, +j,EsjPϷب45-47Aj,, +U~|jH,EsjPϷب51-59U~|jH,, +õojH,EsjPϷب6-10õojH,, +Aw,EsjPϷص40-44Aw,, +sojH,EsjPϷص60-64sojH,, +ŵؤjH,EsjPϷص74-80AŵؤjH,, +{Rs,EsjPϷF8,, +Vqs,EsjPϹ绷9,, +P{b,EsjPϻA˵6,, +A˪,EsjPϻA˵8A˪,, +A,EsjPϻA19-33A,, +BA,EsjPϻA2-4BA,, +,EsjPϻA46-48,, +w,EsjPϻA47-49w,, +O֤jH,EsjPϻZШ1-7O֤jH,, +OjH,EsjPϻZШ2OjH,, +Zڼ,EsjPϻZڨ3-7Zڼ,, +R,EsjPϻZ^1-9R,, +OؤjH,EsjPϻZ^2-8OؤjH,, +_,EsjPϻZ^D117-119_,, +oj,EsjPϻZ^D121-125oj,, +߰,EsjPϻZ^D127-129߰,, +,EsjPϻZ^D163,, +׼,EsjPϻZ^D165׼,, +ʧQa,EsjPϻZ^D33ʧQa,, +n,EsjPϻZ^D35n,, +ּ,EsjPϻZ^D39-41ּ,, +wjH,EsjPϻZ^D43-59wjH,, +IjH,EsjPϻZ^D61IjH,, +pb,EsjPϻZ^D80pb,, +qڪ,EsjPϻZ^D95qڪ,, +׻s,EsjPϻZ^D99׻s,, +Z^,EsjPϻZ^,, +l,EsjPϻZ^40l,, +m,EsjPϻZ^42m,, +A,EsjPϻZ^44A,, +~,EsjPϻZ8~,, +ط׼,EsjPϻȻ10-12Aط׼,, +Ȼ,EsjPϻȻ16-18Ȼ,, +wFjH,EsjPϻȻ17-27wFjH,, +wd,EsjPϻȻ20wd,, +تۼ,EsjPϻȻ24-28تۼ,, +d,EsjPϻȻ2-4d,, +wo,EsjPϻȻ32wo,, +,EsjPϻȻ34-42,, +,EsjPϻȻ35,, +ʹF,EsjPϻȻ37ʹF,, +ڼ,EsjPϻȻ39ڼ,, +õؼ,EsjPϻȻ44-46õؼ,, +hw,EsjPϻȻ45hw,, +n_,EsjPϻȻ47n_,, +U_,EsjPϻȻ48U_,, +oF,EsjPϻȻ49-51oF,, +ּ,EsjPϻȻ52-56ּ,, +ڧQ,EsjPϻȻ53ڧQ,, +֨Ӽ,EsjPϻȻ55֨Ӽ,, +,EsjPϻȻ57-59,, +,EsjPϻwD13-21,, +wּ,EsjPϻwD23-29wּ,, +f,EsjPϻwD31-33f,, +^,EsjPϻwD37-39^,, +Ao,EsjPϻwD5-11Ao,, +w,EsjPϻwD71-73w,, +Xw,EsjPϻwD81Xw,, +ð,EsjPϻwD83-89ð,, +§bH,EsjPϻ§D8§bH,, +Ĥj,EsjPϻ2-16Ĥj,, +פjH,EsjPϻ26-32AפjH,, +,EsjPϻ39,, +õؼ,EsjPϻ43-53õؼ,, +Bwj,EsjPϻ55-57Bwj,, +պ֭bAy,EsjPϿo˵17պ֭bAy,, +˶_?,EsjPϿo˵8˶_?,, +UqjH,EsjPAa26UqjH,, +jH,EsjPAa6-24AjH,, +mi,EsjPs|60mi,, +b,EsjPsD110b,, +s,EsjPsD120s,, +xa,EsjPsϵ1-3xa,, +Pe~,EsjPsϵ3Pe~,, +sϭb,EsjPsϵ8sϭb,, +sϭbӳ,EsjPsϵ8sϭbӳ,, +δIjH,EsjPS116-118δIjH,, +ü֭,EsjPS18-30Aü֭,, +Port 33,EsjPS33Port 33,, +ҼwutjHĤG,EsjPS39-41ҼwutjHĤG,, +FwjH,EsjPS60-70FwjH,, +FPjH,EsjPS72-82FPjH,, +d,EsjPS86d,, +S~,EsjPS98S~,, +wdjH,EsjP35wdjH,, +A,EsjP37-43AA,, +jH,EsjP4-6jH,, +Iw,EsjP50-52Iw,, +񲻼,EsjP5-33񲻼,, +_ojH,EsjP54-66_ojH,, +æw,EsjP57-65æw,, +p,EsjP68p,, +ع|,EsjP8-14ع|,, +_jH,EsjP90-100_jH,, +pXj,EsjPpXD174-180pXj,, +jH,EsjPpXD182-188jH,, +ãsbã?,EsjPײ,, +,EsjPײ33,, +ãRbã,EsjPײ36-38ãRbã,, +ãRbã,EsjPײ36-38ãRbã,, +m,EsjPײ51,, +u,EsjPײ63u,, +Iwu~jH,EsjPߵ17Iwu~jH,, +ߤu~jH,EsjPߵ19ߤu~jH,, +Pwu~jH,EsjPߵ2-4Pwu~jH,, +֩Mu~jH,EsjPߵ5֩Mu~jH,, +~פu~jH,EsjPߵ7~פu~jH,, +\,EsjP,, +ػ,EsjP12-14ػ,, +[,EsjP26-28[,, +ؼy,EsjP32-34Aؼy,, +ãabãab,EsjPãF1ãabãab,, +ŮpO,EsjPãF8ŮpO,, +Ь,Es[,, +Eu~jH,Es[KTIL151EϹD62Eu~jH,, +FsCs,Es[KTIL234EϹD83FsCs,, +ѬP,Es[KTIL238ѬP,, +ʥ,Es[KTIL286EϹD52ʥ,, +suӤ,Es[KTIL330UD2suӤ,, +@ȤӤ,Es[KTIL361@~41@ȤӤ,, +_~jH,Es[KTIL49~23_~jH,, +vu~jH,Es[KTIL554j~29vu~jH,, +Eu~jH,Es[KTIL555j~27Eu~jH,, +H~jH,Es[KTIL567j~1H~jH,, +qBu~jH,Es[KTIL66q~65-67qBu~jH,, +s򤤤,Es[KTIL692s򤤤,, +q~utjH,Es[KTIL70q~59q~utjH,, +p,Es[KTIL739j~2p,, +QĤAy,Es[KTIL744~223QĤߢϮy,, +Tפ,Es[KTIL753EϹD22Tפ,, +ʤ,Es[KTIL89ʤ,, +Bu~jH,Es[KTIL91~15-17Bu~jH,, +~u~jH,Es[KTIL92~19-21~u~jH,, +Ou~jH,Es[NKIL5872`ɹD33Ou~jH,, +EsWڮiT,Es[NKIL6032iT|1EsWڮiT,, +˼s,Es[NKIL6215˼s,, +ڥ,Es[NKIL6310ӹD33ڥ,, +UWѤU,Es[YTIL21RH8UWѤU,, +ͧQu~,Es[YTIL32GD610ͧQu~,, +Ž~,Es[YTIL388Ž~,, +س͵oijH,Es[Ϥj~11س͵oijH,, +wutjH,Es[Ϥj~19wutjH,, +yu~jH,Es[Ϥj~23yu~jH,, +ouӤjH,Es[Ϥj~31ouӤjH,, +ģQĤu~jH,Es[Ϥj~34ģQĤu~jH,, +֩Mu~jH,Es[Ϥj~35֩Mu~jH,, +au~jH,Es[Ϥj~3au~jH,, +Fqj?,Es[Ϥj~4Fqj?,, +TEsWfB,Es[Ϥj~59TEsWfB,, +nu~jH,Es[Ϥj~9nu~jH,, +bjH,Es[Ϥѭ2bjH,, +פjH,Es[Ϥѭ7-9AפjH,, +hߤjHI,Es[Ϥص,, +jH,Es[Ϥص16jH,, +~jH,Es[Ϥص18~jH,, +[,Es[Ϥص20[,, +R,Es[Ϥص24R,, +ؤjH,Es[Ϥص25-39ؤjH,, +ؤjHĤGy,Es[Ϥص25-39ؤjH,, +jHy,Es[Ϥص26jHy,, +d,Es[Ϥص30d,, +ѬP,Es[Ϥص32ѬP,, +ѬPCy,Es[Ϥص32ѬPCy,, +UMjH,Es[Ϥص38UMjH,, +U֤jH,Es[Ϥص40U֤jH,, +حbjH,Es[Ϥص42حbjH,, +ù,Es[Ϥص43ù,, +w֪jH,Es[Ϥص47w֪jH,, +¤jH,Es[Ϥص48¤jH,, +״,Es[Ϥص49״,, +,Es[Ϥص50,, +,Es[Ϥص52,, +n,Es[Ϥص71n,, +[E?,Es[Ϥص8[E?,, +,Es[ϤYD160,, +M,Es[ϤYD162-172M,, +w,Es[ϤYD174-176w,, +ũM,Es[ϤYD17,, +Υ,Es[ϤYD300-302Υ,, +xߦjH,Es[ϤYD305-325AxߦjH,, +?LjH,Es[ϤYD327-333?LjH,, +FjH,Es[ϤYD335-351FjH,, +,Es[ϤYD33,, +o_Hy,Es[ϤYD3o_֮y,, +QjH,Es[ϤYD55QjH,, +^j,Es[ϤYD77^j,, +^ju~Ĥ@y^ju~,Es[ϤYD7Ĥ@y^ju~,, +ͼwjH,Es[ϥ\ֹD21ͼwjH,, +Ѷ,Es[ϥ\ֹD40-42Ѷ,, +\֤jHAy,Es[ϥ\ֹD44\֤jHϮy,, +Rb,Es[ϥ\ֹD53Rb,, +L,Es[ϥ\ֹD75L,, +s,Es[ϥ\ֹD77s,, +R,Es[ϥ\ֹD81R,, +IR鵵,Es[ϥ\ֹD9IR鵵,, +اQu~jH,Es[ϥ|s11اQu~jH,, +jqfܤu~jH,Es[ϥ|s14jqfܤu~jH,, +u~jH,Es[ϥ|s22u~jH,, +dΤjH,Es[ϥ|s24-26dΤjH,, +}u~jH,Es[ϥ|s28}u~jH,, +ؽu~jH,Es[ϥ|s4ؽu~jH,, +@Bf,Es[ϥ|s8@Bf,, +LANDMARK EASTͨEsj,Es[ϥ100LANDMARK EASTͨEsj,, +LANDMARK EASTwĤj,Es[ϥ100LANDMARK EASTwĤj,, +nqΤjH,Es[ϥ108nqΤjH,, +Fu~jH,Es[ϥ114Fu~jH,, +fq,Es[ϥ115fq,, +U~u~jH,Es[ϥ116-118U~u~jH,, +T,Es[ϥ117T,, +~Bu~jH,Es[ϥ119-121~Bu~jH,, +whu~,Es[ϥ4-6whu~,, +Y,Es[ϥ68Y,, +bu~jH,Es[ϥ71bu~jH,, +EϤ,Es[ϥ94-96EϤ,, +utjH,Es[ϥ99utjH,, +Bq,Es[ϥ6Bq,, +qT@Ns,Es[Ϧ~10qT@Ns,, +ئuӤ,Es[Ϧ~11-13ئuӤ,, +sɥͤu~jH,Es[Ϧ~18-20sɥͤu~jH,, +ɥͤu~jH,Es[Ϧ~20ɥͤu~jH,, +@,Es[Ϧ~27@,, +شIuT,Es[Ϧ~30شIuT,, +lIs,Es[Ϧ~6lIs,, +,Es[ϦyD_1-9,, +ʤ,Es[ϧD1ʤ,, +׶u~,Es[ϧD4׶u~,, +Ou~,Es[ϧD7Ou~,, +@,Es[ϧD8@,, +EOu~Ay,Es[ϧaD6EOu~ߢϮy,, +aou~jH,Es[ϧD12aou~jH,, +Ĥ@Τ,Es[ϧD14Ĥ@Τ,, +XOu~,Es[ϧD3-5XOu~,, +æwfܤjH,Es[ϧ1æwfܤjH,, +sdmjH,Es[ϧ3sdmjH,, +u~jH,Es[ϧ5u~jH,, +ou~,Es[ϧ}D13ou~,, +EsWu~,Es[ϧ}D15EsWu~,, +w֤jH,Es[ϧ}D16w֤jH,, +ou~jH,Es[ϧ}D17ou~jH,, +Ou~jH,Es[ϧ}D19Ou~jH,, +hӷ~,Es[ϧ}D8hӷ~,, +_,Es[ϧӹD11_,, +pjH,Es[ϧӹD15pjH,, +djq~jH,Es[ϧӹD17djq~jH,, +س]Ȧ椤,Es[ϧӹD18س]Ȧ椤,, +ou~jH,Es[ϧӹD25ou~jH,, +@Es,Es[ϧ1@Es,, +Rb,Es[ϨqZW21Rb,, +Ijӫy,Es[ϨM121-141Ijӫy,, +Ijӫey,Es[ϨM127Ijӫey,, +MjH,Es[ϨM143-167MjH,, +خp,Es[ϨM301خp,, +ڤjH,Es[ϨM70-76ڤjH,, +ؼwj,Es[ϨM93-115ؼwj,, +jH,Es[ϩww100-102jH,, +é,Es[ϩww114é,, +IwjH,Es[ϩww3-19IwjH,, +߿j,Es[ϩww37-39߿j,, +߿j,Es[ϩww41-43߿j,, +wj,Es[ϩww45-51wj,, +ww,Es[ϩww53-61ww,, +wjH,Es[ϩww69-73wjH,, +Iw,Es[ϩww91-93Iw,, +ߤj,Es[ϩww94-98ߤj,, +TߤjH,Es[ϩww95-103TߤjH,, +wI,Es[ϩwI105-119wI,, +ֵjH,Es[ϩwI123ֵjH,, +aQ,Es[ϩwI26-30aQ,, +CߤjH,Es[ϩwI4-24CߤjH,, +صo,Es[ϩwI45-47صo,, +w,Es[ϩwI49-51w,, +wӼ,Es[ϩwI53-63wӼ,, +I,Es[ϩwI5-7I,, +@wIjH,Es[ϩwI71-79@wIjH,, +IΤjH,Es[ϩwI83-103IΤjH,, +hߤjH,Es[ϩwI9-17hߤjH,, +pjH,Es[ϩwI94-110pjH,, +ò,Es[ϩw~12-16ò,, +w~jH,Es[ϩw~30-42w~jH,, +ʴI,Es[ϩw~3ʴI,, +w~,Es[ϩw~4-10w~,, +wwjH,Es[ϩw~50wwjH,, +PjH,Es[ϩyw2-4EPjH,, +pQj,Es[ϩyw6L-6QpQj,, +QjH,Es[ϩyw9-11QjH,, +j~´ytq,Es[ϪF1j~´ytq,, +Ocean One,Es[ϪoaqĤGQlqRH6Ocean One,, +nvj,Es[Ϫص31-41nvj,, +ئwj,Es[Ϫص43-53ئwj,, +jөjH,Es[ϫw27-37jөjH,, +w,Es[ϫw39-49w,, +[|jH,Es[ϫw51-59,, +ڦw,Es[ڦw19-23ڦw,, +,Es[ϮعD10,, +wb,Es[ϮعD20,, +حb,Es[ϮعD22حb,, +ֶb,Es[ϮعD50,, +Uפ,Es[ϮعD133Uפ,, +ꥻjH,Es[ϮعD135-137ꥻjH,, +Ѭޤ,Es[ϮعD143Ѭޤ,, +sͦ椤,Es[ϮعD151-153sͦ椤,, +jjf,Es[ϮعD155jjf,, +Esѯt~q,Es[ϮعD161Esѯt~q,, +ӷsҨjH,Es[ϮعD171ӷsҨjH,, +ӷsjH,Es[ϮعD173ӷsjH,, +ڤu~jH,Es[ϮعD175ڤu~jH,, +Τu~,Es[ϮعD177Τu~,, +One Harbour Square,Es[ϮعD181One Harbour Square,, +One Bay East(Fy Citi Tower),Es[ϮعD83One Bay East(Fy Citi Tower),, +QjH,Es[ϮعD83QjH,, +GjH,Es[ϯGD,, +H,Es[ϯGD157-159H,, +s,Es[ϯGD161-163s,, +ɼ,Es[ϯGD177-179ɼ,, +ɼ,Es[ϯGD181-183ɼ,, +],Es[ϯGD189],, +asu~jH,Es[ϯGDasu~jH,, +Q?ӷ~jH,Es[ϯ2Q?ӷ~jH,, +ضu~jH,Es[ϯ4ضu~jH,, +_jH,Es[ϰ|1_jH,, +RΤjH,Es[ϰ|3RΤjH,, +_?jH,Es[ϰ|5_?jH,, +Tb,Es[ϰWD23Tb,, +_u~jH,Es[ϰD13-15_u~jH,, +U~u~jH,Es[ϰD15U~u~jH,, +ou~,Es[ϰD17ou~,, +u~jH,Es[ϰD7u~jH,, +u~jH,Es[ϰ~103u~jH,, +iפjH,Es[ϰ~105iפjH,, +s,Es[ϰ~107-109s,, +fBjH,Es[ϰ~111fBjH,, +pu~jH,Es[ϰ~116pu~jH,, +PeXΤjH,Es[ϰ~118PeXΤjH,, +[_vAu~,Es[ϰ~120[_vAu~,, +ضT,Es[ϰ~122-124ضT,, +VputjH,Es[ϰ~126VputjH,, +wu~jH,Es[ϰ~134wu~jH,, +S椤,Es[ϰ~135S椤,, +õou~jH,Es[ϰ~136õou~jH,, +xȤ,Es[ϰ~137xȤ,, +ou~jH,Es[ϰ~139-141ou~jH,, +̮ɤu~jH,Es[ϰ~140̮ɤu~jH,, +VutjH,Es[ϰ~145VutjH,, +إͤu~jH,Es[ϰ~147إͤu~jH,, +miu~jH,Es[ϰ~149miu~jH,, +Ѷu~jH,Es[ϰ~151Ѷu~jH,, +~,Es[ϰ~153~,, +wHu~jH,Es[ϰ~154wHu~jH,, +P,Es[ϰ~156P,, +du~jH,Es[ϰ~160du~jH,, +wӼs,Es[ϰ~161wӼs,, +رdu~jH,Es[ϰ~162رdu~jH,, +ɥN,Es[ϰ~164ɥN,, +u~jH,Es[ϰ~168u~jH,, +u~jH,Es[ϰ~169u~jH,, +׷~u~jH,Es[ϰ~170׷~u~jH,, +~u~jH,Es[ϰ~171~u~jH,, +wu~jH,Es[ϰ~172wu~jH,, +wu~jH,Es[ϰ~179wu~jH,, +չFӷ~jH,Es[ϰ~181չFӷ~jH,, +[XYs,Es[ϰ~182[XYs,, +ͤu~jH,Es[ϰ~185-187ͤu~jH,, +_u~jH,Es[ϰ~189_u~jH,, +PoKjH,Es[ϰ~203PoKjH,, +Zu~jH,Es[ϰ~205Zu~jH,, +IXutjH,Es[ϰ~209-211IXutjH,, +إͤjH,Es[ϰ~213إͤjH,, +QĤBy,Es[ϰ~223QĤߢЮy,, +w֪,Es[ϰ~33w֪,, +í^u~jH,Es[ϰ~95í^u~jH,, +au~jH,Es[ϰ~97au~jH,, +su~jH,Es[ϰ~99su~jH,, +ҥФjH,Es[ϱҥйD,, +dЭb,Es[ϱҥйD,, +j涰ΤjH,Es[ϱҲD20j涰ΤjH,, +}FjH,Es[ϱҲD22}FjH,, +HMuӤ,Es[ϱҲD9HMuӤ,, +Үb,Es[ϱҷ~D28Үb,, +Esf,Es[ϱҿD1-3Esf,, +ӥvT,Es[ϱҿD2ӥvT,, +wjH,Es[ϱR15-31wjH,, +׼,Es[ϱR33-39A׼,, +wjH,Es[ϱR7-13wjH,, +nؤj,Es[ϱR91-95nؤj,, +ou~jH,Es[ϱRH2ou~jH,, +sjH,Es[ϱ`D11sjH,, +翳,Es[ϱ`D13翳,, +ֱdu~jH,Es[ϱ`D19ֱdu~jH,, +yuӤjH,Es[ϱ`D20yuӤjH,, +~s,Es[ϱ`D9~s,, +ַN,Es[ϱdQD11ַN,, +ndjH,Es[ϱdQD23ndjH,, +dQb,Es[ϱdQD24dQb,, +,Es[ϱdQD25,, +aѻ,Es[ϱdD11aѻ,, +dR,Es[ϱdD147dR,, +dܻ,Es[ϱdD149-151dܻ,, +ΥjH,Es[ϱdD15-17ΥjH,, +wjH,Es[ϱdD23wjH,, +طH,Es[ϱdD25-41طH,, +w,Es[ϱdD40-44Aw,, +yw,Es[ϱdD45yw,, +d(ĤG),Es[ϱdD46-54d(ĤG),, +d,Es[ϱdD55d,, +qQjH,Es[ϱdD57-69qQjH,, +Iڼ,Es[ϱdD70Iڼ,, +E,Es[ϱdD71-77E,, +dΤj,Es[ϱdD74-76dΤj,, +jH,Es[ϱdD7-9jH,, +صoj,Es[ϱdD91-103صoj,, +Eoj,Es[ϳq21-33Eoj,, +֩,Es[ϳq35-39֩,, +E,Es[ϳq40-46E,, +jH,Es[ϳq41-43jH,, +djHey,Es[ϳq48-52djHey,, +qj,Es[ϳq74-88qj,, +j,Es[ϳq7j,, +dحb,Es[ϳswD2dحb,, +UQs,Es[ϳз~15UQs,, +дI,Es[ϳз~25дI,, +Ȥu~jH,Es[ϳз~2Ȥu~jH,, +^ȤutjH,Es[ϳз~34^ȤutjH,, +ذ򤤤,Es[ϳз~36ذ򤤤,, +ط~,Es[ϳз~40ط~,, +dmjH,Es[϶}D,, +Q,Es[϶}D45Q,, +ͷu~jH,Es[϶}D47ͷu~jH,, +§Qs,Es[϶}D48§Qs,, +жTs,Es[϶}D49жTs,, +Q_ɤ,Es[϶}D50Q_ɤ,, +קQ,Es[϶}D54קQ,, +}pu~,Es[϶}D55}pu~,, +,Es[϶}D61,, +,Es[϶}D64,, +[s,Es[϶}D68[s,, +ljH,Es[϶}D71ljH,, +~ou~jH@,Es[϶}D77~ou~jH@,, +wQjH,Es[϶~19-25wQjH,, +~j,Es[϶~26-34~j,, +nMj,Es[϶~27-35nMj,, +P,Es[϶~36-48P,, +ֿ,"Es[϶~41-41A,43-43Aֿ",, +nj,Es[϶~49-61nj,, +خ,Es[϶~89-113خ,, +ob,Es[϶o,, +?,Es[϶״D8?,, +إͰӷ~,Es[Ϸq~49إͰӷ~,, +ӧʼs,Es[Ϸq~55ӧʼs,, +QjH,Es[Ϸq~61-63QjH,, +öjH,Es[ϷM20öjH,, +PjH,Es[ϷM23-33PjH,, +nwj,Es[ϷM28-48nwj,, +ģ,Es[ϷM41-47ģ,, +nj,Es[ϷM50-68nj,, +ý,Es[ϷM59-69ý,, +wj,Es[ϷM70-86wj,, +,Es[Ϸ24-50,, +ΥjH,Es[ϸΥ{14-24ΥjH,, +o,Es[Ϲźa,, +j,Es[Ϲżֵ17-33j,, +~j,Es[Ϲżֵ2-26~j,, +ɩjH,Es[Ϲżֵ3-15ɩjH,, +Us,Es[Ϻa~2Us,, +ؤu~jH,Es[Ϻa~6ؤu~jH,, +db,Es[ϺѶD133db,, +d?b,Es[ϺѶD139,, +db,Es[ϺѶD189db,, +dխb,Es[ϺѶD225dխb,, +֩,Es[ϻ26-38֩,, +פjH,Es[ϻ2-8פjH,, +djH,Es[ϻ50-52djH,, +dhb,Es[ϼwеdhb,, +jH,Es[Ͼ26-38jH,, +ؤjH,Es[Ͼ42ؤjH,, +Iػ,Es[Ͼ44Iػ,, +î,Es[Ͽ~12î,, +ÿu~jH,Es[Ͽ~14ÿu~jH,, +,Es[Ͽ~15-17Ay,, +dm,Es[Ͽ~1dmjHdm,, +~,Es[Ͽ~31~,, +THE WAVE,Es[Ͽ~4THE WAVE,, +ps,Es[y~11ps,, +ѽu~jH,Es[y~46ѽu~jH,, +AضΤ,Es[y~50AضΤ,, +PQu~jH,Es[y~9PQu~jH,, +üw,Es[cص18-22üw,, +ŵؼ,Es[cص24-26ŵؼ,, +aؼ,Es[cص28-34aؼ,, +,Es[cص4,, +pwj,Es[pw,, +,Es[pw 1-7,, +swj,Es[pw17-23Aswj,, +ؼ,Es[pw33-35ؼ,, +üݤj,Es[pw9-9Büݤj,, +ys,Es[{ֵ2ys,, +nװӷ~,Es[{ֵ19nװӷ~,, +ӷ~s,Es[{ֵ8ӷ~s,, +POu~,Es[{19POu~,, +Ivu~,Es[{20-28Ivu~,, +ù,Es[{32ù,, +IQu~jH,Es[@~6IQu~jH,, +@Tj,Es[@~8@Tj,, +ؼwפu~j,Es[@~39ؼwפu~j,, +ŬޤjH,Es[@~44ŬޤjH,, +ζT,Es[@~49ζT,, +nFjH,Es[@~51nFjH,, +ɤ,Es[@~52-56ɤ,, +@Bu~jH,Es[@~60@Bu~jH,, +ʶT,Es[@~62ʶT,, +nqu~,Es[@~64nqu~,, +Lu~jH,Es[EϹD10Lu~jH,, +֤u~jH,Es[EϹD12֤u~jH,, +Ӧu~jH,Es[EϹD16Ӧu~jH,, +oQu~jH,Es[EϹD17oQu~jH,, +In,Es[EϹD19In,, +T줤,Es[EϹD21T줤,, +Qn,Es[EϹD23Qn,, +u~jH,Es[EϹD25u~jH,, +µn,Es[EϹD26µn,, +wHu~jH,Es[EϹD28AwHu~jH,, +ET,Es[EϹD31ET,, +aQu~jH,Es[EϹD32aQu~jH,, +jH,Es[EϹD33jH,, +Eu~jH,Es[EϹD37-39Eu~jH,, +~u~jH,Es[EϹD38~u~jH,, +שjH,Es[EϹD40שjH,, +EuT,Es[EϹD41EuT,, +_,Es[EϹD42_,, +@uӤ,Es[EϹD44-46@uӤ,, +u~jH,Es[EϹD45u~jH,, +E,Es[EϹD47E,, +sajH,Es[EϹD48sajH,, +~`ӦjH,Es[EϹD4~`ӦjH,, +_ajH,Es[EϹD50_ajH,, +Oإ~,Es[EϹD51Oإ~,, +©,Es[EϹD53©,, +jH,Es[EϹD54jH,, +ڤuӤjH,Es[EϹD56ڤuӤjH,, +nvs,Es[EϹD57nvs,, +PjH,Es[EϹD59PjH,, +E֤utjH,Es[EϹD60E֤utjH,, +פu~jH,Es[EϹD61פu~jH,, +EButjH,Es[EϹD63-65EButjH,, +sPjH,Es[EϹD64sPjH,, +֩~u~jH,Es[EϹD6-8֩~u~jH,, +Qwu~jH,Es[EϹD70Qwu~jH,, +wvu~jH,Es[EϹD71wvu~jH,, +Ӥ,Es[EϹD72Ӥ,, +KOHO,Es[EϹD73-75KOHO,, +jH,Es[EϹD74jH,, +pBu~jH,Es[EϹD76pBu~jH,, +ӤjH,Es[EϹD77ӤjH,, +ŤhȬwu~jH,Es[EϹD79ŤhȬwu~jH,, +CONTEMPO PLACE,Es[EϹD81CONTEMPO PLACE,, +sǴCΤ,Es[EϹD82sǴCΤ,, +ju~jH,Es[EϹD86ju~jH,, +Vqu~jH,Es[EϹD87Vqu~jH,, +p,Es[EϹD88p,, +UwbUY,Es[UD,, +oAb,Es[UD56,, +R䫰,Es[RF10R䫰,, +_\b_,Es[_\2_\b_,, +_\b_,Es[_\3_\b_,, +_\b_,Es[_\5_\b_,, +_\b_,Es[_\9_\b_,, +xu~,Es[[D,, +YajH,Es[[D241YajH,, +í^,Es[[D257-269í^,, +w,Es[[D271-275w,, +׼,Es[[D301-309׼,, +zQΤ,Es[[D320-322zQΤ,, +zu~jH,Es[[D324zu~jH,, +خΤ,Es[[D326خΤ,, +LutjH,Es[[D328LutjH,, +¤OfBjH,Es[[D330¤OfBjH,, +ӳjH,Es[[D332ӳjH,, +KT336,Es[[D334-336KT336,, +[ۥѭܤjH,Es[[D338[ۥѭܤjH,, +uu~jH,Es[[D342-344uu~jH,, +h¤u~jH,Es[[D350h¤u~jH,, +ŰjH,Es[[D398-402ŰjH,, +j,Es[[D401-405j,, +ɹBu~jH,Es[[D404ɹBu~jH,, +εؤjH,Es[[D407-431εؤjH,, +[I,Es[[D410[I,, +@ȤӤ,Es[[D414,, +sɦ^ ,^ϳ,, +R,qIL1381aD10-18R,, +bs,qIL1381ҹD21-23bs,, +ARa,qIL1892~{3ARa,, +N~,qIL220ӦZjD38N~,, +_jH,qIL369116-20_jH,, +t?,qIL4629輯D9t?,, +ŽjH,qIL5544輯D23ŽjH,, +I,qIL5983Nu66-68I,, +lz,qIL689wD11lz,, +Kְӷ~,qIL7395D53-55Kְӷ~,, +Hw,qIL8517zչD168-200Hw,, +?,qIL8873[fD33?,, +ƵW`,qIL8982hQD86ƵW`,, +׼ֻ,qIL94D99׼ֻ,, +jH,qIL94nڨl41-49jH,, +MANHATTAN AVENUE,qIL99ӦZjD255MANHATTAN AVENUE,, +եKO,qML205ӦZjD419KեKO,, +N~,qML239E26N~,, +ͨĤ,qML278zչD1ͨĤ,, +ծp@,qML58M1ծp@,, +LjH,qϤEp{6-10LjH,, +MARTIN HSE,qϤWD1MARTIN HSE,, +J|,qϤUȨD2J|,, +QjH,qϤhQ16QjH,, +nQjH,qϤhQ20nQjH,, +n_jH,qϤhQ22n_jH,, +ФjH,qϤhQ24-26ФjH,, +ݤjH,qϤhQ34-38ݤjH,, +UƧQjH,qϤhQ42-44UƧQjH,, +Hۼs,qϤhQ50Hۼs,, +],qϤhQ60],, +μwӷ~jH,qϤhQ66-72μwӷ~jH,, +jH,qϤhQ74-78jH,, +UQפ,qϤhQ8-12UQפ,, +sû,qϤhy10-12sû,, +STAUNTON BUILDING,qϤhy14-18STAUNTON BUILDING,, +H,qϤhy33-35H,, +Ma,qϤhy3Ma,, +o,qϤhy44-46o,, +ةɼ,qϤhy51-57ةɼ,, +,qϤhy52-56,, +űm,qϤhy5űm,, +,qϤhy66,, +|~,qϤhy72|~,, +A,qϤhy7A,, +J~,qϤhy80J~,, +sojH,qϤhD12S-12TsojH,, +,qϤhD12,, +ؽjH,qϤhD26-34ؽjH,, +,qϤhD41A-43,, +ɬ,qϤhD83ɬ,, +ujH,qϤhD8ujH,, +sjH,qϤh1-15sjH,, +zػ,qϤh12Rzػ,, +ؤjH,qϤh36-42ؤjH,, +ps,qϤh47ps,, +pos,qϤh49pos,, +h,qϤh50h,, +Ž,qϤh77Ž,, +ARb,qϤh81ARb,, +w֤j,qϤjwO1-4w֤j,, +jwO8,qϤjwO8,, +廨,qϤs15-17廨,, +ӥͤjH,qϤs1AӥͤjH,, +ɪ1y,qϤs1Bɪ1y,, +sjH,qϤs23-25sjH,, +QjH,qϤs29-31QjH,, +wjH,qϤs2wjH,, +հ,qϤs34հ,, +_,qϤs35-37_,, +֥x,qϤs3-5֥x,, +,qϤs39-43,, +îj,qϤs7-9îj,, +ss,qϤsD118ss,, +FĪ,qϤsD74-76FĪ,, +F,qϤsD75F,, +Q,qϤsD81-95,, +[Ab,qϤsD86-88[Ab,, +,qϤsD101,, +δ,qϤsD38δ,, +I,qϤsD39I,, +njH,qϤsD48-52njH,, +AwjH,qϤsD54-66AwjH,, +BjH,qϤsD55-59BjH,, +Isb,qϤsD61-69Isb,, +s,qϤsD72,, +sD,qϤsD79-85sD,, +ojH,qϤsD7-9ojH,, +ּy,qϤsD87ּy,, +Aɻ,qϤvsQ2Aɻ,, +Lj,qϤvsQ3-4Lj,, +K^,qϤvsQ5-6K^,, +֤jH,qϤvsQ7֤jH,, +x,qϤzwD,, +db,qϤzwD,, +ػA,qϤzwD,, +x,qϤzwD11x,, +pjH,qϤzwD12pjH,, +jHĤ@y,qϤzwD15jH,, +gw,qϤzwD20gw,, +zղĤ@y,qϤzwD22zղĤ@y,, +R,qϤzwD26-28R,, +d¶,qϤzwD29d¶,, +a,qϤzwD30a,, +q,qϤzwD31q,, +Ӽws,qϤzwD33Ӽws,, +zbĤ@y,qϤzwD36zbĤ@y,, +THE ICON,qϤzwD38THE ICON,, +Ѷ,qϤzwD39Ѷ,, +ѻ,qϤzwD41Cѻ,, +p,qϤzwD41p,, +?,qϤzwD42?,, +,qϤzwD45,, +Ųi,qϤzwD47Ųi,, +خx,qϤzwD49خx,, +~׶Gy,qϤzwD51~׶Gy,, +@,qϤzwD52@,, +U~jH,qϤzwD54A-54DU~jH,, +橬,qϤzwD55橬,, +2,qϤzwD56颱,, +I,qϤzwD58A-58BI,, +һ,qϤzwD62Gһ,, +ŴIO,qϤzwD62ŴIO,, +yw,qϤzwD64Ayw,, +,qϤzwD66,, +جP,qϤzwD68جP,, +P,qϤzwD70P,, +R,qϤzwD8,, +,qϤzwD9,, +ݮӷ~jH,qϤzչD128-129ݮӷ~jH,, +۫HjH,qϤzչD133۫HjH,, +]ȤjH,qϤzչD143]ȤjH,, +hjH,qϤzչD145hjH,, +fjH,qϤzչD148fjH,, +jjH,qϤzչD15-18jjH,, +۰ӧ,qϤzչD152-155۰ӧ,, +_jH,qϤzչD156-157_jH,, +}ӷ~jH,qϤzչD158}ӷ~jH,, +۰ӧjH,qϤzչD168-200۰ӧjH,, +jH,qϤzչD19-20jH,, +ذӷ|ҤjH,qϤzչD21-22ذӷ|ҤjH,, +LjH,qϤzչD23LjH,, +`ӷ|jH,qϤzչD24-25`ӷ|jH,, +hjH,qϤzչD30-32hjH,, +ȬwjH,qϤzչD33ȬwjH,, +jH,qϤzչD34-37jH,, +س]ȦjH,qϤzչD3س]ȦjH,, +ì,qϤzչD60ì,, +ֿjH,qϤzչD61ֿjH,, +ӷ~jH,qϤzչD62-63ӷ~jH,, +OΤjH,qϤzչD73OΤjH,, +е׶ΤjH,qϤzչD77е׶ΤjH,, +ȶΤjH,qϤzչD78-83ȶΤjH,, +BjH,qϤzչD8BjH,, +njH,qϤzչDnjH,, +§QjH,qϤzչD104-106§QjH,, +TQF,qϤzչD121-122TQF,, +ߥjH,qϤzչD123-124ߥjH,, +wjH,qϤzչD125-126wjH,, +_פjH,qϤzչD127-128_פjH,, +íۤuӷ~jH,qϤzչD131-132íۤuӷ~jH,, +Qj,qϤzչD133-134Qj,, +AKu~jH,qϤzչD135AKu~jH,, +jH,qϤzչD139-140jH,, +O?,qϤzչD141-143O?,, +ӷ~,qϤzչD144-151ӷ~,, +֪,qϤzչD153-157֪,, +Id,qϤzչD158Id,, +jH,qϤzչD162-164AjH,, +,qϤzչD165-166,, +ײjH,qϤzչD168ײjH,, +ؤjH,qϤzչD18-19ؤjH,, +?䤤,qϤzչD181?䤤,, +^jH,qϤzչD20-20A^jH,, +ӷ~jH,qϤzչD21-24ӷ~jH,, +dպjH,qϤzչD35-36dպjH,, +FW~,qϤzչD38FW~,, +Qӷ~jH,qϤzչD3Qӷ~jH,, +FjH,qϤzչD40-41FjH,, +|F,qϤzչD55|F,, +ɥNӷ~jH,qϤzչD62-63ɥNӷ~jH,, +ȫHΥd,qϤzչD64-69ȫHΥd,, +ӷ~jH,qϤzչD70-72ӷ~jH,, +PjH,qϤzչD74-75PjH,, +̦jH,qϤzչD77-78̦jH,, +wפjH,qϤzչD79-81wפjH,, +ŦwjH,qϤzչD8-14ŦwjH,, +jH,qϤzչD82-87jH,, +f]jH,qϤzչD88f]jH,, +swjH,qϤzչD92-93swjH,, +Q,qϤzչD96Q,, +鴺,qϤӤlx12-14鴺,, +_,qϤӤlO6_,, +Ӥl,qϤӤlO8Ӥl,, +YA,qϤӥs1-3YA,, +Ӧw,qϤӥs14Ӧw,, +ӹ,qϤӥs18ӹ,, +Ӹμ,qϤӥs20Ӹμ,, +ӥ,qϤӥs22-24Aӥ,, +ө,qϤӥs2-4ө,, +ӱd,qϤӥs26-30ӱd,, +Ӥs,qϤӥs32-34Ӥs,, +x,qϤӥs38x,, +_,qϤӥs6_,, +ӥջ,qϤӥջO4-5ӥջ,, +jH,qϤڤyD13-15AjH,, +o,qϤڤyD18o,, +RjH,qϤڤyD1ARjH,, +ؤjHMy,qϤڤyD1ؤjHMy,, +ɤjH,qϤڤyD20ɤjH,, +,qϤڤyD21,, +ֽ,qϤڤyD25ֽ,, +b,qϤڤyD4b,, +ګ¤jH,qϤڤyD5ګ¤jH,, +ɼ֪,qϤڤyD6Aɼ֪,, +b,qϤڤyD6Bb,, +,qϤڤyD6,, +üwӷ~,qϤw13-19üwӷ~,, +פjH,qϤw23-25פjH,, +jH,qϤw27-29jH,, +sjH,qϤw32-42sjH,, +n_ӷ~,qϤw44A-46n_ӷ~,, +HΤjH,qϤw48-48AHΤjH,, +|qȦjH,qϤw49-51|qȦjH,, +oTjH,qϤw52oTjH,, +ץͶTjH,qϤw54ץͶTjH,, +jH,qϤw6-10jH,, +öjH,qϤw64-66öjH,, +QjH,qϤw69-71QjH,, +ثnjH,qϤw81-85ثnjH,, +崺jH,qϤw9-11崺jH,, +Qӷ~jH,qϤwF105-107Qӷ~jH,, +UM,qϤwF127UM,, +nqӷ~jH,qϤwF128 -130nqӷ~jH,, +«°ӷ~jH,qϤwF12«°ӷ~jH,, +fʧ{,qϤwF22-26fʧ{,, +rv,qϤwF32rv,, +ӷ~jH,qϤwF40ӷ~jH,, +yװӷ~jH,qϤwF49yװӷ~jH,, +wajH,qϤwF51-59wajH,, +jH,qϤwF68-74jH,, +o,qϤwF6-8o,, +تFӷ~jH,qϤwF78تFӷ~jH,, +jH,qϤwF84-90jH,, +F_ӷ~jH,qϤwF95F_ӷ~jH,, +LȦjH,qϤw18LȦjH,, +LOjH,qϤw73LOjH,, +ؤjH,qϤwF35-45BؤjH,, +դjH,qϤwF60-62դjH,, +b,qϤD1-3b,, +IjH,qϤI7-13IjH,, +_jH,qϤ|f9_jH,, +FQjH,qϤ,, +A,qϤ18A,, +wjH,qϤ2-2CwjH,, +ַsjH,qϤ25-35ַsjH,, +w,qϤ37-43w,, +æh,qϤ4æh,, +a,qϤ5a,, +dέb,qϤ9dέb,, +LA HACIENDA,qϥ[CsD27 LA HACIENDA,, +Xf,qϥ[CsD44Xf,, +,qϥ[CsD48,, +sx,qϥ[CsD5sx,, +ɸֻ,qϥ[CsD63ɸֻ,, +R,qϥ[CsD65-69R,, +p~,qϥ[CsD8,, +s,qϥ[h37s,, +ųjH,qϥ[h39-41ųjH,, +ڸΤjH,qϥ[h45-55ڸΤjH,, +wojH,qϥ[h57wojH,, +[u,qϥ[ۻO18-22[u,, +aI,qϥ[ۻO2-6aI,, +T,qϥ[ۻO28T,, +ŧQjH,qϥ[ۻO8-16ŧQjH,, +[fO,qϥ[fD29,, +ha,qϥ_12ha,, +ΤjH,qϥ_13-19ΤjH,, +ض,qϥ_16-26ض,, +֦wjH,qϥ_23-25֦wjH,, +EQ,qϥ_29-31EQ,, +_,qϥ_37-41_,, +֤jHAy,qϥ_4-8֤jHϮy,, +O,qϥ|26O,, +lAxĤGy,qϥC̤h18lAxĤGy,, +FO,qϥC̤h39FO,, +ҥ,qϥ16-22ҥ,, +_פjH,qϥ1-7_פjH,, +a,qϥ33a,, +ת,qϥ51ת,, +AjH,qϥæN14-16AjH,, +ôIjH,qϥæN18-24ôIjH,, +ۿӷ~jH,qϥæN21-27ۿӷ~jH,, +æNQӷ~jH,qϥæN28-36æNQӷ~jH,, +פjH,qϥæN29-35פjH,, +éyӷ~jH,qϥæN3-7éyӷ~jH,, +ۧQӷ~jH,qϥæN6-12ۧQӷ~jH,, +æOIjH,qϥæN9-17æOIjH,, +Mӷ~jH,qϥéM11-15Mӷ~jH,, +ӷ~jH,qϥéM17-19ӷ~jH,, +ا,qϥéM21ا,, +TMӷ~,qϥéM23-29TMӷ~,, +dӰjH,qϥéM31dӰjH,, +ӷ~jH,qϥüֵ114ӷ~jH,, +jH,qϥüֵ120-122jH,, +ùFӷ~jH,qϥüֵ121-125ùFӷ~jH,, +ê@ӷ~,qϥüֵ12-16ê@ӷ~,, +ڼ֤jH,qϥüֵ128-130ڼ֤jH,, +I֤j,qϥüֵ131-133I֤j,, +ҵؼ,qϥüֵ135-137ҵؼ,, +ojH,qϥüֵ138-140ojH,, +@jH,qϥüֵ1-3@jH,, +nMjH,qϥüֵ148nMjH,, +ü֤jH,qϥüֵ160-162ü֤jH,, +׼ְӷ~jH,qϥüֵ163׼ְӷ~jH,, +ýjH,qϥüֵ164-166ýjH,, +a,qϥüֵ168-170a,, +ôIӷ~jH,qϥüֵ172-176ôIӷ~jH,, +?ajH,qϥüֵ180-182?ajH,, +O,qϥüֵ18-20O,, +jH,qϥüֵ184-186jH,, +Ӵ,qϥüֵ188-190Ӵ,, +UjH,qϥüֵ199UjH,, +ӷ~jH,qϥüֵ205-211ӷ~jH,, +M֤jH,qϥüֵ219-221M֤jH,, +wjH,qϥüֵ22-24wjH,, +붩jH,qϥüֵ229-231붩jH,, +צjH,qϥüֵ239-241צjH,, +ģ[,qϥüֵ26ģ[,, +Fӷ~jH,qϥüֵ34Fӷ~jH,, +},qϥüֵ46},, +jH,qϥüֵ50jH,, +æwjH,qϥüֵ5æwjH,, +Ӥ󧻶jH,qϥüֵ63-65Ӥ󧻶jH,, +Iͦ,qϥüֵ67-69Iͦ,, +sû,qϥüֵ68-70sû,, +ܼwӷ~,qϥüֵ8-10ܼwӷ~,, +IjH,qϥüֵ82-86IjH,, +FjH,qϥüֵ87FjH,, +ְӷ~jH,qϥüֵ93-103ְӷ~jH,, +ΤjH,qϥ̫B8ΤjH,, +KP,qϥե[D,, +f[O,qϥե[D41f[O,, +h,qϥQ12-14h,, +jQ,qϥQ15-19jQ,, +çQjH,qϥQ1-5çQjH,, +U,qϥQ28U,, +Q,qϥQ41-43Q,, +AŻ,qϥQ47AAŻ,, +Q,qϥQ51Q,, +ѻA,qϦCyD,, +ؤjH,qϦCyD28-34ؤjH,, +T,qϦCyD29T,, +ŵؤjH,qϦCyD36-42ŵؤjH,, +ֵجv,qϦCyD43-53ֵجv,, +ũMb,qϦCyD52ũMb,, +j,qϦNu17-21j,, +jH,qϦNu22-34jH,, +AjH,qϦNu27-31AjH,, +jH,qϦNu61jH,, +׼,qϦNu62-64׼,, +ŴIjH,qϦNu63,, +ŦwjH,qϦNu65,, +NQ,qϦNu9-15NQ,, +KQ,qϦNu99KQ,, +@jH@y,qϦaQڼw,, +ˬө~,qϦaQڼw10Aˬө~,, +aQڼw,qϦaQڼw14aQڼw,, +Ȱӷ~jH,qӨF12-18Ȱӷ~jH,, +_,qӨF15-17_,, +wӷ~,qӨF19-25wӷ~,, +jH,qӨF8-10jH,, +wּ,qϦwM10-12wּ,, +wyjH,qϦwyO1wyjH,, +wjH,qϦw11-15wjH,, +OjH,qϦw17-19OjH,, +sؤjH,qϦw7sؤjH,, +QjH,qϦw8-10QjH,, +y,qϦw9y,, +MujH,qϦϹD10MujH,, +ŽjH,qϦϹD12ŽjH,, +AAy,qϦϹD14-36AAy,, +yjH,qϦϹD15yjH,, +³,qϦϹD3³,, +s˻,qϦϹD5s˻,, +qR,qϦϹD8qR,, +ĭb,qϦϹD9ĭb,, +ʤl,qϦʤl1-2ʤl,, +ʸS|15,qϦʸS|15,, +ʸS|17,qϦʸS|17,, +ֲ,qϦw10ֲ,, +_A,qϦ費2,, +yo,qϦ49-51yo,, +o,qϦ跽24-26o,, +,qϦ35,, +ֿA,qϦ輯D11ֿA,, +jH,qϦ輯D17-21jH,, +׻O,qϦ輯D1׻O,, +M,qϦ輯D2AM,, +O,qϦ輯D2O,, +vM,qϦ輯D33vM,, +׻,qϦ輯D3׻,, +_ɻ,qϦ輯D49_ɻ,, +ҴM,qϦ輯D63ҴM,, +äjH,qϦ輯D6A-BäjH,, +C-Dy,qϦ輯D8C-Dy,, +_,qϦ輯O2-3_,, +Q,qϦ18-20Q,, +òjH,qϦ19-29òjH,, +ߤjH,qϦ2-2EߤjH,, +os,qϦ22os,, +ws,qϦ38ws,, +zbAy,qϧJyD5zb,, +qjH,qϧQ27-29qjH,, +jH,qϧQ9-13jH,, +_ؼ,qϧQF12-13_ؼ,, +U,qϧQF5U,, +QFjH,qϧQF9QFjH,, +òjH,qϧQ12-16òjH,, +PM,qϧQ23-25PM,, +s,qϧ_s20-22s,, +iE,qϧ_s26iE,, +_s,qϧ_s28-30_s,, +_ؼ,qϧ_s36-40_ؼ,, +κ,qϨiD4κ,, +æw?,qϨiD7æw?Ay,, +ǧQ,qϨǧQ19-21ǧQ,, +ɬû,qϨǧQ23-25ɬû,, +ȲդjH,qϨȲչD10-12ȲդjH,, +jH,qϨȲչD11jH,, +R,qϨȲչD15R,, +ػ,qϨȲչD16ػ,, +ֽ,qϨȲչD18ֽ,, +ȲչD2,qϨȲչD2,, +CjH,qϨQhD1-3CjH,, +oQ,qϨQ62-64oQ,, +,qϨQ67,, +jH,qϨQ80-82jH,, +ɴI,qϨQ88ɴI,, +IjH,qϨQ9IjH,, +ns,qϨE113-119ns,, +pds,qϨE116-122pds,, +ps,qϨE124-134ps,, +jH,qϨE125-129jH,, +jH,qϨE139-153jH,, +,qϨE144-148,, +ajH,qϨE165-175ajH,, +pNj,qϨE18A-20ApNj,, +ؤjH,qϨE22-24AؤjH,, +_,qϨE28_,, +Uoj,qϨE30-30CUoj,, +BA,qϨE35ABA,, +Ѧu~jH,qϨE36-38Ѧu~jH,, +ĤjH,qϨE37ĤjH,, +js,qϨE3js,, +嶶,qϨE40嶶,, +_s,qϨE42-44_s,, +j,qϨE46Aj,, +njH,qϨE5-5HnjH,, +ũjH,qϨE56ũjH,, +QF,qϨE57-61QF,, +ڽjH,qϨE67-83ڽjH,, +,qϨE7-11,, +nͤjH,qϨE86nͤjH,, +@w,qϨE93-95@w,, +,qϩMX1-3,, +A,qϩMX14-20A,, +jH,qϩMX2-12jH,, +Mw,qϩMw8-13Mw,, +M֧O,qϩMֹD,, +~,qϩ~3~,, +jH,qϩ}a10-20jH,, +}ajH,qϩ}a22-44}ajH,, +2-4,qϩ2-4,, +Ͱӷ~jH,qϪFӨ4-6Ͱӷ~jH,, +Ӳ,qϪF12-14Ӳ,, +pqjH,qϪF23-27pqjH,, +F,qϪF28-30F,, +vB,qϪF48vB,, +ة,qϪF2A-2Bة,, +ۼ,qϪF38-42ۼ,, +sojH,qϪLh1sojH,, +ۥjO3,qϪۥjO3,, +ȤjH,qϪD1ȤjH,, +RjH,qϪD55RjH,, +O_,qϪD89O_,, +Y,qϪD93Y,, +Τ@,qϪD95Τ@,, +jH,qϪ1jH,, +C,qϫCO4-6C,, +ɴb,qϫCO7-8ɴb,, +_j,qϫOw2-4_j,, +_j,qϫOw29-31_j,, +ajH,qϫOw33-39ajH,, +OjH,qϫOw6-20OjH,, +Rb,qϫOw9-15Rb,, +n,qϫn1n,, +jw,qϫpM1-5jw,, +ujH,qϫpM19ujH,, +jH,qϫpM28jH,, +jH,qϫpM38jH,, +pM,qϫpM39-45pM,, +ojH,qϫpM6-18ojH,, +an,qϫӵ12-14an,, +an,qϫӵ16-18an,, +§Q,qϫ§Qµ2§Q,, +PjH,qϫ§Qµ8-12PjH,, +s¤jH,qϫFy112-114s¤jH,, +DOTCOM HOUSE,qϫFy128DOTCOM HOUSE,, +LjH,qϫFy160-164LjH,, +uӤjH,qϫFy17-19uӤjH,, +ë­,qϫFy172ë­,, +qjH,qϫFy27-29qjH,, +Fys,qϫFy2-8Fys,, +`OjH,qϫFy32-40`OjH,, +jH,qϫFy39jH,, +sQjH,qϫFy43-49sQjH,, +ث¤jH,qϫFy50ث¤jH,, +¹jH,qϫFy56-58¹jH,, +¦wӷ~jH,qϫFy60¦wӷ~jH,, +,qϫFy62,, +IR,qϫFy63-69IR,, +κajH,qϫFy64-66κajH,, +ҵؤjH,qϫFy68ҵؤjH,, +ojH,qϫFy72-74ojH,, +s^ӷ~jH,qϫFy85-89s^ӷ~jH,, +q٤jH,qϫFy86-90q٤jH,, +,qϫFy95,, +YIN SERVICED APARTMENTS,qϫFy97AYIN SERVICED APARTMENTS,, +§QjH,qϫFy97§QjH,, +BA,qϫFy98BA,, +°ӷ~,qϫFy99°ӷ~,, +ؤjH,qϫh10-16ؤjHAy,, +ؤjHAy,qϫh2ؤjHAy,, +פjH,qϫȧQ8פjH,, +ʶs,qϬID4ʶs,, +r,qϬID8r,, +LjH,qϬL15-25LjH,, +ڻȤ,qϬL9ڻȤ,, +xa,qϬfD18xa,, +RjHC-Dy,qϬfD2ARjHC-Dy,, +_»,qϬfD4_»,, +ݭb,qϬfD6,, +s,qϬ_hlsD16-20s,, +תL,qϬ_hlsD24-26תL,, +,qϬ_hlsD4,, +ۻ,qϬۻO1ۻ,, +ŭ۰a,qϬۻO4ŭ۰a,, +pjH,qϬӦZjD118-120pjH,, +uȤjH,qϬӦZjD122-126uȤjH,, +,qϬӦZjD125,, +],qϬӦZjD131-133],, +¨ɤjH,qϬӦZjD138¨ɤjH,, +THE L.PLACE,qϬӦZjD139THE L.PLACE,, +Qӷ~jH,qϬӦZjD142-146Qӷ~jH,, +طjH,qϬӦZjD145-149طjH,, +jH,qϬӦZjD148jH,, +^ӷ~jH,qϬӦZjD153^ӷ~jH,, +jH,qϬӦZjD15jH,, +æȦjH,qϬӦZjD161-169æȦjH,, +s@ɤjH,qϬӦZjD16-18s@ɤjH,, +X,qϬӦZjD171X,, +AwjH,qϬӦZjD176A-176FAwjH,, +]_jH,qϬӦZjD178-180]_jH,, +ss,qϬӦZjD181ss,, +ڶjH,qϬӦZjD184-192ڶjH,, +פjH,qϬӦZjD189-205פjH,, +PIӷ~jH,qϬӦZjD198-200PIӷ~jH,, +?`jH,qϬӦZjD1?`jH,, +ӥ,qϬӦZjD20-20Bӥ,, +w~,qϬӦZjD207-209w~,, +Ӱ򤤤,qϬӦZjD208Ӱ򤤤,, +ooj?,qϬӦZjD213ooj?,, +ڲ,qϬӦZjD219ڲ,, +ҷװӷ~jH,qϬӦZjD222-226ҷװӷ~jH,, +sOjH,qϬӦZjD229sOjH,, +fp,qϬӦZjD233-235fp,, +ӿ,qϬӦZjD237,, +خx,qϬӦZjD268خxϮy,, +jH,qϬӦZjD270-276jH,, +HQjH,qϬӦZjD275HQjH,, +óǤ,qϬӦZjD287-301óǤ,, +§jH,qϬӦZjD288-290§jH,, +?jH,qϬӦZjD28?jH,, +Τ,qϬӦZjD2Τ,, +_ӷ~jH,qϬӦZjD302_ӷ~jH,, +L,qϬӦZjD303L,, +÷~,qϬӦZjD305-313÷~,, +T֦,qϬӦZjD30T֦,, +qjH,qϬӦZjD31-31AqjH,, +QפjH,qϬӦZjD315-319QפjH,, +_jH,qϬӦZjD325-329_jH,, +Ay,qϬӦZjD328ߢϮy,, +By,qϬӦZjD328ߢЮy,, +nIӷ~jH,qϬӦZjD331-333nIӷ~jH,, +U,qϬӦZjD33-33AU,, +دڤjH,qϬӦZjD340دڤjH,, +צ,qϬӦZjD346-348צ,, +QjH,qϬӦZjD368QjH,, +޳jH,qϬӦZjD36޳jH,, +ְ,qϬӦZjD378ְ,, +EDͦ,qϬӦZjD37EDͦ,, +ײЫؤjH,qϬӦZjD39ײЫؤjH,, +pjH,qϬӦZjD41-47pjH,, +U~jH,qϬӦZjD48U~jH,, +ʼ,qϬӦZjD49-51ʼ,, +,qϬӦZjD50-52,, +é,qϬӦZjD53é,, +QFӷ~jH,qϬӦZjD57QFӷ~jH,, +xjH,qϬӦZjD59-65xjH,, +ũɤjH,qϬӦZjD5ũɤjH,, +djH,qϬӦZjD70djH,, +ʨΤjH,qϬӦZjD72ʨΤjH,, +ȤjH,qϬӦZjD77ȤjH,, +UjH,qϬӦZjD79-83UjH,, +y뤤,qϬӦZjD88y뤤,, +,qϬӦZjD99,, +Űas,qϬӦZjD9Űas,, +LȦjH,qϬӦZjD102-106LȦjH,, +شIӷ~jH,qϬӦZjD111شIӷ~jH,, +ojH,qϬӦZjD115-119ojH,, +a֪,qϬӦZjD128a֪,, +Ij,qϬӦZjD138-140Ij,, +òj,qϬӦZjD141-151òj,, +ѩM,qϬӦZjD146-148ѩM,, +MI,qϬӦZjD159-161MI,, +n_jH,qϬӦZjD17-19n_jH,, +ؿ,qϬӦZjD172-180ؿ,, +F,qϬӦZjD182-186F,, +,qϬӦZjD189,, +򦨤jH,qϬӦZjD196-198򦨤jH,, +poӷ~,qϬӦZjD2-12poӷ~,, +IjH,qϬӦZjD213-217IjH,, +Cp,qϬӦZjD219-223Cp,, +nɤjH,qϬӦZjD230-236nɤjH,, +~,qϬӦZjD233~,, +MqjH,qϬӦZjD263MqjH,, +oQjH,qϬӦZjD270-280oQjH,, +״,qϬӦZjD282״,, +KFjH,qϬӦZjD292-298KFjH,, +wF,qϬӦZjD311-325wF,, +j,qϬӦZjD327-333j,, +s@jH,qϬӦZjD330-336s@jH,, +XOӷ~jH,qϬӦZjD335-339XOӷ~jH,, +fb,qϬӦZjD341-343fb,, +ҦjH,qϬӦZjD351-353ҦjH,, +æ,qϬӦZjD355-359æ,, +Tx~,qϬӦZjD356Tx~,, +֫HjH,qϬӦZjD371-379֫HjH,, +Thj,qϬӦZjD384-386Thj,, +IjH,qϬӦZjD398-400IjH,, +QɤjH,qϬӦZjD399-401QɤjH,, +߻,qϬӦZjD403-405߻,, +ɴĤ@y,qϬӦZjD409-419ɴĤ@y,, +֩ɰa,qϬӦZjD411֩ɰa,, +Fb,qϬӦZjD419GFb,, +,qϬӦZjD419R-419T,, +aؤjH,qϬӦZjD420-424aؤjH,, +ةBy,qϬӦZjD421ةBy,, +஦,qϬӦZjD42-56஦,, +õؤjH,qϬӦZjD425G-425ZõؤjH,, +ujH,qϬӦZjD428-440ujH,, +ڶȦϤjH,qϬӦZjD441ڶȦϤjH,, +su,qϬӦZjD455-485su,, +ÿ,qϬӦZjD476-482ÿ,, +swj,qϬӦZjD484-496swj,, +jH,qϬӦZjD501-511jH,, +,qϬӦZjD513,, +pؤjH,qϬӦZjD518-520pؤjH,, +MojH,qϬӦZjD533-543MojH,, +_wjH,qϬӦZjD540-546_wjH,, +ʦnj,qϬӦZjD554-560ʦnj,, +p֤j,qϬӦZjD562-570p֤j,, +}jH,qϬӦZjD572-574}jH,, +s,qϬӦZjD576-584s,, +jӰӷ~jH,qϬӦZjD5-7jӰӷ~jH,, +w֤j,qϬӦZjD586-588w֤j,, +yjH,qϬӦZjD590-596AyjH,, +~s,qϬӦZjD598-600~s,, +TפjH,qϬӦZjD608-616TפjH,, +,qϬӦZjD77-91,, +Fy,qϬӦZjD88Fy,, +ҦZخxĤGy,qϬӦZ1ҦZخxĤGy,, +FjH,qϬָ8FjH,, +E,qϬ7E,, +^ػ,qϭ^ػO12^ػ,, +ؽ,qϭ^ػO1-6ؽ,, +^,qϭ^O1^,, +a,qϭ^O2-3a,, +MOjH,qϮLùD10MOjH,, +Ȧ椤,qϮLùD12Ȧ椤,, +FĤ,qϮLùD16FĤ,, +I,qϮLùD18I,, +|b,qϮt]W8|b,, +Rؼ,qϮۭ12-16Rؼ,, +çQjH,qϮۭ18-24çQjH,, +ۼ,qϮۭ2-4ۼ,, +îۼ,qϮۭ6-8îۼ,, +,qϮO15-19,, +C?,qϯR֤h11C?,, +κ֤jH,qϯR֤h1κ֤jH,, +óӤjH,qϯR֤h24-26AóӤjH,, +PͤjH,qܨE10PͤjH,, +Iü,qܨE18-20Iü,, +_jH,qܨE24-26_jH,, +,qܨE28-30,, +ؿjH,qܨE33-35ؿjH,, +߽jH,qܨE6-8߽jH,, +߰TjH,qϯȧQ1-3߰TjH,, +pjH,qϯȧQ17-19pjH,, +IjH,qϯȧQ9-11IjH,, +jH,qϯwD13-15jH,, +ŴIjH,qϯwD19-27ŴIjH,, +ūª,qϯwD1ūª,, +ʦXb,qϯwD20-22ʦXb,, +tO,qϯwD24-26tO,, +RؤjH,qϯwD28-30RؤjH,, +spjH,qϯwD29-31spjH,, +ojH,qϯwD37-47ojH,, +ta,qϯwD38Cta,, +MjH,qϯwD38D-38FMjH,, +RɤjH,qϯwD38RɤjH,, +y^jH,qϯwD40-42y^jH,, +AA,qϯwD46A-50AA,, +nv,qϯwD51-53nv,, +_ڻ,qϯwD52,, +fb,qϯwD54fb,, +njH,qϯwD58-60njH,, +jH,qϯwD59-61jH,, +봺x,qϯwD5봺x,, +ɰ,qϯwD62ɰ,, +~jH,qϯwD63B-65F~jH,, +ǪLa,qϯwD63GǪLa,, +a,qϯwD63a,, +Rb,qϯwD64Rb,, +˧O~,qϯwD65A-65B˧O~,, +ixiO,qϯwD78A-78BixiO,, +Ұa,qϯwD7-9Ұa,, +§By,qϯwD80-82§,, +§,qϯwD84§,, +QwjH,qϯw11-13QwjH,, +QwjH,qϯw7-9QwjH,, +䴺O,qϰvPlD11䴺O,, +żz,qϰvPlD1-3Ażz,, +vPjH,qϰvPlD17,, +wjH,qϰvPlD2wjH,, +ѻ,qϰvPlD5-7ѻ,, +O,qϰvPlD9O,, +jH,qϰ21-23jH,, +XjH,qϰ25-29XjH,, +ڧQӷ~jH,qϰ34-36ڧQӷ~jH,, +ojH,qϰ37ojH,, +jH,qϰ48-66jH,, +Tخx,qϰ80Tخx,, +,qϰ,, +ػ,qϰ100ػ,, +OVOLO,qϰ111OVOLO,, +m,qϰ11m,, +A,qϰ120-122A,, +мw,qϰ124-126мw,, +jH,qϰ19A-19BjH,, +׽~,qϰ1׽~.,, +,qϰ26-38,, +jH,qϰ39-41jH,, +ۿn,qϰ43-45ۿn,, +ڰj,qϰ48-78ڰj,, +IΤjH,qϰ53-65IΤjH,, +wjH,qϰ69-73wjH,, +Aػ,qϰ8Aػ,, +R,qϰ95A-95BR,, +,qϰ9,, +OڤjH,qϰhQӦZ3OڤjH,, +QjH,qϰhQӦZ4QjH,, +EjH,qϰhQӦZ5-8EjH,, +ӤjH,qϰhQӦZ9-10ӤjH,, +ģutjH,qϰhQD62ģutjH,, +I,qϰhQD70I,, +RjH,qϰhQD80RjH,, +ʦ~j,qϰhQD9-15,, +qתBy,qϰa20qתBy,, +ujH,qϰa27ujH,, +Ay,qϰa38Ay,, +By,qϰa38By,, +njH,qϰa46-47njH,, +_jH,qϰas1-1A_jH,, +l,qϰas38l,, +p,qϰaD22-24p,, +̭b,qϰaD32̭b,, +ɩMjHAy,qϰaD34ɩMjHAy,, +Ҵ,qϰaD3Ҵ,, +g,qϰaD4g,, +s1y,qϰaD9As1y,, +s2y,qϰaD9As2y,, +M,qϰD100M,, +Ab,qϰD107-109Ab,, +_ذa,qϰD117_ذa,, +jH,qϰD119-125jH,, +,qϰD120,, +פjH,qϰD124פjH,, +UA,qϰD126UA,, +ּ,qϰD127ּ,, +¤jH,qϰD128-132¤jH,, +jjH,qϰD129-133jjH,, +jH,qϰD135-137jH,, +b,qϰD139b,, +Ŧ~ػ,qϰD141-145Ŧ~ػ,, +dMjH,qϰD15dMjH,, +b,qϰD21-23b,, +sjH,qϰD22-22AsjH,, +jH,qϰD24-24AjH,, +s,qϰD28s,, +ĿjH,qϰD29-31ĿjH,, +QjH,qϰD33-37AQjH,, +,qϰD38,, +_bjH,qϰD39-41_bjH,, +K_,qϰD43-45K_,, +sO,qϰD46sO,, +EjH,qϰD49EjH,, +,qϰD57,, +,qϰD58-62,, +Eۼ,qϰD59Eۼ,, +_L,qϰD5A-5B_L,, +y,qϰD61y,, +z,qϰD63-69z,, +x~,qϰD66x~,, +R},qϰD71R},, +xa,qϰD75xa,, +jH,qϰD80-88jH,, +ŴO,qϰD93ŴO,, +jH,qϰa12jH,, +s,qϰa26s,, +],qϰa28],, +Aw,qϰa6-8Aw,, +Poj,qϰas1B-1CPoj,, +hذa,qϰas28hذa,, +Ry,qϱRy2ARy,, +yj,qϱRy3yj,, +Ry,qϱRy4Ry,, +s,qϱdּs8s,, +so,qϱO4so,, +wb,qϱO5wb,, +ŴIRb,qϱD10-12ŴIRb,, +ө~,qϱD11ө~,, +b,qϱD7b,, +HjH,qϲKD1HjH,, +iùhjH,qϲ11iùhjH,, +,qϲ12-12A,, +ؤjH,qϲ1-3ؤjH,, +|wפjH,qϲ20|wפjH,, +,qϲ11-13,, +jH,qϲĤ@121-131jH,, +ӯq,qϲĤ@27-29ӯq,, +~jH,qϲĤ@5-23~jH,, +Ų,qϲĤ@55-61Ų,, +T,qϲĤ@83T,, +p,qϲĤ@8,, +׼,qϲĤG107-117׼,, +,qϲĤG10,, +FjH,qϲĤG1-11FjH,, +֤jH,qϲĤG120-126֤jH,, +@jHĤGy,qϲĤG128@jHĤGy,, +@jH1,qϲĤG143@jH1,, +yjH,qϲĤG58-66yjH,, +ηsjH,qϲĤG68-80ηsjH,, +w,qϲĤG6-8w,, +,qϲĤG83,, +ujH,qϲĤT100-106ujH,, +׻,qϲĤT101׻,, +ײjH,qϲĤT129-133ײjH,, +R,qϲĤT138R,, +HjH,qϲĤT142-150HjH,, +عF,qϲĤT152-158عF,, +[,qϲĤT162-166[,, +sץx,qϲĤT163sץx,, +a@,qϲĤT178-180a@,, +׸ΤjH,qϲĤT182-190׸ΤjH,, +֦w,qϲĤT192֦w,, +,qϲĤT208,, +aؤjH,qϲĤT29-33aؤjH,, +׶hjH,qϲĤT38-40׶hjH,, +FnjH,qϲĤT43-47FnjH,, +W~x,qϲĤT46-48W~x,, +dֻ,qϲĤT52-54dֻ,, +ֺjH,qϲĤT56-72ֺjH,, +,qϲĤT63,, +ؼ,qϲĤT69-73ؼ,, +dM,qϲĤT83dM,, +Pp,qϲĤT88Pp,, +Q,qϲĤT9-11Q,, +,qϲD1-13,, +j,qϲD132-134j,, +ڤhjH,qϲD15-19ڤhjH,, +ҵojH,qϲD160-168ҵojH,, +QؤjH,qϲD171-177QؤjH,, +Ӱ,qϲD174-174BӰ,, +ө,qϲD180-182ө,, +ثajH,qϲD181-199ثajH,, +j,qϲD186-190j,, +RwjH,qϲD198-202RwjH,, +j,qϲD205A-205Cj,, +ӥjH,qϲD208ӥjH,, +j,qϲD209-223j,, +ӷ~,qϲD233ӷ~,, +ĭb,qϲD23ĭb,, +,qϲD248,, +ùjH,qϲD26-28,, +j,qϲD265-267j,, +jH,qϲD27-29jH,, +ط~a򤤤,qϲD32ط~a򤤤,, +æw,qϲD38-40æw,, +wּ,qϲD39-43wּ,, +Ӽ,qϲD44-50Ӽ,, +Eװӷ~,qϲD49-51Eװӷ~,, +ojH,qϲD54-58ojH,, +QӰӷ~jH,qϲD57-59QӰӷ~jH,, +SOHO 69,qϲD69SOHO 69,, +Aj,qϲD88Aj,, +_s,qϲD89-95_s,, +دqj,qϲ1-11دqj,, +ӱdjH,qϲ1A-1GӱdjH,, +֦,qϳRQ13֦,, +RQ@,qϳRQ1RQ@,, +ߴv߫үǤjH,qϳRQ3-11ߴv߫үǤjH,, +p۷|jH,qϳRQ8-10p۷|jH,, +L,qϳt18L,, +ӷ~jH,qϳt24-30ӷ~jH,, +tvjH,qϳt2tvjH,, +s,qϳD39Bs,, +[jH,qϳD54[jH,, +d֤jH,qϳҹD,, +ݯǤjH@y,qϳҹD,, +RؤjH,qϳҹD102-104RؤjH,, +פjH,qϳҹD106-108פjH,, +Fb,qϳҹD10Fb,, +?֤jH,qϳҹD110-112?֤jH,, +jH,qϳҹD114-120jH,, +,qϳҹD12-14,, +fQjH,qϳҹD16-18fQjH,, +ŭb,qϳҹD17ŭb,, +BɤjH,qϳҹD20BɤjH,, +Ew,qϳҹD24Ew,, +ʦ~jH,qϳҹD27-29ʦ~jH,, +fb,qϳҹD36fb,, +jH,qϳҹD38A-38DjH,, +ּ֤jH,qϳҹD42ּ֤jH,, +d֤jH,qϳҹD44,, +sAy,qϳҹD48,, +ڻA,qϳҹD56-58ڻA,, +njH,qϳҹD5njH,, +ñdjH,qϳҹD60-62ñdjH,, +Ѷ,qϳҹD64Ѷ,, +jH,qϳҹD65-73jH,, +njH,qϳҹD66-68njH,, +AjH,qϳҹD68AAjH,, +jH,qϳҹD70jH,, +ʽjH,qϳҹD72ʽjH,, +өvjH,qϳҹD74-76өvjH,, +fhjH,qϳҹD78-80fhjH,, +ػ,qϳҹD7-9ػ,, +_O,qϳҹD96_O,, +Ŧ~jH,qϳҹD98-100Ŧ~jH,, +ص,qϵy6-10ص,, +ֿA,qϴ17ֿA,, +@Ȫb,qϴq11@Ȫb,, +y,qϴy{10-18y,, +ӼyjH,qϴy{22-34ӼyjH,, +_yjH,qϴy{2-8_yjH,, +¥,qϴ¥1¥,, +ɧQAy,qϴ¥21-24ɧQAy,, +XԻ,qϴ¥2XԻ,, +,qϴ¥3-4,, +ڪĤ1,qϴ䴺1ڪĤ1,, +֧Ӽ,qϵӵ22-24֧Ӽ,, +פjH,qϵӵ35פjH,, +ŴJ,qϵӵ36ŴJ,, +sjH,qϵӵ39-49sjH,, +Q,q϶QD1,, +ګHjH,q϶w10-12ګHjH,, +ҥ,q϶w13ҥ,, +UjH,q϶w15-17UjH,, +ʰӷ~jH,q϶w16ʰӷ~jH,, +«HjH,q϶w19-27«HjH,, +nؤjH,q϶w1nؤjH,, +|_j,q϶w22-28|_j,, +wjH,q϶w30-32wjH,, +Fģӷ~jH,q϶w31AFģӷ~jH,, +THE MOOD@LKF,q϶w31THE MOOD@LKF,, +@ɰӷ~jH,q϶w34@ɰӷ~jH,, +y,q϶w36-38y,, +wӷ~,q϶w40-44wӷ~,, +E§,q϶w43-55E§,, +,q϶w46-48,, +֦,q϶w50֦,, +oɧ{,q϶w52oɧ{,, +jH,q϶w57-59jH,, +߰ӷ~jH,q϶w67߰ӷ~jH,, +PjH,q϶w69PjH,, +sjH,q϶w73sjH,, +ťӷ~jH,q϶w75-77ťӷ~jH,, +sj,q϶Q21-31sj,, +ӷ~jH,q϶Q3-5ӷ~jH,, +E֤j,q϶Q9E֤j,, +μ,qϷs15-17μ,, +sΤjH,qϷs2-8sΤjH,, +yjH,qϷs5-13yjH,, +wF,qϷs󥫵34wF,, +dª,qϷs󥫵8dª,, +,qϸthϨ1-2,, +붶,qϸthϨ3붶,, +hwa,qϸthϨ5hwa,, +Uy11,qϸUy11,, +LO,qϸΪLO3LO,, +L,qϸΪLO5L,, +ŻjH,qϹūw35-39ŻjH,, +Ѧwӷ~jH,qϹūw41-43Ѧwӷ~jH,, +ŧQjH,qϹūw45-53AŧQjH,, +aؤjHBy,qϺaب8-16aؤjHBy,, +gI,qϺq33gI,, +,qϺq34,, +hּ,qϺq35-39Ahּ,, +,qϺq3-5,, +,qϺq7-9,, +~jH,qϺ~yD8~jH,, +ڿ,qϺֹب2-14ڿ,, +Iؼ,qϺֹب7-13Iؼ,, +֭b,qϺشӹD,, +ڴ,qϺشӹD15ڴ,, +s,qϺشӹD19s,, +s,qϺشӹD21s,, +_ps1y,qϺشӹD35-37_ps1y,, +s,qϺشӹD35-37s,, +s,qϺشӹD35-37s,, +,qϺشӹD36,, +,qϺشӹD50,, +ABERGELDIE,qϺشӹD52ABERGELDIE,, +La,qϻZ23La,, +Zb,qϻZ38Zb,, +b,qϻZ40b,, +_,qϻZ||9_,, +PojH,qϻ10-16PojH,, +jH,qϻ13-17jH,, +,qϻ30-34,, +wMjH,qϼwvߵ17-19wMjH,, +~פjH,qϼwvߵ2-18~פjH,, +JAZMIN CASA HSE,qϼwvߵ56JAZMIN CASA HSE,, +ӷ~jH,qϼwD102-104ӷ~jH,, +EwjH,qϼwD106-108EwjH,, +ER,qϼwD107-111ER,, +FȻȦjH,qϼwD10FȻȦjH,, +wӷ~jH,qϼwD112-114wӷ~jH,, +FoijH,qϼwD113-125AFoijH,, +jȦ椤,qϼwD120jȦ椤,, +mas,qϼwD12-16mas,, +lT,qϼwD127-131lT,, +䤤ؼtӷ|pXjH,qϼwD133䤤ؼtӷ|pXjH,, +sII,qϼwD135-137sII,, +IjH,qϼwD140-142IjH,, +nvӷ~ȦjH,qϼwD151nvӷ~ȦjH,, +qΰӷ~jH,qϼwD156-164qΰӷ~jH,, +T,qϼwD161-167T,, +js,qϼwD181js,, +s,qϼwD188s,, +_ϤjH,qϼwD189_ϤjH,, +Ls,qϼwD199Ls,, +yjH,qϼwD19yjH,, +ӤljH,qϼwD1A-3AӤljH,, +CjH,qϼwD206-210CjH,, +æw,qϼwD209-211æw,, +wjH,qϼwD20wjH,, +wӷ~,qϼwD212-214wӷ~,, +QjH,qϼwD222-224QjH,, +ŵػȦ椤,qϼwD232ŵػȦ椤,, +~Tӷ~,qϼwD237-241~Tӷ~,, +Fӷ~jH,qϼwD244-248Fӷ~jH,, +wjH,qϼwD247wjH,, +пȦ椤,qϼwD24пȦ椤,, +wֶjH,qϼwD25-27AwֶjH,, +İӷ~jH,qϼwD254-256İӷ~jH,, +AjH,qϼwD255-257AjH,, +~HUȦjH,qϼwD259-265~HUȦjH,, +@wjH,qϼwD262@wjH,, +sOjH,qϼwD267-275sOjH,, +¤ӷ~jH,qϼwD268¤ӷ~jH,, +~ӷ~,qϼwD272-284~ӷ~,, +שMӷ~jH,qϼwD279-281שMӷ~jH,, +Ad,qϼwD285Ad,, +FjH,qϼwD287-291FjH,, +qӷ~jH,qϼwD288qӷ~jH,, +LȦjH,qϼwD28LȦjH,, +BQȥ֯jH,qϼwD29BQȥ֯jH,, +ȦjH,qϼwD2AȦjH,, +سǰӷ~,qϼwD300-302سǰӷ~,, +֤jH,qϼwD30-32֤jH,, +EjH,qϼwD304-306EjH,, +IêĤ,qϼwD308IêĤ,, +Ҽwӷ~jH,qϼwD317-319Ҽwӷ~jH,, +䫰,qϼwD323䫰,, +IȦjH,qϼwD34-38IȦjH,, +qjH,qϼwD40-42qjH,, +öȦjH,qϼwD45öȦjH,, +ΩjH,qϼwD48-52ΩjH,, +sjH,qϼwD5-17sjH,, +AO,qϼwD54-58AO,, +󦨦椤,qϼwD55󦨦椤,, +n,qϼwD59n,, +UyjH,qϼwD68UyjH,, +æwΤjH,qϼwD71æwΤjH,, +ͻȦjH,qϼwD74-78ͻȦjH,, +ڥͻȦ`jH,qϼwD83ڥͻȦ`jH,, +88,qϼwD88-98,, +sQjH,qϼwD8A-8CsQjH,, +jsHؤjH,qϼwD99-105jsHؤjH,, +qjH,qϼwD,, +AؤjH,qϼwD,, +ְӷ~,qϼwD103ְӷ~,, +hWLjH,qϼwD108-110hWLjH,, +QؤjH,qϼwD111-117QؤjH,, +jH,qϼwD118jH,, +jjH,qϼwD119-127jjH,, +wjH,qϼwD132-136wjH,, +Eӷ~jH,qϼwD139-145Eӷ~jH,, +[jH,qϼwD163-173[jH,, +賣jH,qϼwD164-170賣jH,, +wjH,qϼwD176-178wjH,, +õo,qϼwD179-181õo,, +pwjH,qϼwD180-188ApwjH,, +jH,qϼwD187-189jH,, +ڤjH,qϼwD190-194ڤjH,, +wjH,qϼwD19-25wjH,, +202 ,qϼwD202-204202 ,, +Eaӷ~jH,qϼwD210-212Eaӷ~jH,, +PjH,qϼwD211-213PjH,, +֦jH,qϼwD220֦jH,, +ow,qϼwD221-223ow,, +jH,qϼwD234-242jH,, +w,qϼwD239-241w,, +wjH,qϼwD243-245wjH,, +FOӷ~,qϼwD246FOӷ~,, +إߤj,qϼwD251-253إߤj,, +ȦjH,qϼwD259-269ȦjH,, +wjH,qϼwD260-264wjH,, +jH,qϼwD268-270jH,, +Pӷ~jH,qϼwD27Pӷ~jH,, +ϰӷ~jH,qϼwD29-31ϰӷ~jH,, +_߻,qϼwD294_߻,, +ѿjH,qϼwD295-305ѿjH,, +,qϼwD321,, +vӷ~j,qϼwD32-36vӷ~j.,, +wy,qϼwD326-332wy,, +ڸΤjH,qϼwD334-350ڸΤjH,, +ejH1y,qϼwD351ejHĢy,, +Ȥj,qϼwD352-366Ȥj,, +s׻,qϼwD363s׻,, +B,qϼwD370-372B,, +awjH,qϼwD374-376awjH,, +PFjH,qϼwD390-392PFjH,, +ةCy,qϼwD394-400ةCy,, +з~,qϼwD402-404з~,, +Ϥ,qϼwD40-50Ϥ,, +oIj,qϼwD406D-406EoIj,, +ӥvs,qϼwD418ӥvs,, +sA y,qϼwD442sA y,, +u~jH,qϼwD444-452u~jH,, +jH,qϼwD458-458AjH,, +ѵػ,qϼwD464-464Dѵػ,, +óӤjH,qϼwD52-58óӤjH,, +̬ujH,qϼwD59-61̬ujH,, +Ÿμ,qϼwD63-65Ÿμ,, +@jH,qϼwD65-68@jH,, +QjH,qϼwD72-74QjH,, +|jH,qϼwD73-79|jH,, +wؤjH,qϼwD76-78wؤjH,, +{|],qϼwD81-85{|],, +Hӷ~jH,qϼwD8Hӷ~jH,, +p°ӷ~jH,qϼwD93-97p°ӷ~jH,, +פjH,qϼwD94-96פjH,, +ӷ~jH,qϼQڵ10ӷ~jH,, +AO,qϼPD,, +ɪL,qϼPD2AɪL,, +wQ,qϼPD2,, +ڵX,qϼPD4ڵX,, +ثF,qϼPD52-54ثF,, +q{ۼ,qϼùW15-19q{ۼ,, +zL,qϼùq[17zL,, +˯,qϼùq[33˯,, +§b,qϼùq[8§b,, +Ź,qϼùq[9-11Ź,, +ֻ,qϼùq12ֻ,, +ũɻ,qϼùq23ũɻ,, +ؿ,qϼùq26-28ؿ,, +֪YjH,qϼùq31-37֪YjH,, +I,qϼoW8-12I,, +F@,qϼ֥jD18F@,, +uj,qϼ֥jD2-8uj,, +,qϼ֥jD28,, +ӦZӷ~jH,qϼ֥jD31-37ӦZӷ~jH,, +Rb,qϼ֥jD3Rb,, +ΧQjH,qϼ֥jD68ΧQjH,, +ӱ5,qϼӱ5,, +o,qϽS6o,, +ŭb,qϽë4ŭb,, +RA-Dy,qϽëD10RA-Dy,, +RE-Gy,qϽëD10RE-Gy,, +,qϽëD6,, +ۤjH,qϽëD9A-9CۤjH,, +|ҤjH,qϾBD3A|ҤjH,, +KѤjH,qϾQs14-16KѤjH,, +ñd,qϾQs18-20ñd,, +ȲӨȤjH,qϾQs22-24ȲӨȤjH,, +X,qϾQs30X,, +ѿA,qϾQs32-34ѿA,, +sf,qϿcND32sf,, +ӻOĤ@y,qϿӻO1ӻOĤ@y,, +hx,qϿ~D23hx,, +,qϿ~D3-4,, +Q,qnڨl11-11AQ,, +Ѧ,qnڨl13Ѧ,, +jH,qnڨl24-26jH,, +ɩ~,qnڨl55ɩ~,, +s¤jH,qHQ13-15s¤jH,, +Iӷ~,qHQ27Iӷ~,, +FjH,qHQ2FjH,, +HQjH,qHQ33HQjH,, +Ǥhx,qߪLD101Ǥhx,, +l,qߪLD21-23l,, +ڽjH,qߪLD22-32ڽjH,, +_,qߪLD2-6_,, +sw,qߪLD29C-29Dsw,, +Fʻ,qߪLD39Fʻ,, +Q¼,qߪLD41-43Q¼,, +_L,qߪLD67_L,, +A,qߪLD69A,, +μwj,qߪLD7-11μwj,, +Aw,qߪLD71Aw,, +T»,qߪLD73T»,, +_,qߪLD77_,, +ILb,qߪLD84ILb,, +,qߪLD86A-86D,, +ŷ,qߪLD86ŷ,, +AŤpv,qߪLD88AŤpv,, +_A,qߪLD89_A,, +ALb,qߪLD90ALb,, +QŤjH,qߪLD92QŤjH,, +ѪL,qߪLD94ѪL,, +ΤjH,qߪLD96ΤjH,, +ּzb,qߪLD98ּzb,, +Xӷ~jH,q\12-16Xӷ~jH,, +_ӷ~jH,q\18-20_ӷ~jH,, +@s,q\1@s,, +jH,q\23-41jH,, +THE WORKST@TION,q\43THE WORKST@TION,, +ӷ~jH,q\46ӷ~jH,, +s׼,q\52-60s׼,, +Ҵ,q¤sD17-23Ҵ,, +mr(pղ4y),q¤sD18mr(pղ4y),, +p,q¤sD18p,, +AjH,q¤sD3AjH,, +f֭b,q¤sD5f֭b,, +Ap,q¤sD5Ap,, +nQ,q¤sD6nQ,, +x,q¤sD8x,, +δ,q¤sD9δ,, +aؤjH,q|D10-12aؤjH,, +Z,q|D14-16Z,, +|,q|D17|,, +Shama Midlevels,q|D8Shama Midlevels.,, +BA,qùKڹD,, +Lb,qùKڹD101,, +,qùKڹD103,, +ťO,qùKڹD10ťO,, +A,qùKڹD125A,, +z,qùKڹD1z,, +,qùKڹD21,, +ֺb,qùKڹD22ֺb,, +j,qùKڹD27j,, +RؤjH,qùKڹD28RؤjH,, +QwjH,qùKڹD29QwjH,, +_ɤjH,qùKڹD30-32_ɤjH,, +ojH,qùKڹD36-40ojH,, +ysjH,qùKڹD39-41AysjH,, +ùKڪjH,"qùKڹD3B-3C,3F-3GùKڪjH",, +b,qùKڹD46-48b,, +³ӤjH,qùKڹD52³ӤjH,, +Hɻ,qùKڹD60Hɻ,, +_pɤjH,qùKڹD61_pɤjH,, +RIخx,qùKڹD62BRIخx,, +PMjH,qùKڹD63-67PMjH,, +żֶ,qùKڹD64żֶ,, +,qùKڹD68,, +Rb,qùKڹD69A-BRb,, +lO,qùKڹD70lO,, +h,qùKڹD71-73h,, +r,qùKڹD74r,, +ùKڤjH,qùKڹD77ùKڤjH,, +b,qùKڹD82b,, +E,qùKڹD83E,, +LjH,qùKڹD84LjH,, +R,qùKڹD88R,, +֫HO,qùKڹD8֫HO,, +R,qùKڹD90-92R,, +Ĥ@,qùKڹD95Ĥ@,, +ٵjH,qٵ3-4ٵjH,, +ٵ,qٵ5-5Aٵ,, +THE MOOD@SOHO,qٵ5BTHE MOOD@SOHO,, +ѻO,qٵ8-10ѻO,, +_jH,q_D14-16,, +ͭb,q_D1Aͭb,, +ѭb,q_D6ѭb,, +RjH,q_D8RjH,, +_,q_D11A_,, +_,q_D11B_,, +_s,q_D2B_s,, +I׻x,q_D2I׻x,, +,q_D5L-5P,, +_jH,q_D7C_jH,, +_wO,q_D8-9_wO,, +qӷ~jH,qĬC104qӷ~jH,, +ֿ,qĬC109ֿ,, +ӷ~j,qĬC110ӷ~j,, +UjH,qĬC111-115UjH,, +غ,qĬC130-132غ,, +sæwjH,qĬC17sæwjH,, +éӷ~jH,qĬC19-25éӷ~jH,, +ĬC,qĬC1ĬC,, +ao,qĬC3-5ao,, +ĬCӷ~jH,qĬC41-47ĬCӷ~jH,, +ث¤jH,qĬC84ث¤jH,, +𥻵jH,qĬC90𥻵jH,, +FQӷ~jH,qĬC91-97FQӷ~jH,, +࿳,qĬC94࿳,, +ŵoӷ~,qĬC99-101ŵoӷ~,, +nQӷ~jH,qۧ{17-19nQӷ~jH,, +ڼ,qۧ{2-3ڼ,, +ۼ,qۧ{5-6ۼ,, +ӷ~jH,qۧ{8-11ӷ~jH,, +EwjH,qK樽4EwjH,, +dɪ,qF,, +ܰa,qFIL7105عD180ܰa,, +¼w,qFIL7273wD18¼w,, +a,qFIL89718a,, +_FjH]@ΤG^_FjH,qFML705dF39]@ΤG^_FjH,, +IjH,qFSIL126nd2IjH,, +wּ,qFSIL512ut28wּ,, +p,qFSIL549_2p,, +ּ,qFSIL682We112-114ּ,, +ӴN,qFϑoF121ӴN,, +Ӧ,qFϑoF122Ӧ,, +Ӷ,qFϑoF123Ӷ,, +Q,qFϤCnfD10-12Q,, +IjH,qFϤCnfD106-110IjH,, +ؤjH,qFϤCnfD116-122ؤjH,, +_jH,qFϤCnfD126-128B_jH,, +FؤutjHA-Dy,qFϤCnfD196-202FؤutjHA-Dy,, +b,qFϤCnfD2-8b,, +XjH,qFϤCnED112-114XjH,, +غֻ,qFϤCnED124غֻ,, +jH,qFϤCnED14-16jH,, +_,qFϤCnED18_,, +d d,qFϤCnED190-192d d,, +d d,qFϤCnED190-192d d,, +QutjH,qFϤCnED206-208QutjH,, +jH,qFϤCnED25-31jH,, +Ia,qFϤCnED28Ia,, +~jH,qFϤCnED30-36~jH,, +,qFϤCnED5-13,, +ڦw,qFϤj۵17ڦw,, +j,qFϤj۵19-23Aj,, +sAb,qFϤjD200,, +λAb,qFϤpWD16,, +I,qFϤpWD18I,, +Iɪ,qFϤpWD23Iɪ,, +Wbq,qFϤpWD28,, +IY,qFϤpWD9IY,, +ؤjH,qFϤut2-4ؤjH,, +ha,qFϤut30ha,, +KW,qFϤut7-9,, +,qFϤD18,, +ͺֶ,qFϤD44-58ͺֶ,, +B,qFϤD51-61B,, +Lx,qFϤѦZqD108-114Lx,, +pjHA1y,qFϤѦZqD144-158pjHϢyA1 y,, +ʺ֪,qFϤѦZqD151-173,, +,qFϤѦZqD17,, +u,qFϤѦZqD19-21u,, +z,qFϤѦZqD200z,, +ãp,qFϤѦZqD202-216,, +x,qFϤѦZqD25-29x,, +gخx,qFϤѦZqD31gخx,, +ѦZqDI,qFϤѦZqD33ѦZqDI,, +ض,qFϤѦZqD37-39Aض,, +ѦZqDAr,qFϤѦZqD41ѦZqDAr,, +к֭b,qFϤѦZqD63к֭b,, +dwjH,qFϤѦZqD95-97dwjH,, +b,qFϤѦZqD96-102b,, +ӥjP,qFϤӥjD10ӥjP,, +ӥjFs,qFϤӥjD11ӥjFs,, +ӥjģP,qFϤӥjD14ӥjģP,, +ӥjP,qFϤӥjD16ӥjP,, +ӥjؤs,qFϤӥjD17ӥjؤs,, +ӥjaѻ,qFϤӥjD18Aӥjaѻ,, +ӥjhѻ,qFϤӥjD18Bӥjhѻ,, +ӥjnѻ,qFϤӥjD18Cӥjnѻ,, +ӥj_s,qFϤӥjD1ӥj_s,, +ӥjc,qFϤӥjD20ӥjc,, +ӥjss,qFϤӥjD21-23ӥjss,, +ӥjc,qFϤӥjD22ӥjc,, +ӥjs,qFϤӥjD23ӥjs,, +ӥjLc,qFϤӥjD24ӥjLc,, +ӥjIs,qFϤӥjD25ӥjIs,, +ӥj~c,qFϤӥjD26ӥj~c,, +ӥjw,qFϤӥjD28ӥjw,, +ӥjӴ,qFϤӥjD2ӥjӴ,, +ӥjc,qFϤӥjD31ӥjc,, +ӥjns,qFϤӥjD3-5ӥjns,, +׻p,qFϤӥjD39β16׻p,, +ӥj}x,qFϤӥjD4ӥj}x,, +ӥjcs,qFϤӥjD5-7ӥjcs,, +ӥjI,qFϤӥjD6ӥjI,, +ӥjs,qFϤӥjD7-9ӥjs,, +ӥjF,qFϤӥjD8ӥjF,, +ӥjѤs,qFϤӥjD9ӥjѤs,, +ӥj,qFϤӥjWD10ӥj,, +ӥjmѻ,qFϤӥjWD11ӥjmѻ,, +ӥjIѻ,qFϤӥjWD13ӥjIѻ,, +ӥjѻ,qFϤӥjWD15ӥjѻ,, +ӥj?,qFϤӥjWD16ӥj?,, +ӥjҤѻ,qFϤӥjWD17ӥjҤѻ,, +ӥj_,qFϤӥjWD1ӥj_,, +ӥj񷨻,qFϤӥjWD22ӥj񷨻,, +ӥjA_,qFϤӥjWD24ӥjA_,, +ӥjCQ,qFϤӥjWD26ӥjCQ,, +ӥjK,qFϤӥjWD2ӥjK,, +ӥj,qFϤӥjWD6ӥj,, +ӥjŻ,qFϤӥjWD8ӥjŻ,, +UWw,qFϤӦw,, +hW,qFϤӦw28,, +ŦW,qFϤӱd38ŦW,, +Ӽּ,qFϤӲ2Ӽּ,, +(ӴI),qFϤӴI15-19 / KWD48(ӴI),, +pT,qFϤӴI2-4pT,, +ӥj_w,qFϤӸθ1ӥj_w,, +ӥjc,qFϤӸθ2ӥjc,, +ӥjw,qFϤӸθ5ӥjw,, +ӥjئw,qFϤӸθ7ӥjئw,, +ӥjw,qFϤӸθ9ӥjw,, +ӹ,qFϤӹ2A-2Bӹ,, +ʧQ~(ӹ),qFϤӹ3ʧQ~(ӹ),, +ӥjѬP,qFϤӺa1ӥjѬP,, +ӥjn,qFϤӺa2ӥjn,, +ӥjڬP,qFϤӺa3ӥjڬP,, +Ӽֵ9-11,qFϤӼֵ9-11,, +ӥjȬP,qFϤ׸1ӥjȬP,, +ӥjѻ,qFϤ׸2ӥjѻ,, +ӥjP,qFϤ׸3ӥjP,, +ӥjs,qFϤ׸5ӥjs,, +ӥjɤs,qFϤ׸7ӥjɤs,, +"v,ĤTvӡ]ĤT^","qFϤճD16-18v,ĤTvӡ]ĤT^",, +"jH,Ĥ@jH]Ĥ@^Ay","qFϤճD1-7jH,Ĥ@jH]Ĥ@^Ϯy",, +"v,ĤGvӡ]ĤG^","qFϤճD26-72v,ĤGvӡ]ĤG^",, +ŹBjH,qFϤ10-16ŹBjH,, +¤jH,qFϤ17-29¤jH,, +jH,qFϤ7-15jH,, +Wx,qFϥ_xsD,, +EjH,qFϥ_D11-13EjH,, +Ŷ,qFϥ_D14A-14CŶ,, +_p,qFϥ_D19-21A_p,, +i,qFϥ_D2-4i,, +MIx,qFϥ_D33MIx,, +BjH,qFϥ_D8BjH,, +_x,qFϥ_O1_x,, +sw,qFϥå1sw,, +Wu~,qFϥîD,, +Ab,qFϥîD63Ab,, +Fu~,qFϦNӵ12Fu~,, +NӤjH,qFϦNӵ8NӤjH,, +sפ,qFϦw~1sפ,, +su~jH,qFϦw~3su~jH,, +Iw,qFϦw1-3Iw,, +qPF18,qFϦw18-36qPF18,, +j,qFϦw2A-2Bj,, +I,qFϦw9-13I,, +_x,qFϦʺֹD_x,, +w~jH,qFϦWe100-104w~jH,, +Wej,qFϦWe110-110CWej,, +U,qFϦWe122-124U,, +WeQjH,qFϦWe129-133WeQjH,, +,qFϦWe130-132,, +,qFϦWe134-136,, +W,qFϦWe138-140W,, +,qFϦWe14-20,, +ͽ,qFϦWe152-154ͽ,, +B,qFϦWe164-166B,, +WeFjH,qFϦWe17-19WeFjH,, +FQ,qFϦWe172-174FQ,, +ک,qFϦWe22-28ک,, +IY,qFϦWe23IY,, +Q,qFϦWe35-37Q,, +H,qFϦWe4-4AH,, +WjH,"qFϦWe5,5A-7WjH",, +QjH(We),qFϦWe58-60QjH(We),, +,qFϦWe70-72,, +øηjH,qFϦWe74-80øηjH,, +ga,qFϦWe8ga,, +󦨤utjH,qFϦWe9-11󦨤utjH,, +wjH,qFϦWe92-98wjH,, +hN~,qFϦWO18hN~,, +ôߤu~jH,qFϧQ12ôߤu~jH,, +wjH,qFϧQ14-16wjH,, +QܤjH,qFϧQ18QܤjH,, +FTs,qFϧQ24FTs,, +(W)u~jH,qFϧQ26(W)u~jH,, +wu~jH,qFϧQ27wu~jH,, +wu~jH,qFϧQ28wu~jH,, +HˤutjH,qFϧQ30-32HˤutjH,, +_utjH,qFϧQ33_utjH,, +_]F^u~,qFϧQ34_]F^u~,, +ru~j,qFϧQ37ru~j,, +Iۤu~jH,qFϧQ40Iۤu~jH,, +ujH,qFϧwD2-12ujH,, +ػ,qFϨʵعD1-3ػ,, +ʵؼ,qFϨʵعD5-7ʵؼ,, +IQӤjH,qFϨʵعD9-27IQӤjH,, +MIj,qFϩMID128-132MIj,, +ujH(MID),qFϩMID20-36ujH(MID),, +MI,qFϩMID21-53,, +שjH,qFϩMID38-48שjH,, +sMIjH,qFϩMID68-72sMIjH,, +_,qFϩMID74-82_,, +(MID)ȽjH,qFϩMID84-94(MID)ȽjH,, +ΤjH,qFϩMID96-106ΤjH,, +jH(}ڹD),qFϩ}ڹD2-8jH(}ڹD),, +ɻAb,qFϩɲ1ɻAb,, +,qFϩ19-23,, +b,qFϩ2-6b,, +?,qFϩ28?,, +ɻ,qFϩ36ɻ,, +Ϋ~,qFϩ38Ϋ~,, +n]jH,qFϩ7-9n]jH,, +PqsDΤjH,qFϪFD3PqsDΤjH,, +FTs,qFϪFTs,, +ujH(⥧),qFϪ⥧22-26ujH(⥧),, +^jH,qFϪ⥧2D-2H^jH,, +¼,qFϪص12-18¼,, +u,qFϪص20-22 / 涩13-15u,, +Aؤj(KWFj),qFϪص2-10Aؤj(KWFj),, +ػ,qFϪص24ػ,, +صõؤjH,qFϪص26-30صõؤjH,, +Id,qFϪص35-37Id,, +MjH(Rǵ),qFϪص46-58ηRǵ22-26MjH(Rǵ),, +aؼ,qFϪص49-51aؼ,, +(ص),qFϪص53-55(ص),, +صO,qFϪص57-59صO,, +صؼ,qFϪص61-67صؼ,, +Ŧwb,qFϪd12Ŧwb,, +Ѽ,qFϪd20 & 22Ѽ,, +׵ؤjH,qFϪd21-23B׵ؤjH,, +u~jH,qFϪ8u~jH,, +q귽,qFϪD18q귽,, +Ṳ̄KjH,qFϪD3Ṳ̄KjH,, +p@u~jH,qFϪD4p@u~jH,, +F,qFϪD5F,, +snu~jH,qFϪD6snu~jH,, +붮L궰ΤjH,qFϪD8붮L궰ΤjH,, +õؤjH,qFϫnw23õؤjH,, +ŸΤjH,qFϫnw3ŸΤjH,, +jH,qFϫnw67-71jH,, +wּ,qFϫnw73wּ,, +XajH,qFϫnw75XajH,, +wӷ~,qFϫnw83wӷ~,, +UjH,qFϫnw93UjH,, +nw,qFϫnw95nw,, +~,qFϫnw99~,, +꿳,qFϫnd1-3꿳,, +KWs,qFϫnd17KWs,, +dؤjH,qFϫnd18dؤjH,, +qO,qFϫD 28qO,, +L,qFϫصص,, +T,qFϫصص14-16T,, +ֵجv,qFϫصص17-19ֵجv,, +Ť,qFϫصص1-7Ť,, +tzBy,qFϫصص18-26tzBy,, +©,qFϫصص21-27©,, +صت,qFϫصص2-8صت,, +av,qFϫصص28av,, +öjH,qFϫصص9öjH,, +_jH,qFϬK102-108_jH,, +ha,qFϬK128ha,, +KywjH,qFϬK55-71KywjH,, +ظ۬v,qFϬK70-74ظ۬v,, +qjH,qFϬK91 A-BqjH,, +QjH,qFϬK94-96QjH,, +ʹż,qFϬf[sD10-12ʹż,, +f[,qFϬf[sD14-16f[,, +fx2y,qFϬf[sD6-8fx2y,, +ʮp,qFϬxsD28ʮp,, +IA,qFϬxsD32IA,, +jH,qFϬxsD5-13jH,, +_jH,qFϭ^ӹD,, +RjH,qFϭ^ӹD,, +_pAy,qFϭ^ӹD,, +,qFϭ^ӹD1026,, +s,qFϭ^ӹD1028s,, +֩,qFϭ^ӹD1032-1044֩,, +qjH,qFϭ^ӹD1046qjH,, +qojH,qFϭ^ӹD1048qojH,, +Iq,qFϭ^ӹD1063Iq,, +FF,qFϭ^ӹD1065FF,, +u~jH,qFϭ^ӹD1067u~jH,, +ds,qFϭ^ӹD1128ds,, +^ӹDūHjHAy,qFϭ^ӹD117-121^ӹDūHjHAy,, +,qFϭ^ӹD125-133,, +^ӤjH,qFϭ^ӹD153^ӤjH,, +Xӷ~jH,qFϭ^ӹD157Xӷ~jH,, +ʳjH,qFϭ^ӹD159-161ʳjH,, +DjH,qFϭ^ӹD165-175DjH,, +^Ӥ,qFϭ^ӹD193-203^Ӥ,, +dA,qFϭ^ӹD238dA,, +곣s,qFϭ^ӹD255곣s,, +njH,qFϭ^ӹD257-273njH,, +~jH,qFϭ^ӹD26-36~jH,, +QjH,qFϭ^ӹD268-270QjH,, +nѤjH,qFϭ^ӹD275nѤjH,, +ӳ|jH,qFϭ^ӹD277-291ӳ|jH,, +_ߤjH^?RjDӳ,qFϭ^ӹD278-288_ߤjH^?RjDӳ,, +sɥNs,qFϭ^ӹD278-288sɥNs,, +梮cjH,qFϭ^ӹD293-299梮cjH,, +RcjH,qFϭ^ӹD301-319RcjH,, +ؤjH,qFϭ^ӹD310-316ؤjH,, +w,qFϭ^ӹD310Aw,, +ڭ^jH,qFϭ^ӹD318-328ڭ^jH,, +ӫajH,qFϭ^ӹD321ӫajH,, +jH,qFϭ^ӹD330-332jH,, +CjH,qFϭ^ӹD334-336CjH,, +ڥͥ_jH,qFϭ^ӹD335-341ڥͥ_jH,, +s2,qFϭ^ӹD338s2,, +sFjH,qFϭ^ӹD343-349AsFjH,, +Ƚ,qFϭ^ӹD351-353Ƚ,, +ίqjH,qFϭ^ӹD363-365ίqjH,, +ؤjH,qFϭ^ӹD370-374ؤjH,, +,qFϭ^ӹD375-377,, +^ӹDR,qFϭ^ӹD376-380^ӹDR,, +֭^jH,qFϭ^ӹD379-381֭^jH,, +سjH,qFϭ^ӹD382-384سjH,, +_ӷ~jH,qFϭ^ӹD383-385_ӷ~jH,, +_ӷ~jH,qFϭ^ӹD388_ӷ~jH,, +ݴqOoijH,qFϭ^ӹD389ݴqOoijH,, +ȬwjH,qFϭ^ӹD390-394ȬwjH,, +ȦFϤjH,qFϭ^ӹD391ȦFϤjH,, +ajH,qFϭ^ӹD395ajH,, +d¤jH,qFϭ^ӹD406d¤jH,, +jH,qFϭ^ӹD413-421jH,, +sjH,qFϭ^ӹD416-430sjH,, +wjH,qFϭ^ӹD425wjH,, +]YjH,qFϭ^ӹD435]YjH,, +~cjH,qFϭ^ӹD441-447~cjH,, +jH,qFϭ^ӹD442-452jH,, +ؿjH,qFϭ^ӹD449-455ؿjH,, +^jH,qFϭ^ӹD457-459^jH,, +ֹŤ߲Ĥ@y,qFϭ^ӹD466ֹŤ߲Ĥ@y,, +vBy,qFϭ^ӹD480vBy,, +w,qFϭ^ӹD482w,, +F_jH (^ӹD),qFϭ^ӹD483-497F_jH (^ӹD),, +^ػ,"qFϭ^ӹD486, 488^ػ",, +_u~jH,qFϭ^ӹD499,, +db,qFϭ^ӹD52db,, +ª,qFϭ^ӹD560ª,, +dRb,qFϭ^ӹD56dRb,, +dֶ,qFϭ^ӹD60dֶ,, +_ۼ(^ӹD),qFϭ^ӹD614-628_ۼ(^ӹD),, +ɴjH(^ӹD),qFϭ^ӹD630ɴjH(^ӹD),, +zp,qFϭ^ӹD632zp,, +פ,qFϭ^ӹD651פ,, +FutjH,qFϭ^ӹD653-655,, +lI~dHs,qFϭ^ӹD663-665lI~dHs,, +dؤG dY,qFϭ^ӹD668dؤG dY,, +dؤG d,qFϭ^ӹD668dؤG d,, +dؤG dӻ,qFϭ^ӹD668dؤG dӻ,, +^ӹDaؤu~jH,qFϭ^ӹD677^ӹDaؤu~jH,, +رd,qFϭ^ӹD68رd,, +ͨj,qFϭ^ӹD734-738ͨj,, +sjH,qFϭ^ӹD842-850sjH,, +RjH,qFϭ^ӹD860-878RjH,, +Rؼ,qFϭ^ӹD867-881Rؼ,, +I,qFϭ^ӹD885-891I,, +jH,qFϭ^ӹD893-899jH,, +ثH,qFϭ^ӹD898ثH,, +^RAy,qFϭ^ӹD901-907^RAy,, +^RBy,qFϭ^ӹD901-907^RBy,, +^RDy,qFϭ^ӹD901^RDy,, +sӻO,qFϭ^ӹD933sӻO,, +_s,qFϭ^ӹD951-953_s,, +fڻ,qFϭ^ӹD955-957fڻ,, +h_,qFϭ^ӹD965-965Ah_,, +^Ӥj,qFϭ^ӹD969-971^Ӥj,, +ӥj{פjH,qFϭ^ӹD979 / 22ӥj{פjH,, +ӥj{hjH,qFϭ^ӹD979ӥj{hjH,, +ӥj{L֤jH,qFϭ^ӹD979ӥj{L֤jH,, +ӥj{djH,qFϭ^ӹD979ӥj{djH,, +ӥj{qTjH qTլ줤,qFϭ^ӹD979ӥj{qTլ줤,, +dMjH,qFϭ^ӹD979dMjH,, +h,qFϭ^ӹD985-987h,, +s¶,qFϭ^ӹD989s¶,, +oQ,qFϭ^ӹD993oQ,, +_QjH,qFϭ^ӹD995_QjH,, +Ab,qFϮpD8Ab,, +껫jH,qFϮѧ26-28껫jH,, +بjH,qFϮѧ27BبjH,, +»ղ,qFϮWD111»,, +»ժF䫰,qFϮWD111»ժF䫰,, +¼s,qFϮWD111¼s,, +خjH,qFϮWD220خjH,, +sA,qFϮWD233sA,, +ģjH,qFϮWD27ģjH,, +bjH,qFϮWD29bjH,, +çQ,qFϮWD333,, +w~,qFϮWD341w~wؼ,, +v,qFϮWD345v,, +ְaO,qFϮWD350ְaO,, +WR,qFϮWD392WR,, +Iw,qFϮWD394Iw,, +I,qFϮWD396I,, +Ĥ@Ȭws,qFϮWD399Ĥ@Ȭws,, +ֻAx()1y,qFϮ11-15ֻAx(),, +dAO,qFϮ4dAO,, +b,qFϮ,, +~¤jH(),qFϮ11~¤jH(),, +h_,qFϮ18-24h_,, +׼,qFϮ26-36׼,, +F,qFϮ˵38F,, +w,qFϮ˵50w,, +§LjH,qFϮ˵5-7§LjH,, +ت@jH,qFϮ˵9-15ت@jH,, +h_,qFϮd11-17h_,, +h_,"qFϮ2,2A-4 / ⥧2J-2M / d1 / 4h_",, +sjH,qFϮ6-16sjH,, +F䤤,qFϮA28F䤤,, +ķs,qFϮW,, +s,qFϮW1s,, +źajH(W),qFϮW4-6źajH(W),, +Ws,qFϮW9-29Ws,, +d1y,qFϯ38d颰y,, +dĤGy,qFϯ38dĤGy,, +Aba,qFϯA10-12Aba,, +AbAy,qFϯA9AbAy,, +ҨjH,qFϰ_D18ҨjH,, +_DU_jH,qFϰ_D1R_DU_jH,, +ضפ,qFϰ_D28ضפ,, +_~,qFϰ_D2F-2H_~,, +_,qFϰ_D33_,, +_D§jH,qFϰ_D62-76_D§jH,, +d֤jH,qFϰ_D77-87d֤jH,, +d1-11,qFϰd1-11,, +jH,qFϰdF23-25jH,, +n׷s?,qFϰQ{,, +?bd?,qFϰQ,, +h,qFϰQ1-3h,, +ӦN,qFϰQ7ӦN,, +oF,qFϱ`w77oF,, +,qFϱd4,, +I,qFϱd6I,, +ظλ,qFϱd8ظλ,, +sOu~jH,qFϱd10sOu~jH,, +du~,qFϱd2du~,, +W,qFϱd3W,, +Uפu~jH,qFϱd6Uפu~jH,, +d,qFϱdf|10d,, +Ӳ,qFϱd2Ӳ,, +Ӷ,qFϱd4Ӷ,, +ӴI,qFϱd6ӴI,, +ӱd,qFϱd8ӱd,, +d,qFϱdֻO1d,, +d,qFϱdֻO6d,, +f,qFϱdֻO7Af,, +db,qFϱdֻO7db,, +XutjH,qFϱ涩1XutjH,, +MؤjH,qFϲMص1-3MؤjH,, +I,qFϲMص18-24I,, +MuO,qFϲMص4-8MuO,, +ִ,qFϲMص5ִ,, +?,qFϲD100?,, +2y,qFϲD1002y,, +Pu~jH,qFϲQ17Pu~jH,, +pou~jH,qFϲQ19pou~jH,, +ȬP,qFϲQ26ȬP,, +T,qFϲQ29-31T,, +Upu~jH,qFϲQ7Upu~jH,, +ؤu~jH,qFϲ10-12ؤu~jH,, +طHu~jH,qFϲ8طHu~jH,, +ط~,qFϳsD14-32ط~,, +֤jH,qFϳsD4-12AD120֤jH,, +fjH,qFϳS10-16fjH,, +jH,qFϳS11-17jH,, +ذjH,qFϳS18-20ذjH,, +,qFϳS19-19A,, +Ŭv,qFϳS21-23Ŭv,, +Sj,qFϳS25-27Sj,, +_Av,qFϳS28-34A_Av,, +_jH,qFϳS33_jH,, +خjH,qFϳS3-5خjH,, +¤jH,qFϳS36-38¤jH,, +IAa,qFϳS38AIAa,, +ɮav,qFϳS41-43ɮav,, +ɷsjH,qFϳS42-46AɷsjH,, +,qFϳS48-52,, +_פjH(S),qFϳS49-55_פjH(S),, +ɪ@v,qFϳS54-60ɪ@v,, +_v,qFϳS57-59_v,, +_p,qFϳS61_p,, +ʨλ,qFϳS62-64ʨλ,, +رdjH,qFϳS6-8رdjH,, +,qFϳS7-9,, +_,qFϴf19_,, +,qFϴf25,, +ذӷ~,qFϴعD124-132ذӷ~,, +ū¤jH(عD),qFϴعD146-166ū¤jH(عD),, +ؤjH,qFϴعD188-194ؤjH,, +?ӷ~jH,qFϴعD18?ӷ~jH,, +ŵذڤ,qFϴعD191ŵذڤ,, +ŴIjH(عD),qFϴعD196-202ŴIjH(عD),, +x,qFϴعD28x,, +ΤjH,qFϴعD33-35ΤjH,, +å,qFϴعD3-5å,, +䤤طѮ𦳭q,qFϴعD363䤤طѮ𦳭q,, +Mؼ,qFϴعD37-39Mؼ,, +ſjH,qFϴعD41-47ſjH,, +ģjH,qFϴعD42-48ģjH,, +JҤjH,qFϴعD52-60AJҤjH,, +մI(عD),qFϴعD55մI(عD),, +K,qFϴعD57-59K,, +ئjH,qFϴعD61 & 63ئjH,, +عDojH,qFϴعD62-68عDojH,, +MjH,qFϴعD70MjH,, +oӤj,qFϴعD88-94oӤj,, +¨ӷ~,qFϴعD8¨ӷ~,, +»,qFϵ^26»,, +ة,qFϵ^2A-2Bة,, +R^a,"qFϵ^2C, 2DR^a",, +_n,qFϵ^4_n,, +,qFϵ,, +qF,qFϵ18qF,, +׺ab,qFϵ1׺ab,, +,qFϵ20,, +jӷ~,qFϵ25jӷ~,, +fwb,qFϵ4fwb,, +ؼ,qFϵѤD9-23ؼ,, +Dx,qF϶D31Dx,, +Ѯp,qF϶D35Ѯp,, +x,qF϶D38x,, +ɩMb,qF϶D39ɩMb,, +x,qF϶D40x,, +,qF϶D41,, +,qF϶D43-49,, +Uw,qF϶D46Uw,, +IR,qF϶D50IR,, +"B, Cy","qF϶D51-67B, Cy",, +D,qF϶D56D,, +?jH,qF϶D60?jH,, +sQjH,qFϷR6-50sQjH,, +Fܭb,qFϷRHD33Fܭb,, +RǼ,qFϷRǵ1-3RǼ,, +Fb,qFϷR8Fb,, +RW,qFϷR§2RW,, +at(ĤG)u~jH,qFϷsw4at(ĤG)u~jH,, +R(s),qFϷs22R(s),, +ָsjH,qFϷs2ָsjH,, +s,qFϷs8s,, +su~jH,qFϷs~11su~jH,, +lu~jHAy,qFϷs~5lu~jHAy,, +wOu~,qFϷs~6wOu~,, +󿳤u~jH,qFϷs~7󿳤u~jH,, +Kӷ~s,qFϷs~8Kӷ~s,, +s~jH,qFϷs~9s~jH,, +QŤ,qFKsD361QŤ,, +wּ,qFKWjF15wּ,, +RFb,qFKWFj,, +FjH,qFKWFj118-124FjH,, +KWFjojH,qFKWFj11KWFjojH,, +qwj,qFKWFj121-131qwj,, +F(KWFj),qFKWFj133-137F(KWFj),, +KWn,qFKWFj134KWn,, +,qFKWFj138-142,, +Fd(KWFj),qFKWFj139Fd(KWFj),, +jH(KWFj),qFKWFj141-151jH(KWFj),, +Fj,qFKWFj144-148 ut10-14Fj,, +FjH,qFKWFj159-167FjH,, +F,qFKWFj169-171F,, +翳,qFKWFj173-175翳,, +FjH,qFKWFj177-183FjH,, +KW,qFKWFj185-189 / ut6-8KW,, +F,qFKWFj18F,, +FjH(KWFj),qFKWFj28-40AFjH(KWFj),, +FӼ(KWFj),qFKWFj31-33FӼ(KWFj),, +F_jH,"qFKWFj4,8,10F_jH",, +FW,qFKWFj51FW,, +FjjH,qFKWFj54-60FjjH,, +F¤jH,qFKWFj59-99F¤jH,, +sH,qFKWFj76sH,, +jH,qFKWFj94-112jH,, +qĤ@y,qFKWWD 33??? qĤ@y,, +I,qFKWD106-108I,, +Y,qFKWD111Y,, +KWD_jH,qFKWD121-131KWD_jH,, +IΤ,qFKWD138IΤ,, +j,qFKWD142-146j,, +ӪFlΦl,"qFKWD152, 154ӪFlΦl",, +APF,qFKWD157APF,, +ؼּ,qFKWD162-164ؼּ,, +|j,qFKWD195-201|j,, +֩ɤjH(KWD),qFKWD220-228֩ɤjH(KWD),, +P(KWD),qFKWD230-232P(KWD),, +֪@jH,qFKWD234-238֪@jH,, +snjH,qFKWD239AsnjH,, +I,qFKWD240-242I,, +UdjH,qFKWD241-249UdjH,, +sa,qFKWD246-254sa,, +j,qFKWD251-261j,, +_jH,qFKWD260-264_jH,, +KWDnؤjH,qFKWD269-271KWDnؤjH,, +ź֤jH,qFKWD289-293ź֤jH,, +KWsj,qFKWD290-294KWsj,, +֤jH(KWD),qFKWD300֤jH(KWD),, +Qӷ~jH,qFKWD30-36Qӷ~jH,, +A,qFKWD305A,, +sqjH,qFKWD306-310sqjH,, +w,qFKWD307-309w,, +ӷ~,qFKWD324ӷ~,, +dj,qFKWD326-332dj,, +RWjH,qFKWD33-35 / ӱd1RWjH,, +ֿİa,qFKWD333ֿİa,, +KWD_jH,qFKWD334-336KWD_jH,, +Qo,qFKWD352-354Qo,, +FQ,qFKWD356-358FQ,, +Wخx,qFKWD368Wخx,, +KWDÿj,qFKWD374-380KWDÿj,, +qjH,qFKWD382-386qjH,, +ذjH,qFKWD38-44ذjH,, +{jH,qFKWD388-414{jH,, +Ij,qFKWD416-426Ij,, +FwjH,qFKWD428-432EFwjH,, +wjH,qFKWD50-54wjH,, +We,qFKWD66-68We,, +sQj,qFKWD82-84sQj,, +,"qFKWD88-90,90A",, +~jH,qFKWD92-102~jH,, +EjH,qFϸtQr|38EjH,, +?yjH,qFϹqD166-168?yjH,, +d,qFϹqD169d,, +ʮaQ,qFϹqD180ʮaQ,, +ͨs,qFϹqD183ͨs,, +,qFϹqD233,, +سͤjHBy,qFϹqD254-280سͤjHBy,, +qu~jH,qFϹŷ~10qu~jH,, +ʼ֪jH,qFϹŷ~12ʼ֪jH,, +u~,qFϹŷ~18u~,, +wfܤu~jH,qFϹŷ~56wfܤu~jH,, +ۿjH,qFϹI3ۿjH,, +Ѯcx,qFϺM1-17Ѯcx,, +Mb,qFϺM28Mb,, +Q,qFϺ֤7 AND 9 / ^ӹD183Q,, +p鰪p,qFϺֽD5p鰪p,, +ʹjH,qFϼqF5-11ʹjH,, +Ab,qFϾA7Ab,, +Ib,qFϿ}D5-7Ib,, +yw,qFϿ,, +ش,qFϿ38-44ش,, +jH,qFϿ46-48jH,, +ÿ,qFϿ50ÿ,, +qb(),qFϿ54qb(),, +Ѽs,qFϿ68Ѽs,, +FojH,qFA̵,, +A,qFA̵11A,, +E֤j,qFA̵40-78E֤j,, +jӲĤ@,qFخ,, +jH,qFخ1-15jH,, +׷~~,qF׷~10׷~~,, +ҤOu~jHBLOCK B,qF׷~12ҤOu~jHBLOCK B,, +ģQĤCu~jH,qF׷~2ģQĤCu~jH,, +ӦPu~jH,qF׷~4ӦPu~jH,, +ز,qF׷~5ز,, +Ӻau~jH,qF׷~6Ӻau~jH,, +ȤjH,qF׷~8ȤjH,, +mp,qF_1mp,, +FؤT|u|AȤj,qF_6FؤT|u|AȤj,, +_s,qF_sD1,, +תL ,qF_sD24-26תL,, +,qF_sD2,, +ɦjH,qF_sD33ɦjH,, +_jH,qF_sD4_jH,, +BjH,qF~x15-16BjH,, +,qF~x17-18,, +NQv,qF~36NQv,, +M(~),qF~50M(~),, +sH,qF~54sH,, +I,qF~O3-4,, +Fb,qFģD28Fb,, +F@bBy,qFģD33F@bBy,, +F@b@Ay,qFģD33F@b@Ay,, +FQb,qFģD38FQb,, +F׼s,qFģD3F׼s,, +FMb,qFģD63FMb,, +FYbaY,qFģD68FYbaY,, +FYbwY,qFģD68FYbwY,, +PWp,qFģD88PWp,, +,qn,, +nWs,qn,, +`Wa,qnAPIL128n?w|3`Wa,, +ѯ,qnIL623ѯD25-27ѯ,, +Ab,qnRBL1033Ab,, +Qf,qnRBL899ؤsD18Qf,, +s,qnϤjD88,, +ʻ,qnϤjD,, +j,qnϤjD11j,, +ʭb,qnϤjD17ʭb,, +M,qnϤjD18M,, +ܻ,qnϤjD27ܻ,, +^,qnϤjD38^,, +tIW,qnϤjD60tIW,, +gۻ,qnϤjD9gۻ,, +s^u~,qnϥW|9s^u~,, +Ŷb,qnϥWǹD33Ŷb,, +,qnϥWǹD79,, +W`,qnϥW11-15W`,, +s,qnϥյsD12s,, +өW,qnϥյsD8өW,, +sqjH,qnϥ۱WD40sqjH,, +IAjH,qnϥ۱WD48-54IAjH,, +jּ,qnϥ۱WD53-53Cjּ,, +?jH,qnϥ۱WD55-61?jH,, +ӤjH,qnϥ۱WD56-62ӤjH,, +ئw,qnϥ۱WD71-73ئw,, +n,qnϥ۱WD80n,, +ujH,qnϥ۱WD81ujH,, +n26-28,qnϦn26-28,, +ūj,qnϦD10ūj,, +ZjH,qnϦD14-18ZjH,, +KߤjH,qnϦD20-28KߤjH,, +Q䤤,qnϦD38Q䤤,, +ʨ}jH,qnϧQD7ʨ}jH,, +n?w,qnϧQKD138n?w,, +ojH,qnϧQKD145ojH,, +٪u~,qnϧQnD111,, +sɼs,qnϧQa2sɼs,, +WuT,qnϧQֵ2WuT,, +WuT,qnϧQ10WuT,, +,qnϨFŹD42,, +d,qnϨFŹD45d,, +ʦXb,qnϨFŹD46ʦXb,, +RO,qnϨFŹD50-52RO,, +F,qnϨWj118F,, +Ӽ,qnϨWj126Ӽ,, +^o,qnϨWj130-132^o,, +ģɻ,qnϨWj13ģɻ,, +,qnϨWj1,, +F,qnϨWj2-6F,, +۽,qnϨWj30A۽,, +ͺa,qnϨWj34-38ͺa,, +^jH,qnϨWj48-50^jH,, +͸ۼ,qnϨWj52-56͸ۼ,, +s,qnϨWj55-57s,, +M׼,qnϨWj5-5AM׼,, +~~,qnϨWj5B~~,, +M׼,qnϨWj5M׼,, +ή,qnϨWj8ή,, +w,qnϨWj90Aw,, +ѧO,qnϨWj92ѧO,, +ҫp,qnϨWD25ҫp,, +l,qnϨWD18l,, +VISTA STANLEY,qnϨWD20-20BVISTA STANLEY,, +GROSSE POINTE VILLA,qnϨWD4-4AGROSSE POINTE VILLA,, +A,qnϨWD49A,, +O,qnϨWD66OֺzO,, +h~,qnϨWD7h~,, +MwQ,qnϨWD80MwQ,, +_,qnϨWD9_,, +Y~,qnϨW^D3Y~,, +綮,qnϨW^D8綮,, +W,qnϨW^D9W,, +nw,qnϨWs11nw,, +δ,qnϨWs15δ,, +W,qnϨWyD16W,, +߽,qnϨWyD22߽,, +Jf,qnϨWyD8Jf,, +KO,qnϨWyD9A-9B&11A-11BKO11A-11B,, +s,qnϨάD12s,, +άD20,qnϨάD20,, +qO,qnϨάD4-8AqO,, +sx,qnϩɫn33,, +Ԭհӷ~jH,qnϪFӹD10Ԭհӷ~jH,, +FAIRWINDS 29,qnϪFYWD29-31FAIRWINDS 29,, +FAIRWINDS 31,qnϪFYWD29-31FAIRWINDS 31,, +Ba,qnϪFYWD2Ba,, +,qnϪFYWD33,, +Rb,qnϪ19-21Rb,, +Ѫ,qnϪ22-24Ѫ,, +yb,qnϪ23yb,, +o,qnϪ9o,, +aûO,qnϫaûO,, +q,qnϫaûO21q,, +R,qnϫaûO4R,, +BISNEY VILLA,qnϫaûO7-13BISNEY VILLA,, +_2y,qnϫnԤsD8_颱y,, +J߬,qnϫn,, +nW,qnϫnW{33nW,, +dn,qnϫnW{45dn,, +nWs?,qnϫnW{4nWs?,, +,qnϫnWD10,, +,qnϫnWD12,, +THE NAUTILUS,qnϫnWD16ATHE NAUTILUS,, +PO,qnϫnWD19PO,, +db,qnϫnWD21db,, +O,qnϫnWD23-25O,, +s,qnϫnWD4As,, +yJ,qnϫnWD4yJ,, +,qnϫnWD55,, +nWjH,qnϫnWD59nWjH,, +ش,qnϫnWD61ش,, +ش,qnϫnWD9ش,, +Eֻ,qnϬxt13-15Eֻ,, +xtj,qnϬxt17-19xtj,, +EӤjH,qnϬxt3-7EӤjH,, +,qnϬsD88,, +O,qnϬ|,, +The Look Out,qnϭϫثΦaq374nWDThe Look Out,, +ISLAND GROVE,qnϭqD40ISLAND GROVE,, +R_,qnϭqD43R_,, +~,qnϭqD55~,, +ָsj,qnϭJjD,, +FMjH,qnϭJjD108-112FMjH,, +Wӷ~ȦjH,qnϭJjD118Wӷ~ȦjH,, +ʶצ,qnϭJjD120-122ʶצ,, +jH,qnϭJjD128jH,, +QojH,qnϭJjD142-144QojH,, +jH,qnϭJjD152-156jH,, +ij,qnϭJjD153ij,, +?jH,qnϭJjD170-172?jH,, +פjH,qnϭJjD171פjH,, +Gj,qnϭJjD178Gj,, +ؽjH,qnϭJjD18-20ؽjH,, +jH,qnϭJjD184jH,, +qjH,qnϭJjD190qjH,, +_jH,qnϭJjD201_jH,, +νӷ~,qnϭJjD208νӷ~,, +õoӷ~jH,qnϭJjD216-218õoӷ~jH,, +Qsӷ~jH,qnϭJjD223Qsӷ~jH,, +jH,qnϭJjD22jH,, +u~jH,qnϭJjD232u~jH,, +IŤu~jH,qnϭJjD234IŤu~jH,, +Ju~jH,qnϭJjD236Ju~jH,, +pذa,qnϭJjD244pذa,, +,qnϭJjD26,, +~j,qnϭJjD48-50~j,, +ߤjH,qnϭJjD52-64ߤjH,, +ŹjH,qnϭJjD88ŹjH,, +fĤ@y,qnϭJjD8fĤ@y,, +פjH,qnϭJjD94-98פjH,, +h~,qnϭJĹD3h~,, +u,qnϭJ¤j108u,, +sjH,qnϭJ¤j120sjH,, +ۻ,qnϭJ¤j56ۻ,, +ӤjH,qnϭJ¤j58-62ӤjH,, +vjH,qnϭJ¤j64-70vjH,, +_,qnϭJ¤j74-76_,, +wjH,qnϭJ¤j82wjH,, +pu~j,qnϭD10pu~j,, +ũ|,qnϭD28ũ|,, +Үɲ`WjH,qnϭD38Үɲ`WjH,, +u~jH,qnϭD43u~jH,, +ɹFu~jH,qnϭD4ɹFu~jH,, +pqutjH,qnϭD50pqutjH,, +q~u~jH,qnϭD6q~u~jH,, +Uu~,qnϭD8Uu~,, +خx,qnϮ3خx,, +pv,qnϮѮ|27pv,, +Ѥpv,qnϮѮ|38-48Ѥpv,, +ػAyO,qnϮѮ|3ػAyO,, +ɥbq,qnϮɸ8ɥbq,, +Rv,qnϮvD38Rv,, +|10,qnϮ|10,, +|4,qnϮ|4,, +|6,qnϮ|6,, +b,qnϰhQD200b,, +֩~,qnϰhQD200֩~,, +ѭb,qnϰhQD212ѭb,, +hQ2y,qnϰhQD301hQ颱y,, +ѺW,qnϰhQD550ѺW,, +jf(hQD),qnϰhQDjf(hQD),, +اQjH,qnϱR15-17اQjH,, +ػ,qnϱR21ػ,, +R,qnϱR23-25R,, +R31,qnϱR31,, +R,qnϱR33-37R,, +ŦWb,qnϲ`W|7-9ŦWb,, +`W|8-12,qnϲ`W|8-12Cr,, +§b,qnϲ`WD48§b,, +ܻ,qnϲ`WD11ܻ,, +nܻ,qnϲ`WD3nܻ,, +a,qnϲLWD,, +pA,qnϲLWD,, +ܧO,qnϲLWD,, +vW,qnϲLWD109vW,, +ѭ,qnϲLWD111ѭ,, +LWjH,qnϲLWD113LWjH,, +OؤjH,qnϲLWD119AOؤjH,, +b,qnϲLWD121b,, +߽b,qnϲLWD123߽b,, +THE LILY,qnϲLWD129THE LILY,, +Estrellita,qnϲLWD12Estrellita,, +ּzjH,qnϲLWD25ּzjH,, +E~,qnϲLWD27E~,, +nsO,qnϲLWD41nsO,, +,qnϲLWD43,, +z,qnϲLWD45z,, +§,qnϲLWD5§,, +ҧJyjH,qnϲLWD63 ҧJyjH,, +Qb,qnϲLWD65Qb,, +ɮp,qnϲLWD67ɮp,, +OVERBAYS,qnϲLWD71-71AOVERBAYS,, +AERIES,qnϲLWD73AERIES,, +LWO,qnϲLWD78-80LWOAy,, +A,qnϲLWD79A,, +v,qnϲLWD81v,, +_b,qnϲLWD93,, +E~x,qnϲꩨD41E~x,, +,qnϲꩨD42Ay,, +Q,qnϴf18Q,, +QפjH,qnϴf20QפjH,, +f,qnϴf5-7f,, +_,qnϴfֹD3_,, +npn,qnϵn׵1npn,, +I{a,qnϵشID8I{a,, +شI,qnϵؼ֮|4شI,, +ؤu~jH,qn϶˧|D12ؤu~jH,, +ӧQutjH,qn϶˧|D16ӧQutjH,, +Xu~jH,qn϶˧|D18Xu~jH,, +׼s,qn϶˧|D21׼s,, +JůPu~jH,qn϶˧|D23JůPu~jH,, +ؼwu~jH,qn϶˧|D26ؼwu~jH,, +ªgOjH,qn϶˧|D27ªgOjH,, +O٤u~jH,qn϶˧|D28O٤u~jH,, +LjH,qn϶˧|D29LjH,, +wu~jH,qn϶˧|D30wu~jH,, +Q򤤤,qn϶˧|D31Q򤤤,, +Ш{,qn϶˧|D33-35Ш{,, +ة,qn϶˧|D34ة,, +Jt,qn϶˧|D36Jt,, +QF,qn϶˧|D37QF,, +w,qn϶˧|D38w,, +䤤,qn϶˧|D38䤤,, +ʤߤ@,qn϶˧|D39ʤߤ@,, +Q_u~jH,qn϶˧|D40Q_u~jH,, +Q,qn϶˧|D42Q,, +su~jH,qn϶˧|D46su~jH,, +pXu~jH,qn϶˧|D48pXu~jH,, +oOu~jH,qn϶˧|D49oOu~jH,, +W50,qn϶˧|D50W50,, +Xu~jH,qn϶˧|D52Xu~jH,, +^u~,qn϶˧|D53^u~,, +ɵؤu~jH,qn϶˧|D56-60ɵؤu~jH,, +Qou~jH,qn϶˧|D59-61Qou~jH,, +F]p,qn϶˧|D62F]p,, +פu~jH,qn϶˧|D63פu~jH,, +South Island Place,qn϶˧|D8South Island Place,, +IW,qn϶¨D,, +ɩ~,qn϶¨D10ɩ~,, +nwj,qnϷs37-39nwj,, +sj,qnϷs41-43sj,, +Q?u~jH,qnϷ~o12Q?u~jH,, +_jH,qnϷ~o1_jH,, +The Hub,qnϷ~Ե23The Hub,, +n?s,qnϷ~11n?s,, +mI,qnϸmID,, +źֻ,qnϹťݵ1-12źֻ,, +jH,qnϹťݵ1-3jH,, +ũMjH,qnϹťݵ14-22ũMjH,, +פjH,qnϹťݵ15-19פjH,, +jw,qnϹťݵ27-33Bjw,, +qKjH,qnϹťݵ5-11qKjH,, +ؤsO,qnϹؤsD,, +ly,qnϹؤsD,, +@,qnϹؤsD,, +߽,qnϹؤsD14߽,, +Qf,qnϹؤsD18Qf,, +§b,qnϹؤsD22§b,, +źѭb,qnϹؤsD25źѭb,, +b,qnϹؤsD26b,, +ԪQ~,qnϹؤsD33ԪQ~,, +Ap,qnϹؤsD35AAp,, +AOֲ,qnϹؤsD4AO,, +p,qnϹؤsD51p,, +ƪLa,qnϹؤsD53ƪLa,, +n,qnϹؤsD57,, +b,qnϹؤsD5,, +ؤs,qnϹؤsD6Aؤs,, +dbd,qnϹؤsD6dbd,, +R,qnϹؤsD7R,, +ڦw,qnϹؤsD8ڦw,, +nb,qnϹؤsD9nb,, +Qb,qnϹئڤsD,, +o,qnϹئڤsD 13,, +H,qnϹئڤsD11H,, +Ku,qnϹئڤsD7Ku,, +Q,qnϹئڤsDF,, +@y,qnϹئڤsDF1@y,, +Ky,qnϹئڤsDF1Ky,, +y,qnϹئڤsDF1y,, +y,qnϹئڤsDF1y,, +ub,qnϺD45ub,, +wb,qnϺwbD3,, +RjH,qnϺq5RjH,, +R,qnϺ1R,, +jv,qnϺ׵3jv,, +[~,qnϺѯD,, +Yb,qnϺѯD28Yb,, +sR,qnϺѯD30-32sR,, +f,qnϺѯD37-39f,, +Ҭf,qnϺѯD43Ҭf,, +Ra,qnϺѯD55-57Ra,, +W,qnϻD16-18W,, +D,qnϻD5,, +b,qnϼPD37b,, +Ѯ,qnϼPD49Ѯ,, +SOUTHWEST,qnϼPD53SOUTHWEST,, +ìP,qnϼPD5ìP,, +jͤu~jH,qnϿM25jͤu~jH,, +L,qnRר33,, +Qܤpv,qnRר35Qܤpv,, +Rj,qnn?wj105-113Rj,, +FnjH,qnn?wj112-118FnjH,, +Q,qnn?wj11Q,, +_,qnn?wj129_,, +Xɤj,qnn?wj132Xɤj,, +jH,qnn?wj145jH,, +QפjH,qnn?wj147QפjH,, +ɼyjH,qnn?wj150ɼyjH,, +w,qnn?wj17-19w,, +F_,qnn?wj18F_,, +wj,qnn?wj21-23wj,, +~פjH,qnn?wj25-31~פjH,, +,qnn?wj33,, +Rs,qnn?wj73-79Rs,, +,qnn?wj81-83,, +QojH,qnn?wj96-98QojH,, +jH,qnn?wj97-103jH,, +nϡD,qnn?w|8nϡD,, +nW,qnn?wǹD8nW,, +Ab,qn|,, +zp?,qn|18zp?,, +VILLA PIUBELLO,qn|1VILLA PIUBELLO,, +fܤpv,qnD32,, +swb,qnD52swb,, +sYb,qnD60,, +pG,qnߪLD116pG,, +p I,qnߪLD118p I,, +h֤jH,qnߪLD126h֤jH,, +ŪL,qnߪLD137ŪL,, +ߪL,qnߪLD180ߪL,, +z,qnRD,, +LWR,qnRD18-40LWR,, +LW,qnRD3LW,, +LWR,qnRD5LWR,, +|¼pĤ@y,qWJ,, +ѧO,qWJ,, +rWs,qWJ,, +j,qWJIL1573_FyD18-20j,, +֤?,qWJIL2132֬D12֤?,, +ɻ,qWJIL2506MD39Eɻ,, +֤,qWJIL2617dJD402-404֤,, +Q°ӷ~jH,qWJIL2618aֹD375-379Q°ӷ~jH,, +ذaӷ~,qWJIL2618aֹD381-383ذaӷ~,, +֩ɤjH,qWJIL2622dJD324-330A֩ɤjH,, +whjjH,qWJIL2769aֹD258whjjH,, +°ӷ~jH,qWJIL2835dJD447-449°ӷ~jH,, +qذӷ~jH,qWJIL3672´D211-213qذӷ~jH,, +ֵؤjH,qWJIL4078M2-4ֵؤjH,, +ns,qWJIL461y9-11ns,, +p,qWJIL4959sD20p,, +Ȯa,qWJIL6888ӭ15Ȯa,, +ӷ~jH,qWJIL6998dJD300-306ӷ~jH,, +ɭb,qWJIL8348ŶD41ɭb,, +s,qWJIL8458aQD29-35s,, +zb,qWJIL8830sD17zb,, +jPjH,qWJIL8844LD8jPjH,, +IQjH,qWJML119T10-18IQjH,, +ʼwjHDy,qWJML52OQv9ʼwjHҮy,, +Dh餤,qWJML52aֹD525Dh餤,, +T1,qWJϤT1,, +تY,qWJϤT2-3تY,, +PjH,qWJϤTO21PjH,, +U,qWJϤj7-11U,, +j,qWJϤjF3-5j,, +wjH,qWJϤjF22-30wjH,, +ŴO,qWJϤj||19ŴO,, +W,qWJϤj||23,, +sت,qWJϤj||25sت,, +f,qWJϤj||6f,, +jH,qWJϤj||7jH,, +,qWJϤj||8,, +Rb,qWJϤj|D101-111Rb,, +h,qWJϤj|D113h,, +WL,qWJϤj|D11,, +,qWJϤj|D12-14,, +lsjHA1A4y,qWJϤj|D148lsjHϢТϢy,, +ű[O,qWJϤj|D152ű[O,, +OSjH,qWJϤj|D154OSjH,, +a,qWJϤj|D19a,, +Ķ,qWJϤj|D20-22Ķ,, +ԱdO,qWJϤj|D21ԱdO,, +̶f,qWJϤj|D23-25̶f,, +ҦZO,qWJϤj|D26ҦZO,, +خp,qWJϤj|D27خp,, +ԫ,qWJϤj|D28-28Aԫ,, +o,qWJϤj|D30o,, +AĤ@y,qWJϤj|D325-331A,, +R,qWJϤj|D333R,, +~,qWJϤj|D341-343~,, +Ŷ,qWJϤj|D345Ŷ,, +ë»,qWJϤj|D3ë»,, +dɶ,qWJϤj|D43dɶ,, +˶,qWJϤj|D52A˶,, +ָsjH,qWJϤj|D53-55ָsjH,, +u,qWJϤj|D54u,, +uyx,qWJϤj|D56uyx,, +u,qWJϤj|D60u,, +j_,qWJϤj|D70j_,, +O2y,qWJϤj|D7OĢy,, +sO,qWJϤj|D89-93sO,, +b,qWJϤj|D95-99b,, +?bfb,qWJϤjD7?bfb,, +sjH,"qWJϤsD 7C, 7D, 7E & 7FsjH",, +حb,qWJϤsD14-14Aحb,, +,qWJϤsD16,, +Nfpv,qWJϤsD1ANfpv,, +A,qWJϤsD1A,, +sb@,qWJϤsD22sb,, +s,qWJϤsD26-32s,, +UؤjH,qWJϤsD2UؤjH,, +ôIb,qWJϤsD34-40ôIb,, +r_jH,qWJϤsD3r_jH,, +,qWJϤsD6,, +RwjH,qWJϤsD7RwjH,, +s,qWJϤsx19-21s,, +nB,qWJϤsD10-12nB,, +rwjH,qWJϤsD11rwjH,, +QjH,qWJϤsD13-15QjH,, +A,qWJϤsD14-16A,, +sӤjH,qWJϤsD18-20sӤjH,, +,qWJϤsD19,, +ȬP,qWJϤsD22-26ȬP,, +Qػ,qWJϤsD29Qػ,, +s,qWJϤsD31s,, +׹jH,qWJϤsD32-40׹jH,, +Ƥs,qWJϤsD39Ƥs,, +K,qWJϤsD45-47K,, +ŮjH,qWJϤsD46-48ŮjH,, +@r~,qWJϤsD49@r~,, +hFa,qWJϤsD4HhFa,, +פ,qWJϤsD50-52פ,, +rw,qWJϤsD56rw,, +PR,qWJϤsD5PR,, +a,qWJϤsD64a,, +,qWJϤsD66-68,, +sjH,qWJϤsD7sjH,, +b,qWJϤsO11b,, +I,qWJϤsO13I,, +ӥjjH,qWJϤsD25ӥjjH,, +Yɩ~,qWJϤsD8-12Yɩ~,, +ض,qWJϤlD5ض,, +oQ,qWJϤ15oQ,, +g~,qWJϤ8-12g~,, +ɥNs,qWJϤŦaڵ1ɥNs,, +_,qWJϤѦZqD14_,, +fƤs,qWJϤѦZqD18-AfƤs,, +sa,qWJϤѦZqD18sa,, +,qWJϤѦZqD2-4,, +sx,qWJϤѦZqD26-32sx,, +w,qWJϤѦZqD6-8w,, +´O,qWJϤѦZqD70´O,, +djH,qWJϤѼ֨3-5AdjH,, +ڦwjH,qWJϤѼ֨6-18ڦwjH,, +פjH,qWJϤѼ֨9-17פjH,, +֩MjH,qWJϤөM10-20֩MjH,, +M,qWJϤөM22-28M,, +MjH,qWJϤөM4-8MjH,, +w,qWJϤӭ1-3w,, +׷,qWJϤӭ17-19׷,, +zb,qWJϤӭ20-26zb,, +ӷ,qWJϤӭ38ӷ,, +,qWJϤӭ8,, +ӷ~jH,qWJϤڸh1-3ӷ~jH,, +^os,qWJϤڸh2-4^os,, +@hp,qWJϤ鵽28@hp,, +n,qWJϤ1n,, +s,qWJϤ6-7s,, +鿳,qWJϤ8-9鿳,, +P,qWJϤ14-16P,, +jȼ,qWJϤ15-17jȼ,, +׻,qWJϤ17A׻,, +P,qWJϤ2-12P,, +O,qWJϤP18OĤ@y,, +?C,qWJϤP23?C,, +Aդ,qWJϤP3Aդ,, +ê@,qWJϤP9-11ê@,, +sjH,qWJϤP10-16sjH,, +sejH,qWJϤP17-19sejH,, +ثHjH,qWJϤP18-20ثHjH,, +ģPخx,qWJϤP28ģPخx,, +jH(P),qWJϤP5-7jH(P),, +dQjH,qWJϤP9-11dQjH,, +Ͷ,qWJϥVCD10-12Ͷ,, +VC,qWJϥVCD1VC,, +[sj,qWJϥ[ssD,, +[ss,qWJϥ[ssD101[ss,, +OͰa,qWJϥ[ssD109OͰa,, +§HjH,qWJϥ[ssD1§HjH,, +¤jH,qWJϥ[10¤jH,, +ȬjH,qWJϥ[13-15ȬjH,, +njH,qWJϥ[1-3njH,, +[jH,qWJϥ[5-7[jH,, +ۤjH,qWJϥ[8ۤjH,, +ذjH,qWJϥ[9-11ذjH,, +Ӹ۰,qWJϥ]ؤhD4Ӹ۰,, +jH,qWJϥvxD14-16jH,, +ͨjH,qWJϥq{޹D1ͨjH,, +״x״O,qWJϥq{޹D24״x״O,, +~b,qWJϥq{޹D28-30~b,, +,qWJϥq{޹D34,, +s?,qWJϥq{޹D41As?,, +sp,qWJϥq{޹D41Csp,, +f,qWJϥq{޹D41Df,, +ѿ,qWJϥq{޹D41ѿ,, +§Q,qWJϥq{޹D43A§Q,, +Qfs?,qWJϥq{޹D43Qfs?Ϯy,, +jP,qWJϥq{޹D47BjP,, +_zjH,qWJϥq{޹D47C_zjH,, +?|b,qWJϥO|,, +æw,qWJϥD,, +~F,qWJϥD11~F,, +?R,qWJϥD1?R,, +еػ,qWJϥÿ10-12еػ,, +ΤjH,qWJϥÿ21-23ΤjH,, +ÿs,qWJϥÿ25-31Aÿs,, +v,qWJϥÿ33-39v,, +~,qWJϥÿ9-11~,, +û,qWJϥ׵12-18û,, +׻,qWJϥ׵21׻,, +żֶ,qWJϥ̹D24-26żֶ,, +P,qWJϥիخɹD,, +§b,qWJϥիخɹD11§b,, +ŶO,qWJϥիخɹD33ŶO,, +Q?,qWJϥիخɹD39Q?,, +b,qWJϥիخɹD41b,, +b,qWJϥիخɹD43-45b,, +qիخɹDӳ,qWJϥիخɹD5qիخɹDӳ,, +yO,qWJϥիخɹD61-63yO,, +?I,qWJϥۤ10-12?I,, +ojH,qWJϥۤ1-13ojH,, +ӤjH,qWJϥۤ14-24ӤjH,, +ک,qWJϥۤ19-21ک,, +ðjH,qWJϥۤ23-25ðjH,, +Iּ,qWJϥۤ64-70AIּ,, +~»,qWJϥۤ69-71~»,, +Eo,qWJϥۤ88-90Eo,, +OMjH,qWJϥ[51OMjH,, +Ia,qWJϥ[10-12Ia,, +IjH,qWJϥ[1-7IjH,, +»,qWJϥ[18»,, +b,qWJϥ[26b,, +sH,qWJϥ[30-32sH,, +z,qWJϥ[33z,, +ֲ,qWJϥ[34-38ֲ,, +Yaӷ~jH,qWJϥa9Yaӷ~jH,, +jw,qWJϦNw17jw,, +s,qWJϦNw1s,, +ئw,qWJϦNw8-12ئw,, +yӤjH,qWJϦwfȵ28yӤjH,, +djH,qWJϦwfȵ5djH,, +QjH,qWJϦw֨1-3QjH,, +LjH,qWJϦM{2LjH,, +ؤpb,qWJϦM{4ؤpb,, +ϼ,qWJϦM{5ϼ,, +RjH,qWJϦMD13-19RjH,, +z,qWJϦMD18z,, +sû,qWJϦMD22sû,, +ob,qWJϦMD25-27ob,, +wjH,qWJϦMD2-8wjH,, +jH,qWJϦMD45jH,, +najH,qWJϦMD49-51AnajH,, +j,qWJϦMD53-59Aj,, +שMjH,qWJϦMD65שMjH,, +@,qWJϦMD67-67C@,, +Ŷha,qWJϦMD69Ŷha,, +b,qWJϦMD70-70Ab,, +R,qWJϦMD71R,, +vb,qWJϦMD73vb,, +ŶO,qWJϦMD74-80ŶO,, +jH,qWJϦY11-21jH,, +ɶԻ,qWJϦY12ɶԻ,, +Ni,qWJϦY22-24Ni,, +}Pˤj,qWJϦY23}Pˤj,, +صnjH,qWJϦʼws27صnjH,, +ʼwjHAy,qWJϦʼws37-47ʼwjHϮy,, +ʼwjHCy,qWJϦʼws37ʼwjHѮy,, +rWjH,qWJϦʼws42-48rWjH,, +jH,qWJϦʼws50-56jH,, +غjH,qWJϦʼws51غjH,, +wjH,qWJϦʼws53wjH,, +ؤjH,qWJϦʼws57ؤjH,, +طHjH,qWJϦʼws58-64طHjH,, +ؤjH,qWJϦʼws59-65ؤjH,, +WjH,qWJϦʼws66-72WjH,, +iEjH,qWJϧJ1-15iEjH,, +sͦjHBy,qWJϧJ6sͦjHBy,, +jH,qWJϧQsD54-70jH,, +Qڻ,qWJϧQsD5Qڻ,, +Qs,qWJϧQsD7Qs,, +jsĤ,qWJϧihD108jsĤ,, +Ffӷ~jH,qWJϧihD109-111Ffӷ~jH,, +ְjH,qWJϧihD132-133ְjH,, +pXqjH,qWJϧihD138pXqjH,, +ꥻ,qWJϧihD151ꥻ,, +HM]ȤjH,qWJϧihD166-168HM]ȤjH,, +wӷ~jH,qWJϧihD171-172wӷ~jH,, +@s,qWJϧihD178@s,, +ɤjH,qWJϧihD181-185ɤjH,, +sȶΤ,qWJϧihD200sȶΤ,, +|,qWJϧihD212|,, +,qWJϧihD217-218,, +ؼ,qWJϧihD219-220ؼ,, +pjH,qWJϧihD221-226pjH,, +tzӷ~jH,qWJϧihD229-230tzӷ~jH,, +qȦjH,qWJϧihD233qȦjH,, +QBjH,qWJϧihD250QBjH,, +HMs,qWJϧihD255-257HMs,, +PQ,qWJϧihD262PQ,, +cjH,qWJϧihD264-268cjH,, +@ɶT,qWJϧihD280@ɶT,, +j,qWJϧihD38j,, +qTjH,qWJϧihD3qTjH,, +æĤ,qWJϧihD60æĤ,, +ꤤ,qWJϧihD72ꤤ,, +IqjH,qWJϧihD77-79IqjH,, +_wjH,qWJϧw3A-3E_wjH,, +׻O,qWJϧ׻O,, +bOֱb,qWJϧ׻O11Oֱb,, +״b,qWJϧ׻O12״b,, +,qWJϧ׻O13-14,, +ɻAa,qWJϧ׻O16ɻAa,, +jH,qWJϧ׻O1jH,, +ɴa,qWJϧ׻O6ɴa,, +r,qWJϧ׻O7r,, +§ƤjHĤ@y,qWJϧƶ,, +§jH,qWJϧƶ,, +ƶjH,qWJϧƶ2-30ƶjH,, +ʮcjH,qWJϧƷVD2-4ʮcjH,, +δӷ~,qWJϧƷVD8δӷ~,, +`,qWJϧ`1`,, +庳jH,qWJϧ`21庳jH,, +?jH,qWJϧѻxD6?jH,, +حb@y,qWJϨqا{11-17حb@y,, +حbGy,qWJϨqا{8حbGy,, +ɶ,qWJϨfD15ɶ,, +FjH,qWJϨʤhy11FjH,, +ʤhyjH,qWJϨʤhy2-4ʤhyjH,, +~jH,qWJϨʤhy6~jH,, +sjH,qWJϨʤhy8sjH,, +ŻjH,qWJϨʤhy9ŻjH,, +hQ,qWJϩ}ڹD15,, +jH,qWJϩɩM1-1LjH,, +njH,qWJϩɩM19-31njH,, +^jH,qWJϩɩM2-6^jH,, +ڥͻrWjH,qWJϩɩM28ڥͻrWjH,, +ɵؤjH,qWJϩɩM38-40AɵؤjH,, +ؤHȦFϤjH,qWJϩɩM42-44ؤHȦFϤjH,, +ʧQOs,qWJϩɩM68ʧQOs,, +V CAUSEWAY BAY,qWJϩɩM9-15V CAUSEWAY BAY,, +r@,qWJϪ@1-5r@,, +b,qWJϩ1-3b,, +FsO,qWJϪFsO,, +wHx,qWJϪFsO16wHx,, +,qWJϪFsO17,, +wH,qWJϪFsO19wH,, +KP,qWJϪFsO1KP,, +FsO,qWJϪFsO2FsO,, +볳~,qWJϪFsO3볳~,, +,qWJϪFsO5,, +BOWEN VERDE,qWJϪFsO6BOWEN VERDE,, +,qWJϪFsO8,, +mwjH,qWJϪFD24mwjH,, +ɦwjH,qWJϪFD26ɦwjH,, +_aj,qWJϪiI108-120_aj,, +a֤jH,qWJϪiI48-52a֤jH,, +ؼ,qWJϪiI67-69ؼ,, +_Ij,qWJϪiI84-94_Ij,, +_jH,qWJϪiI96-106_jH,, +QROs,qWJϪiI99QROs,, +ͭb,qWJϪsD22ͭb,, +s߻,qWJϪsx11s߻,, +s,qWJϪsx13s,, +sOsjH,qWJϪsx6sOsjH,, +sp,qWJϪsx9sp,, +Es,qWJϪsO1Es,, +sO9A,qWJϪsO9-AsO9A,, +ح^jH,qWJϫHw14-20ح^jH,, +HjH,qWJϫHw15HjH,, +,qWJϫHw1-7,, +ʫ°ӷ~jH,qWJϫHw9-11ʫ°ӷ~jH,, +ҽ,qWJϫ10ҽ,, +Rb,qWJϫ18Rb,, +,qWJϫ20-22,, +,qWJϫ24-28,, +MjH,qWJϫ2-8MjH,, +ؼ,qWJϫ34-36ؼ,, +su,qWJϫ37-39su,, +,qWJϫ«DD11-13,, +U,qWJϫ«DD15-19U,, +«DD18,qWJϫ«DD18,, +δjH,qWJϫ«DD23-35δjH,, +v,qWJϫµD2-10v,, +v,qWJϫµD2-10v,, +ȳv,qWJϫµD2-10ȳv,, +լv,qWJϫµD3-9լv,, +nH,qWJϬI]7nH,, +׬P,qWJϬP1׬P,, +ìPb,qWJϬP7ìPb,, +PaĤGy,qWJϬP9PaĤGy,, +KujH,qWJϬK1-11KujH,, +KjH,qWJϬK29-41KjH,, +sKjH,qWJϬK47-65sKjH,, +ÿ,qWJϬK6-12ÿ,, +rIjH,qWJϬKuD,, +,qWJϬKuD3,, +j|x,qWJϬKuD5j|x,, +z,qWJϬKuD7,, +s,qWJϬKuO1s,, +,qWJϬ_sD15,, +jH,qWJϬ_sD28-32jH,, +׹y,qWJϬ_sD2׹y,, +|ϤjH,qWJϬ_sD3-3B|ϤjH,, +ģӷ~jH,qWJϬ_sD5ģӷ~jH,, +?,qWJϬD28?,, +D,qWJϬD3-5D,, +KjH,qWJϬD6-10AKjH,, +dۼ,qWJϬӦZjDF100-102dۼ,, +ywj,qWJϬӦZjDF101-103ywj,, +IF,qWJϬӦZjDF104IF,, +sӷ~,qWJϬӦZjDF109-115sӷ~,, +Y,qWJϬӦZjDF119-121Y,, +jH,qWJϬӦZjDF122-128jH,, +f,qWJϬӦZjDF133-133Af,, +nE,qWJϬӦZjDF137nE,, +tw,qWJϬӦZjDF139tw,, +ڤs,qWJϬӦZjDF141-145ڤs,, +j,qWJϬӦZjDF146-152j,, +§Qӷ~jH,qWJϬӦZjDF147-151§Qӷ~jH,, +װڤ,qWJϬӦZjDF182װڤ,, +XM,qWJϬӦZjDF183XM,, +FfjH,qWJϬӦZjDF18FfjH,, +ӥjs ,qWJϬӦZjDF1ӥjs,, +,qWJϬӦZjDF20015y,, +ʺּ,qWJϬӦZjDF208-212ʺּ,, +JjH,qWJϬӦZjDF213JjH,, +粻jH,qWJϬӦZjDF223-229A粻jH,, +ؤjH,qWJϬӦZjDF228ؤjH,, +ګ°ӷ~jH,qWJϬӦZjDF231-233ګ°ӷ~jH,, +,qWJϬӦZjDF238,, +פ,qWJϬӦZjDF24-32פ,, +Qj,qWJϬӦZjDF265-267Qj,, +ֺjH,qWJϬӦZjDF29-31ֺjH,, +ŦjH,qWJϬӦZjDF36-44ŦjH,, +sسqT,qWJϬӦZjDF379-381sسqT,, +ش,qWJϬӦZjDF383-385Aش,, +F,qWJϬӦZjDF43-59F,, +ҦZӷ~,qWJϬӦZjDF58-64ҦZӷ~,, +p~,qWJϬӦZjDF63-65p~,, +jFjH,qWJϬӦZjDF67-73jFjH,, +,qWJϬӦZjDF70,, +o,qWJϬӦZjDF72-76o,, +I,qWJϬӦZjDF83I,, +w,qWJϭ^ӹD / 1A P85w,, +jH,qWJϭ^ӹD14jH,, +?O,qWJϭ^ӹD1?O,, +EwjH,qWJϭ^ӹD2-4EwjH,, +^ӹDͭ^jH,qWJϭ^ӹD29^ӹDͭ^jH,, +s,qWJϭ^ӹD37s,, +O,qWJϭ^ӹD39O,, +,qWJϭ^ӹD41,, +§,qWJϭ^ӹD67-71§,, +ʧQjH,qWJϭ^ӹD6-8ʧQjH,, +pXXjH,qWJϭ^ӹD75-83pXXjH,, +A,qWJϭ^ӹD93A,, +ذjH,qWJϭ^ӹD99ذjH,, +HjH,qWJϭxt2HjH,, +njH,qWJϭxt4njH,, +Q,qWJϮD42Q,, +,qWJϮD44-48,, +_jH,qWJϮʷ7_jH,, +۩M,qWJϮۦ18۩M,, +EIGHT KWAI FONG,qWJϮ۪ڵ8EIGHT KWAI FONG,, +ĭb,qWJF,, +F,qWJF1-5F,, +Qּ,qWJF16-18Qּ,, +I,qWJF20-22I,, +AQ,qWJF26-28AQ,, +F,qWJF33-45F,, +la,qWJF55la,, +ֿ,qWJF63ֿ,, +,qWJF6-6A,, +n,qWJϯ[13-17n,, +Vn,qWJϯ[3-3CVn,, +æw,qWJϯ[4-4Aæw,, +f,qWJϯ[7f,, +dP󶮴,qWJϯdP1-5dP󶮴,, +qsb,qWJϯqsD8qsb,, +(ʧQ) ,qWJϰOQv1(ʧQ) ,, +]jH,qWJϰOQv25-29]jH,, +ʼwjHBy,qWJϰOQv7-9ʼwjHЮy,, +VjH,qWJϰaֹD103VjH,, +ͤjH,qWJϰaֹD107-115ͤjH,, +a֤j,qWJϰaֹD117-123a֤j,, +׹y,qWJϰaֹD130-150׹y,, +~jH,qWJϰaֹD139~jH,, +wdӷ~jH,qWJϰaֹD145wdӷ~jH,, +U_,qWJϰaֹD149-151U_,, +QjH,qWJϰaֹD153-155QjH,, +Qaj,qWJϰaֹD156-162Qaj,, +FC RESIDENCE,qWJϰaֹD157FC RESIDENCE,, +ӷ~jH,qWJϰaֹD164-166ӷ~jH,, +xsӷ|jH,qWJϰaֹD167-169xsӷ|jH,, +صM,qWJϰaֹD168-170صM,, +yojH,qWJϰaֹD16yojH,, +μ,qWJϰaֹD172-174Aμ,, +QajH,qWJϰaֹD175-177QajH,, +pPjH,qWJϰaֹD176-178pPjH,, +dIjH,qWJϰaֹD179-181dIjH,, +éjH,qWJϰaֹD18-20éjH,, +wjH,qWJϰaֹD183-185wjH,, +jH,qWJϰaֹD187-193jH,, +TOWER 188,qWJϰaֹD188-190TOWER 188,, +^ʤjH,qWJϰaֹD192-198^ʤjH,, +FؤjH,qWJϰaֹD199-203FؤjH,, +ڥWJjH,qWJϰaֹD200ڥWJjH,, +swjH,qWJϰaֹD205-207swjH,, +aӷ~jH,qWJϰaֹD209-211aӷ~jH,, +_ذӷ~,qWJϰaֹD226-226A_ذӷ~,, +ɩ,qWJϰaֹD231ɩ,, +§j,qWJϰaֹD241-243§j,, +s,qWJϰaֹD244-250s,, +uɰӷ~jH,qWJϰaֹD245-251uɰӷ~jH,, +jH,qWJϰaֹD252-254jH,, +̮ɰӷ~jH,qWJϰaֹD253-261̮ɰӷ~jH,, +sa֤jH,qWJϰaֹD263sa֤jH,, +ؤjH,qWJϰaֹD269-273ؤjH,, +߿jH,qWJϰaֹD275-285߿jH,, +vOӷ~,qWJϰaֹD289vOӷ~,, +wؤjH,qWJϰaֹD290-296wؤjH,, +sͦjHAy,qWJϰaֹD298sͦjHAy,, +ӷ~jH,qWJϰaֹD300ӷ~jH,, +,qWJϰaֹD302-308,, +HؤjH,qWJϰaֹD313HؤjH,, +qؤjH,qWJϰaֹD319-321qؤjH,, +^QjH,qWJϰaֹD323-331^QjH,, +_,qWJϰaֹD326-338_,, +ؤj,qWJϰaֹD340-342ؤj,, +o,qWJϰaֹD341-343o,, +~jH,qWJϰaֹD344-354A~jH,, +ͽˤjH,qWJϰaֹD345-351ͽˤjH,, +y,qWJϰaֹD357-359y,, +Iw,qWJϰaֹD365-367Iw,, +`DòzjH,qWJϰaֹD36`DòzjH,, +wjH,qWJϰaֹD380-394wjH,, +sj,qWJϰaֹD38-46sj,, +ajH,qWJϰaֹD385-391ajH,, +Fϰӷ~jH,qWJϰaֹD393-407Fϰӷ~jH,, +wjH,qWJϰaֹD402-406wjH,, +WJӷ~,qWJϰaֹD409-415WJӷ~,, +~jH,qWJϰaֹD417-421~jH,, +Ŧ~ذӷ~jH,qWJϰaֹD423-425Ŧ~ذӷ~jH,, +i_yjH,qWJϰaֹD427-429i_yjH,, +Zӷ~jH,qWJϰaֹD438-444Zӷ~jH,, +qjH,qWJϰaֹD439-445qjH,, +aؤjH,qWJϰaֹD446-450aؤjH,, +XsjH,qWJϰaֹD447-449XsjH,, +ӵؼ,qWJϰaֹD451-457ӵؼ,, +pӷ~,qWJϰaֹD458-468pӷ~,, +ؼwװӷ~jH,qWJϰaֹD467-473ؼwװӷ~jH,, +A,qWJϰaֹD470A,, +n~jH,qWJϰaֹD472n~jH,, +FnjH,qWJϰaֹD475-481FnjH,, +jH,qWJϰaֹD480-482jH,, +åӷ~jH,qWJϰaֹD499åӷ~jH,, +ƷVs,qWJϰaֹD500ƷVs,, +jذӷ~jH,qWJϰaֹD501-503jذӷ~jH,, +q~,qWJϰaֹD505q~,, +_ӷ~jH,qWJϰaֹD513-517_ӷ~jH,, +F(sl),qWJϰaֹD529-555F(sl),, +|_jH,qWJϰaֹD59-65|_jH,, +ج,qWJϰaֹD67-69ج,, +ۤj,qWJϰaֹD78-84Aۤj,, +jH,qWJϰaֹD8-12jH,, +عjH,qWJϰaֹD89-91عjH,, +v,qWJϰaw^D5v,, +ۤjH,qWJϰvPlD34ۤjH,, +ż֭b,qWJϰvPlD40ż֭b,, +¼,qWJϰh¹D16-22¼,, +W,qWJϰh¹D24-36W,, +سjH,qWJϰh¹D2-6AسjH,, +,qWJϰhD1,, +zO,qWJϰaD128-130zOĤ@y,, +Ih,qWJϰaD21-23AIh,, +ë»,qWJϰaD31ë»,, +Ļ,qWJϰaD39Ļ,, +UFjH,qWJϰaD41UFjH,, +֨ӻ,qWJϰaD43֨ӻ,, +?x,qWJϰaD48?x,, +ʶ,qWJϰaD54-56ʶ,, +,qWJϰaD58-60,, +dw~,qWJϰaD62dw~,, +AL FRESCO,qWJϰaD64AL FRESCO,, +úֻ,qWJϰaD68úֻ,, +ĭb,qWJϰaD70-72ĭb,, +˪Lb,qWJϰaD74-86˪Lb,, +׼ַs?Ay,qWJϰaD88-90,, +ŽO,qWJϰaD98ŽO,, +UHO,qWJϰaD9LUHO,, +Ӵ»,qWJϰaD9MӴ»,, +a,qWJϰD10a,, +r,qWJϰD26-30r,, +Gd~s,qWJϰDF8Gd~s,, +dּ,qWJϰa11-11Adּ,, +wjH,qWJϰa16-20wjH,, +,qWJϰa22-28,, +m֥x,qWJϰa3m֥x,, +za,qWJϰa8za,, +x,qWJϱ1-5x,, +C,qWJϲM1-3C,, +sjH,qWJϲM21-23sjH,, +I׼,qWJϲM5-7I׼,, +װӷ~jH,qWJϲM6-8װӷ~jH,, +_w,qWJϲM9-11_w,, +Ѷ,qWJϲԤs|,, +l,qWJϲԤs|30l,, +QO,qWJϲԤsD,, +_~jH,qWJϲ1-7_~jH,, +F@,qWJϲ24F@,, +,qWJϲD6-8,, +߼,qWJϲhD112߼,, +yjH,qWJϲhD120yjH,, +sӷ~jH,qWJϲhD137-139sӷ~jH,, +EjH,qWJϲhD141-147EjH,, +ڥͲhDjH,qWJϲhD142ڥͲhDjH,, +w,qWJϲhD144-146w,, +nӤΥw,qWJϲhD148-150w/152-158n,, +FjH,qWJϲhD151-155FjH,, +ӥӷ~jH,qWJϲhD163ӥӷ~jH,, +ؤjH,qWJϲhD164-176ؤjH,, +פj,qWJϲhD176A-176Dפj,, +hs,qWJϲhD178-186hs,, +׼,qWJϲhD188-192׼,, +ŹjH,qWJϲhD18ŹjH,, +sȤjH,qWJϲhD195-197sȤjH,, +ww,qWJϲhD199-201ww,, +j߼,qWJϲhD214-216j߼,, +ɬu,qWJϲhD218-220ɬu,, +IŤjH,qWJϲhD222-230IŤjH,, +hj,qWJϲhD28-34hj,, +Q,qWJϲhD35-45Q,, +njH,qWJϲhD47-49njH,, +װӷ~jH,qWJϲhD51-53װӷ~jH,, +׹yjH,qWJϲhD55-61׹yjH,, +Pa,qWJϲhD60Pa,, +HjH,qWJϲhD68HjH,, +LˤjH,qWJϲhD94-102LˤjH,, +?AO,qWJϳsD,, +,qWJϳsD1,, +ػAO,qWJϳsD3ػAO,, +[F,qWJϳ[Oq1-19[F,, +ּ,qWJϴ֨2ּ,, +w,qWJϴ10-12w,, +K,qWJϴ11K,, +ɴ,qWJϴ15-17ɴ,, +üy,qWJϴ19-21üy,, +崺a,qWJϴ25-27崺a,, +Q,qWJϴ28-30Q,, +ΧQ,qWJϴ32-34ΧQ,, +jH,qWJϴ36-44jH,, +,qWJϴ8,, +I_,qWJϴP5-7I_,, +1-3,qWJϴ1-3,, +jH,qWJϴ15-27jH,, +swjH,qWJϴ20-28swjH,, +jH,qWJϴ6jH,, +ʵؤ߲ĤGy,qWJϴl{28ʵؤ߲ĤGy,, +QojH,qWJϴl{30-36QojH,, +ְӷ~jH,qWJϴl{3ְӷ~jH,, +swjH,qWJϴl22-28swjH,, +ӷ~,qWJϴl23ӷ~,, +Q,qWJϴl25-27Q,, +HHӷ~jH,qWJϴl43A-45HHӷ~jH,, +l,qWJϴl46-52l,, +ɻ,qWJϴl47ɻ,, +ʵؤ,qWJϴl5-19ʵؤ,, +s,qWJϴWD18s,, +Ng,qWJϴWD23Ng,, +䤤,qWJϴWD25䤤,, +ؼjH,qWJϴWD26ؼjH,, +WߤjH,qWJϴWD28WߤjH,, +sE򤤤,qWJϴWD30sE򤤤,, +w,qWJϴWD6-8w,, +¶ߤG,qWJϵns1-29¶ߤG,, +å,qWJϵns28å,, +ɤsjH,qWJϵns31-35ɤsjH,, +njH,qWJϵns36-48njH,, +sjH,qWJϵns41-51sjH,, +ӷ~jH,qWJϵns52ӷ~jH,, +|r,qWJϵح۵23|r,, +ɺ,qWJϵLD11-15ɺ,, +w~jH,qWJϵLD1-3w~jH,, +FjH,qWJϵLD20FjH,, +TjH,qWJϵLD21-29TjH,, +߼wjH,qWJϵLD31-33߼wjH,, +noӷ~jH,qWJϵLD7noӷ~jH,, +حby,qWJ϶iг8حby,, +aQjH,qWJ϶aQD15aQjH,, +ujH,qWJ϶aQD1-5ujH,, +f,qWJ϶aQD17f,, +aQx,qWJ϶aQD19-23BaQx,, +OOAy,qWJ϶aQD25-27OO֢Ϯy,, +rؤjH,qWJ϶aQD36-38rؤjH,, +ŶjH,qWJ϶aQD58-60ŶjH,, +aQD8,qWJ϶aQD8,, +a,qWJ϶D12a,, +¤x,qWJ϶D8-10¤x,, +ɶ,qWJ϶dFlD,, +Qw,qWJ϶dFlD12-14Qw,, +ɶABy,qWJ϶dFlD2A-2BɶϡЮy,, +Yx,qWJ϶dFlD4-4AYx,, +b,qWJ϶dFlD8b,, +hf,qWJ϶dFD,, +óӤjH,qWJ϶dFD11-11AóӤjH,, +Ŷ,qWJ϶dFD135-135AŶ,, +nû,qWJ϶dFD151-153nû,, +nBjH,qWJ϶dFD161-163nBjH,, +ɻ,qWJ϶dFD165ɻ,, +פjH,qWJ϶dFD17-19פjH,, +åb,qWJ϶dFD1åb,, +EQjH,qWJ϶dFD21-23EQjH,, +rפjH,qWJ϶dFD27rפjH,, +rjH,qWJ϶dFD29rjH,, +rjH,qWJ϶dFD31-37rjH,, +֤jH,qWJ϶dFD43֤jH,, +A,qWJ϶dFD49-51A,, +rjH,qWJ϶dFD53rjH,, +A,qWJ϶dFD55-57A,, +wjH,qWJ϶dFD63-65wjH,, +bjH,qWJ϶dFD67-69bjH,, +jH,qWJ϶dFD73-75jH,, +jH,qWJ϶dFD79AjH,, +h,qWJ϶dFD7-9h,, +@,qWJ϶dFD81@,, +~F,qWJ϶dFD83-85~F,, +s,qWJϷH1-5s,, +ۼ,qWJϷH25-27ۼ,, +H,qWJϷH29-31H,, +_,qWJϷH30_,, +ʩ,qWJϷH7-17ʩ,, +Rsӷ~jH,qWJϷRsD32Rsӷ~jH,, +qۻ,qWJϷq۵3qۻ,, +ԽjH,qWJϷs44-49ԽjH,, +_jH,qWJϷq10-16_jH,, +jH,qWJϷq13jH,, +jH,qWJϷq1-9jH,, +ǽͪ,qWJϷq22ǽͪ,, +hɩ~,qWJϷq23hɩ~,, +WK,qWJϷq33-35WK,, +j,qWJϷq6-8j,, +F,qWJϷ1F,, +_,qWJϷ8_,, +ls,qWJϷ۹D21ls,, +b,qWJϷ۹D4b,, +,qWJϷ۹D61,, +d,qWJϸth14d,, +thjH,qWJϸth4-6thjH,, +_פjH,qWJϸth9-11_פjH,, +ܭb,qWJϸUZO1ܭb,, +UZb,qWJϸUZO3UZb,, +֧Q,qWJϸôߵ1-7֧Q,, +ũӷ~,qWJϸôߵ18ũӷ~,, +tzӷ~jH,qWJϸôߵ4tzӷ~jH,, +__ajH,qWJϸôߵ6-16__ajH,, +q,qWJϸôߵ9-23q,, +ɻ,qWJϸw2-4ɻ,, +ÿ(ÿ),qWJϹqD107-109 / ÿ13A ÿ(ÿ),, +aTӷ~jH,qWJϹqD108aTӷ~jH,, +_м,qWJϹqD111-117_м,, +R,qWJϹqD127-129R,, +qDؤjH,qWJϹqD130-140qDؤjH,, +ͱۤjH,qWJϹqD13-41ͱۤjH,, +v,qWJϹqD141-155 / µD1A-Bv,, +jH,qWJϹqD22-52jH,, +(qD),qWJϹqD60-62(qD),, +jH,qWJϹqD74-78jH,, +Q,qWJϹqD83Q,, +A,qWJϹqD88-90A,, +~,qWJϹqD92-94~,, +U_jH,qWJϹqD98-100U_jH,, +,qWJϹŹ|,, +{n,qWJϺqyD2-4{n,, +?,qWJϺqyD3?,, +qyDj,qWJϺqyD9-11qyDj,, +?a,qWJϺָsD11-12?a,, +ıf,qWJϺָsD3-4ıf,, +|,qWJϺָsD5|,, +Rs,qWJϺָsD6ARs,, +,qWJϺ棧{,, +sO,qWJϺ棧{2sO,, +ɵojH,qWJϺo2ɵojH,, +§Q,qWJϻE12A§Q,, +Ew,qWJϻE15Ew,, +jH,qWJϻFO11jH,, +ŭb,qWJϻFO14ŭb,, +Fx1,qWJϻFO1Fx1,, +R?,qWJϻFO2B,, +Ŭ,qWJϻFO2CŬ,, +ܪ,qWJϻFO2ܪ,, +Fx,qWJϻFO3-4Fx,, +Rb,qWJϻFO4B-4CRb,, +x,qWJϻFO7Ax,, +˶,qWJϻFO7˶,, +lO,qWJϻp֤hD,, +~v,qWJϻȹ15-17~v,, +a,qWJϻȹ1a,, +æw,qWJϻȹ27-29æw,, +b,qWJϻrWD162b,, +rWDʦ,qWJϻrWD168-174rWDʦ,, +صؤjH,qWJϻrWD176-178صؤjH,, +رdӷ~jH,qWJϻrWD19-23رdӷ~jH,, +s,qWJϻrWD29-31s,, +jH,qWJϻrWD3-17jH,, +Ra,qWJϻrWD38Ra,, +u,qWJϻrWD42-44u,, +ֺa,qWJϻO14ֺa,, +嶮,qWJϻO15嶮,, +ײb,qWJϻO20ײb,, +׺ab,qWJϻO21׺ab,, +R,qWJϻO22R,, +,qWJϻO3-4,, +ɽb,qWJϻO5ɽb,, +Rb,qWJϻO6Rb,, +忳jH,qWJϼw1-3忳jH,, +ۼ,qWJϼy1ۼ,, +^j,qWJϼy5-9^j,, +s,qWJϼzڤsD12-18s,, +QjH,qWJϼzڤsD20-30QjH,, +jojH,qWJϼzڤsD25-27jojH,, +ۤjH,qWJϼzڤsD29ۤjH,, +Qڰӷ~jH,qWJϼzڤsD31Qڰӷ~jH,, +ww,qWJϼzڤsD32-34ww,, +B,qWJϼzڤsD33B,, +ذӷ~jH,qWJϼzڤsD38ذӷ~jH,, +ia,qWJϼzڤsD46-48ia,, +gHӷ~jH,qWJϼzڤsD4-6gHӷ~jH,, +Ѽּs,qWJϼzڤsD5-9Ѽּs,, +ͧQӷ~jH,qWJϼzڤsD70-74ͧQӷ~jH,, +òjH,qWJϼzڤsD78òjH,, +fl,qWJϼzڤsD80-82fl,, +״jH,qWJϼyO1-1B״jH,, +ʴI,qWJϼyO5ʴI,, +ֻAx,qWJϼ֬D10,, +ֳb,qWJϼ֬D18ֳb,, +HjH,qWJϼ֬D1AHjH,, +ִ,qWJϼ֬D20ִ,, +§ys,qWJϼ֬D2B§ys,, +?֭b,qWJϼ֬D38?֭b,, +֬O,qWJϼ֬D4֬O,, +اQs,qWJϼ֬D6,, +,qWJϼִO,, +ش,qWJϼִO,, +ִO,qWJϼִO,, +׼ֶ,qWJϼִO10-12A׼ֶ,, +I»,qWJϼִO7-9I»,, +֩~,qWJϽc16֩~,, +ؤjH,qWJϽc1-9ؤjH,, +§,qWJϽcF1-9§,, +,qWJϽ2-8,, +sjH,qWJϽ5-7sjH,, +QE,qWJϽëHD10-10AQE,, +QE,qWJϽëHD12-12AQE,, +_,qWJϽëHD1-3_,, +UfO,qWJϽëHD23-29UfO,, +_,qWJϽëHD5-7_,, +QE,qWJϽëHD8-8AQE,, +_,qWJϽëHD9-11_,, +sbjH,qWJϾAw8sbjH,, +AwjH,qWJϾQڵ1AAwjH,, +jH,qWJϾQڵ5-9AjH,, +QjH,qWJϾQڵ6-14QjH,, +w,qWJϿcD18w,, +djH,qWJϿcD20djH,, +THE PHOENIX,qWJϿcD23THE PHOENIX,, +DwjH,qWJϿcD7-9DwjH,, +rW,qWJϿ}15-23rW,, +rWӷ~jH,qWJϿ}1-5rWӷ~jH,, +ɴӷ~jH,qWJϿ}27ɴӷ~jH,, +״ӷ~,qWJϿ}29-31״ӷ~,, +hQjH,qWJϿo,, +Ay,qWJϿo40-42Ay,, +jH,qWJϿo62 -74jH,, +qyjH,qWJϿo82-86qyjH,, +RjH,qWJK1RjH,, +oӷ~jH,qWJK28oӷ~jH,, +RRjH,qWJdJD102-108ARRjH,, +Ŭӷ~jH,qWJdJD114-120Ŭӷ~jH,, +jH,qWJdJD117jH,, +wwj,qWJdJD123-125Awwj,, +a,qWJdJD127-131Aa,, +jH,qWJdJD137-147jH,, +Φwj,qWJdJD146-148Φwj,, +Qj,qWJdJD157-159Qj,, +VqjH,qWJdJD160-174VqjH,, +wjH,qWJdJD167-169wjH,, +°ӷ~jH,qWJdJD171-173°ӷ~jH,, +ʫjH,qWJdJD175-191ʫjH,, +w,qWJdJD188w,, +FWӷ~,qWJdJD193-197FWӷ~,, +Fsӷ~,qWJdJD194-200Fsӷ~,, +PjH,qWJdJD20-24PjH,, +v,qWJdJD212-220v,, +awjH,qWJdJD230-232awjH,, +PjH,qWJdJD233-243PjH,, +qۤjH,qWJdJD238-240qۤjH,, +פjH,qWJdJD245-251פjH,, +W,qWJdJD250W,, +ؤjH,qWJdJD262-268AؤjH,, +jH,qWJdJD271jH,, +F,qWJdJD272-274F,, +֤jH,qWJdJD275-277֤jH,, +wӷ~jH,qWJdJD276-278wӷ~jH,, +Mӷ~jH,qWJdJD280-282Mӷ~jH,, +ؤjH,qWJdJD285-295AؤjH,, +jH,qWJdJD288-290jH,, +׼,qWJdJD296-298׼,, +J,qWJdJD301-307J,, +ajH,qWJdJD308-312ajH,, +sa,qWJdJD309-311Asa,, +ҥӷ~jH,qWJdJD332-334ҥӷ~jH,, +,qWJdJD333,, +֤ͤjH,qWJdJD336-342֤ͤjH,, +ڵoӷ~jH,qWJdJD348-350ڵoӷ~jH,, +E֤jH,qWJdJD356-362E֤jH,, +Eϰӷ~jH,qWJdJD357-359Eϰӷ~jH,, +¼ӷ~jH,qWJdJD361-363¼ӷ~jH,, +ajH,qWJdJD365-371ajH,, +IhjH,qWJdJD381-383IhjH,, +ŽjH,qWJdJD384-388ŽjH,, +HjH,qWJdJD389-399HjH,, +jH,qWJdJD390-396AjH,, +ý,qWJdJD398-400ý,, +ɦwOIjH,qWJdJD3ɦwOIjH,, +صojH,qWJdJD405-419صojH,, +~פjH,qWJdJD410-412~פjH,, +FjH,qWJdJD41FjH,, +դjH,qWJdJD421-425դjH,, +dJjHAy,qWJdJD441-445dJjHϮy,, +j[,qWJdJD442-452j[,, +dJj,qWJdJD451-453dJj,, +WM,qWJdJD458-460WM,, +XyjH,qWJdJD474-476XyjH,, +wjH,qWJdJD478-484wjH,, +jH,qWJdJD485jH,, +dJo,qWJdJD487-489dJo,, +Xȼs,qWJdJD496-498Xȼs,, +óӤjH,qWJdJD513-515óӤjH,, +նפjH,qWJdJD54-62նפjH,, +@yjH,qWJdJD64-66@yjH,, +Hӷ~jH,qWJdJD68-70Hӷ~jH,, +ؤjH,qWJdJD72-86ؤjH,, +WJ?jH,qWJdJD89WJ?jH,, +Q{jH,qWJdJD93-107Q{jH,, +ʳj,qWJdJD94-100ʳj,, +UqOIjH,qWJdJDUqOIjH,, +J,qWJpo18J,, +PӤjH,qWJpo2PӤjH,, +pQjH,qWJpo8pQjH,, +q,qWJp1q,, +اQjH,qWJ´D,, +ujH,qWJ´D110-116ujH,, +֩~,qWJ´D118֩~,, +ͧQjH,qWJ´D120-122ͧQjH,, +֤jH,qWJ´D148-156֤jH,, +njH,qWJ´D151-161njH,, +F_,qWJ´D207-209F_,, +QӤjH,qWJ´D208-214QӤjH,, +^jH,qWJ´D215-225A^jH,, +O,qWJ´D272,, +ֲKjH,qWJ´D307-311ֲKjH,, +ѤjH,qWJ´D314-322ѤjH,, +OpjH,qWJ´D340-348OpjH,, +ۤjH,qWJ´D404-406ۤjH,, +شӷ~jH,qWJ´D408-412شӷ~jH,, +ΰӷ~jH,qWJ´D409-413ΰӷ~jH,, +ӷ~,qWJ´D414-424ӷ~,, +n֤jH,qWJ´D415-421n֤jH,, +dJjHBy,qWJ´D440dJjHЮy,, +޵Ѱӷ~jH,qWJ´D456-458޵Ѱӷ~jH,, +ģKӷ~jH,qWJ´D460-462ģKӷ~jH,, +wjH,qWJ´D468AwjH,, +ʹF,qWJ´D468ʹF,, +FjH,qWJ´D477-481FjH,, +HyOI,qWJ´D482HyOI,, +sjH,qWJ´D483-499sjH,, +?ФjH,qWJ´D488?ФjH,, +Qs,qWJ´D496Qs,, +wӷ~jH,qWJ´D500-504wӷ~jH,, +~jH,qWJ´D501-515~jH,, +pӷ~,qWJ´D506-508pӷ~,, +ګHjH,qWJ´D68-82ګHjH,, +ӦȤjH,qWJ´D69-75ӦȤjH,, +FȻȦW,qWJ´D77FȻȦW,, +jH,qWJ´D98-108jH,, +֬IjH,qWJ§yD101֬IjH,, +O_§yjH,qWJ§yD103O_§yjH,, +ɿjH,qWJ§yD13-19ɿjH,, +?ӷ~jH,qWJ§yD21-23?ӷ~jH,, +Ͱӷ~jH,qWJ§yD26Ͱӷ~jH,, +ؤjH,qWJ§yD28-30ؤjH,, +PؤjH,qWJ§yD32-34APؤjH,, +ŬfjH,qWJ§yD36ŬfjH,, +RjH,qWJ§yD37RjH,, +§ɤjH,qWJ§yD44A-44D§ɤjH,, +AjH,qWJ§yD91AjH,, +PjH,qWJ§yD93-99PjH,, +ÿ,qWJ§娽5ÿ,, +hFa,qWJŶD100-104hFa,, +wѭb,qWJŶD110wѭb,, +ͽˤjH,qWJŶD12-22ͽˤjH,, +棻,qWJŶD130-132棻,, +wO,qWJŶD135wO,, +A,qWJŶD155A,, +rb,qWJŶD2-10rb,, +bf,qWJŶD43-43Bbf,, +db,qWJŶD54-56db,, +ѭb,qWJŶD57-59ѭb,, +@,qWJŶD62@,, +f,qWJŶD63f,, +LO,qWJŶD65LO,, +O,qWJŶD69A-69BO,, +Ab,"qWJŶD71-71A,73-73AAb",, +æws?,qWJŶD72-80æws?,, +azb,qWJŶD75,, +A̭b,qWJŶD77A̭b,, +c,qWJŶD83-85c,, +Ŷ,qWJŶD86Ŷ,, +ض,qWJŶD91-93ض,, +]f,qWJŶD92]f,, +ֶ,qWJŶD94ֶ,, +,qWJŶD95,, +,qWJŶD98,, +Qb,qWJsD11A-11DQb,, +sb,qWJsD1sb,, +¶,qWJù38¶,, +RjH,qWJù59-61RjH,, +pּ,qWJӦڹD100-102pּ,, +Iӷ~jH,qWJӦڹD105-111Iӷ~jH,, +ӷNj,qWJӦڹD112ӷNj,, +ũjH,qWJӦڹD117-119ũjH,, +djH,qWJӦڹD1-3djH,, +j~jH,qWJӦڹD141j~jH,, +UQ,qWJӦڹD15UQ,, +Фlӷ~jH,qWJӦڹD17-23Фlӷ~jH,, +oj,qWJӦڹD25-29oj,, +Hӷ~jH,qWJӦڹD76-78Hӷ~jH,, +óǼ,qWJӦڹD84-86óǼ,, +§Qӷ~jH,qWJӦڹD8§Qӷ~jH,, +ӦڤjH,qWJӦڹD93-103ӦڤjH,, +yӷ~jH,qWJy17yӷ~jH,, +sȶΤjH,qWJy18sȶΤjH,, +üwjH,qWJ_FyD16BüwjH,, +_ajH,qWJ_FyD26-28_ajH,, +awj,qWJ_FyD5-11awj,, +ģӷ~jH,qWJģص21ģӷ~jH,, +Ǥ,qWJģص25Ǥ,, +ʼ֤,qWJģص3-9ʼ֤,, +ny{,qWJģص39ny{,, +w,qWJģص44w,, +RjH,qWJ2RjH,, +ػO,qWJWJlD1-2ػO,, +hFaJ,qWJWJlD3-5hFaJ,, +Iɻ,qWJWJlD6Iɻ,, +,qWJWJD109,, +oQӷ~jH,qWJWJD113-117oQӷ~jH,, +st,qWJWJD125st,, +⤤,qWJWJD133⤤,, +פjH,qWJWJD136פjH,, +W֩~,qWJWJD141-143W֩~,, +w,qWJWJD151-163w,, +n}jH,qWJWJD152-158n}jH,, +dְӷ~jH,qWJWJD185dְӷ~jH,, +PjH,qWJWJD187-191PjH,, +sͦjH,qWJWJD188sͦjH,, +,qWJWJD1,, +ƤjH,qWJWJD201-203ƤjH,, +֦wjH,qWJWJD205-207֦wjH,, +ɱdjH,qWJWJD212-214ɱdjH,, +θۤjH,qWJWJD230θۤjH,, +wפj,qWJWJD251-253wפj,, +Ib,qWJWJD39-49Ib,, +WJj,qWJWJD40-54WJj,, +wb,sɤjH,, +nb@,sɤjH,, +dֶ,sɤjH,, +hnW,sɤjH,, +jHjH,sɤjHLOT1850sֹD26-50jHjH,, +wjH,sɤjHLOT1851sֹD27-43wjH,, +Ż,sɤjHTPTL84sֹD51-59Ż,, +u`,sɤjHϤTJ101u`,, +lypv,sɤjHϤUy93-107lypv,, +jBjH,sɤjHϤj10-22jBjH,, +é,sɤjHϤj11-15é,, +sb,sɤjHϤj26-40sb,, +OhutjH,sɤjHϤj17OhutjH,, +x,sɤjHϤj12-20x,, +_ؼ,sɤjHϤj1-27_ؼ,, +_׼,sɤjHϤj4-10_׼,, +ܤs,sɤjHϤjH,, +֭b,sɤjHϤjH3821֭b,, +sl~,sɤjHϤjH3985,, +Qܻ,sɤjHϤjH4111Qܻ,, +pLa,sɤjHϤjH4135pLa,, +?Ax,sɤjHϤjH4188?Ax,, +Qb,sɤjHϤjH4233Qb,, +BA,sɤjHϤjH4283BA,, +s,sɤjHϤjH4699s,, +[Rx,sɤjHϤjH4883[Rx,, +pg,sɤjHϤjHjH]h18pg,, +өM,sɤjHϤjHөM15өM,, +_baM,sɤjHϤjHөM2_baM,, +_bhM,sɤjHϤjHөM2_bhM,, +s100,sɤjHϤjH],, +ֻx,sɤjHϤjHY,, +Ӵs,sɤjHϤjHY,, +ؼֻx,sɤjHϤjHY,, +ӴĤ@Ĥ@y,sɤjHϤjHY18,, +֭~q,sɤjHϤj19,, +ôIe]^q,sɤjHϤjI1ôIe]^q,, +oiOq,sɤjHϤjI20oiOq,, +j֬,sɤjHϤjI8j֬,, +_,sɤjHϤjo18-20_,, +ën~q,sɤjHϤj11-13ën~q,, +Ѯɡ]ù󶰹Ρ^q,sɤjHϤj5Ѯɡ]ù󶰹Ρ^q,, +pפjH,sɤjHϤja1-13,, +wּ,sɤjHϤja12-24wּ,, +צ~,sɤjHϤja28-32צ~,, +ojH,sɤjHϤja34-48ojH,, +üּ,sɤjHϤja6-10üּ,, +ss,sɤjHϤs,, +s,sɤjHϤs18s,, +׻A,sɤjHϤs23׻A,, +jH_s,sɤjHϤs8,, +jHѰsjH_s|,sɤjHϤs8jHѰsjH_s|,, +yMs,sɤjHϤs9yMs,, +ɤjH,sɤjHϤ1-17ɤjH,, +,sɤjHϤ14-16,, +sģ,sɤjHϤ18-20sģ,, +I,sɤjHϤ19-21I,, +I,sɤjHϤ22-26I,, +[n,sɤjHϤ23-25[n,, +ؿ,sɤjHϤ27-29ؿ,, +s,sɤjHϤ28-30s,, +ģ,sɤjHϤ31-33ģ,, +,sɤjHϤ32-34,, +jH,sɤjHϤ35-41jH,, +y,sɤjHϤ36-38y,, +jH,sɤjHϤ43-51jH,, +QFjH,sɤjHϤ44-46QFjH,, +yjH,sɤjHϤ53-61yjH,, +A,sɤjHϤ54-56A,, +Ž,sɤjHϤ8Ž,, +W~,sɤjHϤW~,, +ӥu~,sɤjHϤӥu~,, +,sɤjHϥ_15-19,, +w,sɤjHϥ_23-33w,, +Ae,sɤjHϥ_9Ae,, +s,sɤjHϥbsw,, +Rs,sɤjHϥŨ,, +ҩ,sɤjHϥŨ11-13ҩ,, +MW,sɤjHϥŨ111MW,, +`w,sɤjHϥŨ15`w,, +Ũ,sɤjHϥŨ17Ũ,, +I,sɤjHϥŨ19I,, +ٰ`jH,sɤjHϥŨ21-27ٰ`jH,, +R,sɤjHϥŨ29-35au,, +ӥu~,sɤjHϥŨ51ӥu~,, +ֽ~,sɤjHϥŨ61ֽ~,, +Ŷb,sɤjHϥŨ6Ŷb,, +Ŷbs,sɤjHϥŨ6Ŷbs,, +Ŷb,sɤjHϥŨ6Ŷb,, +,sɤjHϥŨ72,, +jn,sɤjHϥŨjn,, +F~,sɤjHϥŨF~,, +AR,sɤjHϥR23AR,, +jHWū,sɤjHϦw8-10jHWū,, +jH,sɤjHϦw9jH,, +b,sɤjHϦwH11b,, +s,sɤjHϦwH2s,, +bͻ,sɤjHϦwH7bͻ,, +bY,sɤjHϦwH9bY,, +ɶb,sɤjHϦwH15ɶb,, +jHs,sɤjHϦw1jHs,, +jHsy,sɤjHϦw1jHsy,, +jHsyI,sɤjHϦw1jHsyI,, +jHsyw,sɤjHϦw1jHsyw,, +jHsy,sɤjHϦw1jHsy,, +w,sɤjHϦwID10-12w,, +߼,sɤjHϦwID11-19߼,, +I,sɤjHϦwID14-16I,, +b,sɤjHϦwID18b,, +EBj,sɤjHϦwID26-28EBj,, +I,sɤjHϦwID2-8I,, +wI,sɤjHϦwID30-32wI,, +_,sɤjHϦwO1_,, +K,sɤjHϦwO2K,, +A̪,sɤjHϦwO3A̪,, +B,sɤjHϦwO4B,, +ҵ^Wͩ~,sɤjHϦF530ҵ^Wͩ~,, +ҵ^W͵^~,sɤjHϦF533ҵ^W͵^~,, +F,sɤjHϦD,, +WԪ,sɤjHϩWԧ,, +~aض,sɤjHϩH50~aض,, +ɻAs,sɤjHϩɻAs,, +Ӯp,sɤjHϩӮp,, +F,sɤjHϪF6-16F,, +M~,sɤjHϪLsM~,, +ns,sɤjHϫn|,, +nsO,sɤjHϫn|nsO,, +E,sɤjHϫn11-13E,, +Qy,sɤjHϫn12-14Qy,, +n,sɤjHϫn15-17n,, +njH,sɤjHϫn16njH,, +n,sɤjHϫn19-23n,, +s,sɤjHϫn2Cs,, +طs,sɤjHϫn8-10طs,, +I,sɤjHϫnB1I,, +sFs,sɤjHϫnB9sFs,, +ѽWĤ@y,sɤjHϬi5ѽWĤ@y,, +ѽW,sɤjHϬi9,, +wּ,sɤjHϬs1wּ,, +ئw,sɤjHϬs3ئw,, +٩~,sɤjHϬs5-6٩~,, +뻨,sɤjHϮ1뻨,, +T뻨,sɤjHϮ뤤߳,, +ӮpĤTy,sɤjHϰ|1ӮpĤTy,, +sp,sɤjHϰ۸,, +spb,sɤjHϰ۸11spb,, +sp,sɤjHϰ۸9sp,, +Rw,sɤjHϱRw1-5Rw,, +jHӷ|sɶmijjH,sɤjHϱRw4-8jHӷ|sɶmijjH,, +,sɤjHϱRw7,, +ҪYb,sɤjHϱ|,, +jH,sɤjHϱ|1jH,, +w,sɤjHϲW,, +w,sɤjHϲW301,, +d֪,sɤjHϳYDD7d֪,, +Ia,sɤjHϴI15-17Ia,, +so,sɤjHϴI16-22so,, +s,sɤjHϴI19-21s,, +μ,sɤjHϴI24-26μ,, +sd,sɤjHϴI25sd,, +Iμ,sɤjHϴI27-29Iμ,, +I,sɤjHϴI28I,, +jHŻj,sɤjHϴI30-44jHŻj,, +|~,sɤjHϴI31-33|~,, +,sɤjHϴI35-37,, +I,sɤjHϴI39-41I,, +s,sɤjHϴI3s,, +I,sɤjHϴI43-45I,, +ôIjH,sɤjHϴI46-52ôIjH,, +Ҽy,sɤjHϴI47-49Ҽy,, +B,sɤjHϴI54-56B,, +ذ,sɤjHϴI55-57ذ,, +s,sɤjHϴI59-61s,, +òjH,sɤjHϴI6-14òjH,, +ò,sɤjHϴI62ò,, +ئ,sɤjHϴI63-65ئ,, +֩f,sɤjHϴI64֩f,, +|,sɤjHϴI65A-67|,, +ë,sɤjHϴI66-68ë,, +o,sɤjHϴI69-71o,, +IjH,sɤjHϴI7-13IjH,, +hb,sɤjH϶h,, +ӱss,sɤjH϶h3ӱss,, +ɵػ,sɤjH϶mƷ|{35-37ɵػ,, +Rü,sɤjH϶mƷ|17-19Rü,, +w,sɤjH϶mƷ|33-39w,, +U,sɤjH϶mƷ|3U,, +֦w,sɤjH϶mƷ|41-49֦w,, +_,sɤjH϶mƷ|9-15_,, +xp~,sɤjHϷsήaxp~,, +bs,sɤjHϷsήabs,, +粻,sɤjHϷw17-23粻,, +w1,sɤjHϷw1,, +jH,sɤjHϷw3-11jH,, +RjH,sɤjHϹBY10RjH,, +jH,sɤjHϹBY6jH,, +jH,sɤjHϹBY8jH,, +swjH,sɤjHϹBY20-26swjH,, +éM,sɤjHϹBY75-87éM,, +s˻,sɤjHϹBY89-93s˻,, +lɶb,sɤjHϹlɸ1lɶb,, +dμ,sɤjHϹt11-13dμ,, +ѦZ,sɤjHϹt15ѦZ,, +sw,sɤjHϹt21sw,, +M,sɤjHϹt25-27M,, +m»,sɤjHϹt37-39m»,, +ؼ,sɤjHϹt43ؼ,, +t,sɤjHϹt45-47t,, +궯,sɤjHϹt4-6궯,, +fw,sɤjHϹt49-51fw,, +Ƚ,sɤjHϹt53-55Ƚ,, +ö,sɤjHϹt57-59ö,, +tw,sɤjHϹt5-7tw,, +|b,sɤjHϹ|8|b,, +õo,sɤjHϻAM1õo,, +Φw,sɤjHϻAM3Φw,, +RM,sɤjHϻAM5RM,, +Aɪ,sɤjHϻAɵ3Aɪ,, +ת,sɤjHϻAֵ11ת,, +׬u~Ay,sɤjHϻAֵ6׬u~Ϯy,, +Iܪ,sɤjHϻAֵ8Iܪ,, +AL,sɤjHϻAֵ9AL,, +,sɤjHϻ,, +Ps,sɤjHϻ9,, +ļ,"sɤjHϼs֧{16, 24, 26ļ",, +֩,sɤjHϼs֧{3-19֩,, +dּ,sɤjHϼs֨1-11dּ,, +Fּ,sɤjHϼs֨13-15Fּ,, +o,sɤjHϼs֨17-23o,, +a,sɤjHϼs֨25-31a,, +jHsֹDsĤj,sɤjHϼsֹD114-124jHsֹDsĤj,, +ؼ,sɤjHϼsֹD135A-135Bؼ,, +Pּ,sɤjHϼsֹD148-150Pּ,, +øۼ,sɤjHϼsֹD149-155øۼ,, +s֤jH,sɤjHϼsֹD21-25s֤jH,, +ֺa,sɤjHϼsֹD52ֺa,, +֥,sɤjHϼsֹD54-58֥,, +פjH,sɤjHϼsֹD60-62פjH,, +_djH,sɤjHϼsֹD70-78_djH,, +wd,sɤjHϼsֹD80-82wd,, +s,sɤjHϼsֹD84s,, +f,sɤjHϼsֹD86-92f,, +sֵخx,sɤjHϼsֹD8sֵخx,, +Eoj,sɤjHϼsֹD94-100Eoj,, +wb,sɤjHϾB2wb,, +b,sɤjHϾB6-8b,, +s,sɤjHϿPl18s,, +A,sɤjHϿPl2A,, +ɶO,sɤjHAs100ɶO,, +a,sɤjHAs201,, +A¸x,sɤjHAs,, +A,sɤjHAs,, +jHAsx,sɤjHAs5-6jHA,, +פs,sɤjHs,, +s,sɤjHs164,, +sO,sɤjHssO,, +sAs,sɤjHu20sAs,, +Cj,sɤjH|2Cj,, +s,sɤjHA樽18,, +Iܪ,sɤjH¼V23Iܪ,, +aRb,sɤjH¼V28aRb,, +QjH,sɤjH¼V30QjH,, +sjH,sɤjH¼V4-20sjH,, +a,sɤjH¼V8a,, +fojH,sɤjH¼V9fojH,, +a,sɤjHh14-16a,, +w}jH,sɤjHh15-21w}jH,, +B,sɤjHh18B,, +μ,sɤjHh20-22μ,, +}s,sɤjHh23-25}s,, +}Q,sɤjHh26-28}Q,, +}A,sɤjHh27-33}A,, +^ؼ,sɤjHh30-30B^ؼ,, +l,sɤjHh3-13l,, +_,sɤjHh32-38_,, +M,sɤjHh41-53M,, +A,sɤjHhq10-12A,, +Aż,sɤjHhq22-24Aż,, +ha,sɤjHhq3ha,, +_,sɤjH_D3_,, +_djH,sɤjH_m35-39_djH,, +_ּ,sɤjH_m41-45_ּ,, +,sɤjH_m46-52,, +ؼּ,sɤjH_m47-53ؼּ,, +ּ,sɤjH_m54-60ּ,, +_,sɤjH_m59-63_,, +ܵo,sɤjH_m72-74ܵo,, +wHj,sɤjH_m76-86wHj,, +88s,sɤjH_m88s,, +au,sɤjHS̸1LWG,, +LW,sɤjHS28,, +ss,sɤjHS31ss,, +ת,sɤjHS33ת,, +EѤU,sɤjHS38EѤU,, +[{,sɤ԰,, +Ŵs,sɤ԰,, +A?,sɤ԰,, +?,sɤ԰ ̤s?,, +Rb,sɤ԰LOT 21Rb,, +p@,sɤ԰LOT3776Cs - Ԭq162-168p@,, +ABy,sɤ԰MqĤGA?33,, +Ab,sɤ԰YLTL122Ԧw76-98Ab,, +Ai,sɤ԰YLTL126Ԧwָ89-93Ai,, +ɦjH,sɤ԰YLTL270δ{21ɦjH,, +Xq,sɤ԰YLTL347Xq31Xq,, +],sɤ԰YLTL95Ԧwָ1-11A],, +YA,sɤ԰ϤKmW,, +fĤG,"sɤ԰ϤKmW293B,313A, 313B, 313CfĤG",, +Aa,sɤ԰ϤKmW491-497Aa,, +@,sɤ԰ϤKmW600@,, +IAy,sɤ԰ϤKmW|87IAy,, +IDy,sɤ԰ϤKmW|87IDy,, +IEy,sɤ԰ϤKmW|87IEy,, +IFy,sɤ԰ϤKmW|87IFy,, +IGy,sɤ԰ϤKmW|87IGy,, +IHy,sɤ԰ϤKmW|87IHy,, +IIy,sɤ԰ϤKmW|87IIy,, +IJy,sɤ԰ϤKmW|87IJy,, +IKy,sɤ԰ϤKmW|87IKy,, +I,sɤ԰ϤKmW|88I,, +ت,sɤ԰ϤKmU|150ت,, +y,sɤ԰ϤKm^,, +lv,"sɤ԰ϤKm^160,182-189lv",, +s^,sɤ԰ϤKm^170-177s^,, +Ŭfb,sɤ԰ϤKm^216-222Ŭfb,, +y,sɤ԰ϤKm^s206y,, +P,sɤ԰ϤKm^s60,, +P,sɤ԰ϤKm^s60 P,, +绨,sɤ԰ϤKm|11绨,, +IR,sɤ԰ϤKm|19IR,, +I,sɤ԰ϤKm|20AI,, +»,sɤ԰ϤKmФߧ306-337»,, +j@,sɤ԰ϤKmФߧ502j@,, +qR,sɤ԰ϤKmФߧ511A-FqR,, +ɪ,sɤ԰ϤKm۴199ɪ,, +R,sɤ԰ϤKm۴287R,, +Ū,sɤ԰ϤKma234Ū,, +sb,sɤ԰ϤKma184A-Csb,, +b,sɤ԰ϤKma5-7b,, +Ԥa,sɤ԰ϤKmxsùΧ67-79Ԥa,, +ɱd,sɤ԰ϤKmAW^190-196ɱd,, +IȪ,sɤ԰ϤKmAW^sIȪ,, +I,sɤ԰ϤKmAWЧ20,, +Aֻ,sɤ԰ϤKmAWa,, +Ab9y,sɤ԰ϤKmAиΧ100Ab9y,, +Ѥa ,sɤ԰ϤKmA@ 65-68Ѥa,, +nb,sɤ԰ϤQKmjŸnb,, +b,sɤ԰ϤQKms272b,, +,sɤ԰ϤQKmY132,, +Ra,sɤ԰ϤQKmWYDD 115 LOT 1507,, +n,sɤ԰ϤQKmWYΧ91An,, +s,sɤ԰ϤQKmиs,, +ت,sɤ԰ϤQKmŸ12,, +|,sɤ԰ϤQKm11,, +v,sɤ԰ϤQKm83,, +¼Ap,sɤ԰ϤQKmNO. 138¼Ap,, +פjH,sɤ԰ϤSs31-35AפjH,, +I,sɤ԰ϤSs37-51GI,, +mI,sɤ԰ϤSs56mI,, +sjH,sɤ԰ϤSs7-25sjH,, +b,sɤ԰ϤWЧ70b,, +̴,sɤ԰ϤW̴,, +Rw,sɤ԰Ϥjֶ8,, +jҲĪ,sɤ԰ϤjҲĪ,, +jH/,sɤ԰ϤjH/,, +֬P,sɤ԰Ϥj@Y|14-24֬P,, +ز,sɤ԰Ϥj@Y|2-12ز,, +צ~,sɤ԰Ϥj@Y|26-36צ~,, +p,sɤ԰Ϥjŧ397-402p,, +_ojH,sɤ԰ϤjŸ24-30_ojH,, +jż,sɤ԰ϤjŸ29-33jż,, +a,sɤ԰ϤjŸ32-34a,, +֬v,sɤ԰ϤjŸ35-39֬v,, +ԤjH,sɤ԰ϤjŸ41-59ԤjH,, +w֤j,sɤ԰ϤjŸ48-72w֤j,, +ojH,sɤ԰ϤjŸ48A-48KojH,, +n,sɤ԰ϤjŸ61-67n.,, +Ap,sɤ԰ϤjŸ99Ap,, +۰a,sɤ԰Ϥۧ50۰a,, +Qoj,sɤ԰Ϥ֧{5Qoj,, +IȪ,sɤ԰ϤԤKmAW^s50IȪ,, +Ws,sɤ԰ϤԤjŸ101 Ws,, +,sɤ԰ϤԤۧ63,, +s,sɤ԰ϤԤn25s,, +~,sɤ԰ϤԤn9~,, +Iɪ,sɤ԰ϤԥзHH29Iɪ,, +wQj,sɤ԰ϤԦw100-108wQj,, +n,sɤ԰ϤԦw110-136An,, +֨Ӽ,sɤ԰ϤԦw11-17֨Ӽ,, +ӲĤG,sɤ԰ϤԦw138-160ӲĤG,, +w,sɤ԰ϤԦw170-190w,, +EB,sɤ԰ϤԦw21-35EB,, +a׼,sɤ԰ϤԦw2-18a׼,, +,sɤ԰ϤԦw37-39,, +N,sɤ԰ϤԦw51-53N,, +I,sɤ԰ϤԦw55-57I,, +_פjH,sɤ԰ϤԦw59A_פjH,, +P,sɤ԰ϤԦw59BP,, +sa,sɤ԰ϤԦw61sa,, +jQ,sɤ԰ϤԦw63jQ,, +֦w,sɤ԰ϤԦw65-79֦w,, +O,sɤ԰ϤԦw70-74O,, +~,sɤ԰ϤԦw81-91~,, +w֤u~jH,sɤ԰ϤԦwָ109-111w֤u~jH,, +F,sɤ԰ϤԦwָ129F,, +FoiԤjH,sɤ԰ϤԦwָ13-33FoiԤjH,, +Qs,sɤ԰ϤԦwָ35-47Qs,, +ao,sɤ԰ϤԦwָ49-57ao,, +ÿjH,sɤ԰ϤԦwָ59-61ÿjH,, +ئw,sɤ԰ϤԦwָ77-81Cئw,, +pӼ,sɤ԰ϤԦwָ83-87pӼ,, +s],sɤ԰ϤԦw12-18s],, +,sɤ԰ϤԦw1-3,, +ʫ,sɤ԰ϤԦw24-28ʫ,, +w,sɤ԰ϤԦw30-40Bw,, +w,sɤ԰ϤԦw59-67w,, +~j,sɤ԰ϤԦw5-9~j,, +εoj,sɤ԰ϤԦw60-80εoj,, +IFs,sɤ԰ϤԦ׵23IFs,, +hAa,sɤ԰ϤԨF38hAa,, +F@,sɤ԰ϤԪF8A-8BF@,, +,sɤ԰ϤԫCs̤sq131 ,, +Զh,sɤ԰ϤԫCsD128Զh,, +Үx~,sɤ԰Ϥԫ̤ș˨8Үx~,, +aw,sɤ԰Ϥԫ̤se1aw,, +ջ,sɤ԰ϤԬxj23ջ,, +,sɤ԰ϤԬxۧ7,, +ɮ۶,sɤ԰ϤԬxۧ,, +Ԯp,sɤ԰ϤԬxx9Ԯp,, +wyjH,sɤ԰ϤԬxwyjH,, +R,sɤ԰ϤԬx3R,, +IRs,sɤ԰ϤԬyBsꩧ123IRs,, +_,sɤ԰ϤԬM{11-11B_,, +Ow,sɤ԰ϤԬM{13-25Ow,, +,sɤ԰ϤԬM{1-9,, +کjH,sɤ԰ϤԬM{36-48کjH,, +_,sɤ԰ϤԭHsF25_,, +,sɤ԰ϤԭHsF33,, +Ѫ,sɤ԰ϤԭHsFѪ,, +a,sɤ԰ϤԭHs118a,, +njH,sɤ԰ϤԮ17-21njH,, +jH,sɤ԰ϤԮ23-29jH,, +Ի,sɤ԰ϤԮ7Ի,, +,sɤ԰ϤԮ9-15,, +jjH,sɤ԰ϤԮŵ2-28jjH,, +,sɤ԰ϤԱdָ10-12,, +vw,sɤ԰ϤԱdָ13-25vw,, +ŦnjH,sɤ԰ϤԱdָ27-31ŦnjH,, +dּs,sɤ԰ϤԱdָ8dּs,, +ӫa,sɤ԰ϤԷHssӫa,, +ɴ,sɤ԰ϤԷs14-16ɴ,, +װ],sɤ԰ϤԷs2-12װ],, +,sɤ԰ϤԷs34-36,, +L¦i,sɤ԰ϤԷs83L¦i,, +aHb,sɤ԰ϤԷΧ116aqaHb,, +Ӫ,sɤ԰ϤԽNm301Ӫ,, +w֪,sɤ԰ϤԾww֪,, +I~,sɤ԰ϤAAWNy250I~,, +Aw,sɤ԰ϤAAW200Aw,, +A,sɤ԰ϤA¸jD8A,, +sɥN,sɤ԰Ϥs9,, +ss,sɤ԰Ϥ_38ss,, +Aخx,sɤ԰Ϥn1,, +fR,sɤ԰Ϥn23fR,, +s,sɤ԰Ϥn25s,, +ŧQ,sɤ԰Ϥͥ11ŧQ,, +ѴIb,sɤ԰ϤѨq15,, +ѯb,sɤ԰Ϥѫ1ѯb,, +mIŴ,sɤ԰ϤѮ12mIŴ,, +?z,sɤ԰ϤѮ2Ĥ@?z,, +ѯb,sɤ԰Ϥѯb,, +s_ӳ,sɤ԰ϤѴ1s_ӳ,, +ѷRbR,sɤ԰ϤѷѷRbR,, +za,sɤ԰ϤѸ33,, +Ѳb,sɤ԰Ϥѹt3Ѳb,, +ѹ|b,sɤ԰ϤѺa3ѹ|b,, +sjH,sɤ԰Ϥs5sjH,, +p],sɤ԰Ϥ]11p],, +sӤjH,sɤ԰Ϥ]1-13sӤjH,, +U,sɤ԰Ϥ]28U,, +F,sɤ԰Ϥ]2F,, +HojH,sɤ԰Ϥ]38-60HojH,, +AajH,sɤ԰Ϥ]66AajH,, +a,sɤ԰Ϥ]90a,, +Ar,sɤ԰Ϥs93Ar,, +,sɤ԰ϤDNO.23,, +[{,sɤ԰ϥd̺|[{10,, +ּӤG,sɤ԰ϥX|8ּӤG,, +Iw,sɤ԰ϥзHmsͧ100I,, +Iɪ,sɤ԰ϥзH,, +yӪ,"sɤ԰ϥзH, HH1AyӪ",, +yӪ,sɤ԰ϥзHHmsͧ,, +Ib,sɤ԰ϥۮH178BIb,, +nv,sɤ԰ϦXq10-28nv,, +_פjH,sɤ԰ϦXq1-7_פjH,, +y~j,sɤ԰ϦXq30-36y~j,, +B,sɤ԰ϦXq38-40B,, +XqjH,sɤ԰ϦXq42-48XqjH,, +,sɤ԰ϦXq50-68,, +j,sɤ԰ϦXq55-63Bj,, +,sɤ԰ϦXq65-71,, +q,sɤ԰ϦXq68q,, +s,sɤ԰ϦXq70-76s,, +o,sɤ԰ϦXq73-75o,, +~o,sɤ԰ϦXq77-79~o,, +I,sɤ԰ϦXq78-84I,, +دq,sɤ԰ϦXq86-90دq,, +~,sɤ԰ϦXq9-15~,, +ͱۼ,sɤ԰ϦXq92-100ͱۼ,, +w,sɤ԰ϦXq93-97w,, +dojH,sɤ԰ϦX]11-23dojH,, +dojH,sɤ԰ϦX]19dojH1y,, +Xqӷ~,sɤ԰ϦX]33Xqӷ~,, +n,sɤ԰ϦX]36-44n,, +ؼ,sɤ԰ϦPֵ10-16ؼ,, +ww,sɤ԰ϦPֵ24-28ww,, +Eּ,sɤ԰ϦPֵ25-29Eּ,, +_,sɤ԰ϦPֵ2-8_,, +wּ,sɤ԰ϦPֵ31-35wּ,, +nv,sɤ԰Ϧw}5nv,, +_q,sɤ԰Ϧw}7_q (A-Dy),, +wd,sɤ԰Ϧwd7-19wd,, +@z,sɤ԰Ϧw38@z,, +׬v,sɤ԰Ϧw59׬v,, +ֹFΫFu~jH,sɤ԰Ϧwָ13-33ֹFΫFu~jH,, +HsjH,sɤ԰Ϧw20-22HsjH,, +nmv,sɤ԰Ϧw42-58nmv,, +î,sɤ԰Ϧw6-10î,, +ɱdjH,sɤ԰Ϧw@2ɱdjH,, +ѻb,sɤ԰Ϧ̮HCs80sкѻb,, +ujH,sɤ԰Ϧ2ujH,, +njH,sɤ԰Ϧ׵10njH,, +qjH,sɤ԰Ϧ׵20qjH,, +IFs,sɤ԰Ϧ׵23IFs,, +,sɤ԰Ϧ׵2,, +IjH,sɤ԰Ϧ׵9IjH,, +djH,sɤ԰Ϧε17djH,, +nov,sɤ԰Ϧε18nov,, +ֻ,sɤ԰Ϧε5-11ֻ,, +ojH,sɤ԰ϧo|8ojH,, +Ԭޤ,sɤ԰ϧ~11Ԭޤ,, +ԶT,sɤ԰ϧ~33ԶT,, +~uT,sɤ԰ϧ~F18~uT,, +?II,sɤ԰ϧ~F21-35?II,, +RsԤ,sɤ԰ϧ~F21-35RsԤ,, +wlu~jH,sɤ԰ϧ~F22wlu~jH,, +Au~jH,sɤ԰ϧ~F2Au~jH,, +ʬu~jH,sɤ԰ϧ~F8ʬu~jH,, +פu~jH,sɤ԰ϧ~n22פu~jH,, +du(),sɤ԰ϧ~n8-12du(),, +s,sɤ԰ϧFLOT NO 3875 IN DD120,, +ҪYaG,sɤ԰ϨF19 ҪYaG,, +dw,sɤ԰Ϩd23dw,, +Ǥ,sɤ԰ϨF1,, +q,sɤ԰ϩ|18q,, +nӤjH,sɤ԰Ϫe_ĤQGA?11,, +,sɤ԰Ϫ{2,, +jH,sɤ԰Ϫ|1-31jH,, +nv,sɤ԰Ϫ|28nv,, +w,sɤ԰Ϫ|2w,, +H,sɤ԰Ϫ|33-41H,, +פjH,sɤ԰Ϫ]2-20AפjH,, +ؤ,sɤ԰Ϫ]34-46ؤ,, +I],sɤ԰Ϫ]45-49I],, +ɦw,sɤ԰Ϫ]51-53ɦw,, +}߼s,sɤ԰ϫCs - Ԭq115-127}߼s,, +?פjH,sɤ԰ϫCs - Ԭq150-160?פjH,, +~,sɤ԰ϫCs - Ԭq161~,, +jH,sɤ԰ϫCs - Ԭq17A-21AjH,, +P֤j,sɤ԰ϫCs - Ԭq186-194P֤j,, +ة,sɤ԰ϫCs - Ԭq206-216ة,, +IjH,sɤ԰ϫCs - Ԭq224IjH,, +Է~,sɤ԰ϫCs - Ԭq225-237Է~,, +ּw,sɤ԰ϫCs - Ԭq238-242ּw,, +U,sɤ԰ϫCs - Ԭq239-247U,, +E~,sɤ԰ϫCs - Ԭq253-263E~,, +Ow,sɤ԰ϫCs - Ԭq2-6Ow,, +פjH,sɤ԰ϫCs - Ԭq39פjH,, +۫Hӷ~jH,sɤ԰ϫCs - Ԭq41-47۫Hӷ~jH,, +jH,sɤ԰ϫCs - Ԭq49-63jH,, +ڥͤԤjH,sɤ԰ϫCs - Ԭq91-93ڥͤԤjH,, +~HUȦ椸ԤjH,sɤ԰ϫCs - Ԭq95-97~HUȦ椸ԤjH,, +ڶȦjH,sɤ԰ϫCs - Ԭq96ڶȦjH,, +Ȥ԰ӷ~,sɤ԰ϫCsԬq102-108Ȥ԰ӷ~,, +ΤjH,sɤ԰ϫCsԬq143-151ΤjH,, +Aa,sɤ԰ϫCsԬq171-175Aa,, +ئ,sɤ԰ϫCsԬq195-209ئ,, +ԤjH,sɤ԰ϫCsԬq196-202ԤjH,, +ï],sɤ԰ϫCsԬq1ï],, +jH,sɤ԰ϫCsԬq22-26jH,, +ֿ,sɤ԰ϫCsԬq232B-236ֿ,, +ԦXqqj,sɤ԰ϫCsԬq25ԦXqqj,, +԰ӷ|,sɤ԰ϫCsԬq28԰ӷ|,, +w,sɤ԰ϫCsԬq32-34w,, +׸ΰa,sɤ԰ϫCsԬq50׸ΰa,, +sjH,sɤ԰ϫCsԬq56-60sjH,, +ajH,sɤ԰ϫCsԬq68-76ajH,, +Ԯx,sɤ԰ϫCs̤sq139Ԯx,, +wy,"sɤ԰ϫCsD, xwy",, +vqj,sɤ԰ϫT{18vqj,, +B,sɤ԰ϫT{2B,, +,sɤ԰ϫT{8,, +̤s10,sɤ԰ϫ̤s,, +I~,sɤ԰ϫ̤s403?I~,, +d̪,sɤ԰ϫ̤sCs133d̪,, +a,sɤ԰ϫ̤sCsa,, +F(Ĥ@),sɤ԰ϫ̤s̭11F(Ĥ@),, +֩~,sɤ԰ϫ̤s̷H2֩~,, +Ap1,sɤ԰ϫ̤sHsӮp23 Ap1,, +޳,sɤ԰ϫ̤sHsӮp39޳,, +֮a~,sɤ԰ϫ̤sHs̱d10֮a~,, +w^,sɤ԰ϫ̤s{126w^,, +F(G),sɤ԰ϫ̤ss_19F(G),, +ѩMx,sɤ԰ϫ̤s241A,, +̤s241A,sɤ԰ϫ̤s241A ѩMx,, +}jӤG,sɤ԰ϫ̩|17G}jӤG,, +}j,sɤ԰ϫ̩|5-17}jAy,, +Y,"sɤ԰ϫ̷H, Hm141Y",, +̷|,sɤ԰ϫ̷|13-17̷|,, +ּӤ@,sɤ԰ϫ̷|19ּӤ@,, +pov,sɤ԰ϫط~56-86pov,, +qjH,sɤ԰ϫط~88-94qjH,, +ؼw,sɤ԰ϫؼw10-16ؼw,, +IwjH,sɤ԰ϫؼw18IwjH,, +ɴ,sɤ԰ϫؼw45ɴ,, +j֤jH,sɤ԰ϫؼw57-71j֤jH,, +j֤,sɤ԰ϫؼw9-33j֤,, +A,sɤ԰ϬxLOT 4122A,, +w,sɤ԰Ϭxj1w,, +Фߩ~,sɤ԰Ϭxj21Фߩ~,, +ջ,sɤ԰Ϭxjջ,, +֪,sɤ԰Ϭxۧ6֪,, +Ri,sɤ԰Ϭxۧ1Ri,, +ۭb,sɤ԰Ϭxۧ5-7,, +׶~,sɤ԰Ϭxۧ60׶~,, +H,sɤ԰Ϭxۧ8H,, +ʺּ,sɤ԰Ϭxۧʺּ,, +fB,sɤ԰ϬxfB,, +,sɤ԰ϬxxDD124 LOT 4269,, +׵خx,sɤ԰Ϭxx׵خx,, +Ԯp,sɤ԰Ϭxx9Ԯp,, +hּ,sɤ԰Ϭպֵ7hּ,, +pw,sɤ԰Ϭֳ3pw,, +q,sɤ԰Ϭֳ7-13q,, +Lf,sɤ԰ϭsɤԤg68 Lf,, +_,sɤ԰ϭHsF25_,, +db,sɤ԰ϭHsF28db,, +̱d~,sɤ԰ϭHs̱d8̱d~,, +,sɤ԰ϭHs̱dDD121 LOT 2023,, +LL,sɤ԰ϭHsx18LL,, +IR,sɤ԰ϭHsD112IR,, +sԤ,sɤ԰ϮԤ8sԤ,, +aؤu~jH,sɤ԰ϮQ18aؤu~jH,, +ou~jH,sɤ԰ϮQ2ou~jH,, +ojH,sɤ԰Ϯ14ojH,, +jE]ԡ^ӷH,sɤ԰Ϯ2-8jE]ԡ^ӷH,, +׼,sɤ԰Ϯ׵13-15׼,, +F,sɤ԰Ϯ׵1-5F,, +qs,sɤ԰Ϯ׵16-18qs,, +Aؼ,sɤ԰Ϯ׵17-25Aؼ,, +Q,sɤ԰Ϯ׵20-24Q,, +ΤjH,sɤ԰Ϯ׵2-14ΤjH,, +Aؼ,sɤ԰Ϯ׵7-11Aؼ,, +CλO,sɤ԰ϰЧ,, +R,"sɤ԰ϰЧ272A-G, 280-309R",, +ȥЪ,sɤ԰ϰЧ400ȥЪ,, +ʵػ,sɤ԰ϰи14-18ʵػ,, +wjH,sɤ԰ϰи20-30BwjH,, +ת,sɤ԰ϰи38,, +ת,sɤ԰ϰи38ת,, +תӾQ,sɤ԰ϰи38תӾQ,, +ԴO,sɤ԰ϰи50,, +ԴO,sɤ԰ϰи50ԴO,, +sx~,sɤ԰ϰи801y,, +ػA,sɤ԰ϰи88ػA,, +d,sɤ԰ϱd1d,, +خ,sɤ԰ϱd23خ,, +Q,sɤ԰ϱd3-19Q,, +Uu~,sɤ԰ϱd~19Uu~,, +jTTAȤߦq,sɤ԰ϱd~1jTTAȤߦq,, +f()q,sɤ԰ϱd~9f()q,, +ÿ,sɤ԰ϱШ|104-126ÿ,, +wּ,sɤ԰ϱШ|128-130wּ,, +,sɤ԰ϱШ|132-138,, +ūӳ,sɤ԰ϱШ|15-19ūӳ,, +԰ӷ~,sɤ԰ϱШ|18-24԰ӷ~,, +^ZjH,sɤ԰ϱШ|21-23^ZjH,, +s,sɤ԰ϱШ|25-29s,, +ʩy,sɤ԰ϱШ|26-34ʩy,, +nѤjH,sɤ԰ϱШ|31-41nѤjH,, +׿,sɤ԰ϱШ|36-42׿,, +Inj,sɤ԰ϱШ|3-7Inj,, +֬,sɤ԰ϱШ|43-49֬,, +ӲĤ@,sɤ԰ϱШ|51-61ӲĤ@,, +wa,sɤ԰ϱШ|52wa,, +oj,sɤ԰ϱШ|54-60oj,, +ַӼ,sɤ԰ϱШ|63-69ַӼ,, +׼,sɤ԰ϱШ|68׼,, +ʳ,sɤ԰ϱШ|71-79ʳ,, +֦jH,sɤ԰ϱШ|8-16֦jH,, +F,sɤ԰ϱШ|81-85CF,, +Eoj,sɤ԰ϱШ|87-99Eoj,, +dj,sɤ԰ϱШ|88-102 dj,, +_v,sɤ԰ϱШ|88_v,, +oj,sɤ԰ϱШ|9-13oj,, +yBs`W`,sɤ԰ϲ`W233yBs`W`,, +@μs,sɤ԰ϳ߷~16@μs,, +Iؤu~jH,sɤ԰ϳ߷~17Iؤu~jH,, +߷~utjH,sɤ԰ϳ߷~2߷~utjH,, +au~jH,sɤ԰ϵA?36,, +õoj,sɤ԰϶q12-42õoj,, +}jӤG,sɤ԰϶15-19}jӤG,, +֩,sɤ԰϶21-43֩,, +ֶ,sɤ԰϶45-67ֶ,, +ּӥ|A y,sɤ԰϶69-75ּӥ|A y,, +IӪBy,sɤ԰϶7IӪЮy,, +ɩ,sɤ԰ϷHms,, +bpv,sɤ԰ϷsЦ˶DD104bpv,, +֪,sɤ԰ϷsЩ֪,, +Եئwb,sɤ԰Ϸsзs138Եئwb,, +Ah,sɤ԰ϷsлAh,, +ɦwb,sɤ԰ϷsNO. 86ɦwb,, +o,sɤ԰ϸδ{11-13o,, +ۤjH,sɤ԰ϸδ{27-37ۤjH,, +nv,sɤ԰ϸκa|11nv,, +ljH,sɤ԰ϹF|1ljH,, +,sɤ԰ϹشI29,, +nQv,sɤ԰ϹشI33nQv,, +Ԥ,sɤ԰ϹشI51-59Ԥ,, +n֤jH,sɤ԰ϹشI60n֤jH,, +ɯqjH,sɤ԰ϹشI61-69ɯqjH,, +ִIjH,sɤ԰Ϻ֥Ю|2-16ִIjH,, +sμ,sɤ԰Ϻּw44-54sμ,, +^jH,sɤ԰Ϻּw56^jH,, +qwǤsĤGy,sɤ԰ϻAQ[{18,, +qojH,sɤ԰ϻ_11-15qojH,, +פjH,sɤ԰ϻ_5-9פjH,, +nNjH,sɤ԰ϻF91ynNjH,, +njH,sɤ԰ϻn3,, +nQjH,sɤ԰ϻn9nQjH,, +ôI,sɤ԰ϻ_2-6ôI,, +ojH,sɤ԰ϻ_5?5ojH,, +¤jH,sɤ԰ϻ_9A¤jH,, +EB,sɤ԰ϻ^15-21EB,, +s,sɤ԰ϻ^18s,, +lA,sɤ԰ϻ^1lA,, +s,sɤ԰ϻ^22s,, +Դ~,sɤ԰ϻ񵾸100Դ~,, +qs,sɤ԰ϻ񵾸2-6qs,, +񵾤jH,sɤ԰ϻ񵾸33-43񵾤jH,, +ؽjH,sɤ԰ϻ񵾸69ؽjH,, +aפjH,sɤ԰ϻ񵾸70aפjH,, +A88,sɤ԰ϻ񵾸88A88,, +xbx,sɤ԰ϻ񵾸8xbx,, +xbخx,sɤ԰ϻ񵾸8xbخx,, +ԩɩ~,sɤ԰ϻ񵾸99ԩɩ~,, +UפjH,sɤ԰ϻs11-15UפjH,, +Ms,sɤ԰ϼw~11,, +_¤jH,sɤ԰ϼw~6-14_¤jH,, +P,sɤ԰Ͼ֧{6P,, +Yut,"sɤ԰ϾY, ̤sYut",, +w֪A10,sɤ԰Ͼw,, +w,sɤ԰Ͼwj131w,, +b,sɤ԰ϾwΧ138A,, +ηs,sɤ԰ϾwΧηs,, +|u,sɤ԰AW157|u,, +ˡh~,sɤ԰AW9ˡh~,, +Ay,sɤ԰A,, +|ub,sɤ԰AФ233,, +Iػ,sɤ԰AХö181Iػ,, +Aɪ,sɤ԰AЦNy,, +ya,sɤ԰AЦNy206ya,, +ɻA,sɤ԰AЦNy350,, +JتĤ@,sɤ԰AЪKs8A-FJتĤ@,, +d,sɤ԰AЮd227Ad,, +~,sɤ԰AЯ255~,, +A׻O,sɤ԰AаH111A׻O,, +bĤG,sɤ԰AаH50bĤG,, +źѪ,sɤ԰AаH71-75źѪ,, +NyNy,sɤ԰AAW,, +I~,sɤ԰AAWNy250I~,, +¤,sɤ԰AAWNy263¤,, +Aw,sɤ԰AAW,, +A,sɤ԰A¸jD99A,, +,sɤ԰Ͽ111,, +Rw,sɤ԰[14-18Rw,, +o,sɤ԰[17o,, +Eּ,sɤ԰[7Eּ,, +_jH,sɤ԰[9_jH,, +|x,sɤ԰_~18,, +x10y,sɤ԰_~x,, +j,sɤ٪,, +?x,sɤ٪155?x,, +ͼwu~jH,sɤ٪CPTL53sw21ͼwu~jH,, +٪ߤjH,sɤ٪CPTL57F7-35٪ߤjH,, +ת,sɤ٪LOT2860֦8ת,, +Eu~jH,sɤ٪TMTL109صo9Eu~jH,, +RjH,sɤ٪TMTL147]11RjH,, +oQu~Ay,sɤ٪TMTL163C8oQu~ߢϮy,, +IؤjH,sɤ٪TMTL167F26AIؤjH,, +b,sɤ٪TMTL172Cf|6b,, +n,sɤ٪TMTL173]11An,, +󨹤jH,sɤ٪TMTL176]21󨹤jH,, +źjH,sɤ٪TMTL178]19źjH,, +ʤjH,sɤ٪TMTL180]15ʤjH,, +R,sɤ٪TMTL183CA|11R,, +ӱoQu~jH,sɤ٪TMTL190صo15ӱoQu~jH,, +IRjH,sɤ٪TMTL199Cٮ|6IRjH,, +wRjH,sɤ٪TMTL200C|3wRjH,, +nu~jH,sɤ٪TMTL232_ȸ9nu~jH,, +tys,sɤ٪TMTL237sw3tys,, +atĤu~jH,sɤ٪TMTL240eе7-9atĤu~jH,, +ɥNs,sɤ٪TMTL282ٶ2,, +ӳ,sɤ٪TMTL368Cs133ӳ,, +٪s,sɤ٪TMTL391a22٪s,, +a2y,sɤ٪TMTL432]2ay,, +nx,sɤ٪TMTL443ٶQ3nx,, +ɦu~jH,sɤ٪TMTL85صo7ɦu~jH,, +˭b,sɤ٪TMTL92Cs87˭b,, +Foi٪jH,sɤ٪TMTL94Cs - sVq21-43Foi٪jH,, +OͤjH,sɤ٪ϤOͤjH,, +apO,sɤ٪ϤpV,, +^a,sɤ٪ϤpV2^a,, +AojH,sɤ٪Ϥ]9AojH,, +VjH,sɤ٪ϤF16VjH,, +R,sɤ٪ϤR1-43R,, +b,sɤ٪ϤR32b,, +jH,sɤ٪ϤR45jH,, +,sɤ٪ϤR50,, +nפu~,sɤ٪ϤѦZ18nפu~,, +mPu~jH,sɤ٪ϤѦZ1,, +u~jH (aФu~jH),sɤ٪ϤѦZ3u~jH (aФu~jH),, +Q,sɤ٪Ϥ٤l200Q,, +ת,sɤ٪Ϥ٤l405-410ת,, +fb,sɤ٪Ϥ٤l500fb,, +?x,sɤ٪Ϥ٦w1?x,, +س,sɤ٪Ϥ٧Q1سĤ@y,, +Q,sɤ٪Ϥ٪mƷ|113-115Q,, +,sɤ٪Ϥ٪mƷ|120,, +dR,sɤ٪Ϥ٪mƷ|129dR,, +a,sɤ٪Ϥ٪mƷ|28-38a,, +Q,sɤ٪Ϥ٪mƷ|40-50Q,, +j,sɤ٪Ϥ٪mƷ|4-26j,, +U,sɤ٪Ϥ٪mƷ|52-62U,, +j,sɤ٪Ϥ٪mƷ|64-66j,, +n,sɤ٪Ϥ٪mƷ|83,, +ѥͼ,sɤ٪Ϥ٪mƷ|88ѥͼ,, +dQ,sɤ٪Ϥ٪mƷ|94-110dQ,, +Ӷ,sɤ٪Ϥ٪s180,, +٪s,sɤ٪Ϥٲ,, +٪?Rs,sɤ٪Ϥٳ߸2٪?Rs,, +W~,sɤ٪ϤٴI18W~,, +Eds,sɤ٪ϤٶQ18Eds3y,, +Aت,sɤ٪Ϥٶ1Aت,, +ɥNs,sɤ٪Ϥٶ2٪ɥNs,, +wb,sɤ٪Ϥٿ2,, +ɮp2y,sɤ٪Ϥٿ9ɮp,, +sb,sɤ٪ϥд23sb,, +b,sɤ٪ϥд2,, +b,sɤ٪ϥд33b,, +b,sɤ٪ϥд38b,, +~,sɤ٪ϥ۱Y|1~,, +dw,sɤ٪ϥ۱Y11dw,, +AL,sɤ٪ϥ۱Y15AL,, +wu~,sɤ٪ϥ۱Y7wu~,, +db,sɤ٪ϥd2-22,, +b,sɤ٪ϥ3,, +QBy-Iy,sɤ٪ϧQo|2QӢЮy-׮y,, +z,sɤ٪Ϩ|d8z,, +abhͻ,sɤ٪Ϩ}B1abhͻ,, +abͻ,sɤ٪Ϩ}B1abͻ,, +_ɪ,sɤ٪Ϩ}w11_ɪ,, +R,sɤ٪Ϩ}w12R,, +׶,sɤ٪Ϩ}w9׶,, +s,sɤ٪ϩ16s,, +n,sɤ٪ϩ18-24n,, +,sɤ٪ϩ2-4,, +w,sɤ٪ϩ6-14w,, +Fȯtu~jH,sɤ٪Ϫeе2Fȯtu~jH,, +LP,sɤ٪Ϫeе6LP,, +,sɤ٪Ϫeĵ124-148,, +I?,sɤ٪Ϫd210I?,, +?x,sɤ٪Ϫd500?x,, +Qb,sɤ٪ϫCs - CsWq118AQb,, +nBv,sɤ٪ϫCs - sVq97-119nBv,, +ѻA,sɤ٪ϫCs107ѻA,, +Appv1y,sɤ٪ϫCs128Appvy,, +f,sɤ٪ϫCs12f,, +Aܩ~,sɤ٪ϫCs168Aܩ~,, +AjH,sɤ٪ϫCs169-181AjH,, +A,sɤ٪ϫCs180A,, +G,sɤ٪ϫCs1,, +mu,sɤ٪ϫCs250mu,, +XadùO,sɤ٪ϫCs25XadùO,, +ĤW2y,sɤ٪ϫCs28ĤWĢy,, +ں֪,sɤ٪ϫCs333ں֪,, +KM,sɤ٪ϫCs33KM,, +s,sɤ٪ϫCs345s,, +ap,sɤ٪ϫCs350ap,, +mت,sɤ٪ϫCs351mت,, +ڶ,sɤ٪ϫCs362-388ڶ,, +wjH,sɤ٪ϫCs387wjH,, +ťܤpv,sɤ٪ϫCs45,, +ժ,sɤ٪ϫCs91ժ,, +ּӤT,"sɤ٪ϫCssVq45-47,51-55,59-63,67-73ּӤT",, +ؼ֤jH,sɤ٪ϫCs{2ؼ֤jH,, +ٴO,sɤ٪ϫCs,, +}ֶ,sɤ٪ϫCs139A}ֶ,, +r,sɤ٪ϫCs165r,, +CAb,sɤ٪ϫCss157CAb,, +Iհa,sɤ٪ϫCss8Iհa,, +Aת,sɤ٪ϫCQ[33Aת,, +Q_jH,sɤ٪ϫCe{3Q_jH,, +嵾jH,sɤ٪ϫC|5嵾jH,, +aت,sɤ٪ϫC18aت,, +A,sɤ٪ϫC20A,, +꿳?,sɤ٪ϫC22꿳?,, +npv,sɤ٪ϫC26npv,, +Iw~,sɤ٪ϫC28Iw~,, +m֪,sɤ٪ϫC18m֪,, +U_jH,sɤ٪ϫC2U_jH,, +٪,sɤ٪ϫC6٪,, +ٴjH,sɤ٪ϫC8ٴjH,, +z,sɤ٪ϫC8z,, +d,sɤ٪ϫC48d,, +j´u~jH,sɤ٪ϫC3j´u~jH,, +_jH,sɤ٪ϫC֮|5_jH,, +nojH,sɤ٪ϫC֮|6nojH,, +W,sɤ٪ϫCo28W,, +a,sɤ٪ϫCo8a,, +R^W,sɤ٪ϫCoR^W,, +F»,sɤ٪ϫCٮ|3F»,, +اQjH,sɤ٪ϫCٮ|9اQjH,, +Eu~ߡ]Ĥ@^,sɤ٪ϫC12Eu~ߡ]Ĥ@^,, +@u~jH,sɤ٪ϫC1@u~jH,, +u~jH,sɤ٪ϫC6u~jH,, +,sɤ٪ϫC_1,, +٪,sɤ٪ϫC_2٪,, +A,sɤ٪ϫC_3A,, +Ab,sɤ٪ϫC_4Ab,, +wb,sɤ٪ϫC_6wb,, +C_O,sɤ٪ϫC_8C_O,, +jH,sɤ٪ϫCA|7jH,, +h_jH,sɤ٪ϫCA|9h_jH,, +EB,sɤ٪ϫCj188EB,, +IA,sɤ٪ϫCj300IA,, +s]By,sɤ٪ϫCs,, +s]q,sɤ٪ϫCs11s]q,, +s]qO,sɤ٪ϫCs9s]qO,, +CsW,sɤ٪ϫC2CsW,, +s˪,sɤ٪ϫC7s˪,, +es~,sɤ٪ϫC9es~,, +E`פ,sɤ٪ϫئw1E`פ,, +L`j,sɤ٪ϫة1L`j,, +Qqu~jH,sɤ٪ϫة4Qqu~jH,, +ֵoiu~jH,sɤ٪ϫخ3ֵoiu~jH,, +ګ¤u~,sɤ٪ϫخ6ګ¤u~,, +عBu~jH,sɤ٪ϫصo2عBu~jH,, +nu~jH,sɤ٪ϫصo11nu~jH,, +صou~,sɤ٪ϫصo13صou~,, +Pwu~jH,sɤ٪ϫصo17Pwu~jH,, +ou~,sɤ٪ϫصo1ou~,, +su~jH,sɤ٪ϫصo22su~jH,, +sضT,sɤ٪ϫصo5sضT,, +}utjH,sɤ٪ϫصo}utjH,, +õou~jH,sɤ٪ϫظs3õou~jH,, +غaӷ~jH,sɤ٪ϫغa24-30غaӷ~jH,, +ʧQ,sɤ٪ϫغa25ʧQ,, +غau~jH,sɤ٪ϫغa33غau~jH,, +u~jH,sɤ٪ϫ׵4u~jH,, +Ŭfߤ@,sɤ٪ϫ׵6Ŭfߤ@,, +nW,sɤ٪ڴI23nW,, +Ůbq,sɤ٪ڶQ1Ůbq,, +٪y,sɤ٪Ϭx3A٪y,, +Ф󤤤,sɤ٪Ϭx3Ф󤤤,, +ͪy,"sɤ٪ϬxNO3,B74ͪy",, +շ~,sɤ٪Ϯ,, +dx~,sɤ٪Ϯdx~,, +״,sɤ٪Ϯ]7״Ĥ@y,, +^a,sɤ٪Ϯ^a,, +U,sɤ٪Ϯa9U,, +ڤjӬj,sɤ٪ϱҥ|15-43ڤjӬj,, +ojH,sɤ٪ϱҥ|49ojH,, +UjH,sɤ٪ϱҵo|1-13UjH,, +R^,sɤ٪ϱCޫC2R^,, +,sɤ٪ϳb3,, +18h~,sɤ٪ϴI1818h~,, +px,sɤ٪ϴp|10px,, +p,sɤ٪ϴp|2p,, +,sɤ٪ϴp|3,, +ɼ֪,sɤ٪ϴp|4-8ɼ֪,, +sO,sɤ٪ϴs|2sO,, +sح,sɤ٪ϴs215-239sح,, +sb,sɤ٪ϴs2-26,, +s,sɤ٪ϴq2s,, +׶,sɤ٪ϴA138׶,, +A,sɤ٪ϴA168-236AĤ@y,, +Hb,sɤ٪ϴA201,, +ڨȬW,sɤ٪ϴA268ڨȬW,, +z׶,sɤ٪ϴA280z׶,, +֪,sɤ٪ϴA2֪,, +Au,sɤ٪ϵصo6Au,, +_ت,sɤ٪϶,, +ת10y,sɤ٪϶36ת,, +w,sɤ٪϶41w,, +NФjH,sɤ٪ϷsO2NФjH,, +vutjH,sɤ٪ϷsX1vutjH,, +õu~jH,sɤ٪ϷsX2õu~jH,, +خu~jH,sɤ٪Ϸsw11خu~jH,, +Ѷפu~jH,sɤ٪Ϸsw12Ѷפu~jH,, +_u~jH,sɤ٪Ϸsw13_u~jH,, +wu~jH,sɤ٪Ϸsw14wu~jH,, +s֤u~jH,sɤ٪Ϸsw15s֤u~jH,, +ʳӤu~jH,sɤ٪Ϸsw16ʳӤu~jH,, +׫u~jH,sɤ٪Ϸsw17׫u~jH,, +ɵؤu~jH,sɤ٪Ϸsw18ɵؤu~jH,, +dau~,sɤ٪Ϸsw19dau~,, +Хu~jH,sɤ٪Ϸsw1Хu~jH,, +Iqӷ~jH,sɤ٪Ϸsw2Iqӷ~jH,, +OjH,sɤ٪Ϸsw7OjH,, +u~jH,sɤ٪Ϸsw9u~jH,, +U_,sɤ٪ϷsC11U_,, +ȥ,sɤ٪ϷsC1ȥ,, +d,sɤ٪ϷsC3d,, +qu~jH,sɤ٪Ϸsq3qu~jH,, +rA,sɤ٪Ϸsy200rA,, +p߲Ĥ@,sɤ٪Ϸ~6-8p߲Ĥ@,, +sbq,sɤ٪ϷA2,, +A,sɤ٪ϷA9A,, +Foi٪ߤjH,sɤ٪ϹF{11Foi٪ߤjH,, +ŵؤjH,sɤ٪ϹŵؤjH,, +ͼw,sɤ٪Ϻao13-17ͼw,, +׶׶,sɤ٪Ϻao1׶׶,, +s,sɤ٪Ϻs,, +ɩ~,sɤ٪Ϻ֦138ɩ~,, +AP,sɤ٪Ϻ֦148AP,, +jH,sɤ٪ϼwF18jH,, +~,sɤ٪ϼwF2-14~,, +fb,sɤ٪ϼwF31-43fb,, +Qb,sɤ٪ϼwF3-29Qb,, +b,sɤ٪ϼwF66b,, +Toi,sɤ٪ϼ֩ɵ5Toi,, +ڭb,sɤ٪ϼֻA21ڭb,, +?ܩ~,sɤ٪ϼֻA3?ܩ~,, +֧O,sɤ٪ϼֻA5֧O,, +CRWO,sɤ٪ϼֻA6-18CRWO,, +u~jH,sɤ٪Ͼ_ȸ6u~jH,, +s~,sɤ٪s43s~,, +I,sɤ٪s45I,, +s٪,sɤ٪s55-65s٪,, +sW`,sɤ٪syD.D.137 LOT 149sW`,, +os,sɤ٪syFH^,, +hb,sɤ٪syFH^DRAGON OASIShb,, +Qﻨb,sɤ٪Q,, +_,sɤ٪_U80,, +I,sɥ_(W|Y 154)DD94 LOT 400 S.GWI,, +ƽX,sɥ_360|360ƽX,, +Ѵ,sɥ_Ϥ@15Ѵ,, +o,sɥ_Ϥ@23o,, +bY,sɥ_Ϥ@8bY,, +A,sɥ_Ϥѥ33A,, +wb,sɥ_Ϥѥ50wb,, +qһOA y,sɥ_Ϥ103qһOA y,, +ʳӤs,sɥ_Ϥ89ʳӤs207y,, +b,sɥ_ϥj}39b,, +ڷN,sɥ_ϥj}48ڷN,, +ͻ,sɥ_ϥ͵ ۴V1-2ͻ,, +FoiFYjH,sɥ_ϥۯFWFY200FoiFYjH,, +]ǪĤ@y,sɥ_ϦN1]Ǫ,, +YA,sɥ_ϦN8YA,, +A,sɥ_ϦN9A,, +F,sɥ_Ϧw10-12F,, +Fy()q,sɥ_Ϧw11Fy()q,, +q¤u~jH,sɥ_Ϧw13q¤u~jH,, +s,sɥ_Ϧw13s,, +tжΤuTs,sɥ_Ϧw15tжΤuTs,, +w֧yΤ,sɥ_Ϧw24w֧yΤ,, +֩MjH,sɥ_Ϧw26֩MjH,, +ɳf,sɥ_Ϧw28ɳf,, +PQޤ,sɥ_Ϧw30PQޤ,, +׬դuT,sɥ_Ϧw33׬դuT,, +wuT,sɥ_Ϧw4wuT,, +Qhu~jH,sɥ_Ϧw6Qhu~jH,, +,sɥ_Ϧw7A,, +[u~jH,sɥ_Ϧw~15[u~jH,, +wuT,sɥ_Ϧw~18wuT,, +k,sɥ_Ϧw~1k,, +uTjH,sɥ_Ϧw~21uTjH,, +qoi,sɥ_Ϧw~31qoi,, +oQ,sɥ_Ϧw~33oQ,, +P{syt,sɥ_Ϧw~6P{syt,, +w֧ssf,sɥ_Ϧwֵ17-19w֧ssf,, +hfܤjH,sɥ_Ϧwֵ3hfܤjH,, +F()u~,sɥ_Ϧwֵ5F()u~,, +PʤjH,sɥ_Ϧw֪11PʤjH,, +ùqlƨȬwޤ,sɥ_Ϧw֪15ùqlƨȬwޤ,, +Ou~jH,sɥ_Ϧw֪17Ou~jH,, +vOuTjH,sɥ_Ϧw֪1vOuTjH,, +w֧׶Ts,sɥ_Ϧw֪21w֧׶Ts,, +֦ӷ~jH,sɥ_Ϧw֪28֦ӷ~jH,, +wFuT,sɥ_Ϧw֪31-33wFuT,, +jys,sɥ_Ϧw֪35-37jys,, +ŧQf (I),sɥ_Ϧw֪39ŧQf (I),, +aGdfܤjH,sɥ_Ϧw֪5aGdfܤjH,, +M,sɥ_Ϧw֪6M,, +Ųb,sɥ_ϦʩM33Ųb,, +ղ,sɥ_ϦʩM55ղ,, +᳣s,sɥ_ϦʩM88᳣s,, +᳣s᳣ʪӳ,sɥ_ϦʩM88᳣s᳣ʪӳ,, +,sɥ_ϧ|Y,, +R,sɥ_ϧ|Y6ARĤ@y,, +Ūܪ,sɥ_ϧ|YŪܪ,, +sM,sɥ_ϨFY190sM,, +,sɥ_ϩM55-69,, +_d,sɥ_ϩM10-16_d,, +_ؼ,sɥ_ϩM18-24_ؼ,, +_a,sɥ_ϩM26-32_a,, +_,sɥ_ϩM2-8_,, +_,sɥ_ϩM34-40C_,, +ps,sɥ_ϩM9psĤ@y,, +Үxa,sɥ_ϩM8Үxa,, +sxa,sɥ_ϩM9sxa,, +~,sɥ_ϩM36~,, +׻ȦjH,sɥ_ϩM׵14-16׻ȦjH,, +ny,sɥ_ϩM׵15ny,, +pMVj,sɥ_ϩM׵17-19pMVj,, +sw,sɥ_ϩM׵1sw,, +s,sɥ_ϩM׵21-25Bs,, +s(M׵),"sɥ_ϩM׵37-43,43As(M׵)",, +pM,sɥ_ϩM׵46-48pM,, +׼,sɥ_ϩM׵49-51׼,, +X׼,sɥ_ϩM׵50-52X׼,, +׼,sɥ_ϩM׵54-60׼,, +M׭,sɥ_ϩM׵57-59M׭,, +M׻,sɥ_ϩM׵8M׻,, +֩MΤjH,sɥ_ϩ~A3֩MΤjH,, +O,sɥ_ϪCs - j}D.D.92 LOT 743O,, +ws?,sɥ_Ϫ񰨷|D,, +Rs,sɥ_Ϫŵ8,, +@s,sɥ_Ϫ100,, +sLө,sɥ_Ϫn8,, +BA,sɥ_Ϫ|1,, +Ҵ,sɥ_ϫCs - j}q83Ҵ,, +W¥,sɥ_ϫOa1W¥,, +FaO,sɥ_ϭxa210FaO,, +ں,sɥ_ϯA328ں,, +֭bjH,sɥ_ϯA338q VC|,, +W,sɥ_ϯ18,, +,sɥ_ϯӸ11,, +۴,sɥ_ϰ|D26-34۴,, +Ps?,sɥ_ϰ|D280Ps?,, +_H,sɥ_ϰ|D36-40_H,, +oۼ,sɥ_ϰ|D42-50oۼ,, +|D70,sɥ_ϰ|D70,, +Pּ,sɥ_ϰ|D76-86Pּ,, +өs,sɥ_ϰA38өs,, +ya1y,sɥ_ϰA3ya,, +ʬ줤,sɥ_ϱmo2ʬ줤,, +Hb,sɥ_ϱm10,, +mZb,sɥ_ϱm2,, +`䤤,sɥ_ϱm9`䤤,, +?,sɥ_ϲM16?,, +sӮx2 y,sɥ_ϲM18sӮx2 y,, +sp,sɥ_ϲM8sp,, +I,sɥ_ϲſ31-39I,, +W߲ĤGy,sɥ_ϴ3W,, +Wʪ߰ӳ,sɥ_ϴ3Wʪ߰ӳ,, +Y,sɥ_ϴ8Y,, +WW,sɥ_ϴ9,, +Yb,sɥ_ϵة15Yb,, +b,sɥ_ϵة20b,, +Aż,sɥ_϶6Aż,, +A,sɥ_϶11-15A,, +Hw,sɥ_϶17Hw,, +,sɥ_϶33,, +3,sɥ_϶3,, +AM,sɥ_϶5-9AM,, +|a~,sɥ_϶|,, +~,sɥ_Ϸs21~,, +Hخx1 y,sɥ_Ϸs88Hخx1 y,, +s],sɥ_Ϸs]23-33s],, +j,sɥ_Ϸs]7-9j,, +jTTAȤߦqn?wAȤ,sɥ_Ϸsd9-11,, +Qb,sɥ_Ϸs143Qb,, +Qb,sɥ_Ϸs158-159,, +sԼ,sɥ_ϷsԵ24-34sԼ,, +s_jH,sɥ_ϷsԵ27-35s_jH,, +V,sɥ_ϷsԵ2V,, +Cs,sɥ_ϷsB188Cs,, +Ay,sɥ_ϷsB33Ay,, +n,sɥ_Ϸsֵ42-46n,, +]ذa,sɥ_Ϸsֵ9]ذa,, +ۼ,sɥ_Ϸs׸106-110ۼ,, +s׼,sɥ_Ϸs׸113-119s׼,, +s,sɥ_Ϸs׸122-132s,, +ؤjH,sɥ_Ϸs׸134-140ؤjH,, +o,sɥ_Ϸs׸2o,, +sפjH,sɥ_Ϸs׸33sפjH,, +w׼,sɥ_Ϸs׸36-38w׼,, +y,sɥ_Ϸs׸40-44y,, +Q,sɥ_Ϸs׸4-10Q,, +y׼,sɥ_Ϸs׸44A-48y׼,, +Эp,sɥ_Ϸs׸55-59Эp,, +ȤWӷ~,sɥ_Ϸs׸61-63ȤWӷ~,, +s,sɥ_Ϸs׸74-76s,, +MjH,sɥ_Ϸs׸82-84MjH,, +~p,sɥ_Ϸs׸94~p,, +ijH,sɥ_Ϸs׸98-104ijH,, +lblػ,sɥ_Ϸu8lblػ,, +jHڶΤjH,sɥ_Ϸ~M10jHڶΤjH,, +Mפu~jH,sɥ_Ϸ~M2Mפu~jH,, +׶s,sɥ_Ϸ~M9׶s,, +jL궰ΤjH,sɥ_Ϸ~Z11jL궰ΤjH,, +ƤujH,sɥ_Ϸ~Z13ƤujH,, +wڤuT,sɥ_Ϸ~Z18wڤuT,, +w֧s~綰ΤjH,sɥ_Ϸ~Z6w֧s~綰ΤjH,, +jH,sɥ_Ϸ~Z7jH,, +ڿu~jH,sɥ_Ϸ~Z8ڿu~jH,, +w֧hQu~jH,sɥ_Ϸ~׵13w֧hQu~jH,, +_Q,sɥ_Ϸ~׵15_Q,, +Q뤤,sɥ_Ϸ~׵20Q뤤,, +p,sɥ_ϸma|2p,, +s֭b,sɥ_ϸmֳ16s֭b,, +Id,sɥ_ϸmֳ17Id,, +sAb,sɥ_ϸmֳ18sAb,, +ʺ֪,sɥ_ϸmֳ6ʺ֪,, +Aͭb,sɥ_ϸή3Aͭb,, +U~,sɥ_ϸή9U~,, +f,sɥ_Ϲť3f,, +ťaĤGy,sɥ_Ϲť8ťaĤGy,, +WTs,sɥ_ϹŴI{3WTs,, +ڤ,sɥ_ϹŴI{9ڤ,, +ؼz,sɥ_Ϻ2ؼz,, +έb,sɥ_Ϻ6έb,, +AR,sɥ_ϻn9AR,, +^,sɥ_ϻ^DD 95 LOT 2137^ABy,, +׶sԷ,sɥ_ϼַ~,, +}Fu~,sɥ_ϼַ~17-19}Fu~,, +sjH,sɥ_ϼַ~1sjH,, +qTլ,sɥ_ϼַ~21qTլ,, +w?,sɥ_ϼַ~25w?,, +׼֤uT,sɥ_ϼַ~8׼֤uT,, +?T,sɥ_ϼַ~9׶T,, +sת,sɥ_s`33sת,, +Ws (ӳ),sɥ_s`39Ws (ӳ),, +Ws (줽j),sɥ_s`39Ws (줽j),, +ss,sɥ_sB8ss,, +_w,sɥ_pw17_w,, +j,sɥ_pw29-43j,, +IQ,sɥ_pMD1-11IQ,, +ŧ,sɥ_pMD15-23ŧ,, +حb,sɥ_pMD75حb,, +״,sɥ_p1-7״,, +pj,sɥ_p20-44Bpj,, +A֤jH,sɥ_p2AA֤jH,, +䰷,sɥ_p2䰷,, +n,sɥ_p6-12n,, +ؼ,sɥ_p9-15ؼ,, +a֤,sɥ_p1a֤,, +a,sɥ_p2-10a,, +sػȦjH,sɥ_p10-16sػȦjH,, +Ϳ,sɥ_p2-4Ϳ,, +Ӽ,sɥ_p6-8Ӽ,, +p,sɥ_po18-38Bp,, +~jH,sɥ_p11-15~jH,, +Ĥ@q~jH,sɥ__B21Ĥ@q~jH,, +s?,sɥ_FsFs55s?,, +Ѯ,sɦ^,, +w,sɦ^,, +Ѥpv,sɦ^,, +Ωb,sɦ^,, +Ŷ,sɦ^,, +W,sɦ^D230 LOT 209|föW,, +ſoO,sɦ^DD 223 LOT 224sſoO,, +ըFW,sɦ^DD212 LOT 364||w17-18ըFWA1y,, +N,sɦ^DD215 LOT 642^j41-42N,, +Aؼ,sɦ^DD215 LOT 938˥18-32Aؼ,, +_,sɦ^DD215 LOT 939ļs2_,, +j,sɦ^DD215 LOT 941^ļs1,, +gؼ,sɦ^DD215 LOT 942qD11gؼ,, +,sɦ^DD216 LOT 796ˬv90,, +j,sɦ^DD216 LOT 825j15Ay,, +_ۤpv,sɦ^DD217 LOT 1128^_ۤpv,, +wfb,sɦ^DD221 LOT1742Լwfb,, +TAOLOO VILLAS,sɦ^DD224 LOT 329 MWD848,, +Mb,sɦ^DD224 LOT 343MWD8311yMb,, +Wx,sɦ^DD224 LOT 363ȬP|Wx,, +ã1y,sɦ^DD224 LOT 369MWD850,, +شI,sɦ^DD224 LOT 376r7شI,, +WIbAy,sɦ^DD229 LOT 204MWD681WIbϮy,, +ɽO,sɦ^DD229 LOT 206MWDɽO,, +RIFFEL BERG,sɦ^DD229 LOT 207MWDRIFFEL BERG,, +۱V,sɦ^DD229 LOT 208MWD720۱V,, +Wpv,sɦ^DD229 LOT 231ȤWD,, +O,sɦ^DD238 LOT 524|fö28O,, +ȪL,sɦ^DD238 LOT 585|föȪL1y,, +b,sɦ^DD253 LOT 1200MWD389b,, +Uys,sɦ^ϤjJ14 AUys,, +ns,sɦ^Ϥsd,, +ܩ~,sɦ^Ϥsdˬv100ܩ~,, +A~,sɦ^Ϥq1A~1y,, +p,sɦ^ϤXdd1pĤCy,, +ܰa,sɦ^Ϥd51ܰa,, +MWs10y,sɦ^ϥեۺ۷s8MWs10y,, +J~,sɦ^ϥըFW^380,, +jH,sɦ^ϥըFW^380J~28y,, +ŻAb,sɦ^Ϧݸ11ŻAb,, +ݩ~,sɦ^Ϧݸ18ݩ~,, +A,sɦ^Ϧ˨10A,, +df,sɦ^Ϧ˨9Ĥ@ydf,, +?y?y,sɦ^Ϧˬv6A?y,, +Fpv (Csaq)35y,sɦ^ϦˬvFpv,, +Savannah,sɦ^Ϧܵ 3Savannah,, +Ů,sɦ^Ϧܵ 9Ů,, +߼wO,sɦ^Ϧ^,, +ŪLO,sɦ^Ϧ^1Ĥ@yŪLO,, +?RWO,sɦ^Ϧ^?RWO,, +L,sɦ^Ϧ^L,, +Ѯpv,sɦ^ϧ|fö,, +ѮO,sɦ^ϧ|fö22ѮO,, +zO (z),sɦ^ϧ|fö23zO (z),, +,sɦ^ϧ|fö32,, +ܧO,sɦ^ϧ|fö36A yܧO,, +ܭb]ܧO֡^ܭbA,sɦ^ϧ|föܭb]ܧO֡^,, +P~,sɦ^ϧ|föP~,, +O,sɦ^ϧ|fDO,, +Eb,sɦ^Ϩδ9Eb,, +ˤpv,sɦ^ϪWȤWDˤpv,, +s?,sɦ^ϪWMWD687,, +~,sɦ^ϫn470~,, +se1y,sɦ^ϫn500se1y,, +nbO,sɦ^ϫnnbO,, +njCy,sɦ^ϫnnjCy,, +z,sɦ^ϫn1z,, +s1y,sɦ^ϫn7s1y,, +b,sɦ^ϬLH6b,, +fW,sɦ^Ϭfܮ|88 -188fW,, +,sɦ^Ϭɫw,, +oApv,sɦ^Ϭ۫W,, +اO,sɦ^Ϭ۫W250اO,, +HILLSIDE GARDENS HOUSE,sɦ^Ϭ۫W69,, +Ѷb,sɦ^Ϭ۫WѶb2,, +֭b,sɦ^ϭT@,, +F䫰,sɦ^ϭظ8F䫰,, +AR,sɦ^ϭD3AR,, +Z,sɦ^ϭD6Z,, +Zs,sɦ^ϭZsD18Zs,, +Ų,sɦ^ϭZsD7Ų,, +C,sɦ^ϭZsDC,, +rb,sɦ^ϭZsDrb,, +b,sɦ^ϭ15,, +Id,sɦ^ϭ1Id,, +_b_Q,sɦ^ϭ8_b_Q,, +_ժĤ@y,sɦ^ϭT11,, +The Parkside,sɦ^ϭT18The Parkside,, +,sɦ^ϭT21,, +Ѯ,sɦ^ϭT28Ѯ,, +gW,sɦ^ϭT9Ĥ@ygW,, +NxDs,sɦ^ϭw1NxDs,, +NxD,sɦ^ϭw96yNxD,, +ҴW,sɦ^ϭ23ҴW,, +Ŷ,sɦ^ϭ29Ŷ,, +Capri,sɦ^ϭ33Capri,, +KPO,sɦ^ϰKPO,, +W`,sɦ^ϰ151yW`,, +,sɦ^ϰ18Ĥ@y,, +n׼sӳ,sɦ^ϰ8n׼sӳ,, +n׼s,sɦ^ϰ8Ĥ@yn׼s,, +zw1y,sɦ^ϱNxD9,, +w,sɦ^ϱ`10,, + (XdĤ@),sɦ^ϱd1 (XdĤ@),, +oŤ,sɦ^ϱdoŤ,, +^ܭb,sɦ^ϱd288^ܭb,, +,sɦ^ϱd,, +mb,sɦ^ϱm,, +qRb10y,sɦ^ϲMWD,, +ӴO,sɦ^ϲMWD,, +wĤ@y,sɦ^ϲMWD,, +OAy,sɦ^ϲMWD385O,, +pv,sɦ^ϲMWD684pv,, +W,sɦ^ϲMWD685EyW,, +ɤpv,sɦ^ϲMWD688jpv,, +Arpv,sɦ^ϲMWD7}bArpv,, +Q (Q),sɦ^ϲMWD9}b,, +Qܭb,sɦ^ϲMWDQܭb,, +Oֲ1y,sɦ^ϲMWDOֲ1y,, +w,sɦ^ϲB|w,, +^AO,sɦ^ϳ118A^AO,, +AO,sɦ^ϳ118A1y,, +֭b,sɦ^ϴP֭b,, +խbCy,sɦ^ϴqD1AխbCy,, +?,sɦ^ϴ8?,, +|?,sɦ^ϴ8|?,, +ӥ,sɦ^ϵ|ӥ,, +ɪ,sɦ^϶T8ɪ,, +|x]s3^|x,sɦ^϶T~8|x]s3^|x,, +hܰa,sɦ^϶ˤsshܰa,, +Ӽ,sɦ^Ϸq9Ӽ,, +O,sɦ^Ϸ1Ĥ@yO,, +IR1y,sɦ^Ϸ7IR1y,, +|,sɦ^|,, +s,sɦ^ϹB1s,, +|Aa?Aa,sɦ^ϹB8|Aa?Aa1y,, +MWjH,sɦ^Ϲ@8,, +P (^),sɦ^Ϲž11P (^),, +̾pvAy,sɦ^Ϲž6,, +,sɦ^ϺѨF10,, +ʰO,sɦ^ϺѨF11ʰO,, +Apv,sɦ^ϺѨF18Apv,, +h~,sɦ^ϺѨF19h~,, +ѨFO,sɦ^ϺѨF1ѨFO,, +g,sɦ^ϺѨF23g,, +O,sɦ^ϺѨF3O,, +ɴ,sɦ^ϺѨF7ɴ,, +ѨF,sɦ^ϺѨF9ѨF,, +A,sɦ^ϺѻA,, +z,sɦ^ϺѻA1z,, +ѻAb,sɦ^ϺѻA29ѻAb,, +_b10y,sɦ^ϺѻA3010y,, +ɪ,sɦ^ϺѻA31ɪ,, +RFWO,sɦ^ϺѻA38,, +^b,sɦ^Ϻ֥22-40,, +^jH,sɦ^Ϻ֥42-56,, +I,sɦ^Ϻ֥58-72I,, +^sx,sɦ^Ϻ۬150۬^sx,, +b,sɦ^ϻAL2,, +A,sɦ^ϻA1,, +Ių,sɦ^ϻa11Ių,, +اO,sɦ^ϻa15اO,, +L¦i,sɦ^ϻa18L¦i,, +WO,sɦ^ϻa25Ĥ@yWO,, +ѭb,sɦ^ϻa26-28ѭb,, +O,sɦ^ϻa29O,, +R^~,sɦ^ϻa5R^~,, +ȽO,sɦ^ϻa6ȽO,, +Ƚu,sɦ^ϻȬP|,, +򴺧O,sɦ^ϻȬP|2򴺧O,, +ȬPbAy,sɦ^ϻȬP|4AyȬPbAy,, +ѨFb,sɦ^ϻȬP|5ѨFb,, +ȬuOAy,sɦ^ϻȬu|2ȬuOAy,, +SILVER CREST,sɦ^ϻȬu|7SILVER CREST,, +W,sɦ^ϻȬu|8W,, +ȽuWO,sɦ^ϻȽuWD11,, +Ȯs,sɦ^ϻȽuWD5Ȯs,, +nܧO,sɦ^ϻȽuWD9nܧO,, +ѴO,sɦ^ϻȽuWѨF8ѴO,, +AO,sɦ^ϻȽuWa9AO,, +s_,sɦ^ϻȿD1s_,, +ԩb,sɦ^ϻȿD2,, +Mb,sɦ^ϻȿD8,, +BOUGAINVILEA GARDENS,sɦ^ϻr12,, +sOֲ,sɦ^ϻr18sO,, +rO,sɦ^ϻr91yrO,, +mܧO,sɦ^ϻrmܧO,, +sA,sɦ^ϼy|ۤsA11B,, +~,sɦ^ϼy|۫~,, +MWbq,sɦ^Ͻܸ8MWbq,, +W`,sɦ^ϿD88ĤQGyW`,, +^,sɦ^Ͽ˥16^,, +Qܰa,sɦ^sQܰa,, +ȶΤ,sɦ^@~ 28ȶΤ,, +u~jH,sɦ^@~33u~jH,, +޶,sɦ^@21޶,, +PqsDΤjH,sɦ^@7PqsDΤjH,, +߹qNxD,sɦ^@յ3 ߹qNxD,, +Q,sɦ^@յ7Q,, +īG,sɦ^@յ8īG,, +ĪLb (ĪLO),sɦ^b}W|fö,, +öb,sɦ^b}W|fö12,, +VILLA PANOVA,sɦ^b}W|fö30VILLA PANOVA,, +WO,sɦ^_ۮ|1AyWO,, +sbs,sɦ^_d108sbs,, +sbsջ,sɦ^_d108sbsջ,, +sbs,sɦ^_d108sbs,, +sbss,sɦ^_d108sbss,, +sbs,sɦ^_d108sbs,, +sbs,sɦ^_d108sbs,, +sbs,sɦ^_d108sbs,, +ɤ߶,sɦ^_d88Ĥ@yɤ߶,, +YbY˻,sɦ^_Y_100YbY˻,, +d,sɦ^_Y_1,, +^b,sɦ^_Y_20^b,, +|b,sɦ^_1|b,, +I,sɦ^_25I,, +w,sɦ^ĮF,, +p,sɦ^ĮF100p,, +Ҵ~,sɦ^ĮFsҴ~,, +fܰa,sɦ^ĮFfܰa,, +sO,sɦ^ĻWsO,, +FвĤ@,sɨFа,, +髰,sɨFа,, +IŪ,sɨFа,, +_?b,sɨFа,, +_Apv,sɨFа,, +E{sp,sɨFа RW,, +hns,sɨFа RW33,, +ӱs~,sɨFаSTTL499^I5ӱs~,, +B֩~,sɨFаϤE{s1-7B֩~,, +L~,sɨFаϤE{s1EL~,, +,sɨFаϤU|f,, +۶,"sɨFаϤjH, Fq8006۶",, +FЪ,sɨFаϤjHD8003FЪ,, +rb,sɨFаϤjF12rb,, +e`,sɨFаϤjF20-30e`,, +I,sɨFаϤjF52,, +s,sɨFаϤjD,, +j_,sɨFаϤjD100j_,, +w,sɨFаϤjD20-22w,, +I,sɨFаϤjD24-26I,, +CHUNG PAK LAU,sɨFаϤjD28-30CHUNG PAK LAU,, +Qf,sɨFаϤjD28-30Qf,, +po,sɨFаϤjD32-40po,, +ģ_jH,sɨFаϤjD37-47ģ_jH,, +_,sɨFаϤjD42-44_,, +[,sɨFаϤjD50-52[,, +R,sɨFаϤjD54-58R,, +ج,sɨFаϤjD66-72ج,, +w,sɨFаϤjD74-76w,, +sLbZL,sɨFаϤpw62sLbZL,, +sLbL,sɨFаϤpw64sLbL,, +sLbLL,sɨFаϤpw66sLbLL,, +ҳ,sɨFаϤpw69ҳ,, +dLb,sɨFаϤpw74dLb,, +?su~jH,sɨFаϤs15-17?su~jH,, +Fаӷ~,sɨFаϤs18-24Fаӷ~,, +tzu~,sɨFаϤs19-25tzu~,, +ؼ֤u~,sɨFаϤs31-41ؼ֤u~,, +yu~,sɨFаϤs43-47yu~,, +Ju~jH,sɨFаϤs5-13Ju~jH,, +§,sɨFаϤ§,, +rAb,sɨFаϤ֨F6rAb,, +|,sɨFаϥФߵ20-30|,, +ث¤u~jH,sɨFаϥݭ1-7ث¤u~jH,, +Ou~jH,sɨFаϥݭ9-15Ou~jH,, +u~,sɨFаϥݲ10-16u~,, +Fp,sɨFаϥݼd|18-28Fp,, +FФu~jH,sɨFаϥJ22-28FФu~jH,, +ضs,sɨFаϦwߵ11ضs,, +?T,sɨFаϦwߵ19?T,, +ñoQjH(NO.3),sɨFаϦwߵ22ñoQjH(NO.3),, +sTB y,sɨFаϦw6sTB y,, +F,sɨFаϦw8F,, +ܪ,sɨFаϦw,, +A,sɨFаϦw,, +ش,sɨFаϦw1-3ش,, +ñoQ,sɨFаϦw28ñoQ,, +~,sɨFаϦwR11~,, +ss,sɨFаϦwģ2ss,, +׹FjH,sɨFаϦwģ3׹FjH,, +u~jH,sɨFаϦ1-7u~jH,, +ӤWΤ,sɨFаϦB13-15ӤWΤ,, +wu~jH,sɨFаϦB17-19wu~jH,, +qjH,sɨFаϦB1-7qjH,, +sOu~jH,sɨFаϦB21-23sOu~jH,, +u~jH,sɨFаϦB25-27u~jH,, +Ŷ,sɨFаϦB2-8Ŷ,, +ͤOu~jH,sɨFаϦB9-11ͤOu~jH,, +As,sɨFаϦʼ֮|18As,, +ȴEѾW,sɨFаϦF599ȴEѾW,, +~,sɨFаϦF600~,, +?,sɨFаϦF608?,, +ܩ~,sɨFаϦF628ܩ~,, +A׭b,sɨFаϦF638,, +FЧnDw,sɨFаϧnD49FЧnDw,, +,sɨFаϧnD57-59,, +jôI,sɨFаϧnD65-69jôI,, +Fкؼ,sɨFаϧnD71-75Fкؼ,, +nDRP,sɨFаϧnD77-81nDRP,, +P,sɨFаϨU1P,, +?W`,sɨFаϨU8?W`,, +ؤ,sɨFаϨFХ11-17ؤ,, +,sɨFаϨFХ1,, +Fмs,sɨFаϨFХ21-27,, +ƺyA,sɨFаϨFХ3-9ƺy,, +ƺy(ӳ),sɨFаϨFХ3-9ƺy(ӳ),, +ss,sɨFаϨFШ1ss,, +y,sɨFаϨFг1-7y,, +ж,sɨFаϨFг9-11,, +ִ,sɨFаϨF,, +sLp2y,sɨFаϨF11sLp2y,, +ήɩ~,sɨFаϨF29-31ήɩ~,, +O,sɨFаϨF33O,, +֨ӧO,sɨFаϨF39-41֨ӧO,, +FЦʼ֧O,sɨFаϨF3AFЦʼ֧O,, +֤sO,sɨFаϨF5-9֤sO,, +L,sɨFаϨF8,, +As,sɨFаϨFD1-3As,, +AֵخxĤCy,sɨFаϨFw9,, +Aت,sɨFаϨF7-11Aت,, +L8,sɨFаϨq8L8,, +u~jHĤGy,sɨFаIW14-24u~jHĤGy,, +¤Ou~,sɨFаIW2-12¤Ou~,, +Iˤu~,sɨFаIW26-28Iˤu~,, +󿳤u~,sɨFаIW27-31󿳤u~,, +ģu~,sɨFаIW30-32ģu~,, +@u~,sɨFаIW33-35@u~,, +ײu~Ay,sɨFаIW34-36ײu~ߢϮy,, +?Fu~jH,sɨFаIW37-39?Fu~jH,, +ؽäuT,sɨFаIW38-40ؽäuT,, +wؤu~jH,sɨFаIW41-43wؤu~jH,, +ߧQΤu~jH,sɨFаIW45-47ߧQΤu~jH,, +Ou~jH,sɨFаIW49-51Ou~jH,, +u~jH,sɨFаIW53-55u~jH,, +QFu~,sɨFаIW57-59QFu~,, +դOu~,sɨFаIW61-63դOu~,, +ѦtH10,sɨFаϫO18,, +W,sɨFаϫO1W,, +PW,sɨFаϫO8,, +e,sɨFаϫeD12-25e,, +ӭb,sɨFаϫeD29ӭb,, +P,sɨFаϫ15P,, +ťܶb,sɨFаϫ2ťܶb,, +[ia,sɨFаϫ8,, +8,sɨFаϫ8[ia,, +Iw,sɨFаϫH2Iw,, +AHb,sɨFаϫd6,, +b,sɨFаϫ֨7b,, +Abb,sɨFаϫA20Abb,, +},sɨFаڼ֨12},, +w֭b,sɨFаڼ֨9w֭b,, +W,sɨFаϬи1W,, +Ī,sɨFаϬи28Ī,, +QbdQ,sɨFаϬи33QbdQ,, +bh,sɨFаϬи34bh,, +bu,sɨFаϬи36bu,, +,sɨFаϬи63,, +pO֬v,sɨFаϬи68pO֬v,, +Хݭb,sɨFаϬݳ2-18Хݭb,, +B,sɨFаϬݳ29-39B,, +᷽,sɨFаϮ|f,, +ز,sɨFаϮ|f19ز,, +Ru~,sɨFаϮۦa10-14Ru~,, +ڤu~,sɨFаϮۦa2-8ڤu~,, +PW,sɨFаϯQ˨F 8,, +,sɨFаϯQ˨F8,, +,sɨFаϯQ˨F21y.,, +Rs,sɨFаϰa|81Rs,, +ɤpv,sɨFаϰ߮|8-12ɤpv,, +Jɩ~,sɨFаϰ֮|10Jɩ~,, +Qf,sɨFаϰ֮|12-50Qf,, +nbnb,sɨFаϰ֮|2nbnb,, +qԤs,sɨFаϰ֮|52qԤs,, +O,sɨFаϰbs188O,, +b,sɨFаϰb|12-20b,, +,sɨFаϱ^I9-11,, +Ѫ,sɨFаϱoɵ6Ѫ,, +򴺪,sɨFаϱyw21򴺪A,, +p,sɨFаϴI8-12p,, +Ω,sɨFа϶ˬv1-3Ω,, +إͤu~jH,sɨFа϶ˬv14-18إͤu~jH,, +pu~,sɨFа϶ˬv15-21pu~,, +ťFЪy,sɨFа϶ˬv6ťFЪy,, +,sɨFа϶ˬv9-13,, +Ku,sɨFа϶w11Ku,, +AR,sɨFа϶w15-17,, +Tu~,sɨFаϷ10-12dޤ,, +ñoQjH,sɨFаϷ21-23ñoQjH,, +FФu~ABy,sɨFаϷ5-7FФu~ߢϡТЮy,, +Rfb,sɨFаϹDs 20,, +,sɨFаϹjе,, +Qf,sɨFаϹlW|15Qf,, +Ab,sɨFаϹ33,, +p,sɨFаϺѥе,, +A,sɨFаϺѥе18A,, +fb,sɨFаϺѥе2fb,, +ɩ~,sɨFаϺɮ|6ɩ~,, +Эb,sɨFаϻAе12,, +r,sɨFаϻAе1-3r,, +Yʰa,sɨFаϻAY8Yʰa,, +rЭb,sɨFаϻȫ,, +pv,sɨFаϻrWs18,, +űss,sɨFаϻrWsD8űss,, +֩ɤpv,sɨFаϼ֪L1-19֩ɤpv,, +K,sɨFаϼ֪L21K,, +_A,sɨFаϼִ11_A,, +H,sɨFаϼִ2-18H,, +HH,sɨFаϼִ2-18HH,, +HHP,sɨFаϼִ2-18HHP,, +sss,sɨFаϼִ28sss,, +֫,sɨFаϼֶ|1-3֫,, +A,sɨFаϼֶ|15A,, +QApv,sɨFаϼֶ|4-14QApv,, +֪L,sɨFаϼֶ|5-9֪L,, +f,sɨFаϼַ|1f,, +FФs,sɨFаϼַ|2-4FФs,, +Ŭ,sɨFаϼַ|3Ŭ,, +p,sɨFаϼַ|7p,, +ɻA,sɨFаϼַ|9-11ɻA,, +ʦWp,sɨFаϼָ|2ʦWp,, +s䫰|,sɨFаϾbS18s䫰|,, +s䫰,sɨFаϾb۵18s䫰,, +I,sɨFаϾb۵28I,, +Iӳ,sɨFаϾb۵28Iӳ,, +ܩ~,sɨFаϾb@15ܩ~,, +bs,sɨFаϾb@1bs,, +bs߰ӳ,sɨFаϾb@1bs߰ӳ,, +W1y,sɨFаϾb@23Wy,, +W2y,sɨFаϾb@23Wy,, +~,sɨFаϾb@8~,, +nB,sɨFаϾP1-15,, +FФ,sɨFаϾP2-16,, +b,sɨFаϿns12-20b,, +?,sɨFаϿns22?,, +~,sɨFаϿns26-30~,, +wI,sɨFаϿns34-36wI,, +ť,sɨFаϿns38-44ť,, +s,sɨFаϿns6-10s,, +jy/P,sɨFаϿns70-72jy/P,, +P,sɨFаϿns70-72P,, +~,sɨFаϿns78-80~,, +~׼,sɨFаϿns82-86~׼,, +,sɨFаϿnH17-21,, +߮,sɨFаϿnH18-24߮,, +Ny,sɨFаϿnH23-29Ny,, +nH,sɨFаϿnH59-67nH,, +nw,sɨFаϿnH66-68nw,, +ߩM,sɨFаϿnH69-75ߩM,, +n,sɨFаϿnH77-81n,, +eؼ,sɨFаϿn]6eؼ,, +s,sɨFаϿnI15-17s,, +qI,sɨFаϿnI31qI,, +nd,sɨFаϿnI33nd,, +n,sɨFаϿnI35-47n,, +ww,sɨFаϿnI49-55ww,, +nI,sɨFаϿnI57-69nI,, +Ia,sɨFаϿnI71Ia,, +֪,sɨFаϿnB2-8֪,, +j,sɨFаϿnֵ68 -74j,, +dּ,sɨFаϿnֵ80dּ,, +nF,sɨFаϿnw10-22nF,, +Ҽwj,sɨFаϿnw11-13Ҽwj,, +wd/w,sɨFаϿn13wd/w,, +H,sɨFаϿn2-12H,, +v,sɨFаϿn7-9v,, +Asb,sɨFаA^1,, +I_,sɨFаA^6I_,, +A^b,sɨFаA^9A,, +@ɪ,sɨFаsf11,, +Jݭb,sɨFаJݸ,, +,sɨFаJݸ16,, +קQu~,sɨFаJݸ1קQu~,, +״,sɨFаJݸ21-29״,, +ػA,sɨFаJݸ26-28ػA,, +@,sɨFа@1@,, +ײb,sɨFаץ۵,, +Rp,sɨFаRݨ2-4,, +ťЭbũɻ,sɨFае,, +Ŷb,sɨFае11,, +Ů|b,sɨFа|16Ů|b,, +Wa,sɨFа18Wa1y,, +Es~,sɨFа8Es~,, +sѮp,sɯW,, +IRI,sɯW,, +F,sɯWKCTL364Cs - Fq552-566F,, +ӧʼs,sɯWKTIL697ӧʼs,, +MIjH,sɯWLOT288whjD204-210MIjH,, +zu~jH,sɯWLOT293zu~jH,, +utjH,sɯWLOT472whjD142-148utjH,, +su~jH,sɯWTWTL125s48-56su~jH,, +wפu~߲ĤGy,sɯWTWTL28whjD168wפu~߲ĤGy,, +IQF,sɯWTWTL400w18IQF,, +ߧ{,sɯWTWTL407ιD118ߧ{,, +G@{j,sɯWϤG@{2-8AG@{j,, +ww,sɯWϤT@{18ww,, +T@{20-26,sɯWϤT@{20-26,, +HjH,sɯWϤT@{2-12HjH,, +T@{28-30,sɯWϤT@{28-30,, +yj,sɯWϤjeD1-17yj,, +aӼs,sɯWϤjeD18aӼs,, +awjH,sɯWϤjeD22-28awjH,, +jH,sɯWϤjeD30-38jH,, +𾱼,sɯWϤjeD47𾱼,, +E,sɯWϤjeD49-51E,, +jH,sɯWϤjeD57-75jH,, +Ws,sɯWϤjeD88Ws,, +E,sɯWϤjeDE,, +w_jH,sɯWϤj@{2-24w_jH,, +ؤjH,sɯWϤj@{9-31ؤjH,, +TCLu~,sɯWϤjFD2-16Ѣڤu~,, +X֤u~jH,sɯWϤjFD22-28X֤u~jH,, +Ws2y,sɯWϤj4-30WsĢy,, +o,sɯWϤj49-51o,, +jb,sɯWϤj77-83jb,, +Wؼs,sɯWϤts118Wؼs,, +IQ,sɯWϤts12IQ,, +s,sɯWϤts14-16s,, +ز,sɯWϤts28-30ز,, +wּ,sɯWϤts31-33wּ,, +ts,sɯWϤts35-39ts,, +ѵؼ,sɯWϤts36-44ѵؼ,, +w,sɯWϤts41-47w,, +,sɯWϤts55-61,, +ش,sɯWϤts64-68ش,, +,sɯWϤts65-67,, +Qͼ,sɯWϤts70-76Qͼ,, +Ms,sɯWϤts88Ms,, +ѻb,sɯWϤts88ѻb,, +Iؤu~jH,sɯWϥbs10-16Iؤu~jH,, +qQ^,sɯWϥbs22-32qQ^,, +o,sɯWϥ|@{9-14o,, +W,sɯWϥö38W,, +tW,sɯWϥö48tW,, +űssx,sɯWϥŤEqCs321űssx,, +פu~jH,sɯWϥե23-39פu~jH,, +Hqu~jH,sɯWϥե36-44Hqu~jH,, +R֤j?,sɯWϥե46-48R֤j?,, +ذu~jH,sɯWϥե51-63ذu~jH,, +׻,sɯWϥݲõ19׻,, +æw,sɯWϥM,, +M,sɯWϥM,, +M,sɯWϥM,, +a,sɯWϥM23a,, +B,sɯWϥM24-28B,, +PjH,sɯWϥM2-4APjH,, +A׻O,sɯWϦw|,, +IajH,sɯWϦwa2-6IajH,, +s,sɯWϦ?12-16s,, +Iu~jH,sɯWϦ?18-22Iu~jH,, +wjH,sɯWϦ?24-32wjH,, +u~jH,sɯWϦ?34u~jH,, +u~jH,sɯWϦ?36-40u~jH,, +qۤu~jH,sɯWϦ?46qۤu~jH,, +u~jH,sɯWϦ?50-56u~jH,, +õػO,sɯWϦѳõػO,, +֤jH,sɯWϦӨ100֤jH,, +ss,sɯWϦӨ1-17ss,, +פ,sɯWϦӨ138-168פ,, +س,sɯWϦӨ170-184س,, +,sɯWϦӨ218-220,, +p,sɯWϨFCD,, +[w,sɯWϨFCD,, +Bu~,sɯWϨFCD,, +FT,sɯWϨFCD11FT,, +jH,sɯWϨFCD120-130jH,, +B,sɯWϨFCD131-137B,, +,sɯWϨFCD132-142,, +pڼ,sɯWϨFCD144pڼ,, +ئAy,sɯWϨFCD207ئӢϮy,, +,sɯWϨFCD23,, +䷽,sɯWϨFCD247-255䷽,, +sojH,sɯWϨFCD260-276sojH,, +Pӷ~,sɯWϨFCD282-284Pӷ~,, +ڥͯWjH,sɯWϨFCD289ڥͯWjH,, +ޤ,sɯWϨFCD29-35ޤ,, +wjHAy,sɯWϨFCD301-309wjHϮy,, +sqjH,sɯWϨFCD319sqjH,, +ؿ,sɯWϨFCD341-345ؿ,, +ou~jH,sɯWϨFCD362ou~jH,, +Wh~,sɯWϨFCD363Wh~,, +UHu~jH,sɯWϨFCD364-366UHu~jH,, +lu~jH,sɯWϨFCD368-370lu~jH,, +aȤu~jH,sɯWϨFCD381-389aȤu~jH,, +_~jH,sɯWϨFCD391-407_~jH,, +aפu~jH,sɯWϨFCD40-50aפu~jH,, +y~jH,sɯWϨFCD62y~jH,, +O,sɯWϨFCD64-66O,, +䤤´q@t,sɯWϨFCD8-14䤤´q@t,, +nB,sɯWϨFLD105-129nB,, +פOu~,sɯWϨFLD26-38פOu~,, +BAs,sɯWϨFLD298BAs,, +_ۤjH,sɯWϨFLD328_ۤjH,, +jjH,sɯWϨFLD68-76jjH,, +ŵؼ,sɯWϨɦ11-17ŵؼ,, +Ao,sɯWϨɦ1-3Ao,, +b,sɯWϨɦ16-32b,, +ؼ,sɯWϨɦ2-4ؼ,, +I,sɯWϨɦ5-9I,, +jH,sɯWϨɦ6-14jH,, +n,sɯWϨɩM,, +,sɯWϨɩM1-3,, +j,sɯWϨɩM25-41j,, +j,sɯWϨɩM43-59j,, +MjH,sɯWϨɩM66-78MjH,, +wפjH,sɯWϨɩM80-98wפjH,, +ʵؤu~fܤjHĤG,sɯWϨʵؤu~fܤjHĤG,, +ت,sɯWϩɼֵ1-5ت,, +ۺѷs,sɯWϪeI,, +@fs,sɯWϪo꩸63@fs,, +ܻT,sɯWϪܻT13-17ܻT,, +ܻTjH,sɯWϪܻT1-5ܻTjH,, +B,sɯWϪܻT9-12B,, +CsYsO,sɯWϫCs,, +s˻,sɯWϫCs,, +[O ,sɯWϫCs,, +~,sɯWϫCs - ŤEq123~,, +RO,sɯWϫCs - ŤEq369RO,, +ߩwjH,sɯWϫCs - Wq114-128ߩwjH,, +ĭRjH,sɯWϫCs - Wq117-121ĭRjH,, +֤jH,sɯWϫCs - Wq123-133֤jH,, +FȦjH,sɯWϫCs - Wq135-143FȦjH,, +WN,sɯWϫCs - Wq15-23WN,, +ģjH,sɯWϫCs - Wq167-173ģjH,, +ӤjH,sɯWϫCs - Wq185-187ӤjH,, +ʸU,sɯWϫCs - Wq189ʸU,, +sCjH,sɯWϫCs - Wq201-207sCjH,, +Iؤ,sɯWϫCs - Wq210Iؤ,, +nפ,sɯWϫCs - Wq264-298nפ,, +Bqv,sɯWϫCs - Wq277-287Bqv,, +ؤjH,sɯWϫCs - Wq289-301ؤjH,, +tTjH,sɯWϫCs - Wq374-380tTjH,, +VtjH,sɯWϫCs - Wq382-392VtjH,, +Wӷ~ȦjH,sɯWϫCs - Wq405Wӷ~ȦjH,, +jH,sɯWϫCs - Wq407-411jH,, +Ws,sɯWϫCs - Wq455-457Ws,, +ؤOu~,sɯWϫCs - Wq459-469ؤOu~,, +ŤOu~,sɯWϫCs - Wq491-501ŤOu~,, +ënfܤjH,sɯWϫCs - Wq503-515ënfܤjH,, +nu~jH,sɯWϫCs - Wq603-609nu~jH,, +Fnu~jH,sɯWϫCs - Wq611-619Fnu~jH,, +ߩjH,sɯWϫCs - Wq98-112ߩjH,, +O,sɯWϫCs - `q28O,, +,sɯWϫCs100Rpv,, +ܪܻ,sɯWϫCs103ܪܻ,, +sp,sɯWϫCs132sp,, +A,sɯWϫCs18A,, +RbBy,sɯWϫCs200RbЮy,, +sRb,sɯWϫCs218-240,, +ѳbq,sɯWϫCs33ѳbq,, +A,sɯWϫCs342A,, +,sɯWϫCs38,, +rs,sɯWϫCs398rs,, +sO,sɯWϫCs39,, +R,sɯWϫCs41-63R,, +,sɯWϫCs520,, +R,sɯWϫCs530-590,, +ܩ~,sɯWϫCs623ܩ~,, +W,sɯWϫCs633W,, +,sɯWϫCs6,, +AO,sɯWϫCs6AO,, +Iμ,sɯWϫCsWq269Iμ,, +Oͼs,sɯWϫCsD263-275Oͼs,, +Aܻ,sɯWϫCsD644-654Aܻ,, +,sɯWϫCsYCs100,, +RW,sɯWϬR8,, +ɶT,sɯWϬ1ɶT,, +ؤu~jH,sɯWϮW11-15ؤu~jH,, +ʵؤutfܤjH,sɯWϮW30-32ʵؤutfܤjH,, +UFӤu~,sɯWϮW34-36UFӤu~,, +פu~jH,sɯWϮW35-45פu~jH,, +ͳqu~jH,sɯWϮW38-40ͳqu~jH,, +qy,sɯWϮW47-57qy,, +֫HutjH,sɯWϮW6-28֫HutjH,, +~,sɯWϮW65-69~,, +u~,sɯWϮW66-82u~,, +PQu~jH,sɯWϮW77-81PQu~jH,, +au~jH,sɯWϮW83-93au~jH,, +פu~,sɯWϮW84-92פu~,, +ثTu~,sɯWϮW95ثTu~,, +wLs?Cy,sɯWϮ30wLs?Ѯy,, +uqj,sɯWϮ9uqj,, +jH,sɯWϮ102jH,, +^,sɯWϮ103^,, +HjH,sɯWϮ105-111HjH,, +s,sɯWϮ116-118s,, +ao,sɯWϮ122-132Aao,, +w,sɯWϮ134-138w,, +pM,sɯWϮ140-146pM,, +j,sɯWϮ16-20j,, +,sɯWϮ2-14,, +عF,sɯWϮ32عF,, +njH,sɯWϮ83-93njH,, +W,sɯWϯ,, +ªAy,sɯWϯ195ªϮy,, +ajHAy,sɯWϯ202ajHϮy,, +w,sɯWϯ208w,, +?Qu~,sɯWϯ30-38?Qu~,, +,sɯWϯ80,, +W,sɯWϯ93,, +W,sɯWϯW,, +֤jH,sɯWϯֵ1-17֤jH,, +ojH,sɯWϯ|13-23ojH,, +s,sɯWϯ|7-11s,, +Զh?,sɯWϯA108Զh?,, +_?,sɯWϯA98,, +_,sɯWϯA98_,, +?Ī,sɯWϯA99?Ī,, +,sɯWϯW󥫵10-22,, +wΤjH,sɯWϯW󥫵120-140wΤjH,, +[,sɯWϯW󥫵156[,, +פjH,sɯWϯW󥫵39-43AפjH,, +ؤ,sɯWϯW󥫵49-51ؤ,, +Ws,sɯWϯW󥫵67-95Ws,, +w,sɯWϯW󥫵6-8w,, +?qljH,sɯWϰ14-18?qljH,, +sפu~jH,sɯWϰ8-12sפu~jH,, +u~,sɯWϰ116-122u~,, +wf,sɯWϰ132-140wf,, +xs,sɯWϰ168,, +sפ,sɯWϰ88sפ,, +qܾ,sɯWϰD145-159qܾ,, +R,sɯWϱyR,, +Afb,sɯWϱyR,, +z,sɯWϱyR2Az,, +Ǽw,sɯWϱ䤽{14-36Ǽw,, +妨,sɯWϱ䤽{17-35妨,, +ּּ,sɯWϱ䤽{2-4ּּ,, +P,sɯWϱ䤽{37P,, +ww,sɯWϱ䤽{6-10ww,, +j,sɯWϱ䤽{9j,, +aw,sɯWϱ䤽28-30aw,, +ө~,sɯWϲ`O8ө~,, +@Ǽ,sɯWϲw10-12@Ǽ,, +TM,sɯWϲw14-24TM,, +ͼ,sɯWϲw19ͼ,, +ģ,sɯWϲw21-23ģ,, +jH,sɯWϲw25-33jH,, +XjH,sɯWϲw26-40XjH,, +PXjH,sɯWϲw2-8PXjH,, +B,sɯWϲw37-41B,, +jE(W),sɯWϲw55jE(W),, +WI,sɯWϲw68Wߢ,, +nsjH,sɯWϲw74-78nsjH,, +F_jH,sɯWϳūθ1-11F_jH,, +u~jH,sɯWϳūθ19-25u~jH,, +F_t,sɯWϳūιD1-11F_t,, +nojH,sɯWϵno8-12nojH,, +ģO,sɯW϶ģO,, +p,sɯW϶[71-73p,, +RjH,sɯWϷs33-39RjH,, +ﮮx,sɯWϷιD100,, +u~jH,sɯWϷιD127-135u~jH,, +ڰTq,sɯWϷιD168ڰTq,, +Fu~jH,sɯWϷιD177-181Fu~jH,, +FOfd,sɯWϷιD188FOfd,, +s,sɯWϷιD18s,, +w,sɯWϸw20-24w,, +wIjH,sɯWϸw26-42wIjH,, +Bӡ]G^,sɯWϸw2-6Bӡ]G^,, +ŷsj,sɯWϸw46-58ŷsj,, +ҧӼ,sɯWϸw8-12ҧӼ,, +FOfd,sɯWϼwhjD110-118FOfd,, +wڤ,sɯWϼwhjD120wڤ,, +w,sɯWϼwhjD126-140w,, +pXfB,sɯWϼwhjD150-164pXfB,, +swh,sɯWϼwhjD178-182swh,, +sפ,sɯWϼwhjD184-186sפ,, +߮u~,sɯWϼwhjD188-202߮u~,, +Wu~,sɯWϼwhjD220-248Wu~,, +whjDu~,sɯWϼwhjD256-264whjDu~,, +Qns禳q,sɯWϼwhjD266-270Qns禳q,, +FȪP,sɯWϼwhjD36-60FȪP,, +~,sɯWϼwhjD72-76~,, +Eְ󶰹Ρ]yߡ^,sɯWϼwhjD78-86Eְ󶰹Ρ]yߡ^,, +Hפu~jH,sɯWϼwhjD88-96Hפu~jH,, +趰Τ,sɯWϼwhjD98趰Τ,, +f,sɯWϼwص,, +wd,sɯWϼwص2-20wd,, +Kؤj,sɯWϼwص26-28Kؤj,, +Kؤj,sɯWϼwص30-32Kؤj,, +wؼ,sɯWϼwص62-70wؼ,, +æpu~jH,sɯWϾۥJ10-14æpu~jH,, +wu~,sɯWϾۥJ13-23wu~,, +î۲ĤTu~jH,sɯWϾۥJ2-8î۲ĤTu~jH,, +Qj,sɯWϾۥJ28Qj,, +LjHAy,sɯWϾۥJ36-50LjHϮy,, +ñoQ,sɯWϾۥJ43-57ñoQ,, +ؤu~jH,sɯWϾs17-33ؤu~jH,, +u~jH,sɯWϾs32-40u~jH,, +ʦ?,sɯWϾs35-41ʦ?,, +sOu~jH,sɯWϾs43-47sOu~jH,, +ضu~jH,sɯWϾs49-53ضu~jH,, +Qɤu~jH,sɯWϾs55-57Qɤu~jH,, +Wu~jH,sɯWϾs59-71Wu~jH,, +sذڳfB,sɯWϾs72-76sذڳfB,, +IQu~jH,sɯWϾs77-87IQu~jH,, +nu~jH,sɯWϾs78-84nu~jH,, +񷨷s?,sɯWϿ22-66,, +ɴ,sɯWϿ53-61ɴ,, +ҵذa,sɯWs˸8ҵذa,, +dx2y,sɯWp28dxĢy,, +dx1y,sɯWХе89dxĢy,, +hf,sɯWF1-8hf,, +yڶ,sɯWF9yڶ,, +_,sɯWMa{24-72_,, +Iؼ,sɯWMa{32-36Iؼ,, +j,sɯWMa{40-46j,, +ؼ,sɯWMa{48-68ؼ,, +ѫOj,sɯWMa{74ѫOj,, +sڪ,sɸC,, +sػȦjH,sɸCKCTL171MyXD122sػȦjH,, +EsT߲Ĥ@y,sɸCKCTL21551EsT߲Ĥ@y,, +ñdu~jH,sɸCKCTL352׵18-26ñdu~jH,, +nPu~jH,sɸCKCTL4657-59nPu~jH,, +פu~jH,sɸCLOT282jW89פu~jH,, +Uw,sɸCLOT287ťе25-27Uw,, +wjH,sɸCϤjեе25wjH,, +Qu~jH,sɸCϤjsƹD,, +TLP 132,sɸCϤjsƹD132-134TLP 132,, +صؤu~jH,sɸCϤjsƹD136-138صؤu~jH,, +פu~jH,sɸCϤjsƹD144-150פu~jH,, +su~߲1y,sɸCϤjsƹD152-160su~߲Ģy,, +߲ۤĤ@,sɸCϤjsƹD202-210߲ۤĤ@,, +Fu~,sɸCϤjsƹD21-33Fu~,, +Pu~jH,sɸCϤjsƹD45-51Pu~jH,, +nu~,sɸCϤjsƹD58-66nu~,, +au~jH,sɸCϤj12-22au~jH,, +ùu~jH,sɸCϤj2-10ùu~jH,, +ؤjH,sɸCϤjH1ؤjH,, +éM,sɸCϤjH29éM,, +,sɸCϤjH31,, +bq,sɸCϤjH43bq,, +jH,sɸCϤjH5-17jH,, +db,sɸCϤjۤfD150db,, +a,sɸCϤj103-109a,, +,sɸCϤj113-127,, +ؤjH,sɸCϤj11ؤjH,, +jH,sɸCϤj139jH,, +Fө,sɸCϤj14-22Fө,, +ɳӪ,sɸCϤj153ɳӪ,, +ȦjH,sɸCϤj23-51ȦjH,, +sjH,sɸCϤj53-73sjH,, +ͩjH,sɸCϤj89-101ͩjH,, +صou~jH,sɸCϤu~10-14صou~jH,, +}ڤ󤤤,sɸCϤu~16-22}ڤ󤤤,, +wu~jH,sɸCϤu~17-21wu~jH,, +pu~jH,sɸCϤu~23-31pu~jH,, +«Hy,sɸCϤu~24-28«Hy,, +Oפu~jH,sɸCϤu~2-8Oפu~jH,, +pu~jH,sɸCϤu~30-32pu~jH,, +fnu~jH,sɸCϤu~7-9fnu~jH,, +פjH,sɸCϤڵ2-14פjH,, +Cb,sɸCϤNw1Cb,, +Cb,sɸCϤNw3Cb,, +W,sɸCϤNw8,, +_PAy,sɸCϥjW1-25,, +Qu~fܤjH,sɸCϥjW16-24Qu~fܤjH,, +ة,sɸCϥjW29-33ة,, +QLu~jH,sɸCϥjW40-42QLu~jH,, +Fu~jH,sɸCϥjW44-52Fu~jH,, +ذu~jH,sɸCϥjW49-53ذu~jH,, +u~jH,sɸCϥjW57-61u~jH,, +aMu~jH,sɸCϥjW63-75aMu~jH,, +Mפu~,sɸCϥjW68Mפu~,, +Ϳu~jH,sɸCϥjW81-83Ϳu~jH,, +ʬްӷ~,sɸCϥjW93ʬްӷ~,, +Iu~jH,sɸCϥjW97-103Iu~jH,, +aӤu~jH,sɸCϥåߵ8-14aӤu~jH,, +_~,sɸCϥëظ19-21_~,, +X׳f,sɸCϥëظ7-11X׳f,, +翳ּt,sɸCϥëظ8-12翳ּt,, +T,sɸCϥð15T,, +pפu~jH,sɸCϥð1-5pפu~jH,, +¤u~,sɸCϥð16-20¤u~,, +Wu~jH,sɸCϥð2Wu~jH,, +ðu~jH,sɸCϥð4-6ðu~jH,, +اQu~,sɸCϥð13-15اQu~,, +u}~,sɸCϥð18u}~,, +LնΤjH,sɸCϥð22-24LնΤjH,, +u~jH,sɸCϥð23-29u~jH,, +ê@u~jH,sɸCϥð26-30ê@u~jH,, +פu~jH,sɸCϥ÷~22-26פu~jH,, +Q,sɸCϥý9Q,, +^jH,sɸCϥۤ|1-5^jH,, +װӷ~jH,sɸCϥۤ|20װӷ~jH,, +\,sɸCϥۤ|8-18\,, +FjH,sɸCϥۨ10-30FjH,, +ؿu~jH,sɸCϥ۫ص17-23ؿu~jH,, +_,sɸCϥ۽101-111_,, +ojH,sɸCϥ۽108ojH,, +AؤjH,sɸCϥ۽21AؤjH,, +RjH,sɸCϥ۽29-45RjH,, +ۼӫny,sɸCϥ۽48-62ۼӫny,, +ۼӰӳ,sɸCϥ۽48-62ۼӰӳ,, +Ѧw,sɸCϥ۽76-96Ѧw,, +,sɸCϥ۽85-99,, +UjH,sɸCϥݶC109-115UjH,, +]_jH,sɸCϥݶC117-125]_jH,, +Aؼ,sɸCϥݶC127-133Aؼ,, +򯼤u~jH,sɸCϥݶC31-39򯼤u~jH,, +@M,sɸCϥݶC55@M,, +MjH,sɸCϥݶC85MjH,, +jHάFjHӳ,sɸCϥݶC87-89jHάFjHӳ,, +jH,sɸCϥݶC87jH,, +FjH,sɸCϥݶC89FjH,, +QjH,sɸCϥ11-15QjH,, +ojH,sɸCϥ21ojH,, +jH,sɸCϥ27-39jH,, +jH,sɸCϥ39AjH,, +U,sɸCϥ41-45U,, +jH,sɸCϥ7-9jH,, +u~jH,sɸCϦ`10-18u~jH,, +UqjH,sɸCϦ`15-19UqjH,, +紺j,sɸCϩMyX,, +jH,sɸCϩMyXD102jH,, +ŶиF,sɸCϩMyXD119ŶиF,, +pou~ĤTjH,sɸCϩMyXD123-129pou~ĤTjH,, +QMjH,sɸCϩMyXD130QMjH,, +ӧQu~jH,sɸCϩMyXD151-157ӧQu~jH,, +_u~jH,sɸCϩMyXD159-165_u~jH,, +¤u~jH,sɸCϩMyXD167-175¤u~jH,, +˵ojH,sɸCϩMyXD192-212˵ojH,, +F,sɸCϩMyXD50-56F,, +εسfܤjH,sɸCϩMyXD57-61εسfܤjH,, +ۼ,sɸCϩMyXD58-64ۼ,, +R,sɸCϩMyXD63R,, +,sɸCϩMyXD66-72,, +yM,sɸCϩMyXD74-88yM,, +ۤutjH,sɸCϩMyXD75-87ۤutjH,, +ʷsjH,sɸCϩMyXD97-107ʷsjH,, +Päu~jH,sɸCϩa9-11Päu~jH,, +ɤOu~jH,sɸCϪn8ɤOu~jH,, +Cu~,sɸCϪF1-33Cu~,, +Ou~jH,sɸCϪF14-20Ou~jH,, +,sɸCϪF2-12,, +߫Hu~jH,sɸCϪF22-28߫Hu~jH,, +Y,sɸCϪ11Y,, +ŻA,sɸCϫCs - Fq382ŻA,, +P,sɸCϫCs - Fq412-416P,, +,sɸCϫCs - Fq430-436,, +F_,sɸCϫCs - Fq464-468F_,, +MOs?,sɸCϫCs - Fq482,, +UӤu~jH,sɸCϫCs-Fq307-311UӤu~jH,, +ɤu~jH,sɸCϫCs-Fq433-441ɤu~jH,, +A,sɸCϫCsVFq443-451A,, +׼,sɸCϫCsVFq456-458׼,, +EB,sɸCϫCsVFq472-478EB,, +_jH,sɸCϫCsVFq499_jH,, +ͦ,sɸCϫCsD501ͦ,, +jH,sɸCϫCsD539jH,, +du~jH,sɸCϫCsD547-549du~jH,, +żW,sɸCϫC1,, +Cحb,sɸCϫCˡ22Cحb,, +Cb,sɸCϫCd10Cb,, +CTb,sɸCϫCd2BCTb,, +Cha,sɸCϫCq2Cha,, +ջAbq,sɸCϫCq33ջAbq,, +֪1y,sɸCϫCq75,, +,sɸCϫCq77,, +yb,sɸCϫC18yb,, +,sɸCϫC1,, +Cɪ,sɸCϫC7-19Cɪ,, +i,sɸCϫHڵ10-20i,, +ڳӻ,sɸCϫHڵ30-42ڳӻ,, +ĤjH,sɸCϫHڵ35-37ĤjH,, +Wj,sɸCϫ̴I|,, +Wwj,sɸCϫ̴I|4-16Wwj,, +Wj,sɸCϫR|4-16Wj,, +EjH,sɸCϬڵ2-14EjH,, +Ab,sɸCϯK1Ab,, +EO,sɸCϯ^11EO,, +Rb,sɸCϯﴺs180Rb,, +Rbw,sɸCϯﴺs180Rbw,, +W,sɸCϯﴺs272W,, +׶,sɸCϯﴺs274׶,, +Ybv,sɸCϯﴺs278Ybv,, +ֶAy,sɸCϯﴺs280ֶϮy,, +ڼ,sɸCϰڵ27-29ڼ,, +sˤjH,sɸCϰڵ31-41sˤjH,, +UQu~jH,sɸCϰd13UQu~jH,, +uu~jH,sɸCϰd15-23uu~jH,, +Pؤu~jH,sɸCϰd1-7Pؤu~jH,, +ڨȤ,sɸCϰd18ڨȤ,, +Ȥu~,sɸCϰd2-6Ȥu~,, +PouԷ,sɸCϰ1-9PouԷ,, +TOPPY TOWER,sɸCϰ45-51TOPPY TOWER,, +Bu~jHĤGy,sɸCϱD32-50Bu~jHĤGy,, +Uu~,sɸCϱD4-30Uu~,, +ڼwu~jH,sɸCϱD57-61ڼwu~jH,, +UFu~jH,sɸCϱD58-64UFu~jH,, +fܤjH,sɸCϱD63-71fܤjH,, +u,sɸCϱD73u,, +ȬwT,sɸCϱD79ȬwT,, +FQ,sɸCϱD88FQ,, +pb,sɸCϱD99pb,, +_jH,sɸCϲڵ17-19_jH,, +ewjH,sɸCϲڵ38-44ewjH,, +ڰӷ~,sɸCϲڵ7ڰӷ~,, +,sɸCϲӤs2-16,, +u~,sɸCϳfdXY51-63u~,, +NڳӤ,sɸCϳfdXY71-75NڳӤ,, +ñoQs2y,sɸCϳfdXY88ñoQsĢy,, +H,sɸCϳģ4-8H,, +wjH,sɸCϴڵ1-3wjH,, +ֽjH,sɸCϵl2-4ֽjH,, +nاNФjH,sɸCϵجP13-17nاNФjH,, +Oդu~jH,sɸCϵجP16-18Oդu~jH,, +wFu~jH,sɸCϵجP2-6wFu~jH,, +عFu~,sɸCϵجP8عFu~,, +p,sɸCϵشs3p,, +شs,sɸCϵشs9شs,, +Aɪ,sɸCϷ۸1Aɪ,, +UƹFf,sɸCϷ~14-15UƹFf,, +Fpu~jH,sɸCϷ~1-4Fpu~jH,, +PP,sɸCϷ~16-18PP,, +~u~,sɸCϷ~19-21~u~,, +תy,sɸCϷ~9-12תy,, +Hڤ,sɸCϸwD8Hڤ,, +ĬܤuӤ,sɸCϸq11-15ĬܤuӤ,, +~u~jH,sɸCϸq17-21~u~jH,, +ˤu~jH,sɸCϸq8-10ˤu~jH,, +ùoijH,sɸCϸw10-16ùoijH,, +Au~jH,sɸCϸw1-11Au~jH,, +ͰOu~jH,sɸCϸw18-30ͰOu~jH,, +ΪLu~jH,sɸCϸw32-40ΪLu~jH,, +Fu~jH,sɸCϸw42-50Fu~jH,, +KC100,sɸCϸ100-110KC100,, +u~jH,sɸCϸ18-24u~jH,, +ؤu~jH,sɸCϸ26-38ؤu~jH,, +Fu~jH,sɸCϸ29-39Fu~jH,, +,sɸCϸ50,, +T,sɸCϸ52-56T,, +òu~jH,sɸCϸ58-70òu~jH,, +Iu~jH,sɸCϸ78-84Iu~jH,, +U,sɸCϸ8U,, +Mu~jH,sɸCϸ90-98Mu~jH,, +Qפu~jH,sɸCϸ9-15Qפu~jH,, +wjH,sɸCϸFD1001wjH,, +_j,sɸCϸFD1009-1011_j,, +FQڤ,sɸCϸߵ1-11FQڤ,, +ëu~jH,sɸCϸߵ13-29ëu~jH,, +Ĥu~jH,sɸCϸߵ14-16Ĥu~jH,, +ְu~jH,sɸCϸߵ18-24ְu~jH,, +ou~jH,sɸCϸߵ26-32ou~jH,, +Fs,sɸCϸI7-11Fs,, +jwu~jH,sɸCϸo2-12jwu~jH,, +ڻ,sɸCϸq15ڻ,, +X׼,sɸCϸq15ڻբy,, +n襤,sɸCϸq2-10n襤,, +u~jH,sɸCϸa1-11u~jH,, +wou~jH,sɸCϸa12-18wou~jH,, +Aؤu~jH,sɸCϸa13-19Aؤu~jH,, +Edge,sɸCϸa30-34Edge,, +HqTjH,sɸCϸָ93HqTjH,, +wu~߲Ĥ@y,sɸCϸw15-33wu~߲Ĥ@y,, +wu~jH,sɸCϸw16-26wu~jH,, +ΪLu~,sɸCϸֵ2-28ΪLu~,, +Tb,sɸCϸ,, +F,sɸCϸ100-102F,, +WĤ@y,sɸCϸp100W,, +ط~u~jH,sɸCϸ׵,, +շ~u~jH,sɸCϸ׵1-15շ~u~jH,, +פu~߲ĤG,sɸCϸ׵33-39פu~߲ĤG,, +wĤu~jH,sɸCϸ׵41-45wĤu~jH,, +jE]F^,sɸCϸ׵44-52jE]F^,, +ķ~jH,sɸCϸ׵53-57ķ~jH,, +F誫y,sɸCϹũw1-11F誫y,, +ΪLĤGu~jH,sɸCϹũw8-14ΪLĤGu~jH,, +ͩu~jH,sɸCϹży11-13ͩu~jH,, +,sɸCϹży12,, +atĤTu~jH,sɸCϹży5-9atĤTu~jH,, +u~jH,sɸCϹży6-10u~jH,, +uB,sɸCϺaڸ1-5uB,, +֤jH,sɸCϺaڸ73-85֤jH,, +jH,sɸCϺaڸ97-111jH,, +p,sɸCϼd{3p,, +wjH,sɸCϼwhjD35-43wjH,, +wj,sɸCϼwj|3wj,, +Bڬv,sɸCϿڸ180Bڬv,, +פjH,sɸCϿڸ192-202פjH,, +s|s,sɸCϿڸ223s|s,, +ˡ~,sɸCϿ91ˡ~,, +"?~,1?~","sɸCsO2-3,?~]Ĥ@^",, +p,sɸCsO28p,, +ŴI,sɸCsO3BŴI,, +spvspv]Ĥ@y^,sɸCsO4-5spv]Ĥ@y^,, +pou~Ĥ@jH,sɸCťе2-16pou~Ĥ@jH,, +qu~jH,sɸCťе24-28qu~jH,, +ü֤,sɸCťе29ü֤,, +Fu~jH,sɸCťе30-38Fu~jH,, +u~jH,sɸCťе30-38u~jH,, +ju~jH,sɸCťе31-35ju~jH,, +nu~jH,sɸCťе37-41nu~jH,, +aFu~jH,sɸCťе7-13aFu~jH,, +,sɸCR53RbRػ,, +Rb,sɸCR55,, +ɮpb,sɸC_8,, +2Ay,sq,, +rW,sq,, +,sq,, +zpO,sq,, +Fpv,sqLOT 1491Fpv,, +Ngan Wai CourtȽb,sqNgan Wai CourtȽb,, +MWMܰa,sqTCTL5F1MWMܰa,, +?,sqϤj,, +wW,sqϤjۤf1wW,, +sab,sqϤjDD80sab,, +,sqϤjs 1- 30,, +FW,sqϤs26AFW,, +Ѯb,sqϤsD22AѮb,, +Ѻ֪,sqϤsD48Ѻ֪,, +wa,sqϥ_,, +,sqϦW3-3B,, +b,sqϩM7,, +Aܪ,sqϩWQ2Aܪ,, +ŤѮ,sqϪFFظ12ŤѮ,, +W`,sqϪFFظ8W`,, +,sqϪ̸108,, +̤sĤ@y,sqϪ̸13̤s,, +F,sqϪd 6,, +ɶ,sqϪwsD,, +wsD 59,sqϪwsD 59sIb,, +^,sqϪI,, +b,sqϪI33b,, +FO,sqϪI6-8FO,, +ܪĤ@Ay,sqϪQ9ܪĤ@Ay,, +Wws,sqϫns10 -12Ww,, +WQO,sqϫns14WQO,, +~,sqϮ|1~,, +~ܻ,sqϮ|26~ܻ,, +~]1-11y^,sqϮ|1-11~]1-11y^,, +~r,sqϮ|12~r,, +ũ~Ż,sqϮŮ|12ũ~Ż,, +Ů|1,sqϮŮ|1ũ~,, +rW,"sqϯ`s|11rW,`p",, +,sqϯ`| 18,, +ܰa,sqϰF1ܰa,, +ťܰa,sqϰF1ťܰa,, +MW ĦW,sqϰF2MW ĦW,, +ܰa,sqϰF2ܰa,, +ȐߤjH,sqϱ۽XY10ȐߤjH,, +ȽjH,sqϱ۽XY11ȽjH,, +W,sqϱ۽XY13W,, +֦w,sqϱ۽XY16֦w,, +ܰa,sqϱ۽XY18Aܰa,, +r,sqϱ۽XY19r,, +ۤjH,sqϱ۽XYۤjH,, +FoiWwjHAy,sqϳJ15FoiWwjHϮy,, +ɮp,sqϴrWD,, +[p,sqϴrWD13,, +dzx,sqϴrWD3dzx,, +tax,sqϸta9 -16tax,, +Ipv,sqϸIpv,, +ȪebȦ,sqϻȪebȦ,, +ȪebȮԻ,sqϻȪebȮԻ,, +jH,sqϻȹB1jH,, +aֻ,sqϻȹB2aֻ,, +ȴ,sqϻqW8ȴ,, +rs,sqϼs|8-12rs,, +FW`,sqϼyF1FW`,, +WRb,sqϼ֩W2WRb,, +ѧQb,sqsе8ѧQb.,, +ŷu,sq_W12ŷu,, +_p|1,"sq_p|1rW,_p",, +p,squ|,, +w@O,sq[W3w@O,, +@O,sq[W3@O,, +֬,A?30,, +E?,WjeD98,, +gp,?F^ӹD^ӹD856,, +ʮ, NxDd1Xd,, +{E1,8,, +W, oU|1,, +|,oU|1,, +O,FаbsģF9,, +,gWPD80,, +AVA 55,Es?wD55,, +ZsDT,sɦ^,, +PARK YOHO,Csq18,, +׹m,٪C֮|2,, +|E,ԤQKm33,, +Central Peak,saFbsq{޹D18,, +ҡEsb,Csj}q88,, +,sɯWϯWjeD100,, +PL,jjHjq7838,, +, xۧ,, +Ƴ,`?µ229,, +ԪL,EsгFQD,, +n@,`?n1,, +[hQa,гӧQD7 ,, +{s,ssD9,, +qD218,䬶xsqD218,, +IEs?,E{sRW23,, +߹J,ֺa538,, +LW108,LWD108,, +W,CC99,, +c,MWѨF18,, +P, bsA,, +Q{Eͩ,jCŵ18,, +|â,jCjCD247,, +K83,FjsƹD83,, +fh,̤sHs108,, +q,WJFO12,, +63 Pokfulam,ߪLD63,, +my Central,LΤWūw23,, +Lp,ӦZjD460,, +KADOORIA,[hQsŹDzD111133,, +DI,٪?o|8,, +״J,Fڸ178,, +PW,ŤECsŤEq368,, +s,EsFW{310,, +,{310,, +ıs,٪}w8,, +|,FY33-35,, +Monterey,sɱNxDnT23,, +P,bsmF1,, +fW,Wö51,, +|Ҳ,E{sRW37,, +h[?sW,E{sRW37,, +?EC,_P23,, +ԫ?, Զ1,, +,~101,, +W,i18,, +LP6,d1,, diff --git a/src/assets/fonts/ubuntu/Ubuntu-B.ttf b/src/assets/fonts/ubuntu/Ubuntu-B.ttf new file mode 100755 index 0000000..b173da2 Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-B.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-BI.ttf b/src/assets/fonts/ubuntu/Ubuntu-BI.ttf new file mode 100755 index 0000000..72a5a99 Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-BI.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-C.ttf b/src/assets/fonts/ubuntu/Ubuntu-C.ttf new file mode 100755 index 0000000..602a3ee Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-C.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-L.ttf b/src/assets/fonts/ubuntu/Ubuntu-L.ttf new file mode 100755 index 0000000..ed0f5bc Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-L.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-LI.ttf b/src/assets/fonts/ubuntu/Ubuntu-LI.ttf new file mode 100755 index 0000000..c6cec55 Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-LI.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-M.ttf b/src/assets/fonts/ubuntu/Ubuntu-M.ttf new file mode 100755 index 0000000..ca9c03a Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-M.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-MI.ttf b/src/assets/fonts/ubuntu/Ubuntu-MI.ttf new file mode 100755 index 0000000..e8d186c Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-MI.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-R.ttf b/src/assets/fonts/ubuntu/Ubuntu-R.ttf new file mode 100755 index 0000000..d748728 Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-R.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-RI.ttf b/src/assets/fonts/ubuntu/Ubuntu-RI.ttf new file mode 100755 index 0000000..4f2d2bc Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-RI.ttf differ diff --git a/src/assets/fonts/ubuntu/Ubuntu-Th.ttf b/src/assets/fonts/ubuntu/Ubuntu-Th.ttf new file mode 100755 index 0000000..5cfec48 Binary files /dev/null and b/src/assets/fonts/ubuntu/Ubuntu-Th.ttf differ diff --git a/src/assets/fonts/ubuntu/UbuntuMono-B.ttf b/src/assets/fonts/ubuntu/UbuntuMono-B.ttf new file mode 100755 index 0000000..7bd6665 Binary files /dev/null and b/src/assets/fonts/ubuntu/UbuntuMono-B.ttf differ diff --git a/src/assets/fonts/ubuntu/UbuntuMono-BI.ttf b/src/assets/fonts/ubuntu/UbuntuMono-BI.ttf new file mode 100755 index 0000000..6c5b8ba Binary files /dev/null and b/src/assets/fonts/ubuntu/UbuntuMono-BI.ttf differ diff --git a/src/assets/fonts/ubuntu/UbuntuMono-R.ttf b/src/assets/fonts/ubuntu/UbuntuMono-R.ttf new file mode 100755 index 0000000..fdd309d Binary files /dev/null and b/src/assets/fonts/ubuntu/UbuntuMono-R.ttf differ diff --git a/src/assets/fonts/ubuntu/UbuntuMono-RI.ttf b/src/assets/fonts/ubuntu/UbuntuMono-RI.ttf new file mode 100755 index 0000000..18f81a2 Binary files /dev/null and b/src/assets/fonts/ubuntu/UbuntuMono-RI.ttf differ diff --git a/src/assets/images/Indicator@2x.png b/src/assets/images/Indicator@2x.png new file mode 100755 index 0000000..8734e70 Binary files /dev/null and b/src/assets/images/Indicator@2x.png differ diff --git a/src/assets/images/Indicator@3x.png b/src/assets/images/Indicator@3x.png new file mode 100755 index 0000000..9fefc8b Binary files /dev/null and b/src/assets/images/Indicator@3x.png differ diff --git a/src/assets/images/apartment.png b/src/assets/images/apartment.png new file mode 100644 index 0000000..6311cf0 Binary files /dev/null and b/src/assets/images/apartment.png differ diff --git a/src/assets/images/chat/discuss_logo@2x.png b/src/assets/images/chat/discuss_logo@2x.png new file mode 100755 index 0000000..fccd6a4 Binary files /dev/null and b/src/assets/images/chat/discuss_logo@2x.png differ diff --git a/src/assets/images/chat/discuss_logo@3x.png b/src/assets/images/chat/discuss_logo@3x.png new file mode 100755 index 0000000..a3f3e1d Binary files /dev/null and b/src/assets/images/chat/discuss_logo@3x.png differ diff --git a/src/assets/images/chat/head@2x.png b/src/assets/images/chat/head@2x.png new file mode 100755 index 0000000..a5f5a5b Binary files /dev/null and b/src/assets/images/chat/head@2x.png differ diff --git a/src/assets/images/chat/head@3x.png b/src/assets/images/chat/head@3x.png new file mode 100755 index 0000000..b47c8fa Binary files /dev/null and b/src/assets/images/chat/head@3x.png differ diff --git a/src/assets/images/chat/iconAdd@2x.png b/src/assets/images/chat/iconAdd@2x.png new file mode 100755 index 0000000..165cdb6 Binary files /dev/null and b/src/assets/images/chat/iconAdd@2x.png differ diff --git a/src/assets/images/chat/iconAdd@3x.png b/src/assets/images/chat/iconAdd@3x.png new file mode 100755 index 0000000..e171d35 Binary files /dev/null and b/src/assets/images/chat/iconAdd@3x.png differ diff --git a/src/assets/images/chat/iconDel@2x.png b/src/assets/images/chat/iconDel@2x.png new file mode 100755 index 0000000..220ed7e Binary files /dev/null and b/src/assets/images/chat/iconDel@2x.png differ diff --git a/src/assets/images/chat/iconDel@3x.png b/src/assets/images/chat/iconDel@3x.png new file mode 100755 index 0000000..a1f7cb8 Binary files /dev/null and b/src/assets/images/chat/iconDel@3x.png differ diff --git a/src/assets/images/chat/session_team@2x.png b/src/assets/images/chat/session_team@2x.png new file mode 100755 index 0000000..7d08ac3 Binary files /dev/null and b/src/assets/images/chat/session_team@2x.png differ diff --git a/src/assets/images/chat/session_team@3x.png b/src/assets/images/chat/session_team@3x.png new file mode 100755 index 0000000..d521c5f Binary files /dev/null and b/src/assets/images/chat/session_team@3x.png differ diff --git a/src/assets/images/commercialbuilding.png b/src/assets/images/commercialbuilding.png new file mode 100644 index 0000000..1884ceb Binary files /dev/null and b/src/assets/images/commercialbuilding.png differ diff --git a/src/assets/images/contract.png b/src/assets/images/contract.png new file mode 100644 index 0000000..2fcdc09 Binary files /dev/null and b/src/assets/images/contract.png differ diff --git a/src/assets/images/demohouse.png b/src/assets/images/demohouse.png new file mode 100644 index 0000000..fa9c319 Binary files /dev/null and b/src/assets/images/demohouse.png differ diff --git a/src/assets/images/econnews.png b/src/assets/images/econnews.png new file mode 100644 index 0000000..4922e1b Binary files /dev/null and b/src/assets/images/econnews.png differ diff --git a/src/assets/images/free@2x.png b/src/assets/images/free@2x.png new file mode 100644 index 0000000..871eb02 Binary files /dev/null and b/src/assets/images/free@2x.png differ diff --git a/src/assets/images/free@3x.png b/src/assets/images/free@3x.png new file mode 100644 index 0000000..018ef44 Binary files /dev/null and b/src/assets/images/free@3x.png differ diff --git a/src/assets/images/freefurniture.png b/src/assets/images/freefurniture.png new file mode 100644 index 0000000..7954af3 Binary files /dev/null and b/src/assets/images/freefurniture.png differ diff --git a/src/assets/images/furniture.png b/src/assets/images/furniture.png new file mode 100644 index 0000000..eca5509 Binary files /dev/null and b/src/assets/images/furniture.png differ diff --git a/src/assets/images/logo@2x.png b/src/assets/images/logo@2x.png new file mode 100755 index 0000000..1ed9759 Binary files /dev/null and b/src/assets/images/logo@2x.png differ diff --git a/src/assets/images/logo@3x.png b/src/assets/images/logo@3x.png new file mode 100755 index 0000000..ccd3c41 Binary files /dev/null and b/src/assets/images/logo@3x.png differ diff --git a/src/assets/images/manage.png b/src/assets/images/manage.png new file mode 100644 index 0000000..f1f9617 Binary files /dev/null and b/src/assets/images/manage.png differ diff --git a/src/assets/images/newowner@2x.png b/src/assets/images/newowner@2x.png new file mode 100644 index 0000000..04fc759 Binary files /dev/null and b/src/assets/images/newowner@2x.png differ diff --git a/src/assets/images/newowner@3x.png b/src/assets/images/newowner@3x.png new file mode 100644 index 0000000..6f5b764 Binary files /dev/null and b/src/assets/images/newowner@3x.png differ diff --git a/src/assets/images/news.png b/src/assets/images/news.png new file mode 100644 index 0000000..ae6efec Binary files /dev/null and b/src/assets/images/news.png differ diff --git a/src/assets/images/newtenant@2x.png b/src/assets/images/newtenant@2x.png new file mode 100644 index 0000000..cc2c21a Binary files /dev/null and b/src/assets/images/newtenant@2x.png differ diff --git a/src/assets/images/newtenant@3x.png b/src/assets/images/newtenant@3x.png new file mode 100644 index 0000000..7d5ba44 Binary files /dev/null and b/src/assets/images/newtenant@3x.png differ diff --git a/src/assets/images/owner@2x.png b/src/assets/images/owner@2x.png new file mode 100755 index 0000000..c20dc63 Binary files /dev/null and b/src/assets/images/owner@2x.png differ diff --git a/src/assets/images/owner@3x.png b/src/assets/images/owner@3x.png new file mode 100755 index 0000000..e2998c1 Binary files /dev/null and b/src/assets/images/owner@3x.png differ diff --git a/src/assets/images/ownertut1.png b/src/assets/images/ownertut1.png new file mode 100644 index 0000000..0ac723b Binary files /dev/null and b/src/assets/images/ownertut1.png differ diff --git a/src/assets/images/ownertut2.png b/src/assets/images/ownertut2.png new file mode 100644 index 0000000..0e84679 Binary files /dev/null and b/src/assets/images/ownertut2.png differ diff --git a/src/assets/images/ownertut3.png b/src/assets/images/ownertut3.png new file mode 100644 index 0000000..446bea9 Binary files /dev/null and b/src/assets/images/ownertut3.png differ diff --git a/src/assets/images/ownertut4.png b/src/assets/images/ownertut4.png new file mode 100644 index 0000000..a5b2c00 Binary files /dev/null and b/src/assets/images/ownertut4.png differ diff --git a/src/assets/images/ownertut5.png b/src/assets/images/ownertut5.png new file mode 100644 index 0000000..1a677e4 Binary files /dev/null and b/src/assets/images/ownertut5.png differ diff --git a/src/assets/images/ownertut6.png b/src/assets/images/ownertut6.png new file mode 100644 index 0000000..dec6f19 Binary files /dev/null and b/src/assets/images/ownertut6.png differ diff --git a/src/assets/images/ownertut7.png b/src/assets/images/ownertut7.png new file mode 100644 index 0000000..aeee945 Binary files /dev/null and b/src/assets/images/ownertut7.png differ diff --git a/src/assets/images/rentdoc.png b/src/assets/images/rentdoc.png new file mode 100644 index 0000000..6e46dc6 Binary files /dev/null and b/src/assets/images/rentdoc.png differ diff --git a/src/assets/images/renthistory.png b/src/assets/images/renthistory.png new file mode 100644 index 0000000..96366d5 Binary files /dev/null and b/src/assets/images/renthistory.png differ diff --git a/src/assets/images/repair.png b/src/assets/images/repair.png new file mode 100644 index 0000000..583aaf6 Binary files /dev/null and b/src/assets/images/repair.png differ diff --git a/src/assets/images/services.png b/src/assets/images/services.png new file mode 100644 index 0000000..ad73de5 Binary files /dev/null and b/src/assets/images/services.png differ diff --git a/src/assets/images/tenant@2x.png b/src/assets/images/tenant@2x.png new file mode 100755 index 0000000..1f1cc86 Binary files /dev/null and b/src/assets/images/tenant@2x.png differ diff --git a/src/assets/images/tenant@3x.png b/src/assets/images/tenant@3x.png new file mode 100755 index 0000000..43aaa12 Binary files /dev/null and b/src/assets/images/tenant@3x.png differ diff --git a/src/assets/images/tenanttut1.png b/src/assets/images/tenanttut1.png new file mode 100644 index 0000000..699a9a7 Binary files /dev/null and b/src/assets/images/tenanttut1.png differ diff --git a/src/assets/images/tenanttut2.png b/src/assets/images/tenanttut2.png new file mode 100644 index 0000000..0e84679 Binary files /dev/null and b/src/assets/images/tenanttut2.png differ diff --git a/src/assets/images/tenanttut3.png b/src/assets/images/tenanttut3.png new file mode 100644 index 0000000..d6d9ce8 Binary files /dev/null and b/src/assets/images/tenanttut3.png differ diff --git a/src/assets/images/tenanttut4.png b/src/assets/images/tenanttut4.png new file mode 100644 index 0000000..a5b2c00 Binary files /dev/null and b/src/assets/images/tenanttut4.png differ diff --git a/src/assets/images/tenanttut5.png b/src/assets/images/tenanttut5.png new file mode 100644 index 0000000..1a677e4 Binary files /dev/null and b/src/assets/images/tenanttut5.png differ diff --git a/src/assets/images/tenanttut6.png b/src/assets/images/tenanttut6.png new file mode 100644 index 0000000..dec6f19 Binary files /dev/null and b/src/assets/images/tenanttut6.png differ diff --git a/src/assets/images/tenanttut7.png b/src/assets/images/tenanttut7.png new file mode 100644 index 0000000..01b8183 Binary files /dev/null and b/src/assets/images/tenanttut7.png differ diff --git a/src/assets/images/testing@2x.png b/src/assets/images/testing@2x.png new file mode 100755 index 0000000..20ddb8b Binary files /dev/null and b/src/assets/images/testing@2x.png differ diff --git a/src/assets/images/testing@3x.png b/src/assets/images/testing@3x.png new file mode 100755 index 0000000..20ddb8b Binary files /dev/null and b/src/assets/images/testing@3x.png differ diff --git a/src/assets/images/tu1.png b/src/assets/images/tu1.png new file mode 100644 index 0000000..7cf5bc9 Binary files /dev/null and b/src/assets/images/tu1.png differ diff --git a/src/assets/images/tu2.png b/src/assets/images/tu2.png new file mode 100644 index 0000000..db204b5 Binary files /dev/null and b/src/assets/images/tu2.png differ diff --git a/src/assets/lottie/782-check-mark-success.json b/src/assets/lottie/782-check-mark-success.json new file mode 100644 index 0000000..85ae52d --- /dev/null +++ b/src/assets/lottie/782-check-mark-success.json @@ -0,0 +1,981 @@ +{ + "v": "4.10.1", + "fr": 30, + "ip": 0, + "op": 40, + "w": 80, + "h": 80, + "nm": "Success Checkmark", + "ddd": 0, + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "Check Mark", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 40, + 40, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + -1.312, + 6, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -15.75, + 8 + ], + [ + -8, + 16 + ], + [ + 13.125, + -4 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "n": [ + "0p667_1_0p333_0" + ], + "t": 25, + "s": [ + 0 + ], + "e": [ + 100 + ] + }, + { + "t": 33 + } + ], + "ix": 1 + }, + "e": { + "a": 0, + "k": 0, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 3, + "ix": 5 + }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 3, + "cix": 2, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 40, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "Circle Flash", + "sr": 1, + "ks": { + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "n": [ + "0p833_0p833_0p167_0p167" + ], + "t": 25, + "s": [ + 0 + ], + "e": [ + 98 + ] + }, + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "n": [ + "0p833_0p833_0p167_0p167" + ], + "t": 30, + "s": [ + 98 + ], + "e": [ + 0 + ] + }, + { + "t": 38 + } + ], + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 40, + 40, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667, + 0.667 + ], + "y": [ + 1, + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333, + 0.333 + ], + "y": [ + 0, + 0, + 0 + ] + }, + "n": [ + "0p667_1_0p333_0", + "0p667_1_0p333_0", + "0p667_1_0p333_0" + ], + "t": 25, + "s": [ + 0, + 0, + 100 + ], + "e": [ + 100, + 100, + 100 + ] + }, + { + "t": 30 + } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "d": 1, + "ty": "el", + "s": { + "a": 0, + "k": [ + 64, + 64 + ], + "ix": 2 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.529866635799, + 0.961458325386, + 0.448091417551, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + } + ], + "ip": 0, + "op": 40, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "Circle Stroke", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 39.022, + 39.022, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667, + 0.667 + ], + "y": [ + 1, + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333, + 0.333 + ], + "y": [ + 0, + 0, + 0 + ] + }, + "n": [ + "0p667_1_0p333_0", + "0p667_1_0p333_0", + "0p667_1_0p333_0" + ], + "t": 16, + "s": [ + 100, + 100, + 100 + ], + "e": [ + 80, + 80, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667, + 0.667 + ], + "y": [ + 1, + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333, + 0.333 + ], + "y": [ + 0, + 0, + 0 + ] + }, + "n": [ + "0p667_1_0p333_0", + "0p667_1_0p333_0", + "0p667_1_0p333_0" + ], + "t": 22, + "s": [ + 80, + 80, + 100 + ], + "e": [ + 120, + 120, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667, + 0.667 + ], + "y": [ + 1, + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333, + 0.333 + ], + "y": [ + 0, + 0, + 0 + ] + }, + "n": [ + "0p667_1_0p333_0", + "0p667_1_0p333_0", + "0p667_1_0p333_0" + ], + "t": 25, + "s": [ + 120, + 120, + 100 + ], + "e": [ + 100, + 100, + 100 + ] + }, + { + "t": 29 + } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { + "a": 0, + "k": [ + 60, + 60 + ], + "ix": 2 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "n": [ + "0p667_1_0p333_0" + ], + "t": 0, + "s": [ + 0 + ], + "e": [ + 100 + ] + }, + { + "t": 16 + } + ], + "ix": 1 + }, + "e": { + "a": 0, + "k": 0, + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 0.427450984716, + 0.800000011921, + 0.35686275363, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 3, + "ix": 5 + }, + "lc": 2, + "lj": 2, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 0.978, + 0.978 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 3, + "cix": 2, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 40, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "Circle Green Fill", + "sr": 1, + "ks": { + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "n": [ + "0p833_0p833_0p167_0p167" + ], + "t": 21, + "s": [ + 0 + ], + "e": [ + 98 + ] + }, + { + "t": 28 + } + ], + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 40, + 40, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667, + 0.667 + ], + "y": [ + 1, + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333, + 0.333 + ], + "y": [ + 0, + 0, + 0 + ] + }, + "n": [ + "0p667_1_0p333_0", + "0p667_1_0p333_0", + "0p667_1_0p333_0" + ], + "t": 21, + "s": [ + 0, + 0, + 100 + ], + "e": [ + 100, + 100, + 100 + ] + }, + { + "t": 28 + } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "d": 1, + "ty": "el", + "s": { + "a": 0, + "k": [ + 64, + 64 + ], + "ix": 2 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.427450984716, + 0.800000011921, + 0.35686275363, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + } + ], + "ip": 0, + "op": 40, + "st": 0, + "bm": 0 + } + ] +} \ No newline at end of file diff --git a/src/assets/screenshot/1.jpeg b/src/assets/screenshot/1.jpeg new file mode 100644 index 0000000..dfc320f Binary files /dev/null and b/src/assets/screenshot/1.jpeg differ diff --git a/src/assets/screenshot/10.jpeg b/src/assets/screenshot/10.jpeg new file mode 100644 index 0000000..0c51d7c Binary files /dev/null and b/src/assets/screenshot/10.jpeg differ diff --git a/src/assets/screenshot/11.jpeg b/src/assets/screenshot/11.jpeg new file mode 100644 index 0000000..21322a0 Binary files /dev/null and b/src/assets/screenshot/11.jpeg differ diff --git a/src/assets/screenshot/2.jpeg b/src/assets/screenshot/2.jpeg new file mode 100644 index 0000000..af28488 Binary files /dev/null and b/src/assets/screenshot/2.jpeg differ diff --git a/src/assets/screenshot/3.jpeg b/src/assets/screenshot/3.jpeg new file mode 100644 index 0000000..9f8f4b1 Binary files /dev/null and b/src/assets/screenshot/3.jpeg differ diff --git a/src/assets/screenshot/4.jpeg b/src/assets/screenshot/4.jpeg new file mode 100644 index 0000000..30ea1b2 Binary files /dev/null and b/src/assets/screenshot/4.jpeg differ diff --git a/src/assets/screenshot/5.jpeg b/src/assets/screenshot/5.jpeg new file mode 100644 index 0000000..7eeac53 Binary files /dev/null and b/src/assets/screenshot/5.jpeg differ diff --git a/src/assets/screenshot/6.jpeg b/src/assets/screenshot/6.jpeg new file mode 100644 index 0000000..f997311 Binary files /dev/null and b/src/assets/screenshot/6.jpeg differ diff --git a/src/assets/screenshot/7.jpeg b/src/assets/screenshot/7.jpeg new file mode 100644 index 0000000..393ec51 Binary files /dev/null and b/src/assets/screenshot/7.jpeg differ diff --git a/src/assets/screenshot/8.jpeg b/src/assets/screenshot/8.jpeg new file mode 100644 index 0000000..4233bfe Binary files /dev/null and b/src/assets/screenshot/8.jpeg differ diff --git a/src/assets/screenshot/9.jpeg b/src/assets/screenshot/9.jpeg new file mode 100644 index 0000000..f657469 Binary files /dev/null and b/src/assets/screenshot/9.jpeg differ diff --git a/src/assets/screenshot/banner.png b/src/assets/screenshot/banner.png new file mode 100644 index 0000000..b72d71c Binary files /dev/null and b/src/assets/screenshot/banner.png differ diff --git a/src/assets/styles/colors-theme.js b/src/assets/styles/colors-theme.js new file mode 100755 index 0000000..e18273f --- /dev/null +++ b/src/assets/styles/colors-theme.js @@ -0,0 +1,14 @@ +/** + * 控制全app的颜色 + * @type {{statusBarColor: string}} + */ +export const colors = { + statusBarColor: '#23A2FF', + inputBgc: '#E6E7E8', + mainColor: '#50B75C', + maingray: '#95a5a6', + lineColor: '#1ABC9C', + textColor: '#797979', + baseColor: '#1BBC9B', + line2Color: '#9EA3A6', +}; diff --git a/src/assets/styles/fonts-theme.js b/src/assets/styles/fonts-theme.js new file mode 100755 index 0000000..e2becac --- /dev/null +++ b/src/assets/styles/fonts-theme.js @@ -0,0 +1,5 @@ +export const Fonts = { + ubuntu:'Ubuntu-Medium', + ubuntuTh:'Ubuntu-Thin', + ubuntuL:'Ubuntu-Light', +} \ No newline at end of file diff --git a/src/common/CustomCropperFooter.js b/src/common/CustomCropperFooter.js new file mode 100755 index 0000000..8da211d --- /dev/null +++ b/src/common/CustomCropperFooter.js @@ -0,0 +1,63 @@ +import React from 'react'; +import { View, TouchableOpacity, Text, Platform, StyleSheet } from 'react-native'; +import PropTypes from 'prop-types'; +import Icon from "react-native-vector-icons/FontAwesome5"; +import {Fonts} from '../assets/styles/fonts-theme' + +const CustomCropperFooter = (props) => ( + + + CANCEL + + + + + + DONE + + +) + +export default CustomCropperFooter; + +CustomCropperFooter.propTypes = { + onDone: PropTypes.func, + onRotate: PropTypes.func, + onCancel: PropTypes.func +} + +const styles = StyleSheet.create({ + buttonsContainer: { + flexDirection: 'row', + alignItems: 'center', // 'flex-start' + justifyContent: 'space-between', + height: '100%' + }, + text: { + color: 'white', + fontSize: 16, + fontFamily:Fonts.ubuntu + }, + touchable: { + padding: 10, + }, + rotateIcon: { + color: 'white', + fontSize: 26, + ...Platform.select({ + android: { + textShadowOffset: { width: 1, height: 1 }, + textShadowColor: '#000000', + textShadowRadius: 3, + shadowOpacity: 0.9, + elevation: 1 + }, + ios: { + shadowOffset: { width: 1, height: 1 }, + shadowColor: '#000000', + shadowRadius: 3, + shadowOpacity: 0.9 + } + }), + }, +}) \ No newline at end of file diff --git a/src/common/NotifService.js b/src/common/NotifService.js new file mode 100755 index 0000000..6ef4b60 --- /dev/null +++ b/src/common/NotifService.js @@ -0,0 +1,105 @@ +import PushNotification from 'react-native-push-notification'; + +export default class NotifService { + + constructor(onRegister, onNotification) { + this.configure(onRegister, onNotification); + + this.lastId = 0; + } + + + + configure(onRegister, onNotification, gcm = "") { + PushNotification.configure({ + // (optional) Called when Token is generated (iOS and Android) + onRegister: onRegister, //this._onRegister.bind(this), + + // (required) Called when a remote or local notification is opened or received + // onNotification: onNotification, //this._onNotification, + // ANDROID ONLY: GCM Sender ID (optional - not required for local notifications, but is need to receive remote push notifications) + //senderID: gcm, + + // IOS ONLY (optional): default: all - Permissions to register. + permissions: { + alert: true, + badge: true, + sound: true + }, + + // Should the initial notification be popped automatically + // default: true + popInitialNotification: true, + + /** + * (optional) default: true + * - Specified if permissions (ios) and token (android and ios) will requested or not, + * - if not, you must call PushNotificationsHandler.requestPermissions() later + */ + requestPermissions: true, + }); + } + + localNotif() { + this.lastId++; + PushNotification.localNotification({ + + + /* iOS only properties */ + alertAction: 'view', // (optional) default: view + + + /* iOS and Android properties */ + title: "Local Notification", // (optional) + message: "My Notification Message", // (required) + playSound: false, // (optional) default: true + soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played) + + + }); + } + + scheduleNotif() { + this.lastId++; + PushNotification.localNotificationSchedule({ + date: new Date(Date.now() + (5 * 1000)), // in 30 secs + + // /* Android Only Properties */ + // id: ''+this.lastId, // (optional) Valid unique 32 bit integer specified as string. default: Autogenerated Unique ID + // ticker: "My Notification Ticker", // (optional) + // autoCancel: true, // (optional) default: true + // largeIcon: "ic_launcher", // (optional) default: "ic_launcher" + // smallIcon: "ic_notification", // (optional) default: "ic_notification" with fallback for "ic_launcher" + // bigText: "My big text that will be shown when notification is expanded", // (optional) default: "message" prop + // subText: "This is a subText", // (optional) default: none + // color: "blue", // (optional) default: system default + // vibrate: true, // (optional) default: true + // vibration: 300, // vibration length in milliseconds, ignored if vibrate=false, default: 1000 + // tag: 'some_tag', // (optional) add tag to message + // group: "group", // (optional) add group to message + // ongoing: false, // (optional) set whether this is an "ongoing" notification + + /* iOS only properties */ + alertAction: 'view', // (optional) default: view + + + /* iOS and Android properties */ + title: "Scheduled Notification", // (optional) + message: "My Notification Message", // (required) + playSound: true, // (optional) default: true + soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played) + }); + } + + checkPermission(cbk) { + return PushNotification.checkPermissions(cbk); + } + + cancelNotif() { + PushNotification.cancelLocalNotifications({id: ''+this.lastId}); + } + + cancelAll() { + PushNotification.cancelAllLocalNotifications(); + } +} \ No newline at end of file diff --git a/src/common/PushService.js b/src/common/PushService.js new file mode 100755 index 0000000..2fdb589 --- /dev/null +++ b/src/common/PushService.js @@ -0,0 +1,43 @@ +import PushNotification from 'react-native-push-notification' +import { isNil } from 'lodash' +//import Config from '../config' + + +export default class PushService { + static init() { + PushService.onNotification = (notification) => { + + PushNotification.localNotification({ + title: notification.subject, + message: notification.body, + }) + + } + PushService.onRegistration = null + PushService.tab = null + } + + static setCallbacks(onRegistration, onNotification) { + PushService.onRegistration = onRegistration + PushService.onNotification = onNotification + } + + static configure() { + PushNotification.configure({ + onRegister: (device) => { + if (PushService.onRegistration) { + PushService.onRegistration(device) + } + }, + onNotification: (notification) => { + if (PushService.onNotification) { + PushService.onNotification(notification) + } + }, + // senderID: Config.androidPushSenderId, + requestPermissions: true + }) + } +} + +PushService.init() \ No newline at end of file diff --git a/src/common/TabButton.js b/src/common/TabButton.js new file mode 100644 index 0000000..6ef9225 --- /dev/null +++ b/src/common/TabButton.js @@ -0,0 +1,80 @@ +import React, { Component } from 'react' +import { View, Text, StyleSheet, Dimensions, TouchableOpacity, Platform } from 'react-native' +import PropTypes from 'prop-types' +import history from '../common/history' +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import DeviceInfo from 'react-native-device-info' +import { colors } from '../assets/styles/colors-theme'; +import { Fonts } from '../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/FontAwesome5' +const { width } = Dimensions.get('window') +import { inject, observer } from "mobx-react"; +import { observable } from "mobx"; +@inject("appStore") +@observer +export default class TabButton extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + langLabelReturn(){ + switch(this.props.label){ + case 'home': + return this.store.text.home + break; + case 'info': + return this.store.text.rentTools + break; + + case 'history': + return this.store.text.history + break; + + case 'profile': + return this.store.text.profile + break; + + + } + } + + render() { + const props = this.props; + + return ( + + + + {this.langLabelReturn(props.labelName)} + + + ) + } +} + +const styles = StyleSheet.flatten({ + naviBar: { + width, + height: Platform.OS === 'ios' ? 80 : 70, //ios原生导航高度是44,android是56 + backgroundColor: colors.mainColor, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between' + }, + barAreaView: { + flex: 1, + justifyContent: 'center', + }, + TabletTabButton:{ + justifyContent: "center", alignItems: "center",width:scale(24) + }, + tabButtion:{ + justifyContent: "center", alignItems: "center",marginTop:10 + }, +}) \ No newline at end of file diff --git a/src/common/addFunction.js b/src/common/addFunction.js new file mode 100755 index 0000000..3a61b1e --- /dev/null +++ b/src/common/addFunction.js @@ -0,0 +1,57 @@ +import React, { Component } from 'react'; +import { + StyleSheet, + View, + Modal, + ActivityIndicator, + TouchableHighlight, + Text +} from 'react-native'; +import history from "./history"; +import Global from '../services/Global' + export default class AddFunction extends Component { + render(){ + return( + {console.log('c lose modal')}}> + + + + close + + + + history.push(this.props.instance, '/apartmentDetails')}> + + Add Apartment + + + + + + ) +} +} + + +const styles = StyleSheet.create({ + modalBackground: { + flex: 1, + alignItems: 'center', + flexDirection: 'column', + justifyContent: 'center', + backgroundColor: '#00000040' + }, + activityIndicatorWrapper: { + backgroundColor: '#FFFFFF', + height: 100, + width: 100, + borderRadius: 10, + display: 'flex', + alignItems: 'center', + justifyContent: 'space-around' + } +}); diff --git a/src/common/asyncStorageHelper.js b/src/common/asyncStorageHelper.js new file mode 100755 index 0000000..870b315 --- /dev/null +++ b/src/common/asyncStorageHelper.js @@ -0,0 +1,45 @@ +import {AsyncStorage} from 'react-native' +import React, { Component } from 'react'; +export default class AsyncStorageHelper extends Component{ + + async saveData(key, value) { + try { + await AsyncStorage.setItem(key, JSON.stringify(value)); + } catch (error) { + console.error('save error'+ error.message); + } + } + + async saveString(key, value) { + try { + await AsyncStorage.setItem(key, value); + } catch (error) { + console.error('save error'+ error.message); + } + } + + async getData(key, callback) { + try { + var value = await AsyncStorage.getItem(key).then( + (values) => { + callback(values); + } + ) + } catch (error) { + // console.error('get error'); + } + } + + async removeItemValue(key) { + try { + await AsyncStorage.removeItem(key); + return true; + } + catch (exception) { + console.log(exception) + return false; + } + } + + +} \ No newline at end of file diff --git a/src/common/checkAnimate.js b/src/common/checkAnimate.js new file mode 100644 index 0000000..9ff98e2 --- /dev/null +++ b/src/common/checkAnimate.js @@ -0,0 +1,67 @@ +import React, { Component } from 'react' +import {View, Dimensions, StyleSheet,ActivityIndicator,Modal,TouchableOpacity} from 'react-native'; +//import LottieView from 'lottie-react-native'; +//import LoadingAnimation from '../assets/animations/loading'; +import {colors} from '../assets/styles/colors-theme'; +import LottieView from 'lottie-react-native'; +import {observable} from 'mobx'; +import {inject, observer} from 'mobx-react'; +const { width, height } = Dimensions.get('window') +@inject('appStore') +@observer +export default class CheckAnimate extends Component { + + constructor(props) { + super(props); + this.store = props.appStore; + } + + render(){ + return ( + {console.log('c lose modal')}}> + + + + + ) + } + +} + +const styles = StyleSheet.flatten({ + wrapper: { + position: 'absolute', + top: 0, + left: 0, + width: width, + height: height, + backgroundColor: 'rgba(0, 0, 0, 0.2)' + }, + loading:{ + position: 'absolute', + top: height / 2 - 100, + left: width / 2 - 70, + width: 140, + height: 140 + }, + modalBackground: { + flex: 1, + alignItems: 'center', + flexDirection: 'column', + justifyContent: 'center', + //backgroundColor: '#00000040' + }, + activityIndicatorWrapper: { + backgroundColor: '#FFFFFF', + height: 100, + width: 100, + borderRadius: 10, + display: 'flex', + alignItems: 'center', + justifyContent: 'space-around' + } +}); \ No newline at end of file diff --git a/src/common/code.js b/src/common/code.js new file mode 100755 index 0000000..cc802a4 --- /dev/null +++ b/src/common/code.js @@ -0,0 +1,11 @@ +/** + * code.js提供全局的请求服务字段处理 + */ +export default { + SUCCESS: 'SUCCESS', //请求成功 + REQUEST_FAILED: 'REQUEST_FAILED', //请求失败 + REQUEST_TIMEOUT: 'REQUEST_TIMEOUT', //请求超时 + UN_KNOWN_ERROR: 'UN_KNOWN_ERROR', //未知错误 + TOKEN_INVALID: 'TOKEN_INVALID', //token失效 + SESSION_TIMEOUT: 'SESSION_TIMEOUT', //会话超时 +} \ No newline at end of file diff --git a/src/common/constants.js b/src/common/constants.js new file mode 100755 index 0000000..9de2958 --- /dev/null +++ b/src/common/constants.js @@ -0,0 +1,16 @@ +/** + * 提供基础配置信息 + * constants.js 提供如服务器地址、分页数量、设备类型、设备号、版本号等配置 + */ +import {Platform} from 'react-native'; +import DeviceInfo from 'react-native-device-info'; + +export default { + serverUrl: 'http://127.0.0.1:3600/portal', + pageSize: 10, + deviceType: Platform.OS.toUpperCase(), + deviceNo: DeviceInfo.getDeviceId() + .replace('-') + .substr(0, 12), + versionName: DeviceInfo.getVersion(), //也可写死如'1.0.0' +}; diff --git a/src/common/event.js b/src/common/event.js new file mode 100755 index 0000000..378bb22 --- /dev/null +++ b/src/common/event.js @@ -0,0 +1,16 @@ +/** + * 一个JavaScript 事件消息总线 + */ +import NotificationCenter from './notification-center'; + +export default class Event { + static listen(eventName, callback, observer) { + NotificationCenter.addNotification(eventName, callback, observer); + } + static emit(eventName, params) { + NotificationCenter.postNotificationName(eventName, params); + } + static remove(eventName, observer) { + NotificationCenter.removeNotification(eventName, observer); + } +} diff --git a/src/common/func.js b/src/common/func.js new file mode 100755 index 0000000..84b5c95 --- /dev/null +++ b/src/common/func.js @@ -0,0 +1,11 @@ +import { Dimensions, PixelRatio } from 'react-native'; + +export const deviceWidth = Dimensions.get('window').width; // 设备的宽度 +export const deviceHeight = Dimensions.get('window').height; // 设备的高度 +const fontScale = PixelRatio.getFontScale(); // 返回字体大小缩放比例 +const pixelRatio = PixelRatio.get(); // 当前设备的像素密度 + +export const RVW = deviceWidth / 100; +export const RVH = deviceHeight / 100; +export const RFT = RVW / fontScale; +export const RPX = 1 / pixelRatio; diff --git a/src/common/global-error-handler.js b/src/common/global-error-handler.js new file mode 100755 index 0000000..eb5e2eb --- /dev/null +++ b/src/common/global-error-handler.js @@ -0,0 +1,42 @@ +import code from './code'; +import Event from './event' + +export function handleErrors(error){ + if(error && error.signature && error.signature === 'ServiceError') { + defaultServiceErrorHandler(error); + }else{ + defaultErrorHandler(error); + } +} + +function defaultServiceErrorHandler(error){ + if(error && error.code === code.SESSION_TIMEOUT){ + Event.emit('GLOBAL_ERROR', { + type: 'SESSION_TIMEOUT' + }) + }else if(error && error.message) { + Event.emit('GLOBAL_ERROR', { + type: 'SERVICE_ERROR', + message: error.message + }) + }else { + Event.emit('GLOBAL_ERROR', { + type: 'SERVICE_ERROR', + message: '服务出错,请稍后再试.' + }) + } +} + +function defaultErrorHandler(error){ + if(error && error.message) { + Event.emit('GLOBAL_ERROR', { + type: 'SERVICE_ERROR', + message: error.message + }) + }else { + Event.emit('GLOBAL_ERROR', { + type: 'SERVICE_ERROR', + message: '服务出错,请稍后再试.' + }) + } +} \ No newline at end of file diff --git a/src/common/history.js b/src/common/history.js new file mode 100755 index 0000000..041d1af --- /dev/null +++ b/src/common/history.js @@ -0,0 +1,84 @@ +const NAVIGATION_THROTTLE = 1000; // 1s内不准重复跳转 +const lastNavigationTimeStamps = {}; + +/** + * 校验页面跳转参数 防止同一个path在很短的时间内被反复调用 + * @param path + */ +function validate(path) { + const timestamp = new Date().valueOf(); + if ( + lastNavigationTimeStamps[path] && + timestamp - lastNavigationTimeStamps[path] < NAVIGATION_THROTTLE + ) { + lastNavigationTimeStamps[path] = timestamp; + return false; + } else { + lastNavigationTimeStamps[path] = timestamp; + } + + return true; +} + +/** + * 处理路由跳转的状态 + * @param prevState + * @param newState + * @param action + */ +export function handleNavigationChange(prevState, newState, action) { + console.log('@@@@@ prevState', prevState); + console.log('@@@@@ newState', newState); + console.log('@@@@@ action', action); +} + +const history = { + pushFromtab: (instance, path, state) => { + if (validate(path)) { + const navigationController = instance; + const nativePath = + path.charAt(0) === '/' ? path.substring(1, path.length) : path; + + navigationController.push(nativePath, state); + } + }, + + push: (instance, path, state) => { + if (validate(path)) { + const navigationController = instance.props.navigation; + const nativePath = + path.charAt(0) === '/' ? path.substring(1, path.length) : path; + + navigationController.push(nativePath, state); + } + }, + replace: (instance, path, state) => { + if (validate(path)) { + const navigationController = instance.props.navigation; + const nativePath = + path.charAt(0) === '/' ? path.substring(1, path.length) : path; + + navigationController.replace(nativePath, state); + } + }, + goBack: instance => { + if (instance) { + const navigationController = instance.props.navigation; + navigationController.goBack(); + } + }, + pop: (instance, n) => { + if (instance) { + const navigationController = instance.props.navigation; + navigationController.pop(-1 * n || -1); + } + }, + popToUp: instance => { + if (instance) { + const navigationController = instance.props.navigation; + navigationController.popToTop(); + } + }, +}; + +export default history; diff --git a/src/common/loading.js b/src/common/loading.js new file mode 100755 index 0000000..d73ad6c --- /dev/null +++ b/src/common/loading.js @@ -0,0 +1,75 @@ +import React, { Component } from 'react' +import {View, Dimensions, StyleSheet,ActivityIndicator,Modal,TouchableOpacity} from 'react-native'; +//import LottieView from 'lottie-react-native'; +//import LoadingAnimation from '../assets/animations/loading'; +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {observable} from 'mobx'; +import {inject, observer} from 'mobx-react'; +const { width, height } = Dimensions.get('window') +@inject('appStore') +@observer +export default class LoadingView extends Component { + + constructor(props) { + super(props); + this.store = props.appStore; + } + + render(){ + return ( + {console.log('c lose modal')}}> + + + {this.store.loading = false}}> + + + + + + + ) + } + +} + +const styles = StyleSheet.flatten({ + wrapper: { + position: 'absolute', + top: 0, + left: 0, + width: width, + height: height, + backgroundColor: 'rgba(0, 0, 0, 0.2)' + }, + loading:{ + position: 'absolute', + top: height / 2 - 100, + left: width / 2 - 70, + width: 140, + height: 140 + }, + modalBackground: { + flex: 1, + alignItems: 'center', + flexDirection: 'column', + justifyContent: 'center', + backgroundColor: '#00000040' + }, + activityIndicatorWrapper: { + backgroundColor: '#FFFFFF', + height: 100, + width: 100, + borderRadius: 10, + display: 'flex', + alignItems: 'center', + justifyContent: 'space-around' + } +}); \ No newline at end of file diff --git a/src/common/notification-center.js b/src/common/notification-center.js new file mode 100755 index 0000000..bdf1a49 --- /dev/null +++ b/src/common/notification-center.js @@ -0,0 +1,177 @@ +const __notices = []; +/** + * addNotification + * 注册通知对象方法 + * + * 参数: + * name: 注册名,一般let在公共类中 + * selector: 对应的通知方法,接受到通知后进行的动作 + * observer: 注册对象,指Page对象 + */ +function addNotification(name, selector, observer) { + if (name && selector) { + if (!observer) { + console.log( + "addNotification Warning: no observer will can't remove notice" + ); + } + const newNotice = { + name: name, + selector: selector, + observer: observer + }; + + addNotices(newNotice); + } else { + console.log('addNotification error: no selector or name'); + } +} + +/** + * 仅添加一次监听 + * + * 参数: + * name: 注册名,一般let在公共类中 + * selector: 对应的通知方法,接受到通知后进行的动作 + * observer: 注册对象,指Page对象 + */ +function addOnceNotification(name, selector, observer) { + if (__notices.length > 0) { + for (let i = 0; i < __notices.length; i++) { + const notice = __notices[i]; + if (notice.name === name) { + if (notice.observer === observer) { + return; + } + } + } + } + this.addNotification(name, selector, observer); +} + +function addNotices(newNotice) { + // if (__notices.length > 0) { + // for (var i = 0; i < __notices.length; i++) { + // var hisNotice = __notices[i]; + // //当名称一样时进行对比,如果不是同一个 则放入数组,否则跳出 + // if (newNotice.name === hisNotice.name) { + // if (!cmp(hisNotice, newNotice)) { + // __notices.push(newNotice); + // } + // return; + // }else{ + // __notices.push(newNotice); + // } + + // } + // } else { + + // } + + __notices.push(newNotice); +} + +/** + * removeNotification + * 移除通知方法 + * + * 参数: + * name: 已经注册了的通知 + * observer: 移除的通知所在的Page对象 + */ + +function removeNotification(name, observer) { + console.log('removeNotification:' + name); + for (let i = 0; i < __notices.length; i++) { + const notice = __notices[i]; + if (notice.name === name) { + if (notice.observer === observer) { + __notices.splice(i, 1); + return; + } + } + } +} + +/** + * postNotificationName + * 发送通知方法 + * + * 参数: + * name: 已经注册了的通知 + * info: 携带的参数 + */ + +function postNotificationName(name, info) { + console.log('postNotificationName:' + name); + if (__notices.length === 0) { + console.log("postNotificationName error: u hadn't add any notice."); + return; + } + + for (let i = 0; i < __notices.length; i++) { + const notice = __notices[i]; + if (notice.name === name) { + notice.selector(info); + } + } +} + +// 用于对比两个对象是否相等 +function cmp(x, y) { // eslint-disable-line + // If both x and y are null or undefined and exactly the same + if (x === y) { + return true; + } + + // If they are not strictly equal, they both need to be Objects + if (!(x instanceof Object) || !(y instanceof Object)) { + return false; + } + + // They must have the exact same prototype chain, the closest we can do is + // test the constructor. + if (x.constructor !== y.constructor) { + return false; + } + + for (const p in x) { + // Inherited properties were tested using x.constructor === y.constructor + if (x.hasOwnProperty(p)) { + // Allows comparing x[ p ] and y[ p ] when set to undefined + if (!y.hasOwnProperty(p)) { + return false; + } + + // If they have the same strict value or identity then they are equal + if (x[p] === y[p]) { + continue; + } + + // Numbers, Strings, Functions, Booleans must be strictly equal + if (typeof x[p] !== 'object') { + return false; + } + + // Objects and Arrays must be tested recursively + if (!Object.equals(x[p], y[p])) { + return false; + } + } + } + + for (const p in y) { + // allows x[ p ] to be set to undefined + if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) { + return false; + } + } + return true; +} + +module.exports = { + addNotification: addNotification, + removeNotification: removeNotification, + postNotificationName: postNotificationName, + addOnceNotification: addOnceNotification +}; \ No newline at end of file diff --git a/src/common/pushNotificationTest.js b/src/common/pushNotificationTest.js new file mode 100755 index 0000000..d94c794 --- /dev/null +++ b/src/common/pushNotificationTest.js @@ -0,0 +1,218 @@ +import React, { Component } from "react"; +import { TextInput, StyleSheet, Text, View, TouchableOpacity, Alert } from 'react-native'; +import NotifService from './NotifService'; +import PushService from './PushService' +import moment from "moment"; +import uuid from 'react-native-uuid' +import PushNotification from 'react-native-push-notification' +import { inject, observer } from "mobx-react"; +import { observable } from "mobx"; +import DateTimePicker from "react-native-modal-datetime-picker"; +type Props = {}; + +@inject("appStore") +@observer +export default class PushNotificationTest extends Component { + @observable + startDate = new Date() + + @observable + endDate = new Date() + + @observable + DatePickervisable = false + + @observable + whichDatePicker = 0 + + @observable + notificationArray = [] + + @observable + endNotification = {} + + constructor(props) { + super(props); + this.store = props.appStore; + } + + handleDatePicked = date => { + console.log("A date has been picked: ", date); + // this.hideDateTimePicker(); + + if (this.whichDatePicker === 0) { + this.startDate = date; + } else { + this.endDate = date; + } + this.DatePickervisable = false; + }; + + looping(){ + var notificationDay = moment(this.startDate).subtract(5, 'days'); + var endday = moment(this.endDate) + console.log(notificationDay.toDate()) + console.log(endday.toDate()) + while (notificationDay <= endday){ + var data = {} + + data.id = this.store.idGenerator() + data.date = notificationDay.toDate() + this.notificationArray.push(data) + notificationDay = notificationDay.add(1,'months') + console.log(notificationDay.toDate()) + + } + } + + async testing(){ + var newDate = moment(new Date()) + for(var i = 0;i<6;i++){ + var data = {} + newDate = newDate.add(6,'seconds') + data.id = this.store.idGenerator() + data.date = newDate.toDate() + data.title = 'testing' + this.notificationArray.push(data) + this.push(newDate.toDate(),data) + } + } + + async addNotification(){ + await this.looping() + console.log(this.notificationArray) + } + + push() { + // this.lastId++; + var date = new Date(Date.now() + (5 * 1000)) + PushNotification.localNotificationSchedule({ + date:date , // in 30 secs + id:'fdsfsdf', + userInfo: { + id: 1234, //IMPORTANT!! adding the userInfo, so that the cancel will work! + }, + + number:0, + /* iOS only properties */ + alertAction: 'view', // (optional) default: view + + + /* iOS and Android properties */ + title: 'test', // (optional) + message: 'testing', // (required) + playSound: true, // (optional) default: true + soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played) + }); + } + + cancelNotification(){ + // this.notificationArray.map((items,index)=>{ + // this.cancel(items.id) + // }) + for(var i = 0 ; i<3;i++){ + this.cancel(this.notificationArray[i].id) + } + } + + cancel(id){ + PushNotification.cancelLocalNotifications({id: id}); // must be id of type STRING so that the + } + + render() { + return ( + + Example app react-native-push-notification + + + + + { this.push() }}>Local Notification (now) + { this.push() }}>Schedule Notification in 30s + { this.cancelNotification() }}>Cancel last notification (if any) + { this.notif.cancelAll() }}>Cancel all notifications + { this.notif.checkPermission(this.handlePerm.bind(this)) }}>Check Permission + + + + + + + + + {this.DatePickervisable = true;this.whichDatePicker = 0}}> + + set start date + + + + {this.DatePickervisable = true;this.whichDatePicker = 1}}> + + set end date + + + + {this.testing()}}> + + Load + + + + { + this.DatePickervisable = false; + }}/> + + ); + } + + + + + +} + + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: "#000000", + margin: 5, + padding: 5, + width: "70%", + backgroundColor: "#DDDDDD", + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: "#AAAAAA", + margin: 5, + padding: 5, + width: "70%" + }, + spacer: { + height: 10, + }, + title: { + fontWeight: "bold", + fontSize: 20, + textAlign: "center", + } +}); \ No newline at end of file diff --git a/src/common/screen.js b/src/common/screen.js new file mode 100755 index 0000000..e82618c --- /dev/null +++ b/src/common/screen.js @@ -0,0 +1,4 @@ +import {Dimensions} from 'react-native' + +export const width = Dimensions.get('window').width; +export const height = Dimensions.get('window').height; \ No newline at end of file diff --git a/src/common/service-error.js b/src/common/service-error.js new file mode 100755 index 0000000..7289912 --- /dev/null +++ b/src/common/service-error.js @@ -0,0 +1,12 @@ +/** + * 服务报错处理 + */ + +export default class ServiceError extends Error{ + constructor(code, message){ + super(message); + this.code = code; + this.hash = Math.random() * 100000000000000000; + this.signature = 'ServiceError'; + } +} \ No newline at end of file diff --git a/src/common/size.js b/src/common/size.js new file mode 100755 index 0000000..e2cc1f9 --- /dev/null +++ b/src/common/size.js @@ -0,0 +1,49 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Dimensions, Text, StyleSheet } from 'react-native'; +const { width, height } = Dimensions.get('window'); +const flattenStyle = StyleSheet.flatten; +const realWidth = height > width ? width : height; + +export default class Size{ + + getSize(size){ + return Math.round(size * realWidth / 375); + } + + status(value){ + switch(value){ + case 'A': + return 'Not pay yet' + break; + + case 'V': + return 'Cancelled' + break; + + case 'I': + return 'Cancel by unpaid' + break; + + case 'E': + return 'Expired by unpaid' + break; + + case 'P': + return 'Preparing' + break; + + case 'D': + return 'ready' + break; + + case 'F': + return 'Completed' + break; + + default: + return 'Undefind' + break + } + } +} \ No newline at end of file diff --git a/src/common/tab-nav.js b/src/common/tab-nav.js new file mode 100755 index 0000000..ad2931f --- /dev/null +++ b/src/common/tab-nav.js @@ -0,0 +1,200 @@ +import React from 'react'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {createBottomTabNavigator} from 'react-navigation-tabs'; +import {View, Text, TouchableOpacity, StyleSheet} from 'react-native'; +import Home from '../pages/home/home'; +import Profile from '../pages/profile/profile'; +import News from '../pages/news/news'; +import Info from '../pages/info/info'; +import {TopTab} from '../common/topTab'; +import TabButton from './TabButton'; +import DeviceInfo from 'react-native-device-info'; +import History from '../pages/history/history'; +import {colors} from '../assets/styles/colors-theme'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Global from '../services/Global'; +import history from '../common/history'; + +const styles = StyleSheet.create({ + TabletTabButton: { + justifyContent: 'center', + alignItems: 'center', + width: scale(24), + height:150, + }, + tabButtion: { + justifyContent: 'center', + alignItems: 'center', + }, +}); + +const addButtonSize = () => { + if (DeviceInfo.isTablet()) { + return 20; + } else { + return 30; + } +}; + +const TabRouterMap = { + home: { + screen: Home, + navigationOptions: { + tabBarLabel: 'Home', + tabBarIcon: ({focused}) => ( + + ), + }, + }, + info: { + screen: Info, + navigationOptions: { + tabBarLabel: 'Info', + tabBarIcon: ({focused}) => ( + + ), + }, + }, + add: { + screen: () => Home, + navigationOptions: { + tabBarOnPress: ({navigation, defaultHandler}) => { + history.pushFromtab(navigation, '/add'); + }, + title: 'MIN SALONG', + tabBarIcon: ({tintColor, focused}) => ( + + + {'新增'} + + ), + }, + }, + History: { + screen: History, + navigationOptions: ({navigation}) => ({ + tabBarOnPress: ({navigation, defaultHandler}) => { + if (Global.login) { + defaultHandler(); + } else { + history.pushFromtab(navigation, '/signin', {icon: true}); + } + }, + tabBarLabel: 'History', + tabBarIcon: ({focused}) => ( + + ), + }), + }, + Profile: { + screen: Profile, + navigationOptions: ({navigation}) => ({ + tabBarOnPress: ({navigation, defaultHandler}) => { + if (Global.login) { + defaultHandler(); + } else { + // history.pushFromtab(navigation,'/signin',{icon:true}) + defaultHandler(); + } + }, + tabBarLabel: 'Profile', + tabBarIcon: ({focused}) => ( + + ), + }), + }, +}; + +export const TabNav = createBottomTabNavigator(TabRouterMap, { + initialRouteName: 'home', + transitionConfig: () => fromLeft(), + navigationOptions: ({navigation}) => ({ + tabBarIcon: ({focused, tintColor}) => { + const {routeName} = navigation.state; + let iconName; + if (routeName === 'page3') { + history.push(this, '/signup'); + } + }, + }), + tabBarOptions: { + //当前选中的tab bar的文本颜色和图标颜色 + activeTintColor: colors.statusBarColor, + //当前未选中的tab bar的文本颜色和图标颜色 + inactiveTintColor: '#000', + //是否显示tab bar的图标,默认是false + showIcon: true, + //showLabel - 是否显示tab bar的文本,默认是true + showLabel: false, + //是否将文本转换为大小,默认是true + upperCaseLabel: false, + //material design中的波纹颜色(仅支持Android >= 5.0) + pressColor: 'red', + //按下tab bar时的不透明度(仅支持iOS和Android < 5.0). + pressOpacity: 0.8, + //tab bar的样式 + style: { + shadowColor: 'transparent', + height:60, + shadowRadius: 0, + shadowOpacity: 0, + elevation: 0, + borderTopWidth: 0, + elevation: 0, + shadowOffset: { + height: 0, + }, + headerStyle: { + shadowColor: 'transparent', + backgroundColor: '#fff', + borderTopWidth: 0, + elevation: 0, + shadowOpacity: 0, + }, + }, + //tab bar的文本样式 + labelStyle: { + fontSize: 11, + margin: 1, + }, + //tab 页指示符的样式 (tab页下面的一条线). + indicatorStyle: {height: 0}, + }, + //tab bar的位置, 可选值: 'top' or 'bottom' + tabBarPosition: 'bottom', + //是否允许滑动切换tab页 + swipeEnabled: true, + //是否在切换tab页时使用动画 + animationEnabled: true, + //是否懒加载 + lazy: true, + //返回按钮是否会导致tab切换到初始tab页? 如果是,则设置为initialRoute,否则为none。 缺省为initialRoute。 + backBehavior: 'none', +}); diff --git a/src/common/test.js b/src/common/test.js new file mode 100755 index 0000000..b3688cb --- /dev/null +++ b/src/common/test.js @@ -0,0 +1,229 @@ +import React, {Component} from 'react'; +import { + View, Text, StyleSheet, ScrollView, Alert, + Image, TouchableOpacity, NativeModules, Dimensions +} from 'react-native'; + +import Video from 'react-native-video'; + +var ImagePicker = NativeModules.ImageCropPicker; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center' + }, + button: { + backgroundColor: 'blue', + marginBottom: 10 + }, + text: { + color: 'white', + fontSize: 20, + textAlign: 'center' + } +}); + +export default class App extends Component { + + constructor() { + super(); + this.state = { + image: null, + images: null + }; + } + + pickSingleWithCamera(cropping, mediaType='photo') { + ImagePicker.openCamera({ + cropping: cropping, + width: 500, + height: 500, + includeExif: true, + mediaType, + }).then(image => { + console.log('received image', image); + this.setState({ + image: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null + }); + }).catch(e => alert(e)); + } + + pickSingleBase64(cropit) { + ImagePicker.openPicker({ + width: 300, + height: 300, + cropping: cropit, + includeBase64: true, + includeExif: true, + }).then(image => { + console.log('received base64 image'); + this.setState({ + image: {uri: `data:${image.mime};base64,`+ image.data, width: image.width, height: image.height}, + images: null + }); + }).catch(e => alert(e)); + } + + cleanupImages() { + ImagePicker.clean().then(() => { + console.log('removed tmp images from tmp directory'); + }).catch(e => { + alert(e); + }); + } + + cleanupSingleImage() { + let image = this.state.image || (this.state.images && this.state.images.length ? this.state.images[0] : null); + console.log('will cleanup image', image); + + ImagePicker.cleanSingle(image ? image.uri : null).then(() => { + console.log(`removed tmp image ${image.uri} from tmp directory`); + }).catch(e => { + alert(e); + }) + } + + cropLast() { + if (!this.state.image) { + return Alert.alert('No image', 'Before open cropping only, please select image'); + } + + ImagePicker.openCropper({ + path: this.state.image.uri, + width: 200, + height: 200 + }).then(image => { + console.log('received cropped image', image); + this.setState({ + image: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null + }); + }).catch(e => { + console.log(e); + Alert.alert(e.message ? e.message : e); + }); + } + + pickSingle(cropit, circular=false, mediaType) { + ImagePicker.openPicker({ + width: 500, + height: 500, + cropping: cropit, + cropperCircleOverlay: circular, + compressImageMaxWidth: 1000, + compressImageMaxHeight: 1000, + compressImageQuality: 1, + compressVideoPreset: 'MediumQuality', + includeExif: true, + }).then(image => { + console.log('received image', image); + this.setState({ + image: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, + images: null + }); + }).catch(e => { + console.log(e); + Alert.alert(e.message ? e.message : e); + }); + } + + pickMultiple() { + ImagePicker.openPicker({ + multiple: true, + waitAnimationEnd: false, + includeExif: true, + forceJpg: true, + }).then(images => { + this.setState({ + image: null, + images: images.map(i => { + console.log('received image', i); + return {uri: i.path, width: i.width, height: i.height, mime: i.mime}; + }) + }); + }).catch(e => alert(e)); + } + + scaledHeight(oldW, oldH, newW) { + return (oldH / oldW) * newW; + } + + renderVideo(video) { + console.log('rendering video'); + return ( + ); + } + + renderImage(image) { + return + } + + renderAsset(image) { + if (image.mime && image.mime.toLowerCase().indexOf('video/') !== -1) { + return this.renderVideo(image); + } + + return this.renderImage(image); + } + + render() { + return ( + + {this.state.image ? this.renderAsset(this.state.image) : null} + {this.state.images ? this.state.images.map(i => {this.renderAsset(i)}) : null} + + + this.pickSingleWithCamera(false)} style={styles.button}> + Select Single Image With Camera + + this.pickSingleWithCamera(false, mediaType='video')} style={styles.button}> + Select Single Video With Camera + + this.pickSingleWithCamera(true)} style={styles.button}> + Select Single With Camera With Cropping + + this.pickSingle(false)} style={styles.button}> + Select Single + + this.cropLast()} style={styles.button}> + Crop Last Selected Image + + this.pickSingleBase64(false)} style={styles.button}> + Select Single Returning Base64 + + this.pickSingle(true)} style={styles.button}> + Select Single With Cropping + + this.pickSingle(true, true)} style={styles.button}> + Select Single With Circular Cropping + + + Select Multiple + + + Cleanup All Images + + + Cleanup Single Image + + ); + } +} \ No newline at end of file diff --git a/src/common/topTab.js b/src/common/topTab.js new file mode 100755 index 0000000..0b3f6af --- /dev/null +++ b/src/common/topTab.js @@ -0,0 +1,53 @@ +import React from 'react'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {createMaterialTopTabNavigator} from 'react-navigation-tabs'; +import {View, Text, TouchableOpacity, Platform} from 'react-native'; +import {Fonts} from '../assets/styles/fonts-theme'; +import {colors} from '../assets/styles/colors-theme'; +import Global from '../services/Global'; +import history from '../common/history'; +import News from '../pages/news/news'; +import Property from '../pages/property/property'; +import Repair from '../pages/repair/repair'; + +export const TopTab = createMaterialTopTabNavigator( + { + News: { + screen: News, + }, + Repair: {screen: Repair}, + Property: {screen: Property}, + }, + { + tabBarPosition: 'top', + swipeEnabled: true, + animationEnabled: true, + tabBarOptions: { + activeTintColor: 'black', + inactiveTintColor: 'black', + style: { + backgroundColor:'white', + ...Platform.select({ + ios: {}, + android: { + height: 80, + }, + }), + }, + labelStyle: { + textAlign: 'center', + fontFamily: Fonts.ubuntu, + ...Platform.select({ + ios: {}, + android: { + marginTop: 30, + }, + }), + }, + indicatorStyle: { + borderBottomColor: colors.mainColor, + borderBottomWidth: 3, + }, + }, + }, +); diff --git a/src/components/Svgs.js b/src/components/Svgs.js new file mode 100755 index 0000000..b2f2000 --- /dev/null +++ b/src/components/Svgs.js @@ -0,0 +1,359 @@ +/* + * @Author: huangjun + * @Date: 2018-10-10 16:43:28 + * @Last Modified by: huangjun + * @Last Modified time: 2018-10-10 16:43:28 + */ +import React from 'react' +import { Svg, Path, G, Circle } from 'react-native-svg' + +export default { + iconEmoji: ( + + + + ), + iconKeyboard: ( + + + + ), + iconActions: ( + + + + ), + iconRecord: ( + + + + ), + iconImage: ( + + + + + + ), + iconLocation: ( + + + + + + ), + iconCamera: ( + + + + + + ), + iconPack: ( + + + + + + ), + iconTransfer: ( + + + + + + ), + transferLogo: ( + + + + ), + iconTeam: ( + + + + + + + + ), + iconPhone: ( + + + + + + ), + iconCreateTeam: ( + + + + ), + iconAddFriend: ( + + + + ), + iconAddFriend1: ( + + + + ), + iconFriendList: ( + + + + ), + iconTeamList: ( + + + + + + ), + iconAddToTeam: ( + + + + ), + iconDelTeam: ( + + + + ), + iconBlackList: ( + + + + + + ), + iconNewFriend: ( + + + + ), + iconPhoneList: ( + + + + ), + iconTransferLogo: ( + + + + + + ), + iconTransferFriend: ( + + + + + + + ), +} diff --git a/src/components/backHeader.js b/src/components/backHeader.js new file mode 100755 index 0000000..c4899e5 --- /dev/null +++ b/src/components/backHeader.js @@ -0,0 +1,83 @@ +import React, {Component} from 'react'; +import {View, Text, TouchableOpacity, StyleSheet, Platform} from 'react-native'; +import {colors} from '../assets/styles/colors-theme'; +import history from '../common/history'; +import NaviBar from './navi-bar'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {width, height} from '../common/screen'; +import {Fonts} from '../assets/styles/fonts-theme'; +export default class BackHeader extends Component { + renderBackIcon() { + if (this.props.back) { + return ( + { + console.log('back'); + history.goBack(this.props.instance); + }}> + + + ); + } else { + return null; + } + } + + render() { + return ( + + + {this.props.title} + + {this.renderBackIcon()} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: Platform.OS === 'ios' ? 40 : 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.mainColor, + }, + buttonText: { + color: '#fff', + }, +}); diff --git a/src/components/common/index.js b/src/components/common/index.js new file mode 100755 index 0000000..84b5c95 --- /dev/null +++ b/src/components/common/index.js @@ -0,0 +1,11 @@ +import { Dimensions, PixelRatio } from 'react-native'; + +export const deviceWidth = Dimensions.get('window').width; // 设备的宽度 +export const deviceHeight = Dimensions.get('window').height; // 设备的高度 +const fontScale = PixelRatio.getFontScale(); // 返回字体大小缩放比例 +const pixelRatio = PixelRatio.get(); // 当前设备的像素密度 + +export const RVW = deviceWidth / 100; +export const RVH = deviceHeight / 100; +export const RFT = RVW / fontScale; +export const RPX = 1 / pixelRatio; diff --git a/src/components/commonTextInput.js b/src/components/commonTextInput.js new file mode 100755 index 0000000..57d8f9f --- /dev/null +++ b/src/components/commonTextInput.js @@ -0,0 +1,54 @@ +import React from "react"; +import { TextInput, View } from "react-native"; +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import Size from "../common/size"; +const size = new Size(); +import { colors } from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme' +import { width, height } from "../common/screen"; + +const CommonTextInput = props => { + return ( + + props.inputRef && props.inputRef(input)} + returnKeyType = {props.returnKeyType} + onSubmitEditing = {props.onSubmitEditing && props.onSubmitEditing} + onFocus={props.onFocus} + /> + + ); +}; + +export default CommonTextInput; diff --git a/src/components/iconTextInput.js b/src/components/iconTextInput.js new file mode 100755 index 0000000..ca2a005 --- /dev/null +++ b/src/components/iconTextInput.js @@ -0,0 +1,139 @@ +import React, {Component} from 'react'; +import {View, Text, TextInput, TouchableOpacity,Platform} from 'react-native'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Size from '../common/size'; +const size = new Size(); +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import {width, height} from '../common/screen'; + +class IconTextInput extends Component { + inputOrButton() { + if (this.props.type == 'input') { + return ( + + + + ); + } else { + return ( + this.props.onPress && this.props.onPress()} + style={{ + flexDirection: 'row', + borderBottomColor: colors.mainColor, + flex: 0.9, + marginRight: 10, + borderBottomWidth: 1, + }}> + + + {this.props.title} + + + + + {this.props.content} + + + + ); + } + } + + iconRander() { + if (this.props.iconStyle) { + return ( + this.props.onPress && this.props.onPress()} + /> + ); + } else { + return ( + this.props.onPress && this.props.onPress()} + /> + ); + } + } + render() { + return ( + + {this.inputOrButton()} + + {this.iconRander()} + + ); + } +} +export default IconTextInput; diff --git a/src/components/imageFooter.js b/src/components/imageFooter.js new file mode 100644 index 0000000..7579ab5 --- /dev/null +++ b/src/components/imageFooter.js @@ -0,0 +1,44 @@ +import React from 'react'; +import { + StyleSheet, + SafeAreaView, + View, + Text, + TouchableOpacity, +} from 'react-native'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../common/size'; +const size = new Size(); +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import {width, height} from '../common/screen'; + +type Props = { + imageIndex: number, + imagesCount: number, +}; + +const ImageFooter = props => { + return ( + + {`${props.imageIndex + 1} / ${ + props.imagesCount + }`} + + ); +}; + +const styles = StyleSheet.create({ + root: { + height: 64, + backgroundColor: 'black', + alignItems: 'center', + justifyContent: 'center', + }, + text: { + fontSize: 17, + color: '#FFF', + }, +}); + +export default ImageFooter; diff --git a/src/components/imageHeader.js b/src/components/imageHeader.js new file mode 100644 index 0000000..6e86609 --- /dev/null +++ b/src/components/imageHeader.js @@ -0,0 +1,106 @@ +import React from 'react'; +import { + StyleSheet, + SafeAreaView, + View, + Text, + TouchableOpacity, +} from 'react-native'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../common/size'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +const size = new Size(); +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import {width, height} from '../common/screen'; + +type Props = { + title?: string, + onRequestClose: () => void, +}; + +const HIT_SLOP = {top: 16, left: 16, bottom: 16, right: 16}; + +const ImageHeader = props => { + return ( + + + props.onPress && props.onPress()}> + + + + + + + + + ); + // + // + + // + // + // + // + // + // ); +}; + +const styles = StyleSheet.create({ + root: { + backgroundColor: '#00000077', + }, + container: { + flex: 1, + padding: 8, + flexDirection: 'row', + justifyContent: 'space-between', + }, + space: { + width: 45, + height: 45, + }, + closeButton: { + width: 45, + height: 45, + alignItems: 'center', + justifyContent: 'center', + }, + closeText: { + lineHeight: 25, + fontSize: 25, + paddingTop: 2, + includeFontPadding: false, + color: '#FFF', + }, + text: { + maxWidth: 240, + marginTop: 12, + flex: 1, + flexWrap: 'wrap', + textAlign: 'center', + fontSize: 17, + lineHeight: 17, + color: '#FFF', + }, +}); + +export default ImageHeader; diff --git a/src/components/mainHeader.js b/src/components/mainHeader.js new file mode 100755 index 0000000..4900f6c --- /dev/null +++ b/src/components/mainHeader.js @@ -0,0 +1,34 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; +import { colors } from "../assets/styles/colors-theme"; +import history from "../common/history"; +import NaviBar from "./navi-bar"; +import Icon from "react-native-vector-icons/FontAwesome5"; + +export default class MainHeader extends Component { + + + + render() { + return ( + + + + + ); + } + } + + const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: "center", + justifyContent: "center", + backgroundColor: colors.mainColor + }, + buttonText: { + color: "#fff" + } + }); diff --git a/src/components/navBottom.js b/src/components/navBottom.js new file mode 100755 index 0000000..b8ecef3 --- /dev/null +++ b/src/components/navBottom.js @@ -0,0 +1,43 @@ +import React from 'react'; +import { View, Text, TouchableOpacity } from 'react-native'; +import { baseBlueColor } from '../themes'; +import { RVW, RFT } from '../common/func'; + +const localStyle = { + wrapper: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + borderTopWidth: 1, + borderTopColor: '#ccc', + }, + tab: { + flex: 1, + backgroundColor: '#fff', + minHeight: 12 * RVW, + }, + label: { + fontSize: 3.6 * RFT, + lineHeight: 12 * RVW, + textAlign: 'center', + }, +}; + +export default (props) => { + const { navigation } = props; + const { routeName } = navigation.state; + const lightBlueColor = '#f0f3fb'; + return ( + + { navigation.navigate('session'); }}> + 最近会话 + + { navigation.navigate('contact'); }}> + 通讯录 + + { navigation.navigate('general'); }}> + 设置 + + + ); +} diff --git a/src/components/navi-bar.js b/src/components/navi-bar.js new file mode 100755 index 0000000..54df4d0 --- /dev/null +++ b/src/components/navi-bar.js @@ -0,0 +1,124 @@ +import React, {Component} from 'react'; +import { + View, + Text, + StyleSheet, + Dimensions, + TouchableOpacity, + Platform, +} from 'react-native'; +import PropTypes from 'prop-types'; +import history from '../common/history'; +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +const {width} = Dimensions.get('window'); + +@inject('appStore') +@observer +export default class NaviBar extends Component { + static propTypes = { + style: PropTypes.object, + leftItem: PropTypes.node, //原则上控制在宽度40的icon + rightItem: PropTypes.node, //原则上控制在宽度40的icon + title: PropTypes.string, + titleColor: PropTypes.string, + onBack: PropTypes.func, + iconColor: PropTypes.string, + }; + + constructor(props) { + super(props); + this.store = props.appStore; + } + + renderCircle() { + if (this.store.helperUnRead > 0) { + return ( + + ); + } + } + + render() { + const props = this.props; + + return ( + + {/* + Helper + + {props.title} + + + */} + + {/* { + history.push(this.props.self, '/helpSelect'); + }}> + + + */} + + + + Rent Chat + + + + this.props.onPress && this.props.onPress()}> + + + {/* */} + + {this.renderCircle()} + + + ); + } +} + +const styles = StyleSheet.flatten({ + naviBar: { + width, + height: Platform.OS === 'ios' ? 65 : 80, //ios原生导航高度是44,android是56 + backgroundColor: colors.mainColor, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + barAreaView: { + flex: 1, + justifyContent: 'center', + marginTop: Platform.os === 'ios' ? 0 : 10, + }, +}); diff --git a/src/components/newTextInput.js b/src/components/newTextInput.js new file mode 100644 index 0000000..220366a --- /dev/null +++ b/src/components/newTextInput.js @@ -0,0 +1,56 @@ +import React from 'react'; +import {TextInput, View} from 'react-native'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../common/size'; +const size = new Size(); +import {colors} from '../assets/styles/colors-theme'; +import {Fonts} from '../assets/styles/fonts-theme'; +import {width, height} from '../common/screen'; + +const NewTextInput = props => { + return ( + + + {this.store.text.problems} + + + + + { + this.caseData.content = text; + }} + /> + + { + this.caseData.content = ''; + }}> + + + + + ); +}; + +export default NewTextInput; diff --git a/src/components/slider-widget.js b/src/components/slider-widget.js new file mode 100755 index 0000000..79634e0 --- /dev/null +++ b/src/components/slider-widget.js @@ -0,0 +1,106 @@ +import React, { Component } from "react"; +import { View, Text, Dimensions, StyleSheet, ImageBackground, Slider } from "react-native"; +import { colors } from "../assets/styles/colors-theme"; +import { Fonts } from '../assets/styles/fonts-theme' +export default class SliderWidget extends Component { + constructor(props) { + super(props); + this.state = { + initSliderValue: this.props.value ? this.props.value : 1, // 初始化值 + maxValue: this.props.maxValue ? this.props.maxValue : 10, // 滑块最大值 + minValue: this.props.minValue ? this.props.minValue : 1, // 滑块最小值 + step: this.props.step ? this.props.step : 0, // 步调 + width: this.props.width ? this.props.width : Dimensions.get("window").width - 20, // 设备宽度 + showFloat: false, // 拖动的时候上面显示值 + minColor: this.props.minColor ? this.props.minColor : "#c53c2c", // 左边的轨迹颜色 + maxColor: this.props.maxColor ? this.props.maxColor : "#dddddd", // 右边的轨迹颜色 + sliderBgImg: this.props.bgImage // 轨迹北京图片 + } + } + componentWillMount() { + + } + render() { + return ( + + + + {this.state.initSliderValue} + + + + + + + ); + } + componentDidMount() { + + } + componentWillUnmount() { + + } + // 拖动事件 + onValueChangeFun = (event) => { + console.log(event, "改变事件"); + this.setState({ + initSliderValue: event*10, + showFloat: true + }); + } + // 拖动完成事件 + onSlidingCompleteFun = (event) => { + this.setState({ + showFloat: false + }); + this.props.getSliderValue(event); + } +} +const styles = StyleSheet.create({ + silder: { + position: "absolute", + top: -18, + left: 0 + }, + imageStyle: { + height: 4, + marginTop: 35, + marginBottom: 15, + borderRadius: 2, + position: "relative" + }, + floatValue: { + width: 30, + height: 20, + backgroundColor: "#fff", + position: "absolute", + top: -35, + left: -10, + alignItems: "center", + justifyContent: "center" + }, + textStyle:{ + fontSize:16, + color:colors.mainColor, + fontFamily:Fonts.ubuntu, + + } +}) \ No newline at end of file diff --git a/src/configs/index.js b/src/configs/index.js new file mode 100755 index 0000000..ca8fffc --- /dev/null +++ b/src/configs/index.js @@ -0,0 +1,37 @@ +const env = 'online'; + +const appConfig = { + // 用户的appkey + // 用于在web demo中注册账号异步请求demo 服务器中使用 + test: { + appkey: 'a1d88a4bb1480c686fd3661ce09378e4', + postUrl: 'https://apptest.netease.im', + }, + online: { + appkey: 'a1d88a4bb1480c686fd3661ce09378e4', + postUrl: 'https://app.netease.im', + }, +}; + +const base = { + // SDK 在store/actions中被引入 + // 资源路径根目录,为了方便用户部署在二级以上URL路径上 + resourceUrl: 'https://yx-web.nos-hz.163yun.com/webdoc/h5', + // 用户logo地址 + logo: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/logo.png', + // 默认用户头像 + defaultUserIcon: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/default-icon.png', + // 默认普通群头像 + defaultGroupIcon: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/default-group.png', + // 默认高级群头像 + defaultAdvancedIcon: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/default-advanced.png', + // 系统通知图标 + noticeIcon: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/notice-icon.png', + // 我的手机图标 + myPhoneIcon: 'https://yx-web.nos-hz.163yun.com/webdoc/h5/im/my-phone.png', + // 本地消息显示数量,会影响性能 + localMsglimit: 36, +}; + +export default Object.assign(base, appConfig[env]); + diff --git a/src/hocs/loading-hoc.js b/src/hocs/loading-hoc.js new file mode 100755 index 0000000..ba6c74b --- /dev/null +++ b/src/hocs/loading-hoc.js @@ -0,0 +1,28 @@ +import React, {Component} from 'react'; +import {Dimensions, View} from 'react-native'; +const { width, height } = Dimensions.get('window') +import Event from '../common/event' + +export default function LoadingHoc(WrappedComponent) { + return class ComposedComponent extends Component { + showLoading(){ + Event.emit('SHOW_LOADING') + } + + hideLoading(){ + Event.emit('HIDE_LOADING') + } + + render() { + const props = {...this.props, ...{ + showLoading: this.showLoading.bind(this), + hideLoading: this.hideLoading.bind(this) + }}; + return ( + + + + ); + } + }; +} diff --git a/src/images/testing@2x.png b/src/images/testing@2x.png new file mode 100755 index 0000000..20ddb8b Binary files /dev/null and b/src/images/testing@2x.png differ diff --git a/src/images/testing@3x.png b/src/images/testing@3x.png new file mode 100755 index 0000000..20ddb8b Binary files /dev/null and b/src/images/testing@3x.png differ diff --git a/src/pages/add/add.js b/src/pages/add/add.js new file mode 100755 index 0000000..dfb8c19 --- /dev/null +++ b/src/pages/add/add.js @@ -0,0 +1,349 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, + Alert, +} from 'react-native'; +import { + createStackNavigator, + CardStyleInterpolators, +} from 'react-navigation-stack'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import AddTut from '../tutorial/addTut'; +import NaviBar from '../../components/navi-bar'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; + +@inject('appStore') +@observer +export default class Add extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + static navigationOptions = { + gesturesEnabled: false, + cardStyleInterpolator: props => + CardStyleInterpolators.forVerticalIOS(props), + }; + + renderIcon(items) { + return ( + + + + {items.title} + + + ); + } + + async componentDidMount() { + await this.store.startAddTut(); + if (this.store.logined) { + if (this.store.loginUserData.data.member.phone == null) { + Alert.alert('', this.store.text.papnf, [ + {text: '取消', onPress: () => history.goBack(this)}, + { + text: '加入', + onPress: async () => { + await history.goBack(this); + var data = { + vercode: '', + fullname: '', + email: '', + gender: 'na', + countryCode: '852', + chara: 'owner', + age: 'na', + thirdParty: true, + pwd: '', + phone: '', + refcode: '', + ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + }; + history.push(this, '/signUpVerify', { + signupData: data, + addphone: true, + }); + }, + }, + ]); + } + } + } + + renderButton() { + var list = [ + {title: this.store.text.addApartment, icon: 'building'}, + { + title: this.store.text.add + this.store.text.addContract, + icon: 'file-contract', + }, + { + title: this.store.text.add + this.store.text.problemRecord, + icon: 'exclamation-triangle', + }, + + ]; + return list.map((items, index) => { + if (!this.store.user.memberType == 0 && items.icon == 'building') { + return null; + } else { + return ( + { + this.clickAction(index); + }}> + + + + + + {'+ ' + items.title} + + + + ); + } + }); + } + + async clickAction(which) { + switch (which) { + case 0: + await history.goBack(this); + await history.push(this, '/apartmentDetails', {create: true}); + break; + case 1: + if (this.store.logined) { + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + await history.goBack(this); + await history.push(this, '/selectApartment', {which: 'contract'}); + } else { + this.refs.toast.show('Please upload the signature'); + } + } else { + this.goToSignIn(); + //this.refs.toast.show('Please Login'); + } + + break; + case 2: + if (this.store.logined) { + await history.goBack(this); + await history.push(this, '/selectApartment', {which: 'problem'}); + } else { + //this.refs.toast.show('Please Login'); + this.goToSignIn(); + } + + break; + case 3: + if (this.store.logined) { + await history.goBack(this); + await history.push(this, '/selectApartment', {which: 'problem'}); + } else { + //this.refs.toast.show('Please Login'); + this.goToSignIn(); + } + + break; + } + } + + renderBuilding() { + if (this.store.user.memberType == 0) { + return ( + { + this.clickAction(0); + }}> + + {this.store.text.addApartment} + + ); + } else { + return null; + } + } + + goToSignIn() { + Alert.alert( + '', + this.store.text.pleaseLogin, + [ + { + text: this.store.text.cancel, + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: this.store.text.login, + onPress: () => { + history.push(this, '/signin', {icon: true}); + }, + }, + ], + {cancelable: false}, + ); + } + + render() { + const object = [ + {icon: 'building', title: this.store.text.addApartment}, + {icon: 'file-contract', title: this.store.text.addContract}, + ]; + return ( + + + {/* {history.goBack(this)}}> + + + */} + + { + history.goBack(this); + }}> + + + + + {this.store.text.add} + + + + + {this.renderButton()} + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/addApartment/addTenant.js b/src/pages/addApartment/addTenant.js new file mode 100644 index 0000000..63f6561 --- /dev/null +++ b/src/pages/addApartment/addTenant.js @@ -0,0 +1,360 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + Share, + Alert, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Modal, {ModalContent} from 'react-native-modals'; +import LoadingView from '../../common/loading'; +import Switch from 'react-native-switch-pro'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +var _ = require('lodash'); +import Realm from 'realm'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {queryUser} from '../../services/realm/realmManger'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import ImagePicker from 'react-native-image-crop-picker'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {width, height} from '../../common/screen'; +const asyncStorageHelper = new AsyncStorageHelper(); + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +@inject('appStore') +@observer +export default class AddTenant extends Component { + @observable + AddTenantSwitch: false; + + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentDidMount() {} + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + async getUserApartmentData() { + let user = queryUser(); + return user; + } + + async saveAction() { + await this.store.deleteDemo(); + var data = this.store.apartmentData; + let user = realm.objects('User'); + await this.store.rentlocalNotificationHandler(); + await this.store.endContractlocalNotificationHandler(); + try { + let newApartment = { + id: this.store.idGenerator(), + createDate: new Date(), + modifyDate: new Date(), + name: data.name, + address: data.address, + avatar: this.store.apartmentData.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: parseInt(data.rent), + country: data.country, + leaseMonth: parseInt(data.leaseMonth), + deposit: parseInt(data.deposit), + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: data.rentNotificationId, + remark: this.store.apartmentDataRemark, + doc: this.store.apartmentDataDoc, + }; + + console.log(newApartment); + + if (this.store.logined) { + await this.store.createApartmentPost(newApartment, true); + await realm.write(() => { + user[0].apartment.push(newApartment); + newApartment.rentNotificationId.map(async (items, index) => { + await user[0].notification.push(items); + }); + }); + await this.store.loadLocalData(); + this.props.navigation.popToTop(); + // await this.store.uploadDocFetch(newApartment.id,this.store.apartmentDataDoc), + } else { + try { + await realm.write(() => { + user[0].apartment.push(newApartment); + newApartment.rentNotificationId.map(async (items, index) => { + await user[0].notification.push(items); + }); + }); + } catch (error) { + console.log(error); + } + + await this.store.loadLocalData(); + this.props.navigation.popToTop(); + } + // history.pop(this,1) + } catch (e) { + console.log('Error on creation ' + e); + } + } + + referYourFriender() { + //const link = Platform.OS === 'ios' ? 'itms://itunes.apple.com/us/app/apple-store/1439173696?mt=8' : ''; + var sharemessage = ''; + if (this.store.language == 'english') { + sharemessage = 'share '; + } else { + sharemessage = 'share '; + } + const link = 'http://onelink.to/mh4dh2'; + Share.share({ + message: sharemessage + link, + title: 'Hangry no more', + }); + } + + addTenant() { + Alert.alert( + '', + 'Please login', + [ + { + text: 'OK', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + ], + {cancelable: false}, + ); + } + + render() { + console.log(this.store.image); + var data = this.store.apartmentData; + return ( + + + + + + + {/* + + {this.store.text.addTenant} + + { this.AddTenantSwitch = value }} /> + + + + {this.store.text.share} + + { this.referYourFriender(); }} /> + */} + + + + {this.list( + this.store.text.apartment, + data.name, + colors.textColor, + )} + {this.list( + this.store.text.address, + data.address, + colors.textColor, + )} + {this.list( + this.store.text.rent, + 'HKD ' + data.rent, + colors.textColor, + )} + {this.list( + this.store.text.rentDay, + this.dateStringHandler(data.signContractDate), + colors.textColor, + )} + {this.list( + this.store.text.contractExpiry, + this.dateStringHandler(data.endContractDate), + colors.textColor, + )} + {this.list( + this.store.text.country, + this.store.getCountryLabel(data.country), + colors.textColor, + )} + {this.list( + this.store.text.notificationOfCollectRents, + data.rentNotification, + colors.textColor, + )} + {this.list( + this.store.text.notificationOfcontractExpiry, + data.endContractNotification, + colors.textColor, + )} + {/* { this.addTenant() }} > + + Add Tenant now? + + */} + + + + + + { + this.saveAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.ok} + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(460), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + marginTop: 7, + color: colors.textColor, + fontSize: 19, + fontFamily: Fonts.ubuntu, + }, +}); diff --git a/src/pages/addApartment/apartmentDetails.js b/src/pages/addApartment/apartmentDetails.js new file mode 100755 index 0000000..f52db75 --- /dev/null +++ b/src/pages/addApartment/apartmentDetails.js @@ -0,0 +1,1857 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + TextInput, + ScrollView, + Alert, + Platform, + FlatList, +} from 'react-native'; +import building from '../../services/building.json'; +import Autocomplete from 'react-native-autocomplete-input'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import {initialMode} from 'react-native-dark-mode'; +import Picker from 'react-native-picker-js'; +import ImagePicker from 'react-native-image-crop-picker'; +import BackHeader from '../../components/backHeader'; +import Modal, {ModalContent} from 'react-native-modals'; +import moment from 'moment'; +import {colors} from '../../assets/styles/colors-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import LoadingView from '../../common/loading'; +import Migrations from '../../services/realm/Mirgrations'; +import {Avatar} from 'react-native-elements'; +import {inject, observer} from 'mobx-react'; +import RNPickerSelect from 'react-native-picker-select'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +var RNFS = require('react-native-fs'); +import {observable} from 'mobx'; +import CountryPicker, { + getAllCountries, +} from 'react-native-country-picker-modal'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import DateTimePicker from 'react-native-modal-datetime-picker'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +import IconTextInput from '../../components/iconTextInput'; +import CommonTextInput from '../../components/commonTextInput'; +import {queryUser} from '../../services/realm/realmManger'; +import {width, height} from '../../common/screen'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../../common/size'; +import UpLoadImage from './upLoadImage'; +const {SlideInMenu} = renderers; +const size = new Size(); +const NORTH_AMERICA = ['CA', 'US', 'HK', 'TW', 'CN']; +notificationDay = [ + {label: 'None', value: 0}, + {label: '1', value: 1}, + {label: '2', value: 2}, + {label: '3', value: 3}, + {label: '4', value: 4}, + {label: '5', value: 5}, + {label: '6', value: 6}, + {label: '7', value: 7}, +]; +@inject('appStore') +@observer +export default class ApartmentDetails extends Component { + @observable + DatePickervisable = false; + @observable + wheelSelectData = []; + @observable + dialogCountryVisable = false; + @observable + dialogNotificationVisable = false; + @observable + dialogPhotoVisable = false; + + @observable + dialogInputVisable = false; + + @observable countryIndex = 0; + + @observable + whichDatePicker = 0; + + @observable + whichNotificationPicker = 0; + + @observable + drakMode = false; + + @observable + whichInput = 0; + + @observable + floor = []; + + @observable + lease = []; + + @observable + create = false; + + @observable + editable = true; + @observable + buildingName = []; + + inputAction(action) { + switch (action) { + case 0: + this.whichInput = 0; + this.dialogInputVisable = true; + break; + + case 1: + this.whichInput = 1; + this.dialogInputVisable = true; + break; + + case 2: + this.DatePickervisable = true; + this.whichDatePicker = 0; + break; + + case 3: + this.DatePickervisable = true; + this.whichDatePicker = 1; + break; + + case 4: + this.whichInput = 4; + this.dialogInputVisable = true; + break; + + case 5: + this.dialogCountryVisable = true; + break; + + case 6: + this.whichNotificationPicker = 0; + this.dialogNotificationVisable = true; + break; + + case 7: + this.whichNotificationPicker = 1; + this.dialogNotificationVisable = true; + break; + } + } + + constructor(props) { + super(props); + this.store = props.appStore; + + // let userLocaleCountryCode = DeviceInfo.getDeviceCountry(); + // const userCountryData = getAllCountries() + // .filter(country => NORTH_AMERICA.includes(country.cca2)) + // .filter(country => country.cca2 === userLocaleCountryCode) + // .pop(); + // let callingCode = null; + // let cca2 = userLocaleCountryCode; + // if (!cca2 || !userCountryData) { + // cca2 = "HK"; + // callingCode = "1"; + // } else { + // callingCode = userCountryData.callingCode; + // } + this.state = { + callingCode: '852', + }; + this.store.apartmentData.country = this.store.text.CountryList[ + this.countryIndex + ].label; + } + + isDarkMode() { + if (initialMode === 'dark') { + this.drakMode = true; + } else { + this.drakMode = false; + } + } + + async componentWillMount() { + var floorData = { + value: 'G', + text: 'G', + }; + this.floor.push(floorData); + for (var i = 1; i <= 108; i++) { + var data = { + value: i.toString(), + text: i.toString(), + }; + this.floor.push(data); + } + + for (var i = 1; i <= 60; i++) { + this.wheelSelectData.push(i); + } + + this.isDarkMode(); + if (!this.props.navigation.state.params.create) { + await this.store.cloneApartmentData( + this.props.navigation.state.params.index, + ); + await this.store.cloneApartmentDocData( + this.props.navigation.state.params.index, + ); + } else { + console.log('reset apartment data'); + await this.store.resetApartmentData(); + } + + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'tenant') { + this.editable = false; + } + } + } + + componentDidMount() { + console.log(this.store.apartmentData.avatar); + console.log(moment(this.store.apartmentData.createDate).toDate()); + building.map((items, index) => { + this.buildingName.push(items.building); + }); + } + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return moment(date).format('DD-MM-YYYY'); + } + } + + removeRemark(index) { + this.store.apartmentDataRemark.splice(index, 1); + } + + whichDate() { + if (this.whichDatePicker === 0) { + return this.store.apartmentData.signContractDate; + } else { + return this.store.apartmentData.endContractDate; + } + } + + handleDatePicked = date => { + this.DatePickervisable = false; + console.log('A date has been picked: ', date); + // this.hideDateTimePicker(); + var momentDate = moment(date); + momentDate = momentDate.second(0); + momentDate = momentDate.minute(0); + momentDate = momentDate.hour(12); + + if (this.whichDatePicker === 0) { + this.store.apartmentData.signContractDate = momentDate.toDate(); + } else { + this.store.apartmentData.endContractDate = momentDate.toDate(); + } + this.DatePickervisable = false; + }; + + leaseMonthHandler() { + if (this.store.apartmentData.leaseMonth == null) { + return this.store.text.pleaseSelect; + } else { + return this.store.apartmentData.leaseMonth + this.store.text.months; + } + } + + contractDatePicker(title, which, dateData) { + return ( + + {title} + + {this.dateStringHandler(dateData)} + + { + this.DatePickervisable = true; + this.whichDatePicker = which; + }} + /> + + ); + } + + async editAction() { + if (this.store.apartmentData.id != 'demo') { + await this.store.saveEdit(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + await history.goBack(this); + } else { + this.refs.toast.show('this is demo,can not edit'); + } + } + + deleteAction() { + Alert.alert( + '', + 'Are you sure?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + this.deleteApartment(); + }, + }, + ], + {cancelable: false}, + ); + } + + async deleteApartment() { + if (this.store.logined) { + await this.store.deleteApartmentPost( + this.props.navigation.state.params.index, + this, + ); + } else { + await this.store.deleteNotification( + this.props.navigation.state.params.index, + ); + await this.store.deleteApartment( + this.props.navigation.state.params.index, + ); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + } + whichNotificationIndex() { + if (this.whichNotificationPicker === 0) { + return this.store.apartmentData.rentNotification; + } else { + return this.store.apartmentData.endContractNotification; + } + } + notificationSelectAction(index, which) { + if (which === 0) { + console.log(index); + this.store.apartmentData.rentNotification = index; + } else { + this.store.apartmentData.endContractNotification = index; + } + } + + alertAction(msg) { + Alert.alert( + 'Error', + msg, + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + } + + renderSaveAndDeleteButtion() { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + return ( + + { + this.nextAction(false); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 30, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.save} + + + { + this.deleteAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + width: width - 60, + height: 60, + borderRadius: 30, + + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.delete} + + + + ); + } + } else { + return ( + + { + this.nextAction(false); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + { + this.deleteAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Delete + + + + ); + } + } + + renderButton() { + if (this.props.navigation.state.params.create) { + return ( + + { + this.nextAction(true); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 30, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.next} + + + + ); + } else { + return this.renderSaveAndDeleteButtion(); + } + } + + apartmentNameReturn() { + if ( + this.store.apartmentData.name == '' || + this.store.apartmentData.name == null + ) { + return this.store.text.apartment; + } else { + return this.store.apartmentData.name; + } + } + + nextAction(nextOrEdit) { + let data = this.store.apartmentData; + + if (data.avatar !== null) { + if (data.name !== null) { + if (data.address !== null) { + if (data.signContractDate !== null) { + if (data.endContractDate !== null) { + if (data.rent !== null) { + if (data.rent !== '') { + if (data.deposit !== null) { + if (data.deposit !== '') { + if (nextOrEdit) { + history.push(this, '/uploadImage', {create: true}); + // this.props.navigation.navigate('UpLoadImage',{create:true}) + } else { + this.editAction(); + } + } else { + var msg = + this.store.text.pleaseInput + this.store.text.deposit; + this.alertAction(msg); + } + } else { + var msg = + this.store.text.pleaseInput + this.store.text.deposit; + this.alertAction(msg); + } + } else { + var msg = this.store.text.pleaseInput + this.store.text.rent; + this.alertAction(msg); + } + } else { + var msg = this.store.text.pleaseInput + this.store.text.rent; + this.alertAction(msg); + } + } else { + var msg = + this.store.text.pleaseInput + + this.store.text.contractExpiryDate; + this.alertAction(msg); + } + } else { + var msg = + this.store.text.pleaseInput + this.store.text.dateOfContract; + this.alertAction(msg); + } + } else { + var msg = this.store.text.pleaseInput + this.store.text.address; + this.alertAction(msg); + } + } else { + var msg = this.store.text.pleaseInput + this.store.text.apartment; + this.alertAction(msg); + } + } else { + var msg = 'Please add ' + 'the avatar'; + this.alertAction(msg); + } + } + + renderRemark() { + if (this.store.apartmentDataRemark !== undefined) { + if (this.store.apartmentDataRemark.length > 0) { + return this.store.apartmentDataRemark.map((item, index) => { + return ( + + + + {this.store.text.remark} + + + + + + (this.store.apartmentDataRemark[index] = text) + } + /> + + { + this.removeRemark(index); + }}> + + + + + + // + // + // (this.store.apartmentDataRemark[index] = text) + // } + // placeholder={this.store.text.remark + '...'} + // placeholderStyle={{fontFamily: Fonts.ubuntuL}} + // placeholderTextColor={'gary'} + // blurOnSubmit={false} + // /> + // { + // this.removeRemark(index); + // }} + // /> + // + ); + }); + } else { + return null; + } + } else { + return null; + } + } + + whichInputTextReturn(which) { + if (which) { + if (this.whichInput === 0) { + return this.store.text.apartment; + } else if (this.whichInput === 1) { + return this.store.text.address; + } else { + return this.store.text.rent; + } + } else { + if (this.whichInput === 0) { + return this.store.apartmentData.name; + } else if (this.whichInput === 1) { + return this.store.apartmentData.address; + } else { + return this.store.apartmentData.rent; + } + } + } + + whichDataToBeChange(value) { + if (this.whichInput === 0) { + this.store.apartmentData.name = value; + } else if (this.whichInput === 1) { + return (this.store.apartmentData.address = value); + } else { + return (this.store.apartmentData.rent = value); + } + } + + floorStringReturn() { + switch (this.store.apartmentData.floor) { + case 'low': + return this.store.text.low + this.store.text.floor; + break; + case 'middle': + return this.store.text.middle + this.store.text.floor; + break; + case 'high': + return this.store.text.high + this.store.text.floor; + break; + } + } + + saveImageHandler(image, type) { + var photoId = this.store.idGenerator(); + console.log(photoId); + return { + id: photoId, + name: image.filename, + type: type, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + saveAndroidImageHandler(image, type) { + var photoId = this.store.idGenerator(); + return { + id: photoId, + name: photoId, + type: type, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + async avatarHander(which) { + if (which) { + ImagePicker.openCamera({ + mediaType: 'photo', + includeBase64: true, + writeTempFile: false, + cropping: false, + }).then(image => { + console.log(image); + + const response = image; + // history.push(this,'/cropImage',{response}) + this.store.apartmentData.avatar = response.path; + }); + } else { + ImagePicker.openPicker({ + includeBase64: false, + mediaType: 'photo', + writeTempFile: false, + cropping: false, + }).then(async image => { + console.log(image); + console.log(RNFS.DocumentDirectoryPath); + const response = image; + if (Platform.OS === 'ios') { + const uri = this.store.convertLocalIdentifierToAssetLibrary( + response.localIdentifier, + 'JPG', + ); + response.path = uri; + await this.store.deleteAvatar(); + await this.store.apartmentDataDoc.push( + this.saveImageHandler(response, 3), + ); + console.log(this.store.apartmentDataDoc[0].uri); + // this.store.apartmentData.avatar = this.store.avatarfilter() + await this.store.avatarfilter(); + } else { + await this.store.deleteAvatar(); + await this.store.apartmentDataDoc.push( + this.saveAndroidImageHandler(response, 3), + ); + await this.store.avatarfilter(); + } + }); + } + this.dialogPhotoVisable = false; + } + + showDatetimePicker() { + console.log('App started in', initialMode, 'mode'); + var color = 'white'; + if (initialMode === 'dark') { + color = 'black'; + } + if (this.DatePickervisable) { + return ( + + + + ); + } else { + return null; + } + } + + rentOutput(rent) { + if (rent == null || rent == undefined) { + return null; + } else { + return rent.toString(); + } + } + + renderRemarkButton() { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + return ( + + {/* { + this.store.apartmentDataRemark.push(''); + }} + /> */} + + {'+ ' + this.store.text.add + this.store.text.log} + + + ); + } + } else { + return ( + + { + this.store.apartmentDataRemark.push(''); + }} + /> + + ); + } + } + + notificationStringReturn(day) { + if (day === 0) { + return this.store.text.nonotice; + } else { + return this.store.text.notice + day + this.store.text.before; + } + } + endNotificationStringReturn(month) { + if (month === 0) { + return this.store.text.nonotice; + } else { + return this.store.text.notice + month + this.store.text.endBefore; + } + } + + selectCountryAction(value) { + this.store.apartmentData.country = value.value; + this.store.apartmentData.callingCode = value.callingCode; + } + + render() { + return ( + + + + + + {/* {this.store.apartmentData.avatar == + '../../assets/images/demohouse.jpg' ? ( + { this.dialogPhotoVisable = true }} + onEditPress={() => { + this.avatarHander(false); + }} + rounded + source={require('../../assets/images/demohouse.jpg')} + containerStyle={{ + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.8, + shadowRadius: 2, + }} + rounded + size={90} + showEditButton={true} + /> + ) : ( + { this.dialogPhotoVisable = true }} + onEditPress={() => { + this.avatarHander(false); + }} + rounded + source={{ + uri: this.store.apartmentData.avatar, + }} + containerStyle={{ + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.8, + shadowRadius: 2, + }} + rounded + size={90} + showEditButton={true} + /> + )} */} + + + + {this.store.apartmentData.name} + + + + + { + history.push(this, '/apartmentNameAddressEdit'); + }}> + + {this.store.text.apartment} + + + + + + {this.store.apartmentData.name} + + + { + this.store.apartmentData.name = ''; + }}> + + + + + + + {this.store.text.address} + + + + + { + this.store.apartmentData.address = text; + }} + /> + + { + this.store.apartmentData.address = ''; + }}> + + + + + + + {this.store.text.seats} + + + + + { + this.store.apartmentData.seats = text; + }} + /> + + { + this.store.apartmentData.seats = ''; + }}> + + + + + + + {this.store.text.unit} + + + + + { + this.store.apartmentData.unit = text; + }} + /> + + { + this.store.apartmentData.unit = ''; + }}> + + + + + + + + {this.store.text.floor} + + + { + this.store.apartmentData.floor = value; + }}> + + + + {this.store.apartmentData.floor + this.store.text.floor} + + + + + + + + {/* + {this.floor.map((obj, i) => { + return ; + })} + */} + ( + + )} + style={{height: 300}} + /> + + + + + { + this.inputAction(2); + }}> + + {this.store.text.dateOfContract} + + + + + + {this.dateStringHandler( + this.store.apartmentData.signContractDate, + )} + + + + + + { + this.inputAction(3); + }}> + + {this.store.text.contractExpiryDate} + + + + + + {this.dateStringHandler( + this.store.apartmentData.endContractDate, + )} + + + + + + + {this.store.text.lease} + + + { + this.store.apartmentData.leaseMonth = value; + }}> + + + + {this.leaseMonthHandler()} + + + + + + + + {/* + {this.wheelSelectData.map((obj, i) => { + return ; + })} + */} + ( + + )} + style={{height: 300}} + /> + + + + + + + + {this.store.text.rent} + + + + + { + this.store.apartmentData.rent = text; + }} + /> + + { + this.store.apartmentData.rent = ''; + }}> + + + + + + + {this.store.text.deposit} + + + + + { + this.store.apartmentData.deposit = text; + }} + /> + + { + this.store.apartmentData.deposit = ''; + }}> + + + + + + + + {this.store.text.country} + + + this.selectCountryAction(value)}> + + + + {this.store.getCountryLabel( + this.store.apartmentData.country, + )} + + + + + + + + {this.store.text.CountryList.map((obj, i) => { + return ; + })} + + + + + + {this.store.text.notificationOfCollectRents} + + + { + this.whichNotificationPicker = 0; + this.notificationSelectAction(value, 0); + }}> + + + + {this.notificationStringReturn( + this.store.apartmentData.rentNotification, + )} + + + + + + + + {notificationDay.map((obj, i) => { + return ; + })} + + + + + + + {this.store.text.notificationOfcontractExpiry} + + + { + this.whichNotificationPicker = 1; + this.notificationSelectAction(value, 1); + }}> + + + + {this.endNotificationStringReturn( + this.store.apartmentData.endContractNotification, + )} + + + + + + + + {notificationDay.map((obj, i) => { + return ; + })} + + + + + + {this.renderRemark()} + {this.renderRemarkButton()} + + {this.renderButton()} + + { + this.DatePickervisable = false; + }} + /> + + + { + this.dialogCountryVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogCountryVisable = false; + }}> + + + + {this.store.text.CountryList.map((obj, i) => { + return ( + + { + this.countryIndex = i; + this.store.apartmentData.country = obj.value; + this.store.apartmentData.callingCode = + obj.callingCode; + }} + borderWidth={1} + buttonInnerColor={colors.mainColor} + buttonOuterColor={ + this.countryIndex === i + ? colors.mainColor + : colors.textColor + } + buttonSize={15} + buttonOuterSize={30} + buttonStyle={{}} + buttonWrapStyle={{marginLeft: 10}} + /> + { + this.countryIndex = i; + this.store.apartmentData.country = obj.value; + this.store.apartmentData.callingCode = + obj.callingCode; + }} + labelStyle={{ + fontSize: 14, + color: colors.textColor, + fontFamily: Fonts.ubuntu, + }} + labelWrapStyle={{}} + /> + + ); + })} + + + + + { + this.dialogNotificationVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogNotificationVisable = false; + }}> + + + + {notificationDay.map((obj, i) => { + return ( + + { + this.notificationSelectAction(i); + }} + borderWidth={1} + buttonInnerColor={colors.mainColor} + buttonOuterColor={ + this.whichNotificationIndex() === i + ? colors.mainColor + : colors.textColor + } + buttonSize={15} + buttonOuterSize={30} + buttonStyle={{}} + buttonWrapStyle={{marginLeft: 10}} + /> + { + this.notificationSelectAction(i); + }} + labelStyle={{ + fontSize: 14, + color: colors.textColor, + fontFamily: Fonts.ubuntu, + }} + labelWrapStyle={{}} + /> + + ); + })} + + + + + { + this.dialogInputVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogInputVisable = false; + }}> + + + this.whichDataToBeChange(value)} + /> + + + + + { + this.dialogPhotoVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogPhotoVisable = false; + }}> + + + this.avatarHander(true)}> + + + {this.store.text.camera} + + + this.avatarHander(false)}> + + + {this.store.text.gallery} + + + + + + + + (this.picker = picker)} + style={{height: 300, backgroundColor: 'white'}} + pickerTitleStyle={{color: 'white'}} + pickerBtnStyle={{color: colors.mainColor, fontFamily: Fonts.ubuntu}} + pickerToolBarStyle={{backgroundColor: 'white'}} + showMask={true} + showDuration={300} + pickerData={this.wheelSelectData} + selectedValue={1} + onPickerDone={pickedValue => { + this.store.apartmentData.leaseMonth = pickedValue; + }} + /> + + ); + } +} + +const styles = StyleSheet.flatten({ + inputTextView: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: Platform.OS == 'ios' ? 55 : 65, + }, + + textViewStyle: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: 55, + }, + + inputTextTitleView: { + fontFamily: Fonts.ubuntuL, + fontSize: 20, + color: colors.line2Color, + }, + + button: { + marginTop: 20, + width: width, + height: 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + picker: { + fontSize: 20, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'black', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + textView: { + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + fontSize: size.getSize(20), + fontWeight: 'bold', + }, +}); +const pickerSelectStyles = StyleSheet.create({ + inputIOS: { + fontSize: 16, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'gray', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + inputAndroid: { + fontSize: 16, + paddingHorizontal: 10, + paddingVertical: 8, + borderWidth: 0.5, + borderColor: 'black', + borderRadius: 8, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, +}); diff --git a/src/pages/addApartment/apartmentImageDetails.js b/src/pages/addApartment/apartmentImageDetails.js new file mode 100644 index 0000000..6154d9e --- /dev/null +++ b/src/pages/addApartment/apartmentImageDetails.js @@ -0,0 +1,325 @@ +import React, {Component} from 'react'; +import Video from 'react-native-video'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from 'react-native'; +import { + createStackNavigator, + CardStyleInterpolators, +} from 'react-navigation-stack'; +var RNFS = require('react-native-fs'); +import ImageHeader from '../../components/imageHeader'; +import ImageFooter from '../../components/imageFooter'; +import BackHeader from '../../components/backHeader'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import Pdf from 'react-native-pdf'; +import WebView from 'react-native-webview' +import JMessage from 'jmessage-react-plugin'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import ImageView from 'react-native-image-viewing'; +import ImageViewer from 'react-native-image-zoom-viewer'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import LoadingView from '../../common/loading'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import ImageZoom from 'react-native-image-pan-zoom'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; +import {overlay} from 'react-native-paper'; +@inject('appStore') +@observer +export default class ApartmentImageDetails extends Component { + @observable + loading = false; + @observable + imageUri = ''; + @observable + index = this.props.navigation.state.params.imageIndex; + @observable + imageUri = ''; + @observable + imagedata = []; + @observable + visable = true; + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + static navigationOptions = { + gesturesEnabled: false, + cardStyleInterpolator: props => + CardStyleInterpolators.forVerticalIOS(props), + }; + + renderPic(type) { + if (this.store.apartmentDataDoc.length > 0) { + return this.store.apartmentDataDoc.map((items, index) => { + // const image = {id:items.filename,name:items.filename,type:items.type,createDate:items.createDate,uri:items.uri,mime:items.mime,height:items.height,width:items.width} + return ( + { + this.index = index; + }} + style={{ + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + width: 40, + height: 40, + }}> + {/* */} + + + + + ); + }); + } else { + return null; + } + } + + + + getImageUri() { + this.imageUri = this.store.apartmentDataDoc[this.index].uri; + return this.imageUri; + } + renderIcon(items) { + return ( + + + + {items.title} + + + ); + } + async componentWillMount() { + var imagedata = []; + await this.store.apartmentDataDoc.map((items, index) => { + imagedata.push(items); + }); + this.imagedata = imagedata; + } + + renderImage() { + return this.store.apartmentDataDoc.map((items, index) => { + return ( + + + + ); + }); + } + + header() { + return ( + { + history.goBack(this), (this.loading = false); + }}> + + + ); + } + + + handleError = (error: Error) => { + console.log(Error) + } + + renderMain() { + var data = []; + const onRequestClose = () => this.visable = false; + this.store.apartmentDataDoc.map((items, index) => { + var image = {uri: items.uri}; + data.push(image); + }); + return ( + + {/* { + + }}> + {this.renderImage()} + */} + { + return ; + }} + FooterComponent={({ imageIndex }) => ( + + )} + visible={this.visable} + onRequestClose={onRequestClose} + images={data} + presentationStyle={'overFullScreen'} + imageIndex={this.index} + /> + + ); + } + render() { + const object = [ + {icon: 'building', title: this.store.text.addApartment}, + {icon: 'file-contract', title: this.store.text.addContract}, + ]; + console.log(this.store.apartmentDataDoc[this.index].uri) + const source = {uri:this.store.apartmentDataDoc[this.index].uri,cache:false}; + + return ( + + + {/* { + history.goBack(this), (this.loading = false); + }}> + + + + {this.renderMain()} + + {this.renderPic()} + + */} + { + console.log(`number of pages: ${numberOfPages}`); + }} + onPageChanged={(page,numberOfPages)=>{ + console.log(`current page: ${page}`); + }} + onError={(error)=>{ + console.log(error); + }} + onPressLink={(uri)=>{ + console.log(`Link presse: ${uri}`) + }} + style={styles.pdf}/> + {/* */} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + pdf: { + flex:1, + width:width, + height:height, +}, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, + backgroundVideo: { + width: width, + height: height - 120, + backgroundColor: 'black', + }, +}); diff --git a/src/pages/addApartment/apartmentNameAddressEdit.js b/src/pages/addApartment/apartmentNameAddressEdit.js new file mode 100644 index 0000000..6a75f9f --- /dev/null +++ b/src/pages/addApartment/apartmentNameAddressEdit.js @@ -0,0 +1,260 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + TextInput, + FlatList, +} from 'react-native'; +import { + createStackNavigator, + CardStyleInterpolators, +} from 'react-navigation-stack'; +import building from '../../services/building'; +import ApartmentNameSearchList from './apartmentNameSearchList'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; +@inject('appStore') +@observer +export default class ApartmentNameAddressEdit extends Component { + @observable + searchResult = []; + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + static navigationOptions = { + gesturesEnabled: false, + cardStyleInterpolator: props => + CardStyleInterpolators.forVerticalIOS(props), + }; + + renderIcon(items) { + return ( + + + + {items.title} + + + ); + } + + async clickAction(which) { + switch (which) { + case 0: + await history.goBack(this); + await history.push(this, '/apartmentDetails', {create: true}); + break; + case 1: + if (this.store.logined) { + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + await history.goBack(this); + await history.push(this, '/selectApartment'); + } else { + this.refs.toast.show('Please upload the signature'); + } + } else { + this.refs.toast.show('Please Login'); + } + + break; + } + } + componentDidMount() {} + + // renderBuilding(){ + // if(this.store.user.memberType == 0){ + // return( + // {this.clickAction(0)}}> + // + // + // {this.store.text.addApartment} + // + // + // ) + // }else{ + // return null + // } + // } + + SearchFilterFunction(text) { + //passing the inserted text in textinput + const newData = building.filter(function(item) { + //applying filter for the inserted text in search bar + const itemData = item.building; + const textData = text; + return itemData.indexOf(textData) > -1; + }); + this.searchResult = [...newData]; + if (text.length == 0) { + this.searchResult = []; + } + this.store.apartmentData.name = text; + } + + render() { + const object = [ + {icon: 'building', title: this.store.text.addApartment}, + {icon: 'file-contract', title: this.store.text.addContract}, + ]; + return ( + + { + history.goBack(this); + }}> + + + + + this.SearchFilterFunction(text)} + placeholderStyle={{fontFamily: Fonts.ubuntuL}} + placeholderTextColor={colors.textColor} + placeholder={this.store.text.apartment} + returnKeyType={'done'} + onSubmitEditing={() => { + history.goBack(this); + }} + value={this.store.apartmentData.name} + style={{ + color: colors.textColor, + fontSize: 15, + fontFamily: Fonts.ubuntuL, + marginBottom: Platform.OS === 'ios' ? 3 : 0, + flex: 1, + justifyContent: 'flex-end', + alignItems: 'center', + flexDirection: 'row', + paddingVertical: 0, + }} + /> + { history.goBack(this)}}> + + + + + ( + { + this.store.apartmentData.name = item.building; + this.store.apartmentData.address = item.address; + history.goBack(this); + // history.push(this, '/propertyDetails', {rentData: item}); + }} + /> + )} + keyExtractor={item => item.id} + /> + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/addApartment/apartmentNameSearchList.js b/src/pages/addApartment/apartmentNameSearchList.js new file mode 100644 index 0000000..726b1aa --- /dev/null +++ b/src/pages/addApartment/apartmentNameSearchList.js @@ -0,0 +1,134 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; + +@inject('appStore') +@observer +export default class ApartmentNameSearchList extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + renderMobile() { + if (this.props.items.mobile != '') { + return ( + + {'手機: ' + this.props.items.mobile} + + ); + } else { + return {'手機: N/A'}; + } + } + + renderTel() { + if (this.props.items.tel != '') { + return ( + {'電話: ' + this.props.items.tel} + ); + } else { + return {'電話: N/A'}; + } + } + + renderName() { + var name = this.props.items.estate + ', '; + if (this.props.items.phase != '') { + name = name + this.props.items.phase + '期, '; + } + if (this.props.items.bldg != '') { + name = name + this.props.items.bldg + ', '; + } + if (this.props.items.block != '') { + name = name + this.props.items.block + '座, '; + } + if (this.props.items.fl != '') { + name = name + this.props.items.fl + ', '; + } + if (this.props.items.room != '') { + name = name + this.props.items.room + '室'; + } + return name; + } + + render() { + return ( + + {this.props.items.building} + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + textView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: colors.textColor, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/addApartment/cropImage.js b/src/pages/addApartment/cropImage.js new file mode 100755 index 0000000..459d8be --- /dev/null +++ b/src/pages/addApartment/cropImage.js @@ -0,0 +1,221 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ImageStore, + Platform, + Alert, + Dimensions +} from 'react-native'; +import CameraRoll from '@react-native-community/cameraroll'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import AmazingCropper from 'react-native-amazing-cropper'; +import {colors} from '../../assets/styles/colors-theme'; +import LoadingView from '../../common/loading'; +import history from '../../common/history'; +import CustomCropperFooter from '../../common/CustomCropperFooter'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import convertLocalIdentifierToAssetLibrary from '../../services/convertLocalIdentifierToAssetLibrary'; + +const asyncStorageHelper = new AsyncStorageHelper(); + +@inject('appStore') +@observer +export default class CropImage extends Component { + static navigationOptions = { + gesturesEnabled: false, + }; + + @observable + finish = false; + + @observable + imageSize = {height: 100, width: 100}; + + @observable + rectangleCoordinates = { + topLeft: {x: 10, y: 10}, + topRight: {x: 10, y: 10}, + bottomRight: {x: 10, y: 10}, + bottomLeft: {x: 10, y: 10}, + }; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + avatarSource: null, + image: null, + imageData: this.props.navigation.state.params.data, + }; + } + + componentWillMount() { + const imageData = this.props.navigation.state.params.data; + // const source = { uri: imageData.uri }; + this.setState({image: this.state.imageData.uri}); + this.imageSize.height = imageData.height; + this.imageSize.width = imageData.width; + } + saveImageHandler(Imageuri) { + return { + id: this.state.imageData.id, + name: this.state.imageData.id, + type: this.state.imageData.type, + createDate: this.state.imageData.createDate, + uri: Imageuri, + mime: this.state.imageData.mime, + height: this.state.imageData.height, + width: this.state.imageData.width, + }; + } + + saveAndroidImageHandler(Imageuri) { + return { + id: this.state.imageData.id, + name: this.state.imageData.id, + type: this.state.imageData.type, + createDate: this.state.imageData.createDate, + uri: Imageuri, + mime: this.state.imageData.mime, + height: this.state.imageData.height, + width: this.state.imageData.width, + }; + } + + phChange(ph) { + const appleId = ph.substring(5, 41); + const ext = 'JPG'; + return `assets-library://asset/asset.${ext}?id=${appleId}&ext=${ext}`; + } + + saveImage(imageURL) { + var self = this; + var promise = CameraRoll.saveToCameraRoll(imageURL); + promise + .then(function(result) { + console.log(result); + self.setState({image: result}); + console.log(self.state.image); + if (Platform.OS === 'ios') { + self.store.apartmentDataDoc.push(self.saveImageHandler(result)); + } else { + self.store.apartmentDataDoc.push( + self.saveAndroidImageHandler(result), + ); + } + + console.log(self.store.apartmentDataDoc); + self.store.loading = false; + }) + .catch(function(error) { + self.store.loading = false; + console.log('Save failed!\n' + error); + }); + } + + removeIMageTag(croppedImageUri) { + ImageStore.getBase64ForTag( + croppedImageUri, + base64Image => { + // send image to server or save it locally + ImageStore.removeImageForTag(croppedImageUri); + this.saveImage(croppedImageUri); + }, + err => { + this.store.loading = false; + }, + ); + } + + componentDidMount() { + asyncStorageHelper.getData('image', image => { + if (image != null) { + console.log(image); + const source = {uri: image}; + this.setState({avatarSource: source}); + } + }); + } + + updateImage(image, newCoordinates) { + this.setState({ + image, + }); + + this.rectangleCoordinates = newCoordinates; + } + + onDone = croppedImageUri => { + if (this.finish === false) { + this.finish = true; + this.store.loading = true; + console.log('croppedImageUri = ', croppedImageUri); + // if (Platform.OS === 'ios') { + // ImageStore.getBase64ForTag( + // croppedImageUri, + // base64Image => { + // // send image to server or save it locally + // // ImageStore.removeImageForTag(croppedImageUri); + // this.saveImage(croppedImageUri); + // }, + // err => { + // this.store.loading = false; + // }, + // ); + // } else { + // // send image to server + // } + // navigate to the next page of your application + // Actions.home(); + // this.props.navigation.goBack(); + // history.goBack(this,this); + this.saveImage(croppedImageUri); + history.goBack(this, this); + } + }; + + onCancel = () => { + // navigate back + // Actions.pop(); + }; + + render() { + return ( + + } + onDone={this.onDone} + onCancel={this.onCancel} + imageUri={this.state.image} + imageWidth={this.imageSize.width} + imageHeight={this.imageSize.height} + NOT_SELECTED_AREA_OPACITY={0.3} + BORDER_WIDTH={20} + COMPONENT_HEIGHT={Dimensions.get('window').height - 100} + /> + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, +}); diff --git a/src/pages/addApartment/getAparmentRef.js b/src/pages/addApartment/getAparmentRef.js new file mode 100644 index 0000000..35af523 --- /dev/null +++ b/src/pages/addApartment/getAparmentRef.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet, ScrollView, Image, Share, Alert } from "react-native"; +import FastImage from 'react-native-fast-image' +import Icon from "react-native-vector-icons/FontAwesome5"; +import Modal, { ModalContent } from 'react-native-modals'; +import Switch from 'react-native-switch-pro'; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import Realm from 'realm' +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import LoadingView from '../../common/loading'; +import history from "../../common/history"; +import NaviBar from "../../components/navi-bar"; +import Migrations from "../../services/realm/Mirgrations"; +import BackHeader from '../../components/backHeader' +import { inject, observer } from "mobx-react"; +import { observable } from 'mobx' +import { queryUser } from "../../services/realm/realmManger"; +import AsyncStorageHelper from '../../common/asyncStorageHelper' +import ImagePicker from 'react-native-image-crop-picker'; +import { UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea} from '../../services/realm/schemeas' +import { width, height } from "../../common/screen"; +const asyncStorageHelper = new AsyncStorageHelper; + +let realm = new Realm({ schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea] }); + +@inject("appStore") +@observer +export default class GetApartmentRef extends Component { + + @observable + AddTenantSwitch: false + + @observable + apartmentData = {} + constructor(props) { + super(props); + this.store = props.appStore; + } + + + componentWillMount(){ + this.store.createApartmentRefCode(this.props.navigation.state.params.id) + } + + + componentDidMount() { + + } + + renderRefCode(){ + if(this.apartmentData){ + return( + + + {'refCode: '} + + + ) + } + } + + + render() { + + return ( + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: "center", + justifyContent: "center", + backgroundColor: colors.statusBarColor + }, + buttonText: { + color: "#fff" + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + + }, + + shadowView: { + width: scale(280), + height: verticalScale(460), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.20, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + marginTop: 7, + color: colors.textColor, + fontSize: 19, + fontFamily: Fonts.ubuntu, + }, + +}); diff --git a/src/pages/addApartment/upLoadImage.js b/src/pages/addApartment/upLoadImage.js new file mode 100755 index 0000000..4db999d --- /dev/null +++ b/src/pages/addApartment/upLoadImage.js @@ -0,0 +1,993 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + CameraRoll, + Alert, + Platform, +} from 'react-native'; +import ImageView from 'react-native-image-viewing'; +import DocumentPicker from 'react-native-document-picker'; +import ImageHeader from '../../components/imageHeader'; +var RNFS = require('react-native-fs'); +import RNFetchBlob from 'rn-fetch-blob'; +import Realm from 'realm'; +import ImageFooter from '../../components/imageFooter'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import LoadingView from '../../common/loading'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import ImagePicker from 'react-native-image-crop-picker'; +import {width, height} from '../../common/screen'; +const asyncStorageHelper = new AsyncStorageHelper(); +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +const options = { + title: 'Select Avatar', + customButtons: [{name: 'fb', title: 'Choose Photo from Facebook'}], + storageOptions: { + cameraRoll: true, + skipBackup: true, + path: 'images', + }, +}; + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +const pdfFolder = [ + {name: 'philiptestPDFFile1.pdf', uri: ''}, + {name: 'philiptestPDFFile1.pdf', uri: ''}, + {name: 'philiptestPDFFile1.pdf', uri: ''}, +]; + +const convertLocalIdentifierToAssetLibrary = (localIdentifier, ext) => { + const hash = localIdentifier.split('/')[0]; + return `assets-library://asset/asset.${ext}?id=${hash}&ext=${ext}`; +}; + +@inject('appStore') +@observer +export default class UpLoadImage extends Component { + @observable + apartmentData = { + id: null, + createDate: null, + modifyDate: null, + avatar: null, + name: null, + address: null, + signContractDate: null, + endContractDate: null, + rent: null, + country: null, + callingCode: null, + rentNotification: 1, + endContractNotification: 1, + remark: [], + doc: [], + }; + + @observable + apartmentDataRemark = []; + @observable + loginAddDoc = []; + @observable + imageSize = {height: 100, width: 100}; + @observable + dialogPhotoVisable = false; + @observable + testImage = null; + @observable + rectangleCoordinates = { + topLeft: {x: 10, y: 10}, + topRight: {x: 10, y: 10}, + bottomRight: {x: 10, y: 10}, + bottomLeft: {x: 10, y: 10}, + }; + @observable + type = 0; + @observable + visable = false; + @observable + imageIndex = 0; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + avatarSource: null, + image: [], + }; + } + + async componentWillMount() { + if (!this.props.navigation.state.params.create) { + await this.store.cloneApartmentData( + this.props.navigation.state.params.index, + ); + await this.store.cloneApartmentDocData( + this.props.navigation.state.params.index, + ); + } + } + + componentDidMount() { + RNFS.readDir(RNFS.DocumentDirectoryPath) // On Android, use "RNFS.DocumentDirectoryPath" (MainBundlePath is not defined) + .then(result => { + console.log('GOT RESULT', result); + + // stat the first file + }); + asyncStorageHelper.getData('image', image => { + if (image != null) { + console.log(image); + const source = {uri: image}; + this.setState({avatarSource: source}); + } + }); + } + + async clickAvatarAction(index) { + this.visable = true; + this.imageIndex = index; + console.log(avatarIndex); + } + + imageData(name, type, path) {} + + saveImage(index) { + // var promise = CameraRoll.saveToCameraRoll(uri); + // promise + // .then(function(result) { + // console.log(result); + // // const source = { uri:convertLocalIdentifierToAssetLibrary(result,'jpg') }; + // // this.store.image = source + // this.removeIMageTag(uri); + // }) + // .catch(function(error) { + // console.log(error); + // }); + console.log('click'); + console.log(index); + } + + saveImageHandler(image, type) { + var photoId = this.store.idGenerator(); + console.log(photoId); + return { + id: photoId, + name: image.filename, + type: this.type, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + savePdfHandler(data, path) { + var pdfId = this.store.idGenerator(); + return { + id: pdfId, + name: data.name, + type: 4, + uri: path, + createDate: new Date(), + mime: '', + height: 0, + width: 0, + }; + } + + async createApartmentAction() { + await this.store.deleteDemo(); + var data = this.store.apartmentData; + let user = realm.objects('User'); + await this.store.endContractlocalNotificationHandler(); + try { + let newApartment = { + id: this.store.idGenerator(), + createDate: new Date(), + modifyDate: new Date(), + name: data.name, + address: data.address, + floor: this.store.apartmentData.floor, + seats: this.store.apartmentData.seats, + unit: this.store.apartmentData.unit, + avatar: this.store.apartmentData.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: parseInt(data.rent), + country: data.country, + leaseMonth: parseInt(data.leaseMonth), + deposit: parseInt(data.deposit), + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: data.rentNotificationId, + remark: this.store.apartmentDataRemark, + doc: this.store.apartmentDataDoc, + }; + + console.log(newApartment); + + if (this.store.logined) { + await this.store.createApartmentPost(newApartment, true); + await realm.write(() => { + user[0].apartment.push(newApartment); + newApartment.rentNotificationId.map(async (items, index) => { + await user[0].notification.push(items); + }); + }); + await this.store.loadLocalData(); + this.props.navigation.popToTop(); + // await this.store.uploadDocFetch(newApartment.id,this.store.apartmentDataDoc), + } else { + try { + await realm.write(() => { + user[0].apartment.push(newApartment); + newApartment.rentNotificationId.map(async (items, index) => { + await user[0].notification.push(items); + }); + }); + } catch (error) { + console.log(error); + } + + await this.store.loadLocalData(); + this.props.navigation.popToTop(); + } + // history.pop(this,1) + } catch (e) { + console.log('Error on creation ' + e); + } + } + + saveAndroidImageHandler(image, type) { + var photoId = this.store.idGenerator(); + return { + id: photoId, + name: photoId+'.jpg', + type: this.type, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + async getPdfFile() { + this.type = 4; + try { + const results = await DocumentPicker.pickMultiple({ + type: [DocumentPicker.types.pdf], + }); + for (const res of results) { + console.log(res); + const split = res.uri.split('/'); + const name = split.pop(); + const inbox = split.pop(); + const realPath = `${RNFS.TemporaryDirectoryPath}${inbox}/${name}`; + this.store.apartmentDataDoc.push(this.savePdfHandler(res, realPath)); + // const realPath = `file://${RNFetchBlob.fs.dirs.DocumentDir}/${res.name}`; + } + } catch (err) { + if (DocumentPicker.isCancel(err)) { + // User cancelled the picker, exit any dialogs or menus and move on + } else { + throw err; + } + } + } + + renderAddButton(type) { + if (this.store.user.memberType == 0) { + if (type <= 2) { + return ( + { + this.dialogPhotoVisable = true; + this.type = type; + }}> + + + + {'新增圖片'} + + + + + ); + } else if (type == 4) { + return ( + { + this.getPdfFile(); + }} + style={{ + alignItems: 'center', + justifyContent: 'center', + width: 120, + height: 120, + }}> + {/* */} + + + + + {'新增PDF'} + + + + + ); + } + return ( + { + this.dialogPhotoVisable = true; + this.type = type; + }} + /> + ); + } + } + + // renderAddButton(type) { + // if (this.store.logined) { + // if (this.store.loginUserData.data.member.chara == 'owner') { + // return ( + // { + // this.dialogPhotoVisable = true; + // this.type = type; + // }} + // /> + // ); + // } + // } else { + // return ( + // { + // this.dialogPhotoVisable = true; + // this.type = type; + // }} + // /> + // ); + // } + // } + + phChange(ph) { + const appleId = ph.substring(5, 41); + const ext = 'JPG'; + return `assets-library://asset/asset.${ext}?id=${appleId}&ext=${ext}`; + } + + camerSaveImageAction(imageResult) { + var self = this; + var promise = CameraRoll.saveToCameraRoll(imageResult.path); + promise + .then(function(result) { + if (Platform.OS === 'ios') { + imageResult.path = self.phChange(result); + Alert.alert(result); + self.store.apartmentDataDoc.push(self.saveImageHandler(imageResult)); + console.log(self.store.apartmentDataDoc); + self.store.loading = false; + } else { + imageResult.path = result; + self.store.apartmentDataDoc.push( + self.saveAndroidImageHandler(imageResult), + ); + self.store.loading = false; + } + }) + .catch(function(error) { + Alert.alert('error', error); + self.store.loading = false; + console.log('Save file failed\n' + error); + }); + } + + avatarHander(which, multiple, cropping, type) { + var shouldCrop = false; + if (this.type === 0) { + shouldCrop = true; + } + if (which) { + this.store.loading = true; + ImagePicker.openCamera({ + includeBase64: true, + writeTempFile: false, + mediaType: 'photo', + cropping: false, + }).then(image => { + console.log(image); + // Alert.alert('imageResult', JSON.stringify(image)); + const response = image; + this.store.loading = false; + if (this.type === 0) { + if (Platform.OS === 'ios') { + var data = this.saveImageHandler(response); + history.push(this, '/cropImage', {data}); + } else { + var data = this.saveAndroidImageHandler(response); + history.push(this, '/cropImage', {data}); + } + } else { + // this.store.apartmentDataDoc.push(this.saveImageHandler(response)) + // this.camerSaveImageAction(response); + if (Platform.OS === 'ios') { + var data = this.saveImageHandler(response); + history.push(this, '/cropImage', {data}); + } else { + var data = this.saveAndroidImageHandler(response); + history.push(this, '/cropImage', {data}); + } + } + + // this.saveImage(response.path) + // this.saveImageHandler(response) + + //this.store.apartmentData.avatar = response.path + }); + } else { + ImagePicker.openPicker({ + includeBase64: false, + writeTempFile: false, + multiple: true, + mediaType: 'photo', + cropping: false, + }).then(image => { + console.log(image); + var response = image; + response.map((item, index) => { + if (Platform.OS === 'ios') { + const uri = this.store.convertLocalIdentifierToAssetLibrary( + item.localIdentifier, + 'JPG', + ); + item.path = uri; + console.log(item.path); + this.store.apartmentDataDoc.push(this.saveImageHandler(item)); + } else { + this.store.apartmentDataDoc.push( + this.saveAndroidImageHandler(item), + ); + console.log(this.store.apartmentDataDoc); + } + }); + // if (Platform.OS === 'ios') { + // const uri = this.store.convertLocalIdentifierToAssetLibrary( + // response.localIdentifier, + // 'JPG', + // ); + // response.path = uri; + // console.log(response.path); + // this.store.apartmentDataDoc.push(this.saveImageHandler(response)); + // } else { + // this.store.apartmentDataDoc.push( + // this.saveAndroidImageHandler(response), + // ); + // } + }); + } + this.dialogPhotoVisable = false; + } + + updateImage(image, newCoordinates) { + this.setState({ + image, + rectangleCoordinates: newCoordinates, + }); + } + + renderPDF() { + if (this.store.apartmentDataDoc.length > 0) { + return this.store.apartmentDataDoc.map((items, index) => { + if (items.type === 4) { + return ( + { + //this.clickAvatarAction(index); + history.push(this, '/apartmentImageDetails', { + imageIndex: index, + }); + }} + style={{ + alignItems: 'center', + justifyContent: 'center', + width: 120, + height: 120, + }}> + {/* */} + + + + + {items.name} + + + + {this.renderDeleteButton(index)} + + ); + } + }); + } else { + return null; + } + } + + renderDeleteButton(index) { + if (this.store.user.memberType == 0) { + return ( + { + this.deleteDocAlert(index); + }}> + + + ); + } + } + + renderPic(type) { + if (this.store.apartmentDataDoc.length > 0) { + return this.store.apartmentDataDoc.map((items, index) => { + if (type === items.type) { + // const image = {id:items.filename,name:items.filename,type:items.type,createDate:items.createDate,uri:items.uri,mime:items.mime,height:items.height,width:items.width} + return ( + { + //this.clickAvatarAction(index); + this.clickAvatarAction(index); + }} + style={{ + alignItems: 'center', + justifyContent: 'center', + width: 125, + height: 125, + }}> + {/* */} + + + + + + + {this.renderDeleteButton(index)} + + ); + } + }); + } else { + return null; + } + } + deleteDocAlert(index) { + Alert.alert( + '', + 'Are you sure?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + this.deleteDoc(index); + }, + }, + ], + {cancelable: false}, + ); + } + + deleteDoc(index) { + this.store.apartmentDataDoc.splice(index, 1); + } + + async saveAction() { + await this.store.saveDocEdit(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + history.goBack(this); + } + + renderButton() { + if (!this.props.navigation.state.params.create) { + if (this.store.logined) { + if (this.store.user.memberType == 0) { + return ( + + { + this.saveAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + + ); + } + } else { + return ( + + { + this.saveAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + + ); + } + } else { + return ( + + { + this.createApartmentAction(); + // history.push(this, '/addTenant'); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.ok} + + + + ); + } + } + + onRequestClose = () => { + this.visable = false; + }; + + render() { + var data = []; + const onRequestClose = () => (this.visable = false); + this.store.apartmentDataDoc.map((items, index) => { + if (items.type != 4) { + var image = {uri: items.uri}; + data.push(image); + } + }); + + return ( + + + + + + {/* + {this.store.text.apartmentDataDoc[0].uri} + */} + + {this.store.text.docoument} + + + {this.renderPic(0)} + {this.renderAddButton(0)} + + + + + + + {this.store.text.photos} + + + {this.renderPic(1)} + {this.renderAddButton(1)} + + + + + + + {this.store.text.others} + + + {this.renderPic(2)} + {this.renderAddButton(2)} + + + + + + PDF + + + {this.renderPDF()} + {this.renderAddButton(4)} + + + + + {this.renderButton()} + { + return ( + { + this.store.saveImage(imageIndex); + }} + /> + ); + }} + FooterComponent={({imageIndex}) => ( + + )} + visible={this.visable} + onRequestClose={onRequestClose} + images={data} + presentationStyle={'overFullScreen'} + imageIndex={this.imageIndex} + /> + { + this.dialogPhotoVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogPhotoVisable = false; + }}> + + + this.avatarHander(true, false, false, 0)}> + + + {this.store.text.camera} + + + this.avatarHander(false, false, false, 0)}> + + + {this.store.text.gallery} + + + + + + {/* {this.showImage()} + */} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + line: { + width: width - 20, + height: 1, + marginTop: 5, + marginLeft: 25, + backgroundColor: colors.line2Color, + }, + title: { + fontFamily: Fonts.ubuntu, + fontSize: 20, + marginLeft: 25, + }, + subscroll: { + height: 130, + marginTop: 10, + marginLeft: 20, + marginRight: 20, + }, +}); diff --git a/src/pages/bannerDetails/bannerDetails.js b/src/pages/bannerDetails/bannerDetails.js new file mode 100644 index 0000000..68e91e7 --- /dev/null +++ b/src/pages/bannerDetails/bannerDetails.js @@ -0,0 +1,176 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + Share, + Alert, + Linking, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import StepIndicator from 'react-native-step-indicator'; +import Modal, {ModalContent} from 'react-native-modals'; +import Switch from 'react-native-switch-pro'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Realm from 'realm'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import {WebView} from 'react-native-webview'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {queryUser} from '../../services/realm/realmManger'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import ImagePicker from 'react-native-image-crop-picker'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {width, height} from '../../common/screen'; +const asyncStorageHelper = new AsyncStorageHelper(); + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +@inject('appStore') +@observer +export default class BannerDetails extends Component { + @observable + data = null; + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.data; + } + + componentDidMount() {} + + talkToHelperAction() { + if (this.store.logined) { + var msgContent = this.data.chatMsg; + Alert.alert( + '', + '客服聯絡方法', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '致電 Rent Chat', + onPress: () => { + Linking.openURL(`tel:${'31040558'}`); + }, + }, + { + text: '在線對話', + onPress: () => this.store.gotohelperChat(this, msgContent), + }, + ], + {cancelable: false}, + ); + } else { + if (this.store.user == null) { + Alert.alert( + '', + '客服聯絡方法', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '致電 Rent Chat', + onPress: () => { + Linking.openURL(`tel:${'31040558'}`); + }, + }, + ], + {cancelable: false}, + ); + } else { + Alert.alert( + '', + this.store.text.pleaseLogin, + [ + { + text: this.store.text.cancel, + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: this.store.text.login, + onPress: () => { + history.push(this, '/signin', {icon: true}); + }, + }, + ], + {cancelable: false}, + ); + } + } + } + + render() { + console.log(this.data); + return ( + + + + + + + {this.data.chatWithCs ? ( + { + this.talkToHelperAction(); + }} + disabled={this.store.loading} + style={styles.buttonView}> + + {this.store.text.talkToHelper} + + + ) : ( + + )} + + ); + } +} + +const styles = StyleSheet.flatten({ + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 10, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, +}); diff --git a/src/pages/chat/chat.js b/src/pages/chat/chat.js new file mode 100755 index 0000000..0404579 --- /dev/null +++ b/src/pages/chat/chat.js @@ -0,0 +1,1627 @@ +// /** +// * Sample React Native App +// * https://github.com/facebook/react-native +// * @flow +// */ + +import React, {Component} from 'react'; +import { + StyleSheet, + View, + Alert, + Dimensions, + Platform, + TouchableOpacity, + Text, +} from 'react-native'; +import Modal, {ModalContent} from 'react-native-modals'; +import BackHeader from '../../components/backHeader'; +var Sound = require('react-native-sound'); +import Icon from 'react-native-vector-icons/FontAwesome5'; +var RNFS = require('react-native-fs'); +import {colors} from '../../assets/styles/colors-theme'; + +import {Fonts} from '../../assets/styles/fonts-theme'; +import ImagePicker from 'react-native-image-crop-picker'; +import history from '../../common/history'; +import IMUI from 'aurora-imui-react-native'; +var InputView = IMUI.ChatInput; +var MessageListView = IMUI.MessageList; +import {width, height} from '../../common/screen'; +const AuroraIController = IMUI.AuroraIMUIController; +const window = Dimensions.get('window'); +import {observable} from 'mobx'; +import monent from 'moment'; +import {inject, observer} from 'mobx-react'; +import JMessage from 'jmessage-react-plugin'; +const options = { + title: 'Select Avatar', + //customButtons: [{ name: 'fb', title: 'Choose Photo from Facebook' }], + storageOptions: { + skipBackup: true, + path: 'images', + }, +}; +@inject('appStore') +@observer +export default class Chat extends Component { + @observable + selectPhotoOrVideo = false; + takePhotoOrVideo = false; + static navigationOptions = { + title: 'Chat', + }; + + constructor(props) { + super(props); + let initHeight; + this.store = props.appStore; + if (Platform.OS == 'android') { + initHeight = 100; + } else { + initHeight = 86; + } + this.state = { + inputLayoutHeight: initHeight, + messageListLayout: {}, + inputViewLayout: {width: window.width, height: initHeight}, + menuContainerHeight: 625, + from: 0, + limit: 10, + }; + + this.updateLayout = this.updateLayout.bind(this); + this.onTouchMsgList = this.onTouchMsgList.bind(this); + this.conversation = this.props.navigation.state.params.conversation; + console.log(JSON.stringify(this.conversation)); + + JMessage.getMyInfo(myInfo => { + this.myInfo = myInfo; + console.log(this.myInfo); + }); + } + + convertJMessageToAuroraMsg(jmessage) { + console.log(jmessage); + var auroraMsg = {}; + auroraMsg.msgType = jmessage.type; + auroraMsg.msgId = jmessage.id; + + if (jmessage.type === 'text') { + auroraMsg.text = jmessage.text; + } + + if (jmessage.type === 'image') { + auroraMsg.mediaPath = jmessage.thumbPath; + } + + if (jmessage.type === 'voice') { + auroraMsg.mediaPath = jmessage.path; + auroraMsg.duration = jmessage.duration; + } + + if (jmessage.type === 'file') { + if (jmessage.extras.fileType === 'video') { + auroraMsg.mediaPath = jmessage.path; + auroraMsg.duration = jmessage.duration; + auroraMsg.msgType = 'video'; + } else { + console.log("cann't parse this file type ignore"); + return {}; + } + } + if (jmessage.type == 'custom') { + if (jmessage.hasOwnProperty('customObject')) { + if (jmessage.customObject.hasOwnProperty('image')) { + auroraMsg.msgType = 'image'; + auroraMsg.mediaPath = jmessage.customObject.image; + } else if (jmessage.customObject.hasOwnProperty('audio')) { + auroraMsg.msgType = 'voice'; + auroraMsg.mediaPath = jmessage.customObject.audio; + auroraMsg.duration = jmessage.customObject.duration; + } else if (jmessage.customObject.hasOwnProperty('video')) { + auroraMsg.mediaPath = jmessage.customObject.video; + auroraMsg.msgType = 'video'; + + console.log(auroraMsg.mediaPath); + } else { + auroraMsg.msgType = 'text'; + auroraMsg.text = jmessage.customObject.text; + } + } else if (jmessage.hasOwnProperty('eventType')) { + auroraMsg.msgType = 'event'; + auroraMsg.text = jmessage.eventType; + } else { + auroraMsg.msgType = 'text'; + auroraMsg.text = ''; + } + //console.log(jmessage.customObject.text) + //auroraMsg.text = jmessage.customObject + } + + if (jmessage.type === 'event') { + // Alert.alert('event', jmessage.eventType); + auroraMsg.text = jmessage.eventType; + } + + if (jmessage.type === 'prompt') { + auroraMsg.msgType = 'event'; + auroraMsg.text = jmessage.promptText; + } + + var user = { + userId: '1', + displayName: '', + avatarPath: require('../../assets/images/chat/head.png').toString(), + }; + console.log('from user: ' + jmessage.from.avatarThumbPath); + user.userId = jmessage.from.username; + user.displayName = jmessage.from.nickname; + user.avatarPath = jmessage.from.avatarThumbPath.toString(); + if (user.displayName == '') { + user.displayName = jmessage.from.username; + } + if (user.avatarPath == '') { + user.avatarPath = require('../../assets/images/chat/head.png').toString(); + } + auroraMsg.fromUser = user; + auroraMsg.status = 'send_succeed'; + + auroraMsg.isOutgoing = true; + + if (this.myInfo.username === jmessage.from.username) { + auroraMsg.isOutgoing = true; + } else { + auroraMsg.isOutgoing = false; + } + + auroraMsg.timeString = ''; + + if (auroraMsg.msgType == 'voice') { + if (jmessage.hasOwnProperty('customObject')) { + this.getfile(jmessage, auroraMsg); + } + } else if (auroraMsg.msgType == 'video') { + if (jmessage.hasOwnProperty('customObject')) { + this.getfile(jmessage, auroraMsg); + } + } + + return auroraMsg; + } + + getNormalMessage() { + var msg = {}; + if (this.conversation.type === 'single') { + msg.username = this.conversation.username; + } else if (this.conversation.type === 'group') { + msg.groupId = this.conversation.id; + } else { + msg.roomId = this.conversation.roomId; + } + msg.type = this.conversation.type; + return msg; + } + + sendCustomMessage = () => { + var messages = []; + for (var i = 0; i < 10; i++) { + var message = this.getNormalMessage(); + message.msgType = 'custom'; + message.msgId = '10'; + message.status = 'send_going'; + message.isOutgoing = true; + message.content = + '
This is a custom message.
\ + '; + message.contentSize = {height: 200, width: 200}; + message.extras = {extras: 'fdfsf'}; + var user = { + userId: '1', + displayName: '', + avatarPath: require('../../assets/images/chat/head.png').toString(), + }; + user.displayName = '0001'; + user.avatarPath = require('../../assets/images/chat/head.png').toString(); + message.fromUser = user; + messages[i] = message; + } + + AuroraIController.appendMessages(messages); + var customMessage = { + type: 'single', + username: 'Wicked002', + appKey: '58067d5678c387f20831a956', + customObject: {key: 'value'}, + }; + JMessage.sendCustomMessage( + customMessage, + success => { + console.log('JS sendCustomMessage success:' + JSON.stringify(success)); + }, + error => { + console.log('JS sendCustomMessage error:' + JSON.stringify(error)); + }, + ); + }; + + getVideo(message) { + console.log('load image'); + var parames = { + type: this.conversation.type, + username: this.conversation.username, + groupId: this.conversation.id, + messageId: message.msgId, + }; + JMessage.downloadFile( + parames, + result => { + console.log(message); + console.log(result); + // var msgId = result.messageId + // var imgPath = result.filePath + var newMessage = { + msgType: message.msgType, + msgId: message.msgId, + mediaPath: result.filePath, + duration: message.duration, + fromUser: message.fromUser, + status: message.status, + isOutgoing: message.isOutgoing, + timeString: message.timeString, + }; + this.loading = false; + Alert.alert('onSendGalleryFiles', JSON.stringify(result.filePath)); + + AuroraIController.updateMessage(newMessage); + console.log(result); + }, + error => { + var code = error.code; + var desc = error.description; + Alert.alert('get video error:', JSON.stringify(error)); + this.loading = false; + }, + ); + } + + async getVoiceDuration(name, uri) { + var whoosh = await new Sound( + name, + uri, + + error => { + if (error) { + console.log('failed to load the sound', error); + return; + } + console.log( + 'duration in seconds: ' + + whoosh.getDuration() + + 'number of channels: ' + + whoosh.getNumberOfChannels(), + ); + return whoosh.getDuration(); + }, + ); + } + + async getfile(jmessage, auroraMsg) { + console.log(jmessage); + console.log(auroraMsg); + + var existing = await RNFS.exists( + RNFS.DocumentDirectoryPath + '/' + jmessage.customObject.name, + ); + if (existing) { + var newMessage = { + msgType: auroraMsg.msgType, + msgId: auroraMsg.msgId, + mediaPath: + RNFS.DocumentDirectoryPath + '/' + jmessage.customObject.name, + duration: auroraMsg.duration, + fromUser: auroraMsg.fromUser, + status: auroraMsg.status, + isOutgoing: auroraMsg.isOutgoing, + timeString: auroraMsg.timeString, + }; + + if (auroraMsg.msgType == 'voice') { + } + + + AuroraIController.updateMessage(newMessage); + } else { + console.log('not'); + var messageFromUrl = ''; + if (auroraMsg.msgType == 'video') { + messageFromUrl = jmessage.customObject.video; + } else { + messageFromUrl = jmessage.customObject.audio; + } + RNFS.downloadFile({ + fromUrl: messageFromUrl, + toFile: `${RNFS.DocumentDirectoryPath}/${jmessage.customObject.name}`, + }).promise.then(r => { + console.log(r); + var newMessage = { + msgType: auroraMsg.msgType, + msgId: auroraMsg.msgId, + mediaPath: + RNFS.DocumentDirectoryPath + '/' + jmessage.customObject.name, + duration: auroraMsg.duration, + fromUser: auroraMsg.fromUser, + status: auroraMsg.status, + isOutgoing: auroraMsg.isOutgoing, + timeString: auroraMsg.timeString, + }; + AuroraIController.updateMessage(newMessage); + }); + } + } + + componentWillMount() { + // RNFS.readDir(RNFS.DocumentDirectoryPath) // On Android, use "RNFS.DocumentDirectoryPath" (MainBundlePath is not defined) + // .then(result => { + // console.log('GOT RESULT', result); + + // // stat the first file + // return Promise.all([RNFS.stat(result[0].path), result[0].path]); + // }); + if (this.conversation.type === 'group') { + console.log('reset all group unread'); + JMessage.resetUnreadMessageCount( + {type: 'group', groupId: this.conversation.id}, + conversation => { + console.log(conversation); + }, + error => { + var code = error.code; + var desc = error.description; + }, + ); + } else { + console.log('reset all user unread'); + JMessage.resetUnreadMessageCount( + {type: 'single', username: this.conversation.username}, + conversation => { + console.log(conversation); + }, + error => { + var code = error.code; + var desc = error.description; + }, + ); + } + console.log(this.conversation); + if (this.conversation.hasOwnProperty('msgContent')) { + if (this.conversation.msgContent != undefined) { + this.onSendText(this.conversation.msgContent); + } + } + } + + componentDidMount() { + JMessage.setBadge(0, success => {}); + this.resetMenu(); + this.setState({ + messageListLayout: {flex: 1, margin: 0, width: window.width}, + }); + var parames = { + from: this.state.from, // 开始的消息下标。 + limit: this.state.limit, // 要获取的消息数。比如当 from = 0, limit = 10 时,是获取第 0 - 9 条历史消息。 + type: this.conversation.type, + username: this.conversation.username, + groupId: this.conversation.id, + roomId: this.conversation.roomId, + }; + console.log(parames); + this.messageListDidLoadCallback = () => { + JMessage.getHistoryMessages( + parames, + messages => { + // Alert.alert('messages',JSON.stringify(messages)) + console.log('JS getHistoryMessage:' + JSON.stringify(messages)); + this.setState({ + from: this.state.from + 10, + }); + var auroraMessages = messages.map(message => { + var normalMessage = this.convertJMessageToAuroraMsg(message); + console.log(normalMessage); + if (normalMessage.msgType === 'unknow') { + return; + } + return normalMessage; + }); + console.log(auroraMessages); + AuroraIController.insertMessagesToTop(auroraMessages); + }, + error => { + Alert.alert('error!', JSON.stringify(error)); + }, + ); + + this.receiveMessageCallBack = message => { + console.log('JS receiveMessage:' + JSON.stringify(message)); + // Alert.alert( + // 'message.from.group', + // JSON.stringify(message), + // ); + const readParams = { + type: 'single', + username: message.from.username, + appKey: message.from.appKey, + id: message.id, + }; + + if (this.conversation.type === 'single') { + if (message.target.type === 'user') { + JMessage.setMsgHaveRead( + readParams, + result => { + console.log(result); + }, + error => { + console.log(error); + }, + ); + if (message.from.username === this.conversation.username) { + var msg = this.convertJMessageToAuroraMsg(message); + AuroraIController.appendMessages([msg]); + } + if (msg.msgType == 'video') { + //this.getVideo(msg); + } else if (msg.msgType == 'voice') { + //this.getVoice(message,msg) + } + console.log(msg); + console.log(message); + // Alert.alert( + // 'message.from.username', + // message.from.username + ',message:' + message.text, + // ); + } + } else if (this.conversation.type === 'group') { + if (message.target.type === 'group') { + readParams.groupId = message.target.id; + readParams.type = 'group'; + JMessage.setMsgHaveRead( + readParams, + result => { + console.log(result); + }, + error => { + console.log(error); + }, + ); + if (message.target.id === this.conversation.id) { + var msg = this.convertJMessageToAuroraMsg(message); + AuroraIController.appendMessages([msg]); + // Alert.alert( + // 'message.from.group', + // message.from.id + ',message:' + message.text, + // ); + } + } + } else { + if (message.target.type === 'chatroom') { + if (message.target.roomId === this.conversation.roomId) { + var msg = this.convertJMessageToAuroraMsg(message); + AuroraIController.appendMessages([msg]); + } + } + } + }; + JMessage.addReceiveMessageListener(this.receiveMessageCallBack); + JMessage.addReceiptMessageListener(result => {}); + }; + AuroraIController.addMessageListDidLoadListener( + this.messageListDidLoadCallback, + ); + // this.timer = setTimeout(() => { + // console.log("Sending custom message") + // this.sendCustomMessage(); + // }, 2000) + } + + onInputViewSizeChange = size => { + console.log('height: ' + size.height); + if (this.state.inputLayoutHeight != size.height) { + this.setState({ + inputLayoutHeight: size.height, + inputViewLayout: {width: size.width, height: size.height}, + messageListLayout: {flex: 1, width: window.width, margin: 0}, + }); + } + }; + + componentWillUnmount() { + JMessage.removeReceiveMessageListener(this.receiveMessageCallBack); + AuroraIController.removeMessageListDidLoadListener( + this.messageListDidLoadCallback, + ); + this.timer && clearTimeout(this.timer); + if (this.conversation.type === 'chatroom') { + JMessage.leaveChatRoom( + {roomId: this.conversation.roomId}, + code => { + console.log('Leave chat room succeed'); + }, + error => { + alert('error: ' + JSON.stringify(error)); + }, + ); + } else { + JMessage.exitConversation(); + } + } + + resetMenu() { + if (Platform.OS === 'android') { + this.refs['ChatInput'].showMenu(false); + this.setState({ + messageListLayout: {flex: 1, width: window.width, margin: 0}, + }); + } else { + this.setState({ + inputViewLayout: {width: window.width, height: 86}, + }); + } + } + + updateLayout(layout) { + this.setState({inputViewLayout: layout}); + } + + onAvatarClick = message => {}; + + onTouchMsgList() { + AuroraIController.hidenFeatureView(true); + } + + onTouchEditText = () => { + console.log('scroll to bottom'); + this.refs['ChatInput'].showMenu(false); + this.setState({ + inputViewLayout: { + width: window.width, + height: this.state.inputLayoutHeight, + }, + }); + }; + + onFullScreen = () => { + var navigationBar = 50; + this.setState({ + messageListLayout: {flex: 0, width: 0, height: 0}, + inputViewLayout: {flex: 1, width: window.width, height: window.height}, + }); + }; + + onRecoverScreen = () => { + this.setState({ + messageListLayout: {flex: 1, width: window.width, margin: 0}, + inputViewLayout: { + flex: 0, + width: window.width, + height: this.state.inputLayoutHeight, + }, + }); + }; + + onMsgClick = message => { + console.log(message); + var msgType = message.msgType; + // alert(JSON.stringify(message)) + // Alert.alert('onSendGalleryFiles', JSON.stringify(message)); + if (message.msgType == 'image' || message.msgType == 'video') { + var parames = { + type: this.conversation.type, + username: this.conversation.username, + groupId: this.conversation.id, + messageId: message.msgId, + messageType: msgType, + mediaPath: message.mediaPath, + }; + console.log(parames); + history.push(this, '/imageDetails', {data: parames}); + } + }; + + onMsgLongClick = message => { + var msg = {}; + msg.type = 'group'; + msg.groupId = this.conversation.id; + msg.messageId = message.msgId; + //Alert.alert('撤回消息', '撤回消息'); + JMessage.retractMessage( + msg, + success => { + var eventMsg = {}; + eventMsg.msgId = message.msgId; + eventMsg.msgType = 'event'; + eventMsg.text = '撤回的消息'; + AuroraIController.updateMessage(eventMsg); + }, + error => {}, + ); + }; + + onStatusViewClick = message => { + console.log(message); + message.status = 'send_succeed'; + message.fromUser.avatarPath = message.mediaPath.toString(); + AuroraIController.updateMessage(message); + }; + + onBeginDragMessageList = () => { + this.updateLayout({width: window.width, height: 86}); + AuroraIController.hidenFeatureView(true); + }; + + onPullToRefresh = () => { + console.log('on pull to refresh'); + var parames = { + from: this.state.from, // 开始的消息下标。 + limit: this.state.limit, // 要获取的消息数。比如当 from = 0, limit = 10 时,是获取第 0 - 9 条历史消息。 + type: this.conversation.type, + username: this.conversation.username, + groupId: this.conversation.id, + roomId: this.conversation.roomId, + }; + console.log(parames); + JMessage.getHistoryMessages( + parames, + messages => { + if (Platform.OS == 'android') { + this.refs['MessageList'].refreshComplete(); + } + this.setState({ + from: this.state.from + 10, + }); + console.log(messages); + var auroraMessages = messages.map(message => { + var normalMessage = this.convertJMessageToAuroraMsg(message); + if (normalMessage.msgType === 'unknow') { + return; + } + return normalMessage; + }); + AuroraIController.insertMessagesToTop(auroraMessages); + }, + error => { + Alert.alert('error!', JSON.stringify(error)); + }, + ); + }; + + setMessageTarget = msg => { + if (this.conversation.type === 'single') { + msg.username = this.conversation.username; + } else if (this.conversation.type === 'group') { + msg.groupId = this.conversation.id; + } else { + msg.roomId = this.conversation.roomId; + } + msg.type = this.conversation.type; + }; + + onSendText = text => { + var message = this.getNormalMessage(); + message.text = text; + message.messageType = 'text'; + // message.messageType = "custom" + // message.customObject = {'key':'value'} + JMessage.createSendMessage(message, msg => { + console.log('JS createSendMessage:' + JSON.stringify(msg)); + var auroraMsg = this.convertJMessageToAuroraMsg(msg); + if (auroraMsg.msgType === undefined) { + return; + } + + auroraMsg.status = 'send_going'; + AuroraIController.appendMessages([auroraMsg]); + AuroraIController.scrollToBottom(true); + this.setMessageTarget(msg); + console.log(msg.from.nickname); + //Alert.alert('send text', JSON.stringify(msg)); + + msg.messageSendingOptions = { + needReadReceipt: true, + isShowNotification: true, + isRetainOffline: true, + isCustomNotificationEnabled: true, + notificationTitle: msg.from.nickname, + notificationText: text, + }; + + JMessage.sendMessage( + msg, + jmessage => { + var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + AuroraIController.updateMessage(auroraMsg); + console.log('JS sendMessage success:' + JSON.stringify(jmessage)); + }, + error => { + console.log('JS sendMessage error:' + JSON.stringify(error)); + }, + ); + }); + }; + + async onSendCustomMessage(customObj, objName, msgType, msgDuration) { + var message = this.getNormalMessage(); + var userid = ''; + var nickname = ''; + var type = ''; + if (this.conversation.type === 'group') { + userid = this.conversation.id; + nickname = 'Helper'; + type = 'group'; + } else { + userid = this.myInfo.username; + nickname = this.myInfo.nickname; + type = 'single'; + } + message.text = ''; + message.extras = { + id: userid, + nickname: nickname, + type: type, + }; + var customnotificationText = ''; + message.messageType = 'custom'; + switch (msgType) { + case 0: + message.customObject = { + text: customObj, + name: objName, + }; + customnotificationText = customObj; + break; + case 1: + message.customObject = { + image: customObj, + name: objName, + }; + customnotificationText = '發來圖片'; + break; + case 2: + message.customObject = { + audio: customObj, + name: objName, + duration: msgDuration, + }; + customnotificationText = '發來一段錄音'; + break; + case 3: + message.customObject = { + video: customObj, + name: objName, + //duration: msgDuration, + }; + customnotificationText = '發來一段影片'; + break; + } + + // message.messageType = "custom" + // message.customObject = {'key':'value'} + JMessage.createSendMessage(message, msg => { + console.log('JS createSendMessage:' + JSON.stringify(msg)); + var auroraMsg = this.convertJMessageToAuroraMsg(msg); + if (auroraMsg.msgType === undefined) { + return; + } + + auroraMsg.status = 'send_going'; + AuroraIController.appendMessages([auroraMsg]); + AuroraIController.scrollToBottom(true); + this.setMessageTarget(msg); + console.log(msg.from.nickname); + //Alert.alert('send text', JSON.stringify(msg)); + + var notifTitle = ''; + if (this.conversation.type === 'group') { + notifTitle = this.conversation.id + '&&' + 'group'; + } else { + notifTitle = msg.from.username + '&&' + 'single'; + } + + msg.messageSendingOptions = { + needReadReceipt: true, + isShowNotification: true, + isRetainOffline: true, + isCustomNotificationEnabled: true, + notificationTitle: msg.from.nickname, + notificationText: customnotificationText, + }; + + JMessage.sendMessage( + msg, + jmessage => { + var toId = ''; + if (jmessage.target.type == 'user') { + toId = jmessage.target.username; + } else { + toId = jmessage.target.id; + } + console.log(msg); + console.log(jmessage); + const backupMsgData = { + msgID: jmessage.id, + fromID: jmessage.from.username, + toID: toId, + type: msgType, + content: JSON.stringify(jmessage.customObject), + }; + this.store.chatBackup(backupMsgData); + var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + AuroraIController.updateMessage(auroraMsg); + console.log('JS sendMessage success:' + JSON.stringify(jmessage)); + }, + error => { + console.log('JS sendMessage error:' + JSON.stringify(error)); + }, + ); + }); + } + + onTakePicture = media => { + console.log(media); + // var message = this.getNormalMessage(); + // message.messageType = 'image'; + // message.path = media.mediaPath; + + // JMessage.createSendMessage(message, msg => { + // var auroraMsg = this.convertJMessageToAuroraMsg(msg); + // auroraMsg.status = 'send_going'; + // AuroraIController.appendMessages([auroraMsg]); + // AuroraIController.scrollToBottom(true); + // this.setMessageTarget(msg); + // JMessage.sendMessage( + // msg, + // jmessage => { + // var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + // AuroraIController.updateMessage(auroraMsg); + // }, + // error => { + // Alert.alert(`send image fail ${JSON.stringify(error)}`); + // }, + // ); + // }); + var fileName = monent().format('DDMMYYYYssmmhh') + '.jpg'; + this.store.chatUploadFile(1, media.mediaPath, fileName, this); + }; + + onStartRecordVoice = e => { + console.log('on start record voice'); + }; + + onFinishRecordVoice = mediaPath => { + //Alert.alert('onFinishRecordVoice', JSON.stringify(mediaPath)); + console.log(mediaPath); + console.log(RNFS.DocumentDirectoryPath); + + var fileName = mediaPath.replace(RNFS.DocumentDirectoryPath + '/', ''); + console.log(fileName); + var whoosh = new Sound( + fileName, + RNFS.DocumentDirectoryPath, + + error => { + if (error) { + console.log('failed to load the sound', error); + } + console.log( + 'duration in seconds: ' + + whoosh.getDuration() + + 'number of channels: ' + + whoosh.getNumberOfChannels(), + ); + this.store.chatUploadFile( + 2, + mediaPath, + fileName, + this, + whoosh.getDuration(), + ); + }, + ); + + // var message = this.getNormalMessage(); + // message.messageType = 'voice'; + // message.path = mediaPath; + + // JMessage.createSendMessage(message, msg => { + // var auroraMsg = this.convertJMessageToAuroraMsg(msg); + // auroraMsg.status = 'send_going'; + // AuroraIController.appendMessages([auroraMsg]); + // AuroraIController.scrollToBottom(true); + // this.setMessageTarget(msg); + // msg.messageSendingOptions = { + // needReadReceipt: true, + // isShowNotification: true, + // isRetainOffline: true, + // isCustomNotificationEnabled: true, + // notificationTitle: msg.from.nickname, + // notificationText: '發來一段錄音', + // }; + // JMessage.sendMessage( + // msg, + // jmessage => { + // var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + // AuroraIController.updateMessage(auroraMsg); + // }, + // error => { + // Alert.alert(`send image fail ${JSON.stringify(error)}`); + // }, + // ); + // }); + }; + + onCancelRecordVoice = () => { + console.log('on cancel record voice'); + }; + + onStartRecordVideo = () => { + console.log('on start record video'); + }; + + onFinishRecordVideo = async video => { + console.log(video); + if (Platform.OS == 'ios') { + const filename = video.mediaPath.slice( + video.mediaPath.indexOf('tmp/') + 4, + ); + + console.log(filename); + + await RNFS.moveFile( + video.mediaPath, + RNFS.DocumentDirectoryPath + '/' + filename, + ); + var existing = await RNFS.exists( + RNFS.DocumentDirectoryPath + '/' + filename, + ); + console.log(RNFS.DocumentDirectoryPath + '/' + filename); + console.log(existing); + if (existing) { + this.store.chatUploadFile( + 3, + RNFS.DocumentDirectoryPath + '/' + filename, + filename, + this, + ); + } + } + + // var message = this.getNormalMessage(); + // message.messageType = 'file'; + // message.extras = {fileType: 'video'}; + // message.path = video.mediaPath; + + // JMessage.createSendMessage(message, msg => { + // var auroraMsg = this.convertJMessageToAuroraMsg(msg); + // auroraMsg.status = 'send_going'; + // AuroraIController.appendMessages([auroraMsg]); + // AuroraIController.scrollToBottom(true); + // this.setMessageTarget(msg); + // console.log(msg); + // JMessage.sendMessage( + // msg, + // jmessage => { + // var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + // AuroraIController.updateMessage(auroraMsg); + // }, + // error => { + // Alert.alert(`send image fail ${JSON.stringify(error)}`); + // }, + // ); + // }); + }; + + onSendGalleryFiles = mediaFiles => { + for (var index in mediaFiles) { + Alert.alert( + 'onSendGalleryFiles', + JSON.stringify(mediaFiles[index]['mediaPath']), + ); + var message = this.getNormalMessage(); + message.messageType = 'image'; + message.path = mediaFiles[index].mediaPath; + + JMessage.createSendMessage(message, msg => { + var auroraMsg = this.convertJMessageToAuroraMsg(msg); + auroraMsg.status = 'send_going'; + AuroraIController.appendMessages([auroraMsg]); + AuroraIController.scrollToBottom(true); + this.setMessageTarget(msg); + msg.messageSendingOptions = { + needReadReceipt: true, + isShowNotification: true, + isRetainOffline: true, + isCustomNotificationEnabled: true, + notificationTitle: msg.from.nickname, + notificationText: '發來圖片', + }; + JMessage.sendMessage( + msg, + jmessage => { + var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + AuroraIController.updateMessage(auroraMsg); + }, + error => { + Alert.alert(`send image fail ${JSON.stringify(error)}`); + }, + ); + }); + } + }; + + onSwitchToMicrophoneMode = () => { + AuroraIController.scrollToBottom(true); + }; + + async selectPhoto() { + this.selectPhotoOrVideo = false; + ImagePicker.openPicker({ + includeBase64: false, + writeTempFile: true, + multiple: false, + mediaType: 'photo', + cropping: false, + }).then(image => { + console.log(image); + var response = image; + if (Platform.OS === 'ios') { + // const uri = this.store.convertLocalIdentifierToAssetLibrary( + // response.localIdentifier, + // 'JPG', + // ); + // response.path = uri; + console.log(response); + + this.store.chatUploadFile(1, response.path, response.filename, this); + } else { + // this.store.apartmentDataDoc.push( + // this.saveAndroidImageHandler(response), + // ); + } + }); + } + + async onSendCustomImageMessage(uri) { + console.log(uri); + var message = this.getNormalMessage(); + message.messageType = 'custom'; + // message.path = response.path; + message.customObject = { + image: uri, + }; + JMessage.createSendMessage(message, msg => { + var auroraMsg = this.convertJMessageToAuroraMsg(msg); + auroraMsg.status = 'send_going'; + AuroraIController.appendMessages([auroraMsg]); + AuroraIController.scrollToBottom(true); + this.setMessageTarget(msg); + msg.messageSendingOptions = { + needReadReceipt: true, + isShowNotification: true, + isRetainOffline: true, + isCustomNotificationEnabled: true, + notificationTitle: msg.from.nickname, + notificationText: '發來圖片', + }; + JMessage.sendMessage( + msg, + jmessage => { + var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + AuroraIController.updateMessage(auroraMsg); + }, + error => { + Alert.alert(`send image fail ${JSON.stringify(error)}`); + }, + ); + }); + } + + async selectVideo() { + this.selectPhotoOrVideo = false; + ImagePicker.openPicker({ + includeBase64: false, + writeTempFile: true, + multiple: false, + mediaType: 'video', + cropping: false, + }).then(async video => { + if (Platform.OS === 'ios') { + console.log(video); + + const fileName = video.path.slice( + video.path.indexOf('react-native-image-crop-picker/') + 31, + ); + console.log(fileName); + await RNFS.moveFile( + video.path.slice(7), + RNFS.DocumentDirectoryPath + '/' + fileName, + ); + var existing = await RNFS.exists( + RNFS.DocumentDirectoryPath + '/' + fileName, + ); + console.log(RNFS.DocumentDirectoryPath + '/' + fileName); + console.log(existing); + if (existing) { + this.store.chatUploadFile( + 3, + RNFS.DocumentDirectoryPath + '/' + fileName, + fileName, + this, + ); + } + + // message.path = response.path.slice(7); + // this.store.chatUploadFile(3, video.path.slice(7), video.filename, this); + } else { + // this.store.apartmentDataDoc.push( + // this.saveAndroidImageHandler(response), + // ); + } + }); + } + + takePhoto() { + this.takePhotoOrVideo = false; + ImagePicker.openCamera({ + includeBase64: false, + writeTempFile: true, + multiple: false, + mediaType: 'photo', + cropping: false, + }).then(image => { + console.log(image); + var response = image; + if (Platform.OS === 'ios') { + this.store.chatUploadFile(1, response.path, response.filename, this); + } else { + // this.store.apartmentDataDoc.push( + // this.saveAndroidImageHandler(response), + // ); + } + }); + } + + takeVideo() { + this.takePhotoOrVideo = false; + ImagePicker.openCamera({ + includeBase64: false, + writeTempFile: true, + multiple: false, + mediaType: 'video', + cropping: false, + }).then(image => { + console.log(image); + var response = image; + if (Platform.OS === 'ios') { + // Alert.alert('messages', JSON.stringify(response)); + var message = this.getNormalMessage(); + message.messageType = 'file'; + message.extras = {fileType: 'video'}; + message.path = response.path.slice(7); + + JMessage.createSendMessage(message, msg => { + var auroraMsg = this.convertJMessageToAuroraMsg(msg); + auroraMsg.status = 'send_going'; + AuroraIController.appendMessages([auroraMsg]); + AuroraIController.scrollToBottom(true); + this.setMessageTarget(msg); + console.log(msg); + JMessage.sendMessage( + msg, + jmessage => { + var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + AuroraIController.updateMessage(auroraMsg); + }, + error => { + Alert.alert(`send image fail ${JSON.stringify(error)}`); + }, + ); + }); + } else { + // this.store.apartmentDataDoc.push( + // this.saveAndroidImageHandler(response), + // ); + } + }); + } + + onSwitchToGalleryMode = () => { + AuroraIController.scrollToBottom(true); + AuroraIController.hidenFeatureView(true); + this.selectPhotoOrVideo = true; + // ImagePicker.openPicker({ + // includeBase64: false, + // writeTempFile: true, + // multiple: false, + // mediaType: 'photo', + // cropping: false, + // }).then(image => { + // console.log(image); + // var response = image; + // if (Platform.OS === 'ios') { + // // const uri = this.store.convertLocalIdentifierToAssetLibrary( + // // response.localIdentifier, + // // 'JPG', + // // ); + // // response.path = uri; + // console.log(response.path); + // var message = this.getNormalMessage(); + // message.messageType = 'image'; + // message.path = response.path; + + // JMessage.createSendMessage(message, msg => { + // var auroraMsg = this.convertJMessageToAuroraMsg(msg); + // auroraMsg.status = 'send_going'; + // AuroraIController.appendMessages([auroraMsg]); + // AuroraIController.scrollToBottom(true); + // this.setMessageTarget(msg); + // msg.messageSendingOptions = { + // needReadReceipt: true, + // isShowNotification: true, + // isRetainOffline: true, + // isCustomNotificationEnabled: true, + // notificationTitle: msg.from.nickname, + // notificationText: '發來圖片', + // }; + // JMessage.sendMessage( + // msg, + // jmessage => { + // var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + // AuroraIController.updateMessage(auroraMsg); + // }, + // error => { + // Alert.alert(`send image fail ${JSON.stringify(error)}`); + // }, + // ); + // }); + // } else { + // // this.store.apartmentDataDoc.push( + // // this.saveAndroidImageHandler(response), + // // ); + // } + // }); + }; + + onSwitchToCameraMode = () => { + AuroraIController.scrollToBottom(true); + //AuroraIController.hidenFeatureView(true); + //this.takePhotoOrVideo = true; + + // Alert.alert( + // 'Take Video or Photo', + // 'Take Video or Photo', + // [ + // {text: 'Take Photo', onPress: () => this.takePhoto()}, + // {text: 'Take Video', onPress: () => this.takeVideo()}, + // {text: 'Cancel', onPress: () => console.log('cencel')}, + // ], + // {cancelable: false}, + // ); + //return; + // ImagePicker.openPicker({ + // includeBase64: false, + // writeTempFile: true, + // multiple: false, + // mediaType: 'video', + // cropping: false, + // }).then(image => { + // console.log(image); + // var response = image; + // if (Platform.OS === 'ios') { + // Alert.alert('messages', JSON.stringify(response)); + // var message = this.getNormalMessage(); + // message.messageType = 'file'; + // message.extras = {fileType: 'video'}; + // message.path = response.path.slice(7); + + // JMessage.createSendMessage(message, msg => { + // var auroraMsg = this.convertJMessageToAuroraMsg(msg); + // auroraMsg.status = 'send_going'; + // AuroraIController.appendMessages([auroraMsg]); + // AuroraIController.scrollToBottom(true); + // this.setMessageTarget(msg); + // console.log(msg); + // JMessage.sendMessage( + // msg, + // jmessage => { + // var auroraMsg = this.convertJMessageToAuroraMsg(jmessage); + // AuroraIController.updateMessage(auroraMsg); + // }, + // error => { + // Alert.alert(`send image fail ${JSON.stringify(error)}`); + // }, + // ); + // }); + // } else { + // // this.store.apartmentDataDoc.push( + // // this.saveAndroidImageHandler(response), + // // ); + // } + // }); + }; + + onShowKeyboard = keyboard_height => { + var inputViewHeight = keyboard_height + 86; + this.updateLayout({width: window.width, height: inputViewHeight}); + }; + + onSwitchToEmojiMode = () => { + AuroraIController.scrollToBottom(true); + }; + + onInitPress() { + console.log('on click init push'); + this.updateAction(); + } + + render() { + return ( + + {Platform.OS == 'ios' ? ( + + + + + + { + this.onSendCustomMessage(text, text, 0); + }} + onTakePicture={this.onTakePicture} + onStartRecordVoice={this.onStartRecordVoice} + onFinishRecordVoice={this.onFinishRecordVoice} + onCancelRecordVoice={this.onCancelRecordVoice} + onStartRecordVideo={this.onStartRecordVideo} + onFinishRecordVideo={this.onFinishRecordVideo} + onSendGalleryFiles={this.onSendGalleryFiles} + onSwitchToEmojiMode={this.onSwitchToEmojiMode} + onSwitchToMicrophoneMode={this.onSwitchToMicrophoneMode} + onSwitchToGalleryMode={this.onSwitchToGalleryMode} + onSwitchToCameraMode={this.onSwitchToCameraMode} + onShowKeyboard={this.onShowKeyboard} + onTouchEditText={this.onTouchEditText} + onFullScreen={this.onFullScreen} + onRecoverScreen={this.onRecoverScreen} + onSizeChange={this.onInputViewSizeChange} + /> + + ) : ( + + + + + + { + this.onSendCustomMessage(text, text, 0); + }} + onTakePicture={this.onTakePicture} + onStartRecordVoice={this.onStartRecordVoice} + onFinishRecordVoice={this.onFinishRecordVoice} + onCancelRecordVoice={this.onCancelRecordVoice} + onStartRecordVideo={this.onStartRecordVideo} + onFinishRecordVideo={this.onFinishRecordVideo} + onSendGalleryFiles={this.onSendGalleryFiles} + onSwitchToEmojiMode={this.onSwitchToEmojiMode} + onSwitchToMicrophoneMode={this.onSwitchToMicrophoneMode} + onSwitchToGalleryMode={this.onSwitchToGalleryMode} + onSwitchToCameraMode={this.onSwitchToCameraMode} + onShowKeyboard={this.onShowKeyboard} + onTouchEditText={this.onTouchEditText} + onFullScreen={this.onFullScreen} + onRecoverScreen={this.onRecoverScreen} + onSizeChange={this.onInputViewSizeChange} + /> + + )} + + { + this.selectPhotoOrVideo = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.selectPhotoOrVideo = false; + }}> + + + this.selectPhoto()}> + + + {'傳送相片'} + + + this.selectVideo()}> + + + {'傳送影片'} + + + + + + { + this.takePhotoOrVideo = false; + }} + // swipeDirection={['up', 'down']} // can be string or an array + // swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.takePhotoOrVideo = false; + }}> + + + this.takePhoto()}> + + + {'拍攝相片'} + + + this.takeVideo()}> + + + {'拍攝影片'} + + + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + inputView: { + backgroundColor: 'green', + width: window.width, + height: 100, + }, + btnStyle: { + marginTop: 10, + borderWidth: 1, + borderColor: '#3e83d7', + borderRadius: 8, + backgroundColor: '#3e83d7', + }, +}); diff --git a/src/pages/chat/imageDetails.js b/src/pages/chat/imageDetails.js new file mode 100644 index 0000000..56d6df3 --- /dev/null +++ b/src/pages/chat/imageDetails.js @@ -0,0 +1,201 @@ +import React, {Component} from 'react'; +import Video from 'react-native-video'; +import {View, Text, TouchableOpacity, StyleSheet, Image} from 'react-native'; +import { + createStackNavigator, + CardStyleInterpolators, +} from 'react-navigation-stack'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import JMessage from 'jmessage-react-plugin'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import LoadingView from '../../common/loading'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import ImageZoom from 'react-native-image-pan-zoom'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; +@inject('appStore') +@observer +export default class ImageDetails extends Component { + @observable + loading = false; + @observable + imageUri = ''; + @observable + data = this.props.navigation.state.params.data; + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + static navigationOptions = { + gesturesEnabled: false, + cardStyleInterpolator: props => + CardStyleInterpolators.forVerticalIOS(props), + }; + + renderIcon(items) { + return ( + + + + {items.title} + + + ); + } + componentWillMount() { + // if (this.props.navigation.state.params.data.messageType == 'image') { + // this.loading = true; + // JMessage.downloadOriginalImage( + // this.props.navigation.state.params.data, + // result => { + // var msgId = result.messageId; + // var imgPath = result.filePath; + // this.imageUri = imgPath; + // this.loading = false; + // //Alert.alert('onSendGalleryFiles', JSON.stringify(imgPath)); + // }, + // error => { + // var code = error.code; + // var desc = error.description; + // this.loading = false; + // }, + // ); + // } + } + + renderMain() { + if (this.props.navigation.state.params.data.messageType == 'image') { + return ( + + + + + + ); + } else { + console.log(this.props.navigation.state.params.data); + return ( + + + ); + } + } + render() { + const object = [ + {icon: 'building', title: this.store.text.addApartment}, + {icon: 'file-contract', title: this.store.text.addContract}, + ]; + return ( + + { + history.goBack(this), (this.loading = false); + }}> + + + + {this.renderMain()} + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, + backgroundVideo: { + width: width, + height: height-120, + backgroundColor:'black' + }, +}); diff --git a/src/pages/contract/contractData.js b/src/pages/contract/contractData.js new file mode 100755 index 0000000..99366ef --- /dev/null +++ b/src/pages/contract/contractData.js @@ -0,0 +1,1062 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Picker, + TextInput, + ScrollView, + Alert, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import {initialMode} from 'react-native-dark-mode'; +import ImagePicker from 'react-native-image-crop-picker'; +import BackHeader from '../../components/backHeader'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import {Avatar} from 'react-native-elements'; +import moment from 'moment'; +import {inject, observer} from 'mobx-react'; +import RNPickerSelect from 'react-native-picker-select'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +import {observable} from 'mobx'; +import CountryPicker, { + getAllCountries, +} from 'react-native-country-picker-modal'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import DateTimePicker from 'react-native-modal-datetime-picker'; + +import IconTextInput from '../../components/iconTextInput'; +import CommonTextInput from '../../components/commonTextInput'; +import {queryUser} from '../../services/realm/realmManger'; +import {width, height} from '../../common/screen'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../../common/size'; + +const size = new Size(); + +@inject('appStore') +@observer +export default class ContractData extends Component { + @observable + dialogInputVisable = false; + @observable + whichDatePicker = 0; + @observable + whichInput = 0; + @observable + apartmentData = {}; + @observable + contractData = { + apartmentid: '', + apartmentName: '', + ownerName: '', + ownerId: '', + ownerContactAddress: '', + ownerPhone: '', + tenantName: '', + tenantId: '', + tenantContactAddress: '', + tenantPhone: '', + apartmentAddress: '', + signContractDate: null, + endContractDate: null, + rent: 0, + rates: 0, + managementFee: 0, + deposit: 0, + remark: [], + }; + inputAction(action) { + switch (action) { + case 0: + this.dialogInputVisable = true; + break; + + case 1: + this.DatePickervisable = true; + break; + } + } + + constructor(props) { + super(props); + this.store = props.appStore; + this.apartmentData = this.props.navigation.state.params.apartmentData; + console.log(this.apartmentData); + this.init(); + } + + isDarkMode() { + if (initialMode === 'dark') { + this.drakMode = true; + } else { + this.drakMode = false; + } + } + + init() { + this.contractData.apartment = this.apartmentData.id; + this.contractData.apartmentName = this.apartmentData.name; + this.contractData.apartmentAddress = this.apartmentData.address; + this.contractData.signContractDate = moment( + this.apartmentData.signContractDate, + 'YYYY-MM-DD', + ).toDate(); + this.contractData.endContractDate = moment( + this.apartmentData.endContractDate, + 'YYYY-MM-DD', + ).toDate(); + this.contractData.rent = this.apartmentData.rent; + this.contractData.id = this.apartmentData.id; + this.contractData.ownerSignUri = this.dataReturn('ownerSignUri'); + this.contractData.tenantSignUri = this.dataReturn('tenantSignUri'); + this.contractData.ownersigndate = this.dataReturn('ownersigndate'); + this.contractData.tenantsigndate = this.dataReturn('tenantsigndate'); + console.log(this.apartmentData.signContractDate); + } + + dataReturn(select) { + switch (select) { + case 'ownerSignUri': + if (this.apartmentData.owner.hasOwnProperty('sign')) { + return this.apartmentData.owner.sign; + } else { + return ''; + } + break; + + case 'tenantSignUri': + // if(this.apartmentData.tenant.hasOwnProperty('sign')){ + + // return this.apartmentData.tenant.sign + // }else{ + return ''; + // } + break; + + case 'ownersigndate': + if (this.apartmentData.tenant.hasOwnProperty('signdate')) { + return this.apartmentData.owner.signdate; + } else { + return moment().format('DD-MM-YYYY'); + } + break; + + case 'tenantsigndate': + if (this.apartmentData.tenant.hasOwnProperty('signdate')) { + return this.apartmentData.tenant.signdate; + } else { + return ''; + } + break; + } + } + + componentWillMount() { + this.isDarkMode(); + } + + componentDidMount() {} + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + removeRemark(index) { + this.contractData.remark.splice(index, 1); + } + + whichDate() { + if (this.whichDatePicker === 0) { + return this.apartmentData.signContractDate; + } else { + return this.apartmentData.endContractDate; + } + } + + handleDatePicked = date => { + console.log('A date has been picked: ', date); + // this.hideDateTimePicker(); + + if (this.whichDatePicker === 0) { + this.apartmentData.signContractDate = date; + } else { + this.apartmentData.endContractDate = date; + } + this.DatePickervisable = false; + }; + + contractDatePicker(title, which, dateData) { + return ( + + {title} + + {this.dateStringHandler(dateData)} + + { + this.DatePickervisable = true; + this.whichDatePicker = which; + }} + /> + + ); + } + + async editAction() { + await this.store.saveEdit(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + + deleteAction() { + Alert.alert( + '', + 'Are you sure?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + this.deleteApartment(); + }, + }, + ], + {cancelable: false}, + ); + } + + async deleteApartment() { + await this.store.deleteApartment(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + whichNotificationIndex() { + if (this.whichNotificationPicker === 0) { + return this.apartmentData.rentNotification; + } else { + return this.apartmentData.endContractNotification; + } + } + notificationSelectAction(index) { + if (this.whichNotificationPicker === 0) { + console.log(index); + this.apartmentData.rentNotification = index; + } else { + this.apartmentData.endContractNotification = index; + } + } + + alertAction(msg) { + Alert.alert( + 'Error', + msg, + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + } + + renderButton() { + if (this.props.navigation.state.params.create) { + return ( + + { + this.nextAction(true); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.next} + + + + ); + } else { + return ( + + { + this.nextAction(false); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + { + this.deleteAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Delete + + + + ); + } + } + nextAction(nextOrEdit) { + let data = this.apartmentData; + if (data.name !== null) { + if (data.address !== null) { + if (data.signContractDate !== null) { + if (data.endContractDate !== null) { + if (data.rent !== null) { + if (nextOrEdit) { + history.push(this, '/uploadImage', {create: true}); + } else { + this.editAction(); + } + } else { + var msg = 'Please input ' + this.store.text.rent; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.contractExpiryDate; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.dateOfContract; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.address; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.apartment; + this.alertAction(msg); + } + } + + renderRemark() { + if (this.contractData.remark !== undefined) { + if (this.contractData.remark.length > 0) { + return this.contractData.remark.map((item, index) => { + return ( + + (this.contractData.remark[index] = text)} + placeholder={this.store.text.remark + '...'} + placeholderStyle={{fontFamily: Fonts.ubuntuL}} + placeholderTextColor={'gary'} + blurOnSubmit={false} + /> + { + this.removeRemark(index); + }} + /> + + ); + }); + } else { + return null; + } + } else { + return null; + } + } + + whichInputTextReturn(which) { + // if (which) { + // if (this.whichInput === 0) { + // return this.store.text.apartment + // } else if (this.whichInput === 1) { + // return this.store.text.address + // } else { + // return this.store.text.rent + // } + // } else { + // if (this.whichInput === 0) { + // return this.apartmentData.name + // } else if (this.whichInput === 1) { + // return this.apartmentData.address + // } else { + // return this.apartmentData.rent + // } + // } + + if (which) { + switch (this.whichInput) { + case 0: + return this.store.text.ownerName; + break; + + case 1: + return this.store.text.tenantName; + break; + + case 2: + return this.store.text.ownerPhone; + break; + + case 3: + return this.store.text.tenantPhone; + break; + + case 4: + return this.store.text.ownerId; + break; + + case 5: + return this.store.text.tenantId; + break; + + case 6: + return this.store.text.ownerContactAddress; + break; + + case 7: + return this.store.text.tenantContactAddress; + break; + + case 8: + return this.store.text.rent; + break; + + case 9: + return this.store.text.rates; + break; + + case 10: + return this.store.text.managementFee; + break; + + case 11: + return this.store.text.deposit; + break; + case 12: + this.contractData.address; + break; + } + } else { + switch (this.whichInput) { + case 0: + return this.contractData.ownerName; + break; + + case 1: + return this.contractData.tenantName; + break; + + case 2: + return this.contractData.ownerPhone; + break; + + case 3: + return this.contractData.tenantPhone; + break; + + case 4: + return this.contractData.ownerId; + break; + + case 5: + return this.contractData.tenantId; + break; + + case 6: + return this.contractData.ownerContactAddress; + break; + + case 7: + return this.contractData.tenantContactAddress; + break; + + case 8: + return this.contractData.rent; + break; + + case 9: + return this.contractData.rates; + break; + + case 10: + return this.contractData.managementFee; + break; + + case 11: + return this.contractData.deposit; + break; + case 12: + this.contractData.apartmentAddress; + break; + } + } + } + + whichDataToBeChange(value) { + switch (this.whichInput) { + case 0: + this.contractData.ownerName = value; + break; + + case 1: + this.contractData.tenantName = value; + break; + + case 2: + this.contractData.ownerPhone = value; + break; + + case 3: + this.contractData.tenantPhone = value; + break; + + case 4: + this.contractData.ownerId = value; + break; + + case 5: + this.contractData.tenantId = value; + break; + + case 6: + this.contractData.ownerContactAddress = value; + break; + + case 7: + this.contractData.tenantContactAddress = value; + break; + + case 8: + this.contractData.rent = value; + break; + + case 9: + this.contractData.rates = value; + break; + + case 10: + this.contractData.managementFee = value; + break; + + case 11: + this.contractData.deposit = value; + break; + case 12: + this.contractData.apartmentAddress = value; + break; + } + } + + avatarHander(which) { + if (which) { + ImagePicker.openCamera({ + includeBase64: true, + writeTempFile: false, + cropping: false, + }).then(image => { + console.log(image); + const response = image; + // history.push(this,'/cropImage',{response}) + this.apartmentData.avatar = response.path; + }); + } else { + ImagePicker.openPicker({ + includeBase64: true, + writeTempFile: false, + cropping: false, + }).then(image => { + console.log(image); + const response = image; + this.store.avatar = response.path; + }); + } + this.dialogPhotoVisable = false; + } + + showDatetimePicker() { + console.log('App started in', initialMode, 'mode'); + var color = 'white'; + if (initialMode === 'dark') { + color = 'black'; + } + if (this.DatePickervisable) { + return ( + + + + ); + } else { + return null; + } + } + + render() { + return ( + + + + + + (this.contractData.ownerName = text)} + type="input" + /> + (this.contractData.tenantName = text)} + /> + (this.contractData.ownerPhone = text)} + /> + (this.contractData.tenantPhone = text)} + /> + (this.contractData.ownerId = text)} + /> + (this.contractData.tenantId = text)} + /> + + (this.contractData.ownerContactAddress = text) + } + /> + + (this.contractData.tenantContactAddress = text) + } + /> + (this.contractData.apartmentAddress = text)} + /> + + { + this.inputAction(1); + this.whichDatePicker = 0; + }} + /> + { + this.inputAction(1); + this.whichDatePicker = 1; + }} + /> + (this.contractData.rent = text)} + /> + (this.contractData.rates = text)} + /> + (this.contractData.managementFee = text)} + /> + (this.contractData.deposit = text)} + /> + + + {this.store.text.remark} + + + {this.renderRemark()} + + { + this.contractData.remark.push(''); + }} + /> + + + { + this.DatePickervisable = false; + }} + /> + + + { + history.push(this, '/lease', { + contractData: this.contractData, + showSign: true, + }); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.next} + + + + + + { + this.dialogInputVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogInputVisable = false; + }}> + + + this.whichDataToBeChange(value)} + /> + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: width, + height: 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + picker: { + fontSize: 20, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'black', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + textView: { + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + fontSize: size.getSize(20), + fontWeight: 'bold', + }, +}); +const pickerSelectStyles = StyleSheet.create({ + inputIOS: { + fontSize: 16, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'gray', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + inputAndroid: { + fontSize: 16, + paddingHorizontal: 10, + paddingVertical: 8, + borderWidth: 0.5, + borderColor: 'black', + borderRadius: 8, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, +}); diff --git a/src/pages/contract/lease.js b/src/pages/contract/lease.js new file mode 100755 index 0000000..c65c261 --- /dev/null +++ b/src/pages/contract/lease.js @@ -0,0 +1,688 @@ +import React, { Component } from "react"; +import { + View, + Text, + StyleSheet, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking +} from "react-native"; +import { observable } from "mobx"; +var RNFS = require("react-native-fs"); +import BackHeader from '../../components/backHeader' +import { inject, observer } from "mobx-react"; +import NaviBar from "../../components/navi-bar"; +import HTML from "react-native-render-html"; +import RNHTMLtoPDF from "react-native-html-to-pdf"; +import { width, height } from "../../common/screen"; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from "../../assets/styles/fonts-theme"; +import LoadingView from "../../common/loading"; +import Toast, { DURATION } from "react-native-easy-toast"; +import Size from "../../common/size"; +import { date } from "serializr"; +const IMAGES_MAX_WIDTH = Dimensions.get("window").width - 50; +const CUSTOM_STYLES = {}; +const CUSTOM_RENDERERS = {}; +const size = new Size(); +const DEFAULT_PROPS = { + htmlStyles: CUSTOM_STYLES, + renderers: CUSTOM_RENDERERS, + imagesMaxWidth: IMAGES_MAX_WIDTH, + onLinkPress: (evt, href) => { + Linking.openURL(href); + }, + debug: true +}; +@inject("appStore") +@observer +export default class Lease extends Component { + @observable data = {}; + @observable signContractDate = null; + @observable contractExpiryDate = null; + @observable remarkString = ''; + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.contractData; + this.signContractDate = this.data.signContractDate; + this.contractExpiryDate = this.data.endContractDate; + this.renderRemark(); + } + + sign() { + var data = { + apartment: this.data.apartment, + ownerId: this.data.ownerId, + ownerName: this.data.ownerName, + ownerPhone: this.data.ownerPhone, + ownerContractAddress: this.data.ownerContactAddress, + tenantId: this.data.tenantId, + tenantName: this.data.tenantName, + tenantPhone: this.data.tenantPhone, + tenantContractAddress: this.data.tenantContactAddress, + rent: "" + this.data.rent, + rates: "" + this.data.rates, + managementFee: "" + this.data.managementFee, + deposit: "" + this.data.deposit, + address: this.data.apartmentAddress, + signContractDate: this.data.signContractDate, + endContractDate: this.data.endContractDate, + remark:this.data.remark + }; + if (this.store.loginUserData.data.member.chara == "tenant") { + this.store.tenantSign(this.data.id, this); + } else { + this.store.ownerCreateContract(data, this); + } + } + + + dateHandler(which) { + if (this.signContractDate !== null) { + switch (which) { + case 0: + return this.signContractDate.getDate(); + break; + case 1: + return "" + (this.signContractDate.getMonth() + 1); + break; + case 2: + return this.signContractDate.getFullYear(); + break; + case 3: + return this.contractExpiryDate.getDate(); + break; + case 4: + return "" + (this.contractExpiryDate.getMonth() + 1); + break; + case 5: + return this.contractExpiryDate.getFullYear(); + break; + case 6: + return ( + this.contractExpiryDate.getFullYear() - + this.signContractDate.getFullYear() + ); + break; + } + } + } + + test() { + return ( + ` + + + + + + +

物 業 租 賃 契 約

+ 出租人:` + + this.data.ownerName + + ` +
+ 身分證號碼: ` + + this.data.ownerId + + ` +
+ 通訊地址: ` + + this.data.ownerContactAddress + + ` +
+ 連絡電話: ` + + this.data.ownerPhone + + ` +
+
+ 承租人: ` + + this.data.tenantName + + ` +
+ 身分證號碼: ` + + this.data.tenantId + + ` +
+ 通訊地址: ` + + this.data.tenantContactAddress + + ` +
+ 連絡電話: ` + + this.data.tenantPhone + + ` +
+
+ 出租人與承租人因物業租賃事件,雙方同意簽訂「物業租賃契約」(以下稱“本契約”)並約定條款如下: +

第一條 物業所在地及使用範圍:

+ 承租人向出租人承租` + + this.data.apartmentAddress + + `,作為居住之用,不得逾此範圍或改作他用。不得在該物業內賭博及違反香港法例行為,更不可將地址作任何公共社團、劇院、舞院、手工業製品廠或其他商業性質等用途。 + +

第二條 租賃期間:

+ 租期自` + + this.dateHandler(2) + + `年` + + this.dateHandler(1) + + `月` + + this.dateHandler(0) + + `日起至` + + this.dateHandler(3) + + `年` + + this.dateHandler(4) + + `月` + + this.dateHandler(5) + + `日止,共計` + + this.dateHandler(6) + + ` 年。 + +

第三條 租金、按金及給付方式:

+ 該物業租金港幣$` + + this.data.rent.toString() + + `,(差餉港幣$` + + this.data.rates.toString() + + `)另大廈管理費每月港幣 $` + + this.data.managementFee.toString() + + `,承租人同意每月一號,將前述訂明之租金及大廈管理費用等,交給出租人。 + +
+ 該物業按金港幣` + + this.data.deposit.toString() + + `元整,以作為其履行本契約義務之擔保。承租人如在所訂承租期未滿前退租時,承租人自知中途毀約,自願放棄收回此項按金之權。承租人應於簽訂本契約時給付,承租人於租賃期滿交還該物產後,出租人應於扣除所積欠之債務(包括水電費、大樓管理費、該物業租金、大廈公共管理及任何非自然損壞的損毀費用等費用)後,承租人得憑原收據領回按金(不計利息)。 + +

第四條 使用物業之限制:

+ + 未經出租人同意,承租人不得將物業全部或部分轉租、出借、頂讓、或以其他變相方法由他人使用物業。 + +
+ + 承租人應遵守大廈公契內之條款、出租人與大廈管理公司訂下之條款、住戶規約及相關香港法例之規定,且不得供非法使用,或存放危險物品影響公共安全。 + +
+ + 承租人如擬在物業上為裝設及加工,並應由承租人自行負擔費用暨自負管理維護之責,且不得損害建築結構及影響其安全。 + +
+ + 承租人涼晒衣物只能於指定之晒衣架管圍內,如有損壞或丟去,出租人不負賠償責任。承租人未經出租人書面同意不得在該大廈任何地方標貼或懸掛、個人或團體之招牌,或具有宣傳性質之廣告,並不得在騎樓外裝置晒方架、花架、霓紅光管等,承租人倘不依約遵守,出租人得雇人拆除之,一切費用承租人必須負責。 + + +
+ + 該大廈任何公共地方,承租人不得佔用、存放傢具、貨品、雜物 等,該大廈之升降機專為利便承租人之用,未得該大廈管理處許可,不得用以載運傢俬、行李或危險品,惡臭等物。承租人不得在該大廈或該物業內養狗、可能騷擾其他承租人安寧之鳥類,或使人感到不安之動物。 + +
+ + 承租人不得收藏違禁政府法例之物品,舉凡軍械、火葯、磺硝、汽油及揮發性之化工原料,或有爆炸性之危險物品,均不許存放該物業之內外任何地方,倘經發覺,即報有關當局究辦。 + +
+ + 承租人不得有喧嘩或擾亂鄰居安寧之舉動,倘經別戶投訴,承租人仍宣擾如前,出租人有權限期承租人遷出。 + +
+ + 承租人倘因疏忽而致毀壞該物業之設備,或損及別戶之傢具衣物者,承租人須負賠責任。 + +
+ 承租人須自投買風災、水險、火險、盜竊、意外保險,承租人如有任何損失,出租人不負任何責任。 + +
+ 承租人不得拒絕出租人派遣之人員,在日間適當時間入屋檢視該物業近況或進行任何修理工程。 +

第五條 物業之修繕及責任:

+ 該物業一切門窗、廚房及浴室之設備,如︰水電、門窗、坐廁、水箱及、潔具水喉、水渠等如有損壞,承租人需負責修理或賠償,包括承租人自行裝設之設施,應由承租人自行修繕。 + +
+ 出租人應保持物業可供辦公使用之完好狀態,除因一般設備之維護、保養、消耗品以及承租人或承租人所指定之住用人之重大過失所導致損害之修繕應由承租人自費修繕外,因自然災害或天災地變等不可抗拒情形之修繕費用由出租人負擔。 + +
+ 承租人應以善良管理人之注意義務使用、管理、維護物業,如因承租人之故意、過失、或使用管理維護不當致物業毀損,應負損害賠償之責。 + +
+ 該物業內一切原來設備及間隔,承租人必須徵得出租人同意,方可更改或增減。並須在租賃期滿或租約終止,將該物產內衣竊原有設施以完好狀態交還出租人,如有任何損毀,承租人需負責修繕或賠償。 + +

第六條 稅費負擔

+ 政府之印花稅(釐印費)、登記費(如適用) 及律師費(如適用),均由承租人與除租人平均負擔;承租人租賃期間內大樓管理費、車位管理費、水電費、電話費、清潔費由承租人負擔,承租人並應遷守大樓住戶規約及相關辦法之規定按時支付或預付相關費用。 + +

第七條 特別終止事宜

+ 承租人遲付租金,出租人有權截斷水電,終止合約,無需經警署及法庭。出租人得將屋內雜物搬出另行出租,並保留採取法律行動,追討一切損失的權利。 + +
+ 租賃期間內,如該單位經政府收地,重建或清拆,火警,危樓以及一切非人力所為的天災人禍導致承租人不能在該單位居住,本契約即自動終止作廢,承租人需無條件搬出,出租人除將按金無息退回給承租人外,無需任何賠償與承租人。 + +
+ 若該物業因為結構出現問題,或因火災、風暴、水浸、白蟻、地震、地面下陷或天然的災禍,導致該物業不適宜居住時,承租人應有權停止繳付租金;若經過一段合理時間後,出租人仍未能把該物業修繕和恢復原狀,雙方均有權解除租約。 + +
+ 承租人有違反本約第四條或其他違反約定之方法使用物業者。 + +
+

第八條 合意終止:

+ 本契約租賃期間未滿,如無法定終止原因,出租人不得終止租約。 + +
+ 本契約租賃期間未滿,承租人擬終止房屋租約時,出租人有權扣除一個月按金,承租人如欲退租,須提早一個月用書面通知出租人,否則按原定租約時間計算租金。 + +
+

第九條 物業返還:

+ 本契約租賃期滿,雙方應另訂新的書面租賃契約,否則視為不再續租。承租人於租賃期滿或終止時,將物業遷讓交還,不得藉詞推諉或主張任何權利;承租人所有任何傢俱雜物等,若有留置不搬者,應視作廢棄物論,任憑出租人處理,承租人絕不異議。承租人未即時遷出返還物業時,出租人另得向承租人請求自終止租約或租賃期滿之翌日起至遷讓完竣日止按房屋日租金貳倍計算之違約金。 + +
+ 承租人於返還物業時依照當時使用之現況清掃乾淨後歸還。 + +
+

第十條 遺留物之處理:

+ 承租人遷出時,如遺留傢俱雜物不搬者,視為放棄。 + +

第十一條 送達地址之約定

+ 雙方相互間之通知,應以本契約上所載地址為準,其後如有變更應以書面通知他方。若有拒收送達不到或退件情形時,悉以第一次郵寄日期為合法送達日期,或由大廈管理處將文件標貼在易於發現之適當地點,則作為承租人已收受該通告文件。 + +

第十二條 未盡事宜

+ 本契約為雙方之全部合意,並取代之前任何經雙方直接或由轉述之口頭或書面承諾及協商,其修改應經雙方之同意。 + +
+ 本契約如有未盡事宜,依香港新樓租例、有關法令、習慣及誠實信用原則公平解決之。 + +

第十三條 其他特約事項

+ + 當合約屆期或中止前兩月,出租人在不干擾原則下,將招租通告貼於該業門前或通告板上, 承租人亦應准許持有出租人書面證明書之人士,在日間合理之時間內進入該物業視察。 + +

前述各條款均為立租賃契約人同意,恐口無憑,爰立本租賃契約書一式二份,各執一份存執,以昭信守。 +

+

備注

+ `+this.remarkString+` +
+
+ 出租人簽署: +
+ ownersignimage +
+ 承租人簽署: +
+ ownersignimage + + + ` + ); + } + + renderRemark(){ + this.remarkString = "" + this.data.remark.map((item,index)=>{ + console.log(item) + + this.remarkString = this.remarkString.concat(``+item+`

`); + console.log(this.remarkString ) + }) + return this.remarkString + + } + + async htmlToPdf() { + this.store.loading = true; + var dateNow = new Date(); + var dateString = + this.data.apartmentName + + "_" + + dateNow.getFullYear() + + "_" + + (dateNow.getMonth() + 1) + + "_" + + dateNow.getDate() + + "_" + + dateNow.getHours() + + dateNow.getMinutes() + + dateNow.getSeconds(); + let options = { + html: + ` + + + + + + +

物 業 租 賃 契 約

+ 出租人:` + + this.data.ownerName + + ` +
+ 身分證號碼: ` + + this.data.ownerId + + ` +
+ 通訊地址: ` + + this.data.ownerContactAddress + + ` +
+ 連絡電話: ` + + this.data.ownerPhone + + ` +
+
+ 承租人: ` + + this.data.tenantName + + ` +
+ 身分證號碼: ` + + this.data.tenantId + + ` +
+ 通訊地址: ` + + this.data.tenantContactAddress + + ` +
+ 連絡電話: ` + + this.data.tenantPhone + + ` +
+
+ 出租人與承租人因物業租賃事件,雙方同意簽訂「物業租賃契約」(以下稱“本契約”)並約定條款如下: +

第一條 物業所在地及使用範圍:

+ 承租人向出租人承租` + + this.data.apartmentAddress + + `,作為居住之用,不得逾此範圍或改作他用。不得在該物業內賭博及違反香港法例行為,更不可將地址作任何公共社團、劇院、舞院、手工業製品廠或其他商業性質等用途。 + +

第二條 租賃期間:

+ 租期自` + + this.dateHandler(2) + + `年` + + this.dateHandler(1) + + `月` + + this.dateHandler(0) + + `日起至` + + this.dateHandler(3) + + `年` + + this.dateHandler(4) + + `月` + + this.dateHandler(5) + + `日止,共計` + + this.dateHandler(6) + + ` 年。 + +

第三條 租金、按金及給付方式:

+ 該物業租金港幣$` + + this.data.rent.toString() + + `,(差餉港幣$` + + this.data.rates.toString() + + `)另大廈管理費每月港幣 $` + + this.data.managementFee.toString() + + `,承租人同意每月一號,將前述訂明之租金及大廈管理費用等,交給出租人。 + +
+ 該物業按金港幣` + + this.data.deposit.toString() + + `元整,以作為其履行本契約義務之擔保。承租人如在所訂承租期未滿前退租時,承租人自知中途毀約,自願放棄收回此項按金之權。承租人應於簽訂本契約時給付,承租人於租賃期滿交還該物產後,出租人應於扣除所積欠之債務(包括水電費、大樓管理費、該物業租金、大廈公共管理及任何非自然損壞的損毀費用等費用)後,承租人得憑原收據領回按金(不計利息)。 + +

第四條 使用物業之限制:

+ + 未經出租人同意,承租人不得將物業全部或部分轉租、出借、頂讓、或以其他變相方法由他人使用物業。 + +
+ + 承租人應遵守大廈公契內之條款、出租人與大廈管理公司訂下之條款、住戶規約及相關香港法例之規定,且不得供非法使用,或存放危險物品影響公共安全。 + +
+ + 承租人如擬在物業上為裝設及加工,並應由承租人自行負擔費用暨自負管理維護之責,且不得損害建築結構及影響其安全。 + +
+ + 承租人涼晒衣物只能於指定之晒衣架管圍內,如有損壞或丟去,出租人不負賠償責任。承租人未經出租人書面同意不得在該大廈任何地方標貼或懸掛、個人或團體之招牌,或具有宣傳性質之廣告,並不得在騎樓外裝置晒方架、花架、霓紅光管等,承租人倘不依約遵守,出租人得雇人拆除之,一切費用承租人必須負責。 + + +
+ + 該大廈任何公共地方,承租人不得佔用、存放傢具、貨品、雜物 等,該大廈之升降機專為利便承租人之用,未得該大廈管理處許可,不得用以載運傢俬、行李或危險品,惡臭等物。承租人不得在該大廈或該物業內養狗、可能騷擾其他承租人安寧之鳥類,或使人感到不安之動物。 + +
+ + 承租人不得收藏違禁政府法例之物品,舉凡軍械、火葯、磺硝、汽油及揮發性之化工原料,或有爆炸性之危險物品,均不許存放該物業之內外任何地方,倘經發覺,即報有關當局究辦。 + +
+ + 承租人不得有喧嘩或擾亂鄰居安寧之舉動,倘經別戶投訴,承租人仍宣擾如前,出租人有權限期承租人遷出。 + +
+ + 承租人倘因疏忽而致毀壞該物業之設備,或損及別戶之傢具衣物者,承租人須負賠責任。 + +
+ 承租人須自投買風災、水險、火險、盜竊、意外保險,承租人如有任何損失,出租人不負任何責任。 + +
+ 承租人不得拒絕出租人派遣之人員,在日間適當時間入屋檢視該物業近況或進行任何修理工程。 +

第五條 物業之修繕及責任:

+ 該物業一切門窗、廚房及浴室之設備,如︰水電、門窗、坐廁、水箱及、潔具水喉、水渠等如有損壞,承租人需負責修理或賠償,包括承租人自行裝設之設施,應由承租人自行修繕。 + +
+ 出租人應保持物業可供辦公使用之完好狀態,除因一般設備之維護、保養、消耗品以及承租人或承租人所指定之住用人之重大過失所導致損害之修繕應由承租人自費修繕外,因自然災害或天災地變等不可抗拒情形之修繕費用由出租人負擔。 + +
+ 承租人應以善良管理人之注意義務使用、管理、維護物業,如因承租人之故意、過失、或使用管理維護不當致物業毀損,應負損害賠償之責。 + +
+ 該物業內一切原來設備及間隔,承租人必須徵得出租人同意,方可更改或增減。並須在租賃期滿或租約終止,將該物產內衣竊原有設施以完好狀態交還出租人,如有任何損毀,承租人需負責修繕或賠償。 + +

第六條 稅費負擔

+ 政府之印花稅(釐印費)、登記費(如適用) 及律師費(如適用),均由承租人與除租人平均負擔;承租人租賃期間內大樓管理費、車位管理費、水電費、電話費、清潔費由承租人負擔,承租人並應遷守大樓住戶規約及相關辦法之規定按時支付或預付相關費用。 + +

第七條 特別終止事宜

+ 承租人遲付租金,出租人有權截斷水電,終止合約,無需經警署及法庭。出租人得將屋內雜物搬出另行出租,並保留採取法律行動,追討一切損失的權利。 + +
+ 租賃期間內,如該單位經政府收地,重建或清拆,火警,危樓以及一切非人力所為的天災人禍導致承租人不能在該單位居住,本契約即自動終止作廢,承租人需無條件搬出,出租人除將按金無息退回給承租人外,無需任何賠償與承租人。 + +
+ 若該物業因為結構出現問題,或因火災、風暴、水浸、白蟻、地震、地面下陷或天然的災禍,導致該物業不適宜居住時,承租人應有權停止繳付租金;若經過一段合理時間後,出租人仍未能把該物業修繕和恢復原狀,雙方均有權解除租約。 + +
+ 承租人有違反本約第四條或其他違反約定之方法使用物業者。 + +
+

第八條 合意終止:

+ 本契約租賃期間未滿,如無法定終止原因,出租人不得終止租約。 + +
+ 本契約租賃期間未滿,承租人擬終止房屋租約時,出租人有權扣除一個月按金,承租人如欲退租,須提早一個月用書面通知出租人,否則按原定租約時間計算租金。 + +
+

第九條 物業返還:

+ 本契約租賃期滿,雙方應另訂新的書面租賃契約,否則視為不再續租。承租人於租賃期滿或終止時,將物業遷讓交還,不得藉詞推諉或主張任何權利;承租人所有任何傢俱雜物等,若有留置不搬者,應視作廢棄物論,任憑出租人處理,承租人絕不異議。承租人未即時遷出返還物業時,出租人另得向承租人請求自終止租約或租賃期滿之翌日起至遷讓完竣日止按房屋日租金貳倍計算之違約金。 + +
+ 承租人於返還物業時依照當時使用之現況清掃乾淨後歸還。 + +
+

第十條 遺留物之處理:

+ 承租人遷出時,如遺留傢俱雜物不搬者,視為放棄。 + +

第十一條 送達地址之約定

+ 雙方相互間之通知,應以本契約上所載地址為準,其後如有變更應以書面通知他方。若有拒收送達不到或退件情形時,悉以第一次郵寄日期為合法送達日期,或由大廈管理處將文件標貼在易於發現之適當地點,則作為承租人已收受該通告文件。 + +

第十二條 未盡事宜

+ 本契約為雙方之全部合意,並取代之前任何經雙方直接或由轉述之口頭或書面承諾及協商,其修改應經雙方之同意。 + +
+ 本契約如有未盡事宜,依香港新樓租例、有關法令、習慣及誠實信用原則公平解決之。 + +

第十三條 其他特約事項

+ + 當合約屆期或中止前兩月,出租人在不干擾原則下,將招租通告貼於該業門前或通告板上, 承租人亦應准許持有出租人書面證明書之人士,在日間合理之時間內進入該物業視察。 + +

前述各條款均為立租賃契約人同意,恐口無憑,爰立本租賃契約書一式二份,各執一份存執,以昭信守。 +

+

備注

+ `+this.remarkString+` +
+
+ + 出租人簽署: +
+ ownersignimage +
+ 承租人簽署: +
+ ownersignimage + + + `, + fileName: dateString, + directory: "Documents", + width: 595, + height: 842, + base64: true + }; + + let file = await RNHTMLtoPDF.convert(options); + this.store.loading = false; + this.refs.toast.show("Export success! Please check your Files"); + + // console.log(file.filePath); + + console.log(file.filePath); + } + + renderSignButton(){ + if(this.data.signed){ + return( + + ) + }else{ + if(this.props.navigation.state.params.showSign){ + return( + { + this.sign(); + }} + > + Sign + + ) + }else{ + if(this.store.loginUserData.data.member.chara == 'tenant'){ + return( + { + this.sign(); + }} + > + Sign + + ) + }else{ + return( + + ) + } + } + } + } + + render() { + console.log(this.data); + return ( + + + + + {/* react-native-render-html + { this.examplesList } + { this.currentExample } */} + + + + {this.renderSignButton()} + + { + this.htmlToPdf(); + }} + > + Export + + + + + ); + } +} +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13) + }, + buttonText: { + color: "#fff" + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: "center", + alignItems: "center", + borderRadius: 10 + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: "white" + } +}); diff --git a/src/pages/contract/newContractData.js b/src/pages/contract/newContractData.js new file mode 100644 index 0000000..85fd921 --- /dev/null +++ b/src/pages/contract/newContractData.js @@ -0,0 +1,1998 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + TextInput, + ScrollView, + Alert, + FlatList, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import {initialMode} from 'react-native-dark-mode'; +import ImagePicker from 'react-native-image-crop-picker'; +import BackHeader from '../../components/backHeader'; +import Picker from 'react-native-picker-js'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import {Avatar} from 'react-native-elements'; +import moment from 'moment'; +import {inject, observer} from 'mobx-react'; +import RNPickerSelect from 'react-native-picker-select'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +import {observable} from 'mobx'; +import CountryPicker, { + getAllCountries, +} from 'react-native-country-picker-modal'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import DateTimePicker from 'react-native-modal-datetime-picker'; +import IconTextInput from '../../components/iconTextInput'; +import CommonTextInput from '../../components/commonTextInput'; +import {queryUser} from '../../services/realm/realmManger'; +import {width, height} from '../../common/screen'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../../common/size'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +const size = new Size(); +const whichChar = ['業主 Landlord', '租客 Tenant']; +// const formatter = new Intl.NumberFormat('en-US', { +// style: 'currency', +// currency: 'HKD', +// minimumFractionDigits: 0, +// }); + +@inject('appStore') +@observer +export default class ContractData extends Component { + @observable + addAppliancesVisable = false; + @observable + newAppliances = { + chineseName: '', + englishName: '', + value: 0, + }; + @observable + newKey = { + chineseName: '', + englishName: '', + value: 0, + }; + @observable + number1_12 = []; + @observable + number1_36 = []; + @observable + number1_90 = [0]; + + @observable + number1_28 = []; + + @observable + dialogInputVisable = false; + @observable + DatePickervisable = false; + @observable + addKeyVisable = false; + @observable + wheelSelectData = []; + @observable + wheelSelected = null; + @observable + whichDatePicker = 0; + @observable + whichInput = 0; + @observable + apartmentData = {}; + @observable + contractData = { + apartmentid: '', + leaseMonth: 12, + payRentDate: 28, + numberOfkey: 1, + rentFreePeriod: 0, + noteLeasebackMonth: 1, + monthOfpaymentInLieuOfNotice: 1, + atleastRentOfmonth: 1, + whoPayManagementFee: 'owner', + whoPayGovernemtRate: 'owner', + whoPayGovernmentRent: 'owner', + services: [], + key: [ + { + chineseName: '門匙', + englishName: 'Key', + value: 0, + }, + { + chineseName: '鐵閘匙', + englishName: 'Iron gate key', + value: 0, + }, + { + chineseName: '房門匙', + englishName: 'Door key', + value: 0, + }, + { + chineseName: '信箱匙', + englishName: 'Mailbox key', + value: 0, + }, + { + chineseName: '垃圾房匙', + englishName: 'Garbage room key', + value: 0, + }, + ], + appliances: [ + { + chineseName: '抽油煙機', + englishName: 'Range Hood', + value: 0, + }, + { + chineseName: ' 煮食爐', + englishName: 'Cooking Stove', + value: 0, + }, + { + chineseName: '微波爐', + englishName: 'Microwave', + value: 0, + }, + { + chineseName: '窗口式冷氣機', + englishName: 'Window Type Air Conditione', + value: 0, + }, + { + chineseName: '洗衣機', + englishName: 'Washing Machine', + value: 0, + }, + { + chineseName: '雪櫃', + englishName: 'Refrigerator', + value: 0, + }, + { + chineseName: '電視機', + englishName: 'Television', + value: 0, + }, + { + chineseName: '分體式冷氣機', + englishName: 'Split Type Air-Conditioner', + value: 0, + }, + { + chineseName: '抽氣扇', + englishName: 'Exhaust fan', + value: 0, + }, + { + chineseName: '熱水爐', + englishName: 'boiler', + value: 0, + }, + { + chineseName: '燈飾', + englishName: 'Lighting', + value: 0, + }, + { + chineseName: '窗簾', + englishName: 'curtain', + value: 0, + }, + { + chineseName: '組合櫃', + englishName: 'Cabinet', + value: 0, + }, + { + chineseName: '沙發', + englishName: 'sofa', + value: 0, + }, + { + chineseName: '衣櫃', + englishName: 'wardrobe', + value: 0, + }, + { + chineseName: '床', + englishName: 'bed', + value: 0, + }, + ], + ownerPaymentAc: '', + ownerName: '', + ownerId: '', + ownerPhone: '', + tenantName: '', + tenantId: '', + tenantContactAddress: '', + tenantPhone: '', + apartmentAddress: '', + signContractDate: null, + endContractDate: null, + rent: 0, + rates: 0, + managementFee: 0, + deposit: 0, + remark: [], + }; + + inputAction(action) { + switch (action) { + case 0: + this.dialogInputVisable = true; + break; + + case 1: + this.DatePickervisable = true; + break; + } + } + + constructor(props) { + super(props); + this.store = props.appStore; + this.apartmentData = this.props.navigation.state.params.apartmentData; + console.log(this.apartmentData); + this.init(); + } + + isDarkMode() { + if (initialMode === 'dark') { + this.drakMode = true; + } else { + this.drakMode = false; + } + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); + } + + init() { + this.contractData.signContractDate = moment().toDate(); + //this.number1_90.push(0); + for (var i = 0; i <= 90; i++) { + this.number1_90.push(i); + if (i > 0 && i <= 12) { + this.number1_12.push(i); + this.number1_28.push(i); + this.number1_36.push(i); + } else if (i > 0 && i <= 28) { + this.number1_28.push(i); + this.number1_36.push(i); + } else if (i > 0 && i <= 36) { + this.number1_36.push(i); + } else if (i > 0 && i <= 36) { + } + } + this.contractData.ownerPhone = this.apartmentData.owner.phone; + this.contractData.tenantPhone = this.apartmentData.tenant.phone; + this.contractData.rent = this.apartmentData.rent; + this.contractData.deposit = this.apartmentData.deposit; + this.contractData.leaseMonth = this.apartmentData.leaseMonth; + this.contractData.apartment = this.apartmentData.id; + this.contractData.apartmentName = this.apartmentData.name; + this.contractData.apartmentAddress = this.apartmentData.address; + + this.contractData.signContractDate = moment( + this.apartmentData.signContractDate, + 'YYYY-MM-DD', + ).toDate(); + this.contractData.endContractDate = moment( + this.apartmentData.endContractDate, + 'YYYY-MM-DD', + ).toDate(); + this.contractData.rent = this.apartmentData.rent; + this.contractData.id = this.apartmentData.id; + this.contractData.ownerSignUri = this.dataReturn('ownerSignUri'); + this.contractData.stamp = this.dataReturn('stamp'); + this.contractData.tenantSignUri = this.dataReturn('tenantSignUri'); + this.contractData.ownersigndate = this.dataReturn('ownersigndate'); + this.contractData.tenantsigndate = this.dataReturn('tenantsigndate'); + console.log(this.apartmentData.signContractDate); + } + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + + dataReturn(select) { + switch (select) { + case 'ownerSignUri': + if (this.apartmentData.owner.hasOwnProperty('sign')) { + return this.apartmentData.owner.sign; + } else { + return ''; + } + break; + + case 'stamp': + if (this.apartmentData.owner.hasOwnProperty('stamp')) { + return this.apartmentData.owner.stamp; + } else { + return ''; + } + break; + + case 'tenantSignUri': + if (this.apartmentData.tenant.hasOwnProperty('sign')) { + return ''; + } else { + return ''; + } + break; + + case 'ownersigndate': + if (this.apartmentData.tenant.hasOwnProperty('signdate')) { + return this.apartmentData.owner.signdate; + } else { + return moment().format('DD-MM-YYYY'); + } + break; + + case 'tenantsigndate': + if (this.apartmentData.tenant.hasOwnProperty('signdate')) { + return this.apartmentData.tenant.signdate; + } else { + return ''; + } + break; + } + } + + componentWillMount() { + this.isDarkMode(); + } + + componentDidMount() {} + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + removeRemark(index) { + this.contractData.remark.splice(index, 1); + } + + whichDate() { + if (this.whichDatePicker === 0) { + return this.apartmentData.signContractDate; + } else { + return this.apartmentData.endContractDate; + } + } + + handleDatePicked = date => { + this.DatePickervisable = false; + console.log('A date has been picked: ', date); + // this.hideDateTimePicker(); + var momentDate = moment(date); + momentDate = momentDate.second(0); + momentDate = momentDate.minute(0); + momentDate = momentDate.hour(12); + this.contractData.signContractDate = momentDate.toDate(); + }; + + contractDatePicker(title, which, dateData) { + return ( + + {title} + + {this.dateStringHandler(dateData)} + + { + this.DatePickervisable = true; + this.whichDatePicker = which; + }} + /> + + ); + } + + async editAction() { + await this.store.saveEdit(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + + deleteAction() { + Alert.alert( + '', + 'Are you sure?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + this.deleteApartment(); + }, + }, + ], + {cancelable: false}, + ); + } + + async deleteApartment() { + await this.store.deleteApartment(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + whichNotificationIndex() { + if (this.whichNotificationPicker === 0) { + return this.apartmentData.rentNotification; + } else { + return this.apartmentData.endContractNotification; + } + } + notificationSelectAction(index) { + if (this.whichNotificationPicker === 0) { + console.log(index); + this.apartmentData.rentNotification = index; + } else { + this.apartmentData.endContractNotification = index; + } + } + + alertAction(msg) { + Alert.alert( + 'Error', + msg, + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + } + + renderRemark() { + return this.contractData.remark.map((items, index) => { + return ( + + + + { + this.contractData.remark[index] = text; + }} + underlineColorAndroid="rgba(0,0,0,0)" + /> + + { + this.contractData.remark.splice(index, 1); + }}> + + + + + ); + }); + } + + renderButton() { + if (this.props.navigation.state.params.create) { + return ( + + { + this.nextAction(true); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.next} + + + + ); + } else { + return ( + + { + this.nextAction(false); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + { + this.deleteAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Delete + + + + ); + } + } + nextAction(nextOrEdit) { + let data = this.apartmentData; + if (data.name !== null) { + if (data.address !== null) { + if (data.signContractDate !== null) { + if (data.endContractDate !== null) { + if (data.rent !== null) { + if (nextOrEdit) { + history.push(this, '/uploadImage', {create: true}); + } else { + this.editAction(); + } + } else { + var msg = 'Please input ' + this.store.text.rent; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.contractExpiryDate; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.dateOfContract; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.address; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.apartment; + this.alertAction(msg); + } + } + + showDatetimePicker() { + console.log('App started in', initialMode, 'mode'); + var color = 'white'; + if (initialMode === 'dark') { + color = 'black'; + } + if (this.DatePickervisable) { + return ( + + + + ); + } else { + return null; + } + } + + async clickAction(action) { + switch (action) { + case 'contractDate': + this.DatePickervisable = true; + break; + case 'payDay': + this.wheelSelected = 'payDay'; + + break; + case 'rentFreePeriod': + this.wheelSelectData = []; + for (var i = 0; i <= 90; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'rentFreePeriod'; + this.picker.toggle(); + break; + case 'noteLeasebackMonth': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'noteLeasebackMonth'; + this.picker.toggle(); + break; + + case 'monthOfpaymentInLieuOfNotice': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'monthOfpaymentInLieuOfNotice'; + this.picker.toggle(); + break; + case 'atleastRentOfmonth': + this.wheelSelectData = []; + for (var i = 1; i <= 36; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'atleastRentOfmonth'; + this.picker.toggle(); + break; + case 'whoPayManagementFee': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + + this.wheelSelected = 'whoPayManagementFee'; + this.picker.toggle(); + break; + + case 'whoPayGovernemtRate': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernemtRate'; + this.picker.toggle(); + break; + case 'whoPayGovernmentRent': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernmentRent'; + this.picker.toggle(); + break; + } + } + + charSelectedHandler(char, which) { + if (which) { + if (char == 'owner') { + return '業主 Landlord'; + } else { + return '租客 Tenant'; + } + } else { + if (char == '業主 Landlord') { + return 'owner'; + } else { + return 'tenant'; + } + } + } + + appliancesSelecterColorsReturn(value, which) { + switch (which) { + case 'sub': + if (value == 0) { + return colors.line2Color; + } else { + return 'black'; + } + break; + case 'add': + if (value <= 19) { + return 'black'; + } else { + return colors.line2Color; + } + break; + case 'buttonBackground': + if (value > 0) { + return colors.mainColor; + } else { + return 'white'; + } + break; + } + } + + appliancesSelecterClickAction(index, which) { + if (which) { + if (this.contractData.appliances[index].value <= 19) { + this.contractData.appliances[index].value += 1; + } + } else { + if (this.contractData.appliances[index].value > 0) { + this.contractData.appliances[index].value -= 1; + } + } + } + + renderAppliancesItems() { + return this.contractData.appliances.map((items, index) => { + return ( + + + {index > 15 ? ( + { + this.contractData.appliances.splice(index, 1); + }}> + + + ) : ( + + )} + + {items.chineseName} + {items.englishName == '' ? ( + + ) : ( + {items.englishName} + )} + + + + + { + this.appliancesSelecterClickAction(index, false); + }}> + + - + + + + {items.value} + + { + this.appliancesSelecterClickAction(index, true); + }}> + + + + + + + + + ); + }); + } + + keySelecterClickAction(index, which) { + if (which) { + if (this.contractData.key[index].value <= 19) { + this.contractData.key[index].value += 1; + } + } else { + if (this.contractData.key[index].value > 0) { + this.contractData.key[index].value -= 1; + } + } + } + + renderKeyItems() { + return this.contractData.key.map((items, index) => { + return ( + + + {index > 4 ? ( + { + this.contractData.key.splice(index, 1); + }}> + + + ) : ( + + )} + + {items.chineseName} + {items.englishName == '' ? ( + + ) : ( + {items.englishName} + )} + + + + + { + this.keySelecterClickAction(index, false); + }}> + + - + + + + {items.value} + + { + this.keySelecterClickAction(index, true); + }}> + + + + + + + + + ); + }); + } + + wheelSelectAction(actin, value) { + switch (actin) { + case 'payDay': + this.contractData.payRentDate = value; + break; + case 'rentFreePeriod': + this.contractData.rentFreePeriod = value; + break; + case 'noteLeasebackMonth': + this.contractData.noteLeasebackMonth = value; + break; + case 'monthOfpaymentInLieuOfNotice': + this.contractData.monthOfpaymentInLieuOfNotice = value; + break; + case 'atleastRentOfmonth': + this.contractData.atleastRentOfmonth = value; + break; + case 'whoPayManagementFee': + this.contractData.whoPayManagementFee = this.charSelectedHandler( + value, + false, + ); + break; + case 'whoPayGovernemtRate': + this.contractData.whoPayGovernemtRate = this.charSelectedHandler( + value, + false, + ); + break; + case 'whoPayGovernmentRent': + this.contractData.whoPayGovernmentRent = this.charSelectedHandler( + value, + false, + ); + break; + } + } + + async selectServiceAction(serviceId, selected) { + if (selected) { + var data = {id: serviceId}; + this.contractData.services.push(data); + console.log(this.contractData.services); + } else { + var serviceIndex = await this.contractData.services.findIndex( + element => element.id == serviceId, + ); + this.contractData.services.splice(serviceIndex, 1); + console.log(this.contractData.services); + } + } + + renderService(items) { + //check-square + //square + if (items.status === 'A') { + return ( + + {items.select ? ( + { + this.selectServiceAction(items.id, !items.select); + items.select = !items.select; + }}> + + + ) : ( + { + this.selectServiceAction(items.id, !items.select); + items.select = !items.select; + }}> + + + )} + {items.name} + + {this.currencyFormat(items.price)} + + + ); + } + } + + renderList(which, action, title, content) { + if (which) { + return ( + { + this.clickAction(action); + }}> + {title} + + + + + {content} + + + + + + + + ); + } else { + return ; + } + } + + async selectWheelDataHandler(action) { + switch (action) { + case 'payDay': + this.wheelSelected = 'payDay'; + return this.number1_28; + break; + case 'rentFreePeriod': + this.wheelSelectData = []; + for (var i = 0; i <= 90; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'rentFreePeriod'; + this.picker.toggle(); + break; + case 'noteLeasebackMonth': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'noteLeasebackMonth'; + this.picker.toggle(); + break; + + case 'monthOfpaymentInLieuOfNotice': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'monthOfpaymentInLieuOfNotice'; + this.picker.toggle(); + break; + case 'atleastRentOfmonth': + this.wheelSelectData = []; + for (var i = 1; i <= 36; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'atleastRentOfmonth'; + this.picker.toggle(); + break; + case 'whoPayManagementFee': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + + this.wheelSelected = 'whoPayManagementFee'; + this.picker.toggle(); + break; + + case 'whoPayGovernemtRate': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernemtRate'; + this.picker.toggle(); + break; + case 'whoPayGovernmentRent': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernmentRent'; + this.picker.toggle(); + break; + } + } + + selectList(which, action, title, content, data) { + //this.clickAction(action); + this.wheelSelected = action; + if (which) { + return ( + + {title} + + { + // this.store.apartmentData.floor = value; + this.wheelSelectAction(action, value); + }}> + + + + {content} + + + + + + + + } + style={{height: 300}} + /> + + + + ); + } else { + return ; + } + } + + charList(which, action, title, content, data) { + //this.clickAction(action); + this.wheelSelected = action; + if (which) { + return ( + + {title} + + { + // this.store.apartmentData.floor = value; + this.wheelSelectAction(action, value); + }}> + + + + {content} + + + + + + + + } + /> + + + + ); + } else { + return ; + } + } + + completeClickAcion() { + console.log(this.contractData); + history.push(this, '/newLease', { + contractData: this.contractData, + showSign: true, + }); + } + + appliancesClickAction() { + this.addAppliancesVisable = false; + this.contractData.appliances.push(this.newAppliances); + } + + keyClickAction() { + this.addKeyVisable = false; + this.contractData.key.push(this.newKey); + } + + render() { + return ( + + + + {this.store.text.add + this.store.text.addContract} + + {this.renderBackIcon()} + + { + this.completeClickAcion(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.complete} + + + + + + {'基本資料'} + {'請選擇'} + {this.renderList( + true, + 'contractDate', + this.store.text.dateOfContract, + moment(this.contractData.signContractDate).format('DD/MM/YYYY'), + )} + {this.selectList( + true, + 'payDay', + '每月交租日', + this.contractData.payRentDate, + this.number1_28, + )} + + + + {this.store.text.rent} + + + + + + {'HKD ' + this.apartmentData.rent} + + + + + + + {this.store.text.deposit} + + + + + + {'HKD ' + this.apartmentData.deposit} + + + + + + + {this.store.text.lease} + + + + + + {this.apartmentData.leaseMonth + this.store.text.months} + + + + + {this.selectList( + true, + 'rentFreePeriod', + '租客免租期', + this.contractData.rentFreePeriod + '天', + this.number1_90, + )} + + {'(由' + + moment(this.contractData.signContractDate).format( + 'DD/MM/YYYY', + ) + + '至' + + moment(this.contractData.signContractDate) + .add(parseInt(this.contractData.rentFreePeriod), 'days') + .format('DD/MM/YYYY') + + ')'} + + + + + {'退租條款'} + {'請選擇'} + {this.selectList( + true, + 'noteLeasebackMonth', + '租客及業主可給予對方不少於' + + this.contractData.noteLeasebackMonth + + '個月的書面通知', + this.contractData.noteLeasebackMonth, + this.number1_12, + )} + {this.selectList( + true, + 'monthOfpaymentInLieuOfNotice', + this.contractData.monthOfpaymentInLieuOfNotice + + '個月租金作代通知金提早解除此租約', + this.contractData.monthOfpaymentInLieuOfNotice, + this.number1_12, + )} + {this.selectList( + true, + 'atleastRentOfmonth', + '唯此租約的終止日期不得早於由租期開始日計' + + this.contractData.atleastRentOfmonth + + '個月', + this.contractData.atleastRentOfmonth, + this.number1_12, + )} + + {'(即租客最少要租用該物業' + + this.contractData.atleastRentOfmonth + + '個月)'} + + + + + {'物業費用'} + {'請選擇費用會由哪方負責'} + {this.charList( + true, + 'whoPayManagementFee', + '管理費 Management Fee', + this.charSelectedHandler( + this.contractData.whoPayManagementFee, + true, + ), + whichChar + )} + {this.charList( + true, + 'whoPayGovernemtRate', + '差餉 Governament Rate', + this.charSelectedHandler( + this.contractData.whoPayGovernemtRate, + true, + ), + whichChar + )} + + {this.charList( + true, + 'whoPayGovernmentRent', + '地租 Government Rent', + this.charSelectedHandler( + this.contractData.whoPayGovernmentRent, + true, + ), + whichChar + )} + + + + + + {'電器及傢俬'} + + {'業主提供以下電器予租客使用'} + + + { + 'Landlord provides the foolowing applinaces for Tenant to use' + } + + + + { + this.addAppliancesVisable = true; + this.newKey = { + chineseName: '', + englishName: '', + value: 0, + }; + }}> + + + + + + {this.renderAppliancesItems()} + + + + + {'鎖匙'} + {'業主給予租客保管的鎖匙'} + + {'The key given to the tenant by the landlord for keeping'} + + + + { + this.addKeyVisable = true; + this.newAppliances = { + chineseName: '', + englishName: '', + value: 0, + }; + }}> + + + + + + {this.renderKeyItems()} + + + + {this.store.text.service} + {'請選擇'} + {this.store.serviceContent.map((items, index) => { + return this.renderService(items); + })} + + + + {'業主收租之銀行戶口'} + + + {'業主收租之銀行戶口'} + + {`Landlord's bank account for reeiving rent payment`} + + + { + this.contractData.ownerPaymentAc = text; + }} + underlineColorAndroid="rgba(0,0,0,0)" + /> + + { + this.contractData.ownerPaymentAc = ''; + }}> + + + + + + + + + + {'其它'} + + + { + this.contractData.remark.push(''); + }}> + + + + + + {this.renderRemark()} + + { + this.DatePickervisable = false; + }} + /> + { + this.addAppliancesVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.addAppliancesVisable = false; + }}> + + + { + this.clickAction(action); + }}> + {'電器名稱'} + + + + { + this.newAppliances.chineseName = text; + }} + underlineColorAndroid="rgba(0,0,0,0)" + /> + + + + { + this.appliancesClickAction(); + }}> + 確定 + + + + + { + this.addKeyVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.addKeyVisable = false; + }}> + + + { + this.clickAction(action); + }}> + {'鎖匙名稱'} + + + + { + this.newKey.chineseName = text; + }} + underlineColorAndroid="rgba(0,0,0,0)" + /> + + + + { + this.keyClickAction(); + }}> + 確定 + + + + + + {/* (this.picker = picker)} + style={{height: 260, backgroundColor: 'white'}} + pickerTitleStyle={{color: 'white'}} + pickerBtnStyle={{color: colors.mainColor, fontFamily: Fonts.ubuntu}} + pickerToolBarStyle={{backgroundColor: 'white'}} + showMask={true} + showDuration={300} + pickerData={this.wheelSelectData} + selectedValue={1} + onPickerDone={pickedValue => { + this.wheelSelectAction(pickedValue); + }} + /> */} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: width, + height: 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + inputTextView: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: 50, + }, + inputTextTitleView: { + fontFamily: Fonts.ubuntuL, + fontSize: 14, + color: colors.line2Color, + }, + title: { + fontFamily: Fonts.ubuntu, + fontSize: 17, + marginTop: 20, + }, + subtitle: { + fontFamily: Fonts.ubuntu, + fontSize: 14, + }, + buttonText: { + color: '#fff', + }, + picker: { + fontSize: 20, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'black', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + textView: { + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + fontSize: size.getSize(20), + fontWeight: 'bold', + }, +}); +const pickerSelectStyles = StyleSheet.create({ + inputIOS: { + fontSize: 16, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'gray', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + inputAndroid: { + fontSize: 16, + paddingHorizontal: 10, + paddingVertical: 8, + borderWidth: 0.5, + borderColor: 'black', + borderRadius: 8, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, +}); diff --git a/src/pages/contract/newLease.js b/src/pages/contract/newLease.js new file mode 100644 index 0000000..f969b6a --- /dev/null +++ b/src/pages/contract/newLease.js @@ -0,0 +1,1065 @@ +import React, {Component} from 'react'; +import { + View, + Text, + StyleSheet, + ScrollView, + TouchableHighlight, + TouchableOpacity, + PermissionsAndroid, + Dimensions, + Linking, + Image, + Alert, + Platform, +} from 'react-native'; +import {observable} from 'mobx'; +var RNFS = require('react-native-fs'); +import Share from 'react-native-share'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; +import ViewShot from 'react-native-view-shot'; +import history from '../../common/history'; +import RNImageToPdf from 'react-native-image-to-pdf'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import NaviBar from '../../components/navi-bar'; +var _ = require('lodash'); +import HTML from 'react-native-render-html'; +import RNHTMLtoPDF from 'react-native-html-to-pdf'; +import CameraRoll from '@react-native-community/cameraroll'; +import {width, height} from '../../common/screen'; +import {colors} from '../../assets/styles/colors-theme'; +import Swiper from 'react-native-swiper'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import RNFetchBlob from 'rn-fetch-blob'; +import LoadingView from '../../common/loading'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +import Size from '../../common/size'; +import {date} from 'serializr'; +import moment from 'moment'; +const IMAGES_MAX_WIDTH = Dimensions.get('window').width - 50; +const CUSTOM_STYLES = {}; +const {SlideInMenu} = renderers; +// const formatter = new Intl.NumberFormat('en-US', { +// style: 'currency', +// currency: 'HKD', +// minimumFractionDigits: 0, +// }); +const CUSTOM_RENDERERS = {}; +const size = new Size(); +const DEFAULT_PROPS = { + htmlStyles: CUSTOM_STYLES, + renderers: CUSTOM_RENDERERS, + imagesMaxWidth: IMAGES_MAX_WIDTH, + onLinkPress: (evt, href) => { + Linking.openURL(href); + }, + debug: true, +}; + +@inject('appStore') +@observer +export default class NewLease extends Component { + @observable data = {}; + @observable signContractDate = null; + @observable contractExpiryDate = null; + @observable remarkString = ''; + @observable saving = false; + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.contractData; + this.signContractDate = this.data.signContractDate; + this.contractExpiryDate = this.data.endContractDate; + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); + } + async hasAndroidPermission() { + const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE; + + const hasPermission = await PermissionsAndroid.check(permission); + if (hasPermission) { + return true; + } + + const status = await PermissionsAndroid.request(permission); + return status === 'granted'; + } + + getPermissionAndroid = async () => { + try { + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, + { + title: 'Image Download Permission', + message: 'Your permission is required to save images to your device', + buttonNegative: 'Cancel', + buttonPositive: 'OK', + }, + ); + if (granted === PermissionsAndroid.RESULTS.GRANTED) { + return true; + } + Alert.alert( + 'Save remote Image', + 'Grant Me Permission to save Image', + [{text: 'OK', onPress: () => console.log('OK Pressed')}], + {cancelable: false}, + ); + } catch (err) { + Alert.alert( + 'Save remote Image', + 'Failed to save Image: ' + err.message, + [{text: 'OK', onPress: () => console.log('OK Pressed')}], + {cancelable: false}, + ); + } + }; + + handleDownload = async uri => { + // if device is android you have to ensure you have permission + if (Platform.OS === 'android') { + const granted = await this.getPermissionAndroid(); + if (!granted) { + return; + } + } + this.saving = true; + RNFetchBlob.config({ + fileCache: true, + appendExt: 'png', + }) + .fetch('GET', uri) + .then(res => { + CameraRoll.saveToCameraRoll(res.data, 'photo') + .then(() => { + Alert.alert( + 'Save remote Image', + 'Image Saved Successfully', + [{text: 'OK', onPress: () => console.log('OK Pressed')}], + {cancelable: false}, + ); + }) + .catch(err => { + Alert.alert( + 'Save remote Image', + 'Failed to save Image: ' + err.message, + [{text: 'OK', onPress: () => console.log('OK Pressed')}], + {cancelable: false}, + ); + }) + .finally(() => this.setState({saving: false})); + }) + .catch(error => { + this.setState({saving: false}); + Alert.alert( + 'Save remote Image', + 'Failed to save Image: ' + error.message, + [{text: 'OK', onPress: () => console.log('OK Pressed')}], + {cancelable: false}, + ); + }); + }; + async sign(repay) { + console.log(repay); + var newAppliances = []; + var newKeys = []; + var newRemark = []; + var newService = []; + await this.data.appliances.map((items, index) => { + var data = { + chineseName: items.chineseName, + englishName: items.englishName, + value: items.value, + }; + newAppliances.push(data); + }); + await this.data.key.map((items, index) => { + var data = { + chineseName: items.chineseName, + englishName: items.englishName, + value: items.value, + }; + newKeys.push(data); + }); + await this.data.remark.map((items, index) => { + newRemark.push(items); + }); + + if (repay) { + await this.store.serviceContent.map((items, index) => { + if (items.select) { + newService.push(_.cloneDeep(items)); + } + }); + } else { + await this.data.services.map((items, index) => { + newService.push(_.cloneDeep(items)); + }); + } + console.log(this.data.apartment); + + var data = { + apartment: this.data.apartment, + ownerId: this.data.ownerId, + services: newService, + ownerName: this.data.ownerName, + payRentDate: this.data.payRentDate, + numberOfkey: this.data.numberOfkey, + rentFreePeriod: this.data.rentFreePeriod, + noteLeasebackMonth: this.data.noteLeasebackMonth, + monthOfpaymentInLieuOfNotice: this.data.monthOfpaymentInLieuOfNotice, + atleastRentOfmonth: this.data.atleastRentOfmonth, + whoPayManagementFee: this.data.whoPayManagementFee, + whoPayGovernemtRate: this.data.whoPayGovernemtRate, + whoPayGovernmentRent: this.data.whoPayGovernmentRent, + ownerPaymentAc: this.data.ownerPaymentAc, + ownerPhone: this.data.ownerPhone, + ownerContractAddress: this.data.ownerContactAddress, + tenantId: this.data.tenantId, + tenantName: this.data.tenantName, + tenantPhone: this.data.tenantPhone, + tenantContractAddress: this.data.tenantContactAddress, + rent: '' + this.data.rent, + rates: '' + this.data.rates, + managementFee: '' + this.data.managementFee, + leaseMonth: this.data.leaseMonth, + deposit: '' + this.data.deposit, + address: this.data.apartmentAddress, + signContractDate: this.data.signContractDate, + endContractDate: this.data.endContractDate, + remark: newRemark, + appliances: newAppliances, + key: newKeys, + }; + console.log(data); + if (this.store.loginUserData.data.member.chara == 'tenant') { + Alert.alert( + '', + '您在簽租約前,需要自行核實業主身份,如因此合約造成財物損失,我們恕不負責。所以我們建議您進行「土地查冊」,請尋找客服提出需要「土地查冊」服務。', + [ + {text: this.store.text.cancel, onPress: () => history.goBack(this)}, + { + text: this.store.text.signatureText, + onPress: async () => { + this.store.tenantSign(this.data.id, this); + }, + }, + ], + ); + } else { + if (this.data.services.length > 0) { + if (this.store.addedCard) { + history.push(this, '/servicePayment', {data: data, paid: repay}); + } else { + Alert.alert('', this.store.text.addcreditCardFirst, [ + { + text: this.store.text.cancel, + onPress: () => console.log('Cancel'), + }, + { + text: this.store.text.add, + onPress: () => { + history.push(this, '/card'); + }, + }, + ]); + } + } else { + this.store.ownerCreateContract(data, this, false); + } + + //this.store.ownerCreateContract(data, this); + } + console.log(JSON.stringify(data)); + } + + saveAsFunction(value) { + this.refs.viewShot.capture().then(uri => { + console.log('do something with ', uri); + console.log(value); + if (value === 2) { + if(Platform.OS == 'android'){ + uri = uri.replace('file://','') + } + this.myAsyncPDFFunction(uri); + } else if (value === 1) { + this.saveImage(uri); + } else if (value === 3) { + this.shareIt(uri); + } + }); + } + + async shareIt(uri) { + var data = [uri]; + try { + const options = { + imagePaths: data, + name: 'Contract' + moment().format('YYYYMMDDhhmmss'), + }; + const pdf = await RNImageToPdf.createPDFbyImages(options); + const shareOptions = { + title: this.data.apartment + '的租約', + url: pdf.filePath, + }; + + try { + const ShareResponse = await Share.open(shareOptions); + setResult(JSON.stringify(ShareResponse, null, 2)); + } catch (error) { + console.log('Error =>', error); + setResult('error: '.concat(getErrorString(error))); + } + } catch (e) { + console.log(e); + } + } + + dateHandler(which) { + if (this.signContractDate !== null) { + switch (which) { + case 0: + return this.signContractDate.getDate(); + break; + case 1: + return '' + (this.signContractDate.getMonth() + 1); + break; + case 2: + return this.signContractDate.getFullYear(); + break; + case 3: + return this.contractExpiryDate.getDate(); + break; + case 4: + return '' + (this.contractExpiryDate.getMonth() + 1); + break; + case 5: + return this.contractExpiryDate.getFullYear(); + break; + case 6: + return ( + this.contractExpiryDate.getFullYear() - + this.signContractDate.getFullYear() + ); + break; + } + } + } + + async saveImage(uri) { + if (Platform.OS === 'android') { + if (!(await this.hasAndroidPermission())) { + return; + } + + await CameraRoll.saveToCameraRoll(uri).then( + this.refs.toast.show('Saved, Photo added to camera roll.'), + ); + } else { + await CameraRoll.saveToCameraRoll(uri).then( + this.refs.toast.show('Saved, Photo added to camera roll.'), + ); + } + } + + async myAsyncPDFFunction(uri) { + var data = [uri]; + try { + const options = { + imagePaths: data, + name: 'Contract' + moment().format('YYYYMMDDhhmmss'), + }; + const pdf = await RNImageToPdf.createPDFbyImages(options); + console.log(pdf.filePath); + this.refs.toast.show('Saved'); + } catch (e) { + console.log(e); + } + } + + renderSignButton() { + console.log(this.data.signed); + console.log(this.props.navigation.state.params.showSign); + if (this.data.signed) { + return ; + } else { + if (this.props.navigation.state.params.showSign) { + return ( + { + this.sign(true); + }}> + {this.data.services.length > 0 ? ( + + {this.store.text.signandpay} + + ) : ( + + {this.store.text.signatureText} + + )} + + ); + } else { + if (this.store.loginUserData.data.member.chara == 'tenant') { + return ( + { + this.sign(true); + }}> + + {this.store.text.signatureText} + + + ); + } else { + if (this.data.servicePaymentStatus == 'Pending Payment') { + return ( + { + this.sign(false); + }}> + {this.store.text.pay} + + ); + } else { + return ; + } + } + } + } + } + + charSelectedHandler(char, which) { + if (which) { + if (char == 'owner') { + return '業主 Landlord'; + } else { + return '租客 Tenant'; + } + } else { + if (char == '業主 Landlord') { + return 'owner'; + } else { + return 'tenant'; + } + } + } + + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + numberToChinese(num) { + var chnNumChar = [ + '零', + '一', + '二', + '三', + '四', + '五', + '六', + '七', + '八', + '九', + ]; + var chnUnitChar = [ + '', + '十', + '百', + '千', + '萬', + '十', + '百', + '千', + '億', + '十', + '百', + '千', + ]; + var chnStr = ''; + var str = num.toString(); + while (str.length > 0) { + var tmpNum = chnNumChar[parseInt(str.substr(0, 1))]; + var tmpChar = chnUnitChar[str.length - 1]; + chnStr += chnStr.substr(-1, 1) == '零' && tmpNum == '零' ? '' : tmpNum; + if (tmpNum != '零') { + chnStr += tmpChar; + } + if (chnStr == '一十') { + chnStr = '十'; + } + str = str.substr(1); + if (parseInt(str) === 0) { + if (str.length >= 8) { + if (chnStr.substr(-1, 1) != '億') { + chnStr += '億'; + } + } else if (str.length >= 5) { + if (chnStr.substr(-1, 1) != '萬万') { + chnStr += '萬'; + } + } + str = ''; + } + } + return chnStr; + } + + renderContent() { + const content = [ + { + eng: `The Tenant shall pay to the Landlord the Rent in advance on the day of each and every calendar month during the Term. If the Tenant shall fail to pay the Rent within 7 days from the due date, the Landlord shall have right to institute appropriate action to recover the Rent and all costs, expenses and other outgoing so incurred by the Landlord in relation to such action shall be a debt owed by the Tenant to the Landlord and shall be recoverable in full by the Landlord.`, + ch: `租客須在租期內每個月份第 1 天上期繳付指定的租金予業主。倘租客於應繳租金之日的7天內仍未清付該租金,則業主有權採取適當行動追討租客所欠的租金而由此而引起的一切費用及開支將構成租客所欠業主的債項,業主將有權向租客一併追討所欠款項全數。`, + }, + { + eng: `The Tenant shall not make any alteration and / or additions to the Premises without the prior written consent of the Landlord, which consent shall not be unreasonably withheld.`, + ch: `租客在沒有業主書面同意前,不得對該物業作任何改動及/或加建,惟業主不得無理拒絕給予租客有關的同意書。`, + }, + { + eng: `The Tenant shall not assign, transfer, sublet or part with the possession of the Premises or any part thereof to any other person. This tenancy shall be personal to the Tenant named herein.`, + ch: `租客不得轉讓、轉租或分租該物業或其任何部分或將該物業或其任何部分的佔用權讓予任何其他人等。此租約權益將為租客個人擁有。`, + }, + { + eng: `The Tenant shall comply with all ordinances, regulations and rules of Hong Kong and shall observe and perform the covenants, terms and conditions of the Deed of Mutual Covenant and Sub-Deed of Mutual Covenant(if any)relating to the Premises. The Tenant shall not contravene any negative or restrictive covenants contained in the Government Lease(s) under which the Premises are held from the Government.`, + ch: `租客須遵守香港一干法律條例和規則及該物業所屬的大廈有關的公契內的條款。租客亦不可違反屬該物業地段內的官批地契上的任何制約性條款。`, + }, + { + eng: `The Tenant shall during the Term pay and discharge all charges in respect of water, electricity, gas and telephone and other similar charges payable in respect of the Premises.`, + ch: `租客須在租約期內清繳一切有關該物業的水費、電費、煤氣費、電話費及其他類似的雜費等。`, + }, + { + eng: `The Tenant shall during the Term keep the interior of the Premises in good and tenantable repair and condition (fair wear and tear and damage caused by inherent defects excepted) and shall deliver up vacant possession of the Premises in the same repair and condition on the expiration or sooner determination of this Agreement.`, + ch: `租客須在租約期內保持物業內部的維修狀態良好(自然損耗及因固有的缺陷所產生的損壞除外)並須於租約期滿或終止時將物業在同樣的維修狀態下交吉交回業主。`, + }, + { + eng: `The Tenant shall pay to the Landlord the Security Deposit set out in Schedule I for the due observance and performance of the terms and conditions herein contained and on his part to be observed and performed. Provided that there is no antecedent breach of any of the terms and conditions herein contained, the Landlord shall refund the Security Deposit to the Tenant without interest within 15 days from the date of delivery of vacant possession of the Premises to the Landlord or settlement of any outstanding payment owed by the Tenant to the Landlord, whichever is later. If the Rent and /or any charges payable by the Tenant hereunder or any part thereof shall be unpaid for seven (7) days after the same shall become payable (whether legally demanded or not) or if the Tenant shall commit a breach of any of the terms and conditions herein contained, it shall be lawful for the Landlord at any time thereafter to re-enter the Premises whereupon this Agreement shall absolutely terminate and the Landlord may deduct any loss or damage suffered by the Landlord as a result of the Tenant's breach from the Security Deposit without prejudice to any other right of action or any remedy of the Landlord in respect of such breach of the Tenant.`, + ch: `租客須交予業主保証金(金額如附表一所列)作為保証租客遵守及履行此租約上租客所需遵守及履行的條款的按金。若租客在租期內並無干犯此合約內任何條款,則業主須於收回交吉的物業或一切租客欠款後(以較遲者作準)十五天內無息退還該保証金予租客。但若租客拖欠根據此合約需要支付的租金及/或其他款項超過七天(無論有否以法律行動追討)或若租客違反此合約內任何條款,業主可合法收回該物業而此租約將立即被終止;業主可從保証金內扣除因租客違約而令業主所受的損失,而此項權利將不會影響業主因租客違約而可採取的其他合法行動的權利`, + }, + { + eng: `Provided the Tenant shall have paid the Rent and other outgoing on the days and in the manner herein provided and observe and perform the terms and conditions herein contained and on the Tenant's part to be observed and performed, the Tenant shall peacefully hold and enjoy the Premises during the Term without any interruption by the Landlord.`, + ch: `若租客按時清繳租金和雜費及沒有干犯此合約內任何條款,則業主不得在租約期內干擾租客享用該物業。`, + }, + { + eng: `The Landlord shall keep and maintain the structural parts of the Premises including the main drains, pipes and cables in proper state of repair Provided that the Landlord's liability shall not be incurred unless and until written notice of any defect or want of repair has been given by the Tenant to the Landlord and the Landlord shall have failed to take reasonable steps to repair and remedy the same after the lapse of a reasonable time from the date of service of such notice.`, + ch: `業主須保養及適當維修該物業內各主要結構部分(包括主要的排污渠、喉管和電線)。唯業主須在收到租客的書面要求後才會有責任在合理時限內將有關損壞維修妥當。`, + }, + { + eng: `The Landlord shall pay the Property tax payable in respect of the Premises.`, + ch: `業主負責繳付有關該物業的物業稅。`, + }, + { + eng: `The Stamp Duty payable on this Agreement in duplicate shall be borne by the landlord and the Tenant in equal shares.`, + ch: `業主及租客各負責屬此合約一式兩份的印花稅一半費用。`, + }, + { + eng: `The Landlord and the Tenant agree to be bound by the additional terms and conditions contained in ScheduleⅡ(if any).`, + ch: `業主及租客雙方同意遵守附表一內的附加條款(如有的話)。`, + }, + { + eng: `If there is any conflict between the English version and the Chinese version in this Agreement, the English version shall prevail.`, + ch: `此合約內的英文文本與中文文本存有差異時,將以英文文本為準。`, + }, + ]; + return content.map((items, index) => { + var num = index + 1; + return ( + + {num + '. ' + items.eng} + {items.ch} + + ); + }); + } + + renderappliances() { + return this.data.appliances.map((items, index) => { + return ( + + {items.value + ' ' + items.chineseName + items.englishName} + + ); + }); + } + renderkeys() { + console.log(this.data.key); + return this.data.key.map((items, index) => { + return ( + + {items.value + ' 條' + items.chineseName + items.englishName} + + ); + }); + } + + renderRemark() { + return this.data.remark.map((items, index) => { + var value = index + 1; + return {value + '- ' + items}; + }); + } + + render() { + console.log(this.data); + return ( + + + + + {this.store.text.addContract} + + { + console.log('back'); + history.goBack(this); + }}> + + + + + this.saveAsFunction(value)}> + + + + + + + {this.store.text.saveAsImage} + + + + + {this.store.text.saveAsPdf} + + + + + {'分享'} + + + + + + + + + + + + {'Tenancy Agreement'} + + + {'租約'} + + + + {`An Agreement made the ` + + moment(this.data.signContractDate).format('LL') + + ` between the Landlord and the Tenant as more particularly described in Schedule I.`} + + + {`此合約由業主及租客(雙方資料詳列於附表一)於` + + moment(this.data.signContractDate).year() + + `年` + + moment(this.data.signContractDate).format('MM') + + `月` + + moment(this.data.signContractDate).format('DD') + + `日訂立。`} + + {this.renderContent()} + + {`Received the Security Deposit of `} + + {this.currencyFormat(parseInt(this.data.deposit))} + + {` by the Landlord`} + + + {`業主收到租客所交的保証金港幣 `} + + {this.numberToChinese(parseInt(this.data.deposit))} + + {` 元正`} + + + {`Received ` + + this.data.numberOfkey + + ` key(s) of the Premises by the Tenant`} + + + {`租客接收業主所交屬該物業的鎖匙共` + + this.data.numberOfkey + + `條`} + + + + {'Schedule'} + + + {'附表 '} + + + + {'1.User用途'} + + + { + 'To use the property for the purpose stipulated in the tenancy agreement only.' + } + + {'物業只可作租約指定的用途。'} + + + {'2.Rent Free Period免租期'} + + + {`The Tenant shall be entitled to a rent free period from the ` + + moment(this.data.signContractDate).format('DD/MM/YYYY') + + ` to ` + + moment(this.data.signContractDate) + .add(parseInt(this.data.rentFreePeriod), 'days') + .format('DD/MM/YYYY') + + ` (both days inclusive) provided that the Tenant shall be responsible for the charges of, water, electricity, gas, telephone and other outgoings payable in respect of Premises during such rent free period.`} + + + {`租客可享有` + + this.data.rentFreePeriod + + `天免租期(由` + + moment(this.data.signContractDate).format('DD/MM/YYYY') + + `至` + + moment(this.data.signContractDate) + .add(parseInt(this.data.rentFreePeriod), 'days') + .format('DD/MM/YYYY') + + `)(包括首尾兩天)但租客仍需負責繳付免租期內一切水、電、煤電及電話費用及其他一切雜費支出。`} + + + + + {'3.Break Clause退租權'} + + + {`Notwithstanding anything to the contrary hereinbefore contained, both the Tenant and the Landlord shall be entitled to terminate this Agreement earlier than as herein provided by serving not less than ` + + this.data.noteLeasebackMonth + + ` months' written notice or by paying ` + + this.data.monthOfpaymentInLieuOfNotice + + ` months' Rent in lieu to the other party provided that this Agreement shall not be terminated earlier than a date which shall be ` + + this.data.atleastRentOfmonth + + ` months from the commencement date of the Term(i.e., the Tenant shall rent the Premises for at least ` + + this.data.atleastRentOfmonth + + ` months).`} + + + {`租客可給予業主不少於 ` + + this.data.noteLeasebackMonth + + ` 個月的書面通知或 ` + + this.data.monthOfpaymentInLieuOfNotice + + ` 個月租金作代通知金提早解除此租約;唯此租約的終止日期不得早於由租期開始日計 ` + + this.data.atleastRentOfmonth + + ` 個月(即租客最少要租用該 +物業 ` + + this.data.atleastRentOfmonth + + ` 個月)。`} + + + + + {`4. 業主或租客需負責下列費用 Landlord or Tenant shall be responsible for the following payments:`} + + + {`管理費Management Fee ` + + this.charSelectedHandler( + this.data.whoPayManagementFee, + true, + ) + + ` 負責responsible`} + + + {`差餉Government Rate ` + + this.charSelectedHandler( + this.data.whoPayGovernemtRate, + true, + ) + + ` 負責responsible`} + + + {`地租Government Rent ` + + this.charSelectedHandler( + this.data.whoPayGovernmentRent, + true, + ) + + ` 負責responsible`} + + + + + {`5.費用細節(如有):Fee Detail(If Any) :`} + + + {`業主提供以下電器予租客使用 Landlord provides the following appliances for Tenant to use:`} + + {this.renderappliances()} + + {`業主給予租客保管的鎖匙 The key given to the tenant by the landlord for keeping:`} + + {this.renderkeys()} + + + + {`6. 業主收租之銀行戶口 :` + this.data.ownerPaymentAc} + + + {`Landlord's bank account for receiving rent payment :` + + this.data.ownerPaymentAc} + + + + + {'7. 其他 Others:'} + + {this.renderRemark()} + + + + + {'業主簽署 Signed by the Landlord '} + + + {this.data.stamp != '' ? ( + + + {'公司印章 company chop '} + + + + ) : ( + + )} + + + + {'租客簽署 Signed by the Tenant '} + + + + + + + {this.renderSignButton()} + + + + + ); + } +} +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#9DD6EB', + }, + slide2: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#97CAE5', + }, + slide3: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#92BBD9', + }, + text: { + fontSize: 9, + fontFamily: Fonts.ubuntuL, + }, +}); diff --git a/src/pages/contract/representative/representativeContractData.js b/src/pages/contract/representative/representativeContractData.js new file mode 100644 index 0000000..7a1ad78 --- /dev/null +++ b/src/pages/contract/representative/representativeContractData.js @@ -0,0 +1,760 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + TextInput, + ScrollView, + Alert, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import {initialMode} from 'react-native-dark-mode'; +import ImagePicker from 'react-native-image-crop-picker'; +import BackHeader from '../../../components/backHeader'; +import Picker from 'react-native-picker-js'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../../assets/styles/colors-theme'; +import history from '../../../common/history'; +import NaviBar from '../../../components/navi-bar'; +import Migrations from '../../../services/realm/Mirgrations'; +import {Avatar} from 'react-native-elements'; +import moment from 'moment'; +import {inject, observer} from 'mobx-react'; +import RNPickerSelect from 'react-native-picker-select'; +import {Fonts} from '../../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +import {observable} from 'mobx'; +import CountryPicker, { + getAllCountries, +} from 'react-native-country-picker-modal'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import DateTimePicker from 'react-native-modal-datetime-picker'; +import IconTextInput from '../../../components/iconTextInput'; +import CommonTextInput from '../../../components/commonTextInput'; +import {queryUser} from '../../../services/realm/realmManger'; +import {width, height} from '../../../common/screen'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../../../common/size'; + +const size = new Size(); + +// const formatter = new Intl.NumberFormat('en-US', { +// style: 'currency', +// currency: 'HKD', +// minimumFractionDigits: 0, +// }); + +@inject('appStore') +@observer +export default class RepresentativeContractData extends Component { + @observable + addAppliancesVisable = false; + @observable + newAppliances = { + chineseName: '', + englishName: '', + value: 0, + }; + @observable + newKey = { + chineseName: '', + englishName: '', + value: 0, + }; + @observable + dialogInputVisable = false; + @observable + DatePickervisable = false; + @observable + addKeyVisable = false; + @observable + wheelSelectData = []; + @observable + wheelSelected = null; + @observable + whichDatePicker = 0; + @observable + whichInput = 0; + @observable + apartmentData = {}; + @observable + contractData = { + apartmentid: '', + apartmentAddress: '', + signPath: '', + representativeId: '', + representativeName: '', + signContractDate: null, + }; + + inputAction(action) { + switch (action) { + case 0: + this.dialogInputVisable = true; + break; + + case 1: + this.DatePickervisable = true; + break; + } + } + + constructor(props) { + super(props); + this.store = props.appStore; + this.apartmentData = this.props.navigation.state.params.apartmentData; + console.log(this.apartmentData); + this.init(); + } + + isDarkMode() { + if (initialMode === 'dark') { + this.drakMode = true; + } else { + this.drakMode = false; + } + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); + } + + init() { + this.contractData.signContractDate = moment().toDate(); + + this.contractData.apartmentAddress = this.apartmentData.address; + + // this.contractData.signContractDate = moment( + // this.apartmentData.signContractDate, + // 'YYYY-MM-DD', + // ).toDate(); + // this.contractData.endContractDate = moment( + // this.apartmentData.endContractDate, + // 'YYYY-MM-DD', + // ).toDate(); + + this.contractData.id = this.apartmentData.id; + } + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + + componentWillMount() { + this.isDarkMode(); + } + + componentDidMount() {} + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + removeRemark(index) { + this.contractData.remark.splice(index, 1); + } + + handleDatePicked = date => { + this.DatePickervisable = false; + console.log('A date has been picked: ', date); + // this.hideDateTimePicker(); + var momentDate = moment(date); + momentDate = momentDate.second(0); + momentDate = momentDate.minute(0); + momentDate = momentDate.hour(12); + this.contractData.signContractDate = momentDate.toDate(); + }; + + // contractDatePicker(title, which, dateData) { + // return ( + // + // {title} + // + // {this.dateStringHandler(dateData)} + // + // { + // this.DatePickervisable = true; + // this.whichDatePicker = which; + // }} + // /> + // + // ); + // } + + async editAction() { + await this.store.saveEdit(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + + deleteAction() { + Alert.alert( + '', + 'Are you sure?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + this.deleteApartment(); + }, + }, + ], + {cancelable: false}, + ); + } + + async deleteApartment() { + await this.store.deleteApartment(this.props.navigation.state.params.index); + await this.store.resetApartmentData(); + await this.store.getUser(); + history.goBack(this); + } + whichNotificationIndex() { + if (this.whichNotificationPicker === 0) { + return this.apartmentData.rentNotification; + } else { + return this.apartmentData.endContractNotification; + } + } + notificationSelectAction(index) { + if (this.whichNotificationPicker === 0) { + console.log(index); + this.apartmentData.rentNotification = index; + } else { + this.apartmentData.endContractNotification = index; + } + } + + alertAction(msg) { + Alert.alert( + 'Error', + msg, + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + } + + renderButton() { + if (this.props.navigation.state.params.create) { + return ( + + { + this.nextAction(true); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {this.store.text.next} + + + + ); + } else { + return ( + + { + this.nextAction(false); + }} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Save + + + { + this.deleteAction(); + }} + style={{ + marginTop: 10, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, + height: 60, + borderRadius: 10, + shadowColor: '#000', + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + Delete + + + + ); + } + } + nextAction(nextOrEdit) { + let data = this.apartmentData; + if (data.name !== null) { + if (data.address !== null) { + if (data.signContractDate !== null) { + if (data.endContractDate !== null) { + if (data.rent !== null) { + if (nextOrEdit) { + history.push(this, '/uploadImage', {create: true}); + } else { + this.editAction(); + } + } else { + var msg = 'Please input ' + this.store.text.rent; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.contractExpiryDate; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.dateOfContract; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.address; + this.alertAction(msg); + } + } else { + var msg = 'Please input ' + this.store.text.apartment; + this.alertAction(msg); + } + } + + showDatetimePicker() { + console.log('App started in', initialMode, 'mode'); + var color = 'white'; + if (initialMode === 'dark') { + color = 'black'; + } + if (this.DatePickervisable) { + return ( + + + + ); + } else { + return null; + } + } + + async clickAction(action) { + switch (action) { + case 'contractDate': + this.DatePickervisable = true; + break; + case 'payDay': + this.wheelSelectData = []; + for (var i = 1; i <= 28; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'payDay'; + this.picker.toggle(); + break; + case 'rentFreePeriod': + this.wheelSelectData = []; + for (var i = 0; i <= 90; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'rentFreePeriod'; + this.picker.toggle(); + break; + case 'noteLeasebackMonth': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'noteLeasebackMonth'; + this.picker.toggle(); + break; + + case 'monthOfpaymentInLieuOfNotice': + this.wheelSelectData = []; + for (var i = 1; i <= 12; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'monthOfpaymentInLieuOfNotice'; + this.picker.toggle(); + break; + case 'atleastRentOfmonth': + this.wheelSelectData = []; + for (var i = 1; i <= 36; i++) { + this.wheelSelectData.push(i); + } + this.wheelSelected = 'atleastRentOfmonth'; + this.picker.toggle(); + break; + case 'whoPayManagementFee': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + + this.wheelSelected = 'whoPayManagementFee'; + this.picker.toggle(); + break; + + case 'whoPayGovernemtRate': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernemtRate'; + this.picker.toggle(); + break; + case 'whoPayGovernmentRent': + this.wheelSelectData = ['業主 Landlord', '租客 Tenant']; + this.wheelSelected = 'whoPayGovernmentRent'; + this.picker.toggle(); + break; + } + } + + charSelectedHandler(char, which) { + if (which) { + if (char == 'owner') { + return '業主 Landlord'; + } else { + return '租客 Tenant'; + } + } else { + if (char == '業主 Landlord') { + return 'owner'; + } else { + return 'tenant'; + } + } + } + + appliancesSelecterColorsReturn(value, which) { + switch (which) { + case 'sub': + if (value == 0) { + return colors.line2Color; + } else { + return 'black'; + } + break; + case 'add': + if (value <= 19) { + return 'black'; + } else { + return colors.line2Color; + } + break; + case 'buttonBackground': + if (value > 0) { + return colors.mainColor; + } else { + return 'white'; + } + break; + } + } + + renderList(which, action, title, content) { + if (which) { + return ( + { + this.clickAction(action); + }}> + {title} + + + + + {content} + + + + + + + + ); + } else { + return ; + } + } + + completeClickAcion() { + console.log(this.contractData); + history.push(this, '/newLease', { + contractData: this.contractData, + showSign: true, + }); + } + + appliancesClickAction() { + this.addAppliancesVisable = false; + this.contractData.appliances.push(this.newAppliances); + } + + keyClickAction() { + this.addKeyVisable = false; + this.contractData.key.push(this.newKey); + } + + render() { + return ( + + + + {this.store.text.add + this.store.text.addContract} + + {this.renderBackIcon()} + + { + this.completeClickAcion(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.complete} + + + + + + {'基本資料'} + + {this.renderList( + true, + 'contractDate', + this.store.text.dateOfContract, + moment(this.contractData.signContractDate).format('DD/MM/YYYY'), + )} + + + + {this.store.text.representativeId} + + + + + + {this.apartmentData.leaseMonth + this.store.text.months} + + + + + + + { + this.DatePickervisable = false; + }} + /> + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: width, + height: 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + inputTextView: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: 50, + }, + inputTextTitleView: { + fontFamily: Fonts.ubuntuL, + fontSize: 14, + color: colors.line2Color, + }, + title: { + fontFamily: Fonts.ubuntu, + fontSize: 17, + marginTop: 20, + }, + subtitle: { + fontFamily: Fonts.ubuntu, + fontSize: 14, + }, + buttonText: { + color: '#fff', + }, + picker: { + fontSize: 20, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'black', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + textView: { + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + fontSize: size.getSize(20), + fontWeight: 'bold', + }, +}); +const pickerSelectStyles = StyleSheet.create({ + inputIOS: { + fontSize: 16, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'gray', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + inputAndroid: { + fontSize: 16, + paddingHorizontal: 10, + paddingVertical: 8, + borderWidth: 0.5, + borderColor: 'black', + borderRadius: 8, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, +}); diff --git a/src/pages/contract/selectApartment.js b/src/pages/contract/selectApartment.js new file mode 100755 index 0000000..b650969 --- /dev/null +++ b/src/pages/contract/selectApartment.js @@ -0,0 +1,180 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +@inject('appStore') +@observer +export default class SelectApartment extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + console.log(this.props.navigation.state.params.which); + } + + static navigationOptions = { + gesturesEnabled: false, + }; + + selectAction() {} + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + pushClickAction(items) { + console.log(this.props.navigation.state.params.which); + if (this.props.navigation.state.params.which == 'contract') { + history.push(this, '/selectContract', {apartmentData: items}); + } else { + if(items.hasOwnProperty('tenant')){ + history.push(this, '/problemCase', {apartmentData: items,type:'create',data:null}); + }else{ + this.refs.toast.show('Please Add Tenant') + } + } + } + + apartmentRender() { + return this.store.apartmentsData.map((items, index) => { + console.log(items); + return ( + { + this.pushClickAction(items); + }}> + + {this.list(this.store.text.apartment, items.name, colors.textColor)} + {this.list( + this.store.text.address, + items.address, + colors.textColor, + )} + {this.list( + this.store.text.rent, + 'HKD ' + items.rent, + colors.textColor, + )} + + + + ); + }); + } + + async clickAction(which) { + switch (which) { + case 0: + await history.goBack(this); + await history.push(this, '/apartmentDetails', {create: true}); + break; + } + } + + render() { + return ( + + + {this.apartmentRender()} + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/contract/selectContract.js b/src/pages/contract/selectContract.js new file mode 100755 index 0000000..61892a9 --- /dev/null +++ b/src/pages/contract/selectContract.js @@ -0,0 +1,235 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; +@inject('appStore') +@observer +export default class SelectContract extends Component { + @observable + contractData = null; + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + async componentWillMount() { + this.contractData = await this.store.checkContract( + this.props.navigation.state.params.apartmentData.id, + ); + console.log(this.contractData); + } + static navigationOptions = { + gesturesEnabled: false, + }; + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + apartmentRender() { + return this.store.apartmentsData.map((items, index) => { + console.log(items); + return ( + + + + 物業租賃契約 + + + + + ); + }); + } + + async clickAction(which) { + switch (which) { + case 0: + await history.goBack(this); + await history.push(this, '/apartmentDetails', {create: true}); + break; + } + } + + selectAction(index) { + switch (index) { + case 0: + if (this.contractData != null) { + if (this.store.loginUserData.data.member.chara == 'tenant') { + if (this.contractData.contracts.length > 0) { + history.push(this, '/selectContracts', { + contract: this.contractData, + }); + } else { + this.refs.toast.show('have no contract yet'); + } + } else { + if (this.contractData.contracts.length > 0) { + history.push(this, '/selectContracts', { + contract: this.contractData, + }); + } else { + if (this.contractData.hasOwnProperty('tenant')) { + //history.push(this,'/newContractData',{apartmentData:this.props.navigation.state.params.apartmentData}) + this.store.getService( + this, + this.props.navigation.state.params.apartmentData, + ); + } else { + this.refs.toast.show('Please add tenant first'); + } + } + } + } + break; + + case 1: + history.push(this, '/representativeContractData', { + apartmentData: this.props.navigation.state.params.apartmentData, + }); + break; + } + } + + renderContract() { + const contract = [ + '物業租賃契約', + '代他人簽署合約', + '終止租約協議書', + '業主收樓通知合約', + '租客退租書', + ]; + return contract.map((items, index) => { + return ( + { + this.selectAction(index); + }}> + + + {items} + + + + + ); + }); + } + + render() { + return ( + + + + {this.renderContract()} + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/contract/selectContracts.js b/src/pages/contract/selectContracts.js new file mode 100755 index 0000000..6e52c20 --- /dev/null +++ b/src/pages/contract/selectContracts.js @@ -0,0 +1,208 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import moment from 'moment'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +@inject('appStore') +@observer +export default class SelectContracts extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + static navigationOptions = { + gesturesEnabled: false, + }; + + selectAction() {} + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + clickAction(items) { + var apartmentdata = this.props.navigation.state.params.contract; + console.log(this.props.navigation.state.params.contract); + var data = { + payRentDate: items.payRentDate, + numberOfkey: items.numberOfkey, + leaseMonth: items.leaseMonth, + rentFreePeriod: items.rentFreePeriod, + noteLeasebackMonth: items.noteLeasebackMonth, + monthOfpaymentInLieuOfNotice: items.monthOfpaymentInLieuOfNotice, + atleastRentOfmonth: items.atleastRentOfmonth, + whoPayManagementFee: items.whoPayManagementFee, + whoPayGovernemtRate: items.whoPayGovernemtRate, + whoPayGovernmentRent: items.whoPayGovernmentRent, + ownerPaymentAc: items.ownerPaymentAc, + apartment: this.props.navigation.state.params.contract.id, + apartmentName: this.props.navigation.state.params.contract.name, + apartmentAddress: items.address, + ownerId: this.props.navigation.state.params.contract.owner.id, + ownerName: items.ownerName, + ownerPhone: items.ownerPhone, + ownerContactAddress: items.ownerContractAddress, + tenantName: items.tenantName, + tenantPhone: items.tenantPhone, + tenantContactAddress: items.tenantContractAddress, + signContractDate: moment(items.signContractDate, 'YYYY-MM-DD').toDate(), + endContractDate: moment(items.endContractDate, 'YYYY-MM-DD').toDate(), + rent: items.rent, + rates: items.rates, + deposit: items.deposit, + managementFee: items.managementFee, + id: items.id, + signed: items.signed, + appliances: items.appliances, + key: items.key, + remark: items.remark, + ownerSignUri: items.ownerSign, + stamp: this.stampImageReturn(items), + tenantSignUri: this.signImageReturn( + items, + this.props.navigation.state.params.contract, + ), + }; + + history.push(this, '/newLease', {contractData: data, showSign: false}); + } + + signImageReturn(items, apartmentdata) { + console.log(items.signed); + if (items.signed) { + return items.tenantSign; + } else { + return ''; + } + } + + stampImageReturn(items) { + if (items.hasOwnProperty('ownerStamp')) { + return items.ownerStamp; + } else { + return ''; + } + } + + apartmentRender() { + return this.props.navigation.state.params.contract.contracts.map( + (items, index) => { + console.log(items); + return ( + { + this.clickAction(items); + }}> + + {this.list('Contract ID', items.id, colors.textColor)} + {this.list( + 'Sign Contract Date', + items.signContractDate, + colors.textColor, + )} + {this.list('Signed', '' + items.signed, colors.textColor)} + + + + ); + }, + ); + } + + render() { + return ( + + + {this.apartmentRender()} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/contract/selectOtherContract.js b/src/pages/contract/selectOtherContract.js new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/contract/servicePayment.js b/src/pages/contract/servicePayment.js new file mode 100644 index 0000000..ba742cc --- /dev/null +++ b/src/pages/contract/servicePayment.js @@ -0,0 +1,337 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + TextInput, + ScrollView, + Alert, + Image, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import {initialMode} from 'react-native-dark-mode'; +import ImagePicker from 'react-native-image-crop-picker'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import LoadingView from '../../common/loading'; +import BackHeader from '../../components/backHeader'; +import Picker from 'react-native-picker-js'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import CheckAnimate from '../../common/checkAnimate'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import {Avatar} from 'react-native-elements'; +import moment from 'moment'; +import {inject, observer} from 'mobx-react'; +import RNPickerSelect from 'react-native-picker-select'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +import {observable} from 'mobx'; +import CountryPicker, { + getAllCountries, +} from 'react-native-country-picker-modal'; +import DateTimePicker from 'react-native-modal-datetime-picker'; +import IconTextInput from '../../components/iconTextInput'; +import CommonTextInput from '../../components/commonTextInput'; +import {queryUser} from '../../services/realm/realmManger'; +import {width, height} from '../../common/screen'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Size from '../../common/size'; + +const size = new Size(); +// const formatter = new Intl.NumberFormat('en-US', { +// style: 'currency', +// currency: 'HKD', +// minimumFractionDigits: 0, +// }); + +@inject('appStore') +@observer +export default class ServicePayment extends Component { + @observable + paymentseletion = [ + {label: 'Visa ' + this.store.creditCardinfo.num, value: 0}, + {label: 'Alipay', value: 1}, + ]; + + @observable + paid = this.props.navigation.state.params.paid; + @observable + data = this.props.navigation.state.params.data; + + @observable + paymentSelected = 0; + + constructor(props) { + super(props); + this.store = props.appStore; + } + componentDidMount() { + console.log(this.paid); + } + + alipayPayAsk(navigation) { + Alert.alert( + '', + '付款成功?', + [ + { + text: '還沒有', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '成功', + onPress: () => navigation.popToTop(), + }, + ], + {cancelable: false}, + ); + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,') + } + + renderPaymentSelection(items) { + return ( + (this.paymentSelected = items.value)}> + {items.value === this.paymentSelected ? ( + + ) : ( + + )} + + {items.label} + + + ); + } + + totalPrice() { + var totalPrice = 0; + this.data.services.map((items, index) => { + // if (items.select) { + console.log(items.price); + totalPrice += items.price; + // } + }); + return this.currencyFormat(totalPrice); + } + + render() { + return ( + + + + + + {this.data.services.map((items, index) => { + // if (items.select) { + return ( + + + + {items.name} + + + + + {this.this.currencyFormat(items.price)} + + + + ); + // } + })} + + + + + + {'Total: '} + + + + + {this.totalPrice()} + + + + + + {'付款方法'} + + {this.paymentseletion.map((items, index) => { + return this.renderPaymentSelection(items); + })} + + + + { + console.log(this.paid); + if (this.paid) { + this.store.ownerCreateContract( + this.data, + this, + true, + this.paymentSelected, + ); + } else { + this.store.payAgain( + this.data, + this, + true, + this.paymentSelected, + ); + } + }} + // onPress={() => { + // console.log(this.store.creditCardinfo.id); + // }} + style={{ + backgroundColor: colors.mainColor, + height: 28, + borderRadius: 5, + width: 250, + justifyContent: 'center', + alignItems: 'center', + marginTop: 20, + }}> + + {'確認付款'} + + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: width, + height: 60, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + inputTextView: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: 50, + }, + inputTextTitleView: { + fontFamily: Fonts.ubuntuL, + fontSize: 14, + color: colors.line2Color, + }, + title: { + fontFamily: Fonts.ubuntu, + fontSize: 17, + marginTop: 20, + }, + subtitle: { + fontFamily: Fonts.ubuntu, + fontSize: 14, + }, + buttonText: { + color: '#fff', + }, + picker: { + fontSize: 20, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'black', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + textView: { + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + fontSize: size.getSize(20), + fontWeight: 'bold', + }, +}); +const pickerSelectStyles = StyleSheet.create({ + inputIOS: { + fontSize: 16, + paddingVertical: 12, + paddingHorizontal: 10, + borderWidth: 1, + borderColor: 'gray', + borderRadius: 4, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, + inputAndroid: { + fontSize: 16, + paddingHorizontal: 10, + paddingVertical: 8, + borderWidth: 0.5, + borderColor: 'black', + borderRadius: 8, + color: 'black', + paddingRight: 30, // to ensure the text is never behind the icon + }, +}); diff --git a/src/pages/detail/detail.js b/src/pages/detail/detail.js new file mode 100755 index 0000000..00c102e --- /dev/null +++ b/src/pages/detail/detail.js @@ -0,0 +1,20 @@ +import React, { Component } from 'react' +import { View, Text } from 'react-native' +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; + +export default class Detail extends Component { + render() { + return ( + + + + Detail + + + ) + } +} \ No newline at end of file diff --git a/src/pages/help/helpSelect.js b/src/pages/help/helpSelect.js new file mode 100644 index 0000000..0d423f7 --- /dev/null +++ b/src/pages/help/helpSelect.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet, Image,FlatList,ScrollView } from "react-native"; +import FastImage from 'react-native-fast-image' +import Icon from "react-native-vector-icons/FontAwesome5"; +import BackHeader from '../../components/backHeader' +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import history from "../../common/history"; +import LoadingView from '../../common/loading'; +import NaviBar from "../../components/navi-bar"; +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import Migrations from "../../services/realm/Mirgrations"; +import { inject, observer } from "mobx-react"; +import { queryUser } from '../../services/realm/realmManger' +import Swiper from 'react-native-swiper' +import Global from '../../services/Global' +import { width, height } from "../../common/screen"; +import HTML from 'react-native-render-html'; +import AddFunction from '../../common/addFunction' +import { UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea } from '../../services/realm/schemeas' +import * as rssParser from 'react-native-rss-parser'; + +import Realm from 'realm' +import { observable } from "mobx"; +import { func } from "prop-types"; +let realm = new Realm({ schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea] }); +@inject("appStore") +@observer +export default class HelpSelect extends Component { + @observable + newsData = '' + + constructor(props) { + super(props); + this.store = props.appStore; + } + componentWillMount() { + + } + + renderButton(){ + let buttons = [{title:this.store.text.mediatorIntervention}, + {title:this.store.text.repairAssistance}, + // {title:this.store.text.rentOut}, + {title:this.store.text.appsProblem},] + + return( + + {buttons.map((items,index)=>{ + return( + {this.store.goToChat("Helper", this);}} + style={{ + marginTop: 50, + marginBottom: 20, + backgroundColor: colors.mainColor, + width: width - 60, height: 60, + borderRadius: 10, shadowColor: "#000", + justifyContent: 'center', + alignItems: 'center', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.23, + shadowRadius: 2.62, + + elevation: 4, + }}> + + {items.title} + + + ) + })} + + + ) + } + + + render() { + return ( + + + + {this.renderButton()} + + ); + } + + +} + + +const styles = StyleSheet.create({ + container: { + flex: 1, + + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: "#000000", + margin: 5, + padding: 5, + width: "70%", + backgroundColor: "#DDDDDD", + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: "#AAAAAA", + margin: 5, + padding: 5, + width: "70%" + }, + spacer: { + height: 10, + }, + title: { + fontWeight: "bold", + fontSize: 20, + textAlign: "center", + } +}); \ No newline at end of file diff --git a/src/pages/history/AlipayWebView.js b/src/pages/history/AlipayWebView.js new file mode 100755 index 0000000..f0c4b9c --- /dev/null +++ b/src/pages/history/AlipayWebView.js @@ -0,0 +1,109 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + Platform, +} from 'react-native'; +import {WebView} from 'react-native-webview'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {inject, observer} from 'mobx-react'; +import BackHeader from '../../components/backHeader'; +import LoadingView from '../../common/loading'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import HistoryList from './historyList'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +@inject('appStore') +@observer +export default class AlipayWebView extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount() { + this.store.getCase(); + } + + onWebViewMessage(event) { + console.log('Message received from webview'); + + let msgData; + try { + msgData = JSON.parse(event.nativeEvent.data); + console.log(msgData); + } catch (err) { + console.warn(err); + return; + } + } + + renderBackIcon() { + return ( + { + history.goBack(this); + this.props.navigation.state.params.alipayPayAsk( this.props.navigation); + this.store.getApartmentData(); + }}> + + + ); + } + + render() { + return ( + + + + {'支付寶'} + + {this.renderBackIcon()} + + + + + ); + } +} diff --git a/src/pages/history/history.js b/src/pages/history/history.js new file mode 100755 index 0000000..dbb67a2 --- /dev/null +++ b/src/pages/history/history.js @@ -0,0 +1,180 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + RefreshControl +} from 'react-native'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import HistoryList from '../history/historyList'; + +let data = [ + { + id: '34890', + apartmentName: 'sha tin house', + address: 'abc Village, Sha tin', + date: '1/9/2019', + apartmentId: '4545456', + owner: { + name: 'Herbert Chan', + email: 'herbert@nirons.com', + id: '432545435', + phone: '94341123', + countryCode: '852', + }, + tenant: { + name: 'Tom Chan', + email: 'Tom@nirons.com', + id: '432234435', + phone: '56781234', + countryCode: '852', + }, + status: 'Processing', + problem: '業主發現租客令門鎖不能使用', + log: [ + { + date: '1/9/2019', + msg: + '業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用業主發現租客令門鎖不能使用', + }, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + ], + cost: 100, + payment: 'Completed', + }, + { + id: '13456', + apartmentName: '大圍村屋', + address: 'yoho, yuen long', + date: '1/9/2019', + apartmentId: '4543256', + owner: { + name: 'Herbert Chan', + email: 'herbert@nirons.com', + id: '432545435', + phone: '94341123', + countryCode: '852', + }, + tenant: { + name: 'Tom Chan', + email: 'Tom@nirons.com', + id: '432234435', + phone: '56781234', + countryCode: '852', + }, + status: 'Pending Payment', + problem: '電視壞了', + log: [{date: '1/9/2019', msg: '電視壞了'}], + cost: 1000, + payment: 'Pending Payment', + }, + { + id: '34890', + apartmentName: 'yo ho', + address: 'sun tin village, tai wai', + date: '1/9/2019', + apartmentId: '4545491', + owner: { + name: 'Herbert Chan', + email: 'herbert@nirons.com', + id: '432545435', + phone: '94341123', + countryCode: '852', + }, + tenant: { + name: 'Tom Chan', + email: 'Tom@nirons.com', + id: '432234435', + phone: '56781234', + countryCode: '852', + }, + status: 'Completed', //如果未俾錢就"Pending Payment" 俾左錢就係"Processing" 完成就係"Completed" 取消"cancel" + problem: '業主希望加租', + log: [ + {date: '1/9/2019', msg: '業主希望加租'}, + {date: '1/9/2019', msg: '與租客溝通中'}, + {date: '1/9/2019', msg: '租客願意'}, + ], + cost: 500, //cs can set the cost + payment: 'N/A', //個case唔洗俾錢就係N/A //未俾就係'Pending Payment' //俾左就係'Completed' + }, +]; +@inject('appStore') +@observer +export default class History extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount() { + this.store.getCase(); + } + + render() { + return ( + + { + if (this.store.logined) { + this.store.gotohelperChat(this); + } + }} + /> + + this.store.getCase()} + /> + }> + ( + { + history.push(this, '/problemCase', { + apartmentData: item.apartment, + type: 'edit', + data: item, + }); + }} + /> + )} + keyExtractor={item => item.id} + /> + + + ); + } +} diff --git a/src/pages/history/historyDetails.js b/src/pages/history/historyDetails.js new file mode 100644 index 0000000..4fd769f --- /dev/null +++ b/src/pages/history/historyDetails.js @@ -0,0 +1,541 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet, ScrollView, Image, Share, Alert } from "react-native"; +import FastImage from 'react-native-fast-image' +import Icon from "react-native-vector-icons/FontAwesome5"; +import StepIndicator from 'react-native-step-indicator' +import Modal, { ModalContent } from 'react-native-modals'; +import Switch from 'react-native-switch-pro'; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import Realm from 'realm' +import moment from "moment" +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import LoadingView from '../../common/loading'; +import history from "../../common/history"; +import NaviBar from "../../components/navi-bar"; +import Migrations from "../../services/realm/Mirgrations"; +import BackHeader from '../../components/backHeader' +import { inject, observer } from "mobx-react"; +import { observable } from 'mobx' +import { queryUser } from "../../services/realm/realmManger"; +import AsyncStorageHelper from '../../common/asyncStorageHelper' +import ImagePicker from 'react-native-image-crop-picker'; +import { UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea } from '../../services/realm/schemeas' +import { width, height } from "../../common/screen"; +const asyncStorageHelper = new AsyncStorageHelper; + +let realm = new Realm({ schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea] }); +const secondIndicatorStyles = { + stepIndicatorSize: 30, + currentStepIndicatorSize: 40, + separatorStrokeWidth: 2, + currentStepStrokeWidth: 3, + stepStrokeCurrentColor: colors.mainColor, + stepStrokeWidth: 3, + separatorStrokeFinishedWidth: 4, + stepStrokeFinishedColor: colors.mainColor, + stepStrokeUnFinishedColor: '#aaaaaa', + separatorFinishedColor: colors.mainColor, + separatorUnFinishedColor: '#aaaaaa', + stepIndicatorFinishedColor: colors.mainColor, + stepIndicatorUnFinishedColor: '#ffffff', + stepIndicatorCurrentColor: '#ffffff', + stepIndicatorLabelFontSize: 13, + currentStepIndicatorLabelFontSize: 13, + stepIndicatorLabelCurrentColor: colors.mainColor, + stepIndicatorLabelFinishedColor: '#ffffff', + stepIndicatorLabelUnFinishedColor: '#aaaaaa', + labelColor: '#999999', + labelSize: 13, + currentStepLabelColor: colors.mainColor +} + +const getStepIndicatorIconConfig = ({ position, stepStatus }) => { + const iconConfig = { + name: 'feed', + color: stepStatus === 'finished' ? '#ffffff' : colors.mainColor, + size: 15 + } + switch (position) { + case 0: { + iconConfig.name = 'cart-arrow-down' + break + } + case 1: { + iconConfig.name = 'wrench' + break + } + case 2: { + iconConfig.name = 'check' + break + } + + default: { + break + } + } + return iconConfig +} + +@inject("appStore") +@observer +export default class HistoryDetails extends Component { + + @observable + data = null + + @observable + status = 0 + + @observable + paymentVisable = false + + @observable + serviceInfoVisable = true + + @observable + ownerInfoVisable = false + + @observable + tenantInfoVisable = false + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.historyData + } + + dateHandler(date){ + return moment(date).format('L'); + } + + dateHandlerTime(date){ + return moment(date).format('L, hh:mm'); + } + + componentDidMount() { + this.getStatus() + } + + getStatus() { + switch (this.data.status) { + case 'Pending Payment': + this.status = 0 + break; + case 'Processing': + this.status = 1 + break; + case 'Completed': + this.status = 2 + break; + } + } + + logList(item) { + console.log(item) + return ( + + + {this.dateHandlerTime(item.createDate)} + + + {item.remark} + + + ) + } + + renderStepIndicator = params => ( + + ) + + dateStringHandler(date) { + if (date === null) { + return ""; + } else { + return ( + date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear() + ); + } + } + + renderServiceInfo() { + if (this.serviceInfoVisable) { + return ( + + + {'ID: ' + this.data.id} + + + {'Date: ' + this.dateHandler(this.data.date)} + + + {'Apartment Name: ' + this.data.apartment.name} + + + {'Address: ' + this.data.apartment.address} + + + {'Problems: ' + this.data.description} + + + + {'Service cost: ' + 'HKD ' + this.data.cost} + + + ) + } else { + return null + } + + } + + renderOwnerInfo() { + if (this.ownerInfoVisable) { + return ( + + + {'Owner: ' + this.data.apartment.owner.fullname} + + + {'Owner Phone Number: ' + "+" + this.data.apartment.owner.countryCode + " " + this.data.apartment.owner.phone} + + + ) + } else { + return null + } + + } + + renderTenantInfo() { + if (this.tenantInfoVisable) { + return ( + + + {'Tenant: ' + this.data.apartment.tenant.fullname} + + + {'Tenant Phone Number: ' + "+" + this.data.apartment.tenant.countryCode + " " + this.data.apartment.tenant.phone} + + + + ) + } else { + return null + } + + } + + + + upDownContorl(index) { + switch (index) { + case 0: + if (this.serviceInfoVisable) { + return 'caret-up' + } else { + return 'caret-down' + } + break; + + case 1: + if (this.ownerInfoVisable) { + return 'caret-up' + } else { + return 'caret-down' + } + break; + + case 2: + if (this.tenantInfoVisable) { + return 'caret-up' + } else { + return 'caret-down' + } + break; + } + } + + renderPayBar(){ + if (this.data.cost == 0){ + return( + null + ) + }else{ + return( +{this.paymentVisable = true}} +style = {{flexDirection:'row', width:width, height:50,backgroundColor:colors.mainColor,justifyContent:'space-between',alignItems:'center'}}> + + {'HKD '+this.data.cost} + + + {'Pay'} + + + ) + } + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ) + } + + async getUserApartmentData() { + let user = queryUser(); + return user + } + + + render() { + console.log(this.store.image) + var data = this.store.apartmentData + return ( + + + + + + + + + + + + + + Information + + + + { this.serviceInfoVisable = !this.serviceInfoVisable }}> + + Service Info + + + + + + {this.renderServiceInfo()} + + { this.ownerInfoVisable = !this.ownerInfoVisable }}> + + Owner Info + + + + + + {this.renderOwnerInfo()} + { this.tenantInfoVisable = !this.tenantInfoVisable }}> + + Tenant Info + + + + + + {this.renderTenantInfo()} + + + + Log + + + + + + {this.data.log.map((items, index) => { + return this.logList(items) + })} + + + + + + + + {this.renderPayBar()} + { + this.paymentVisable = false; + }} + swipeDirection={["up", "down"]} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.paymentVisable = false; + }} + > + + + { + this.store.alipayment(this.data.id,this.data.cost,this) + this.paymentVisable = false; + }} + > + + + {'Alipay'} + + + { + history.push(this, "/uploadImage", { + index: this.index, + create: false + }); + this.docVisable = false; + }} + > + + + {'Credit Card'} + + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + + titleView: { + marginRight: 5, marginLeft: 5, marginTop: 10, width: scale(265) + }, + + titieStyle: { + fontSize: 20, + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + + }, + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: "center", + justifyContent: "center", + backgroundColor: colors.statusBarColor + }, + buttonText: { + color: "#fff" + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + + }, + + shadowView: { + width: scale(280), + height: verticalScale(500), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.20, + shadowRadius: 1.41, + + elevation: 2, + }, + + subTitle: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.mainColor, + fontSize: 15, + fontFamily: Fonts.ubuntu, + }, + + text: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.textColor, + fontSize: 14, + fontFamily: Fonts.ubuntu, + }, + stepIndicator: { + marginVertical: 50 + }, +}); diff --git a/src/pages/history/historyList.js b/src/pages/history/historyList.js new file mode 100755 index 0000000..188a61b --- /dev/null +++ b/src/pages/history/historyList.js @@ -0,0 +1,169 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import moment from 'moment'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +@inject('appStore') +@observer +export default class HistoryList extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + payment(value) { + if (value === 'Pending Payment') { + return ( + + + {'Payment: '} + + {value} + + + + ); + } else { + return {'Payment: ' + value}; + } + } + + stateChangeLangHandler(value) { + switch (value) { + case 'Processing': + return this.store.text.process; + break; + case 'Completed': + return this.store.text.closeFile; + break; + case 'Pending Payment': + return this.store.text.pendingPayment; + break; + default: + return value; + break; + } + } + + dateHandler(date) { + return moment(date).format('L'); + } + + render() { + return ( + + + + + {this.store.text.id + ': ' + this.props.items.id} + + + {this.store.text.date + + ': ' + + this.dateHandler(this.props.items.createDate)} + + + {this.store.text.apartment + + ': ' + + this.props.items.apartment.name} + + + {this.store.text.status + ': '} + + {this.stateChangeLangHandler(this.props.items.status)} + + + + {this.store.text.problems + ': ' + this.props.items.description} + + + {/* {this.payment(this.props.items.payment)} */} + + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + textView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: colors.textColor, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/home/home.js b/src/pages/home/home.js new file mode 100644 index 0000000..5d025da --- /dev/null +++ b/src/pages/home/home.js @@ -0,0 +1,2091 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + NativeAppEventEmitter, + Share, + TextInput, + TouchableHighlight, + RefreshControl, + ScrollView, + Alert, + Linking, +} from 'react-native'; +//import { NimSession, NimFriend } from "react-native-netease-im"; +import ImageView from 'react-native-image-viewing'; +import ImageHeader from '../../components/imageHeader'; +import { + TabView, + SceneMap, + TabBar, + TabViewAnimated, +} from 'react-native-tab-view'; +import ImageFooter from '../../components/imageFooter'; +import moment from 'moment'; +import {SearchBar} from 'react-native-elements'; +import JMessage from 'jmessage-react-plugin'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import LoadingView from '../../common/loading'; +import HomeTut from '../tutorial/homeTut'; +import HomeTut2 from '../tutorial/homeTut2'; +import FastImage from 'react-native-fast-image'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import DeviceInfo from 'react-native-device-info'; +import history from '../../common/history'; +import Toast, {DURATION} from 'react-native-easy-toast'; +var RNFS = require('react-native-fs'); +import {withNavigation} from 'react-navigation'; +import NaviBar from '../../components/navi-bar'; +import building from '../../services/building.json'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +var _ = require('lodash'); +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import JPush from 'jpush-react-native'; +import AddFunction from '../../common/addFunction'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); +import Realm from 'realm'; +import {observable} from 'mobx'; +import {Colors} from 'react-native-paper'; +import {thisExpression} from '@babel/types'; + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +@inject('appStore') +@observer +class Home extends Component { + @observable + sessionId = 'dff'; + @observable + docVisable = false; + @observable + index = 0; + @observable + shareVisable = false; + @observable + friendList = []; + @observable + refcode = ''; + @observable + visable = false; + @observable + showNotAddTenantApartmentOrNot = false; + @observable + imageIndex = 0; + @observable + tabState = { + index: 0, + routes: [ + {key: 'first', title: '物業'}, + {key: 'second', title: '未加入租客'}, + ], + }; + + @observable + renderScene = SceneMap({ + first: this.renderAllApartment, + second: this.renderNoTenantApartment, + }); + + state = { + index: 0, + routes: [ + {key: 'first', title: '物業', show: false}, + {key: 'second', title: '未加入租客', show: true}, + ], + }; + + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + this.reloadFriendList = this.reloadFriendList.bind(this); + } + static navigationOptions = { + tabBarLabel: 'test', + headerStyle: { + shadowColor: 'transparent', + backgroundColor: '#fff', + borderTopWidth: 0, + elevation: 0, + shadowOpacity: 0, + shadowRadius: 0, + shadowOffset: { + height: 0, + }, + }, + style: { + shadowColor: 'transparent', + shadowRadius: 0, + elevation: 0, + shadowOffset: { + height: 0, + }, + }, + }; + + oneKeyToRent(apartmentName, apartmentId) { + var msgContent = + '你好,我想放盤,我的單位名是' + + apartmentName + + '(ID: ' + + apartmentId + + ')'; + Alert.alert( + '一鍵放盤', + '一鍵放盤需由Rent Chat客服處理,請選擇與客服聯絡方法', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '致電 Rent Chat', + onPress: () => { + Linking.openURL(`tel:${'31040558'}`); + }, + }, + { + text: '在線對話', + onPress: () => this.store.gotohelperChat(this, msgContent), + }, + ], + {cancelable: false}, + ); + } + + refinput() { + return ( + + (this.refcode = text)} + keyboardType={'numeric'} + underlineColorAndroid="rgba(0,0,0,0)" + placeholder={this.store.text.sharecode} + placeholderStyle={{ + fontWeight: 'bold', + fontFamily: Fonts.century, + fontSize: size.getSize(10), + }} + placeholderTextColor={colors.textColor} + /> + + ); + } + + async clickAvatarAction(index) { + await this.store.cloneApartmentDocData(index); + var avatarIndex = await this.store.apartmentDataDoc.findIndex( + element => element.type === 3, + ); + // history.push(this, '/apartmentImageDetails', { + // imageIndex: avatarIndex, + // }); + this.visable = true; + this.imageIndex = avatarIndex; + console.log(avatarIndex); + } + + reloadFriendList() { + JMessage.getFriends( + result => { + var friendArr = result.map((friend, index) => { + var element = {}; + element.key = index; + element.userInfo = friend; + return element; + }); + // this.setState( {data: friendArr} ) + console.log(friendArr); + this.store.friendArr = friendArr; + }, + error => { + Alert.alert('error', JSON.stringify(error)); + }, + ); + } + + iconRander() { + return ( + { + var data = {refcode: this.refcode}; + this.store.tenantCheckApartment(data, this); + }}> + Add + + ); + } + + // async _check(id) { + // var data = null; + // await NimFriend.fetchUserInfo(id).then(res => { + // console.log(res); + // data = res; + // }); + // return data; + // } + + async componentWillMount() { + // const unsubscribe = this.props.navigation.addListener('tabPress', e => { + // // Prevent default behavior + // //e.preventDefault(); + // // this.props.navigation.navigate('add') + // // Do something manually + // // ... + // this.props.navigation.navigate('signin',{icon:true}) + // }); + // if(this.store.logined){ + // this.store.getApartmentData() + // } + + await this.store.loadLocalData(); + // this._check(); + // NimFriend.startFriendList(); + if (this.store.logined) { + this.reloadConversationList(); + JMessage.getAllUnreadCount(result => { + console.log(result); + /** + * result {Number} 当前用户所有会话的未读消息总数 + */ + }); + } + // var friendListData = []; + // this.sessionListener = NativeAppEventEmitter.addListener( + // 'observeRecentContact', + // data => { + // console.info('会话列表', data); + // this.store.checkUnRead(data); + // }, + // ); + // this.friendListener = NativeAppEventEmitter.addListener( + // 'observeFriend', + // data => { + // console.log(data); + // this.store.friendList = []; + + // if (!this.isEmpty(data)) { + // // (this.friendList = this.formatData(data)), + + // Object.keys(data).map((key, index) => { + // //friendListData.push(_.cloneDeep(this.friendList[key])) + // data[key].map((value, index) => { + // this.store.friendList.push(_.cloneDeep(value)); + // }); + // // console.log(this.friendList[key]) + // }); + // this.store.friendList.map((data, index) => { + // console.log(data.name); + // }); + + // console.log( + // this.store.friendList.find(element => element.name === 'Helper'), + // ); + + // // this._check(this.friendList.H[0].contactId); + // } + // }, + // ); + + // this.backgroundNotificationListener = NativeAppEventEmitter.addListener( + // 'observeLaunchPushEvent', + // data => { + // console.log(data); + // // this.sessionId = data.sessionBody.sessionId; + // }, + // ); + } + + componentWillUnmount() { + this.focusListener.remove(); + } + + queryUser = () => { + return realm.objects('User'); + }; + componentDidMount() { + const {navigation} = this.props; + this.focusListener = navigation.addListener('didFocus', () => { + console.log('home focus'); + this.store.startTut(); + }); + JMessage.setDebugMode({ + enable: false, + }); + if (this.store.logined) { + JMessage.addReceiveMessageListener(message => { + this.reloadConversationList(); + }); + JMessage.addSyncRoamingMessageListener(result => { + var conv = result.conversation; + console.log('Receive roaming conversation: ' + JSON.stringify(conv)); + this.store.insertConversation(conv); + }); + this.store.reloadFriendList(); + } + + // var friendListData = []; + // this.sessionListener = NativeAppEventEmitter.addListener( + // "observeRecentContact", + // data => { + // // this.setState({ + // // data: data.recents, + // // }) + // console.info("会话列表", data); + // } + // ); + // this.friendListener = NativeAppEventEmitter.addListener( + // "observeFriend", + // data => { + // console.log(data); + // this.store.friendList = [] + // if (!this.isEmpty(data)) { + // // (this.friendList = this.formatData(data)), + // Object.keys(data).map((key, index) => { + // //friendListData.push(_.cloneDeep(this.friendList[key])) + // data[key].map((value, index) => { + // this.store.friendList.push(_.cloneDeep(value)); + // }); + // // console.log(this.friendList[key]) + // }); + // this.store.friendList.map((data, index) => { + // console.log(data.name); + // }); + // console.log( + // this.store.friendList.find(element => element.name === "Helper") + // ); + // // this._check(this.friendList.H[0].contactId); + // } + // } + // ); + // this.backgroundNotificationListener = NativeAppEventEmitter.addListener( + // "observeLaunchPushEvent", + // data => { + // console.log(data); + // // this.sessionId = data.sessionBody.sessionId; + // } + // ); + } + + reloadConversationList() { + JMessage.getConversations( + result => { + this.store.convertToConvList(result); + }, + error => { + // Alert.alert(JSON.stringify(error)) + console.log(JSON.stringify(error)); + }, + ); + } + isEmpty(obj) { + for (var x in obj) { + if (obj.hasOwnProperty(x)) return false; + } + return true; + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents.length < 20 + ? `${contents}` + : `${contents.substring(0, 40)}...`} + + + + ); + } + + isValidDate(date) { + return ( + date && + Object.prototype.toString.call(date) === '[object Date]' && + !isNaN(date) + ); + } + + ownerSignReturn(items) { + if (items.owner.hasOwnProperty('sign')) { + console.log(items.owner.sign); + return items.owner.sign; + } else { + return ''; + } + } + + signImageReturn(items, apartmentdata) { + console.log(apartmentdata); + if (apartmentdata.signed) { + return apartmentdata.tenantSign; + } else { + return ''; + } + } + + async contractClickAction(items, state) { + console.log(state); + console.log(items); + if (items.contracts.length > 0) { + var contractindex = await items.contracts.findIndex( + element => element.tenant.id === items.tenant.id, + ); + + if (contractindex !== -1) { + var apartmentdata = items.contracts[contractindex]; + + console.log(apartmentdata); + console.log(items); + var data = { + apartment: apartmentdata.id, + appliances: apartmentdata.appliances, + key: apartmentdata.key, + atleastRentOfmonth: apartmentdata.atleastRentOfmonth, + leaseMonth: apartmentdata.leaseMonth, + monthOfpaymentInLieuOfNotice: + apartmentdata.monthOfpaymentInLieuOfNotice, + noteLeasebackMonth: apartmentdata.noteLeasebackMonth, + numberOfkey: apartmentdata.numberOfkey, + ownerPaymentAc: apartmentdata.ownerPaymentAc, + payRentDate: apartmentdata.payRentDate, + rentFreePeriod: apartmentdata.rentFreePeriod, + servicePaymentAmount: apartmentdata.servicePaymentAmount, + servicePaymentStatus: apartmentdata.servicePaymentStatus, + whoPayGovernemtRate: apartmentdata.whoPayGovernemtRate, + whoPayGovernmentRent: apartmentdata.whoPayGovernmentRent, + whoPayManagementFee: apartmentdata.whoPayManagementFee, + apartmentName: items.name, + apartmentAddress: apartmentdata.apartmentAddress, + services: apartmentdata.services, + ownerId: apartmentdata.owner.id, + ownerName: apartmentdata.ownerName, + ownerPhone: apartmentdata.ownerPhone, + tenantName: apartmentdata.tenantName, + tenantPhone: apartmentdata.tenantPhone, + tenantContactAddress: apartmentdata.tenantContractAddress, + signContractDate: moment( + apartmentdata.signContractDate, + 'YYYY-MM-DD', + ).toDate(), + endContractDate: moment( + apartmentdata.endContractDate, + 'YYYY-MM-DD', + ).toDate(), + rent: apartmentdata.rent, + rates: apartmentdata.rates, + deposit: apartmentdata.deposit, + managementFee: apartmentdata.managementFee, + id: apartmentdata.id, + signed: apartmentdata.signed, + remark: apartmentdata.remark, + stamp: apartmentdata.ownerStamp, + ownerSignUri: this.ownerSignReturn(items), + tenantSignUri: this.signImageReturn(items, apartmentdata), + }; + console.log(data); + if (state == 'e') { + history.push(this, '/newLease', { + contractData: data, + showSign: false, + }); + } else if (state == 'p') { + history.push(this, '/newLease', { + contractData: data, + showSign: false, + }); + } else if (state === 's') { + console.log('tenant not sign'); + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + history.push(this, '/newLease', { + contractData: data, + showSign: false, + }); + } else { + this.goToSignature(); + } + } + } else { + if (state == 'c') { + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + // history.push(this, '/newContractData', {apartmentData: items}); + this.store.getService(this, items); + } else { + this.goToSignature(); + } + } + } + } else { + if (state === 'c') { + console.log('go new contract'); + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + // history.push(this, '/newContractData', {apartmentData: items}); + this.store.getService(this, items); + } else { + this.goToSignature(); + } + } + } + } + + goToSignature() { + Alert.alert('', this.store.text.puts, [ + {text: this.store.text.cancel, onPress: () => history.goBack(this)}, + { + text: this.store.text.sure, + onPress: async () => { + history.push(this, '/signatureView', { + imageUri: this.store.loginUserData.data.member.sign, + }); + }, + }, + ]); + } + + renderContractButton(items, index) { + console.log(this.store.apartmentsData[index].state); + console.log(this.store.apartmentsData[index].contractClickState); + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + if (items.hasOwnProperty('tenant')) { + return ( + + + + {this.store.text.leaseContract + ': '} + + + { + this.contractClickAction( + items, + this.store.apartmentsData[index].contractClickState, + ); + }}> + + {this.store.apartmentsData[index].state} + + + + ); + } else { + return ; + } + } else { + if (items.hasOwnProperty('contracts')) { + if (items.contracts.length > 0) { + return ( + + + + {this.store.text.leaseContract + ': '} + + + { + this.contractClickAction( + items, + this.store.apartmentsData[index].contractClickState, + ); + }}> + + {this.store.apartmentsData[index].state} + + + + ); + } else { + return ; + } + } + } + } else { + return ; + } + } + + contractStatesReturn(items) { + if (items.hasOwnProperty('contracts')) { + if (items.contracts.length > 0) { + if (this.store.loginUserData.data.member.chara == 'owner') { + if ( + items.contracts.findIndex( + element => element.tenant.id == items.tenant, + ) != -1 + ) { + var index = items.contracts.findIndex( + element => element.tenant.id == items.tenant, + ); + if (items.contracts[index].signed) { + return items.contracts[index].endContractDate; + } else { + return this.store.text.processing; + } + } else { + return this.store.text.createContract; + } + } else { + return this.store.text.pleaseSign; + } + } else { + return this.store.text.createContract; + } + } + } + + dateStringHandler(date) { + console.log(this.isValidDate(date)); + if (date === null) { + return ''; + } else { + if (this.isValidDate(date)) { + return ( + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + ); + } else { + return date; + } + } + } + + share(refCode) { + Share.share({ + message: + `您的業主邀請你下載免費的租賃管理平台Rent Chat:\nRent Chat功能:\n-永久寄存租約-電子租金收據\n-單位及電器維修通知業主\n-電子租約續租\n\n分享碼:` + + refCode, + title: 'Ref Code', + url: 'http://onelink.to/rentchat', + }); + } + + renderShare() { + if (this.store.refData == undefined || this.store.refData == null) { + return null; + } else { + return ( + + + {'Refcode: '} + + {this.store.refData.refcode} + + + + this.share(this.store.refData.refcode)} + style={{ + backgroundColor: colors.mainColor, + flexDirection: 'row', + marginRight: 20, + marginLeft: 20, + marginTop: 20, + alignItems: 'center', + justifyContent: 'center', + height: 40, + width: 200, + borderColor: colors.mainColor, + borderRadius: 10, + }}> + + + + Share + + + + ); + } + } + + tenantServiceAction(id) { + if (this.store.logined) { + if (this.store.loginUserData.data.member.phone == null) { + Alert.alert('', this.store.text.papnf, [ + {text: '取消', onPress: () => history.goBack(this)}, + { + text: '加入', + onPress: async () => { + await history.goBack(this); + var data = { + vercode: '', + fullname: '', + thirdParty: true, + email: '', + gender: 'na', + countryCode: '852', + chara: 'owner', + age: 'na', + pwd: '', + phone: '', + refcode: '', + ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + }; + history.push(this, '/signUpVerify', { + signupData: data, + addphone: true, + }); + }, + }, + ]); + } else { + this.store.createApartmentRefCode(id, this); + } + } else { + history.push(this, '/signin', {icon: true}); + } + } + + renderOwnerOrTenant(items) { + if (this.store.user.memberType == 1) { + return ( + + + {this.store.text.owner + ': '} + + + ); + } else { + return ( + + + {this.store.text.tenant + ': '} + + + ); + } + } + + renderGoToUserChatButton(items) { + if (this.store.loginUserData.data.member.chara == 'tenant') { + return ( + { + this.apartmentGoToChat(items); + // this.store.goToChat(items.owner.email, this); + }}> + + {items.owner.fullname} + + + ); + } else { + return ( + { + this.apartmentGoToChat(items); + // this.store.goToChat(items.tenant.email, this); + }}> + + {items.tenant.fullname} + + + ); + } + } + + notificationStringReturn(day) { + if (day === 0) { + return this.store.text.nonotice; + } else { + return this.store.text.notice + day + this.store.text.before; + } + } + + endNotificationStringReturn(month) { + if (month === 0) { + return this.store.text.nonotice; + } else { + return this.store.text.notice + month + this.store.text.endBefore; + } + } + + floorStringReturn() { + switch (this.store.apartmentData.floor) { + case 'low': + return this.store.text.low + this.store.text.floor; + break; + case 'middle': + return this.store.text.middle + this.store.text.floor; + break; + case 'high': + return this.store.text.high + this.store.text.floor; + break; + } + } + + async checkUserChat(id) { + console.log(id); + if (this.store.friendArr.length > 0) { + const user = await this.store.friendArr.find( + element => element.userInfo.username === id, + ); + console.log(user); + if (user != undefined) { + var data = { + username: id, + type: 'single', + nickname: user.userInfo.nickname, + }; + this.store.goToChat(data, this); + } + } + } + + handleIndexChange = index => { + console.log('testing: ' + index); + this.setState({ + index, + }); + }; + + async gotohelperChat(id) { + var data = { + id: id, + type: 'group', + nickname: 'helper', + }; + this.store.goToChat(data, this); + } + + apartmentGoToChat(items) { + //console.log(items.owner.email); + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + if (items.hasOwnProperty('tenant')) { + this.checkUserChat(items.tenant.id); + //this.store.goToChat(items.tenant.email, this,'single'); + } else { + this.refs.toast.show('Please add tenant'); + } + } else { + if (items.hasOwnProperty('owner')) { + // this.store.goToChat(items.owner.email, this,'single'); + this.checkUserChat(items.owner.id); + } else { + } + } + } else { + this.refs.toast.show('Please login'); + history.push(this, '/signin', {icon: true, backToHome: this.backToHome}); + } + } + + backToHome = back => { + if (back) { + this.props.navigation.navigate('home'); + } + }; + + formatData = data => { + const newObj = {}; + const h = this.transform(data).sort(); + h.map(res => { + newObj[res] = data[res]; + }); + return newObj; + }; + transform(obj) { + const arr = []; + for (const item in obj) { + arr.push(item); + } + //arr.sort(this.mySorter()) + return arr; + } + mySorter(a, b) { + if (/^\d/.test(a) !== /^\D/.test(b)) return a > b ? 1 : (a = b ? 0 : -1); + return a > b ? -1 : a == b ? 0 : 1; + } + + renderRemindTenantPayTheRent(items) { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + console.log(items.hasOwnProperty('tenant')); + if (items.hasOwnProperty('tenant')) { + return ( + { + this.store.remindTenantPayTheRent(this, items); + }}> + + {'提醒租客交租'} + + + ); + } + } + } else { + } + } + + rentdayreturn() { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + return this.store.text.rentDay; + } else { + return this.store.text.payrentDay; + } + } else { + return this.store.text.rentDay; + } + } + + renderavatar(items) { + var data = _.cloneDeep(items); + console.log(data); + var avatarUriIndex = items.doc.findIndex(element => element.type === 1); + if (avatarUriIndex !== -1) { + return ( + + ); + } else { + return ( + + ); + } + } + + renderApartmentData(items, index) { + return ( + + + {items.id === 'demo' ? ( + + ) : ( + { + this.clickAvatarAction(index); + }}> + {this.renderavatar(items)} + + {!items.hasOwnProperty('tenant') ? ( + + + + + {'此物業尚未更新'} + + + {' '} + {'請在租戶欄按下「新增租戶」'} + + + + ) : ( + + )} + + )} + + + {items.name} + {/* {this.list( + this.store.text.address, + items.address, + colors.textColor, + )} */} + + {items.address} + + + + + + {this.store.text.seats} + + + {items.seats == '' ? '--' : items.seats} + + + + + {this.store.text.floor} + + + {items.floor == '' ? '--' : items.floor} + + + + + {this.store.text.unit} + + + {items.seats == '' ? '--' : items.unit} + + + + + {this.list( + this.store.text.rent, + 'HKD ' + items.rent, + colors.textColor, + )} + + {items.hasOwnProperty('deposit') ? ( + this.list( + this.store.text.deposit, + 'HKD' + items.deposit, + //items.signContractDate, + colors.textColor, + ) + ) : ( + + )} + {/* {this.list( + this.rentdayreturn(), + this.dateStringHandler(items.signContractDate), + //items.signContractDate, + colors.textColor, + )} */} + + + + {this.rentdayreturn() + ': '} + + + + + {this.dateStringHandler(items.signContractDate)} + + + {this.renderRemindTenantPayTheRent(items)} + + {this.list( + this.store.text.contractExpiry, + this.dateStringHandler(items.endContractDate), + // items.endContractDate, + colors.textColor, + )} + + {this.list( + this.store.text.maintainService, + this.store.text.free, + colors.mainColor, + )} + + {this.list( + this.store.text.notificationOfCollectRents, + this.notificationStringReturn(items.rentNotification), + colors.textColor, + )} + + {this.list( + this.store.text.notificationOfcontractExpiry, + this.endNotificationStringReturn( + this.store.apartmentData.endContractNotification, + ), + colors.textColor, + )} + + {items.hasOwnProperty('leaseMonth') ? ( + this.list( + this.store.text.lease, + '' + items.leaseMonth + this.store.text.months, + colors.textColor, + ) + ) : ( + + )} + + + {this.renderOwnerOrTenant()} + {items.hasOwnProperty('tenant') ? ( + this.renderGoToUserChatButton(items) + ) : ( + { + this.tenantServiceAction(items.id); + }}> + + {this.store.text.addTenantService} + + + )} + + + {this.renderContractButton(items, index)} + + + { + this.editAction(index); + }}> + + + {this.store.text.edit} + + + { + this.apartmentGoToChat(items); + }}> + + + {this.store.user.memberType == 0 + ? this.store.text.chatWithTenant + : this.store.text.chatWithOwner} + + + { + this.editDocAction(index); + }}> + + + {this.store.text.Doc} + + {/* {this.renderAlert()} */} + + {this.store.user.memberType == 0 && this.store.logined ? ( + { + this.oneKeyToRent(items.name, items.id); + }}> + + + {'一鍵放盤'} + + {/* {this.renderAlert()} */} + + ) : ( + + )} + + + + + ); + } + + apartmentRender(noTenant) { + return this.store.apartmentsData.map((items, index) => { + console.log(items.id); + var id = items.id; + if (noTenant && !items.hasOwnProperty('tenant')) { + return this.renderApartmentData(items, index); + } else if (!noTenant) { + return this.renderApartmentData(items, index); + } + }); + } + + renderAlert() { + return ( + + ); + } + + renderReceiptAlert() { + return ( + + ); + } + + editAction(index) { + history.push(this, '/apartmentDetails', {index, create: false}); + } + + editDocAction(index) { + // history.push(this, '/uploadImage', { index, create: false }) + this.docVisable = true; + this.index = index; + } + + renderMain(noTenant) { + if (this.store.user != null) { + if (this.store.apartmentsData.length > 0) { + return ( + + {this.apartmentRender(noTenant)} + + ); + } else { + if (this.store.user.memberType == 0) { + return ( + { + // history.push(this, '/apartmentDetails', {create: true}); + if (this.store.logined) { + if (this.store.loginUserData.data.member.phone == null) { + Alert.alert('', this.store.text.papnf, [ + {text: '取消', onPress: () => history.goBack(this)}, + { + text: '加入', + onPress: async () => { + // await history.goBack(this); + var data = { + vercode: '', + fullname: '', + thirdParty: true, + email: '', + gender: 'na', + countryCode: '852', + chara: 'owner', + age: 'na', + pwd: '', + phone: '', + refcode: '', + ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + }; + history.push(this, '/signUpVerify', { + signupData: data, + addphone: true, + }); + }, + }, + ]); + } else { + history.push(this, '/apartmentDetails', {create: true}); + } + } else { + history.push(this, '/apartmentDetails', {create: true}); + } + }} + /> + ); + } else { + return ( + + + {this.refinput()} + + {this.iconRander()} + + + ); + } + } + } else { + return ( + { + history.push(this, '/apartmentDetails', {create: true}); + }} + /> + ); + } + } + + async goToChat(email, self) { + if (!this.logined) { + history.push(self, '/signin', {icon: true}); + } else { + JMessage.getGroupInfo( + {id: this.store.loginUserData.data.member.gid}, + group => { + var item = {}; + + item = {key: group.id}; + item.conversationType = 'group'; + + this.props.navigation.navigate('chat', {conversation: item}); + }, + error => { + Alert.alert('error', JSON.stringify(error)); + }, + ); + // const user = await this.friendList.find( + // element => element.name === email, + // ); + // console.log(user); + // const userdata = await this._check(user.contactId); + // const session = { + // ...userdata, + // sessionType: '0', + // }; + // console.log(session); + // history.push(self, '/chat', { + // title: session.alias || session.name, + // session, + // }); + } + } + + renderTabAlert(index) { + if (index == 1) { + return ; + } else { + return ; + } + } + + // _renderIcon = ({route}: any) => { + // if (route.show && this.store.noTenantApartmentValue > 0) { + // return ( + // + // + // {this.store.noTenantApartmentValue} + // + // + // ); + // } else { + // return ; + // } + // }; + _renderIcon() { + if (this.store.noTenantApartmentValue > 0) { + return ( + + + {this.store.noTenantApartmentValue} + + + ); + } else { + return ; + } + } + + _renderHeader = props => { + return ( + + ); + }; + + _configureTransition(transitionProps, prevTransitionProps) { + return { + // duration in milliseconds, default: 250 + duration: 500, + // An easing function from `Easing`, default: Easing.inOut(Easing.ease) + easing: Easing.bounce, + }; + } + + onRefreshToGetApartment() { + if (this.store.logined) { + this.store.getApartmentData(); + } else { + } + } + + renderAllApartment = ({route}) => { + return ( + + this.onRefreshToGetApartment()} + /> + }> + {this.renderMain(false)} + + + ); + }; + + _renderScene = ({route}) => { + switch (route.key) { + case 'first': + return ( + + this.onRefreshToGetApartment()} + /> + }> + {this.renderMain(false)} + + + ); + case 'seconds': + return ( + + this.onRefreshToGetApartment()} + /> + }> + {this.renderMain(true)} + + + ); + default: + return null; + } + }; + + renderNoTenantApartment = ({route}) => { + return ( + + this.onRefreshToGetApartment()} + /> + }> + {this.renderMain(true)} + + + ); + }; + + changeShowNoAddTenantApartmentAction(which) { + this.showNotAddTenantApartmentOrNot = which; + } + + render() { + var data = []; + const onRequestClose = () => (this.visable = false); + this.store.apartmentDataDoc.map((items, index) => { + var image = {uri: items.uri}; + data.push(image); + }); + return ( + + + + { + if (this.store.logined) { + this.store.gotohelperChat(this); + } + JPush.getRegistrationID(result => + console.log('registerID:' + result.registerID), + ); + }} + /> + + {this.store.user.memberType != 1 ? ( + + { + this.changeShowNoAddTenantApartmentAction(false); + }} + style={{ + height: 50, + flex: 1, + justifyContent: 'center', + alignItems: 'center', + borderBottomColor: this.showNotAddTenantApartmentOrNot + ? '#F2F2F2' + : colors.mainColor, + borderBottomWidth: 5, + }}> + + {'物業'} + + + { + this.changeShowNoAddTenantApartmentAction(true); + }} + style={{ + height: 50, + flex: 1, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderBottomColor: !this.showNotAddTenantApartmentOrNot + ? '#F2F2F2' + : colors.mainColor, + borderBottomWidth: 5, + }}> + + {'未加入租客'} + + {this._renderIcon()} + + + ) : ( + + )} + + + this.onRefreshToGetApartment()} + /> + }> + {this.renderMain(this.showNotAddTenantApartmentOrNot)} + + + { + return ( + { + this.store.saveImage(imageIndex); + }} + /> + ); + }} + FooterComponent={({imageIndex}) => ( + + )} + visible={this.visable} + onRequestClose={onRequestClose} + images={data} + presentationStyle={'overFullScreen'} + imageIndex={this.imageIndex} + /> + { + this.docVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.docVisable = false; + }}> + + + { + history.push(this, '/receipt', {index: this.index}); + this.docVisable = false; + }}> + + {/* {this.renderReceiptAlert()} */} + + {this.store.text.receipt} + + + { + history.push(this, '/uploadImage', { + index: this.index, + create: false, + }); + this.docVisable = false; + }}> + + + {this.store.text.photoAndDoc} + + + + + + + { + this.shareVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.shareVisable = false; + }}> + + + {this.renderShare()} + + + + {/* + + + + */} + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + slide1: { + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: {backgroundColor: 'white', borderRadius: 15}, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 40, + width: 200, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + + apartmentText: { + fontFamily: Fonts.ubuntuTh, + color: colors.textColor, + fontSize: 20, + }, + text: { + marginTop: 7, + marginLeft: 5, + color: colors.textColor, + fontSize: 22, + fontFamily: Fonts.ubuntu, + }, + subAddress: { + flex: 1, + alignItems: 'center', + flexDirection: 'row', + }, +}); +export default withNavigation(Home); diff --git a/src/pages/info/info.js b/src/pages/info/info.js new file mode 100644 index 0000000..e23a316 --- /dev/null +++ b/src/pages/info/info.js @@ -0,0 +1,243 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + ImageBackground, + Alert, + Image, +} from 'react-native'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import {observable} from 'mobx'; +import BackHeader from '../../components/backHeader'; +import {width, height} from '../../common/screen'; +import HistoryList from '../history/historyList'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {colors} from '../../assets/styles/colors-theme'; +import Swiper from 'react-native-swiper'; +@inject('appStore') +@observer +export default class Info extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount(index) { + this.store.getbanner(); + } + + clickAction(index) { + switch (index) { + case 0: + // history.push(this, '/oneClickRental'); + Alert.alert( + '即將推出', + '', + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + break; + case 1: + history.push(this, '/repair'); + break; + case 2: + history.push(this, '/news'); + break; + case 3: + history.push(this, '/property'); + break; + case 4: + history.push(this, '/industrialBuilding'); + break; + case 5: + // history.push(this, '/industrialBuilding'); + Alert.alert( + '即將推出', + '', + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + break; + case 6: + history.push(this, '/oneClickRental'); + // Alert.alert( + // '即將推出', + // '', + // [{text: 'OK', onPress: () => console.log('ok')}], + // {cancelable: false}, + // ); + break; + } + } + + renderBackIcon() { + return ( + { + console.log('back'); + this.props.navigation.navigate('SelectChar'); + }}> + + + ); + } + + renderList() { + const selectList = [ + { + title: this.store.text.downloadrentdoc, + uri: require('../../assets/images/rentdoc.png'), + }, + { + title: this.store.text.homeservice, + uri: require('../../assets/images/services.png'), + }, + { + title: this.store.text.new, + uri: require('../../assets/images/news.png'), + }, + { + title: this.store.text.rentalInfo + '(' + this.store.text.housing + ')', + uri: require('../../assets/images/apartment.png'), + }, + { + title: + this.store.text.rentalInfo + '(' + this.store.text.business + ')', + uri: require('../../assets/images/commercialbuilding.png'), + }, + { + title: this.store.text.freeSecondhandFurniture, + uri: require('../../assets/images/furniture.png'), + }, + { + title: this.store.text.oneClickRental, + uri: require('../../assets/images/apartment.png'), + }, + ]; + return selectList.map((items, index) => { + return ( + this.clickAction(index)}> + + + + + {items.title} + + + + + + + ); + }); + } + + render() { + return ( + + + + + + + {this.store.banner.map((items, index) => { + console.log(items); + return ( + { + if (items.hasOwnProperty('link')) { + history.push(this, '/bannerDetails', {data: items}); + } + }} + style={{ + justifyContent: 'center', + alignItems: 'center', + }}> + + + ); + })} + + + + {this.renderList()} + + + ); + } +} diff --git a/src/pages/info/infoForGuest.js b/src/pages/info/infoForGuest.js new file mode 100644 index 0000000..3a82a01 --- /dev/null +++ b/src/pages/info/infoForGuest.js @@ -0,0 +1,255 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + ImageBackground, + Image, + Alert +} from 'react-native'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {observable} from 'mobx'; +import BackHeader from '../../components/backHeader'; +import {width, height} from '../../common/screen'; +import HistoryList from '../history/historyList'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {colors} from '../../assets/styles/colors-theme'; +import Swiper from 'react-native-swiper'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +@inject('appStore') +@observer +export default class InFoForGuest extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount(index) { + this.store.getbanner(); + } + + clickAction(index) { + switch (index) { + case 0: + // history.push(this, '/oneClickRental'); + Alert.alert( + '即將推出', + '', + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + break; + case 1: + history.push(this, '/repair'); + break; + case 2: + history.push(this, '/news'); + break; + case 3: + history.push(this, '/property'); + break; + case 4: + history.push(this, '/industrialBuilding'); + break; + case 5: + // history.push(this, '/industrialBuilding'); + Alert.alert( + '即將推出', + '', + [{text: 'OK', onPress: () => console.log('ok')}], + {cancelable: false}, + ); + break; + case 6: + history.push(this, '/oneClickRental'); + // Alert.alert( + // '即將推出', + // '', + // [{text: 'OK', onPress: () => console.log('ok')}], + // {cancelable: false}, + // ); + break; + } + } + renderBackIcon() { + return ( + { + console.log('back'); + this.props.navigation.navigate('SelectChar'); + }}> + + + ); + } + + renderList() { + const selectList = [ + { + title: this.store.text.downloadrentdoc, + uri: require('../../assets/images/rentdoc.png'), + }, + { + title: this.store.text.homeservice, + uri: require('../../assets/images/services.png'), + }, + { + title: this.store.text.new, + uri: require('../../assets/images/news.png'), + }, + { + title: this.store.text.rentalInfo + '(' + this.store.text.housing + ')', + uri: require('../../assets/images/apartment.png'), + }, + { + title: + this.store.text.rentalInfo + '(' + this.store.text.business + ')', + uri: require('../../assets/images/commercialbuilding.png'), + }, + { + title: this.store.text.freeSecondhandFurniture, + uri: require('../../assets/images/furniture.png'), + }, + { + title: this.store.text.oneClickRental, + uri: require('../../assets/images/apartment.png'), + }, + ]; + return selectList.map((items, index) => { + return ( + this.clickAction(index)}> + + + + + {items.title} + + + + + + + ); + }); + } + + + render() { + return ( + + + + {this.store.text.rentTools} + + {this.renderBackIcon()} + + + + + + {this.store.banner.map((items, index) => { + console.log(items); + return ( + { + if (items.hasOwnProperty('link')) { + history.push(this, '/bannerDetails', {data: items}); + } + }} + style={{ + justifyContent: 'center', + alignItems: 'center', + }}> + + + ); + })} + + + {this.renderList()} + + + ); + } +} diff --git a/src/pages/list/list.js b/src/pages/list/list.js new file mode 100755 index 0000000..ad253d7 --- /dev/null +++ b/src/pages/list/list.js @@ -0,0 +1,57 @@ +import React, { Component } from 'react' +import {View, Text, TouchableOpacity, StyleSheet, Dimensions} from 'react-native' +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {colors} from '../../assets/styles/colors-theme'; +import ListService from '../../services/list-service'; +import LoadingHoc from '../../hocs/loading-hoc'; +import {inject, observer} from 'mobx-react'; + +const { width } = Dimensions.get('window') + +@LoadingHoc +@inject('appStore') +@observer +export default class List extends Component { + constructor(props) { + super(props) + this.state = { + + } + } + + + render() { + return ( + + + + ) + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor + }, + buttonText: { + color: '#fff' + }, + number: { + width: 0.3 * width, + height: 40, + alignItems: 'center', + justifyContent: 'center' + }, + label: { + width: 0.7 * width, + height: 40, + alignItems: 'center', + justifyContent: 'center' + } +}) \ No newline at end of file diff --git a/src/pages/news/news.js b/src/pages/news/news.js new file mode 100644 index 0000000..230a9dd --- /dev/null +++ b/src/pages/news/news.js @@ -0,0 +1,339 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + Alert, + ScrollView, +} from 'react-native'; +import ViewShot from 'react-native-view-shot'; +import axios from 'axios'; +import api from '../../services/api'; +import RNImageToPdf from 'react-native-image-to-pdf'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import moment from 'moment'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import CameraRoll from '@react-native-community/cameraroll'; +import BackHeader from '../../components/backHeader'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +//import Swiper from 'react-native-swiper' +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import AddFunction from '../../common/addFunction'; +import NewsList from './newsList'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import * as rssParser from 'react-native-rss-parser'; + +import Realm from 'realm'; +import {observable} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +@inject('appStore') +@observer +export default class News extends Component { + @observable + news = []; + @observable + date = ''; + + constructor(props) { + super(props); + this.store = props.appStore; + } + componentWillMount() { + this.getRentChatNews(); + // this.loadNews(); + this.props.navigation.setParams({ + handleThis: this.store.text.new, + }); + } + // static navigationOptions = inject("appStore")(observer(({appStore, otherProp}) => { + // return { + // tabBarLabel: otherProp.appStore.text.new + // }})); + + // static navigationOptions = { + // tabBarLabel: 'Home!', + // }; + + // static navigationOptions = () => { + // return { + // tabBarLabel: 'fff' + // }} + static navigationOptions = ({navigation}) => { + const {params = {}} = navigation.state; + return { + tabBarLabel: params.handleThis, + }; + }; + + async getRentChatNews() { + this.news = []; + this.store.loading = true; + try { + const response = await axios.get(api.getNews, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + await this.rentChatNewsHandler(response.data.content); + await this.loadNews(); + + this.store.loading = false; + } catch (error) { + this.store.loading = false; + console.log(error); + } + } + + async loadNews() { + try { + this.store.loading = true; + await fetch( + 'https://www.news.gov.hk/tc/categories/finance/html/articlelist.rss.xml', + ) + .then(response => response.text()) + .then(responseData => rssParser.parse(responseData)) + .then(rss => { + console.log(rss); + this.date = rss.lastUpdated.substring(0, 26); + console.log(this.date); + console.log(rss.items.length); + this.newsHandler(rss.items, this.date); + this.store.loading = false; + }); + } catch (e) { + this.store.loading = false; + console.log(e); + } + } + async myAsyncPDFFunction(uri) { + var data = [uri]; + try { + const options = { + imagePaths: data, + name: 'testing', + }; + const pdf = await RNImageToPdf.createPDFbyImages(options); + + console.log(pdf.filePath); + } catch (e) { + console.log(e); + } + } + + async rentChatNewsHandler(data) { + this.news = []; + var newsArray = []; + await data.map((news, index) => { + if (news.status) { + var items = {}; + items.type = 'rentchat'; + items.id = news.id; + items.image = news.image; + items.title = news.title; + items.description = news.content; + items.date = moment(news.date, 'YYYY-MM-DD').format( + 'ddd, DD, MMM, YYYY, hh:mm:ss', + ); + newsArray.push(items); + } + }); + this.news = newsArray; + } + + async newsHandler(data, date) { + var newsArray = []; + await data.map((news, index) => { + var items = {}; + items.type = 'hknews'; + items.id = index; + items.image = news.description.slice( + 10, + news.description.indexOf('"/>

'), + ); + items.title = news.title; + items.description = news.description; + items.date = date; + newsArray.push(items); + }); + this.news = this.news.concat(newsArray); + } + + cloneDeep(item) { + var data = {}; + data.id = item.id; + data.image = item.image; + data.description = item.description; + data.title = item.title; + data.copyright = item.copyright; + return data; + } + + onCapture = uri => { + console.log('do something with ', uri); + }; + + render() { + return ( + + + + + + {this.news.length > 0 ? ( + { + history.push(this, '/newsDetails', { + details: this.cloneDeep(this.news[0]), + type: this.news[0].type, + }); + }}> + + + {this.news[0].title} + + + {this.news[0].date} + + + ) : ( + + )} + + ( + { + history.push(this, '/newsDetails', { + details: this.cloneDeep(item), + type: item.type, + }); + }} + /> + )} + keyExtractor={item => item.id} + /> + + + + ); + } +} + +function RenderNews(items) { + console.log(items.items); + return ( + + + + + + + {items.items.title} + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/news/newsDetails.js b/src/pages/news/newsDetails.js new file mode 100644 index 0000000..b5b251c --- /dev/null +++ b/src/pages/news/newsDetails.js @@ -0,0 +1,129 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + ScrollView, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import BackHeader from '../../components/backHeader'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import HTML from 'react-native-render-html'; +import AddFunction from '../../common/addFunction'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import * as rssParser from 'react-native-rss-parser'; + +import Realm from 'realm'; +import {observable} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +@inject('appStore') +@observer +export default class NewsDetails extends Component { + @observable + newsData = ''; + + constructor(props) { + super(props); + this.store = props.appStore; + this.newsData = this.props.navigation.state.params.details.description; + } + componentWillMount() {} + + render() { + console.log(this.props.navigation.state.params.type); + return ( + + + + + {this.props.navigation.state.params.type == 'rentchat' ? ( + + ) : ( + + )} + + + + + + {'Copyright: 香港政府新聞網 - 版權所有'} + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/news/newsList.js b/src/pages/news/newsList.js new file mode 100755 index 0000000..21f7e44 --- /dev/null +++ b/src/pages/news/newsList.js @@ -0,0 +1,106 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {width, height} from '../../common/screen'; + +export default class NewsList extends Component { + constructor(props) { + super(props); + } + + render() { + return ( + + + + + + + {this.props.items.title} + + + {this.props.date} + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/news/testingImage.js b/src/pages/news/testingImage.js new file mode 100644 index 0000000..ffcfefc --- /dev/null +++ b/src/pages/news/testingImage.js @@ -0,0 +1,181 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + Alert, + ScrollView +} from 'react-native'; +import ViewShot from 'react-native-view-shot'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import CameraRoll from '@react-native-community/cameraroll'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +//import Swiper from 'react-native-swiper' +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import AddFunction from '../../common/addFunction'; +import NewsList from './newsList'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import * as rssParser from 'react-native-rss-parser'; + +import Realm from 'realm'; +import {observable} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +@inject('appStore') +@observer +export default class TestingImage extends Component { + @observable + news = []; + + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentDidMount(){ + console.log(this.props.navigation.state.params.imageUri) + } + componentWillMount() { + + } + // static navigationOptions = inject("appStore")(observer(({appStore, otherProp}) => { + // return { + // tabBarLabel: otherProp.appStore.text.new + // }})); + + // static navigationOptions = { + // tabBarLabel: 'Home!', + // }; + + // static navigationOptions = () => { + // return { + // tabBarLabel: 'fff' + // }} + static navigationOptions = ({navigation}) => { + const {params = {}} = navigation.state; + return { + tabBarLabel: params.handleThis, + }; + }; + + async loadNews() { + try { + this.store.loading = true; + await fetch( + 'https://www.news.gov.hk/tc/categories/finance/html/articlelist.rss.xml', + ) + .then(response => response.text()) + .then(responseData => rssParser.parse(responseData)) + .then(rss => { + console.log(rss); + console.log(rss.items.length); + this.newsHandler(rss.items); + this.store.loading = false; + }); + } catch (e) { + this.store.loading = false; + console.log(e); + } + } + + async newsHandler(data) { + this.news = []; + var newsArray = []; + await data.map((news, index) => { + var items = {}; + items.id = index; + items.image = news.description.slice( + 10, + news.description.indexOf('"/>

'), + ); + items.title = news.title; + items.description = news.description; + newsArray.push(items); + }); + this.news = newsArray; + console.log(this.news); + } + + cloneDeep(item) { + console.log(item.copyright); + var data = {}; + data.id = item.id; + data.image = item.image; + data.description = item.description; + data.title = item.title; + data.copyright = item.copyright; + return data; + } + + onCapture = uri => { + console.log('do something with ', uri); + }; + + render() { + return ( + + + + + + ); + } +} + + + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/oneClickRental/oneClickRental.js b/src/pages/oneClickRental/oneClickRental.js new file mode 100644 index 0000000..dade621 --- /dev/null +++ b/src/pages/oneClickRental/oneClickRental.js @@ -0,0 +1,907 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + ImageBackground, + StyleSheet, + Image, + Alert, +} from 'react-native'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +var _ = require('lodash'); +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {observable} from 'mobx'; +import BackHeader from '../../components/backHeader'; +import Icon2 from 'react-native-vector-icons/MaterialCommunityIcons'; +import {width, height} from '../../common/screen'; +import DeviceInfo from 'react-native-device-info'; +import HistoryList from '../history/historyList'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Modal, {ModalContent} from 'react-native-modals'; +import {colors} from '../../assets/styles/colors-theme'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +const sortString = [ + {value: 0, label: '價錢低到高'}, + {value: 1, label: '價錢高到低'}, +]; +const region = [ + { + ch: '香港島', + en: 'Hong Kong Island', + district: [ + {ch: '中西區', en: 'Central and Western'}, + {ch: '灣仔區', en: 'Wan Chai'}, + {ch: '東區', en: 'Eastern'}, + {ch: '南區', en: 'Southern'}, + ], + }, + { + ch: '九龍', + en: 'Kowloon', + district: [ + {ch: '深水埗區', en: 'Sham Shui Po'}, + {ch: '油尖旺區', en: 'Yau Tsim Mong'}, + {ch: '九龍城區', en: 'Kowloon City'}, + {ch: '黃大仙區', en: 'Wong Tai Sin'}, + {ch: '觀塘區', en: 'Kwun Tong'}, + ], + }, + { + ch: '新界', + en: 'New Territories', + district: [ + {ch: '葵青區', en: 'Kwai Tsing'}, + {ch: '荃灣區', en: 'Tsuen Wan'}, + {ch: '屯門區', en: 'Tuen Mun'}, + {ch: '元朗區', en: 'Yuen Long'}, + {ch: '北區', en: 'North'}, + {ch: '大埔區', en: 'Tai Po'}, + {ch: '沙田區', en: 'Sha Tin'}, + {ch: '西貢區', en: 'Sai Kung'}, + {ch: '離島區', en: 'Islands'}, + ], + }, +]; + +@inject('appStore') +@observer +export default class OneClickRental extends Component { + @observable oneClickApartment = []; + @observable + sort = 1; + @observable + areaA = ['全部']; + @observable + areaB = ['全部']; + @observable + areaAValue = '全部'; + @observable + areaBValue = '全部'; + @observable + areaAData = null; + @observable + dropdownListDisable = true; + @observable + selectApartmentalble = false; + constructor(props) { + super(props); + this.store = props.appStore; + } + + async componentWillMount() { + await this.store.getOneClickRental(); + this.oneClickApartment = [...this.store.oneClickApartment]; + await this.sortAction(); + await this.getAreaA(); + } + + sortAction() { + if (this.sort == 0) { + // this.rentApartmentData.sort((a, b) => (a.tprice > b.tprice ? 1 : -1)); + var newArray = [...this.oneClickApartment]; + this.oneClickApartment = newArray.sort((a, b) => + a.rent > b.rent ? 1 : b.rent > a.rent ? -1 : 0, + ); + //this.rentApartmentData.sort(this.compare); + } else if (this.sort == 1) { + var newArray = [...this.oneClickApartment]; + this.oneClickApartment = newArray.sort((a, b) => + a.rent < b.rent ? 1 : b.rent < a.rent ? -1 : 0, + ); + } + } + + async getAreaA() { + var array = ['全部']; + await region.map((items, index) => { + array.push(items.ch); + }); + + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaA = backToArray; + + //Array.from(new Set(array)) + console.log(backToArray); + } + + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + + renderavatar(items) { + var data = _.cloneDeep(items); + console.log(data); + var avatarUriIndex = items.doc.findIndex(element => element.type === 1); + if (avatarUriIndex !== -1) { + return ( + + ); + } else { + return ( + + ); + } + } + selectSort(items) { + this.sort = items; + this.sortAction(); + } + + dateStringHandler(date) { + console.log(this.isValidDate(date)); + if (date === null) { + return ''; + } else { + if (this.isValidDate(date)) { + return ( + date.getDate() + + '/' + + (date.getMonth() + 1) + + '/' + + date.getFullYear() + ); + } else { + return date; + } + } + } + + isValidDate(date) { + return ( + date && + Object.prototype.toString.call(date) === '[object Date]' && + !isNaN(date) + ); + } + + rentdayreturn() { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + return this.store.text.rentDay; + } else { + return this.store.text.payrentDay; + } + } else { + return this.store.text.rentDay; + } + } + + renderOneClickApartment() { + if (this.oneClickApartment.length > 0) { + return this.oneClickApartment.map((items, index) => { + return this.renderApartmentData(items, index); + }); + } + } + renderApartmentData(items, index) { + return ( + + + {this.renderavatar(items)} + + {items.name} + + + {items.address} + + + + + + {this.store.text.floor} + + + {items.floor == '' ? '--' : items.floor} + + + + + {this.list( + this.store.text.rent, + 'HKD ' + items.rent, + colors.textColor, + )} + + + + + + {'建築面積' + ': '} + + + + + {/* {contents.length < 20 + ? `${'-'}` + : `${'--'.substring(0, 40)}...`} */} + -- + + + + + + + {'實用面積' + ': '} + + + + + {/* {contents.length < 20 + ? `${'-'}` + : `${'--'.substring(0, 40)}...`} */} + -- + + + + + + + { + Alert.alert( + '客服聯絡', + '', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '致電 Rent Chat', + onPress: () => { + Linking.openURL(`tel:${'31040558'}`); + }, + }, + ], + {cancelable: false}, + ); + }}> + + + {'對樓盤有興趣? 聯絡我們吧!'} + + + + + + + ); + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents.length < 20 + ? `${contents}` + : `${contents.substring(0, 40)}...`} + + + + ); + } + + async areaADropDownListOnSelect(value) { + this.areaAValue = value; + var index = this.areaA.findIndex(element => element == value); + console.log(index); + if (index == 0) { + this.dropdownListDisable = true; + this.oneClickApartment = [...this.store.oneClickApartment]; + this.areaAData = [...this.store.oneClickApartment]; + this.areaB = ['全部']; + + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + this.dropdownListDisable = false; + var newData = await this.store.oneClickApartment.filter(function(item) { + return item.region.parent.ch == value; + }); + console.log(newData); + this.oneClickApartment = [...newData]; + this.areaAData = [...newData]; + var array = ['全部']; + + var areaAIndex = await region.findIndex(element => element.ch == value); + await region[areaAIndex].district.map((items, index) => { + array.push(items.ch); + }); + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaB = backToArray; + } + this.sortAction(); + } + + async areaBDropDownListOnSelect(value) { + this.areaBValue = value; + var index = this.areaB.findIndex(element => element == value); + if (index == 0) { + this.oneClickApartment = [...this.areaAData]; + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + var newData = await this.areaAData.filter(function(item) { + return item.region.ch == value; + }); + this.oneClickApartment = [...newData]; + } + this.sortAction(); + } + + oneClickRentalAction() { + if (this.store.user != null) { + if (this.store.logined) { + if (this.store.loginUserData.data.member.chara == 'owner') { + history.push(this, '/selectApartmentByOneClickRental'); + } else { + Alert.alert( + '一鍵放盤', + '需要是業主的身份', + [ + { + text: '確定', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + ], + {cancelable: false}, + ); + } + } else { + Alert.alert( + '一鍵放盤', + '需要登入', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '登入', + onPress: () => { + history.push(this, '/signin', {icon: true}); + }, + }, + ], + {cancelable: false}, + ); + } + } else { + Alert.alert( + '一鍵放盤', + '需要成為業主並注冊會員', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '成為業主', + onPress: () => { + var data = { + type: 0, + first: true, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + }, + }, + ], + {cancelable: false}, + ); + } + } + + render() { + return ( + + + + + {this.renderBackIcon()} + + + + + {this.store.text.oneClickRental} + + + { + // this.store.resetApartmentData(); + // history.push(this, '/simpleAddApartment'); + // this.selectApartmentalble = true; + // history.push(this, '/selectApartmentByOneClickRental'); + this.oneClickRentalAction(); + }} + style={{flex: 1, justifyContent: 'center', alignItems: 'flex-end'}}> + + {'我要放盤'} + + + + + +

{ + this.areaADropDownListOnSelect(value); + this.flatListRef.scrollTo(0); + }}> + + + + + {this.store.text.region} + + + {this.areaAValue} + + + + + {this.areaA.map((obj, i) => { + return ; + })} + + +
+ + { + this.areaBDropDownListOnSelect(value); + this.flatListRef.scrollTo(0); + }}> + + + + + {this.store.text.district} + + + {this.areaBValue} + + + + + + {this.areaB.map((obj, i) => { + return ; + })} + + + + + + { + // this.areaBDropDownListOnSelect(value); + console.log(value); + this.selectSort(value); + this.flatListRef.scrollTo(0); + }}> + + + + 排序 + + + + {sortString.map((obj, i) => { + return ; + })} + + + +
+ { + this.flatListRef = ref; + }}> + {this.renderOneClickApartment()} + + { + this.selectApartmentalble = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.selectApartmentalble = false; + }}> + + + + + + ); + } +} +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + slide1: { + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: {backgroundColor: 'white', borderRadius: 15}, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 40, + width: 200, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + + apartmentText: { + fontFamily: Fonts.ubuntuTh, + color: colors.textColor, + fontSize: 20, + }, + text: { + marginTop: 7, + marginLeft: 5, + color: colors.textColor, + fontSize: 22, + fontFamily: Fonts.ubuntu, + }, + subAddress: { + flex: 1, + alignItems: 'center', + flexDirection: 'row', + }, +}); diff --git a/src/pages/oneClickRental/selectApartmentByOneClickRental.js b/src/pages/oneClickRental/selectApartmentByOneClickRental.js new file mode 100644 index 0000000..0c7508d --- /dev/null +++ b/src/pages/oneClickRental/selectApartmentByOneClickRental.js @@ -0,0 +1,196 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, + Alert, + Linking, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import AddFunction from '../../common/addFunction'; +import {width, height} from '../../common/screen'; +@inject('appStore') +@observer +export default class SelectApartmentByOneClickRental extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + Global.instance = this; + } + + static navigationOptions = { + gesturesEnabled: false, + }; + + selectAction() {} + + oneKeyToRent(apartmentName, apartmentId) { + var msgContent = + '你好,我想放盤,我的單位名是' + + apartmentName + + '(ID: ' + + apartmentId + + ')'; + console.log(msgContent) + Alert.alert( + '一鍵放盤', + '一鍵放盤需由Rent Chat客服處理,請選擇與客服聯絡方法', + [ + { + text: '取消', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: '致電 Rent Chat', + onPress: () => { + Linking.openURL(`tel:${'31040558'}`); + }, + }, + { + text: '在線對話', + onPress: () => + this.store.gotohelperChat(this, msgContent), + }, + ], + {cancelable: false}, + ); + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + pushClickAction(items) { + this.oneKeyToRent(items.name, items.id); + } + + apartmentRender() { + return this.store.apartmentsData.map((items, index) => { + console.log(items); + return ( + { + this.pushClickAction(items); + }}> + + {this.list(this.store.text.apartment, items.name, colors.textColor)} + {this.list( + this.store.text.address, + items.address, + colors.textColor, + )} + {this.list( + this.store.text.rent, + 'HKD ' + items.rent, + colors.textColor, + )} + + + + ); + }); + } + + render() { + return ( + + + {this.apartmentRender()} + + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(450), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + + text: { + fontFamily: Fonts.ubuntu, + marginTop: 10, + color: colors.mainColor, + }, + iconView: { + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/oneClickRental/simpleAddApartment.js b/src/pages/oneClickRental/simpleAddApartment.js new file mode 100644 index 0000000..1172099 --- /dev/null +++ b/src/pages/oneClickRental/simpleAddApartment.js @@ -0,0 +1,451 @@ +import React, {Component} from 'react'; +import { + View, + Text, + ScrollView, + TouchableHighlight, + TouchableOpacity, + Dimensions, + Linking, + FlatList, + ImageBackground, + StyleSheet, + TextInput, + Image, +} from 'react-native'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {inject, observer} from 'mobx-react'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Icon2 from 'react-native-vector-icons/MaterialCommunityIcons'; +import {observable} from 'mobx'; +import ImagePicker from 'react-native-image-crop-picker'; +import BackHeader from '../../components/backHeader'; +import Swiper from 'react-native-swiper'; +import {width, height} from '../../common/screen'; +import HistoryList from '../history/historyList'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {colors} from '../../assets/styles/colors-theme'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +@inject('appStore') +@observer +export default class sompleAddApartment extends Component { + @observable + imageIndex = 0; + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount() { + this.store.apartmentData.floor = 'middle'; + } + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + + apartmentNameReturn() { + if ( + this.store.apartmentData.name == '' || + this.store.apartmentData.name == null + ) { + return '屋苑,大厦名'; + } else { + return this.store.apartmentData.name; + } + } + + floorSelect(data) { + console.log(data); + this.store.apartmentData.floor = data; + } + + floorStringReturn() { + switch (this.store.apartmentData.floor) { + case 'low': + return this.store.text.low + this.store.text.floor; + break; + case 'middle': + return this.store.text.middle + this.store.text.floor; + break; + case 'high': + return this.store.text.high + this.store.text.floor; + break; + } + } + + saveImageHandler(image) { + var photoId = this.store.idGenerator(); + console.log(photoId); + return { + id: photoId, + name: image.filename, + type: 1, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + saveAndroidImageHandler(image) { + var photoId = this.store.idGenerator(); + return { + id: photoId, + name: photoId, + type: 1, + createDate: new Date(), + uri: image.path, + mime: image.mime, + height: image.height, + width: image.width, + }; + } + + avatarHander() { + ImagePicker.openPicker({ + includeBase64: false, + writeTempFile: false, + multiple: true, + mediaType: 'photo', + cropping: false, + }).then(image => { + console.log(image); + var response = image; + response.map((item, index) => { + if (Platform.OS === 'ios') { + const uri = this.store.convertLocalIdentifierToAssetLibrary( + item.localIdentifier, + 'JPG', + ); + item.path = uri; + console.log(item.path); + this.store.apartmentDataDoc.push(this.saveImageHandler(item)); + } else { + this.store.apartmentDataDoc.push(this.saveAndroidImageHandler(item)); + } + }); + }); + } + + nextAction(){ + + } + + render() { + return ( + + + + + {this.renderBackIcon()} + + + + + {'樓盤資料'} + + + + + {this.store.text.next} + + + + {this.store.apartmentDataDoc.length <= 0 ? ( + this.avatarHander()} + style={{ + width: width, + height: 250, + backgroundColor: colors.inputBgc, + justifyContent: 'center', + alignItems: 'center', + }}> + + + ) : ( + + (this.imageIndex = index)} + showsButtons={false} + dot={ + + } + activeDot={ + + }> + {this.store.apartmentDataDoc.map((items, index) => { + return ( + + + + ); + })} + + + this.store.apartmentDataDoc.splice(this.imageIndex, 1) + } + style={{ + position: 'absolute', + bottom: 20, + left: 20, + justifyContent: 'center', + alignItems: 'center', + height: 40, + width: 40, + borderRadius: 40, + borderWidth: 1, + borderColor: 'white', + backgroundColor: colors.mainColor, + }}> + + + { + this.avatarHander(); + }} + style={{ + position: 'absolute', + bottom: 20, + right: 20, + justifyContent: 'center', + alignItems: 'center', + height: 40, + width: 40, + borderRadius: 40, + borderWidth: 1, + borderColor: 'white', + backgroundColor: colors.mainColor, + }}> + + + + )} + + + + {'樓盤資料'} + + { + history.push(this, '/apartmentNameAddressEdit'); + }}> + + + + {this.apartmentNameReturn()} + + + { + this.store.apartmentData.name = ''; + }}> + + + + + + + + + (this.store.apartmentData.address = text) + } + value={this.store.apartmentData.address} + /> + + { + this.store.apartmentData.address = ''; + }}> + + + + + this.floorSelect(value)}> + + + + + {this.floorStringReturn()} + + + + + + + + + + + + + + (this.store.apartmentData.unit = text)} + value={this.store.apartmentData.unit} + /> + + { + this.store.apartmentData.unit = ''; + }}> + + + + + + + ); + } +} +const styles = StyleSheet.flatten({ + inputTextView: { + marginTop: 20, + borderBottomWidth: 1, + borderBottomColor: colors.line2Color, + height: 30, + }, + imageView: { + width: width, + height: 250, + }, +}); diff --git a/src/pages/problems/problemCase.js b/src/pages/problems/problemCase.js new file mode 100644 index 0000000..476c2c1 --- /dev/null +++ b/src/pages/problems/problemCase.js @@ -0,0 +1,900 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + Share, + Alert, + Platform, + TextInput, + TouchableHighlightBase, +} from 'react-native'; +import ViewShot from 'react-native-view-shot'; +import CheckAnimate from '../../common/checkAnimate'; +import RNImageToPdf from 'react-native-image-to-pdf'; +import moment from 'moment'; +import CameraRoll from '@react-native-community/cameraroll'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; +import Modal, {ModalContent} from 'react-native-modals'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import Switch from 'react-native-switch-pro'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Realm from 'realm'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {queryUser} from '../../services/realm/realmManger'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import ImagePicker from 'react-native-image-crop-picker'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {width, height} from '../../common/screen'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; + +let unique = 0; +const {SlideInMenu} = renderers; +const asyncStorageHelper = new AsyncStorageHelper(); +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +@inject('appStore') +@observer +export default class ProblemCase extends Component { + @observable + data = null; + @observable + statusDisable = false; + @observable + editable = false; + @observable + buttonVisable = true; + @observable + caseData = { + id: '', + createDate: '', + status: 'Processing', + content: '', + log: [{content: ''}], + }; + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.apartmentData; + console.log(this.data); + console.log(this.props.navigation.state.params.type); + } + + async caseDataInit() { + this.caseData.id = this.data.id; + if (this.props.navigation.state.params.type == 'create') { + this.statusDisable = true; + this.caseData.createDate = moment().format('DD/MM/YYYY'); + this.editable = true; + } else { + this.caseData.status = this.props.navigation.state.params.data.status; + this.caseData.createDate = moment( + this.props.navigation.state.params.data.createDate, + ).format('DD/MM/YYYY'); + this.caseData.content = this.props.navigation.state.params.data.description; + this.editable = false; + this.caseData.log = []; + await this.props.navigation.state.params.data.log.map((items, index) => { + this.caseData.log.push(items); + }); + if (this.props.navigation.state.params.data.status == 'Completed') { + this.buttonVisable = false; + this.statusDisable = true; + } else { + var user = 0; + if (this.store.loginUserData.data.member.chara == 'owner') { + user = 0; + } else { + user = 1; + } + if (this.props.navigation.state.params.data.mtype != user) { + // this.buttonVisable = false; + + this.statusDisable = true; + } else { + // this.buttonVisable = true; + if ( + this.props.navigation.state.params.data.hasOwnProperty('helper') + ) { + this.statusDisable = true; + } + } + } + } + } + + componentDidMount() { + this.caseDataInit(); + } + + casePay() { + //if(this.store.loginUserData.data.member) + if (this.store.addedCard) { + var id = this.props.navigation.state.params.data.id; + this.store.casePayByCredit(id, this); + } else { + this.refs.toast.show('請先加入信用卡'); + } + } + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + renderCompleteButton() { + if (this.props.navigation.state.params.type == 'create') { + return ( + { + this.completeClickAcion(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.complete} + + + ); + } else { + if (this.props.navigation.state.params.data.status != 'Completed') { + if (this.props.navigation.state.params.data.cost > 0) { + if ( + this.props.navigation.state.params.data.client.id == + this.store.loginUserData.data.member.id && + this.props.navigation.state.params.data.status == 'Pending Payment' + ) { + return ( + { + this.casePay(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.pay} + + + ); + } else { + return ( + { + this.completeClickAcion(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.complete} + + + ); + } + } + return ( + { + this.completeClickAcion(); + }} + style={{ + position: 'absolute', + right: 20, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.store.text.complete} + + + ); + } else { + return ; + } + } + } + + renderPaybutton() {} + + statusSelection(data) { + console.log(data); + this.caseData.status = data; + } + + remarkEditable(index) { + if (this.props.navigation.state.params.data != null) { + if (index >= this.props.navigation.state.params.data.log.length) { + return true; + } else { + return false; + } + } else { + return true; + } + } + + renderPaymentInfo() { + if (this.props.navigation.state.params.data != null) { + if ( + this.props.navigation.state.params.data.client.id == + this.store.loginUserData.data.member.id && + this.props.navigation.state.params.data.cost > 0 + ) { + return ( + + + + + {'需付金額'} + + + + {'金額'} + + + {'HKD ' + this.props.navigation.state.params.data.cost} + + + + + + {'付款狀態'} + + + {this.props.navigation.state.params.data.status == + 'Pending Payment' + ? '未付款' + : '已付款'} + + + + + + + ); + } + } + } + + renderRemark() { + return this.caseData.log.map((items, index) => { + if (!items.hasOwnProperty('name')) { + return ( + + + + { + this.caseData.log[index].content = text; + }} + /> + + { + this.caseData.log.splice(index, 1); + this.buttonVisable = true; + }}> + + + + + ); + } else { + return ( + + + + { + this.caseData.log[index].content = text; + }} + /> + + + + + {items.name} + + + + {moment(items.createDate).format('DD/MM/YYYY hh:mm')} + + + + + ); + } + }); + } + + statusTextReturn() { + switch (this.caseData.status) { + case 'Processing': + return this.store.text.process; + break; + case 'Pending Payment': + return this.store.text.pendingPayment; + case 'Completed': + return this.store.text.closeFile; + break; + } + } + + renderBackIcon() { + return ( + { + console.log('back'); + history.goBack(this); + }}> + + + ); + } + + async completeClickAcion() { + if (this.caseData.content != '' || this.caseData.content.length > 0) { + if (this.props.navigation.state.params.type == 'create') { + this.store.postCase(this.caseData, this); + } else { + if (this.caseData.status == 'Completed') { + if ( + this.caseData.log.length > + this.props.navigation.state.params.data.log.length + ) { + await this.store.updateCaseLog( + this.caseData.log[ + this.props.navigation.state.params.data.log.length + ], + this.props.navigation.state.params.data.id, + false, + this, + ); + + this.store.finishCase( + true, + this, + this.props.navigation.state.params.data.id, + ); + } else { + this.store.finishCase( + true, + this, + this.props.navigation.state.params.data.id, + ); + } + } else { + if ( + this.caseData.log.length > + this.props.navigation.state.params.data.log.length + ) { + await this.store.updateCaseLog( + this.caseData.log[ + this.props.navigation.state.params.data.log.length + ], + this.props.navigation.state.params.data.id, + true, + this, + ); + } else { + this.props.navigation.popToTop(); + } + } + } + } else { + this.refs.toast.show('Please input problems'); + } + } + + render() { + return ( + + + + + + {this.store.text.report + this.store.text.problems} + + {this.renderBackIcon()} + {this.renderCompleteButton()} + + + + + + + {this.store.text.propertyinfo} + + {this.data.name} + + {this.data.address} + + + + {this.store.text.id} + + + {this.data.id} + + + + + + {this.store.text.date} + + + {this.caseData.createDate} + + + + + + + + + {this.store.text.owner + this.store.text.info} + + + + + {this.store.text.owner} + + + {this.data.owner.fullname} + + + + + + {this.store.text.phonenumber} + + + {'+' + + this.data.owner.countryCode + + ' ' + + this.data.owner.phone} + + + + + + + + + + {this.store.text.tenant + this.store.text.info} + + + + + {this.store.text.tenant} + + + {this.data.hasOwnProperty('tenant') + ? this.data.tenant.fullname + : '--'} + + + + + + {this.store.text.phonenumber} + + + {this.data.hasOwnProperty('tenant') + ? '+' + + this.data.tenant.countryCode + + ' ' + + this.data.tenant.phone + : '--'} + + + + + + {this.renderPaymentInfo()} + + + {this.store.text.problems} + + + {this.store.text.status} + + + this.statusSelection(value)}> + + + + {this.statusTextReturn()} + + + + + + + + + + + + + + + {this.store.text.problems} + + + + + { + this.caseData.content = text; + }} + /> + + { + this.caseData.content = ''; + }}> + + + + + + {this.renderRemark()} + + {this.buttonVisable ? ( + { + this.caseData.log.push({content: ''}); + if (this.props.navigation.state.params.type != 'create') { + this.buttonVisable = false; + } + }}> + + {'+' + this.store.text.add} + + + ) : ( + + )} + + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + titleView: { + marginRight: 5, + marginLeft: 5, + marginTop: 10, + width: scale(265), + }, + + titieStyle: { + fontSize: 20, + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + marginRight: 5, + marginLeft: 5, + marginTop: 20, + }, + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + textView: { + fontFamily: Fonts.ubuntuL, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(370), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + title: { + fontSize: 20, + color: 'black', + fontFamily: Fonts.ubuntu, + }, + + text: { + marginTop: 7, + color: colors.textColor, + fontSize: 19, + fontFamily: Fonts.ubuntu, + }, + triggerText: { + color: 'white', + }, + slideInOption: { + padding: 5, + }, + nameAndDate: { + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + fontSize: 13, + }, +}); diff --git a/src/pages/profile/card.js b/src/pages/profile/card.js new file mode 100755 index 0000000..7a4d6f8 --- /dev/null +++ b/src/pages/profile/card.js @@ -0,0 +1,378 @@ +import React, { Component } from "react"; +import { + Platform, + StyleSheet, + View, + TouchableOpacity, + Alert, + SafeAreaView, + Text +} from "react-native"; +import { observable, action, transaction } from "mobx"; +import { Button } from "react-native-elements"; +import { observer, inject } from "mobx-react" + +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import Icon from "react-native-vector-icons/dist/Ionicons"; +import Icon2 from "react-native-vector-icons/dist/MaterialCommunityIcons"; +import Toast, { DURATION } from "react-native-easy-toast"; +import BackHeader from '../../components/backHeader' +import LoadingView from '../../common/loading'; +import { + CreditCardInput, + LiteCreditCardInput +} from "react-native-credit-card-input"; +//component + +// function +import { width, height } from "../../common/screen"; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import Size from "../../common/size"; +const size = new Size(); +//const log = new Log() +@inject("appStore") +@observer +export default class Payment extends Component { + @observable + menu = false; + @observable + addCard = false; + cardData = null; + + static navigationOptions = { + drawerLabel: "Account" + }; + + constructor(props) { + super(props); + this.store = props.appStore; + } + + changeIndex(index) { + this.tabMap.index = index; + } + + addCardAction() { + var BreakException = {}; + if (this.cardData != null) { + if (this.cardData.valid) { + let data = { + num: this.cardData.values.number.replace(/\s/g, ""), + expiry: this.cardData.values.expiry.replace("/", ""), + cvc: this.cardData.values.cvc + }; + + console.log(this.cardData); + // log.firebaseLog('press_add_button_on_creditCard_progress',{}) + this.store.postCreditCard(this, data); + } else { + try { + Object.keys(this.cardData.status).forEach(e => { + console.log(e + " - " + this.cardData.status[e]); + if ( + this.cardData.status[e] == "incomplete" || + this.cardData.status[e] == "invalid" + ) { + this.refs.toast.show(e + " " + this.cardData.status[e]); + throw BreakException; + } + }); + } catch (e) { + if (e !== BreakException) throw e; + } + } + } else { + console.log("error"); + this.refs.toast.show("please insert card number"); + } + } + + testing(token, data) { + Alert.alert(token, data, { text: "ok", onPress: () => console.log("ok") }); + } + @action + removeCard() { + Alert.alert("", "Are you sure? ", [ + { text: "Cancel", onPress: () => console.log("Cancel") }, + { + text: "Sure", + onPress: () => this.store.deleCreditCard(this) + } + ]); + } + + + + render() { + return ( + + + + + + + {!this.store.addedCard ? ( + + + + + + { + this.addCard = true; + // log.firebaseLog('press_add_creditCard_button',{}) + }} + > + + Add credit card + + + + {this.addCard ? ( + + (this.cardData = form)} + /> + + + { + this.addCardAction(); + }} + > + Add + + { + this.addCard = false; + this.cardData = null; + // log.firebaseLog('press_cancel_button_on_creditCard_progress',{}) + }} + > + CANCEL + + + + ) : ( + + )} + + ) : ( + + + + + + { + this.addCard = true; + }} + > + + {this.store.creditCardinfo.num} + + (this.menu = !this.menu)} + > + + + + + )} + + {this.menu ? ( + + + + { + this.removeCard(); + this.menu = !this.menu; + // log.firebaseLog('press_remove_card_button',{}) + }} + > + Remove Card + + { + this.menu = !this.menu; + }} + > + CANCEL + + + + ) : ( + + )} + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: "center", + backgroundColor: "white" + }, + welcome: { + fontSize: 20, + textAlign: "center", + margin: 10 + }, + instructions: { + textAlign: "center", + color: "#333333", + marginBottom: 5 + }, + buttonView: { + width: "80%", + height: 60, + marginTop: 10, + alignItems: "center", + justifyContent: "center", + borderColor: "black", + borderWidth: 1 + }, + textView:{ + color:colors.textColor, + fontFamily:Fonts.ubuntu + }, + label: { + color: "black", + fontSize: 12 + }, + input: { + fontSize: 16, + color: "black" + } +}); diff --git a/src/pages/profile/payment.js b/src/pages/profile/payment.js new file mode 100755 index 0000000..3cd816f --- /dev/null +++ b/src/pages/profile/payment.js @@ -0,0 +1,161 @@ +import React, { Component } from 'react' +import { View, Text, TouchableHighlight, StyleSheet, TouchableOpacity, Image, Slider } from 'react-native' +import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import NaviBar from '../../components/navi-bar'; +import history from "../../common/history"; +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import SliderWidget from '../../components/slider-widget'; +import Icon from "react-native-vector-icons/FontAwesome5"; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import CommonTextInput from '../../components/commonTextInput' +import { inject, observer } from "mobx-react"; +import { observable } from 'mobx' +import BackHeader from '../../components/backHeader' +import { width, height } from "../../common/screen"; +import Size from "../../common/size"; +const size = new Size(); + + + +@inject("appStore") +@observer +export default class Payment extends Component { + @observable sliderBgValue = 1 + @observable sliderValue = 1 + constructor(props) { + super(props); + this.store = props.appStore; + } + + showSliderBgValueFun = (value) => { + this.sliderBgValue = value + console.log(value) + } + + textreturn() { + return this.sliderValue * 10 + } + + render() { + const thirdPartyLoginButtons = [{ text: this.store.text.googleLogin, icon: 'google', color: '#2D9AFF', which: 'google' }, + { text: this.store.text.facebookLogin, icon: 'facebook-square', color: '#295BA2', which: 'facebook' }, + { text: this.store.text.wechatLogin, icon: 'weixin', color: '#00E86E', which: 'wechat' }] + return ( + + + + + + {this.store.text.addToken} + + + + + {this.textreturn()} + + { this.sliderValue = value }} + minimumTrackTintColor={colors.mainColor} + maximumTrackTintColor="#DBE3E5" + thumbTintColor={colors.mainColor} + /> + + {this.store.text.tokens} + + + + + {"$ " + this.sliderValue * 100} + + + + + + + + + {this.store.text.paymentGateway} + + + + + + + + + + + + + {this.store.text.ok} + + + + + ) + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: "#fff" + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 10, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + gatewayBoxStyle: { + justifyContent: 'center', + alignItems: 'center', + width: 120, + height: 120, + borderColor: colors.textColor, borderWidth: 1, + borderRadius: 20, + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.20, + shadowRadius: 1.41, + + elevation: 2, + } +}); diff --git a/src/pages/profile/profile.js b/src/pages/profile/profile.js new file mode 100755 index 0000000..f79934d --- /dev/null +++ b/src/pages/profile/profile.js @@ -0,0 +1,771 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + ScrollView, + Alert, + Image, + Linking, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import Switch from 'react-native-switch-pro'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Modal, {ModalContent} from 'react-native-modals'; +import {Avatar} from 'react-native-elements'; +import Global from '../../services/Global'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import RadioForm, { + RadioButton, + RadioButtonInput, + RadioButtonLabel, +} from 'react-native-simple-radio-button'; +import {NavigationActions} from 'react-navigation'; +import Swiper from 'react-native-swiper'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import CheckAnimate from '../../common/checkAnimate'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {Dropdown} from 'react-native-material-dropdown'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import BackHeader from '../../components/backHeader'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); + +var radio_props = [ + {label: 'English', value: 'english'}, + {label: '繁體中文', value: 'hk'}, + {label: '简体中文', value: 'ch'}, +]; + +@inject('appStore') +@observer +export default class Profile extends Component { + @observable swiperIndex = 0; + @observable notification = true; + @observable dialogLanguageVisable = false; + @observable dialogInputVisable = false; + @observable changeCharVisable = false; + @observable languageIndex = 0; + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount() { + switch (this.store.languageSelection) { + case 'english': + this.languageIndex = 0; + break; + case 'hk': + this.languageIndex = 1; + break; + case 'ch': + this.languageIndex = 2; + break; + } + } + + switchInfoAndSetting(index) { + console.log('index: ' + index); + console.log('swiper index: ' + this.swiperIndex); + if (index == 0) { + if (this.swiperIndex === 1) { + console.log('test'); + this._swiper.scrollBy(-1); + } + } else if (index === 1) { + if (this.swiperIndex !== 1) { + this._swiper.scrollBy(1); + } + } + } + + settingAction(action) { + switch (action) { + case 'language': + this.dialogLanguageVisable = true; + console.log(this.dialogLanguageVisable); + + break; + + case 'creditCard': + history.push(this, '/card'); + break; + + case 'signature': + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + this.store.signUri = this.store.loginUserData.data.member.sign; + } + if (this.store.loginUserData.data.member.hasOwnProperty('stamp')) { + this.store.stampUri = this.store.loginUserData.data.member.stamp; + } + history.push(this, '/signatureView', { + imageUri: this.store.loginUserData.data.member.sign, + }); + break; + case 'changechar': + if (this.store.loginUserData != null) { + this.refs.toast.show(this.store.text.plbctc); + } else { + // this.props.navigation.navigate("SelectChar",{change:true}); + this.changeCharVisable = true; + } + break; + + case 'tutorial': + var data = { + type: this.store.user.memberType, + first: false, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + break; + + case 'privacy': + Linking.openURL('https://rent-chat.com/terms-conditions.html#private'); + break; + + case 'terms': + this.store.genNonce() + // Linking.openURL('https://rent-chat.com/terms-conditions.html'); + break; + case 'logout': + this.logoutAction(); + break; + case 'login': + history.push(this, '/signin', { + icon: true, + backToHome: this.backToHome, + }); + break; + } + } + + backToHome = back => { + if (back) { + console.log('backtohome'); + // this.props.navigation.navigate('home'); + this.store.CheckWhichLocalApartmentNotSync(this); + } + }; + + async clickAction() { + await this.store.startAnimate(); + await history.push(this, '/news'); + // this.store.animateStatus.show = false; + } + logoutAction() { + Alert.alert( + '', + this.store.text.austlo, + [ + { + text: this.store.text.cancel, + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: this.store.text.sure, + onPress: () => { + this.store.logoutPost(this, false, {}); + }, + }, + ], + {cancelable: false}, + ); + } + + inputAction(action) { + switch (action) { + case 'phone': + break; + + case 'phone': + break; + + case 'phone': + break; + } + } + + renderMain() { + const logoutSettingList = [ + {title: this.store.text.language, switch: false, action: 'language'}, + + { + title: this.store.text.notification, + switch: true, + action: 'notification', + }, + {title: this.store.text.changechar, switch: false, action: 'changechar'}, + {title: this.store.text.tutorial, switch: false, action: 'tutorial'}, + {title: this.store.text.privacy, switch: false, action: 'privacy'}, + {title: this.store.text.terms, switch: false, action: 'terms'}, + {title: this.store.text.signin, switch: false, action: 'login'}, + ]; + const settingList = [ + {title: this.store.text.language, switch: false, action: 'language'}, + { + title: this.store.text.creditCard, + switch: false, + action: 'creditCard', + }, + { + title: this.store.text.signature, + switch: false, + action: 'signature', + }, + { + title: this.store.text.notification, + switch: true, + action: 'notification', + }, + {title: this.store.text.changechar, switch: false, action: 'changechar'}, + {title: this.store.text.tutorial, switch: false, action: 'tutorial'}, + {title: this.store.text.privacy, switch: false, action: 'privacy'}, + {title: this.store.text.terms, switch: false, action: 'terms'}, + {title: this.store.text.logout, switch: false, action: 'logout'}, + ]; + if (this.store.logined) { + return ( + + + + + {this.store.loginUserData.data.member.fullname} + + + {this.store.loginUserData.data.member.chara} + + + + + + + {this.store.apartmentsData.length} + + + {this.store.text.property} + + + + + + 0 + + {this.store.text.coupons} + + + + + + { + this.switchInfoAndSetting(0); + }} + style={{ + flex: 1, + height: 30, + justifyContent: 'center', + alignItems: 'center', + borderWidth: 0.5, + borderColor: colors.textColor, + borderTopLeftRadius: 6, + borderBottomLeftRadius: 6, + backgroundColor: + this.swiperIndex === 0 ? colors.mainColor : 'white', + }}> + + {this.store.text.information} + + + { + this.switchInfoAndSetting(1); + }} + style={{ + flex: 1, + height: 30, + justifyContent: 'center', + alignItems: 'center', + borderWidth: 0.5, + borderColor: colors.textColor, + borderTopRightRadius: 6, + borderBottomRightRadius: 6, + backgroundColor: + this.swiperIndex === 1 ? colors.mainColor : 'white', + }}> + + {this.store.text.setting} + + + + + { + this._swiper = swiper; + }} + loop={false} + onIndexChanged={index => { + (this.swiperIndex = index), console.log(this.swiperIndex); + }}> + + { + if (this.store.loginUserData.data.member.phone == null) { + var data = { + vercode: '', + fullname: '', + email: '', + gender: 'na', + countryCode: '852', + chara: 'owner', + age: 'na', + thirdParty: true, + pwd: '', + phone: '', + refcode: '', + ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + }; + history.push(this, '/signUpVerify', { + signupData: data, + addphone: true, + }); + } + }}> + + + {this.store.text.phonenumber} + + + + + {this.store.loginUserData.data.member.phone == null + ? this.store.text.clickHereToEnterYourMobile + : '+' + + this.store.loginUserData.data.member.countryCode + + ' ' + + this.store.loginUserData.data.member.phone} + + + + + + + + + {this.store.text.email} + + + + + {this.store.loginUserData.data.member.email} + + {/* */} + + + + + + + {this.store.text.password} + + + + ******** + {/* */} + + + + + this.clickAction()}> + Version: 1.1 + + + + + {settingList.map((items, index) => { + if (items.switch) { + return ( + + + + {items.title} + + + + { + (this.notification = value), + console.log(value + ' ' + this.notification); + }} + /> + + + ); + } else { + return ( + { + this.settingAction(items.action); + }}> + + + {items.title} + + + + + + + ); + } + })} + + + + ); + } else { + return ( + + + {logoutSettingList.map((items, index) => { + if (items.switch) { + return ( + + + {items.title} + + + { + (this.notification = value), + console.log(value + ' ' + this.notification); + }} + /> + + + ); + } else { + return ( + { + this.settingAction(items.action); + }}> + + {items.title} + + + + + + ); + } + })} + + + ); + } + } + + render() { + return ( + + + { + if (this.store.logined) { + this.store.gotohelperChat(this); + } else { + // const navigateAction = NavigationActions.navigate({ + // routeName: 'home', + // action: NavigationActions.navigate({ routeName: 'home' }), + // }); + // this.props.navigation.dispatch(navigateAction); + this.props.navigation.navigate('home'); + } + }} + /> + {this.renderMain()} + { + this.dialogLanguageVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.dialogLanguageVisable = false; + }}> + + + + {radio_props.map((obj, i) => { + return ( + + { + this.languageIndex = i; + this.store.changeLanguage(obj.value); + console.log(this.languageIndex); + }} + borderWidth={1} + buttonInnerColor={colors.mainColor} + buttonOuterColor={ + this.languageIndex === i + ? colors.mainColor + : colors.textColor + } + buttonSize={15} + buttonOuterSize={30} + buttonStyle={{}} + buttonWrapStyle={{marginLeft: 10}} + /> + { + this.languageIndex = i; + this.store.changeLanguage(obj.value); + }} + labelStyle={{ + fontSize: 14, + color: colors.textColor, + fontFamily: Fonts.ubuntu, + }} + labelWrapStyle={{}} + /> + + ); + })} + + + + + { + this.changeCharVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.changeCharVisable = false; + }}> + + + { + this.changeCharVisable = false; + this.store.changeChar(this, 0); + }}> + + + + {this.store.text.owner} + + + + { + this.changeCharVisable = false; + this.store.changeChar(this, 1); + }}> + + + + {this.store.text.tenant} + + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + + midInfoView: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + numberTextView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 20, + }, + smallIconView: { + position: 'absolute', + top: 0, + right: 10, + }, + slide1: { + alignItems: 'center', + flex: 1, + }, + slide2: { + justifyContent: 'center', + alignItems: 'center', + }, + + settingTextView: { + borderBottomColor: colors.textColor, + borderBottomWidth: 1, + marginTop: 10, + height: verticalScale(40), + borderRadius: 5, + flexDirection: 'row', + width: width - 30, + alignItems: 'center', + }, + settingLeftTextView: { + alignItems: 'flex-start', + flex: 0.4, + }, + settingRightTextView: { + justifyContent: 'flex-end', + alignItems: 'center', + flexDirection: 'row', + flex: 0.6, + }, + settingLeftText: { + color: colors.textColor, + fontSize: 15, + fontFamily: Fonts.ubuntuL, + }, + settingRightText: { + color: colors.textColor, + fontSize: 15, + fontFamily: Fonts.ubuntuL, + alignItems: 'flex-start', + marginRight: 10, + }, + textStyle: { + color: 'white', + fontFamily: Fonts.ubuntu, + fontSize: 14, + }, +}); diff --git a/src/pages/property/industrialBuilding.js b/src/pages/property/industrialBuilding.js new file mode 100644 index 0000000..9a78b1a --- /dev/null +++ b/src/pages/property/industrialBuilding.js @@ -0,0 +1,486 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + ScrollView, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Icon2 from 'react-native-vector-icons/MaterialCommunityIcons'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {SearchBar} from 'react-native-elements'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; + +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import BackHeader from '../../components/backHeader'; +import {queryUser} from '../../services/realm/realmManger'; +import IndustrialBuildingList from './industrialBuildingList'; +//import Swiper from 'react-native-swiper' +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import AddFunction from '../../common/addFunction'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import * as rssParser from 'react-native-rss-parser'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +import Realm from 'realm'; +import {observable, set} from 'mobx'; +import {func} from 'prop-types'; +import moment from 'moment'; + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +const sortString = [ + {value: 0, label: '價錢低到高'}, + {value: 1, label: '價錢高到低'}, + {value: 2, label: '日期新到舊'}, +]; +@inject('appStore') +@observer +export default class IndustrialBuilding extends Component { + @observable + news = []; + @observable + areaA = ['全部']; + @observable + areaB = ['全部']; + @observable + areaAValue = '全部'; + @observable + areaBValue = '全部'; + @observable + dropdownListDisable = true; + @observable + rentApartmentData = null; + @observable + areaAData = null; + @observable + sort = 2; + @observable + search = ''; + constructor(props) { + super(props); + this.store = props.appStore; + } + static navigationOptions = ({navigation}) => { + const {params = {}} = navigation.state; + return { + tabBarLabel: params.handleThis, + }; + }; + async componentWillMount() { + //this.loadNews() + await this.store.getBuildingInfo(); + this.rentApartmentData = [...this.store.rentApartmentData]; + this.sortAction(); + await this.getAreaA(); + this.props.navigation.setParams({ + handleThis: this.store.text.rentalInfo, + }); + } + + sortAction() { + if (this.sort == 0) { + console.log(this.rentApartmentData[0].newprice); + // this.rentApartmentData.sort((a, b) => (a.tprice > b.tprice ? 1 : -1)); + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newprice > b.newprice ? 1 : b.newprice > a.newprice ? -1 : 0, + ); + console.log(moment(this.rentApartmentData[0].date, 'M/D/YY').unix()); + //this.rentApartmentData.sort(this.compare); + } else if (this.sort == 1) { + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newprice < b.newprice ? 1 : b.newprice < a.newprice ? -1 : 0, + ); + } else { + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newDate < b.newDate ? 1 : b.newDate < a.newDate ? -1 : 0, + ); + } + } + + updateSearch = search => { + this.setState({search}); + }; + + async getAreaA() { + var array = ['全部']; + await this.store.rentApartmentData.map((items, index) => { + array.push(items.loc); + }); + + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaA = backToArray; + + //Array.from(new Set(array)) + console.log(backToArray); + } + + async areaADropDownListOnSelect(value) { + this.areaAValue = value; + var index = this.areaA.findIndex(element => element == value); + console.log(index); + if (index == 0) { + this.dropdownListDisable = true; + this.rentApartmentData = [...this.store.rentApartmentData]; + this.areaAData = [...this.store.rentApartmentData]; + this.areaB = ['全部']; + + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + this.dropdownListDisable = false; + var newData = await this.store.rentApartmentData.filter(function(item) { + return item.loc == value; + }); + this.rentApartmentData = [...newData]; + this.areaAData = [...newData]; + } + this.sortAction(); + } + + selectSort(items) { + // if (items == 0) { + // this.sort = true; + // console.log(this.sort); + // this.sortAction(); + // } else { + // this.sort = false; + // this.sortAction(); + // } + this.sort = items; + this.sortAction(); + } + + SearchFilterFunction(text) { + //passing the inserted text in textinput + const newData = this.store.rentApartmentData.filter(function(item) { + //applying filter for the inserted text in search bar + const itemData = item.estate; + const textData = text; + return itemData.indexOf(textData) > -1; + }); + this.rentApartmentData = [...newData]; + this.search = text; + this.sortAction(); + } + + async areaBDropDownListOnSelect(value) { + this.areaBValue = value; + var index = this.areaB.findIndex(element => element == value); + if (index == 0) { + this.rentApartmentData = [...this.areaAData]; + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + var newData = await this.areaAData.filter(function(item) { + return item.loc2 == value; + }); + this.rentApartmentData = [...newData]; + } + this.sortAction(); + } + + render() { + return ( + + + + { + this.SearchFilterFunction(text); + }} + onClear={text => this.SearchFilterFunction('')} + inputContainerStyle={{backgroundColor: '#F1EDED', borderRadius: 10}} + value={this.search} + /> + + + {/* { + this.areaADropDownListOnSelect(index, value); + }} + dropdownTextStyle={{fontSize: 14}} + /> */} + { + this.areaADropDownListOnSelect(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + + + {this.store.text.district} + + + {this.areaAValue} + + + + + + {this.areaA.map((obj, i) => { + return ; + })} + + + + + + {/* + + + 地區2: + + */} + {/* + { + this.areaBDropDownListOnSelect(index, value); + }} + dropdownTextStyle={{fontSize: 14}} + /> + */} + {/* { + this.areaBDropDownListOnSelect(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + {this.areaBValue} + + + + {this.areaB.map((obj, i) => { + return ; + })} + + */} + + + { + // this.areaBDropDownListOnSelect(value); + console.log(value); + this.selectSort(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + + 排序 + + + + {sortString.map((obj, i) => { + return ; + })} + + + + + + { + this.flatListRef = ref; + }} + data={this.rentApartmentData} + renderItem={({item}) => ( + { + // history.push(this, '/propertyDetails', {rentData: item}); + // }} + /> + )} + keyExtractor={item => item.id} + /> + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/property/industrialBuildingList.js b/src/pages/property/industrialBuildingList.js new file mode 100644 index 0000000..722f26a --- /dev/null +++ b/src/pages/property/industrialBuildingList.js @@ -0,0 +1,197 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {width, height} from '../../common/screen'; + +export default class IndustrialBuildingList extends Component { + constructor(props) { + super(props); + } + + renderMobile() { + if (this.props.items.mobile != '') { + return ( + + {'手機: ' + this.props.items.mobile} + + ); + } else { + return {'手機: N/A'}; + } + } + + renderTel() { + if (this.props.items.tel != '') { + return ( + {'電話: ' + this.props.items.tel} + ); + } else { + return {'電話: N/A'}; + } + } + + rentReturn(rent) { + var newRent = rent.slice(rent.indexOf('$')); + return newRent.replace(/\s/g, ''); + } + + renderName() { + var name = this.props.items.estate + ', '; + if (this.props.items.phase != '') { + name = name + this.props.items.phase + '期, '; + } + if (this.props.items.bldg != '') { + name = name + this.props.items.bldg + ', '; + } + if (this.props.items.block != '') { + name = name + this.props.items.block + '座, '; + } + if (this.props.items.fl != '') { + name = name + this.props.items.fl + ', '; + } + if (this.props.items.room != '') { + name = name + this.props.items.room + '室'; + } + return name; + } + + render() { + return ( + + + {this.props.items.name} + + + + + {'地區: '} + + {this.props.items.loc} + + + + + {'面積: '} + + {this.props.items.area} + + + + + {'尺價: '} + + {'HKD ' + this.props.items.unitPrice.replace('@', '')} + + + + {'層數: '} + + {this.props.items.floor} + + + + {'類型: '} + + {this.props.items.type} + + + + {'消息來源: '} + + {this.props.items.info} + + + + {'日期: '} + + {this.props.items.date} + + + + + {'租屋成交價: '} + + {'HKD ' + this.rentReturn(this.props.items.price)} + + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + textView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: colors.textColor, + fontSize: 16, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/property/property.js b/src/pages/property/property.js new file mode 100644 index 0000000..33cb01e --- /dev/null +++ b/src/pages/property/property.js @@ -0,0 +1,512 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + ScrollView, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Icon2 from 'react-native-vector-icons/MaterialCommunityIcons'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {SearchBar} from 'react-native-elements'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; + +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import BackHeader from '../../components/backHeader'; +import {queryUser} from '../../services/realm/realmManger'; +import PropertyList from './propertyList'; +//import Swiper from 'react-native-swiper' +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import AddFunction from '../../common/addFunction'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import * as rssParser from 'react-native-rss-parser'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +import Realm from 'realm'; +import {observable, set} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +const sortString = [ + {value: 0, label: '價錢低到高'}, + {value: 1, label: '價錢高到低'}, + {value: 2, label: '日期新到舊'}, +]; + +const region = [ + { + ch: '香港島', + en: 'Hong Kong Island', + district: [ + {ch: '中西區', en: 'Central and Western'}, + {ch: '灣仔區', en: 'Wan Chai'}, + {ch: '東區', en: 'Eastern'}, + {ch: '南區', en: 'Southern'}, + ], + }, + { + ch: '九龍', + en:'Kowloon', + district: [ + {ch: '深水埗區', en: 'Sham Shui Po'}, + {ch: '油尖旺區', en: 'Yau Tsim Mong'}, + {ch: '九龍城區', en: 'Kowloon City'}, + {ch: '黃大仙區', en: 'Wong Tai Sin'}, + {ch: '觀塘區', en: 'Kwun Tong'}, + ], + }, + { + ch: '新界', + en:'New Territories', + district: [ + {ch: '葵青區',en:'Kwai Tsing'}, + {ch: '荃灣區',en:'Tsuen Wan'}, + {ch: '屯門區',en:'Tuen Mun'}, + {ch: '元朗區',en:'Yuen Long'}, + {ch: '北區',en:'North'}, + {ch: '大埔區',en:'Tai Po'}, + {ch: '沙田區',en:'Sha Tin'}, + {ch: '西貢區',en:'Sai Kung'}, + {ch: '離島區',en:'Islands'}, + ], + }, +]; + +@inject('appStore') +@observer +export default class Property extends Component { + @observable + news = []; + @observable + areaA = ['全部']; + @observable + areaB = ['全部']; + @observable + areaAValue = '全部'; + @observable + areaBValue = '全部'; + @observable + dropdownListDisable = true; + @observable + rentApartmentData = null; + @observable + areaAData = null; + @observable + sort = 2; + @observable + search = ''; + constructor(props) { + super(props); + this.store = props.appStore; + } + static navigationOptions = ({navigation}) => { + const {params = {}} = navigation.state; + return { + tabBarLabel: params.handleThis, + }; + }; + async componentWillMount() { + //this.loadNews() + await this.store.getRentInfo(); + this.rentApartmentData = [...this.store.rentApartmentData]; + this.sortAction(); + await this.getAreaA(); + this.props.navigation.setParams({ + handleThis: this.store.text.rentalInfo, + }); + } + + sortAction() { + if (this.sort == 0) { + // this.rentApartmentData.sort((a, b) => (a.tprice > b.tprice ? 1 : -1)); + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newprice > b.newprice ? 1 : b.newprice > a.newprice ? -1 : 0, + ); + //this.rentApartmentData.sort(this.compare); + } else if (this.sort == 1) { + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newprice < b.newprice ? 1 : b.newprice < a.newprice ? -1 : 0, + ); + } else { + var newArray = [...this.rentApartmentData]; + this.rentApartmentData = newArray.sort((a, b) => + a.newDate < b.newDate ? 1 : b.newDate < a.newDate ? -1 : 0, + ); + } + } + + updateSearch = search => { + this.setState({search}); + }; + + async getAreaA() { + var array = ['全部']; + await this.store.rentApartmentData.map((items, index) => { + array.push(items.loc1); + }); + + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaA = backToArray; + + //Array.from(new Set(array)) + console.log(backToArray); + } + + async areaADropDownListOnSelect(value) { + this.areaAValue = value; + var index = this.areaA.findIndex(element => element == value); + console.log(index); + if (index == 0) { + this.dropdownListDisable = true; + this.rentApartmentData = [...this.store.rentApartmentData]; + this.areaAData = [...this.store.rentApartmentData]; + this.areaB = ['全部']; + + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + this.dropdownListDisable = false; + var newData = await this.store.rentApartmentData.filter(function(item) { + return item.loc1 == value; + }); + this.rentApartmentData = [...newData]; + this.areaAData = [...newData]; + var array = ['全部']; + await this.rentApartmentData.map((items, index) => { + array.push(items.loc2); + }); + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaB = backToArray; + } + this.sortAction(); + } + + selectSort(items) { + this.sort = items; + this.sortAction(); + } + + SearchFilterFunction(text) { + //passing the inserted text in textinput + const newData = this.store.rentApartmentData.filter(function(item) { + //applying filter for the inserted text in search bar + const itemData = item.estate; + const textData = text; + return itemData.indexOf(textData) > -1; + }); + this.rentApartmentData = [...newData]; + this.search = text; + this.sortAction(); + } + + async areaBDropDownListOnSelect(value) { + this.areaBValue = value; + var index = this.areaB.findIndex(element => element == value); + if (index == 0) { + this.rentApartmentData = [...this.areaAData]; + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + var newData = await this.areaAData.filter(function(item) { + return item.loc2 == value; + }); + this.rentApartmentData = [...newData]; + } + this.sortAction(); + } + + render() { + return ( + + + + { + this.SearchFilterFunction(text); + }} + onClear={text => this.SearchFilterFunction('')} + inputContainerStyle={{backgroundColor: '#F1EDED', borderRadius: 10}} + value={this.search} + /> + + + + { + this.areaADropDownListOnSelect(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + + + {this.store.text.region} + + + {this.areaAValue} + + + + + {this.areaA.map((obj, i) => { + return ; + })} + + + + + + { + this.areaBDropDownListOnSelect(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + + + {this.store.text.district} + + + {this.areaBValue} + + + + + + {this.areaB.map((obj, i) => { + return ; + })} + + + + + + { + // this.areaBDropDownListOnSelect(value); + console.log(value); + this.selectSort(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + + 排序 + + + + {sortString.map((obj, i) => { + return ; + })} + + + + + + { + this.flatListRef = ref; + }} + data={this.rentApartmentData} + renderItem={({item}) => ( + { + // history.push(this, '/propertyDetails', {rentData: item}); + // }} + /> + )} + keyExtractor={item => item.id} + /> + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/property/propertyDetails.js b/src/pages/property/propertyDetails.js new file mode 100644 index 0000000..e1c7ec7 --- /dev/null +++ b/src/pages/property/propertyDetails.js @@ -0,0 +1,255 @@ +import React, { Component } from "react"; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + Share, + Alert, + Linking +} from "react-native"; +import FastImage from "react-native-fast-image"; +import Icon from "react-native-vector-icons/FontAwesome5"; +import StepIndicator from "react-native-step-indicator"; +import Modal, { ModalContent } from "react-native-modals"; +import Switch from "react-native-switch-pro"; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from "../../assets/styles/fonts-theme"; +import Realm from "realm"; +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import LoadingView from "../../common/loading"; +import history from "../../common/history"; +import NaviBar from "../../components/navi-bar"; +import Migrations from "../../services/realm/Mirgrations"; +import BackHeader from "../../components/backHeader"; +import { inject, observer } from "mobx-react"; +import { observable } from "mobx"; +import { queryUser } from "../../services/realm/realmManger"; +import AsyncStorageHelper from "../../common/asyncStorageHelper"; +import ImagePicker from "react-native-image-crop-picker"; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea +} from "../../services/realm/schemeas"; +import { width, height } from "../../common/screen"; +const asyncStorageHelper = new AsyncStorageHelper(); + +let realm = new Realm({ schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea] }); + +@inject("appStore") +@observer +export default class PropertyDetails extends Component { + @observable + data = null; + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.rentData; + } + + componentDidMount() {} + + renderProject() { + var project = [ + this.data.prj1, + this.data.prj2, + this.data.prj3, + this.data.prj4, + this.data.prj5, + this.data.prj6 + ]; + return project.map((items, index) => { + if (items != "") { + return {items}; + } + }); + } + + renderMobile() { + if (this.data.mobile != "") { + return ( + + {"手機: "} + { + Linking.openURL(`tel:${this.data.mobile}`); + }} + > + {this.data.mobile} + + + ); + } else { + return {"手機: N/A"}; + } + } + + renderTel() { + if (this.data.tel != "") { + return ( + + {"電話: "} + { + Linking.openURL(`tel:${this.data.tel}`); + }} + > + {this.data.tel} + + + ); + } else { + return {"電話: N/A"}; + } + } + + renderWebSite() { + if (this.data.website != "") { + return ( + + {"網站: "} + { + Linking.openURL(this.data.website).catch(err => + console.error("Couldn't load page", err) + ); + }} + > + {this.data.website} + + + ); + } else { + return {"網站: N/A"}; + } + } + + render() { + console.log(this.store.image); + var data = this.store.apartmentData; + return ( + + + + + {"屋苑: " + this.data.estate} + + + {"地區: " + this.data.loc1+this.data.loc2} + + {"期: " + this.data.phase} + {"大廈: " + this.data.bldg} + {"座: " + this.data.block} + {"樓層: " + this.data.fl} + {"室: " + this.data.room} + {"租屋成交價: "+"HKD "+this.data.tprice} + {"成交日期: " + this.data.date} + {"建築面積: "+this.data.carea+""} + {"實用面積: "+this.data.aarea+""} + {"建築面積尺價:: " +"HKD "+this.data.cprice} + {"實用面積尺價:: " +"HKD "+ this.data.aprice} + + {/* + {'手機: '} + { Linking.openURL(`tel:${this.data.mobile}`); }}> + {this.data.mobile} + + + + + {'電話: '} + { Linking.openURL(`tel:${this.data.tel}`); }}> + {this.data.tel} + + */} + + ); + } +} + +const styles = StyleSheet.flatten({ + titleView: { + marginRight: 5, + marginLeft: 5, + marginTop: 10, + width: scale(265) + }, + + titieStyle: { + fontSize: 20, + color: colors.mainColor, + fontFamily: Fonts.ubuntu + }, + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: "center", + justifyContent: "center", + backgroundColor: colors.statusBarColor + }, + buttonText: { + color: "#fff" + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17 + }, + slide1: { + flex: 1, + justifyContent: "center", + alignItems: "center" + }, + + shadowView: { + width: scale(280), + height: verticalScale(500), + alignItems: "center", + borderWidth: 0.5, + backgroundColor: "white", + borderColor: "#EAEDED", + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1 + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2 + }, + + subTitle: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.mainColor, + fontSize: 15, + fontFamily: Fonts.ubuntu + }, + + text: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.textColor, + fontSize: 14, + fontFamily: Fonts.ubuntu + }, + stepIndicator: { + marginVertical: 50 + } +}); diff --git a/src/pages/property/propertyList.js b/src/pages/property/propertyList.js new file mode 100755 index 0000000..f177eef --- /dev/null +++ b/src/pages/property/propertyList.js @@ -0,0 +1,185 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {width, height} from '../../common/screen'; + +export default class PropertyList extends Component { + constructor(props) { + super(props); + } + + renderMobile() { + if (this.props.items.mobile != '') { + return ( + + {'手機: ' + this.props.items.mobile} + + ); + } else { + return {'手機: N/A'}; + } + } + + renderTel() { + if (this.props.items.tel != '') { + return ( + {'電話: ' + this.props.items.tel} + ); + } else { + return {'電話: N/A'}; + } + } + + rentReturn(rent) { + var newRent = rent.slice(rent.indexOf('$') + 1); + return newRent.replace(/\s/g, ''); + } + + renderName() { + var name = this.props.items.estate + ', '; + if (this.props.items.phase != '') { + name = name + this.props.items.phase + '期, '; + } + if (this.props.items.bldg != '') { + name = name + this.props.items.bldg + ', '; + } + if (this.props.items.block != '') { + name = name + this.props.items.block + '座, '; + } + if (this.props.items.fl != '') { + name = name + this.props.items.fl + ', '; + } + if (this.props.items.room != '') { + name = name + this.props.items.room + '室'; + } + return name; + } + + render() { + return ( + + + {this.props.items.estate} + + + + + {'地區: '} + + {this.props.items.loc1 + this.props.items.loc2} + + + + + {'面積(建/實): '} + + {this.props.items.area} + + + + + {'尺價: '} + + {this.props.items.unitPrice} + + + + {'層數/室: '} + + {this.props.items.floorRoom} + + + + {'日期: '} + + {this.props.items.date} + + + + + {'租屋成交價: '} + + {'HKD ' + this.rentReturn(this.props.items.rent)} + + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + textView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: colors.textColor, + fontSize: 16, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/receipt/receipt.js b/src/pages/receipt/receipt.js new file mode 100644 index 0000000..9f55e7b --- /dev/null +++ b/src/pages/receipt/receipt.js @@ -0,0 +1,300 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + Alert, +} from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import moment from 'moment'; +import LoadingView from '../../common/loading'; +import BackHeader from '../../components/backHeader'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import ReceiptList from './receiptList'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; + +import Realm from 'realm'; +import {observable, toJS} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +let data = [ + { + date: '1/9/2019', + rent: '9800', + id: '649245', + owner: 'Herbert Chan', + ownerPhone: '+852 94321156', + tenant: 'Sam Cheung', + tenantPhone: '+852 54321123', + address: '323, La Ha Village, Sha Tin, N.T.', + }, + { + date: '1/8/2019', + rent: '9800', + id: '649254', + owner: 'Herbert Chan', + ownerPhone: '+852 94321156', + tenant: 'Sam Cheung', + tenantPhone: '+852 54321123', + address: '323, La Ha Village, Sha Tin, N.T.', + }, +]; + +@inject('appStore') +@observer +export default class Receipt extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,') + } + componentWillMount() { + //this.getRceipt() + this.store.getRentReceipt(this.props.navigation.state.params.index); + } + + async getRceipt() { + if (this.store.loginUserData.data.member.chara == 'owner') { + var contractindex = await this.store.apartmentsData[ + this.props.navigation.state.params.index + ].contracts.findIndex( + element => + element.tenant.id == + this.store.apartmentsData[this.props.navigation.state.params.index] + .tenant.id, + ); + console.log(this.store.getNowDate); + console.log( + moment(parseInt(this.store.getNowDate * 1000)).format('YYYYMM'), + ); + if (contractindex != -1) { + this.store.receiptData = []; + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].contracts[contractindex].rents.map(async (items, index) => { + console.log( + parseInt( + moment(parseInt(this.store.getNowDate * 1000)).format('YYYYMM'), + ), + ); + console.log(parseInt(items.month)); + if ( + parseInt( + moment(parseInt(this.store.getNowDate * 1000)).format('YYYYMM'), + ) >= parseInt(items.month) + ) { + console.log('testingtesting'); + // const formatter = new Intl.NumberFormat('en-US', { + // style: 'currency', + // currency: 'HKD', + // minimumFractionDigits: 0, + // }); + var data = { + date: + moment(items.month + '01', 'YYYYMMDD').format('DD/MM/YYYY') + + ' - ' + + moment(items.month + '01', 'YYYYMMDD') + .add(1, 'M') + .format('DD/MM/YYYY'), + signDate: moment(items.date, 'YYYY-MM-DD').format('DD/MM/YYYY'), + rent: this.currencyFormat(parseInt(items.rent)), + id: '' + items.id, + owner: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.fullname, + ownerPhone: + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.countryCode + + ' ' + + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.phone, + tenant: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.fullname, + tenantPhone: + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.countryCode + + ' ' + + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.phone, + address: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].address, + status: items.status, + }; + await this.store.receiptData.push(data); + console.log(this.store.receiptData); + } + }); + } + } else { + this.store.receiptData = []; + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].contracts[0].rents.map(async (items, index) => { + console.log( + parseInt( + moment(parseInt(this.store.getNowDate * 1000)).format('YYYYMM'), + ), + ); + console.log(parseInt(items.month)); + if ( + parseInt( + moment(parseInt(this.store.getNowDate * 1000)).format('YYYYMM'), + ) >= parseInt(items.month) && + items.status != 'Pending Payment' + ) { + var data = { + date: + moment(items.month + '01', 'YYYYMMDD').format('DD/MM/YYYY') + + ' - ' + + moment(items.month + '01', 'YYYYMMDD') + .add(1, 'M') + .format('DD/MM/YYYY'), + signDate: moment(items.date, 'YYYY-MM-DD').format('DD/MM/YYYY'), + rent:this.currencyFormat(parseInt(items.rent)), + id: '' + items.id, + owner: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.fullname, + ownerPhone: + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.countryCode + + ' ' + + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].owner.phone, + tenant: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.fullname, + tenantPhone: + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.countryCode + + ' ' + + this.store.apartmentsData[ + this.props.navigation.state.params.index + ].tenant.phone, + address: this.store.apartmentsData[ + this.props.navigation.state.params.index + ].address, + status: items.status, + }; + await this.store.receiptData.push(data); + console.log(this.store.receiptData); + } + }); + } + } + + clickAction(item) { + if (item.status == 'Pending Payment') { + Alert.alert( + '', + '確定收到租客租金?', + [ + { + text: 'Cancel', + onPress: () => console.log('Cancel Pressed'), + style: 'cancel', + }, + { + text: 'Yes', + onPress: () => { + item.index = this.props.navigation.state.params.index; + this.store.markpaid(this, item); + }, + }, + ], + {cancelable: false}, + ); + } else { + item.index = this.props.navigation.state.params.index; + history.push(this, '/receiptDetails', {receiptData: item}); + } + } + + render() { + return ( + + + + ( + { + this.clickAction(item); + }} + /> + )} + keyExtractor={item => item.id} + /> + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/receipt/receiptDetails.js b/src/pages/receipt/receiptDetails.js new file mode 100644 index 0000000..0343d9d --- /dev/null +++ b/src/pages/receipt/receiptDetails.js @@ -0,0 +1,684 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, + Image, + //Share, + Alert, + Platform, +} from 'react-native'; +import ViewShot from 'react-native-view-shot'; +import Share from 'react-native-share'; +import RNImageToPdf from 'react-native-image-to-pdf'; +import moment from 'moment'; +import CameraRoll from '@react-native-community/cameraroll'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; +import Modal, {ModalContent} from 'react-native-modals'; +import Switch from 'react-native-switch-pro'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Realm from 'realm'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import BackHeader from '../../components/backHeader'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {queryUser} from '../../services/realm/realmManger'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import ImagePicker from 'react-native-image-crop-picker'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {width, height} from '../../common/screen'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; + +let unique = 0; +const {SlideInMenu} = renderers; +const asyncStorageHelper = new AsyncStorageHelper(); + +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +@inject('appStore') +@observer +export default class ReceiptDetails extends Component { + @observable + data = null; + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.receiptData; + } + + componentDidMount() {} + + dateStringHandler(date) { + if (date === null) { + return ''; + } else { + return ( + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ); + } + } + + list(title, contents, color) { + return ( + + + + {title + ': '} + + + + + {contents} + + + + ); + } + + async getUserApartmentData() { + let user = queryUser(); + return user; + } + + saveAsFunction(value) { + this.refs.viewShot.capture().then(uri => { + console.log('do something with ', uri); + if (value === 2) { + this.myAsyncPDFFunction(uri); + } else if (value === 1) { + this.saveImage(uri); + } else { + this.shareIt(uri); + } + }); + } + + async shareIt(uri) { + const shareOptions = { + title: this.data.date + ' 的租金收據', + url: uri, + }; + + try { + const ShareResponse = await Share.open(shareOptions); + setResult(JSON.stringify(ShareResponse, null, 2)); + } catch (error) { + console.log('Error =>', error); + setResult('error: '.concat(getErrorString(error))); + } + } + + async saveImage(uri) { + if (Platform.OS === 'android') { + // RNFetchBlob.config({ + // fileCache: true, + // appendExt: 'jpg', + // }) + // .fetch('GET', image.urls.small) + // .then(res => { + // CameraRoll.saveToCameraRoll(res.path()) + // .then(Alert.alert('Success', 'Photo added to camera roll!')) + // .catch(err => console.log('err:', err)); + // }); + } else { + await CameraRoll.saveToCameraRoll(uri).then( + this.refs.toast.show('Saved, Photo added to camera roll.'), + ); + } + } + + async myAsyncPDFFunction(uri) { + var data = [uri]; + try { + const options = { + imagePaths: data, + name: 'receipt' + moment().format('YYYYMMDDhhmmss'), + }; + const pdf = await RNImageToPdf.createPDFbyImages(options); + this.refs.toast.show('Saved'); + } catch (e) { + console.log(e); + } + } + + render() { + console.log(this.store.image); + var data = this.store.apartmentData; + return ( + + + + + {this.store.text.receipt} + + { + console.log('back'); + history.goBack(this); + }}> + + + + + this.saveAsFunction(value)}> + + + + + + + {this.store.text.saveAsImage} + + + + + {this.store.text.saveAsPdf} + + + + + {'分享'} + + + + + + + + + + + + + + 正式收據 OFFICAL RECEIPT + + + + + + + + + + + + + + 出租人 LESSOR + + + + + + + + + + + 承租人 LESSEE + + + + + + + + + + + + + {'業主簽署'} + + + {`Proprietor's Signature`} + + + + + + + + + + + + + {'業主姓名'} + + + {`Proprietor's Name`} + + + + + + + {this.data.owner} + + + + + + + + {'日期'} + + + {`Date`} + + + + + + + {this.data.signDate} + + + + + + + + + + + ); + } +} + +const SubTitle = props => { + return ( + + + + + {props.titleCh} + + + {props.titleEn} + + + + + + + {props.content} + + + + ); +}; + +const styles = StyleSheet.flatten({ + titleView: { + marginRight: 5, + marginLeft: 5, + marginTop: 10, + width: scale(265), + }, + + titieStyle: { + fontSize: 20, + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + marginRight: 5, + marginLeft: 5, + marginTop: 20, + }, + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.statusBarColor, + }, + buttonText: { + color: '#fff', + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + + shadowView: { + width: scale(280), + height: verticalScale(370), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, + title: { + fontSize: 17, + marginLeft: 20, + color: 'black', + fontFamily: Fonts.ubuntu, + }, + + text: { + marginTop: 7, + color: colors.textColor, + fontSize: 19, + fontFamily: Fonts.ubuntu, + }, + triggerText: { + color: 'white', + }, + slideInOption: { + padding: 5, + }, +}); diff --git a/src/pages/receipt/receiptList.js b/src/pages/receipt/receiptList.js new file mode 100755 index 0000000..2d788db --- /dev/null +++ b/src/pages/receipt/receiptList.js @@ -0,0 +1,108 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet, Image,FlatList } from "react-native"; +import FastImage from 'react-native-fast-image' +import Icon from "react-native-vector-icons/FontAwesome5"; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import history from "../../common/history"; +import LoadingView from '../../common/loading'; +import NaviBar from "../../components/navi-bar"; +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import Migrations from "../../services/realm/Mirgrations"; +import { inject, observer } from "mobx-react"; +import { width, height } from "../../common/screen"; + + + +export default class ReceiptList extends Component { + + + constructor(props) { + super(props); + } + + statusReturn(){ + if(this.props.items.status == 'Pending Payment'){ + return('未確認收款') + }else{ + if(this.props.items.chara == "owner"){ + return('已收款') + }else{ + return('已交租金') + } + } + } + + render() { + return ( + + + + + {'Receipt ID: '+this.props.items.id} + + + {'Date: '+this.props.items.date} + + + {'Rent: '+"HKD "+this.props.items.rent} + + + {'Status: '} + + {this.statusReturn()} + + + + + + + + + ); + } + + +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + + }, + textView:{ + fontFamily:Fonts.ubuntu, + color:colors.textColor, + + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: "#000000", + margin: 5, + padding: 5, + width: "70%", + backgroundColor: "#DDDDDD", + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: "#AAAAAA", + margin: 5, + padding: 5, + width: "70%" + }, + spacer: { + height: 10, + }, + title: { + fontWeight: "bold", + fontSize: 20, + textAlign: "center", + } +}); \ No newline at end of file diff --git a/src/pages/repair/repair.js b/src/pages/repair/repair.js new file mode 100644 index 0000000..70db129 --- /dev/null +++ b/src/pages/repair/repair.js @@ -0,0 +1,486 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + ScrollView, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import Icon2 from 'react-native-vector-icons/MaterialCommunityIcons'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; + +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import RepairList from './repairList'; +import {inject, observer} from 'mobx-react'; +import {queryUser} from '../../services/realm/realmManger'; +import BackHeader from '../../components/backHeader'; +//import Swiper from 'react-native-swiper' +import Swiper from 'react-native-swiper'; +import Global from '../../services/Global'; +import {width, height} from '../../common/screen'; +import AddFunction from '../../common/addFunction'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import Menu, { + MenuProvider, + MenuTrigger, + MenuOptions, + MenuOption, + renderers, +} from 'react-native-popup-menu'; +const {SlideInMenu} = renderers; +import * as rssParser from 'react-native-rss-parser'; +import Realm from 'realm'; +import {observable, set} from 'mobx'; +import {func} from 'prop-types'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +const selectItems = [ + [ + {name: '室內設計', icon: 'pencil-ruler', color: '#FFAB46'}, + {name: '清潔服務', icon: 'broom', color: '#485FC8'}, + ], + + [ + {name: '搬屋運輸', icon: 'shipping-fast', color: '#D6147A'}, + {name: '開鎖配匙', icon: 'pencil-ruler', color: '#4E96D4'}, + ], + + [ + {name: '水電維修', icon: 'tools', color: '#E8D238'}, + {name: '油漆牆紙', icon: 'paint-roller', color: '#64B1B6'}, + ], + + [ + {name: '鋁窗鋼閘', icon: 'warehouse', color: '#454F9B'}, + {name: '雲石磁磚', icon: 'clone', color: '#5667EF'}, + ], + + [ + {name: '地板工程', icon: 'shoe-prints', color: '#519CAB'}, + {name: '電器燈飾', icon: 'lightbulb', color: '#35466B'}, + ], +]; +@inject('appStore') +@observer +export default class Repair extends Component { + @observable + news = []; + @observable + areaA = ['全部']; + @observable + areaB = ['全部']; + @observable + dropdownListDisable = true; + @observable + repairData = null; + @observable + areaAData = null; + @observable + areaAValue = ''; + @observable + areaBValue = ''; + constructor(props) { + super(props); + this.store = props.appStore; + } + static navigationOptions = ({navigation}) => { + const {params = {}} = navigation.state; + return { + tabBarLabel: params.handleThis, + }; + }; + + async componentWillMount() { + //this.loadNews() + this.props.navigation.setParams({ + handleThis: this.store.text.maintenance, + }); + await this.store.getRepairInfo(); + // this.store.getbanner(); + this.repairData = [...this.store.repairData]; + await this.getAreaA(); + } + + async getAreaA() { + this.dropdownListDisable = true; + this.repairData = [...this.store.repairData]; + this.areaAData = [...this.store.repairData]; + this.areaB = ['全部']; + this.areaAValue = '全部'; + this.areaBValue = '全部'; + var array = ['全部']; + await this.store.repairData.map((items, index) => { + array.push(items.loc1); + }); + + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaA = backToArray; + + //Array.from(new Set(array)) + console.log(backToArray); + } + + async areaADropDownListOnSelect(value) { + console.log(index); + this.areaAValue = value; + var index = this.areaA.findIndex(element => element == value); + if (index == 0) { + this.dropdownListDisable = true; + this.repairData = [...this.store.repairData]; + this.areaAData = [...this.store.repairData]; + this.areaB = ['全部']; + this.areaBValue = '全部'; + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + this.dropdownListDisable = false; + var newData = await this.store.repairData.filter(function(item) { + return item.loc1 == value; + }); + this.repairData = [...newData]; + this.areaAData = [...newData]; + var array = ['全部']; + await this.repairData.map((items, index) => { + array.push(items.loc2); + }); + const uniqueSet = new Set(array); + const backToArray = [...uniqueSet]; + this.areaB = backToArray; + } + } + + async areaBDropDownListOnSelect(value) { + this.areaBValue = value; + var index = this.areaB.findIndex(element => element == value); + if (index == 0) { + this.repairData = [...this.areaAData]; + // this.repairData = repairData.filter(item => item.loc1 === value); + } else { + var newData = await this.areaAData.filter(function(item) { + return item.loc2 == value; + }); + this.repairData = [...newData]; + } + } + + async serviceFilterAction(service) { + this.areaAValue = '全部'; + this.areaBValue = '全部'; + + var newData = await this.store.repairData.filter(function(item) { + return item.project == service; + }); + this.repairData = [...newData]; + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + } + + render() { + return ( + + + + + + + {this.store.banner.map((items, index) => { + console.log(items); + return ( + { + if (items.hasOwnProperty('link')) { + history.push(this, '/bannerDetails', {data: items}); + } + }} + style={{ + justifyContent: 'center', + alignItems: 'center', + }}> + + + ); + })} + + + + + {'服務分類'} + + + {selectItems.map((items, index) => { + return ( + + + {items.map((selectObj, objIndex) => { + return ( + { + this.serviceFilterAction(selectObj.name); + }}> + + + + + {selectObj.name} + + + ); + })} + + + ); + })} + + + + + + + + + {this.store.text.region} + + + + { + this.areaADropDownListOnSelect(value); + //this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + {this.areaAValue} + + + + {this.areaA.map((obj, i) => { + console.log(obj); + return ; + })} + + + + + + + + + {this.store.text.district} + + + + { + this.areaBDropDownListOnSelect(value); + this.flatListRef.scrollToOffset({animated: true, offset: 0}); + }}> + + + {this.areaBValue} + + + + + {this.areaB.map((obj, i) => { + return ; + })} + + + + + + + { + this.flatListRef = ref; + }} + data={this.repairData} + renderItem={({item}) => ( + { + history.push(this, '/repairDetails', {repairData: item}); + }} + /> + )} + keyExtractor={item => item.id} + /> + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/repair/repairDetails.js b/src/pages/repair/repairDetails.js new file mode 100644 index 0000000..2a0c7c4 --- /dev/null +++ b/src/pages/repair/repairDetails.js @@ -0,0 +1,242 @@ +import React, { Component } from "react"; +import { View, Text, TouchableOpacity, StyleSheet, ScrollView, Image, Share, Alert, Linking } from "react-native"; +import FastImage from 'react-native-fast-image' +import Icon from "react-native-vector-icons/FontAwesome5"; +import StepIndicator from 'react-native-step-indicator' +import Modal, { ModalContent } from 'react-native-modals'; +import Switch from 'react-native-switch-pro'; +import { colors } from "../../assets/styles/colors-theme"; +import { Fonts } from '../../assets/styles/fonts-theme' +import Realm from 'realm' +import { scale, verticalScale, moderateScale } from "react-native-size-matters"; +import LoadingView from '../../common/loading'; +import history from "../../common/history"; +import NaviBar from "../../components/navi-bar"; +import Migrations from "../../services/realm/Mirgrations"; +import BackHeader from '../../components/backHeader' +import { inject, observer } from "mobx-react"; +import { observable } from 'mobx' +import { queryUser } from "../../services/realm/realmManger"; +import AsyncStorageHelper from '../../common/asyncStorageHelper' +import ImagePicker from 'react-native-image-crop-picker'; +import { UserSchemea, ApartmentSchemea, DocSchemea ,NotificationSchemea} from '../../services/realm/schemeas' +import { width, height } from "../../common/screen"; +const asyncStorageHelper = new AsyncStorageHelper; + +let realm = new Realm({ schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea] }); + + +@inject("appStore") +@observer +export default class RepairDetails extends Component { + + @observable + data = null + + constructor(props) { + super(props); + this.store = props.appStore; + this.data = this.props.navigation.state.params.repairData + } + + + + componentDidMount() { + + } + + renderProject(){ + var project = [this.data.prj1,this.data.prj2,this.data.prj3,this.data.prj4,this.data.prj5,this.data.prj6] + return project.map((items,index)=>{ + if(items != ''){ + return( + {items} + + ) + } + }) + } + + renderMobile() { + if (this.data.mobile != '') { + return ( + + {'手機: '} + { Linking.openURL(`tel:${this.data.mobile}`); }}> + {this.data.mobile} + + + ) + } else { + return ( + + {'手機: N/A'} + + + ) + } + } + + renderTel() { + if (this.data.tel != '') { + return ( + + {'電話: '} + { Linking.openURL(`tel:${this.data.tel}`); }}> + {this.data.tel} + + + ) + } else { + return ( + + {'電話: N/A'} + + + ) + } + } + + renderWebSite() { + if (this.data.website != '') { + return ( + + {'網站: '} + { Linking.openURL(this.data.website).catch(err => console.error("Couldn't load page", err)); }}> + {this.data.website} + + + + ) + } else { + return ( + + {'網站: N/A'} + + + ) + } + } + + + render() { + console.log(this.store.image) + var data = this.store.apartmentData + return ( + + + + + + {'公司名: ' + this.data.name} + + + {'地址: ' + this.data.addr} + + {/* + {'手機: '} + { Linking.openURL(`tel:${this.data.mobile}`); }}> + {this.data.mobile} + + + + + {'電話: '} + { Linking.openURL(`tel:${this.data.tel}`); }}> + {this.data.tel} + + */} + + {this.renderMobile()} + {this.renderTel()} + {this.renderWebSite()} + + + 可接工程 + + + {this.renderProject()} + + + ); + } +} + +const styles = StyleSheet.flatten({ + + titleView: { + marginRight: 5, marginLeft: 5, marginTop: 10, width: scale(265) + }, + + titieStyle: { + fontSize: 20, + color: colors.mainColor, + fontFamily: Fonts.ubuntu, + + }, + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: "center", + justifyContent: "center", + backgroundColor: colors.statusBarColor + }, + buttonText: { + color: "#fff" + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + slide1: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + + }, + + shadowView: { + width: scale(280), + height: verticalScale(500), + alignItems: 'center', + borderWidth: 0.5, + backgroundColor: 'white', + borderColor: '#EAEDED', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.20, + shadowRadius: 1.41, + + elevation: 2, + }, + + subTitle: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.mainColor, + fontSize: 15, + fontFamily: Fonts.ubuntu, + }, + + text: { + marginTop: 5, + marginLeft: 10, + marginRight: 10, + color: colors.textColor, + fontSize: 14, + fontFamily: Fonts.ubuntu, + }, + stepIndicator: { + marginVertical: 50 + }, +}); diff --git a/src/pages/repair/repairList.js b/src/pages/repair/repairList.js new file mode 100755 index 0000000..283b43c --- /dev/null +++ b/src/pages/repair/repairList.js @@ -0,0 +1,163 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + FlatList, + Linking, +} from 'react-native'; +import FastImage from 'react-native-fast-image'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import {width, height} from '../../common/screen'; + +export default class RepairList extends Component { + constructor(props) { + super(props); + } + + renderMobile() { + if (this.props.items.mobile != '') { + return ( + + {'手機: ' + this.props.items.mobile} + + ); + } else { + return {'手機: N/A'}; + } + } + + renderTel() { + if (this.props.items.tel != '') { + return ( + + {'電話: '} + + {this.props.items.tel} + + + ); + } else { + return {'電話: N/A'}; + } + } + + renderWebsite() { + if (this.props.items.website != '') { + return ( + { + Linking.canOpenURL(this.props.items.website).then(supported => { + if (supported) { + Linking.openURL(this.props.items.website); + } else { + console.log("Don't know how to open URI"); + } + }); + }}> + + {'網站: '} + + {this.props.items.website} + + + + ); + } else { + return {'網站: N/A'}; + } + } + + render() { + return ( + + + + {this.props.items.name} + {this.props.items.addr} + + {this.renderTel()} + {this.renderWebsite()} + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + titleView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: 'black', + fontSize: 17, + }, + textView: { + marginTop: 3, + fontFamily: Fonts.ubuntu, + color: colors.textColor, + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + button: { + borderWidth: 1, + borderColor: '#000000', + margin: 5, + padding: 5, + width: '70%', + backgroundColor: '#DDDDDD', + borderRadius: 5, + }, + textField: { + borderWidth: 1, + borderColor: '#AAAAAA', + margin: 5, + padding: 5, + width: '70%', + }, + spacer: { + height: 10, + }, + title: { + fontWeight: 'bold', + fontSize: 20, + textAlign: 'center', + }, +}); diff --git a/src/pages/select/selectChar.js b/src/pages/select/selectChar.js new file mode 100755 index 0000000..7c9de09 --- /dev/null +++ b/src/pages/select/selectChar.js @@ -0,0 +1,238 @@ +import React, {Component} from 'react'; +import {View, Text, TouchableOpacity, StyleSheet, Image} from 'react-native'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import history from '../../common/history'; +import NaviBar from '../../components/navi-bar'; +import Migrations from '../../services/realm/Mirgrations'; +import {inject, observer} from 'mobx-react'; +import BackHeader from '../../components/backHeader'; +import {width, height} from '../../common/screen'; +import {observable} from 'mobx'; + +@inject('appStore') +@observer +export default class SelectChar extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + console.log(this.store.logined); + } + + renderContents() { + var data = [ + { + title: '業主', + content: '可管理自己的物業文件,提示租客提交租金。', + value: 0, + image: require('../../assets/images/newowner.png'), + }, + { + title: '租客', + content: '可隨時查看自己的租約,並會自動收到交租提示。', + value: 1, + image: require('../../assets/images/newtenant.png'), + }, + { + title: '遊客', + content: '只想看看最新物業資訊,免費二手傢俬。', + value: 2, + image: require('../../assets/images/free.png'), + }, + ]; + return data.map((items, index) => { + return ( + this.clickAction(items.value)}> + + + + + + {items.title} + + + {items.content} + + + + + + {'選擇'} + + + + + ); + }); + } + componentDidMount() {} + + clickAction(value) { + switch (value) { + case 0: + var data = { + type: 0, + first: true, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + break; + case 1: + var data = { + type: 1, + first: true, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + break; + case 2: + this.props.navigation.navigate('guest', {back: true}); + break; + } + } + + render() { + return ( + + + + + {'請選擇角色'} + + {this.renderContents()} + + {/* { + var data = { + type: 0, + first: true, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + }}> + + + + {this.store.text.owner} + + + + { + var data = { + type: 1, + first: true, + }; + this.props.navigation.navigate('Tutorial', { + tutdata: data, + }); + }}> + + + + {this.store.text.tenant} + + */} + + ); + } +} + +const styles = StyleSheet.flatten({ + button: { + marginTop: 20, + width: 100, + height: 40, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.mainColor, + }, + buttonText: { + color: '#fff', + }, + textStyle: { + color: 'white', + fontFamily: Fonts.ubuntu, + fontSize: 14, + }, + titleStyle: { + color: 'white', + fontFamily: Fonts.ubuntu, + fontSize: 30, + }, +}); diff --git a/src/pages/signIn/signin.js b/src/pages/signIn/signin.js new file mode 100755 index 0000000..f2f6eb6 --- /dev/null +++ b/src/pages/signIn/signin.js @@ -0,0 +1,714 @@ +/* +Name:rentchatapplesignin +Key ID:SVU2QA5HAW +Services:Sign in with Apple +*/ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Image, + Keyboard, + Alert, + Platform, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import {GoogleSignin, statusCodes} from '@react-native-community/google-signin'; +import NaviBar from '../../components/navi-bar'; +import Modal, {ModalContent} from 'react-native-modals'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import * as WeChat from 'react-native-wechat'; +import history from '../../common/history'; +import LoadingView from '../../common/loading'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import appleAuth, { + AppleButton, + AppleAuthRequestOperation, + AppleAuthRequestScope, +} from '@invertase/react-native-apple-authentication'; + +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +import { + AccessToken, + GraphRequest, + GraphRequestManager, + LoginManager, +} from 'react-native-fbsdk'; + +const size = new Size(); + +const wechatId = 'wx93de0986eec5fb79'; +const wechatAppSecret = 'ce525babc37b62ea57077288ed3fa4fb'; + +@inject('appStore') +@observer +export default class Signin extends Component { + static navigationOptions = { + gesturesEnabled: false, + }; + + @observable + isWXInstalled = false; + + @observable + loginData = { + id: '', + pwd: '', + }; + @observable + changeCharVisable = false; + constructor(props) { + super(props); + this.store = props.appStore; + } + + async componentWillMount() { + await this.store.loadLocalData(); + await WeChat.registerApp(wechatId); + WeChat.isWXAppInstalled().then(isInstalled => { + this.isWXInstalled = isInstalled; + if (isInstalled) { + this.isWXInstalled = true; + console.log('微信已经安装'); + } else { + console.log('微信未安装'); + } + }); + } + + componentDidMount() { + this._configureGoogleSignIn(); + } + loginWithFacebook() { + // Attempt a login using the Facebook login dialog asking for default permissions. + this.store.loading = true; + LoginManager.logInWithPermissions(['public_profile', 'email']).then( + login => { + this.store.loading = false; + if (login.isCancelled) { + console.log('Login cancelled'); + } else { + AccessToken.getCurrentAccessToken().then(data => { + const accessToken = data.accessToken.toString(); + data = { + platform: 'facebook', + token: accessToken, + chara: this.store.user.memberType == 0 ? 'owner' : 'tenant', + }; + this.store.thirdPartyLogin( + data, + this, + !this.props.navigation.state.params.icon, + ); + // Alert.alert( JSON.stringify(accessToken)) + console.log(accessToken); + // this.getInfoFromToken(accessToken); + }); + } + }, + error => { + this.store.loading = false; + console.log('Login fail with error: ' + JSON.stringify(error)); + Alert.alert('fblogin', JSON.stringify(error)); + }, + ); + } + + loginWithWeChat() { + if (!this.isWXInstalled) { + this.refs.toast.show('微信未安装'); + return; + } + WeChat.sendAuthRequest('snsapi_userinfo', 'wechat_sdk_demo') + .then(response => { + this.getOpenId(response.code); + }) + .catch(error => { + console.log(error); + let errorCode = Number(error.code); + if (errorCode === -2) { + // this.showAlert('已取消授权登录'); // errorCode = -2 表示用户主动取消的情况,下同 + this.refs.toast.show('已取消授權登錄'); + } else { + this.refs.toast.show('微信授權登錄失敗'); + } + }); + } + + async loginWithGoogle() { + try { + this.store.loading = true; + await GoogleSignin.hasPlayServices(); + const userInfo = await GoogleSignin.signIn(); + console.log(userInfo.idToken); + const isSignedIn = await GoogleSignin.getTokens(); + console.log(isSignedIn.accessToken); + var data = { + platform: 'google', + token: isSignedIn.accessToken, + chara: this.store.user.memberType == 0 ? 'owner' : 'tenant', + }; + this.store.loading = false; + this.store.thirdPartyLogin( + data, + this, + !this.props.navigation.state.params.icon, + ); + } catch (error) { + this.store.loading = false; + if (error.code === statusCodes.SIGN_IN_CANCELLED) { + console.log(' user cancelled the login flow') + // user cancelled the login flow + } else if (error.code === statusCodes.IN_PROGRESS) { + console.log('operation (e.g. sign in) is in progress already') + // operation (e.g. sign in) is in progress already + } else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) { + console.log('play services not available or outdated') + // play services not available or outdated + } else { + console.log(error) + // some other error happened + } + } + } + + _configureGoogleSignIn() { + GoogleSignin.configure({ + webClientId: + '637211616323-d98smjtash81psfek6cm6ikk39s30j5d.apps.googleusercontent.com', + offlineAccess: false, + }); + } + + getInfoFromToken = token => { + const PROFILE_REQUEST_PARAMS = { + fields: { + string: 'email,id,name', + }, + }; + const profileRequest = new GraphRequest( + '/me', + {token, parameters: PROFILE_REQUEST_PARAMS}, + (error, user) => { + if (error) { + console.log('login info has error: ' + error); + } else { + this.setState({userInfo: user}); + console.log('result:', user); + // Alert.alert(JSON.stringify(user)) + } + }, + ); + new GraphRequestManager().addRequest(profileRequest).start(); + }; + + loginAction() { + if (this.loginData.id !== '') { + if (this.loginData.pwd !== '') { + console.log(!this.props.navigation.state.params.icon); + this.store.loginPost( + this.loginData, + this, + !this.props.navigation.state.params.icon, + ); + } else { + this.refs.toast.show('Please input your password'); + } + } else { + this.refs.toast.show('Please input your Email'); + } + } + + async loginWithApple() { + this.store.loading = true; + try { + // performs login request + const appleAuthRequestResponse = await appleAuth.performRequest({ + requestedOperation: AppleAuthRequestOperation.LOGIN, + requestedScopes: [ + AppleAuthRequestScope.EMAIL, + AppleAuthRequestScope.FULL_NAME, + ], + }); + + if (appleAuthRequestResponse['realUserStatus']) { + var data = { + identityToken: appleAuthRequestResponse.identityToken, + chara: this.store.user.memberType == 0 ? 'owner' : 'tenant', + }; + this.store.loading = false; + this.store.signinWithApple( + data, + this, + !this.props.navigation.state.params.icon, + ); + } + } catch (error) { + this.store.loading = false; + if (error.code === AppleAuthError.CANCELED) { + } + if (error.code === AppleAuthError.FAILED) { + alert('Touch ID wrong'); + } + if (error.code === AppleAuthError.INVALID_RESPONSE) { + alert('Touch ID wrong'); + } + if (error.code === AppleAuthError.NOT_HANDLED) { + } + if (error.code === AppleAuthError.UNKNOWN) { + alert('Touch ID wrong'); + } + } + } + + getOpenId(code) { + let requestUrl = + 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + + wechatId + + '&secret=' + + wechatAppSecret + + '&code=' + + code + + '&grant_type=authorization_code'; + fetch(requestUrl) + .then(response => response.json()) + .then(json => { + console.log('获取微信openid成功'); + console.log(json); + this.getUnionId(json.access_token, json.openid); + }) + .catch(error => { + console.log(error); + + this.refs.toast.show('微信登錄失敗'); + }); + } + + getUnionId(accessToken, openId) { + let requestUrl = + 'https://api.weixin.qq.com/sns/userinfo?access_token=' + + accessToken + + '&openid=' + + openId; + fetch(requestUrl) + .then(response => response.json()) + .then(json => { + console.log('获取微信unionid成功'); + console.log(json); + // var data = { + // tpid: json.unionid, + // tppf: 'wechat', + // fullname: json.nickname, + // avatar: json.headimgurl, + // email: '', + // nonce: this.store.genNonce(), + // }; + this.store.signinWithWeChat( + json, + this, + !this.props.navigation.state.params.icon, + ); + + // TODO: 这里openId和unionId都已经成功获取了,调用用户自己的接口传递openId或unionId登录或注册 + // put your login method here... + }) + .catch(error => { + this.progressHUD.hide(); + this.refs.toast.show('微信登錄失敗'); + }); + } + + otherLogin(which) { + switch (which) { + case 'facebook': + this.loginWithFacebook(); + break; + case 'google': + this.loginWithGoogle(); + break; + case 'wechat': + this.loginWithWeChat(); + break; + case 'apple': + this.loginWithApple(); + break; + } + } + + render() { + var thirdPartyLoginButtons = [ + { + text: this.store.text.googleLogin, + icon: 'google', + color: '#2D9AFF', + which: 'google', + }, + { + text: this.store.text.facebookLogin, + icon: 'facebook-square', + color: '#295BA2', + which: 'facebook', + }, + { + text: this.store.text.wechatLogin, + icon: 'weixin', + color: '#00E86E', + which: 'wechat', + }, + ]; + + if (Platform.OS === 'ios') { + thirdPartyLoginButtons.push({ + text: this.store.text.appleLogin, + icon: 'apple', + color: 'black', + which: 'apple', + }); + } + return ( + + + + + + {this.props.navigation.state.params.icon ? ( + { + history.goBack(this); + }} + style={{ + marginLeft: 10, + justifyContent: 'center', + alignItems: 'center', + height: 40, + width: 40, + }}> + + + ) : ( + + )} + + + + + (this.loginData.id = id)} + returnKeyType={'next'} + secureTextEntry={false} + onSubmitEditing={event => { + this.passwordinput.focus(); + }} + /> + (this.loginData.pwd = pwd)} + returnKeyType={'done'} + inputRef={input => { + this.passwordinput = input; + }} + onSubmitEditing={event => { + Keyboard.dismiss(); + }} + /> + + { + history.push(this, '/forgotPassword'); + }}> + + {this.store.text.forgotPassword} + + + + + { + this.loginAction(); + }}> + {this.store.text.login} + + + {thirdPartyLoginButtons.map((buttons, index) => { + if (index == 2) { + if (this.isWXInstalled) { + return ( + { + this.otherLogin(buttons.which); + }}> + + + + + + + {buttons.text} + + + + ); + } else { + return ; + } + } else { + return ( + { + this.otherLogin(buttons.which); + }}> + + + + + + + {buttons.text} + + + + ); + } + })} + + + {this.store.text.donthaveac} + { + history.push(this, '/signup', { + type: this.props.navigation.state.params.icon, + }); + }}> + + {this.store.text.signup} + + + + { + this.changeCharVisable = true; + }} + style={{ + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + marginTop: 10, + }}> + {this.store.text.changechar} + + + { + this.changeCharVisable = false; + }} + swipeDirection={['up', 'down']} // can be string or an array + swipeThreshold={200} // default 100 + onSwipeOut={event => { + this.changeCharVisable = false; + }}> + + + { + this.changeCharVisable = false; + this.store.changeChar(this, 0); + }}> + + + + {this.store.text.owner} + + + + { + this.changeCharVisable = false; + this.store.changeChar(this, 1); + }}> + + + + {this.store.text.tenant} + + + + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: 13, + }, + selectCharTextView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + fontSize: 17, + }, + + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 10, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, +}); diff --git a/src/pages/signature/signature.js b/src/pages/signature/signature.js new file mode 100755 index 0000000..09b30e0 --- /dev/null +++ b/src/pages/signature/signature.js @@ -0,0 +1,179 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Image, + Slider, + Platform, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import ImagePicker from 'react-native-image-crop-picker'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import SliderWidget from '../../components/slider-widget'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import SignatureCapture from 'react-native-signature-capture'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import BackHeader from '../../components/backHeader'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); + +@inject('appStore') +@observer +export default class Signature extends Component { + @observable + signature = true; + constructor(props) { + super(props); + this.store = props.appStore; + this.signature = this.props.navigation.state.params.signature; + } + saveSign() { + this.refs['sign'].saveImage(); + } + + resetSign() { + this.refs['sign'].resetImage(); + } + + _onSaveEvent(result, self) { + //result.encoded - for the base64 encoded png + //result.pathName - for the file path name + console.log(result); + if (Platform.OS == 'android') { + result.pathName = `file://${result.pathName}`; + } + self.store.uploadsign(result.pathName, self); + } + + uploadimage() { + ImagePicker.openPicker({ + width: 500, + height: 500, + multiple: false, + mediaType: 'photo', + includeBase64: true, + cropping: true, + }).then(image => { + this.store.uploadsign(image.path, this); + }); + } + _onDragEvent() { + // This callback will be called when the user enters signature + console.log('dragged'); + } + + render() { + return ( + + + + + { + this._onSaveEvent(result, this); + }} + onDragEvent={this._onDragEvent} + saveImageFileInExtStorage={false} + showNativeButtons={false} + showTitleLabel={false} + viewMode={'portrait'} + /> + + + { + this.saveSign(); + }}> + Save + + { + this.uploadimage(); + }}> + Upload Image + + { + this.resetSign(); + }}> + Reset + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 10, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + signature: { + flex: 1, + borderColor: '#000033', + borderWidth: 1, + }, + buttonStyle: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + height: 50, + backgroundColor: '#eeeeee', + margin: 10, + }, + gatewayBoxStyle: { + justifyContent: 'center', + alignItems: 'center', + width: 120, + height: 120, + borderColor: colors.textColor, + borderWidth: 1, + borderRadius: 20, + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, +}); diff --git a/src/pages/signature/signatureView.js b/src/pages/signature/signatureView.js new file mode 100755 index 0000000..89770c9 --- /dev/null +++ b/src/pages/signature/signatureView.js @@ -0,0 +1,247 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Image, + Slider, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import history from '../../common/history'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import SliderWidget from '../../components/slider-widget'; +import ImagePicker from 'react-native-image-crop-picker'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import SignatureCapture from 'react-native-signature-capture'; +import {colors} from '../../assets/styles/colors-theme'; +import LoadingView from '../../common/loading'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import BackHeader from '../../components/backHeader'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); + +@inject('appStore') +@observer +export default class SignatureView extends Component { + constructor(props) { + super(props); + this.store = props.appStore; + } + + renderImage(signature) { + if (signature) { + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + return ( + + ); + } else { + return ; + } + } else { + if (this.store.loginUserData.data.member.hasOwnProperty('stamp')) { + return ( + + ); + } else { + return ; + } + } + } + + textReturn(signature) { + if (signature) { + if (this.store.loginUserData.data.member.hasOwnProperty('sign')) { + return this.store.text.change; + } else { + return this.store.text.upload; + } + } else { + if (this.store.loginUserData.data.member.hasOwnProperty('stamp')) { + return this.store.text.change; + } else { + return this.store.text.upload; + } + } + } + + uploadimage(){ + ImagePicker.openPicker({ + width: 500, + height: 500, + multiple:false, + mediaType:'photo', + cropping: true + }).then(image => { + this.store.uploadStamp(image.path,this) + }); + } + + render() { + console.log(this.store.stampUri) + return ( + + + + + {this.store.text.signatureText} + + + { + history.push(this, '/signature', {signature: true}); + }}> + {this.renderImage(true)} + + { + history.push(this, '/signature', {signature: true}); + }}> + {this.textReturn(true)} + + + + {this.store.text.corporateSeal} + + + { + this.uploadimage() + }}> + {this.renderImage(false)} + + { + this.uploadimage() + }}> + {this.textReturn(false)} + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + + buttonView: { + backgroundColor: colors.mainColor, + height: 30, + width: 200, + justifyContent: 'center', + alignItems: 'center', + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + signature: { + flex: 1, + borderColor: '#000033', + borderWidth: 1, + }, + buttonStyle: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + height: 50, + backgroundColor: '#eeeeee', + margin: 10, + }, + gatewayBoxStyle: { + justifyContent: 'center', + alignItems: 'center', + width: 120, + height: 120, + borderColor: colors.textColor, + borderWidth: 1, + borderRadius: 20, + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.2, + shadowRadius: 1.41, + + elevation: 2, + }, +}); diff --git a/src/pages/signup/forgotPassword.js b/src/pages/signup/forgotPassword.js new file mode 100644 index 0000000..6b0dd6d --- /dev/null +++ b/src/pages/signup/forgotPassword.js @@ -0,0 +1,504 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Keyboard, + Linking, + TextInput, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {Dropdown} from 'react-native-material-dropdown'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import BackHeader from '../../components/backHeader'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); +const countryCodeDropDownData = [ + {value: '852', label: '+852'}, + {value: '86', label: '+86'}, + {value: '886', label: '+886'}, + ]; + +@inject('appStore') +@observer +export default class ForgotPassword extends Component { + @observable + phoneVerification = ''; + @observable + sendstate = true + @observable + countryCode = '852' + @observable + phone = '' + @observable + newPassword = '' + @observable + confirmPassword = '' + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + countryCode: '852', + }; + console.log(this.props.navigation.getParam('type', false)); + } + componentWillMount() { + // this.signupData = this.props.navigation.state.params.signupData; + } + + ForgotPasswordAction(){ + if(this.phoneVerification != ''){ + if(this.phone != ''){ + if(this.newPassword.length>=8){ + if(this.confirmPassword.length>=8){ + if(this.newPassword == this.confirmPassword){ + var data = { + verificationCode: this.phoneVerification, + phone: this.phone.toString(), + countryCode: "852", + password: this.newPassword + }; + this.store.forgotPassword(data,this) + }else{ + this.refs.toast.show(this.store.text.New_Password_and_new_confirm_password_is_not_match) + } + }else{ + this.refs.toast.show(this.store.text.Your_new_confirm_password_must_be_at_least_8_characters) + } + }else{ + this.refs.toast.show(this.store.text.Your_new_password_must_be_at_least_8_characters) + } + }else{ + this.refs.toast.show(this.store.text.Please_input_phone_number) + } + }else{ + this.refs.toast.show(this.store.text.Please_input_Verification_Code) + } + } + + navigatieAction(page) { + this.props.navigation.navigate(page); + } + + startToCount() { + this.interval = setInterval(() => { + this.count(); + }, 1000); + } + resendAction() { + this.store.countdown = 10; + this.resend = false; + this.startToCount(); + } + + count() { + this.store.timer -= 1; + if (this.store.timer == 0) { + this.sendstate = true; + clearInterval(this.interval); + } + } + + componentWillUnmount() { + clearInterval(this.interval); + } + + + + handleClickCountdown() { + var bodyFormData = new FormData(); + + bodyFormData.append('country_code', '852'); + bodyFormData.append('phone_number', this.phone.toString()); + + this.store.sendsmsVerify(bodyFormData, this); + }; + + startToCountDown = () => { + this.countdown && this.countdown.startCountdown(); + }; + + handleNetworkFailed = () => alert('network failed'); + + sendTextReturn(){ + if(this.sendstate){ + return(this.store.text.send) + }else{ + return this.store.timer.toString(); + } + } + + sendAction(){ + if(this.sendstate){ + this.handleClickCountdown() + clearInterval(this.interval); + this.store.timer = 60; + this.sendstate = false + this.startToCount(); + } + } + + handleStopCountdown = () => this.countdown && this.countdown.stopCountdown(); + + countDownButton() { + return ( + + {/* (this.countdown = r)} + time={60} + onPress={this.handleClickCountdown} + // onNetworkFailed={this.handleNetworkFailed} + onDidFinishCountdown={this.handleCountdownOver} + > + {({ status, time }) => { + let title, containerStyle, titleStyle; + switch (status) { + case CountdownStatus.Idle: + title = "send"; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + case CountdownStatus.Counting: + title = `sent(${time})`; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + case CountdownStatus.Over: + title = "resend"; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + } + return ( + + {title} + + ); + }} + */} + + ); + } + + render() { + return ( + + + {/* + + + */} + + + + + + + + {this.store.text.verificarionAlart} + + + { + this.countryCode = value; + console.log(this.countryCode); + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + width: 70, + height: 25, + marginTop: 7, + }} + style={{fontFamily: Fonts.ubuntu, color: colors.mainColor}} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: scale(-12), + marginLeft: 10, + }} + labelHeight={0} + /> + (this.phone = phone)} + placeholder={this.store.text.phonenumber} + placeholderStyle={{fontWeight: 'bold'}} + placeholderTextColor={colors.textColor} + secureTextEntry={false} + blurOnSubmit={false} + returnKeyType={'next'} + onSubmitEditing={event => { + this.passwordInput.focus(); + }} + /> + + + { + this.passwordInput = input; + }} + secureTextEntry={true} + value={this.password} + onChangeText={password => (this.newPassword = password)} + onSubmitEditing={event => { + this.confirmPasswordInput.focus(); + }} + /> + + + { + this.confirmPasswordInput = input; + }} + secureTextEntry={true} + value={this.confirmPassword} + onChangeText={confirmPassword => (this.confirmPassword = confirmPassword)} + /> + + + + {this.sendAction()}} + style={{ + width: 100, + height: 50, + marginTop:20, + borderRadius: 10, + backgroundColor: colors.mainColor, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.sendTextReturn()} + + + + + + + + (this.phoneVerification = text.toString())} + keyboardType={'numeric'} + underlineColorAndroid="rgba(0,0,0,0)" + placeholder={this.store.text.verificationCode} + placeholderStyle={{ + fontWeight: 'bold', + fontFamily: Fonts.century, + fontSize: size.getSize(10), + }} + placeholderTextColor={colors.textColor} + /> + + + + + + + { + this.ForgotPasswordAction() + }}> + {this.store.text.ok} + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + container: { + flex: 1, + alignItems: 'center', + backgroundColor: 'white', + }, + + mainContainer: { + width: width, + flex: 1, + }, + + loginButton: { + width: scale(200), + height: verticalScale(50), + marginTop: moderateScale(30), + }, + + signupButton: { + width: width, + height: verticalScale(50), + }, + phoneCell: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: 15, + height: 40, + borderBottomWidth: 1, + borderColor: '#ebebeb', + width: width, + backgroundColor: '#fff', + }, + phoneInfo: { + flexDirection: 'row', + alignItems: 'center', + }, + input: { + height: 30, + width: width * 0.4, + marginLeft: 10, + padding: 0, + fontSize: 14, + }, + countdown: { + borderRadius: 5, + borderWidth: 2, + borderColor: colors.textColor, + height: verticalScale(40), + justifyContent: 'center', + alignItems: 'center', + }, + countdownTitle: { + color: colors.textColor, + fontSize: 12, + }, + signupButton: { + backgroundColor: colors.textColor, + width: width, + height: verticalScale(60), + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/signup/signUpVerify.js b/src/pages/signup/signUpVerify.js new file mode 100644 index 0000000..c31484d --- /dev/null +++ b/src/pages/signup/signUpVerify.js @@ -0,0 +1,527 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Keyboard, + Linking, + TextInput, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {Dropdown} from 'react-native-material-dropdown'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import BackHeader from '../../components/backHeader'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import Size from '../../common/size'; +const size = new Size(); +const countryCodeDropDownData = [ + {value: '852', label: '+852'}, + {value: '86', label: '+86'}, + {value: '886', label: '+886'}, +]; + +@inject('appStore') +@observer +export default class SignUpVerify extends Component { + @observable + phoneVerification = ''; + @observable + signupData = {}; + @observable + sendstate = true; + @observable + countryCode = '852'; + @observable + thirdParty = false; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + countryCode: '852', + }; + console.log(this.props.navigation.getParam('type', false)); + } + componentWillMount() { + this.signupData = this.props.navigation.state.params.signupData; + this.thirdParty = this.signupData.thirdParty; + delete this.signupData.thirdParty; + } + + navigatieAction(page) { + this.props.navigation.navigate(page); + } + + startToCount() { + this.interval = setInterval(() => { + this.count(); + }, 1000); + } + resendAction() { + this.store.countdown = 10; + this.resend = false; + this.startToCount(); + } + + count() { + this.store.timer -= 1; + if (this.store.timer == 0) { + this.sendstate = true; + clearInterval(this.interval); + } + } + + componentWillUnmount() { + clearInterval(this.interval); + } + + handleClickCountdown() { + var bodyFormData = new FormData(); + + bodyFormData.append('country_code', '852'); + bodyFormData.append('phone_number', this.signupData.phone.toString()); + + this.store.sendsmsVerify(bodyFormData, this); + } + + startToCountDown = () => { + this.countdown && this.countdown.startCountdown(); + }; + + handleNetworkFailed = () => alert('network failed'); + + sendTextReturn() { + if (this.sendstate) { + return this.store.text.send; + } else { + return this.store.timer.toString(); + } + } + + sendAction() { + if (this.sendstate) { + if (this.signupData.phone.length > 6) { + this.handleClickCountdown(); + clearInterval(this.interval); + this.store.timer = 60; + this.sendstate = false; + this.startToCount(); + } else { + this.refs.toast.show(this.store.text.Please_input_phone_number); + } + } + } + + signupAction() { + if (this.signupData.vercode != '') { + if (this.props.navigation.state.params.addphone) { + if (this.signupData.phone != '') { + var data = { + phone: this.signupData.phone, + countryCode: this.signupData.countryCode, + vercode: this.signupData.vercode, + }; + this.store.bindPhone(data, this); + } else { + this.refs.toast.show(this.store.text.Please_input_phone_number); + } + } else { + this.store.signupPost(this, this.signupData); + } + } else { + this.refs.toast.show('Please input verification code'); + } + } + + handleStopCountdown = () => this.countdown && this.countdown.stopCountdown(); + + countDownButton() { + return ( + + {/* (this.countdown = r)} + time={60} + onPress={this.handleClickCountdown} + // onNetworkFailed={this.handleNetworkFailed} + onDidFinishCountdown={this.handleCountdownOver} + > + {({ status, time }) => { + let title, containerStyle, titleStyle; + switch (status) { + case CountdownStatus.Idle: + title = "send"; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + case CountdownStatus.Counting: + title = `sent(${time})`; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + case CountdownStatus.Over: + title = "resend"; + containerStyle = styles.countdown; + titleStyle = styles.countdownTitle; + break; + } + return ( + + {title} + + ); + }} + */} + + ); + } + + render() { + return ( + + + {/* + + + */} + + + + + + + + {this.store.text.verificarionAlart} + + {/* + + + + {this.store.text.phonenumber + + ': ' + + this.signupData.countryCode + + ' ' + + this.signupData.phone} + + */} + {this.thirdParty ? ( + + { + this.signupData.countryCode = value; + console.log(this.countryCode); + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + width: 70, + height: 25, + marginTop: 7, + }} + style={{fontFamily: Fonts.ubuntu, color: colors.mainColor}} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: scale(-12), + marginLeft: 10, + }} + labelHeight={0} + /> + (this.signupData.phone = phone)} + placeholder={this.store.text.phonenumber} + placeholderStyle={{fontWeight: 'bold'}} + placeholderTextColor={colors.textColor} + secureTextEntry={false} + blurOnSubmit={false} + returnKeyType={'next'} + onSubmitEditing={event => { + this.nameinput.focus(); + }} + /> + + ) : ( + + {'+' + + this.signupData.countryCode + + ' ' + + this.signupData.phone} + + )} + + { + this.sendAction(); + }} + style={{ + width: 100, + height: 50, + marginTop: 20, + borderRadius: 10, + backgroundColor: colors.mainColor, + justifyContent: 'center', + alignItems: 'center', + }}> + + {this.sendTextReturn()} + + + + + + + (this.signupData.vercode = text.toString()) + } + keyboardType={'numeric'} + underlineColorAndroid="rgba(0,0,0,0)" + placeholder={this.store.text.verificationCode} + placeholderStyle={{ + fontWeight: 'bold', + fontFamily: Fonts.century, + fontSize: size.getSize(10), + }} + placeholderTextColor={colors.textColor} + /> + + + + + + + { + // this.store.signupPost(this, this.signupData); + this.signupAction(); + }}> + + {this.props.navigation.state.params.addphone + ? this.store.text.addPhone + : this.store.text.signup} + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, + container: { + flex: 1, + alignItems: 'center', + backgroundColor: 'white', + }, + + mainContainer: { + width: width, + flex: 1, + }, + + loginButton: { + width: scale(200), + height: verticalScale(50), + marginTop: moderateScale(30), + }, + + signupButton: { + width: width, + height: verticalScale(50), + }, + phoneCell: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: 15, + height: 40, + borderBottomWidth: 1, + borderColor: '#ebebeb', + width: width, + backgroundColor: '#fff', + }, + phoneInfo: { + flexDirection: 'row', + alignItems: 'center', + }, + input: { + height: 30, + width: width * 0.4, + marginLeft: 10, + padding: 0, + fontSize: 14, + }, + countdown: { + borderRadius: 5, + borderWidth: 2, + borderColor: colors.textColor, + height: verticalScale(40), + justifyContent: 'center', + alignItems: 'center', + }, + countdownTitle: { + color: colors.textColor, + fontSize: 12, + }, + signupButton: { + backgroundColor: colors.textColor, + width: width, + height: verticalScale(60), + justifyContent: 'center', + alignItems: 'center', + }, +}); diff --git a/src/pages/signup/signup.js b/src/pages/signup/signup.js new file mode 100755 index 0000000..3999c6f --- /dev/null +++ b/src/pages/signup/signup.js @@ -0,0 +1,903 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Keyboard, + Linking, + TextInput, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {Dropdown} from 'react-native-material-dropdown'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import BackHeader from '../../components/backHeader'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import CheckBox from 'react-native-check-box'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import history from '../../common/history'; +import Size from '../../common/size'; +const size = new Size(); + +const dropDownData = [ + {value: 'na', label: 'N/A'}, + {value: '18-25', label: '18-25'}, + {value: '25-40', label: '25-40'}, + {value: '41-60', label: '41-60'}, + {value: '60', label: '60+'}, +]; + +const rentalExpData = [ + {value: 'na', label: 'N/A'}, + {value: '0', label: '0 yrs'}, + {value: '1', label: '1 yrs'}, + {value: '2', label: '2 yrs'}, + {value: '3', label: '3 yrs'}, + {value: '4', label: '4 yrs'}, + {value: '5+', label: '5+ yrs'}, +]; + +const countryCodeDropDownData = [ + {value: '852', label: '+852'}, + {value: '86', label: '+86'}, + {value: '886', label: '+886'}, +]; + +const yesno = [ + {value: 'na', label: 'N/A'}, + {value: 'no', label: 'No'}, + {value: 'yes', label: 'Yes'}, +]; +const genderDropDownData = [ + {value: 'na', label: 'N/A'}, + {value: 'M', label: 'M'}, + {value: 'F', label: 'F'}, +]; +@inject('appStore') +@observer +export default class Signup extends Component { + @observable + signupData = { + vercode: '', + fullname: '', + email: '', + gender: 'na', + countryCode: '852', + chara: 'owner', + age: 'na', + pwd: '', + phone: '', + refcode: '', + ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + }; + @observable + confirmPassword = ''; + @observable + checked = false; + @observable + Rentalexperience = 'na'; + @observable + pet = 'na'; + @observable + smoke = 'na'; + + @observable + userData = {}; + + @observable + personinfo = false; + + @observable + phoneVerification = ''; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + countryCode: '852', + }; + console.log(this.props.navigation.getParam('type', false)); + } + + loginAction(which) { + console.log(which); + } + + colorReturn() { + if (this.personinfo) { + return colors.mainColor; + } else { + return colors.textColor; + } + } + + signupAction() { + if (this.props.navigation.getParam('type', false)) { + this.signupData.chara = 'owner'; + } else { + this.signupData.chara = 'tenant'; + } + if (this.signupData.phone.length >= 8) { + if (this.checked) { + if (this.signupData.pwd != null || this.signupData.pwd != '') { + if (this.signupData.pwd.length >= 8) { + if ( + this.confirmPassword != null || + this.state.confirmPassword != '' + ) { + if (this.confirmPassword == this.signupData.pwd) { + //this.store.signupPost(this, this.signupData); + // history.push(this,'/signUpVerify',{signupData:this.signupData}); + this.store.checkMember(this.signupData, this); + } else { + this.refs.toast.show( + 'Password and confirm password is not match', + ); + } + } else { + this.refs.toast.show('Please enter confirm password'); + } + } else { + this.refs.toast.show('your password must be at least 8 characters'); + } + } else { + this.refs.toast.show('Please enter password'); + } + } else { + this.refs.toast.show('Please accept the privacy policy'); + } + } else { + this.refs.toast.show('Please input your right mobile phone number'); + } + } + + personalOptionalAction() { + this.personinfo = !this.personinfo; + if (!this.personinfo) { + this.signupData.gender = 'na'; + this.signupData.age = 'na'; + this.Rentalexperience = 'na'; + this.pet = 'na'; + this.smoke = 'na'; + } + } + renderRadioButtons() { + return ( + + { + this.signupData.gender = 'M'; + }}> + + M + + + { + this.signupData.gender = 'F'; + }}> + + F + + + + ); + } + + render() { + const thirdPartyLoginButtons = [ + { + text: this.store.text.googleLogin, + icon: 'google', + color: '#2D9AFF', + which: 'google', + }, + { + text: this.store.text.facebookLogin, + icon: 'facebook-square', + color: '#295BA2', + which: 'facebook', + }, + { + text: this.store.text.wechatLogin, + icon: 'weixin', + color: '#00E86E', + which: 'wechat', + }, + ]; + return ( + + + {/* + + + */} + + + + + {/* (this.signupData.phone = phone)} + returnKeyType={'next'} + keyboardType={'numeric'} + secureTextEntry={false} + onSubmitEditing={event => { + this.nameinput.focus(); + }} + /> */} + + { + this.signupData.countryCode = value; + console.log(this.signupData.countryCode); + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + width: 70, + height: 25, + marginTop: 7, + }} + style={{fontFamily: Fonts.ubuntu, color: colors.mainColor}} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: scale(-12), + marginLeft: 10, + }} + labelHeight={0} + /> + (this.signupData.phone = phone)} + placeholder={this.store.text.phonenumber} + placeholderStyle={{fontWeight: 'bold'}} + placeholderTextColor={colors.textColor} + secureTextEntry={false} + blurOnSubmit={false} + returnKeyType={'next'} + onSubmitEditing={event => { + this.nameinput.focus(); + }} + /> + + + { + this.nameinput = input; + }} + secureTextEntry={false} + value={this.signupData.fullname} + onChangeText={fullname => (this.signupData.fullname = fullname)} + onSubmitEditing={event => { + this.emailinput.focus(); + }} + /> + + { + this.emailinput = input; + }} + onChangeText={email => (this.signupData.email = email)} + returnKeyType={'next'} + secureTextEntry={false} + onSubmitEditing={event => { + this.passwordinput.focus(); + }} + /> + {/* {this.renderRadioButtons()} */} + {/* + + + {this.store.text.countryCode} + + + + { + this.signupData.countryCode = value; + console.log(this.signupData.countryCode); + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{fontFamily: Fonts.ubuntu, color: colors.mainColor}} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + */} + { + this.personalOptionalAction(); + }}> + + + {this.store.text.personalinfo} + + + {this.personinfo ? ( + + + + {/* + + */} + + {this.store.text.gender} + + + + + { + this.signupData.gender = value; + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{ + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + }} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + + {this.props.navigation.getParam('type', false) ? ( + + ) : ( + + + + {this.store.text.Rentalexperience} + + + + + { + this.Rentalexperience = value; + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{ + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + }} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + + )} + + + + + {this.store.text.age} + + + + + { + this.signupData.age = value; + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{ + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + }} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + + {this.props.navigation.getParam('type', false) ? ( + + ) : ( + + + + {this.store.text.pet} + + + + { + this.pet = value; + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{ + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + }} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + + )} + {this.props.navigation.getParam('type', false) ? ( + + ) : ( + + + + {this.store.text.smoke} + + + + { + this.smoke = value; + }} + textColor={colors.mainColor} + itemTextStyle={{fontFamily: Fonts.ubuntu}} + baseColor={colors.baseColor} + containerStyle={{ + borderWidth: 1, + borderRadius: 6, + borderColor: colors.textColor, + margin: 0, + padding: 0, + }} + style={{ + fontFamily: Fonts.ubuntu, + color: colors.mainColor, + }} + inputContainerStyle={{ + borderBottomColor: 'transparent', + marginBottom: -12, + marginLeft: 10, + }} + labelHeight={0} + /> + + + )} + + ) : ( + + )} + + (this.signupData.pwd = pwd)} + returnKeyType={'next'} + inputRef={input => { + this.passwordinput = input; + }} + onSubmitEditing={event => { + this.confirmPasswordinput.focus(); + }} + /> + (this.confirmPassword = password)} + returnKeyType={'next'} + inputRef={input => { + this.confirmPasswordinput = input; + }} + onSubmitEditing={event => { + this.refcodeinput.focus(); + }} + /> + + (this.signupData.refcode = refferralCode) + } + returnKeyType={'done'} + inputRef={input => { + this.refcodeinput = input; + }} + onSubmitEditing={event => { + Keyboard.dismiss(); + }} + /> + + + + } + unCheckedImage={ + + } + onClick={() => (this.checked = !this.checked)} + checkBoxColor={colors.mainColor} + isChecked={this.checked} + /> + + { + // // this.navigatieAction("SignUpVerify"); + // Linking.openURL( + // "https://www.hangryfood.co/privacy-statement" + // ); + // }} + > + {' By registering you agree to our'} + { + Linking.openURL('http://rent-chat.com/#mu-pa'); + }}> + {' Payment Agreement '} + + + and + + { + Linking.openURL('http://rent-chat.com/#mu-sa'); + }}> + {' Service Agreememt.'} + + + + + + { + this.signupAction(); + }}> + {this.store.text.next} + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, +}); diff --git a/src/pages/signup/wechatSignup.js b/src/pages/signup/wechatSignup.js new file mode 100644 index 0000000..864b93e --- /dev/null +++ b/src/pages/signup/wechatSignup.js @@ -0,0 +1,273 @@ +import React, {Component} from 'react'; +import { + View, + Text, + TouchableHighlight, + StyleSheet, + TouchableOpacity, + Keyboard, + Linking, + TextInput, +} from 'react-native'; +import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; +import NaviBar from '../../components/navi-bar'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import LoadingView from '../../common/loading'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {Dropdown} from 'react-native-material-dropdown'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import BackHeader from '../../components/backHeader'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import CheckBox from 'react-native-check-box'; +import CommonTextInput from '../../components/commonTextInput'; +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {width, height} from '../../common/screen'; +import history from '../../common/history'; +import Size from '../../common/size'; +const size = new Size(); + +const dropDownData = [ + {value: 'na', label: 'N/A'}, + {value: '18-25', label: '18-25'}, + {value: '25-40', label: '25-40'}, + {value: '41-60', label: '41-60'}, + {value: '60', label: '60+'}, +]; + +const rentalExpData = [ + {value: 'na', label: 'N/A'}, + {value: '0', label: '0 yrs'}, + {value: '1', label: '1 yrs'}, + {value: '2', label: '2 yrs'}, + {value: '3', label: '3 yrs'}, + {value: '4', label: '4 yrs'}, + {value: '5+', label: '5+ yrs'}, +]; + +const countryCodeDropDownData = [ + {value: '852', label: '+852'}, + {value: '86', label: '+86'}, + {value: '886', label: '+886'}, +]; + +const yesno = [ + {value: 'na', label: 'N/A'}, + {value: 'no', label: 'No'}, + {value: 'yes', label: 'Yes'}, +]; +const genderDropDownData = [ + {value: 'na', label: 'N/A'}, + {value: 'M', label: 'M'}, + {value: 'F', label: 'F'}, +]; +@inject('appStore') +@observer +export default class WechatSignup extends Component { + @observable + signupData = this.props.navigation.state.params.signupData; + @observable + confirmPassword = ''; + @observable + checked = false; + @observable + Rentalexperience = 'na'; + @observable + pet = 'na'; + @observable + smoke = 'na'; + + @observable + userData = {}; + + @observable + personinfo = false; + + @observable + phoneVerification = ''; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + countryCode: '852', + }; + } + + colorReturn() { + if (this.personinfo) { + return colors.mainColor; + } else { + return colors.textColor; + } + } + + signupAction() { + if (this.signupData.email != '') { + this.store.signupWithWeChat(this.signupData, this); + } else { + this.refs.toast.show('Please input Email'); + } + } + + renderRadioButtons() { + return ( + + { + this.signupData.gender = 'M'; + }}> + + M + + + { + this.signupData.gender = 'F'; + }}> + + F + + + + ); + } + + render() { + const thirdPartyLoginButtons = [ + { + text: this.store.text.googleLogin, + icon: 'google', + color: '#2D9AFF', + which: 'google', + }, + { + text: this.store.text.facebookLogin, + icon: 'facebook-square', + color: '#295BA2', + which: 'facebook', + }, + { + text: this.store.text.wechatLogin, + icon: 'weixin', + color: '#00E86E', + which: 'wechat', + }, + ]; + return ( + + + {/* + + + */} + + + + + { + this.emailinput = input; + }} + onChangeText={email => (this.signupData.email = email)} + secureTextEntry={false} + /> + + { + this.signupAction(); + }}> + {this.store.text.signup} + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntuL, + fontSize: size.getSize(13), + }, + buttonText: { + color: '#fff', + }, + buttonView: { + backgroundColor: colors.mainColor, + marginRight: 30, + marginLeft: 30, + marginTop: 30, + marginBottom: 30, + height: 50, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + }, + buttonText: { + fontSize: 15, + fontFamily: Fonts.ubuntu, + color: 'white', + }, +}); diff --git a/src/pages/splash/splashScreen.js b/src/pages/splash/splashScreen.js new file mode 100755 index 0000000..f83ecde --- /dev/null +++ b/src/pages/splash/splashScreen.js @@ -0,0 +1,168 @@ +import React, {Component} from 'react'; +import {StyleSheet, View, Text, Image, ActivityIndicator} from 'react-native'; +import JMessage from 'jmessage-react-plugin'; +import JPush from 'jpush-react-native'; +import history from '../../common/history'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import moment from 'moment'; +import {queryUser} from '../../services/realm/realmManger'; +import Global from '../../services/Global'; +//import { NimSession } from 'react-native-netease-im' +import {inject, observer} from 'mobx-react'; +import {observable} from 'mobx'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import language from '../../services/language'; +import {isTSUndefinedKeyword} from '@babel/types'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Size from '../../common/size'; +const size = new Size(); +const asyncStorageHelper = new AsyncStorageHelper(); +@inject('appStore') +@observer +export default class SplashScreen extends Component { + @observable + notificationId = ''; + constructor(props) { + super(props); + this.store = props.appStore; + } + + async componentWillMount() {} + + async componentDidMount() { + // Preload data from an external API + // Preload data using AsyncStorage + + this.init(); + // this.props.navigation.navigate('mainPage'); + // } + } + + async init() { + // this.store.getRegistrationID() + this.connectListener = result => { + console.log('connectListener:' + JSON.stringify(result)); + }; + this.store.splash = true; + let user = await queryUser(); + // console.log(user.id) + let count = user.length; + + asyncStorageHelper.getData('language', data => { + console.log(data); + console.log('hi'); + if (data != null) { + switch (data) { + case '"english"': + console.log('english'); + this.store.text = language.en; + this.store.languageSelection = 'english'; + break; + + case '"hk"': + console.log('hk'); + this.store.text = language.hk; + this.store.languageSelection = 'hk'; + break; + case '"ch"': + console.log('chinese'); + this.store.text = language.ch; + this.store.languageSelection = 'ch'; + break; + } + } else { + try { + console.log('hk'); + this.store.text = language.hk; + this.store.languageSelection = 'hk'; + console.log(this.store.languageSelection); + } catch (error) { + console.log(error); + } + } + }); + console.log(count); + if (count > 0) { + await this.getUser(); + await this.login(); + //this.props.navigation.navigate("mainPage"); + } else { + console.log('testing'); + this.store.selectChar = true; + this.props.navigation.navigate('SelectChar'); + } + } + + async loginAction(userInfo) { + //await this.store.loginPost(userInfo, this, true); + await this.store.getUserProfile(userInfo, this); + // console.log(userInfo.pwd) + // await this.props.linkAction.login('testphiliptesttest', 'cefef77be727e823969bfb9c6a01fa63', (error) => { + // if (error) { + // // if (this.toast) { + // // this.toast.show(util.parseDisconnectMsg(error)); + // // } + // console.log(error) + // //this.props.navigation.navigate('login'); + // console.log(util.parseDisconnectMsg(error)) + // } else { + // console.log('ok') + // // if (this.props.navigation.state.routeName === 'login') { + // // this.props.navigation.navigate('session'); + // // } + // // AsyncStorage.setItem('isLogin', 'true'); + // } + // }); + } + + async login() { + await asyncStorageHelper.getData('userInfo', async userInfo => { + if (userInfo != null) { + console.log(userInfo); + await this.loginAction(userInfo); + } else { + // this.store.regUserNotificationToken(false,false); + if (this.store.user.memberType == 0) { + this.props.navigation.navigate('main'); + } else { + this.props.navigation.navigate('signin', {icon: false}); + } + } + }); + } + + getUser = async () => { + let user = queryUser(); + for (let p of user) { + this.store.user = p; + console.log(this.store.user); + this.store.user.apartment.map((items, index) => { + console.log(items); + }); + } + }; + + render() { + return ( + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + viewStyles: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.mainColor, + }, + textStyles: { + color: 'white', + fontSize: 40, + fontWeight: 'bold', + }, +}); diff --git a/src/pages/syncApartment/syncApartment.js b/src/pages/syncApartment/syncApartment.js new file mode 100644 index 0000000..e70f9eb --- /dev/null +++ b/src/pages/syncApartment/syncApartment.js @@ -0,0 +1,175 @@ +import React, {Component} from 'react'; +import { + Platform, + StyleSheet, + View, + TouchableOpacity, + Alert, + SafeAreaView, + Text, + ScrollView, +} from 'react-native'; +import {observable, action, transaction} from 'mobx'; +import {Button} from 'react-native-elements'; +import {observer, inject} from 'mobx-react'; + +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import Icon from 'react-native-vector-icons/dist/FontAwesome5'; +import Icon2 from 'react-native-vector-icons/dist/MaterialCommunityIcons'; +import Toast, {DURATION} from 'react-native-easy-toast'; +import BackHeader from '../../components/backHeader'; +import LoadingView from '../../common/loading'; +import { + CreditCardInput, + LiteCreditCardInput, +} from 'react-native-credit-card-input'; +//component + +// function +import {width, height} from '../../common/screen'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Size from '../../common/size'; +const size = new Size(); +//const log = new Log() +@inject('appStore') +@observer +export default class SyncApartment extends Component { + static navigationOptions = { + gesturesEnabled: false, + }; + + constructor(props) { + super(props); + this.store = props.appStore; + this.state = { + apartmentNeedToUpdate: this.store.apartmentDataWhichNeedToSync, + }; + } + + renderCheckBox(selected) { + if (selected) { + return ; + } else { + return ; + } + } + + renderApartment() { + return this.state.apartmentNeedToUpdate.map((items, index) => { + return ( + { + this.store.apartmentDataWhichNeedToSync[index].selected = !this.store.apartmentDataWhichNeedToSync[index].selected; + this.setState({apartmentNeedToUpdate:this.store.apartmentDataWhichNeedToSync}) + }}> + + {this.renderCheckBox( + this.state.apartmentNeedToUpdate[index].selected + )} + + + + {items.name} + + + ); + }); + } + + render() { + return ( + + + + + + {'上傳物業'} + + this.props.navigation.navigate('home')}> + + {'略過'} + + + this.store.uploadApartmentWhenLoginFindApartmentWhichNotSync(this)}> + + {'上傳'} + + + + + {'發現有物業尚未上傳,請選擇以下物業上傳'} + + {this.renderApartment()} + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + backgroundColor: 'white', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + instructions: { + textAlign: 'center', + color: '#333333', + marginBottom: 5, + }, + buttonView: { + width: '80%', + height: 60, + marginTop: 10, + alignItems: 'center', + justifyContent: 'center', + borderColor: 'black', + borderWidth: 1, + }, + textView: { + color: colors.textColor, + fontFamily: Fonts.ubuntu, + }, + label: { + color: 'black', + fontSize: 12, + }, + input: { + fontSize: 16, + color: 'black', + }, +}); diff --git a/src/pages/tutorial/addTut.js b/src/pages/tutorial/addTut.js new file mode 100644 index 0000000..e32a5e4 --- /dev/null +++ b/src/pages/tutorial/addTut.js @@ -0,0 +1,257 @@ +import React, {Component} from 'react'; +import { + View, + Dimensions, + StyleSheet, + ActivityIndicator, + Modal, + TouchableOpacity, + TouchableHighlight, + Text, + Image, +} from 'react-native'; +//import LottieView from 'lottie-react-native'; +//import LoadingAnimation from '../assets/animations/loading'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import BlinkView from 'react-native-blink-view'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/Feather'; +import Ionicons from 'react-native-vector-icons/Ionicons'; +import FontAwsome5Icon from 'react-native-vector-icons/FontAwesome5'; +import {observable} from 'mobx'; +import {inject, observer} from 'mobx-react'; +import {ScrollView} from 'react-native-gesture-handler'; +const {width, height} = Dimensions.get('window'); +@inject('appStore') +@observer +export default class AddTut extends Component { + @observable + index = 0; + @observable + isBlinking = true; + constructor(props) { + super(props); + this.store = props.appStore; + } + + render() { + return ( + { + console.log('c lose modal'); + }}> + + + {'新增功能'} + + + + {this.store.user.memberType == 0 ? ( + + + + + + + + {'+ ' + this.store.text.addApartment} + + + + + + {'新增物業,加入物業相片及文件,方便管理'} + + + + ) : ( + + )} + + + + + + + + {'+ ' + this.store.text.add + this.store.text.addContract} + + + + + + {this.store.user.memberType == 0 + ? '可快捷添加合約,網上簽署' + : '查看合約及網上簽署'} + + + + + + + + + {'+ ' + this.store.text.add + this.store.text.problemRecord} + + + + + + {'方便,清晰記錄問題,保障雙方'} + + + + + + { + this.store.addtutVisable = false; + }}> + + {'明白'} + + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + wrapper: { + position: 'absolute', + top: 0, + left: 0, + width: width, + height: height, + backgroundColor: colors.mainColor, + }, + loading: { + position: 'absolute', + top: height / 2 - 100, + left: width / 2 - 70, + width: 140, + height: 140, + }, + modalBackground: { + flex: 1, + alignItems: 'center', + + backgroundColor: colors.mainColor, + }, + activityIndicatorWrflapper: { + backgroundColor: colors.mainColor, + justifyContent: 'center', + alignItems: 'center', + flex: 1, + }, +}); diff --git a/src/pages/tutorial/homeTut.js b/src/pages/tutorial/homeTut.js new file mode 100644 index 0000000..361a303 --- /dev/null +++ b/src/pages/tutorial/homeTut.js @@ -0,0 +1,496 @@ +import React, {Component} from 'react'; +import { + View, + Dimensions, + StyleSheet, + ActivityIndicator, + Modal, + TouchableOpacity, + TouchableHighlight, + Text, +} from 'react-native'; +//import LottieView from 'lottie-react-native'; +//import LoadingAnimation from '../assets/animations/loading'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import BlinkView from 'react-native-blink-view'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/Feather'; +import Ionicons from 'react-native-vector-icons/Ionicons'; +import {observable} from 'mobx'; +import {inject, observer} from 'mobx-react'; +const {width, height} = Dimensions.get('window'); +@inject('appStore') +@observer +export default class HomeTut extends Component { + @observable + index = 0; + @observable + isBlinking = true; + constructor(props) { + super(props); + this.store = props.appStore; + } + + clickAction(type) { + switch (type) { + case 'add': + if (this.index < 2) { + this.index += 1; + console.log(this.index); + } else if (this.index == 2) { + this.store.hometutVisable = false; + this.index = 0 + } + + break; + + case 'sub': + if (this.index > 0) { + this.index -= 1; + } + break; + } + } + + tutViewReturn() { + if (this.store.user.memberType === 0) { + switch (this.index) { + case 0: + return ( + + + + + 與客服對話尋求幫助 + + + + + + 按此可加入租客 + + + + + + + 更改物業資料 + + + + + + + 與租客對話 + + + + + + + 開啟物業文件和圖片及交租單據 + + + + + ); + break; + case 1: + return ( + + + + 提供財經新聞,維修公司,租務成交資訊 + + + + + + + 查看業主,租客,客服新增的問題解決記錄 + + + + + ); + break; + case 2: + return ( + + + + 增加物業和合同 + + + + + + + 查看個人資料和設定簽名及信用卡等重要資料 + + + + + ); + break; + } + } else { + switch (this.index) { + case 0: + return ( + + + + + 與客服對話尋求幫助 + + + + + + 輸入業主提供的分享碼,同步資料 + + + + + ); + break; + case 1: + return ( + + + + 提供財經新聞,維修公司,租務成交資訊 + + + + + + + 查看業主,租客,客服新增的問題解決記錄 + + + + + ); + break; + case 2: + return ( + + + + 增加物業和合同 + + + + + + + 查看個人資料和設定簽名及信用卡等重要資料 + + + + + ); + break; + } + } + } + + render() { + return ( + { + console.log('c lose modal'); + }}> + + {/* onPress={()=>{this.store.hometutVisable = false}}> */} + + { + this.clickAction('add'); + }}> + + + + + {this.index < 1 ? ( + + ) : ( + { + this.clickAction('sub'); + }}> + + + + + )} + + {this.tutViewReturn()} + + {/* { + this.store.hometutVisable = false; + }}> + + */} + + + ); + } +} + +const styles = StyleSheet.flatten({ + wrapper: { + position: 'absolute', + top: 0, + left: 0, + width: width, + height: height, + backgroundColor: 'rgba(100, 0, 0, 0.2)', + }, + loading: { + position: 'absolute', + top: height / 2 - 100, + left: width / 2 - 70, + width: 140, + height: 140, + }, + modalBackground: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#00000080', + }, + activityIndicatorWrflapper: { + backgroundColor: '#FFFFFF', + justifyContent: 'center', + alignItems: 'center', + flex: 1, + }, +}); diff --git a/src/pages/tutorial/homeTut2.js b/src/pages/tutorial/homeTut2.js new file mode 100644 index 0000000..9f14d3d --- /dev/null +++ b/src/pages/tutorial/homeTut2.js @@ -0,0 +1,169 @@ +import React, {Component} from 'react'; +import { + View, + Dimensions, + StyleSheet, + ActivityIndicator, + Modal, + TouchableOpacity, + TouchableHighlight, + Text, + Image, +} from 'react-native'; +//import LottieView from 'lottie-react-native'; +//import LoadingAnimation from '../assets/animations/loading'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import BlinkView from 'react-native-blink-view'; +import {colors} from '../../assets/styles/colors-theme'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Icon from 'react-native-vector-icons/Feather'; +import Ionicons from 'react-native-vector-icons/Ionicons'; +import {observable} from 'mobx'; +import {inject, observer} from 'mobx-react'; +const {width, height} = Dimensions.get('window'); +@inject('appStore') +@observer +export default class HomeTut2 extends Component { + @observable + index = 0; + @observable + isBlinking = true; + constructor(props) { + super(props); + this.store = props.appStore; + } + + clickAction(type) { + switch (type) { + case 'add': + if (this.index < 2) { + this.index += 1; + console.log(this.index); + } else if (this.index == 2) { + this.store.hometutVisable = false; + this.index = 0; + } + + break; + + case 'sub': + if (this.index > 0) { + this.index -= 1; + } + break; + } + } + + render() { + return ( + { + console.log('c lose modal'); + }}> + + + {'歡迎使用RENT CHAT!'} + + + + + {'若有疑難,可·與客服進行即時通訊!'} + + + + + + {'隨時隨地,管理你的物業!'} + + + { + this.store.hometutVisable = false; + }}> + + {'開始使用'} + + + + + ); + } +} + +const styles = StyleSheet.flatten({ + wrapper: { + position: 'absolute', + top: 0, + left: 0, + width: width, + height: height, + backgroundColor: colors.mainColor, + }, + loading: { + position: 'absolute', + top: height / 2 - 100, + left: width / 2 - 70, + width: 140, + height: 140, + }, + modalBackground: { + flex: 1, + alignItems: 'center', + + backgroundColor: colors.mainColor, + }, + activityIndicatorWrflapper: { + backgroundColor: colors.mainColor, + justifyContent: 'center', + alignItems: 'center', + flex: 1, + }, +}); diff --git a/src/pages/tutorial/tutorial.js b/src/pages/tutorial/tutorial.js new file mode 100755 index 0000000..40078e7 --- /dev/null +++ b/src/pages/tutorial/tutorial.js @@ -0,0 +1,383 @@ +import React, {Component} from 'react'; +import {NavigationActions} from 'react-navigation'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import {StyleSheet, View, Text, Image, Platform} from 'react-native'; +import Realm from 'realm'; +import LinearGradient from 'react-native-linear-gradient'; +import AppIntroSlider from 'react-native-app-intro-slider'; +import {createUser} from '../../services/realm/realmManger'; +import {colors} from '../../assets/styles/colors-theme'; +import {inject, observer} from 'mobx-react'; +import DeviceInfo from 'react-native-device-info'; +import {observable} from 'mobx'; +import {Fonts} from '../../assets/styles/fonts-theme'; +import Size from '../../common/size'; +import {width, height} from '../../common/screen'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import {scale, verticalScale, moderateScale} from 'react-native-size-matters'; +import moment from 'moment'; +const size = new Size(); +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +//I18nManager.forceRTL(false); + +const styles = StyleSheet.create({ + mainContent: { + flex: 1, + alignItems: 'center', + }, + buttonCircle: { + marginRight: 20, + marginTop: 12, + justifyContent: 'center', + alignItems: 'center', + }, + image: { + width: 320, + height: 320, + }, + text: { + color: 'rgba(255, 255, 255, 0.8)', + backgroundColor: 'transparent', + textAlign: 'center', + paddingHorizontal: 16, + }, + title: { + fontSize: 22, + color: 'white', + backgroundColor: 'transparent', + textAlign: 'center', + marginBottom: 16, + }, +}); + +const ownerslides = [ + { + uri: require('../../assets/images/ownertut1.png'), + }, + { + uri: require('../../assets/images/ownertut2.png'), + }, + { + uri: require('../../assets/images/ownertut3.png'), + }, + { + uri: require('../../assets/images/ownertut4.png'), + }, + { + uri: require('../../assets/images/ownertut5.png'), + }, + { + uri: require('../../assets/images/ownertut6.png'), + }, + { + uri: require('../../assets/images/ownertut7.png'), + }, +]; + +const normalSlides = [ + { + uri: require('../../assets/images/manage.png'), + title: '一鍵管理物業', + content: '業主簽發電子租金收據', + }, + { + uri: require('../../assets/images/contract.png'), + title: '電子租約', + content: '續租怎麼辦?足不出戶用電子租約就可簽妥', + }, + { + uri: require('../../assets/images/repair.png'), + title: '服務商資訊', + content: '集合家居維修服務商,省時管理', + }, + { + uri: require('../../assets/images/renthistory.png'), + title: '租務成交紀錄', + content: '想知行情? RENT CHAT收錄全港最新的租務成交紀錄', + }, + { + uri: require('../../assets/images/freefurniture.png'), + title: '免費二手傢俱', + content: '租咗新樓但又要洗錢買傢俱 ? 我們有免費二手傢俱平台,拎包即入伙', + }, + { + uri: require('../../assets/images/econnews.png'), + title: '經濟新聞', + content: '緊貼市場資訊', + }, +]; + +const tenantslides = [ + { + uri: require('../../assets/images/tenanttut1.png'), + }, + { + uri: require('../../assets/images/tenanttut2.png'), + }, + { + uri: require('../../assets/images/tenanttut3.png'), + }, + { + uri: require('../../assets/images/tenanttut4.png'), + }, + { + uri: require('../../assets/images/tenanttut5.png'), + }, + { + uri: require('../../assets/images/tenanttut6.png'), + }, + { + uri: require('../../assets/images/tenanttut7.png'), + }, +]; +@inject('appStore') +@observer +export default class Tutorial extends Component { + @observable + slides = []; + @observable + tutWidth = 300; + + constructor(props) { + super(props); + this.store = props.appStore; + } + + componentWillMount() { + if (DeviceInfo.isTablet()) { + this.tutWidth = 200; + } else { + 300; + } + if (this.props.navigation.getParam('type', 1) == 0) { + this.slides = normalSlides; + } else { + this.slides = normalSlides; + } + } + + async onDone() { + var tutdata = this.props.navigation.state.params.tutdata; + if (!tutdata.first) { + this.props.navigation.navigate( + 'main', + {}, + NavigationActions.navigate({routeName: 'profile'}), + ); + } else { + await createUser(tutdata.type); + if (tutdata.type == 0) { + let user = realm.objects('User'); + var now = new Date(); + var oneyearlater = moment(now).add(1, 'years'); + let newApartment = { + id: 'demo', + unit: 'low', + floor: '', + seats: '', + createDate: new Date(), + modifyDate: null, + name: 'Demo', + address: 'Demo address', + avatar: '../../assets/images/demohouse.png', + signContractDate: new Date(), + endContractDate: oneyearlater.toDate(), + rent: 10000, + leaseMonth: 12, + deposit: 10000, + country: 'hk', + callingCode: '+852', + rentNotification: 0, + endContractNotification: 0, + rentNotificationId: [], + remark: [], + doc: [], + }; + await realm.write(() => { + user[0].apartment.push(newApartment); + }); + await this.store.getUser(); + //await this.store.startTut(); + this.props.navigation.navigate('mainPage'); + } else { + let user = realm.objects('User'); + var now = new Date(); + var oneyearlater = moment(now).add(1, 'years'); + let newApartment = { + id: 'demo', + unit: 'low', + floor: '', + seats: '', + createDate: new Date(), + modifyDate: new Date(), + name: 'Demo', + address: 'Demo address', + avatar: '../../assets/images/demohouse.png', + signContractDate: new Date(), + endContractDate: oneyearlater.toDate(), + leaseMonth: 12, + deposit: 10000, + rent: 10000, + country: 'hk', + callingCode: '+852', + rentNotification: 0, + endContractNotification: 0, + rentNotificationId: [], + remark: [], + doc: [], + }; + await realm.write(() => { + user[0].apartment.push(newApartment); + }); + await this.store.getUser(); + this.props.navigation.navigate('signin', {icon: false}); + } + } + } + _renderSkipButton = () => { + return ( + + + 略過 + + + ); + }; + + _renderNextButton = () => { + return ( + + + + ); + }; + _renderBackButton = () => { + return ( + + + + ); + }; + + _renderDoneButton = () => { + return ( + + + + ); + }; + + _renderItem = ({item, dimensions}) => ( + + + 歡迎使用 RENT CHAT! + + + + + {item.title} + + + {item.content} + + { + var tutdata = this.props.navigation.state.params.tutdata; + console.log(tutdata); + if (!tutdata.first) { + this.props.navigation.navigate( + 'main', + {}, + NavigationActions.navigate({routeName: 'profile'}), + ); + } else { + this.props.navigation.navigate('SelectChar'); + } + }} + /> + + ); + + render() { + return ( + { + this.onDone(); + }} + // hideNextButton + // hideDoneButton + // onSkip={() => console.log("skipped")} + /> + ); + } +} diff --git a/src/res/404.png b/src/res/404.png new file mode 100755 index 0000000..5dde3b8 Binary files /dev/null and b/src/res/404.png differ diff --git a/src/res/emoji/ajmd/ajmd001.png b/src/res/emoji/ajmd/ajmd001.png new file mode 100755 index 0000000..57419cf Binary files /dev/null and b/src/res/emoji/ajmd/ajmd001.png differ diff --git a/src/res/emoji/ajmd/ajmd002.png b/src/res/emoji/ajmd/ajmd002.png new file mode 100755 index 0000000..957bf26 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd002.png differ diff --git a/src/res/emoji/ajmd/ajmd003.png b/src/res/emoji/ajmd/ajmd003.png new file mode 100755 index 0000000..e50cf11 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd003.png differ diff --git a/src/res/emoji/ajmd/ajmd004.png b/src/res/emoji/ajmd/ajmd004.png new file mode 100755 index 0000000..50fa4ed Binary files /dev/null and b/src/res/emoji/ajmd/ajmd004.png differ diff --git a/src/res/emoji/ajmd/ajmd005.png b/src/res/emoji/ajmd/ajmd005.png new file mode 100755 index 0000000..4e6f159 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd005.png differ diff --git a/src/res/emoji/ajmd/ajmd006.png b/src/res/emoji/ajmd/ajmd006.png new file mode 100755 index 0000000..1be1aed Binary files /dev/null and b/src/res/emoji/ajmd/ajmd006.png differ diff --git a/src/res/emoji/ajmd/ajmd007.png b/src/res/emoji/ajmd/ajmd007.png new file mode 100755 index 0000000..03d27cd Binary files /dev/null and b/src/res/emoji/ajmd/ajmd007.png differ diff --git a/src/res/emoji/ajmd/ajmd008.png b/src/res/emoji/ajmd/ajmd008.png new file mode 100755 index 0000000..9132623 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd008.png differ diff --git a/src/res/emoji/ajmd/ajmd009.png b/src/res/emoji/ajmd/ajmd009.png new file mode 100755 index 0000000..ba427b4 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd009.png differ diff --git a/src/res/emoji/ajmd/ajmd010.png b/src/res/emoji/ajmd/ajmd010.png new file mode 100755 index 0000000..488cef4 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd010.png differ diff --git a/src/res/emoji/ajmd/ajmd011.png b/src/res/emoji/ajmd/ajmd011.png new file mode 100755 index 0000000..b1a40f2 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd011.png differ diff --git a/src/res/emoji/ajmd/ajmd012.png b/src/res/emoji/ajmd/ajmd012.png new file mode 100755 index 0000000..85a80bc Binary files /dev/null and b/src/res/emoji/ajmd/ajmd012.png differ diff --git a/src/res/emoji/ajmd/ajmd013.png b/src/res/emoji/ajmd/ajmd013.png new file mode 100755 index 0000000..4dc0aff Binary files /dev/null and b/src/res/emoji/ajmd/ajmd013.png differ diff --git a/src/res/emoji/ajmd/ajmd014.png b/src/res/emoji/ajmd/ajmd014.png new file mode 100755 index 0000000..66ad182 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd014.png differ diff --git a/src/res/emoji/ajmd/ajmd015.png b/src/res/emoji/ajmd/ajmd015.png new file mode 100755 index 0000000..29bc006 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd015.png differ diff --git a/src/res/emoji/ajmd/ajmd016.png b/src/res/emoji/ajmd/ajmd016.png new file mode 100755 index 0000000..d36e877 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd016.png differ diff --git a/src/res/emoji/ajmd/ajmd017.png b/src/res/emoji/ajmd/ajmd017.png new file mode 100755 index 0000000..6fd7a5b Binary files /dev/null and b/src/res/emoji/ajmd/ajmd017.png differ diff --git a/src/res/emoji/ajmd/ajmd018.png b/src/res/emoji/ajmd/ajmd018.png new file mode 100755 index 0000000..6de8928 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd018.png differ diff --git a/src/res/emoji/ajmd/ajmd019.png b/src/res/emoji/ajmd/ajmd019.png new file mode 100755 index 0000000..ee264ec Binary files /dev/null and b/src/res/emoji/ajmd/ajmd019.png differ diff --git a/src/res/emoji/ajmd/ajmd020.png b/src/res/emoji/ajmd/ajmd020.png new file mode 100755 index 0000000..cd8e108 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd020.png differ diff --git a/src/res/emoji/ajmd/ajmd021.png b/src/res/emoji/ajmd/ajmd021.png new file mode 100755 index 0000000..e6cb164 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd021.png differ diff --git a/src/res/emoji/ajmd/ajmd022.png b/src/res/emoji/ajmd/ajmd022.png new file mode 100755 index 0000000..b559db0 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd022.png differ diff --git a/src/res/emoji/ajmd/ajmd023.png b/src/res/emoji/ajmd/ajmd023.png new file mode 100755 index 0000000..ef49dc8 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd023.png differ diff --git a/src/res/emoji/ajmd/ajmd024.png b/src/res/emoji/ajmd/ajmd024.png new file mode 100755 index 0000000..d93002b Binary files /dev/null and b/src/res/emoji/ajmd/ajmd024.png differ diff --git a/src/res/emoji/ajmd/ajmd025.png b/src/res/emoji/ajmd/ajmd025.png new file mode 100755 index 0000000..58c1711 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd025.png differ diff --git a/src/res/emoji/ajmd/ajmd026.png b/src/res/emoji/ajmd/ajmd026.png new file mode 100755 index 0000000..e226abd Binary files /dev/null and b/src/res/emoji/ajmd/ajmd026.png differ diff --git a/src/res/emoji/ajmd/ajmd027.png b/src/res/emoji/ajmd/ajmd027.png new file mode 100755 index 0000000..4fc7257 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd027.png differ diff --git a/src/res/emoji/ajmd/ajmd028.png b/src/res/emoji/ajmd/ajmd028.png new file mode 100755 index 0000000..4a85fce Binary files /dev/null and b/src/res/emoji/ajmd/ajmd028.png differ diff --git a/src/res/emoji/ajmd/ajmd029.png b/src/res/emoji/ajmd/ajmd029.png new file mode 100755 index 0000000..8ee9ede Binary files /dev/null and b/src/res/emoji/ajmd/ajmd029.png differ diff --git a/src/res/emoji/ajmd/ajmd030.png b/src/res/emoji/ajmd/ajmd030.png new file mode 100755 index 0000000..b5168a6 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd030.png differ diff --git a/src/res/emoji/ajmd/ajmd031.png b/src/res/emoji/ajmd/ajmd031.png new file mode 100755 index 0000000..ded7282 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd031.png differ diff --git a/src/res/emoji/ajmd/ajmd032.png b/src/res/emoji/ajmd/ajmd032.png new file mode 100755 index 0000000..dfa211c Binary files /dev/null and b/src/res/emoji/ajmd/ajmd032.png differ diff --git a/src/res/emoji/ajmd/ajmd033.png b/src/res/emoji/ajmd/ajmd033.png new file mode 100755 index 0000000..852eacf Binary files /dev/null and b/src/res/emoji/ajmd/ajmd033.png differ diff --git a/src/res/emoji/ajmd/ajmd034.png b/src/res/emoji/ajmd/ajmd034.png new file mode 100755 index 0000000..ced48ef Binary files /dev/null and b/src/res/emoji/ajmd/ajmd034.png differ diff --git a/src/res/emoji/ajmd/ajmd035.png b/src/res/emoji/ajmd/ajmd035.png new file mode 100755 index 0000000..5a69bbd Binary files /dev/null and b/src/res/emoji/ajmd/ajmd035.png differ diff --git a/src/res/emoji/ajmd/ajmd036.png b/src/res/emoji/ajmd/ajmd036.png new file mode 100755 index 0000000..e06806b Binary files /dev/null and b/src/res/emoji/ajmd/ajmd036.png differ diff --git a/src/res/emoji/ajmd/ajmd037.png b/src/res/emoji/ajmd/ajmd037.png new file mode 100755 index 0000000..2269035 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd037.png differ diff --git a/src/res/emoji/ajmd/ajmd038.png b/src/res/emoji/ajmd/ajmd038.png new file mode 100755 index 0000000..416de3a Binary files /dev/null and b/src/res/emoji/ajmd/ajmd038.png differ diff --git a/src/res/emoji/ajmd/ajmd039.png b/src/res/emoji/ajmd/ajmd039.png new file mode 100755 index 0000000..c8f76b6 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd039.png differ diff --git a/src/res/emoji/ajmd/ajmd040.png b/src/res/emoji/ajmd/ajmd040.png new file mode 100755 index 0000000..445ee9b Binary files /dev/null and b/src/res/emoji/ajmd/ajmd040.png differ diff --git a/src/res/emoji/ajmd/ajmd041.png b/src/res/emoji/ajmd/ajmd041.png new file mode 100755 index 0000000..439fa48 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd041.png differ diff --git a/src/res/emoji/ajmd/ajmd042.png b/src/res/emoji/ajmd/ajmd042.png new file mode 100755 index 0000000..c9f9346 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd042.png differ diff --git a/src/res/emoji/ajmd/ajmd043.png b/src/res/emoji/ajmd/ajmd043.png new file mode 100755 index 0000000..5597422 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd043.png differ diff --git a/src/res/emoji/ajmd/ajmd044.png b/src/res/emoji/ajmd/ajmd044.png new file mode 100755 index 0000000..0675af5 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd044.png differ diff --git a/src/res/emoji/ajmd/ajmd045.png b/src/res/emoji/ajmd/ajmd045.png new file mode 100755 index 0000000..83f3047 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd045.png differ diff --git a/src/res/emoji/ajmd/ajmd046.png b/src/res/emoji/ajmd/ajmd046.png new file mode 100755 index 0000000..06bb11d Binary files /dev/null and b/src/res/emoji/ajmd/ajmd046.png differ diff --git a/src/res/emoji/ajmd/ajmd047.png b/src/res/emoji/ajmd/ajmd047.png new file mode 100755 index 0000000..2535a20 Binary files /dev/null and b/src/res/emoji/ajmd/ajmd047.png differ diff --git a/src/res/emoji/ajmd/ajmd048.png b/src/res/emoji/ajmd/ajmd048.png new file mode 100755 index 0000000..7521b3a Binary files /dev/null and b/src/res/emoji/ajmd/ajmd048.png differ diff --git a/src/res/emoji/emoji/emoji_00.png b/src/res/emoji/emoji/emoji_00.png new file mode 100755 index 0000000..ef0519f Binary files /dev/null and b/src/res/emoji/emoji/emoji_00.png differ diff --git a/src/res/emoji/emoji/emoji_01.png b/src/res/emoji/emoji/emoji_01.png new file mode 100755 index 0000000..943bb72 Binary files /dev/null and b/src/res/emoji/emoji/emoji_01.png differ diff --git a/src/res/emoji/emoji/emoji_02.png b/src/res/emoji/emoji/emoji_02.png new file mode 100755 index 0000000..02d4e0c Binary files /dev/null and b/src/res/emoji/emoji/emoji_02.png differ diff --git a/src/res/emoji/emoji/emoji_03.png b/src/res/emoji/emoji/emoji_03.png new file mode 100755 index 0000000..4e402a5 Binary files /dev/null and b/src/res/emoji/emoji/emoji_03.png differ diff --git a/src/res/emoji/emoji/emoji_04.png b/src/res/emoji/emoji/emoji_04.png new file mode 100755 index 0000000..4ea7159 Binary files /dev/null and b/src/res/emoji/emoji/emoji_04.png differ diff --git a/src/res/emoji/emoji/emoji_05.png b/src/res/emoji/emoji/emoji_05.png new file mode 100755 index 0000000..5d6d495 Binary files /dev/null and b/src/res/emoji/emoji/emoji_05.png differ diff --git a/src/res/emoji/emoji/emoji_06.png b/src/res/emoji/emoji/emoji_06.png new file mode 100755 index 0000000..c069956 Binary files /dev/null and b/src/res/emoji/emoji/emoji_06.png differ diff --git a/src/res/emoji/emoji/emoji_07.png b/src/res/emoji/emoji/emoji_07.png new file mode 100755 index 0000000..6d3e701 Binary files /dev/null and b/src/res/emoji/emoji/emoji_07.png differ diff --git a/src/res/emoji/emoji/emoji_08.png b/src/res/emoji/emoji/emoji_08.png new file mode 100755 index 0000000..f0063f9 Binary files /dev/null and b/src/res/emoji/emoji/emoji_08.png differ diff --git a/src/res/emoji/emoji/emoji_09.png b/src/res/emoji/emoji/emoji_09.png new file mode 100755 index 0000000..140efe7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_09.png differ diff --git a/src/res/emoji/emoji/emoji_10.png b/src/res/emoji/emoji/emoji_10.png new file mode 100755 index 0000000..a30cb66 Binary files /dev/null and b/src/res/emoji/emoji/emoji_10.png differ diff --git a/src/res/emoji/emoji/emoji_100.png b/src/res/emoji/emoji/emoji_100.png new file mode 100755 index 0000000..b863b56 Binary files /dev/null and b/src/res/emoji/emoji/emoji_100.png differ diff --git a/src/res/emoji/emoji/emoji_101.png b/src/res/emoji/emoji/emoji_101.png new file mode 100755 index 0000000..792f60c Binary files /dev/null and b/src/res/emoji/emoji/emoji_101.png differ diff --git a/src/res/emoji/emoji/emoji_102.png b/src/res/emoji/emoji/emoji_102.png new file mode 100755 index 0000000..cbdfea6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_102.png differ diff --git a/src/res/emoji/emoji/emoji_103.png b/src/res/emoji/emoji/emoji_103.png new file mode 100755 index 0000000..f7aa163 Binary files /dev/null and b/src/res/emoji/emoji/emoji_103.png differ diff --git a/src/res/emoji/emoji/emoji_104.png b/src/res/emoji/emoji/emoji_104.png new file mode 100755 index 0000000..75934c4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_104.png differ diff --git a/src/res/emoji/emoji/emoji_105.png b/src/res/emoji/emoji/emoji_105.png new file mode 100755 index 0000000..f1ea9c5 Binary files /dev/null and b/src/res/emoji/emoji/emoji_105.png differ diff --git a/src/res/emoji/emoji/emoji_106.png b/src/res/emoji/emoji/emoji_106.png new file mode 100755 index 0000000..ed896e3 Binary files /dev/null and b/src/res/emoji/emoji/emoji_106.png differ diff --git a/src/res/emoji/emoji/emoji_107.png b/src/res/emoji/emoji/emoji_107.png new file mode 100755 index 0000000..a7bc695 Binary files /dev/null and b/src/res/emoji/emoji/emoji_107.png differ diff --git a/src/res/emoji/emoji/emoji_108.png b/src/res/emoji/emoji/emoji_108.png new file mode 100755 index 0000000..d9441c0 Binary files /dev/null and b/src/res/emoji/emoji/emoji_108.png differ diff --git a/src/res/emoji/emoji/emoji_109.png b/src/res/emoji/emoji/emoji_109.png new file mode 100755 index 0000000..456ba0a Binary files /dev/null and b/src/res/emoji/emoji/emoji_109.png differ diff --git a/src/res/emoji/emoji/emoji_11.png b/src/res/emoji/emoji/emoji_11.png new file mode 100755 index 0000000..08f63c6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_11.png differ diff --git a/src/res/emoji/emoji/emoji_110.png b/src/res/emoji/emoji/emoji_110.png new file mode 100755 index 0000000..90566b6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_110.png differ diff --git a/src/res/emoji/emoji/emoji_111.png b/src/res/emoji/emoji/emoji_111.png new file mode 100755 index 0000000..3cfc87d Binary files /dev/null and b/src/res/emoji/emoji/emoji_111.png differ diff --git a/src/res/emoji/emoji/emoji_112.png b/src/res/emoji/emoji/emoji_112.png new file mode 100755 index 0000000..4a397d5 Binary files /dev/null and b/src/res/emoji/emoji/emoji_112.png differ diff --git a/src/res/emoji/emoji/emoji_113.png b/src/res/emoji/emoji/emoji_113.png new file mode 100755 index 0000000..df8a9b1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_113.png differ diff --git a/src/res/emoji/emoji/emoji_114.png b/src/res/emoji/emoji/emoji_114.png new file mode 100755 index 0000000..0100374 Binary files /dev/null and b/src/res/emoji/emoji/emoji_114.png differ diff --git a/src/res/emoji/emoji/emoji_115.png b/src/res/emoji/emoji/emoji_115.png new file mode 100755 index 0000000..dbc7b71 Binary files /dev/null and b/src/res/emoji/emoji/emoji_115.png differ diff --git a/src/res/emoji/emoji/emoji_116.png b/src/res/emoji/emoji/emoji_116.png new file mode 100755 index 0000000..943bb72 Binary files /dev/null and b/src/res/emoji/emoji/emoji_116.png differ diff --git a/src/res/emoji/emoji/emoji_117.png b/src/res/emoji/emoji/emoji_117.png new file mode 100755 index 0000000..801d8af Binary files /dev/null and b/src/res/emoji/emoji/emoji_117.png differ diff --git a/src/res/emoji/emoji/emoji_118.png b/src/res/emoji/emoji/emoji_118.png new file mode 100755 index 0000000..7edd5c4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_118.png differ diff --git a/src/res/emoji/emoji/emoji_119.png b/src/res/emoji/emoji/emoji_119.png new file mode 100755 index 0000000..0473596 Binary files /dev/null and b/src/res/emoji/emoji/emoji_119.png differ diff --git a/src/res/emoji/emoji/emoji_12.png b/src/res/emoji/emoji/emoji_12.png new file mode 100755 index 0000000..22530aa Binary files /dev/null and b/src/res/emoji/emoji/emoji_12.png differ diff --git a/src/res/emoji/emoji/emoji_120.png b/src/res/emoji/emoji/emoji_120.png new file mode 100755 index 0000000..e1e6237 Binary files /dev/null and b/src/res/emoji/emoji/emoji_120.png differ diff --git a/src/res/emoji/emoji/emoji_121.png b/src/res/emoji/emoji/emoji_121.png new file mode 100755 index 0000000..828c7c6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_121.png differ diff --git a/src/res/emoji/emoji/emoji_122.png b/src/res/emoji/emoji/emoji_122.png new file mode 100755 index 0000000..1abfccb Binary files /dev/null and b/src/res/emoji/emoji/emoji_122.png differ diff --git a/src/res/emoji/emoji/emoji_123.png b/src/res/emoji/emoji/emoji_123.png new file mode 100755 index 0000000..6ab4ea7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_123.png differ diff --git a/src/res/emoji/emoji/emoji_124.png b/src/res/emoji/emoji/emoji_124.png new file mode 100755 index 0000000..6bb8464 Binary files /dev/null and b/src/res/emoji/emoji/emoji_124.png differ diff --git a/src/res/emoji/emoji/emoji_125.png b/src/res/emoji/emoji/emoji_125.png new file mode 100755 index 0000000..ecf04f4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_125.png differ diff --git a/src/res/emoji/emoji/emoji_126.png b/src/res/emoji/emoji/emoji_126.png new file mode 100755 index 0000000..d1d94c2 Binary files /dev/null and b/src/res/emoji/emoji/emoji_126.png differ diff --git a/src/res/emoji/emoji/emoji_127.png b/src/res/emoji/emoji/emoji_127.png new file mode 100755 index 0000000..2b2d70a Binary files /dev/null and b/src/res/emoji/emoji/emoji_127.png differ diff --git a/src/res/emoji/emoji/emoji_128.png b/src/res/emoji/emoji/emoji_128.png new file mode 100755 index 0000000..a2478ea Binary files /dev/null and b/src/res/emoji/emoji/emoji_128.png differ diff --git a/src/res/emoji/emoji/emoji_129.png b/src/res/emoji/emoji/emoji_129.png new file mode 100755 index 0000000..dab007b Binary files /dev/null and b/src/res/emoji/emoji/emoji_129.png differ diff --git a/src/res/emoji/emoji/emoji_13.png b/src/res/emoji/emoji/emoji_13.png new file mode 100755 index 0000000..b9b5294 Binary files /dev/null and b/src/res/emoji/emoji/emoji_13.png differ diff --git a/src/res/emoji/emoji/emoji_130.png b/src/res/emoji/emoji/emoji_130.png new file mode 100755 index 0000000..610e5d7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_130.png differ diff --git a/src/res/emoji/emoji/emoji_131.png b/src/res/emoji/emoji/emoji_131.png new file mode 100755 index 0000000..28c0f95 Binary files /dev/null and b/src/res/emoji/emoji/emoji_131.png differ diff --git a/src/res/emoji/emoji/emoji_132.png b/src/res/emoji/emoji/emoji_132.png new file mode 100755 index 0000000..5353157 Binary files /dev/null and b/src/res/emoji/emoji/emoji_132.png differ diff --git a/src/res/emoji/emoji/emoji_133.png b/src/res/emoji/emoji/emoji_133.png new file mode 100755 index 0000000..719282b Binary files /dev/null and b/src/res/emoji/emoji/emoji_133.png differ diff --git a/src/res/emoji/emoji/emoji_134.png b/src/res/emoji/emoji/emoji_134.png new file mode 100755 index 0000000..e2f0132 Binary files /dev/null and b/src/res/emoji/emoji/emoji_134.png differ diff --git a/src/res/emoji/emoji/emoji_135.png b/src/res/emoji/emoji/emoji_135.png new file mode 100755 index 0000000..1690732 Binary files /dev/null and b/src/res/emoji/emoji/emoji_135.png differ diff --git a/src/res/emoji/emoji/emoji_136.png b/src/res/emoji/emoji/emoji_136.png new file mode 100755 index 0000000..bda9713 Binary files /dev/null and b/src/res/emoji/emoji/emoji_136.png differ diff --git a/src/res/emoji/emoji/emoji_137.png b/src/res/emoji/emoji/emoji_137.png new file mode 100755 index 0000000..271377e Binary files /dev/null and b/src/res/emoji/emoji/emoji_137.png differ diff --git a/src/res/emoji/emoji/emoji_138.png b/src/res/emoji/emoji/emoji_138.png new file mode 100755 index 0000000..00ae7f1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_138.png differ diff --git a/src/res/emoji/emoji/emoji_139.png b/src/res/emoji/emoji/emoji_139.png new file mode 100755 index 0000000..2750b8b Binary files /dev/null and b/src/res/emoji/emoji/emoji_139.png differ diff --git a/src/res/emoji/emoji/emoji_14.png b/src/res/emoji/emoji/emoji_14.png new file mode 100755 index 0000000..c10ed15 Binary files /dev/null and b/src/res/emoji/emoji/emoji_14.png differ diff --git a/src/res/emoji/emoji/emoji_140.png b/src/res/emoji/emoji/emoji_140.png new file mode 100755 index 0000000..fefdb6f Binary files /dev/null and b/src/res/emoji/emoji/emoji_140.png differ diff --git a/src/res/emoji/emoji/emoji_141.png b/src/res/emoji/emoji/emoji_141.png new file mode 100755 index 0000000..f2db2c9 Binary files /dev/null and b/src/res/emoji/emoji/emoji_141.png differ diff --git a/src/res/emoji/emoji/emoji_142.png b/src/res/emoji/emoji/emoji_142.png new file mode 100755 index 0000000..6c12055 Binary files /dev/null and b/src/res/emoji/emoji/emoji_142.png differ diff --git a/src/res/emoji/emoji/emoji_143.png b/src/res/emoji/emoji/emoji_143.png new file mode 100755 index 0000000..e6696aa Binary files /dev/null and b/src/res/emoji/emoji/emoji_143.png differ diff --git a/src/res/emoji/emoji/emoji_144.png b/src/res/emoji/emoji/emoji_144.png new file mode 100755 index 0000000..daecb6f Binary files /dev/null and b/src/res/emoji/emoji/emoji_144.png differ diff --git a/src/res/emoji/emoji/emoji_145.png b/src/res/emoji/emoji/emoji_145.png new file mode 100755 index 0000000..596dc9d Binary files /dev/null and b/src/res/emoji/emoji/emoji_145.png differ diff --git a/src/res/emoji/emoji/emoji_146.png b/src/res/emoji/emoji/emoji_146.png new file mode 100755 index 0000000..701bf5f Binary files /dev/null and b/src/res/emoji/emoji/emoji_146.png differ diff --git a/src/res/emoji/emoji/emoji_147.png b/src/res/emoji/emoji/emoji_147.png new file mode 100755 index 0000000..7c4b435 Binary files /dev/null and b/src/res/emoji/emoji/emoji_147.png differ diff --git a/src/res/emoji/emoji/emoji_148.png b/src/res/emoji/emoji/emoji_148.png new file mode 100755 index 0000000..ed2edb2 Binary files /dev/null and b/src/res/emoji/emoji/emoji_148.png differ diff --git a/src/res/emoji/emoji/emoji_149.png b/src/res/emoji/emoji/emoji_149.png new file mode 100755 index 0000000..8b9a67c Binary files /dev/null and b/src/res/emoji/emoji/emoji_149.png differ diff --git a/src/res/emoji/emoji/emoji_15.png b/src/res/emoji/emoji/emoji_15.png new file mode 100755 index 0000000..712e4d4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_15.png differ diff --git a/src/res/emoji/emoji/emoji_150.png b/src/res/emoji/emoji/emoji_150.png new file mode 100755 index 0000000..81ac9a8 Binary files /dev/null and b/src/res/emoji/emoji/emoji_150.png differ diff --git a/src/res/emoji/emoji/emoji_151.png b/src/res/emoji/emoji/emoji_151.png new file mode 100755 index 0000000..30c3a84 Binary files /dev/null and b/src/res/emoji/emoji/emoji_151.png differ diff --git a/src/res/emoji/emoji/emoji_152.png b/src/res/emoji/emoji/emoji_152.png new file mode 100755 index 0000000..65193c4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_152.png differ diff --git a/src/res/emoji/emoji/emoji_16.png b/src/res/emoji/emoji/emoji_16.png new file mode 100755 index 0000000..f8a2b44 Binary files /dev/null and b/src/res/emoji/emoji/emoji_16.png differ diff --git a/src/res/emoji/emoji/emoji_160.png b/src/res/emoji/emoji/emoji_160.png new file mode 100755 index 0000000..d55ecdb Binary files /dev/null and b/src/res/emoji/emoji/emoji_160.png differ diff --git a/src/res/emoji/emoji/emoji_161.png b/src/res/emoji/emoji/emoji_161.png new file mode 100755 index 0000000..c904210 Binary files /dev/null and b/src/res/emoji/emoji/emoji_161.png differ diff --git a/src/res/emoji/emoji/emoji_162.png b/src/res/emoji/emoji/emoji_162.png new file mode 100755 index 0000000..343eb3e Binary files /dev/null and b/src/res/emoji/emoji/emoji_162.png differ diff --git a/src/res/emoji/emoji/emoji_163.png b/src/res/emoji/emoji/emoji_163.png new file mode 100755 index 0000000..361ac27 Binary files /dev/null and b/src/res/emoji/emoji/emoji_163.png differ diff --git a/src/res/emoji/emoji/emoji_164.png b/src/res/emoji/emoji/emoji_164.png new file mode 100755 index 0000000..6e0b4c6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_164.png differ diff --git a/src/res/emoji/emoji/emoji_165.png b/src/res/emoji/emoji/emoji_165.png new file mode 100755 index 0000000..1c795c1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_165.png differ diff --git a/src/res/emoji/emoji/emoji_166.png b/src/res/emoji/emoji/emoji_166.png new file mode 100755 index 0000000..bccfcfd Binary files /dev/null and b/src/res/emoji/emoji/emoji_166.png differ diff --git a/src/res/emoji/emoji/emoji_17.png b/src/res/emoji/emoji/emoji_17.png new file mode 100755 index 0000000..fcb2361 Binary files /dev/null and b/src/res/emoji/emoji/emoji_17.png differ diff --git a/src/res/emoji/emoji/emoji_18.png b/src/res/emoji/emoji/emoji_18.png new file mode 100755 index 0000000..e793504 Binary files /dev/null and b/src/res/emoji/emoji/emoji_18.png differ diff --git a/src/res/emoji/emoji/emoji_19.png b/src/res/emoji/emoji/emoji_19.png new file mode 100755 index 0000000..addb5b6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_19.png differ diff --git a/src/res/emoji/emoji/emoji_20.png b/src/res/emoji/emoji/emoji_20.png new file mode 100755 index 0000000..cc72016 Binary files /dev/null and b/src/res/emoji/emoji/emoji_20.png differ diff --git a/src/res/emoji/emoji/emoji_200.png b/src/res/emoji/emoji/emoji_200.png new file mode 100755 index 0000000..7cbe04c Binary files /dev/null and b/src/res/emoji/emoji/emoji_200.png differ diff --git a/src/res/emoji/emoji/emoji_21.png b/src/res/emoji/emoji/emoji_21.png new file mode 100755 index 0000000..da18ccf Binary files /dev/null and b/src/res/emoji/emoji/emoji_21.png differ diff --git a/src/res/emoji/emoji/emoji_22.png b/src/res/emoji/emoji/emoji_22.png new file mode 100755 index 0000000..5b00701 Binary files /dev/null and b/src/res/emoji/emoji/emoji_22.png differ diff --git a/src/res/emoji/emoji/emoji_23.png b/src/res/emoji/emoji/emoji_23.png new file mode 100755 index 0000000..63e2045 Binary files /dev/null and b/src/res/emoji/emoji/emoji_23.png differ diff --git a/src/res/emoji/emoji/emoji_24.png b/src/res/emoji/emoji/emoji_24.png new file mode 100755 index 0000000..ad27c63 Binary files /dev/null and b/src/res/emoji/emoji/emoji_24.png differ diff --git a/src/res/emoji/emoji/emoji_25.png b/src/res/emoji/emoji/emoji_25.png new file mode 100755 index 0000000..9122b4a Binary files /dev/null and b/src/res/emoji/emoji/emoji_25.png differ diff --git a/src/res/emoji/emoji/emoji_26.png b/src/res/emoji/emoji/emoji_26.png new file mode 100755 index 0000000..2698d2c Binary files /dev/null and b/src/res/emoji/emoji/emoji_26.png differ diff --git a/src/res/emoji/emoji/emoji_27.png b/src/res/emoji/emoji/emoji_27.png new file mode 100755 index 0000000..f4a20d6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_27.png differ diff --git a/src/res/emoji/emoji/emoji_28.png b/src/res/emoji/emoji/emoji_28.png new file mode 100755 index 0000000..b5b79d1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_28.png differ diff --git a/src/res/emoji/emoji/emoji_29.png b/src/res/emoji/emoji/emoji_29.png new file mode 100755 index 0000000..07c2ba9 Binary files /dev/null and b/src/res/emoji/emoji/emoji_29.png differ diff --git a/src/res/emoji/emoji/emoji_30.png b/src/res/emoji/emoji/emoji_30.png new file mode 100755 index 0000000..90da059 Binary files /dev/null and b/src/res/emoji/emoji/emoji_30.png differ diff --git a/src/res/emoji/emoji/emoji_31.png b/src/res/emoji/emoji/emoji_31.png new file mode 100755 index 0000000..129fc80 Binary files /dev/null and b/src/res/emoji/emoji/emoji_31.png differ diff --git a/src/res/emoji/emoji/emoji_32.png b/src/res/emoji/emoji/emoji_32.png new file mode 100755 index 0000000..33eb6ec Binary files /dev/null and b/src/res/emoji/emoji/emoji_32.png differ diff --git a/src/res/emoji/emoji/emoji_33.png b/src/res/emoji/emoji/emoji_33.png new file mode 100755 index 0000000..69525a8 Binary files /dev/null and b/src/res/emoji/emoji/emoji_33.png differ diff --git a/src/res/emoji/emoji/emoji_34.png b/src/res/emoji/emoji/emoji_34.png new file mode 100755 index 0000000..6774a71 Binary files /dev/null and b/src/res/emoji/emoji/emoji_34.png differ diff --git a/src/res/emoji/emoji/emoji_35.png b/src/res/emoji/emoji/emoji_35.png new file mode 100755 index 0000000..fe77554 Binary files /dev/null and b/src/res/emoji/emoji/emoji_35.png differ diff --git a/src/res/emoji/emoji/emoji_36.png b/src/res/emoji/emoji/emoji_36.png new file mode 100755 index 0000000..f008a6f Binary files /dev/null and b/src/res/emoji/emoji/emoji_36.png differ diff --git a/src/res/emoji/emoji/emoji_37.png b/src/res/emoji/emoji/emoji_37.png new file mode 100755 index 0000000..d234d57 Binary files /dev/null and b/src/res/emoji/emoji/emoji_37.png differ diff --git a/src/res/emoji/emoji/emoji_38.png b/src/res/emoji/emoji/emoji_38.png new file mode 100755 index 0000000..2750c11 Binary files /dev/null and b/src/res/emoji/emoji/emoji_38.png differ diff --git a/src/res/emoji/emoji/emoji_39.png b/src/res/emoji/emoji/emoji_39.png new file mode 100755 index 0000000..5953630 Binary files /dev/null and b/src/res/emoji/emoji/emoji_39.png differ diff --git a/src/res/emoji/emoji/emoji_40.png b/src/res/emoji/emoji/emoji_40.png new file mode 100755 index 0000000..b51f314 Binary files /dev/null and b/src/res/emoji/emoji/emoji_40.png differ diff --git a/src/res/emoji/emoji/emoji_41.png b/src/res/emoji/emoji/emoji_41.png new file mode 100755 index 0000000..d226a5e Binary files /dev/null and b/src/res/emoji/emoji/emoji_41.png differ diff --git a/src/res/emoji/emoji/emoji_42.png b/src/res/emoji/emoji/emoji_42.png new file mode 100755 index 0000000..dbbac52 Binary files /dev/null and b/src/res/emoji/emoji/emoji_42.png differ diff --git a/src/res/emoji/emoji/emoji_43.png b/src/res/emoji/emoji/emoji_43.png new file mode 100755 index 0000000..f7aa9f3 Binary files /dev/null and b/src/res/emoji/emoji/emoji_43.png differ diff --git a/src/res/emoji/emoji/emoji_44.png b/src/res/emoji/emoji/emoji_44.png new file mode 100755 index 0000000..fd66545 Binary files /dev/null and b/src/res/emoji/emoji/emoji_44.png differ diff --git a/src/res/emoji/emoji/emoji_45.png b/src/res/emoji/emoji/emoji_45.png new file mode 100755 index 0000000..d31fe07 Binary files /dev/null and b/src/res/emoji/emoji/emoji_45.png differ diff --git a/src/res/emoji/emoji/emoji_46.png b/src/res/emoji/emoji/emoji_46.png new file mode 100755 index 0000000..e1764bd Binary files /dev/null and b/src/res/emoji/emoji/emoji_46.png differ diff --git a/src/res/emoji/emoji/emoji_47.png b/src/res/emoji/emoji/emoji_47.png new file mode 100755 index 0000000..dd82c42 Binary files /dev/null and b/src/res/emoji/emoji/emoji_47.png differ diff --git a/src/res/emoji/emoji/emoji_48.png b/src/res/emoji/emoji/emoji_48.png new file mode 100755 index 0000000..7e2fde6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_48.png differ diff --git a/src/res/emoji/emoji/emoji_49.png b/src/res/emoji/emoji/emoji_49.png new file mode 100755 index 0000000..aa42a7b Binary files /dev/null and b/src/res/emoji/emoji/emoji_49.png differ diff --git a/src/res/emoji/emoji/emoji_50.png b/src/res/emoji/emoji/emoji_50.png new file mode 100755 index 0000000..56c11e9 Binary files /dev/null and b/src/res/emoji/emoji/emoji_50.png differ diff --git a/src/res/emoji/emoji/emoji_51.png b/src/res/emoji/emoji/emoji_51.png new file mode 100755 index 0000000..f079b7a Binary files /dev/null and b/src/res/emoji/emoji/emoji_51.png differ diff --git a/src/res/emoji/emoji/emoji_52.png b/src/res/emoji/emoji/emoji_52.png new file mode 100755 index 0000000..c305862 Binary files /dev/null and b/src/res/emoji/emoji/emoji_52.png differ diff --git a/src/res/emoji/emoji/emoji_53.png b/src/res/emoji/emoji/emoji_53.png new file mode 100755 index 0000000..f362efe Binary files /dev/null and b/src/res/emoji/emoji/emoji_53.png differ diff --git a/src/res/emoji/emoji/emoji_54.png b/src/res/emoji/emoji/emoji_54.png new file mode 100755 index 0000000..1bb98ba Binary files /dev/null and b/src/res/emoji/emoji/emoji_54.png differ diff --git a/src/res/emoji/emoji/emoji_55.png b/src/res/emoji/emoji/emoji_55.png new file mode 100755 index 0000000..080a692 Binary files /dev/null and b/src/res/emoji/emoji/emoji_55.png differ diff --git a/src/res/emoji/emoji/emoji_56.png b/src/res/emoji/emoji/emoji_56.png new file mode 100755 index 0000000..5ba0e38 Binary files /dev/null and b/src/res/emoji/emoji/emoji_56.png differ diff --git a/src/res/emoji/emoji/emoji_57.png b/src/res/emoji/emoji/emoji_57.png new file mode 100755 index 0000000..5353157 Binary files /dev/null and b/src/res/emoji/emoji/emoji_57.png differ diff --git a/src/res/emoji/emoji/emoji_58.png b/src/res/emoji/emoji/emoji_58.png new file mode 100755 index 0000000..4434409 Binary files /dev/null and b/src/res/emoji/emoji/emoji_58.png differ diff --git a/src/res/emoji/emoji/emoji_59.png b/src/res/emoji/emoji/emoji_59.png new file mode 100755 index 0000000..b588421 Binary files /dev/null and b/src/res/emoji/emoji/emoji_59.png differ diff --git a/src/res/emoji/emoji/emoji_60.png b/src/res/emoji/emoji/emoji_60.png new file mode 100755 index 0000000..ea85c75 Binary files /dev/null and b/src/res/emoji/emoji/emoji_60.png differ diff --git a/src/res/emoji/emoji/emoji_61.png b/src/res/emoji/emoji/emoji_61.png new file mode 100755 index 0000000..0c02a69 Binary files /dev/null and b/src/res/emoji/emoji/emoji_61.png differ diff --git a/src/res/emoji/emoji/emoji_62.png b/src/res/emoji/emoji/emoji_62.png new file mode 100755 index 0000000..e0a01b7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_62.png differ diff --git a/src/res/emoji/emoji/emoji_63.png b/src/res/emoji/emoji/emoji_63.png new file mode 100755 index 0000000..4485d42 Binary files /dev/null and b/src/res/emoji/emoji/emoji_63.png differ diff --git a/src/res/emoji/emoji/emoji_64.png b/src/res/emoji/emoji/emoji_64.png new file mode 100755 index 0000000..8331b85 Binary files /dev/null and b/src/res/emoji/emoji/emoji_64.png differ diff --git a/src/res/emoji/emoji/emoji_65.png b/src/res/emoji/emoji/emoji_65.png new file mode 100755 index 0000000..c8dd5d7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_65.png differ diff --git a/src/res/emoji/emoji/emoji_66.png b/src/res/emoji/emoji/emoji_66.png new file mode 100755 index 0000000..dff9c63 Binary files /dev/null and b/src/res/emoji/emoji/emoji_66.png differ diff --git a/src/res/emoji/emoji/emoji_67.png b/src/res/emoji/emoji/emoji_67.png new file mode 100755 index 0000000..6f68de6 Binary files /dev/null and b/src/res/emoji/emoji/emoji_67.png differ diff --git a/src/res/emoji/emoji/emoji_68.png b/src/res/emoji/emoji/emoji_68.png new file mode 100755 index 0000000..acaad70 Binary files /dev/null and b/src/res/emoji/emoji/emoji_68.png differ diff --git a/src/res/emoji/emoji/emoji_69.png b/src/res/emoji/emoji/emoji_69.png new file mode 100755 index 0000000..8aa5b96 Binary files /dev/null and b/src/res/emoji/emoji/emoji_69.png differ diff --git a/src/res/emoji/emoji/emoji_70.png b/src/res/emoji/emoji/emoji_70.png new file mode 100755 index 0000000..1108696 Binary files /dev/null and b/src/res/emoji/emoji/emoji_70.png differ diff --git a/src/res/emoji/emoji/emoji_71.png b/src/res/emoji/emoji/emoji_71.png new file mode 100755 index 0000000..059897f Binary files /dev/null and b/src/res/emoji/emoji/emoji_71.png differ diff --git a/src/res/emoji/emoji/emoji_72.png b/src/res/emoji/emoji/emoji_72.png new file mode 100755 index 0000000..628b4d1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_72.png differ diff --git a/src/res/emoji/emoji/emoji_73.png b/src/res/emoji/emoji/emoji_73.png new file mode 100755 index 0000000..63a3b88 Binary files /dev/null and b/src/res/emoji/emoji/emoji_73.png differ diff --git a/src/res/emoji/emoji/emoji_74.png b/src/res/emoji/emoji/emoji_74.png new file mode 100755 index 0000000..6fb7e07 Binary files /dev/null and b/src/res/emoji/emoji/emoji_74.png differ diff --git a/src/res/emoji/emoji/emoji_75.png b/src/res/emoji/emoji/emoji_75.png new file mode 100755 index 0000000..efd4a6b Binary files /dev/null and b/src/res/emoji/emoji/emoji_75.png differ diff --git a/src/res/emoji/emoji/emoji_76.png b/src/res/emoji/emoji/emoji_76.png new file mode 100755 index 0000000..abbeef7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_76.png differ diff --git a/src/res/emoji/emoji/emoji_77.png b/src/res/emoji/emoji/emoji_77.png new file mode 100755 index 0000000..3207aa2 Binary files /dev/null and b/src/res/emoji/emoji/emoji_77.png differ diff --git a/src/res/emoji/emoji/emoji_78.png b/src/res/emoji/emoji/emoji_78.png new file mode 100755 index 0000000..5100b4c Binary files /dev/null and b/src/res/emoji/emoji/emoji_78.png differ diff --git a/src/res/emoji/emoji/emoji_79.png b/src/res/emoji/emoji/emoji_79.png new file mode 100755 index 0000000..dacdc35 Binary files /dev/null and b/src/res/emoji/emoji/emoji_79.png differ diff --git a/src/res/emoji/emoji/emoji_80.png b/src/res/emoji/emoji/emoji_80.png new file mode 100755 index 0000000..b670b21 Binary files /dev/null and b/src/res/emoji/emoji/emoji_80.png differ diff --git a/src/res/emoji/emoji/emoji_81.png b/src/res/emoji/emoji/emoji_81.png new file mode 100755 index 0000000..7935c4c Binary files /dev/null and b/src/res/emoji/emoji/emoji_81.png differ diff --git a/src/res/emoji/emoji/emoji_82.png b/src/res/emoji/emoji/emoji_82.png new file mode 100755 index 0000000..a5b5b32 Binary files /dev/null and b/src/res/emoji/emoji/emoji_82.png differ diff --git a/src/res/emoji/emoji/emoji_83.png b/src/res/emoji/emoji/emoji_83.png new file mode 100755 index 0000000..af47dad Binary files /dev/null and b/src/res/emoji/emoji/emoji_83.png differ diff --git a/src/res/emoji/emoji/emoji_84.png b/src/res/emoji/emoji/emoji_84.png new file mode 100755 index 0000000..d22ac18 Binary files /dev/null and b/src/res/emoji/emoji/emoji_84.png differ diff --git a/src/res/emoji/emoji/emoji_85.png b/src/res/emoji/emoji/emoji_85.png new file mode 100755 index 0000000..9c6400e Binary files /dev/null and b/src/res/emoji/emoji/emoji_85.png differ diff --git a/src/res/emoji/emoji/emoji_86.png b/src/res/emoji/emoji/emoji_86.png new file mode 100755 index 0000000..af669e7 Binary files /dev/null and b/src/res/emoji/emoji/emoji_86.png differ diff --git a/src/res/emoji/emoji/emoji_87.png b/src/res/emoji/emoji/emoji_87.png new file mode 100755 index 0000000..0f00c2d Binary files /dev/null and b/src/res/emoji/emoji/emoji_87.png differ diff --git a/src/res/emoji/emoji/emoji_88.png b/src/res/emoji/emoji/emoji_88.png new file mode 100755 index 0000000..d386795 Binary files /dev/null and b/src/res/emoji/emoji/emoji_88.png differ diff --git a/src/res/emoji/emoji/emoji_89.png b/src/res/emoji/emoji/emoji_89.png new file mode 100755 index 0000000..262f85f Binary files /dev/null and b/src/res/emoji/emoji/emoji_89.png differ diff --git a/src/res/emoji/emoji/emoji_90.png b/src/res/emoji/emoji/emoji_90.png new file mode 100755 index 0000000..546d2dd Binary files /dev/null and b/src/res/emoji/emoji/emoji_90.png differ diff --git a/src/res/emoji/emoji/emoji_91.png b/src/res/emoji/emoji/emoji_91.png new file mode 100755 index 0000000..1a3f704 Binary files /dev/null and b/src/res/emoji/emoji/emoji_91.png differ diff --git a/src/res/emoji/emoji/emoji_92.png b/src/res/emoji/emoji/emoji_92.png new file mode 100755 index 0000000..18de730 Binary files /dev/null and b/src/res/emoji/emoji/emoji_92.png differ diff --git a/src/res/emoji/emoji/emoji_93.png b/src/res/emoji/emoji/emoji_93.png new file mode 100755 index 0000000..8dc31ba Binary files /dev/null and b/src/res/emoji/emoji/emoji_93.png differ diff --git a/src/res/emoji/emoji/emoji_94.png b/src/res/emoji/emoji/emoji_94.png new file mode 100755 index 0000000..f28f0e1 Binary files /dev/null and b/src/res/emoji/emoji/emoji_94.png differ diff --git a/src/res/emoji/emoji/emoji_95.png b/src/res/emoji/emoji/emoji_95.png new file mode 100755 index 0000000..f3684b4 Binary files /dev/null and b/src/res/emoji/emoji/emoji_95.png differ diff --git a/src/res/emoji/emoji/emoji_96.png b/src/res/emoji/emoji/emoji_96.png new file mode 100755 index 0000000..2f97895 Binary files /dev/null and b/src/res/emoji/emoji/emoji_96.png differ diff --git a/src/res/emoji/emoji/emoji_97.png b/src/res/emoji/emoji/emoji_97.png new file mode 100755 index 0000000..de0e966 Binary files /dev/null and b/src/res/emoji/emoji/emoji_97.png differ diff --git a/src/res/emoji/emoji/emoji_98.png b/src/res/emoji/emoji/emoji_98.png new file mode 100755 index 0000000..278ad45 Binary files /dev/null and b/src/res/emoji/emoji/emoji_98.png differ diff --git a/src/res/emoji/emoji/emoji_99.png b/src/res/emoji/emoji/emoji_99.png new file mode 100755 index 0000000..eb59c7d Binary files /dev/null and b/src/res/emoji/emoji/emoji_99.png differ diff --git a/src/res/emoji/emoji/emoji_del.png b/src/res/emoji/emoji/emoji_del.png new file mode 100755 index 0000000..cc0f604 Binary files /dev/null and b/src/res/emoji/emoji/emoji_del.png differ diff --git a/src/res/emoji/index.js b/src/res/emoji/index.js new file mode 100755 index 0000000..4f54e97 --- /dev/null +++ b/src/res/emoji/index.js @@ -0,0 +1,37 @@ + +const pinupList = { + ajmd: { + ajmd001: { img: require('./ajmd/ajmd001.png') }, ajmd041: { img: require('./ajmd/ajmd041.png') }, ajmd040: { img: require('./ajmd/ajmd040.png') }, ajmd029: { img: require('./ajmd/ajmd029.png') }, ajmd028: { img: require('./ajmd/ajmd028.png') }, ajmd045: { img: require('./ajmd/ajmd045.png') }, ajmd044: { img: require('./ajmd/ajmd044.png') }, ajmd047: { img: require('./ajmd/ajmd047.png') }, ajmd046: { img: require('./ajmd/ajmd046.png') }, ajmd023: { img: require('./ajmd/ajmd023.png') }, ajmd022: { img: require('./ajmd/ajmd022.png') }, ajmd021: { img: require('./ajmd/ajmd021.png') }, ajmd020: { img: require('./ajmd/ajmd020.png') }, ajmd027: { img: require('./ajmd/ajmd027.png') }, ajmd026: { img: require('./ajmd/ajmd026.png') }, ajmd025: { img: require('./ajmd/ajmd025.png') }, ajmd024: { img: require('./ajmd/ajmd024.png') }, ajmd042: { img: require('./ajmd/ajmd042.png') }, ajmd012: { img: require('./ajmd/ajmd012.png') }, ajmd013: { img: require('./ajmd/ajmd013.png') }, ajmd010: { img: require('./ajmd/ajmd010.png') }, ajmd011: { img: require('./ajmd/ajmd011.png') }, ajmd016: { img: require('./ajmd/ajmd016.png') }, ajmd017: { img: require('./ajmd/ajmd017.png') }, ajmd014: { img: require('./ajmd/ajmd014.png') }, ajmd015: { img: require('./ajmd/ajmd015.png') }, ajmd018: { img: require('./ajmd/ajmd018.png') }, ajmd019: { img: require('./ajmd/ajmd019.png') }, ajmd038: { img: require('./ajmd/ajmd038.png') }, ajmd039: { img: require('./ajmd/ajmd039.png') }, ajmd030: { img: require('./ajmd/ajmd030.png') }, ajmd031: { img: require('./ajmd/ajmd031.png') }, ajmd032: { img: require('./ajmd/ajmd032.png') }, ajmd033: { img: require('./ajmd/ajmd033.png') }, ajmd034: { img: require('./ajmd/ajmd034.png') }, ajmd035: { img: require('./ajmd/ajmd035.png') }, ajmd036: { img: require('./ajmd/ajmd036.png') }, ajmd037: { img: require('./ajmd/ajmd037.png') }, ajmd048: { img: require('./ajmd/ajmd048.png') }, ajmd005: { img: require('./ajmd/ajmd005.png') }, ajmd004: { img: require('./ajmd/ajmd004.png') }, ajmd007: { img: require('./ajmd/ajmd007.png') }, ajmd006: { img: require('./ajmd/ajmd006.png') }, ajmd003: { img: require('./ajmd/ajmd003.png') }, ajmd002: { img: require('./ajmd/ajmd002.png') }, ajmd009: { img: require('./ajmd/ajmd009.png') }, ajmd008: { img: require('./ajmd/ajmd008.png') }, ajmd043: { img: require('./ajmd/ajmd043.png') }, + }, + xxy: { + xxy001: { img: require('./xxy/xxy001.png') }, xxy023: { img: require('./xxy/xxy023.png') }, xxy036: { img: require('./xxy/xxy036.png') }, xxy022: { img: require('./xxy/xxy022.png') }, xxy005: { img: require('./xxy/xxy005.png') }, xxy004: { img: require('./xxy/xxy004.png') }, xxy007: { img: require('./xxy/xxy007.png') }, xxy006: { img: require('./xxy/xxy006.png') }, xxy003: { img: require('./xxy/xxy003.png') }, xxy002: { img: require('./xxy/xxy002.png') }, xxy027: { img: require('./xxy/xxy027.png') }, xxy026: { img: require('./xxy/xxy026.png') }, xxy025: { img: require('./xxy/xxy025.png') }, xxy024: { img: require('./xxy/xxy024.png') }, xxy009: { img: require('./xxy/xxy009.png') }, xxy008: { img: require('./xxy/xxy008.png') }, xxy021: { img: require('./xxy/xxy021.png') }, xxy020: { img: require('./xxy/xxy020.png') }, xxy030: { img: require('./xxy/xxy030.png') }, xxy031: { img: require('./xxy/xxy031.png') }, xxy033: { img: require('./xxy/xxy033.png') }, xxy032: { img: require('./xxy/xxy032.png') }, xxy040: { img: require('./xxy/xxy040.png') }, xxy029: { img: require('./xxy/xxy029.png') }, xxy034: { img: require('./xxy/xxy034.png') }, xxy035: { img: require('./xxy/xxy035.png') }, xxy016: { img: require('./xxy/xxy016.png') }, xxy017: { img: require('./xxy/xxy017.png') }, xxy014: { img: require('./xxy/xxy014.png') }, xxy015: { img: require('./xxy/xxy015.png') }, xxy012: { img: require('./xxy/xxy012.png') }, xxy013: { img: require('./xxy/xxy013.png') }, xxy010: { img: require('./xxy/xxy010.png') }, xxy011: { img: require('./xxy/xxy011.png') }, xxy038: { img: require('./xxy/xxy038.png') }, xxy037: { img: require('./xxy/xxy037.png') }, xxy028: { img: require('./xxy/xxy028.png') }, xxy018: { img: require('./xxy/xxy018.png') }, xxy019: { img: require('./xxy/xxy019.png') }, xxy039: { img: require('./xxy/xxy039.png') }, + }, + lt: { + lt001: { img: require('./lt/lt001.png') }, lt005: { img: require('./lt/lt005.png') }, lt004: { img: require('./lt/lt004.png') }, lt007: { img: require('./lt/lt007.png') }, lt006: { img: require('./lt/lt006.png') }, lt010: { img: require('./lt/lt010.png') }, lt003: { img: require('./lt/lt003.png') }, lt002: { img: require('./lt/lt002.png') }, lt011: { img: require('./lt/lt011.png') }, lt009: { img: require('./lt/lt009.png') }, lt008: { img: require('./lt/lt008.png') }, lt014: { img: require('./lt/lt014.png') }, lt019: { img: require('./lt/lt019.png') }, lt017: { img: require('./lt/lt017.png') }, lt016: { img: require('./lt/lt016.png') }, lt015: { img: require('./lt/lt015.png') }, lt018: { img: require('./lt/lt018.png') }, lt012: { img: require('./lt/lt012.png') }, lt020: { img: require('./lt/lt020.png') }, lt013: { img: require('./lt/lt013.png') }, + }, + emoji: { + emoji_136: { img: require('./emoji/emoji_136.png') }, emoji_137: { img: require('./emoji/emoji_137.png') }, emoji_134: { img: require('./emoji/emoji_134.png') }, emoji_135: { img: require('./emoji/emoji_135.png') }, emoji_132: { img: require('./emoji/emoji_132.png') }, emoji_133: { img: require('./emoji/emoji_133.png') }, emoji_130: { img: require('./emoji/emoji_130.png') }, emoji_131: { img: require('./emoji/emoji_131.png') }, emoji_45: { img: require('./emoji/emoji_45.png') }, emoji_44: { img: require('./emoji/emoji_44.png') }, emoji_47: { img: require('./emoji/emoji_47.png') }, emoji_46: { img: require('./emoji/emoji_46.png') }, emoji_41: { img: require('./emoji/emoji_41.png') }, emoji_40: { img: require('./emoji/emoji_40.png') }, emoji_138: { img: require('./emoji/emoji_138.png') }, emoji_139: { img: require('./emoji/emoji_139.png') }, emoji_109: { img: require('./emoji/emoji_109.png') }, emoji_108: { img: require('./emoji/emoji_108.png') }, emoji_103: { img: require('./emoji/emoji_103.png') }, emoji_102: { img: require('./emoji/emoji_102.png') }, emoji_101: { img: require('./emoji/emoji_101.png') }, emoji_100: { img: require('./emoji/emoji_100.png') }, emoji_107: { img: require('./emoji/emoji_107.png') }, emoji_106: { img: require('./emoji/emoji_106.png') }, emoji_105: { img: require('./emoji/emoji_105.png') }, emoji_104: { img: require('./emoji/emoji_104.png') }, emoji_38: { img: require('./emoji/emoji_38.png') }, emoji_39: { img: require('./emoji/emoji_39.png') }, emoji_30: { img: require('./emoji/emoji_30.png') }, emoji_31: { img: require('./emoji/emoji_31.png') }, emoji_32: { img: require('./emoji/emoji_32.png') }, emoji_33: { img: require('./emoji/emoji_33.png') }, emoji_34: { img: require('./emoji/emoji_34.png') }, emoji_35: { img: require('./emoji/emoji_35.png') }, emoji_36: { img: require('./emoji/emoji_36.png') }, emoji_37: { img: require('./emoji/emoji_37.png') }, emoji_118: { img: require('./emoji/emoji_118.png') }, emoji_119: { img: require('./emoji/emoji_119.png') }, emoji_114: { img: require('./emoji/emoji_114.png') }, emoji_115: { img: require('./emoji/emoji_115.png') }, emoji_116: { img: require('./emoji/emoji_116.png') }, emoji_117: { img: require('./emoji/emoji_117.png') }, emoji_110: { img: require('./emoji/emoji_110.png') }, emoji_111: { img: require('./emoji/emoji_111.png') }, emoji_112: { img: require('./emoji/emoji_112.png') }, emoji_113: { img: require('./emoji/emoji_113.png') }, emoji_82: { img: require('./emoji/emoji_82.png') }, emoji_29: { img: require('./emoji/emoji_29.png') }, emoji_28: { img: require('./emoji/emoji_28.png') }, emoji_23: { img: require('./emoji/emoji_23.png') }, emoji_22: { img: require('./emoji/emoji_22.png') }, emoji_21: { img: require('./emoji/emoji_21.png') }, emoji_20: { img: require('./emoji/emoji_20.png') }, emoji_27: { img: require('./emoji/emoji_27.png') }, emoji_26: { img: require('./emoji/emoji_26.png') }, emoji_25: { img: require('./emoji/emoji_25.png') }, emoji_24: { img: require('./emoji/emoji_24.png') }, emoji_49: { img: require('./emoji/emoji_49.png') }, emoji_48: { img: require('./emoji/emoji_48.png') }, emoji_200: { img: require('./emoji/emoji_200.png') }, emoji_97: { img: require('./emoji/emoji_97.png') }, emoji_94: { img: require('./emoji/emoji_94.png') }, emoji_95: { img: require('./emoji/emoji_95.png') }, emoji_92: { img: require('./emoji/emoji_92.png') }, emoji_93: { img: require('./emoji/emoji_93.png') }, emoji_90: { img: require('./emoji/emoji_90.png') }, emoji_91: { img: require('./emoji/emoji_91.png') }, emoji_161: { img: require('./emoji/emoji_161.png') }, emoji_160: { img: require('./emoji/emoji_160.png') }, emoji_163: { img: require('./emoji/emoji_163.png') }, emoji_162: { img: require('./emoji/emoji_162.png') }, emoji_165: { img: require('./emoji/emoji_165.png') }, emoji_164: { img: require('./emoji/emoji_164.png') }, emoji_98: { img: require('./emoji/emoji_98.png') }, emoji_166: { img: require('./emoji/emoji_166.png') }, emoji_18: { img: require('./emoji/emoji_18.png') }, emoji_19: { img: require('./emoji/emoji_19.png') }, emoji_16: { img: require('./emoji/emoji_16.png') }, emoji_17: { img: require('./emoji/emoji_17.png') }, emoji_14: { img: require('./emoji/emoji_14.png') }, emoji_15: { img: require('./emoji/emoji_15.png') }, emoji_12: { img: require('./emoji/emoji_12.png') }, emoji_13: { img: require('./emoji/emoji_13.png') }, emoji_10: { img: require('./emoji/emoji_10.png') }, emoji_11: { img: require('./emoji/emoji_11.png') }, emoji_89: { img: require('./emoji/emoji_89.png') }, emoji_88: { img: require('./emoji/emoji_88.png') }, emoji_43: { img: require('./emoji/emoji_43.png') }, emoji_81: { img: require('./emoji/emoji_81.png') }, emoji_80: { img: require('./emoji/emoji_80.png') }, emoji_83: { img: require('./emoji/emoji_83.png') }, emoji_42: { img: require('./emoji/emoji_42.png') }, emoji_85: { img: require('./emoji/emoji_85.png') }, emoji_84: { img: require('./emoji/emoji_84.png') }, emoji_87: { img: require('./emoji/emoji_87.png') }, emoji_86: { img: require('./emoji/emoji_86.png') }, emoji_01: { img: require('./emoji/emoji_01.png') }, emoji_00: { img: require('./emoji/emoji_00.png') }, emoji_03: { img: require('./emoji/emoji_03.png') }, emoji_02: { img: require('./emoji/emoji_02.png') }, emoji_05: { img: require('./emoji/emoji_05.png') }, emoji_04: { img: require('./emoji/emoji_04.png') }, emoji_07: { img: require('./emoji/emoji_07.png') }, emoji_06: { img: require('./emoji/emoji_06.png') }, emoji_09: { img: require('./emoji/emoji_09.png') }, emoji_08: { img: require('./emoji/emoji_08.png') }, emoji_96: { img: require('./emoji/emoji_96.png') }, emoji_58: { img: require('./emoji/emoji_58.png') }, emoji_59: { img: require('./emoji/emoji_59.png') }, emoji_149: { img: require('./emoji/emoji_149.png') }, emoji_148: { img: require('./emoji/emoji_148.png') }, emoji_147: { img: require('./emoji/emoji_147.png') }, emoji_146: { img: require('./emoji/emoji_146.png') }, emoji_145: { img: require('./emoji/emoji_145.png') }, emoji_144: { img: require('./emoji/emoji_144.png') }, emoji_143: { img: require('./emoji/emoji_143.png') }, emoji_142: { img: require('./emoji/emoji_142.png') }, emoji_141: { img: require('./emoji/emoji_141.png') }, emoji_140: { img: require('./emoji/emoji_140.png') }, emoji_74: { img: require('./emoji/emoji_74.png') }, emoji_75: { img: require('./emoji/emoji_75.png') }, emoji_76: { img: require('./emoji/emoji_76.png') }, emoji_77: { img: require('./emoji/emoji_77.png') }, emoji_70: { img: require('./emoji/emoji_70.png') }, emoji_71: { img: require('./emoji/emoji_71.png') }, emoji_72: { img: require('./emoji/emoji_72.png') }, emoji_73: { img: require('./emoji/emoji_73.png') }, emoji_78: { img: require('./emoji/emoji_78.png') }, emoji_79: { img: require('./emoji/emoji_79.png') }, emoji_56: { img: require('./emoji/emoji_56.png') }, emoji_57: { img: require('./emoji/emoji_57.png') }, emoji_99: { img: require('./emoji/emoji_99.png') }, emoji_150: { img: require('./emoji/emoji_150.png') }, emoji_151: { img: require('./emoji/emoji_151.png') }, emoji_152: { img: require('./emoji/emoji_152.png') }, emoji_67: { img: require('./emoji/emoji_67.png') }, emoji_66: { img: require('./emoji/emoji_66.png') }, emoji_65: { img: require('./emoji/emoji_65.png') }, emoji_64: { img: require('./emoji/emoji_64.png') }, emoji_63: { img: require('./emoji/emoji_63.png') }, emoji_62: { img: require('./emoji/emoji_62.png') }, emoji_61: { img: require('./emoji/emoji_61.png') }, emoji_60: { img: require('./emoji/emoji_60.png') }, emoji_69: { img: require('./emoji/emoji_69.png') }, emoji_68: { img: require('./emoji/emoji_68.png') }, emoji_del: { img: require('./emoji/emoji_del.png') }, emoji_125: { img: require('./emoji/emoji_125.png') }, emoji_124: { img: require('./emoji/emoji_124.png') }, emoji_127: { img: require('./emoji/emoji_127.png') }, emoji_126: { img: require('./emoji/emoji_126.png') }, emoji_121: { img: require('./emoji/emoji_121.png') }, emoji_120: { img: require('./emoji/emoji_120.png') }, emoji_123: { img: require('./emoji/emoji_123.png') }, emoji_122: { img: require('./emoji/emoji_122.png') }, emoji_52: { img: require('./emoji/emoji_52.png') }, emoji_53: { img: require('./emoji/emoji_53.png') }, emoji_50: { img: require('./emoji/emoji_50.png') }, emoji_51: { img: require('./emoji/emoji_51.png') }, emoji_129: { img: require('./emoji/emoji_129.png') }, emoji_128: { img: require('./emoji/emoji_128.png') }, emoji_54: { img: require('./emoji/emoji_54.png') }, emoji_55: { img: require('./emoji/emoji_55.png') }, + }, +}; + +const emojiList = { + emoji: { + '[大笑]': { file: 'emoji_00.png' }, '[可爱]': { file: 'emoji_01.png' }, '[色]': { file: 'emoji_02.png' }, '[嘘]': { file: 'emoji_03.png' }, '[亲]': { file: 'emoji_04.png' }, '[呆]': { file: 'emoji_05.png' }, '[口水]': { file: 'emoji_06.png' }, '[汗]': { file: 'emoji_145.png' }, '[呲牙]': { file: 'emoji_07.png' }, '[鬼脸]': { file: 'emoji_08.png' }, '[害羞]': { file: 'emoji_09.png' }, '[偷笑]': { file: 'emoji_10.png' }, '[调皮]': { file: 'emoji_11.png' }, '[可怜]': { file: 'emoji_12.png' }, '[敲]': { file: 'emoji_13.png' }, '[惊讶]': { file: 'emoji_14.png' }, '[流感]': { file: 'emoji_15.png' }, '[委屈]': { file: 'emoji_16.png' }, '[流泪]': { file: 'emoji_17.png' }, '[嚎哭]': { file: 'emoji_18.png' }, '[惊恐]': { file: 'emoji_19.png' }, '[怒]': { file: 'emoji_20.png' }, '[酷]': { file: 'emoji_21.png' }, '[不说]': { file: 'emoji_22.png' }, '[鄙视]': { file: 'emoji_23.png' }, '[阿弥陀佛]': { file: 'emoji_24.png' }, '[奸笑]': { file: 'emoji_25.png' }, '[睡着]': { file: 'emoji_26.png' }, '[口罩]': { file: 'emoji_27.png' }, '[努力]': { file: 'emoji_28.png' }, '[抠鼻孔]': { file: 'emoji_29.png' }, '[疑问]': { file: 'emoji_30.png' }, '[怒骂]': { file: 'emoji_31.png' }, '[晕]': { file: 'emoji_32.png' }, '[呕吐]': { file: 'emoji_33.png' }, '[拜一拜]': { file: 'emoji_160.png' }, '[惊喜]': { file: 'emoji_161.png' }, '[流汗]': { file: 'emoji_162.png' }, '[卖萌]': { file: 'emoji_163.png' }, '[默契眨眼]': { file: 'emoji_164.png' }, '[烧香拜佛]': { file: 'emoji_165.png' }, '[晚安]': { file: 'emoji_166.png' }, '[强]': { file: 'emoji_34.png' }, '[弱]': { file: 'emoji_35.png' }, '[OK]': { file: 'emoji_36.png' }, '[拳头]': { file: 'emoji_37.png' }, '[胜利]': { file: 'emoji_38.png' }, '[鼓掌]': { file: 'emoji_39.png' }, '[握手]': { file: 'emoji_200.png' }, '[发怒]': { file: 'emoji_40.png' }, '[骷髅]': { file: 'emoji_41.png' }, '[便便]': { file: 'emoji_42.png' }, '[火]': { file: 'emoji_43.png' }, '[溜]': { file: 'emoji_44.png' }, '[爱心]': { file: 'emoji_45.png' }, '[心碎]': { file: 'emoji_46.png' }, '[钟情]': { file: 'emoji_47.png' }, '[唇]': { file: 'emoji_48.png' }, '[戒指]': { file: 'emoji_49.png' }, '[钻石]': { file: 'emoji_50.png' }, '[太阳]': { file: 'emoji_51.png' }, '[有时晴]': { file: 'emoji_52.png' }, '[多云]': { file: 'emoji_53.png' }, '[雷]': { file: 'emoji_54.png' }, '[雨]': { file: 'emoji_55.png' }, '[雪花]': { file: 'emoji_56.png' }, '[爱人]': { file: 'emoji_57.png' }, '[帽子]': { file: 'emoji_58.png' }, '[皇冠]': { file: 'emoji_59.png' }, '[篮球]': { file: 'emoji_60.png' }, '[足球]': { file: 'emoji_61.png' }, '[垒球]': { file: 'emoji_62.png' }, '[网球]': { file: 'emoji_63.png' }, '[台球]': { file: 'emoji_64.png' }, '[咖啡]': { file: 'emoji_65.png' }, '[啤酒]': { file: 'emoji_66.png' }, '[干杯]': { file: 'emoji_67.png' }, '[柠檬汁]': { file: 'emoji_68.png' }, '[餐具]': { file: 'emoji_69.png' }, '[汉堡]': { file: 'emoji_70.png' }, '[鸡腿]': { file: 'emoji_71.png' }, '[面条]': { file: 'emoji_72.png' }, '[冰淇淋]': { file: 'emoji_73.png' }, '[沙冰]': { file: 'emoji_74.png' }, '[生日蛋糕]': { file: 'emoji_75.png' }, '[蛋糕]': { file: 'emoji_76.png' }, '[糖果]': { file: 'emoji_77.png' }, '[葡萄]': { file: 'emoji_78.png' }, '[西瓜]': { file: 'emoji_79.png' }, '[光碟]': { file: 'emoji_80.png' }, '[手机]': { file: 'emoji_81.png' }, '[电话]': { file: 'emoji_82.png' }, '[电视]': { file: 'emoji_83.png' }, '[声音开启]': { file: 'emoji_84.png' }, '[声音关闭]': { file: 'emoji_85.png' }, '[铃铛]': { file: 'emoji_86.png' }, '[锁头]': { file: 'emoji_87.png' }, '[放大镜]': { file: 'emoji_88.png' }, '[灯泡]': { file: 'emoji_89.png' }, '[锤头]': { file: 'emoji_90.png' }, '[烟]': { file: 'emoji_91.png' }, '[炸弹]': { file: 'emoji_92.png' }, '[枪]': { file: 'emoji_93.png' }, '[刀]': { file: 'emoji_94.png' }, '[药]': { file: 'emoji_95.png' }, '[打针]': { file: 'emoji_96.png' }, '[钱袋]': { file: 'emoji_97.png' }, '[钞票]': { file: 'emoji_98.png' }, '[银行卡]': { file: 'emoji_99.png' }, '[手柄]': { file: 'emoji_100.png' }, '[麻将]': { file: 'emoji_101.png' }, '[调色板]': { file: 'emoji_102.png' }, '[电影]': { file: 'emoji_103.png' }, '[麦克风]': { file: 'emoji_104.png' }, '[耳机]': { file: 'emoji_105.png' }, '[音乐]': { file: 'emoji_106.png' }, '[吉他]': { file: 'emoji_107.png' }, '[火箭]': { file: 'emoji_108.png' }, '[飞机]': { file: 'emoji_109.png' }, '[火车]': { file: 'emoji_110.png' }, '[公交]': { file: 'emoji_111.png' }, '[轿车]': { file: 'emoji_112.png' }, '[出租车]': { file: 'emoji_113.png' }, '[警车]': { file: 'emoji_114.png' }, '[自行车]': { file: 'emoji_115.png' }, + }, +}; + +Object.keys(emojiList).forEach((emojiAlbum) => { + const emojiItem = emojiList[emojiAlbum]; + Object.keys(emojiItem).forEach((emojiKey) => { + const item = emojiItem[emojiKey]; + const keyName = item.file.replace('.png', ''); + emojiList[emojiAlbum][emojiKey].img = pinupList.emoji[keyName].img; + }); +}); + +delete pinupList.emoji; + +export default { + emojiList, + pinupList, +}; diff --git a/src/res/emoji/lt/lt001.png b/src/res/emoji/lt/lt001.png new file mode 100755 index 0000000..f886e15 Binary files /dev/null and b/src/res/emoji/lt/lt001.png differ diff --git a/src/res/emoji/lt/lt002.png b/src/res/emoji/lt/lt002.png new file mode 100755 index 0000000..8d148bf Binary files /dev/null and b/src/res/emoji/lt/lt002.png differ diff --git a/src/res/emoji/lt/lt003.png b/src/res/emoji/lt/lt003.png new file mode 100755 index 0000000..9f48fb1 Binary files /dev/null and b/src/res/emoji/lt/lt003.png differ diff --git a/src/res/emoji/lt/lt004.png b/src/res/emoji/lt/lt004.png new file mode 100755 index 0000000..c6265f6 Binary files /dev/null and b/src/res/emoji/lt/lt004.png differ diff --git a/src/res/emoji/lt/lt005.png b/src/res/emoji/lt/lt005.png new file mode 100755 index 0000000..744090b Binary files /dev/null and b/src/res/emoji/lt/lt005.png differ diff --git a/src/res/emoji/lt/lt006.png b/src/res/emoji/lt/lt006.png new file mode 100755 index 0000000..03ff297 Binary files /dev/null and b/src/res/emoji/lt/lt006.png differ diff --git a/src/res/emoji/lt/lt007.png b/src/res/emoji/lt/lt007.png new file mode 100755 index 0000000..b43007d Binary files /dev/null and b/src/res/emoji/lt/lt007.png differ diff --git a/src/res/emoji/lt/lt008.png b/src/res/emoji/lt/lt008.png new file mode 100755 index 0000000..aa0c321 Binary files /dev/null and b/src/res/emoji/lt/lt008.png differ diff --git a/src/res/emoji/lt/lt009.png b/src/res/emoji/lt/lt009.png new file mode 100755 index 0000000..f4484b6 Binary files /dev/null and b/src/res/emoji/lt/lt009.png differ diff --git a/src/res/emoji/lt/lt010.png b/src/res/emoji/lt/lt010.png new file mode 100755 index 0000000..eb630e2 Binary files /dev/null and b/src/res/emoji/lt/lt010.png differ diff --git a/src/res/emoji/lt/lt011.png b/src/res/emoji/lt/lt011.png new file mode 100755 index 0000000..4110dc2 Binary files /dev/null and b/src/res/emoji/lt/lt011.png differ diff --git a/src/res/emoji/lt/lt012.png b/src/res/emoji/lt/lt012.png new file mode 100755 index 0000000..ea56fae Binary files /dev/null and b/src/res/emoji/lt/lt012.png differ diff --git a/src/res/emoji/lt/lt013.png b/src/res/emoji/lt/lt013.png new file mode 100755 index 0000000..66f3faa Binary files /dev/null and b/src/res/emoji/lt/lt013.png differ diff --git a/src/res/emoji/lt/lt014.png b/src/res/emoji/lt/lt014.png new file mode 100755 index 0000000..8ab4f13 Binary files /dev/null and b/src/res/emoji/lt/lt014.png differ diff --git a/src/res/emoji/lt/lt015.png b/src/res/emoji/lt/lt015.png new file mode 100755 index 0000000..ee8e1e9 Binary files /dev/null and b/src/res/emoji/lt/lt015.png differ diff --git a/src/res/emoji/lt/lt016.png b/src/res/emoji/lt/lt016.png new file mode 100755 index 0000000..f4d639c Binary files /dev/null and b/src/res/emoji/lt/lt016.png differ diff --git a/src/res/emoji/lt/lt017.png b/src/res/emoji/lt/lt017.png new file mode 100755 index 0000000..ea28e08 Binary files /dev/null and b/src/res/emoji/lt/lt017.png differ diff --git a/src/res/emoji/lt/lt018.png b/src/res/emoji/lt/lt018.png new file mode 100755 index 0000000..f7a467b Binary files /dev/null and b/src/res/emoji/lt/lt018.png differ diff --git a/src/res/emoji/lt/lt019.png b/src/res/emoji/lt/lt019.png new file mode 100755 index 0000000..40113c1 Binary files /dev/null and b/src/res/emoji/lt/lt019.png differ diff --git a/src/res/emoji/lt/lt020.png b/src/res/emoji/lt/lt020.png new file mode 100755 index 0000000..eddc5d0 Binary files /dev/null and b/src/res/emoji/lt/lt020.png differ diff --git a/src/res/emoji/sync.py b/src/res/emoji/sync.py new file mode 100755 index 0000000..92b42a3 --- /dev/null +++ b/src/res/emoji/sync.py @@ -0,0 +1,47 @@ +# -*- coding:utf-8 -*- +import os, re, json + +dirs = ['emoji', 'ajmd', 'lt', 'xxy'] +emoji_map = dict() + +for file_path in dirs: + emoji_map[file_path] = {} + for file_name in os.listdir(file_path): + if re.search(r'\.png$', file_name): + key_name = file_name.replace('.png', '') + emoji_map[file_path][key_name] = { + 'img': './%s/%s' % (file_path, file_name), + } + +content = json.dumps(emoji_map) +content = content.replace('"img": "', '"img": require("') +content = content.replace('.png"}', '.png")}') + +result = ''' +const pinupList = %s + +const emojiList = { + emoji: { + '[大笑]': { file: 'emoji_00.png' }, '[可爱]': { file: 'emoji_01.png' }, '[色]': { file: 'emoji_02.png' }, '[嘘]': { file: 'emoji_03.png' }, '[亲]': { file: 'emoji_04.png' }, '[呆]': { file: 'emoji_05.png' }, '[口水]': { file: 'emoji_06.png' }, '[汗]': { file: 'emoji_145.png' }, '[呲牙]': { file: 'emoji_07.png' }, '[鬼脸]': { file: 'emoji_08.png' }, '[害羞]': { file: 'emoji_09.png' }, '[偷笑]': { file: 'emoji_10.png' }, '[调皮]': { file: 'emoji_11.png' }, '[可怜]': { file: 'emoji_12.png' }, '[敲]': { file: 'emoji_13.png' }, '[惊讶]': { file: 'emoji_14.png' }, '[流感]': { file: 'emoji_15.png' }, '[委屈]': { file: 'emoji_16.png' }, '[流泪]': { file: 'emoji_17.png' }, '[嚎哭]': { file: 'emoji_18.png' }, '[惊恐]': { file: 'emoji_19.png' }, '[怒]': { file: 'emoji_20.png' }, '[酷]': { file: 'emoji_21.png' }, '[不说]': { file: 'emoji_22.png' }, '[鄙视]': { file: 'emoji_23.png' }, '[阿弥陀佛]': { file: 'emoji_24.png' }, '[奸笑]': { file: 'emoji_25.png' }, '[睡着]': { file: 'emoji_26.png' }, '[口罩]': { file: 'emoji_27.png' }, '[努力]': { file: 'emoji_28.png' }, '[抠鼻孔]': { file: 'emoji_29.png' }, '[疑问]': { file: 'emoji_30.png' }, '[怒骂]': { file: 'emoji_31.png' }, '[晕]': { file: 'emoji_32.png' }, '[呕吐]': { file: 'emoji_33.png' }, '[拜一拜]': { file: 'emoji_160.png' }, '[惊喜]': { file: 'emoji_161.png' }, '[流汗]': { file: 'emoji_162.png' }, '[卖萌]': { file: 'emoji_163.png' }, '[默契眨眼]': { file: 'emoji_164.png' }, '[烧香拜佛]': { file: 'emoji_165.png' }, '[晚安]': { file: 'emoji_166.png' }, '[强]': { file: 'emoji_34.png' }, '[弱]': { file: 'emoji_35.png' }, '[OK]': { file: 'emoji_36.png' }, '[拳头]': { file: 'emoji_37.png' }, '[胜利]': { file: 'emoji_38.png' }, '[鼓掌]': { file: 'emoji_39.png' }, '[握手]': { file: 'emoji_200.png' }, '[发怒]': { file: 'emoji_40.png' }, '[骷髅]': { file: 'emoji_41.png' }, '[便便]': { file: 'emoji_42.png' }, '[火]': { file: 'emoji_43.png' }, '[溜]': { file: 'emoji_44.png' }, '[爱心]': { file: 'emoji_45.png' }, '[心碎]': { file: 'emoji_46.png' }, '[钟情]': { file: 'emoji_47.png' }, '[唇]': { file: 'emoji_48.png' }, '[戒指]': { file: 'emoji_49.png' }, '[钻石]': { file: 'emoji_50.png' }, '[太阳]': { file: 'emoji_51.png' }, '[有时晴]': { file: 'emoji_52.png' }, '[多云]': { file: 'emoji_53.png' }, '[雷]': { file: 'emoji_54.png' }, '[雨]': { file: 'emoji_55.png' }, '[雪花]': { file: 'emoji_56.png' }, '[爱人]': { file: 'emoji_57.png' }, '[帽子]': { file: 'emoji_58.png' }, '[皇冠]': { file: 'emoji_59.png' }, '[篮球]': { file: 'emoji_60.png' }, '[足球]': { file: 'emoji_61.png' }, '[垒球]': { file: 'emoji_62.png' }, '[网球]': { file: 'emoji_63.png' }, '[台球]': { file: 'emoji_64.png' }, '[咖啡]': { file: 'emoji_65.png' }, '[啤酒]': { file: 'emoji_66.png' }, '[干杯]': { file: 'emoji_67.png' }, '[柠檬汁]': { file: 'emoji_68.png' }, '[餐具]': { file: 'emoji_69.png' }, '[汉堡]': { file: 'emoji_70.png' }, '[鸡腿]': { file: 'emoji_71.png' }, '[面条]': { file: 'emoji_72.png' }, '[冰淇淋]': { file: 'emoji_73.png' }, '[沙冰]': { file: 'emoji_74.png' }, '[生日蛋糕]': { file: 'emoji_75.png' }, '[蛋糕]': { file: 'emoji_76.png' }, '[糖果]': { file: 'emoji_77.png' }, '[葡萄]': { file: 'emoji_78.png' }, '[西瓜]': { file: 'emoji_79.png' }, '[光碟]': { file: 'emoji_80.png' }, '[手机]': { file: 'emoji_81.png' }, '[电话]': { file: 'emoji_82.png' }, '[电视]': { file: 'emoji_83.png' }, '[声音开启]': { file: 'emoji_84.png' }, '[声音关闭]': { file: 'emoji_85.png' }, '[铃铛]': { file: 'emoji_86.png' }, '[锁头]': { file: 'emoji_87.png' }, '[放大镜]': { file: 'emoji_88.png' }, '[灯泡]': { file: 'emoji_89.png' }, '[锤头]': { file: 'emoji_90.png' }, '[烟]': { file: 'emoji_91.png' }, '[炸弹]': { file: 'emoji_92.png' }, '[枪]': { file: 'emoji_93.png' }, '[刀]': { file: 'emoji_94.png' }, '[药]': { file: 'emoji_95.png' }, '[打针]': { file: 'emoji_96.png' }, '[钱袋]': { file: 'emoji_97.png' }, '[钞票]': { file: 'emoji_98.png' }, '[银行卡]': { file: 'emoji_99.png' }, '[手柄]': { file: 'emoji_100.png' }, '[麻将]': { file: 'emoji_101.png' }, '[调色板]': { file: 'emoji_102.png' }, '[电影]': { file: 'emoji_103.png' }, '[麦克风]': { file: 'emoji_104.png' }, '[耳机]': { file: 'emoji_105.png' }, '[音乐]': { file: 'emoji_106.png' }, '[吉他]': { file: 'emoji_107.png' }, '[火箭]': { file: 'emoji_108.png' }, '[飞机]': { file: 'emoji_109.png' }, '[火车]': { file: 'emoji_110.png' }, '[公交]': { file: 'emoji_111.png' }, '[轿车]': { file: 'emoji_112.png' }, '[出租车]': { file: 'emoji_113.png' }, '[警车]': { file: 'emoji_114.png' }, '[自行车]': { file: 'emoji_115.png' }, + }, +}; + +Object.keys(emojiList).forEach((emojiAlbum) => { + const emojiItem = emojiList[emojiAlbum]; + Object.keys(emojiItem).forEach((emojiKey) => { + const item = emojiItem[emojiKey]; + const keyName = item.file.replace('.png', ''); + emojiList[emojiAlbum][emojiKey].img = pinupList.emoji[keyName].img; + }); +}); + +delete pinupList['emoji']; + +export default { + emojiList, + pinupList, +}; +''' % content + +with open('index.js', 'w+') as f: + f.write(result) \ No newline at end of file diff --git a/src/res/emoji/xxy/xxy001.png b/src/res/emoji/xxy/xxy001.png new file mode 100755 index 0000000..84fccd6 Binary files /dev/null and b/src/res/emoji/xxy/xxy001.png differ diff --git a/src/res/emoji/xxy/xxy002.png b/src/res/emoji/xxy/xxy002.png new file mode 100755 index 0000000..072b5b6 Binary files /dev/null and b/src/res/emoji/xxy/xxy002.png differ diff --git a/src/res/emoji/xxy/xxy003.png b/src/res/emoji/xxy/xxy003.png new file mode 100755 index 0000000..19f2a33 Binary files /dev/null and b/src/res/emoji/xxy/xxy003.png differ diff --git a/src/res/emoji/xxy/xxy004.png b/src/res/emoji/xxy/xxy004.png new file mode 100755 index 0000000..99c0be2 Binary files /dev/null and b/src/res/emoji/xxy/xxy004.png differ diff --git a/src/res/emoji/xxy/xxy005.png b/src/res/emoji/xxy/xxy005.png new file mode 100755 index 0000000..d6690ee Binary files /dev/null and b/src/res/emoji/xxy/xxy005.png differ diff --git a/src/res/emoji/xxy/xxy006.png b/src/res/emoji/xxy/xxy006.png new file mode 100755 index 0000000..f822302 Binary files /dev/null and b/src/res/emoji/xxy/xxy006.png differ diff --git a/src/res/emoji/xxy/xxy007.png b/src/res/emoji/xxy/xxy007.png new file mode 100755 index 0000000..f06b69a Binary files /dev/null and b/src/res/emoji/xxy/xxy007.png differ diff --git a/src/res/emoji/xxy/xxy008.png b/src/res/emoji/xxy/xxy008.png new file mode 100755 index 0000000..6a6c323 Binary files /dev/null and b/src/res/emoji/xxy/xxy008.png differ diff --git a/src/res/emoji/xxy/xxy009.png b/src/res/emoji/xxy/xxy009.png new file mode 100755 index 0000000..1bb6974 Binary files /dev/null and b/src/res/emoji/xxy/xxy009.png differ diff --git a/src/res/emoji/xxy/xxy010.png b/src/res/emoji/xxy/xxy010.png new file mode 100755 index 0000000..1d27c2f Binary files /dev/null and b/src/res/emoji/xxy/xxy010.png differ diff --git a/src/res/emoji/xxy/xxy011.png b/src/res/emoji/xxy/xxy011.png new file mode 100755 index 0000000..51bfdea Binary files /dev/null and b/src/res/emoji/xxy/xxy011.png differ diff --git a/src/res/emoji/xxy/xxy012.png b/src/res/emoji/xxy/xxy012.png new file mode 100755 index 0000000..85c36ff Binary files /dev/null and b/src/res/emoji/xxy/xxy012.png differ diff --git a/src/res/emoji/xxy/xxy013.png b/src/res/emoji/xxy/xxy013.png new file mode 100755 index 0000000..0832ca4 Binary files /dev/null and b/src/res/emoji/xxy/xxy013.png differ diff --git a/src/res/emoji/xxy/xxy014.png b/src/res/emoji/xxy/xxy014.png new file mode 100755 index 0000000..d95b2fd Binary files /dev/null and b/src/res/emoji/xxy/xxy014.png differ diff --git a/src/res/emoji/xxy/xxy015.png b/src/res/emoji/xxy/xxy015.png new file mode 100755 index 0000000..ea17165 Binary files /dev/null and b/src/res/emoji/xxy/xxy015.png differ diff --git a/src/res/emoji/xxy/xxy016.png b/src/res/emoji/xxy/xxy016.png new file mode 100755 index 0000000..fb59b77 Binary files /dev/null and b/src/res/emoji/xxy/xxy016.png differ diff --git a/src/res/emoji/xxy/xxy017.png b/src/res/emoji/xxy/xxy017.png new file mode 100755 index 0000000..da702e4 Binary files /dev/null and b/src/res/emoji/xxy/xxy017.png differ diff --git a/src/res/emoji/xxy/xxy018.png b/src/res/emoji/xxy/xxy018.png new file mode 100755 index 0000000..0ea35e1 Binary files /dev/null and b/src/res/emoji/xxy/xxy018.png differ diff --git a/src/res/emoji/xxy/xxy019.png b/src/res/emoji/xxy/xxy019.png new file mode 100755 index 0000000..5ae067e Binary files /dev/null and b/src/res/emoji/xxy/xxy019.png differ diff --git a/src/res/emoji/xxy/xxy020.png b/src/res/emoji/xxy/xxy020.png new file mode 100755 index 0000000..9582114 Binary files /dev/null and b/src/res/emoji/xxy/xxy020.png differ diff --git a/src/res/emoji/xxy/xxy021.png b/src/res/emoji/xxy/xxy021.png new file mode 100755 index 0000000..5a30533 Binary files /dev/null and b/src/res/emoji/xxy/xxy021.png differ diff --git a/src/res/emoji/xxy/xxy022.png b/src/res/emoji/xxy/xxy022.png new file mode 100755 index 0000000..ba25805 Binary files /dev/null and b/src/res/emoji/xxy/xxy022.png differ diff --git a/src/res/emoji/xxy/xxy023.png b/src/res/emoji/xxy/xxy023.png new file mode 100755 index 0000000..757d998 Binary files /dev/null and b/src/res/emoji/xxy/xxy023.png differ diff --git a/src/res/emoji/xxy/xxy024.png b/src/res/emoji/xxy/xxy024.png new file mode 100755 index 0000000..064841e Binary files /dev/null and b/src/res/emoji/xxy/xxy024.png differ diff --git a/src/res/emoji/xxy/xxy025.png b/src/res/emoji/xxy/xxy025.png new file mode 100755 index 0000000..31f1c44 Binary files /dev/null and b/src/res/emoji/xxy/xxy025.png differ diff --git a/src/res/emoji/xxy/xxy026.png b/src/res/emoji/xxy/xxy026.png new file mode 100755 index 0000000..2429e26 Binary files /dev/null and b/src/res/emoji/xxy/xxy026.png differ diff --git a/src/res/emoji/xxy/xxy027.png b/src/res/emoji/xxy/xxy027.png new file mode 100755 index 0000000..29e0c94 Binary files /dev/null and b/src/res/emoji/xxy/xxy027.png differ diff --git a/src/res/emoji/xxy/xxy028.png b/src/res/emoji/xxy/xxy028.png new file mode 100755 index 0000000..b5e4382 Binary files /dev/null and b/src/res/emoji/xxy/xxy028.png differ diff --git a/src/res/emoji/xxy/xxy029.png b/src/res/emoji/xxy/xxy029.png new file mode 100755 index 0000000..eb30e5c Binary files /dev/null and b/src/res/emoji/xxy/xxy029.png differ diff --git a/src/res/emoji/xxy/xxy030.png b/src/res/emoji/xxy/xxy030.png new file mode 100755 index 0000000..807497a Binary files /dev/null and b/src/res/emoji/xxy/xxy030.png differ diff --git a/src/res/emoji/xxy/xxy031.png b/src/res/emoji/xxy/xxy031.png new file mode 100755 index 0000000..acd8200 Binary files /dev/null and b/src/res/emoji/xxy/xxy031.png differ diff --git a/src/res/emoji/xxy/xxy032.png b/src/res/emoji/xxy/xxy032.png new file mode 100755 index 0000000..c1cde05 Binary files /dev/null and b/src/res/emoji/xxy/xxy032.png differ diff --git a/src/res/emoji/xxy/xxy033.png b/src/res/emoji/xxy/xxy033.png new file mode 100755 index 0000000..48d247a Binary files /dev/null and b/src/res/emoji/xxy/xxy033.png differ diff --git a/src/res/emoji/xxy/xxy034.png b/src/res/emoji/xxy/xxy034.png new file mode 100755 index 0000000..6378aeb Binary files /dev/null and b/src/res/emoji/xxy/xxy034.png differ diff --git a/src/res/emoji/xxy/xxy035.png b/src/res/emoji/xxy/xxy035.png new file mode 100755 index 0000000..6fb6364 Binary files /dev/null and b/src/res/emoji/xxy/xxy035.png differ diff --git a/src/res/emoji/xxy/xxy036.png b/src/res/emoji/xxy/xxy036.png new file mode 100755 index 0000000..bb9c115 Binary files /dev/null and b/src/res/emoji/xxy/xxy036.png differ diff --git a/src/res/emoji/xxy/xxy037.png b/src/res/emoji/xxy/xxy037.png new file mode 100755 index 0000000..e659b5c Binary files /dev/null and b/src/res/emoji/xxy/xxy037.png differ diff --git a/src/res/emoji/xxy/xxy038.png b/src/res/emoji/xxy/xxy038.png new file mode 100755 index 0000000..130c130 Binary files /dev/null and b/src/res/emoji/xxy/xxy038.png differ diff --git a/src/res/emoji/xxy/xxy039.png b/src/res/emoji/xxy/xxy039.png new file mode 100755 index 0000000..a8930cd Binary files /dev/null and b/src/res/emoji/xxy/xxy039.png differ diff --git a/src/res/emoji/xxy/xxy040.png b/src/res/emoji/xxy/xxy040.png new file mode 100755 index 0000000..ef3d77a Binary files /dev/null and b/src/res/emoji/xxy/xxy040.png differ diff --git a/src/res/index.js b/src/res/index.js new file mode 100755 index 0000000..c632c42 --- /dev/null +++ b/src/res/index.js @@ -0,0 +1,6 @@ +export default { + loadingMsg: require('./loading-msg.gif'), + loadingImg: require('./loading-img.gif'), + page404: require('./404.png'), +}; + diff --git a/src/res/loading-img.gif b/src/res/loading-img.gif new file mode 100755 index 0000000..57c61bf Binary files /dev/null and b/src/res/loading-img.gif differ diff --git a/src/res/loading-img.jpg b/src/res/loading-img.jpg new file mode 100755 index 0000000..e7a965c Binary files /dev/null and b/src/res/loading-img.jpg differ diff --git a/src/res/loading-msg.gif b/src/res/loading-msg.gif new file mode 100755 index 0000000..24f1642 Binary files /dev/null and b/src/res/loading-msg.gif differ diff --git a/src/res/logo.png b/src/res/logo.png new file mode 100755 index 0000000..90ab0f8 Binary files /dev/null and b/src/res/logo.png differ diff --git a/src/res/play/index.js b/src/res/play/index.js new file mode 100755 index 0000000..dc934f9 --- /dev/null +++ b/src/res/play/index.js @@ -0,0 +1,6 @@ +export default { + play1: require('./play-1.png'), + play2: require('./play-2.png'), + play3: require('./play-3.png'), +}; + diff --git a/src/res/play/play-1.png b/src/res/play/play-1.png new file mode 100755 index 0000000..ec6b7c1 Binary files /dev/null and b/src/res/play/play-1.png differ diff --git a/src/res/play/play-2.png b/src/res/play/play-2.png new file mode 100755 index 0000000..c8dc312 Binary files /dev/null and b/src/res/play/play-2.png differ diff --git a/src/res/play/play-3.png b/src/res/play/play-3.png new file mode 100755 index 0000000..0fc1058 Binary files /dev/null and b/src/res/play/play-3.png differ diff --git a/src/router.js b/src/router.js new file mode 100755 index 0000000..1c3035a --- /dev/null +++ b/src/router.js @@ -0,0 +1,216 @@ +import {createAppContainer, createSwitchNavigator} from 'react-navigation'; +import {createStackNavigator, TransitionPresets} from 'react-navigation-stack'; +import { + fromLeft, + fromRight, + fromBottom, + fromTop, +} from 'react-navigation-transitions'; +import TestImage from './pages/news/testingImage'; +import SimpleAddApartment from './pages/oneClickRental/simpleAddApartment'; +import ProblemCase from './pages/problems/problemCase'; +import List from './pages/list/list'; +import InfoForGuest from './pages/info/infoForGuest'; +import Detail from './pages/detail/detail'; +import splash from './pages/splash/splashScreen'; +import {TabNav} from './common/tab-nav'; +import HelpSelect from './pages/help/helpSelect'; +import SelectApartmentByOneClickRental from './pages/oneClickRental/selectApartmentByOneClickRental'; +import Tutorial from './pages/tutorial/tutorial'; +import SelectChar from './pages/select/selectChar'; +import Chat from './pages/chat/chat'; +import ImageDetails from './pages/chat/imageDetails'; +import Signature from './pages/signature/signature'; +import SignatureView from './pages/signature/signatureView'; +import ForgotPassword from './pages/signup/forgotPassword'; +import ApartmentDetails from './pages/addApartment/apartmentDetails'; +import ApartmentNameAddressEdit from './pages/addApartment/apartmentNameAddressEdit'; +import GetAparmentRef from './pages/addApartment/getAparmentRef'; +import UploadImage from './pages/addApartment/upLoadImage'; +import ApartmentImageDetails from './pages/addApartment/apartmentImageDetails'; +import CropImage from './pages/addApartment/cropImage'; +import AddTenant from './pages/addApartment/addTenant'; +import Signin from './pages/signIn/signin'; +import Signup from './pages/signup/signup'; +import WechatSignup from './pages/signup/wechatSignup'; +import BannerDetails from './pages/bannerDetails/bannerDetails'; +import signUpVerify from './pages/signup/signUpVerify'; +import Payment from './pages/profile/payment'; +import Card from './pages/profile/card'; +import Receipt from './pages/receipt/receipt'; +import HistoryDetails from './pages/history/historyDetails'; +import AlipayWebView from './pages/history/AlipayWebView'; +import ReceiptDetails from './pages/receipt/receiptDetails'; +import RepairDetails from './pages/repair/repairDetails'; +import PropertyDetails from './pages/property/propertyDetails'; +import Add from './pages/add/add'; +import SelectApartment from './pages/contract/selectApartment'; +import SelectContract from './pages/contract/selectContract'; +import SelectContracts from './pages/contract/selectContracts'; +import ContractData from './pages/contract/contractData'; +import NewContractData from './pages//contract/newContractData'; +import Lease from './pages/contract/lease'; +import NewLease from './pages/contract/newLease'; +import ServicePayment from './pages/contract/servicePayment'; +import NewsDetails from './pages/news/newsDetails'; +import News from './pages/news/news'; +import Property from './pages/property/property'; +import IndustrialBuilding from './pages/property/industrialBuilding'; +import Repair from './pages/repair/repair'; +import PushNotificationTest from './common/pushNotificationTest'; +import SyncApartment from './pages/syncApartment/syncApartment'; +import RepresentativeContractData from './pages/contract/representative/representativeContractData'; +import OneClickRental from './pages/oneClickRental/oneClickRental'; + +function generateRoute(path, screen) { + return { + path, + screen, + }; +} + +const guestRouterMap = { + infoForGuest: generateRoute('./InfoForGuest', InfoForGuest), + news: generateRoute('/news', News), + newsDetails: generateRoute('/newsDetails', NewsDetails), + bannerDetails: generateRoute('/bannerDetails', BannerDetails), + repair: generateRoute('/repair', Repair), + repairDetails: generateRoute('/repairDetails', RepairDetails), + property: generateRoute('/property', Property), + industrialBuilding: generateRoute('/industrialBuilding', IndustrialBuilding), + propertyDetails: generateRoute('/propertyDetails', PropertyDetails), + oneClickRental: generateRoute('/oneClickRental', OneClickRental), + simpleAddApartment: generateRoute('/simpleAddApartment', SimpleAddApartment), + apartmentNameAddressEdit: generateRoute( + '/apartmentNameAddressEdit', + ApartmentNameAddressEdit, + ), + selectApartmentByOneClickRental: generateRoute( + '/selectApartmentByOneClickRental', + SelectApartmentByOneClickRental, + ), +}; + +const stackRouterMap = { + list: generateRoute('/list', List), + detail: generateRoute('/detail', Detail), + apartmentDetails: generateRoute('/apartmentDetails', ApartmentDetails), + apartmentImageDetails: generateRoute( + '/apartmentImageDetails', + ApartmentImageDetails, + ), + problemCase: generateRoute('/problemCase', ProblemCase), + testImage: generateRoute('/testImage', TestImage), + news: generateRoute('/news', News), + repair: generateRoute('/repair', Repair), + property: generateRoute('/property', Property), + industrialBuilding: generateRoute('/industrialBuilding', IndustrialBuilding), + getApartmentRef: generateRoute('/getApartmentRef', GetAparmentRef), + uploadImage: generateRoute('/uploadImage', UploadImage), + cropImage: generateRoute('/cropImage', CropImage), + signature: generateRoute('/signature', Signature), + signatureView: generateRoute('/signatureView', SignatureView), + addTenant: generateRoute('/addTenant', AddTenant), + signin: generateRoute('/signin', Signin), + signup: generateRoute('/signup', Signup), + wechatSignup: generateRoute('/wechatSignup', WechatSignup), + signUpVerify: generateRoute('/signUpVerify', signUpVerify), + payment: generateRoute('/payment', Payment), + card: generateRoute('/card', Card), + helpSelect: generateRoute('/helpSelect', HelpSelect), + add: generateRoute('/add', Add), + receipt: generateRoute('/receipt', Receipt), + receiptDetails: generateRoute('/receiptDetails', ReceiptDetails), + apartmentNameAddressEdit: generateRoute( + '/apartmentNameAddressEdit', + ApartmentNameAddressEdit, + ), + selectApartmentByOneClickRental: generateRoute( + '/selectApartmentByOneClickRental', + SelectApartmentByOneClickRental, + ), + selectApartment: generateRoute('/selectApartment', SelectApartment), + selectContract: generateRoute('/selectContract', SelectContract), + selectContracts: generateRoute('/selectContracts', SelectContracts), + representativeContractData: generateRoute( + '/representativeContractData', + RepresentativeContractData, + ), + bannerDetails: generateRoute('/bannerDetails', BannerDetails), + newsDetails: generateRoute('/newsDetails', NewsDetails), + contractData: generateRoute('/contractData', ContractData), + newContractData: generateRoute('/newContractData', NewContractData), + syncApartment: generateRoute('/syncApartment', SyncApartment), + historyDetails: generateRoute('/historyDetails', HistoryDetails), + alipayWebView: generateRoute('/alipayWebView', AlipayWebView), + repairDetails: generateRoute('/repairDetails', RepairDetails), + propertyDetails: generateRoute('/propertyDetails', PropertyDetails), + forgotPassword: generateRoute('/forgotPassword', ForgotPassword), + oneClickRental: generateRoute('/oneClickRental', OneClickRental), + lease: generateRoute('/lease', Lease), + newLease: generateRoute('/newLease', NewLease), + // infoForGuest: generateRoute('/infoForGuest', InfoForGuest), + servicePayment: generateRoute('/servicePayment', ServicePayment), + pushNotificationTest: generateRoute( + '/pushNotificationTest', + PushNotificationTest, + ), + chat: generateRoute('/chat', Chat), + simpleAddApartment: generateRoute('/simpleAddApartment', SimpleAddApartment), + imageDetails: generateRoute('/imageDetails', ImageDetails), + main: TabNav, + //SelectChar:generateRoute('/SelectChar',SelectChar) +}; + +const handleCustomTransition = ({scenes}) => { + const prevScene = scenes[scenes.length - 2]; + const nextScene = scenes[scenes.length - 1]; + console.log(scenes.length); + // Custom transitions go there + if ( + prevScene && + prevScene.route.routeName === 'main' && + nextScene.route.routeName === 'add' + ) { + return fromBottom(500); + } else if ( + prevScene && + prevScene.route.routeName === 'add' && + nextScene.route.routeName === 'main' + ) { + return fromTop(500); + } + return fromRight(); +}; + +const stackNavigate = createStackNavigator(stackRouterMap, { + initialRouteName: 'main', + headerMode: 'none', + defaultNavigationOptions: { + gestureEnabled: false, + cardOverlayEnabled: false, + ...TransitionPresets.SlideFromRightIOS, + }, +}); + +const guestStackNavigate = createStackNavigator(guestRouterMap, { + initialRouteName: 'infoForGuest', + headerMode: 'none', + defaultNavigationOptions: { + gestureEnabled: false, + cardOverlayEnabled: false, + ...TransitionPresets.SlideFromRightIOS, + }, +}); + +const InitialNavigator = createSwitchNavigator({ + splash: splash, + Tutorial: Tutorial, + mainPage: stackNavigate, + SelectChar: SelectChar, + guest: guestStackNavigate, +}); + +const Router = createAppContainer(InitialNavigator); + +export default Router; diff --git a/src/services/Global.js b/src/services/Global.js new file mode 100755 index 0000000..59d9fbb --- /dev/null +++ b/src/services/Global.js @@ -0,0 +1,10 @@ +export default { + login: false, + addFunctionVisable: true, + instance: null, + lang: 'hk', + splash: false, + info: '', + repair: '', + property: '', +}; diff --git a/src/services/NavigationService.js b/src/services/NavigationService.js new file mode 100644 index 0000000..d1bceb7 --- /dev/null +++ b/src/services/NavigationService.js @@ -0,0 +1,24 @@ +import {NavigationActions} from 'react-navigation'; + +let _navigator; + +function setTopLevelNavigator(navigatorRef) { + _navigator = navigatorRef; +} + +function navigate(routeName, params) { + _navigator.dispatch( + NavigationActions.navigate({ + type: NavigationActions.NAVIGATE, + routeName, + params, + }), + ); +} + +// add other navigation functions that you need and export them + +export default { + navigate, + setTopLevelNavigator, +}; diff --git a/src/services/api.js b/src/services/api.js new file mode 100755 index 0000000..b5e9502 --- /dev/null +++ b/src/services/api.js @@ -0,0 +1,39 @@ +const api = { + service: 'https://www.rent-chat.com/api/service/', + login: 'http://www.rent-chat.com:8080/app-login/', + thirdPartyLogin: 'http://www.rent-chat.com:8080/3rd-party-oauth/', + signinWithApple: 'http://www.rent-chat.com:8080/sign-in-with-apple', + signinWithWechat: 'http://www.rent-chat.com:8080/sign-in-with-wechat', + signupWithWechat: 'http://www.rent-chat.com:8080/sign-up-with-wechat', + signup: 'http://www.rent-chat.com:8080/reg/', + logout: 'http://www.rent-chat.com:8080/logout/', + bindphone: 'http://www.rent-chat.com:8080/bind-phone', + addApartment: 'https://www.rent-chat.com/api/apartment/', + deleteApartment: 'http://www.rent-chat.com:8080/DELETE/apartment/', + uploadFile: 'http://www.rent-chat.com:8080/doc/', + getRepairInfo: 'http://www.rent-chat.com:8080/servicecompany/', + getRentInfo: 'http://www.rent-chat.com:8080/residentialrentaltransaction/', + getIndustrialBuilding: + 'http://www.rent-chat.com:8080/commercialrentaltransaction', + tenantCheckApartment: 'http://www.rent-chat.com:8080/member/ver-refcode', + tenantAddApartment: 'http://www.rent-chat.com:8080/member/act-refcode', + getUserProfile: 'http://www.rent-chat.com:8080/member/', + creditCard: 'http://www.rent-chat.com:8080/credit-card/', + getCase: 'https://www.rent-chat.com/api/case/', + uploadSign: 'https://www.rent-chat.com/api/member/', + contract: 'http://www.rent-chat.com:8080/contract/', + check: 'http://www.rent-chat.com:8080/check/', + rent: 'http://www.rent-chat.com:8080/rent/', + veerify_check: 'http://www.rent-chat.com:8080/sms_verify_check/', + regPushToken: 'http://www.rent-chat.com:8080/reg-push-token', + smsVerify: 'http://www.rent-chat.com:8080/sms_verify_start/', + forgotPassword: 'http://www.rent-chat.com:8080/forgot-pwd/', + member: 'http://takeawayapp.nirons.com:8080/member/', + getNews: 'http://www.rent-chat.com:8080/news/', + chatBlob: 'http://www.rent-chat.com:8080/chat-blob/', + chatBackup: 'http://www.rent-chat.com:8080/chat', + getBanner: 'http://www.rent-chat.com:8080/banner', + getOneClickApartment: 'https://www.rent-chat.com/api/apartment/?opening=1', +}; + +export default api; diff --git a/src/services/building.json b/src/services/building.json new file mode 100644 index 0000000..c1309dc --- /dev/null +++ b/src/services/building.json @@ -0,0 +1,37914 @@ +[ + { + "building": "東方花園A座", + "address": "九龍九龍城區" + }, + { + "building": "凱旋工商中心", + "address": "九龍九龍城區" + }, + { + "building": "富威花園", + "address": "九龍九龍城區" + }, + { + "building": "黃埔花園", + "address": "九龍九龍城區" + }, + { + "building": "黃埔新村", + "address": "九龍九龍城區" + }, + { + "building": " 天寰天海匯2座", + "address": "九龍九龍城區 沐寧街1號" + }, + { + "building": "天寰", + "address": "九龍九龍城區 沐寧街1號" + }, + { + "building": "啟德一號", + "address": "九龍九龍城區8號二期" + }, + { + "building": "半山壹號", + "address": "九龍九龍城區KIL11124常盛街80號" + }, + { + "building": "怡安閣", + "address": "九龍九龍城區KIL3254亞皆老街124-124M號" + }, + { + "building": "DUNBAR PLACE", + "address": "九龍九龍城區KIL3303登巴道23號DUNBAR PLACE" + }, + { + "building": "新城中心", + "address": "九龍九龍城區九龍城道" + }, + { + "building": "聯業大廈", + "address": "九龍九龍城區九龍城道10-16A號聯業大廈" + }, + { + "building": "福至大廈", + "address": "九龍九龍城區九龍城道135號福至大廈" + }, + { + "building": "浩明雅苑", + "address": "九龍九龍城區九龍城道151號浩明雅苑" + }, + { + "building": "中華工業大廈", + "address": "九龍九龍城區九龍城道153-155號中華工業大廈" + }, + { + "building": "寶成洋樓", + "address": "九龍九龍城區九龍城道157-159號寶成洋樓" + }, + { + "building": "金龍樓", + "address": "九龍九龍城區九龍城道161-169號金龍樓" + }, + { + "building": "仁昌大廈", + "address": "九龍九龍城區九龍城道23-25號仁昌大廈" + }, + { + "building": "仁智大廈", + "address": "九龍九龍城區九龍城道27-31號仁智大廈" + }, + { + "building": "均達大廈", + "address": "九龍九龍城區九龍城道35-37號均達大廈" + }, + { + "building": "豐裕大廈", + "address": "九龍九龍城區九龍城道47-53號豐裕大廈" + }, + { + "building": "忠信大廈", + "address": "九龍九龍城區九龍城道56A-56C號忠信大廈" + }, + { + "building": "同興花園", + "address": "九龍九龍城區九龍城道61號同興花園" + }, + { + "building": "龍祥閣", + "address": "九龍九龍城區九龍城道62-64號龍祥閣" + }, + { + "building": "安樂工廠大廈", + "address": "九龍九龍城區九龍城道88-90號安樂工廠大廈A 座" + }, + { + "building": "鼎新大廈", + "address": "九龍九龍城區上鄉道33號鼎新大廈" + }, + { + "building": "安慶大樓", + "address": "九龍九龍城區下鄉道21-27A號安慶大樓" + }, + { + "building": "怡富閣", + "address": "九龍九龍城區下鄉道22號怡富閣" + }, + { + "building": "昌興大廈", + "address": "九龍九龍城區下鄉道26-30號昌興大廈" + }, + { + "building": "康富大廈", + "address": "九龍九龍城區下鄉道32號康富大廈" + }, + { + "building": "山海大廈", + "address": "九龍九龍城區下鄉道35-47號山海大廈" + }, + { + "building": "華強大廈", + "address": "九龍九龍城區下鄉道36號華強大廈" + }, + { + "building": "華景大廈", + "address": "九龍九龍城區下鄉道38-54號華景大廈" + }, + { + "building": "益民大廈", + "address": "九龍九龍城區下鄉道5-19號益民大廈" + }, + { + "building": "嘉寶大廈", + "address": "九龍九龍城區下鄉道67-77號嘉寶大廈" + }, + { + "building": "益富大廈", + "address": "九龍九龍城區下鄉道89-91號益富大廈" + }, + { + "building": "唯一大廈", + "address": "九龍九龍城區土瓜灣道" + }, + { + "building": "益豐大廈A座", + "address": "九龍九龍城區土瓜灣道237號益豐大廈" + }, + { + "building": "東興大樓", + "address": "九龍九龍城區土瓜灣道249-259號東興大樓" + }, + { + "building": "捷通大廈", + "address": "九龍九龍城區土瓜灣道313-321號捷通大廈" + }, + { + "building": "奕賢大廈", + "address": "九龍九龍城區土瓜灣道323號奕賢大廈" + }, + { + "building": "宏豐工業大廈", + "address": "九龍九龍城區土瓜灣道33號宏豐工業大廈" + }, + { + "building": "定安大廈", + "address": "九龍九龍城區土瓜灣道78-80W號定安大廈" + }, + { + "building": "興華中心", + "address": "九龍九龍城區土瓜灣道84號興華中心" + }, + { + "building": "順聯工業大廈", + "address": "九龍九龍城區土瓜灣道86號順聯工業大廈" + }, + { + "building": "新利華中心", + "address": "九龍九龍城區土瓜灣道88號新利華中心" + }, + { + "building": "美華工業中心", + "address": "九龍九龍城區土瓜灣道94號美華工業中心" + }, + { + "building": "雅緻園", + "address": "九龍九龍城區士他令道2號雅緻園" + }, + { + "building": "利榮大樓", + "address": "九龍九龍城區山西街3號利榮大樓" + }, + { + "building": "蔚景樓", + "address": "九龍九龍城區山谷道12號蔚景樓" + }, + { + "building": "鴻興閣", + "address": "九龍九龍城區山谷道1號鴻興閣" + }, + { + "building": "全發大廈", + "address": "九龍九龍城區山谷道5-13號全發大廈" + }, + { + "building": "公主道6-8號", + "address": "九龍九龍城區公主道6-8號" + }, + { + "building": "本立臺1座", + "address": "九龍九龍城區公主道9-11號本立臺1座" + }, + { + "building": "爵園", + "address": "九龍九龍城區公爵街2號爵園" + }, + { + "building": "公爵大廈", + "address": "九龍九龍城區公爵街4號公爵大廈" + }, + { + "building": "公爵閣", + "address": "九龍九龍城區公爵街5號公爵閣" + }, + { + "building": "公爵街6A-6D號", + "address": "九龍九龍城區公爵街6A-6D號" + }, + { + "building": "德福閣", + "address": "九龍九龍城區公爵街8號德福閣" + }, + { + "building": "曉暉華庭", + "address": "九龍九龍城區天光道28號" + }, + { + "building": "榮達閣", + "address": "九龍九龍城區天光道31-33號榮達閣" + }, + { + "building": "榮達閣", + "address": "九龍九龍城區天光道35-37號榮達閣" + }, + { + "building": "天光大樓", + "address": "九龍九龍城區天光道42-44號天光大樓" + }, + { + "building": "藍馬豪庭", + "address": "九龍九龍城區太子道302-302A號藍馬豪庭" + }, + { + "building": "文德苑", + "address": "九龍九龍城區太子道西" + }, + { + "building": "皇子大廈第一期", + "address": "九龍九龍城區太子道西" + }, + { + "building": "恆泰大廈", + "address": "九龍九龍城區太子道西197-199A號恆泰大廈" + }, + { + "building": "儲君閣", + "address": "九龍九龍城區太子道西201-203號儲君閣" + }, + { + "building": "加多利大廈", + "address": "九龍九龍城區太子道西205-207號加多利大廈" + }, + { + "building": "SKY GARDEN", + "address": "九龍九龍城區太子道西223號SKY GARDEN" + }, + { + "building": "嘉倫閣", + "address": "九龍九龍城區太子道西225號嘉倫閣" + }, + { + "building": "嘉輝大廈", + "address": "九龍九龍城區太子道西227號嘉輝大廈" + }, + { + "building": "愛華大廈", + "address": "九龍九龍城區太子道西230號愛華大廈" + }, + { + "building": "太子花苑", + "address": "九龍九龍城區太子道西232號太子花苑" + }, + { + "building": "太子大廈", + "address": "九龍九龍城區太子道西233-235號太子大廈" + }, + { + "building": "皇子花園", + "address": "九龍九龍城區太子道西234號皇子花園" + }, + { + "building": "麒麟閣", + "address": "九龍九龍城區太子道西240-246號麒麟閣" + }, + { + "building": "康寧大廈", + "address": "九龍九龍城區太子道西241-243A號康寧大廈" + }, + { + "building": "太和苑", + "address": "九龍九龍城區太子道西249,249A, 251號太和苑" + }, + { + "building": "海倫苑", + "address": "九龍九龍城區太子道西263號海倫苑" + }, + { + "building": "乾隆閣", + "address": "九龍九龍城區太子道西269-271號乾隆閣" + }, + { + "building": "太子閣", + "address": "九龍九龍城區太子道西277號太子閣第一期" + }, + { + "building": "明園", + "address": "九龍九龍城區太子道西283號明園" + }, + { + "building": "泰園", + "address": "九龍九龍城區太子道西285號泰園" + }, + { + "building": "青雲閣", + "address": "九龍九龍城區太子道西286號青雲閣" + }, + { + "building": "寶堡大廈", + "address": "九龍九龍城區太子道西287號寶堡大廈" + }, + { + "building": "偉華園", + "address": "九龍九龍城區太子道西290,290A號偉華園" + }, + { + "building": "興業皇帝大廈", + "address": "九龍九龍城區太子道西293,293A,293B號興業皇帝大廈" + }, + { + "building": "楓鳴閣", + "address": "九龍九龍城區太子道西297號楓鳴閣" + }, + { + "building": "偉倫大廈", + "address": "九龍九龍城區太子道西299號偉倫大廈" + }, + { + "building": "愛華閣(第二期)", + "address": "九龍九龍城區太子道西303號愛華閣(第二期)" + }, + { + "building": "昌怡閣", + "address": "九龍九龍城區太子道西304號昌怡閣" + }, + { + "building": "華苑", + "address": "九龍九龍城區太子道西306-308號華苑" + }, + { + "building": "嘉樂園", + "address": "九龍九龍城區太子道西310-310A號嘉樂園" + }, + { + "building": "春苑", + "address": "九龍九龍城區太子道西317-319號春苑" + }, + { + "building": "翡翠閣", + "address": "九龍九龍城區太子道西320號翡翠閣" + }, + { + "building": "薀莎園", + "address": "九龍九龍城區太子道西333號薀莎園" + }, + { + "building": "維景雅軒", + "address": "九龍九龍城區太子道西339號維景雅軒" + }, + { + "building": "豪華之家", + "address": "九龍九龍城區太子道西341號豪華之家" + }, + { + "building": "林苑", + "address": "九龍九龍城區太子道西345-347號林苑" + }, + { + "building": "海光樓", + "address": "九龍九龍城區太子道西357-359號海光樓" + }, + { + "building": "碧殿閣", + "address": "九龍九龍城區太子道西361-367號碧殿閣" + }, + { + "building": "龍珠樓", + "address": "九龍九龍城區太子道西368-374號龍珠樓" + }, + { + "building": "福龍花園", + "address": "九龍九龍城區太子道西375號福龍花園" + }, + { + "building": "太子唐樓", + "address": "九龍九龍城區太子道西376-378號太子唐樓" + }, + { + "building": "?德豪廷", + "address": "九龍九龍城區太子道西377號?德豪廷" + }, + { + "building": "家歡樓", + "address": "九龍九龍城區太子道西379號家歡樓" + }, + { + "building": "國華樓", + "address": "九龍九龍城區太子道西382-384號國華樓" + }, + { + "building": "御‧太子", + "address": "九龍九龍城區太子道西398???御‧太子" + }, + { + "building": "太子匯", + "address": "九龍九龍城區太子道西448號太子匯" + }, + { + "building": "成德大廈", + "address": "九龍九龍城區太平道11-19號成德大廈" + }, + { + "building": "新雅閣", + "address": "九龍九龍城區太平道1-1D號新雅閣" + }, + { + "building": "太平花園", + "address": "九龍九龍城區太平道2號太平花園" + }, + { + "building": "金富大廈", + "address": "九龍九龍城區太平道3號金富大廈" + }, + { + "building": "正平大廈", + "address": "九龍九龍城區太平道4號正平大廈" + }, + { + "building": "華欣閣", + "address": "九龍九龍城區太平道5號華欣閣" + }, + { + "building": "太平居", + "address": "九龍九龍城區太平道6號太平居" + }, + { + "building": "富臨閣", + "address": "九龍九龍城區太平道9-9B號富臨閣" + }, + { + "building": "鐘山閣", + "address": "九龍九龍城區巴芬道10號鐘山閣" + }, + { + "building": "巴芬閣", + "address": "九龍九龍城區巴芬道11號巴芬閣" + }, + { + "building": "恆德大樓", + "address": "九龍九龍城區巴芬道1-3號恆德大樓" + }, + { + "building": "福園", + "address": "九龍九龍城區巴芬道15-15A號福園" + }, + { + "building": "昌和閣", + "address": "九龍九龍城區巴芬道6號昌和閣" + }, + { + "building": "巴豪苑", + "address": "九龍九龍城區巴芬道8號巴豪苑" + }, + { + "building": "巴富花園宜富閣", + "address": "九龍九龍城區巴富街5號巴富花園宜富閣" + }, + { + "building": "恆信園", + "address": "九龍九龍城區文運道" + }, + { + "building": "嘉鳴閣", + "address": "九龍九龍城區文運道1號嘉鳴閣" + }, + { + "building": "明德園", + "address": "九龍九龍城區文運道2號明德園" + }, + { + "building": "德信園", + "address": "九龍九龍城區文運道3號德信園" + }, + { + "building": "文星樓", + "address": "九龍九龍城區文運道4號文星樓" + }, + { + "building": "德星樓", + "address": "九龍九龍城區文運道5號德星樓" + }, + { + "building": "麗晶樓", + "address": "九龍九龍城區文運道6號麗晶樓" + }, + { + "building": "德威大廈", + "address": "九龍九龍城區文福道" + }, + { + "building": "麗苑", + "address": "九龍九龍城區文福道10號麗苑" + }, + { + "building": "瓊苑", + "address": "九龍九龍城區文福道11號瓊苑" + }, + { + "building": "仁華園", + "address": "九龍九龍城區文福道12號仁華園" + }, + { + "building": "樂園大廈", + "address": "九龍九龍城區文福道15-17號樂園大廈" + }, + { + "building": "瓊林別墅", + "address": "九龍九龍城區文福道19號瓊林別墅" + }, + { + "building": "公主台A, B, C, D座", + "address": "九龍九龍城區文福道21號公主台A, B, C, D座" + }, + { + "building": "嘉景樓", + "address": "九龍九龍城區文福道22號嘉景樓" + }, + { + "building": "公主台E, F座", + "address": "九龍九龍城區文福道23號公主台E, F座" + }, + { + "building": "錦堂樓", + "address": "九龍九龍城區木廠街16-34號錦堂樓" + }, + { + "building": "聯明興工廠大廈", + "address": "九龍九龍城區木廠街36號聯明興工廠大廈" + }, + { + "building": "金運閣", + "address": "九龍九龍城區木廠街38號金運閣" + }, + { + "building": "金鍚工業大廈", + "address": "九龍九龍城區木廠街5號金鍚工業大廈" + }, + { + "building": "牛津屋", + "address": "九龍九龍城區牛津道17號牛津屋" + }, + { + "building": "北帝大廈", + "address": "九龍九龍城區北帝街" + }, + { + "building": "順麗閣", + "address": "九龍九龍城區北帝街101-103號順麗閣" + }, + { + "building": "福祥大廈", + "address": "九龍九龍城區北帝街107-111號福祥大廈" + }, + { + "building": "喜點", + "address": "九龍九龍城區北帝街123號喜點" + }, + { + "building": "匯川大廈", + "address": "九龍九龍城區北帝街21-25號匯川大廈" + }, + { + "building": "八景樓", + "address": "九龍九龍城區北帝街29-35號八景樓" + }, + { + "building": "Downtown38", + "address": "九龍九龍城區北帝街" + }, + { + "building": "富民閣", + "address": "九龍九龍城區北帝街39號富民閣" + }, + { + "building": "安順大廈", + "address": "九龍九龍城區北帝街47 -57號安順大廈" + }, + { + "building": "東裕大廈", + "address": "九龍九龍城區北帝街59-63號東裕大廈" + }, + { + "building": "東寶大樓", + "address": "九龍九龍城區北帝街60-62號東寶大樓" + }, + { + "building": "東海大樓", + "address": "九龍九龍城區北帝街64-66號東海大樓" + }, + { + "building": "勝裕閣", + "address": "九龍九龍城區北帝街73號勝裕閣" + }, + { + "building": "永德大廈", + "address": "九龍九龍城區北帝街75-83號永德大廈" + }, + { + "building": "合成大廈", + "address": "九龍九龍城區北帝街97-99號合成大廈" + }, + { + "building": "得運大廈", + "address": "九龍九龍城區北拱街12-16號得運大廈" + }, + { + "building": "崇富洋樓", + "address": "九龍九龍城區北拱街22-32號崇富洋樓" + }, + { + "building": "薈點", + "address": "九龍九龍城區北拱街8號薈點" + }, + { + "building": "富甲半山", + "address": "九龍九龍城區半山徑" + }, + { + "building": "雁賓大廈", + "address": "九龍九龍城區四川街2-6號雁賓大廈" + }, + { + "building": "鴻英大廈", + "address": "九龍九龍城區四川街8-12號鴻英大廈" + }, + { + "building": "嘉多利山花園", + "address": "九龍九龍城區布力架街34B-34C號嘉多利山花園" + }, + { + "building": "福年新樓", + "address": "九龍九龍城區必嘉圍7-21號福年新樓" + }, + { + "building": "御悅", + "address": "九龍九龍城區必嘉圍8號御悅" + }, + { + "building": "紅磡灣中心喜樂大廈 H座", + "address": "九龍九龍城區必嘉街" + }, + { + "building": "嘉麗閣", + "address": "九龍九龍城區必嘉街18號嘉麗閣" + }, + { + "building": "龍華大廈", + "address": "九龍九龍城區必嘉街34-42B號龍華大廈" + }, + { + "building": "嘉景軒", + "address": "九龍九龍城區必嘉街43號嘉景軒" + }, + { + "building": "東海雅園", + "address": "九龍九龍城區必嘉街60-66號東海雅園" + }, + { + "building": "黃埔唐樓C座", + "address": "九龍九龍城區必嘉街99號黃埔唐樓C座" + }, + { + "building": "同豐樓", + "address": "九龍九龍城區打鼓嶺道" + }, + { + "building": "衙前圍大樓", + "address": "九龍九龍城區打鼓嶺道20號衙前圍大樓" + }, + { + "building": "聯發大樓", + "address": "九龍九龍城區打鼓嶺道26-28號聯發大樓" + }, + { + "building": "達德樓", + "address": "九龍九龍城區打鼓嶺道32-34A號達德樓" + }, + { + "building": "順景樓", + "address": "九龍九龍城區打鼓嶺道33-35號順景樓" + }, + { + "building": "百好樓", + "address": "九龍九龍城區打鼓嶺道37號百好樓" + }, + { + "building": "福星樓", + "address": "九龍九龍城區打鼓嶺道51號福星樓" + }, + { + "building": "輝美樓", + "address": "九龍九龍城區打鼓嶺道64-66號輝美樓" + }, + { + "building": "豐榮樓", + "address": "九龍九龍城區打鼓嶺道69號豐榮樓" + }, + { + "building": "崑崙閣", + "address": "九龍九龍城區打鼓嶺道73號崑崙閣" + }, + { + "building": "日康閣", + "address": "九龍九龍城區打鼓嶺道85號日康閣" + }, + { + "building": "興業工商大廈", + "address": "九龍九龍城區民裕街30號興業工商大廈" + }, + { + "building": "榮業大廈", + "address": "九龍九龍城區民裕街36號榮業大廈" + }, + { + "building": "富高工業中心", + "address": "九龍九龍城區民樂街21號富高工業中心" + }, + { + "building": "駿昇中心", + "address": "九龍九龍城區民樂街23號駿昇中心" + }, + { + "building": "毅廬", + "address": "九龍九龍城區石鼓街2號毅廬" + }, + { + "building": "寶城大樓", + "address": "九龍九龍城區石鼓壟道21-25號寶城大樓" + }, + { + "building": "友群大廈", + "address": "九龍九龍城區合一道" + }, + { + "building": "映月臺", + "address": "九龍九龍城區安域道2號映月臺" + }, + { + "building": "天樂園", + "address": "九龍九龍城區安域道3號天樂園" + }, + { + "building": "嘉信大廈", + "address": "九龍九龍城區安徽街1-7號嘉信大廈" + }, + { + "building": "集安樓", + "address": "九龍九龍城區安徽街2號集安樓" + }, + { + "building": "志聯昌工業大樓", + "address": "九龍九龍城區旭日街11號志聯昌工業大樓" + }, + { + "building": "順煒工業大廈", + "address": "九龍九龍城區旭日街15號順煒工業大廈" + }, + { + "building": "泰捷工業大廈", + "address": "九龍九龍城區旭日街17號泰捷工業大廈" + }, + { + "building": "雅高工業大樓", + "address": "九龍九龍城區旭日街19號雅高工業大樓" + }, + { + "building": "福成工業大廈", + "address": "九龍九龍城區旭日街1A號福成工業大廈" + }, + { + "building": "瑞英工業大廈", + "address": "九龍九龍城區旭日街1號瑞英工業大廈" + }, + { + "building": "聯合報大廈", + "address": "九龍九龍城區旭日街21號聯合報大廈" + }, + { + "building": "卓悅集團中心", + "address": "九龍九龍城區旭日街3號卓悅集團中心" + }, + { + "building": "福家大廈", + "address": "九龍九龍城區曲街12號福家大廈" + }, + { + "building": "厚誠大廈", + "address": "九龍九龍城區曲街13-15號厚誠大廈" + }, + { + "building": "興發大廈", + "address": "九龍九龍城區曲街2C-2E號興發大廈" + }, + { + "building": "獲利家大廈", + "address": "九龍九龍城區曲街4-6B號獲利家大廈" + }, + { + "building": "高山大廈", + "address": "九龍九龍城區江蘇街1-3號高山大廈" + }, + { + "building": "嘉樂閣", + "address": "九龍九龍城區江蘇街7-9號嘉樂閣" + }, + { + "building": "美江", + "address": "九龍九龍城區江蘇街8-10號美江" + }, + { + "building": "鴻運大廈", + "address": "九龍九龍城區老龍坑街2A-2B號鴻運大廈" + }, + { + "building": "華麗大廈", + "address": "九龍九龍城區老龍坑街2號華麗大廈" + }, + { + "building": "榮德樓", + "address": "九龍九龍城區老龍坑街4號榮德樓" + }, + { + "building": "興利大廈", + "address": "九龍九龍城區老龍坑街8-12號興利大廈" + }, + { + "building": "伯爵園A-B座", + "address": "九龍九龍城區伯爵街1-5號伯爵園" + }, + { + "building": "耀爵臺", + "address": "九龍九龍城區伯爵街2A號耀爵臺" + }, + { + "building": "仁禮花園", + "address": "九龍九龍城區何文田山道11-15A號" + }, + { + "building": "加林閣", + "address": "九龍九龍城區何文田山道12號" + }, + { + "building": "灝畋峰", + "address": "九龍九龍城區何文田山道15號灝畋峰" + }, + { + "building": "金百利大廈", + "address": "九龍九龍城區何文田山道17號金百利大廈" + }, + { + "building": "賀龍居", + "address": "九龍九龍城區何文田山道19號賀龍居" + }, + { + "building": "大夫第B座", + "address": "九龍九龍城區何文田山道21號大夫第B座" + }, + { + "building": "永安台", + "address": "九龍九龍城區何文田山道24號永安台" + }, + { + "building": "嘉輝臺", + "address": "九龍九龍城區何文田山道26號嘉輝臺" + }, + { + "building": "天次樓", + "address": "九龍九龍城區何文田山道2號天次樓" + }, + { + "building": "龍柏花園", + "address": "九龍九龍城區何文田山道3號龍柏花園" + }, + { + "building": "春曉園", + "address": "九龍九龍城區何文田山道4號春曉園" + }, + { + "building": "文豪閣", + "address": "九龍九龍城區何文田山道5號文豪閣" + }, + { + "building": "文田閣", + "address": "九龍九龍城區何文田山道6號文田閣" + }, + { + "building": "俊慧園", + "address": "九龍九龍城區何文田山道7號俊慧園" + }, + { + "building": "康園", + "address": "九龍九龍城區何文田街" + }, + { + "building": "麗思閣", + "address": "九龍九龍城區何文田街10-12號麗思閣" + }, + { + "building": "文雅閣", + "address": "九龍九龍城區何文田街14-16號文雅閣" + }, + { + "building": "文安大廈", + "address": "九龍九龍城區何文田街18-20號文安大廈" + }, + { + "building": "何文田大廈", + "address": "九龍九龍城區何文田街19-21C號何文田大廈" + }, + { + "building": "名人花園", + "address": "九龍九龍城區何文田街1號名人花園" + }, + { + "building": "嘉景花園大廈", + "address": "九龍九龍城區何文田街23-27號嘉景花園大廈" + }, + { + "building": "文廷", + "address": "九龍九龍城區何文田街26-28號文廷" + }, + { + "building": "瑞麟閣", + "address": "九龍九龍城區何文田街30-32號瑞麟閣" + }, + { + "building": "文翠閣", + "address": "九龍九龍城區何文田街34-36號文翠閣" + }, + { + "building": "文裕閣", + "address": "九龍九龍城區何文田街38-40號文裕閣" + }, + { + "building": "文采閣", + "address": "九龍九龍城區何文田街42-50號文采閣" + }, + { + "building": "浩文苑", + "address": "九龍九龍城區何文田街52-56號浩文苑" + }, + { + "building": "文寶閣", + "address": "九龍九龍城區何文田街60號文寶閣" + }, + { + "building": "忠誠苑", + "address": "九龍九龍城區何文田街62-64號忠誠苑" + }, + { + "building": "文園", + "address": "九龍九龍城區何文田街6號文園" + }, + { + "building": "好收成貨運中心", + "address": "九龍九龍城區宋皇台道70-78號好收成貨運中心" + }, + { + "building": "福桃樓", + "address": "九龍九龍城區宋皇台道8-12號福桃樓" + }, + { + "building": "傲雲峰", + "address": "九龍九龍城區宋皇臺道38號" + }, + { + "building": "碧麗花園", + "address": "九龍九龍城區庇利街23號碧麗花園" + }, + { + "building": "Oasis Kai Tak", + "address": "九龍九龍城區沐寧街" + }, + { + "building": "啟德一號 一期", + "address": "九龍九龍城區沐寧街2號" + }, + { + "building": "嘉匯", + "address": "九龍九龍城區沐寧街7號" + }, + { + "building": "啟德一號 二期", + "address": "九龍九龍城區沐寧街8號" + }, + { + "building": "龍譽", + "address": "九龍九龍城區沐寧街9號" + }, + { + "building": "煥然壹居", + "address": "九龍九龍城區沐翠街 3號" + }, + { + "building": "煥然壹居", + "address": "九龍九龍城區沐翠街3號" + }, + { + "building": "錦輝商業大廈", + "address": "九龍九龍城區沙浦道31-35號錦輝商業大廈" + }, + { + "building": "啟城軒", + "address": "九龍九龍城區沙浦道51-53號啟城軒" + }, + { + "building": "永德園", + "address": "九龍九龍城區秀竹園道10號永德園" + }, + { + "building": "鳳華閣", + "address": "九龍九龍城區秀竹園道11-13號鳳華閣" + }, + { + "building": "秀麗園A & C座", + "address": "九龍九龍城區秀竹園道12號秀麗園A & C座" + }, + { + "building": "秀竹苑", + "address": "九龍九龍城區秀竹園道17-19號秀竹苑" + }, + { + "building": "雅園大廈", + "address": "九龍九龍城區秀竹園道5-5A號雅園大廈" + }, + { + "building": "廣梅大廈", + "address": "九龍九龍城區秀竹園道7-9號廣梅大廈" + }, + { + "building": "皆寧大廈", + "address": "九龍九龍城區亞皆老街100號皆寧大廈" + }, + { + "building": "皆興大廈", + "address": "九龍九龍城區亞皆老街112-112A號皆興大廈" + }, + { + "building": "嘉麗園", + "address": "九龍九龍城區亞皆老街117-121號嘉麗園" + }, + { + "building": "利寶大廈", + "address": "九龍九龍城區亞皆老街118-120B號利寶大廈" + }, + { + "building": "旺角大廈", + "address": "九龍九龍城區亞皆老街122-122A號旺角大廈" + }, + { + "building": "翠華大廈", + "address": "九龍九龍城區亞皆老街138-140號翠華大廈" + }, + { + "building": "露明花園大廈", + "address": "九龍九龍城區亞皆老街149號露明花園大廈" + }, + { + "building": "明明閣", + "address": "九龍九龍城區亞皆老街151號明明閣" + }, + { + "building": "陶園大廈", + "address": "九龍九龍城區亞皆老街153號陶園大廈" + }, + { + "building": "寶雲閣", + "address": "九龍九龍城區亞皆老街154-164號" + }, + { + "building": "嘉豪軒", + "address": "九龍九龍城區亞皆老街155號嘉豪軒" + }, + { + "building": "玉華大廈", + "address": "九龍九龍城區亞皆老街159-161號" + }, + { + "building": "康麗花園", + "address": "九龍九龍城區亞皆老街165號康麗花園" + }, + { + "building": "碧佳閣", + "address": "九龍九龍城區亞皆老街169-171號碧佳閣" + }, + { + "building": "芝蘭苑A-B座", + "address": "九龍九龍城區亞皆老街173號芝蘭苑A-B座" + }, + { + "building": "雅麗居", + "address": "九龍九龍城區亞皆老街180號雅麗居" + }, + { + "building": "雅士花園", + "address": "九龍九龍城區亞皆老街198號雅士花園" + }, + { + "building": "嘉登大廈", + "address": "九龍九龍城區亞皆老街210號嘉登大廈" + }, + { + "building": "恒時大廈", + "address": "九龍九龍城區亞皆老街212-216號恒時大廈" + }, + { + "building": "豪華閣", + "address": "九龍九龍城區亞皆老街218-220號豪華閣" + }, + { + "building": "寶華閣", + "address": "九龍九龍城區亞皆老街224號寶華閣" + }, + { + "building": "皆富閣", + "address": "九龍九龍城區亞皆老街226-232號皆富閣" + }, + { + "building": "禮苑", + "address": "九龍九龍城區亞皆老街234號禮苑" + }, + { + "building": "嘉福苑", + "address": "九龍九龍城區亞皆老街242號嘉福苑" + }, + { + "building": "聖露園", + "address": "九龍九龍城區亞皆老街250號聖露園" + }, + { + "building": "富都大廈", + "address": "九龍九龍城區亞皆老街98號富都大廈" + }, + { + "building": "和域臺", + "address": "九龍九龍城區和域道5號和域臺" + }, + { + "building": "賢文別墅", + "address": "九龍九龍城區延文禮士道22號賢文別墅" + }, + { + "building": "文華閣", + "address": "九龍九龍城區延文禮士道30號文華閣" + }, + { + "building": "俊民苑", + "address": "九龍九龍城區忠孝街66號俊民苑" + }, + { + "building": "御龍居", + "address": "九龍九龍城區忠孝街83號御龍居" + }, + { + "building": "欣圖軒", + "address": "九龍九龍城區忠孝街93號欣圖軒" + }, + { + "building": "黃埔唐樓B座", + "address": "九龍九龍城區明安街15號黃埔唐樓B座" + }, + { + "building": "寶石戲院大廈", + "address": "九龍九龍城區明安街20號寶石戲院大廈" + }, + { + "building": "怡苑", + "address": "九龍九龍城區東寶庭道16, 18, 20 & 22號怡苑" + }, + { + "building": "雅利德樺臺", + "address": "九龍九龍城區牧愛街38號雅利德樺臺" + }, + { + "building": "大吉利", + "address": "九龍九龍城區金巴倫道45號大吉利" + }, + { + "building": "康寧花園", + "address": "九龍九龍城區長寧街35號康寧花園" + }, + { + "building": "美利大廈", + "address": "九龍九龍城區長寧街43-55號美利大廈" + }, + { + "building": "嶺南大廈", + "address": "九龍九龍城區長寧街7-9號嶺南大廈" + }, + { + "building": "紅磡花園", + "address": "九龍九龍城區青州街3號紅磡花園" + }, + { + "building": "匯賢閣", + "address": "九龍九龍城區侯王道17-25號匯賢閣" + }, + { + "building": "金‧御門", + "address": "九龍九龍城區侯王道28-30號金‧御門" + }, + { + "building": "時爵大廈", + "address": "九龍九龍城區侯王道57-59號時爵大廈" + }, + { + "building": "浩福閣", + "address": "九龍九龍城區侯王道61-63號浩福閣" + }, + { + "building": "聯安樓", + "address": "九龍九龍城區侯王道65-67號聯安樓" + }, + { + "building": "金利洋樓", + "address": "九龍九龍城區侯王道85-87號金利洋樓" + }, + { + "building": "首利大廈", + "address": "九龍九龍城區信用街" + }, + { + "building": "福星大廈", + "address": "九龍九龍城區信用街16-22號福星大廈" + }, + { + "building": "萬高大廈A座", + "address": "九龍九龍城區信用街2號萬高大廈A座" + }, + { + "building": "萬高大廈B座", + "address": "九龍九龍城區信用街2號萬高大廈B座" + }, + { + "building": "僑偉大廈", + "address": "九龍九龍城區信用街6號僑偉大廈" + }, + { + "building": "成業樓", + "address": "九龍九龍城區南角道17號成業樓" + }, + { + "building": "友隆樓", + "address": "九龍九龍城區南角道33號友隆樓" + }, + { + "building": "聯景閣", + "address": "九龍九龍城區南角道35-37號聯景閣" + }, + { + "building": "萬發樓", + "address": "九龍九龍城區南角道39-41號萬發樓" + }, + { + "building": "南成樓", + "address": "九龍九龍城區南角道9號南成樓" + }, + { + "building": "金慧閣", + "address": "九龍九龍城區城南道20 C號金慧閣" + }, + { + "building": "昌旺樓", + "address": "九龍九龍城區城南道24-28號昌旺樓" + }, + { + "building": "增福樓", + "address": "九龍九龍城區城南道2-6號增福樓" + }, + { + "building": "龍城大樓", + "address": "九龍九龍城區城南道33-37號龍城大樓" + }, + { + "building": "億豐樓", + "address": "九龍九龍城區城南道50號億豐樓" + }, + { + "building": "永榮樓", + "address": "九龍九龍城區城南道52號永榮樓" + }, + { + "building": "城輝大廈", + "address": "九龍九龍城區城南道54-58號城輝大廈" + }, + { + "building": "崇正樓", + "address": "九龍九龍城區城南道5號崇正樓" + }, + { + "building": "卓寶樓", + "address": "九龍九龍城區城南道76-78號卓寶樓" + }, + { + "building": "金成大廈", + "address": "九龍九龍城區炮仗街146-150號金成大廈" + }, + { + "building": "寶峰大廈", + "address": "九龍九龍城區炮仗街152號寶峰大廈" + }, + { + "building": "興基豪園", + "address": "九龍九龍城區炮仗街178號興基豪園" + }, + { + "building": "富逸軒", + "address": "九龍九龍城區炮仗街22號富逸軒" + }, + { + "building": "成業樓", + "address": "九龍九龍城區炮仗街34-36號成業樓" + }, + { + "building": "美雅洋樓", + "address": "九龍九龍城區炮仗街38-44號美雅洋樓" + }, + { + "building": "明月大廈", + "address": "九龍九龍城區炮仗街47-51號明月大廈" + }, + { + "building": "嘉威閣", + "address": "九龍九龍城區炮仗街50-52號嘉威閣" + }, + { + "building": "金寶大廈", + "address": "九龍九龍城區炮仗街68-80號金寶大廈" + }, + { + "building": "嘉景花園", + "address": "九龍九龍城區炮仗街71號嘉景花園" + }, + { + "building": "九龍塘大廈", + "address": "九龍九龍城區界限街110-112號九龍塘大廈" + }, + { + "building": "崇明大廈", + "address": "九龍九龍城區界限街114-116號崇明大廈" + }, + { + "building": "春秋閣", + "address": "九龍九龍城區界限街118-120號春秋閣" + }, + { + "building": "皇冠閣", + "address": "九龍九龍城區界限街122-124號皇冠閣" + }, + { + "building": "根德閣", + "address": "九龍九龍城區界限街131-139號根德閣" + }, + { + "building": "團圓閣", + "address": "九龍九龍城區界限街150號團圓閣" + }, + { + "building": "福運花園", + "address": "九龍九龍城區界限街152號福運花園" + }, + { + "building": "昌邦閣", + "address": "九龍九龍城區界限街156-158號昌邦閣" + }, + { + "building": "文怡閣", + "address": "九龍九龍城區界限街161-163號文怡閣" + }, + { + "building": "瑞華樓", + "address": "九龍九龍城區界限街165號瑞華樓" + }, + { + "building": "翰林苑", + "address": "九龍九龍城區界限街167-169號翰林苑" + }, + { + "building": "辰龍閣", + "address": "九龍九龍城區界限街171號辰龍閣" + }, + { + "building": "昌蔚苑", + "address": "九龍九龍城區界限街175號昌蔚苑" + }, + { + "building": "新利大廈", + "address": "九龍九龍城區界限街177-177A號新利大廈" + }, + { + "building": "華興大廈", + "address": "九龍九龍城區界限街179號華興大廈" + }, + { + "building": "懿薈", + "address": "九龍九龍城區科發道2號懿薈" + }, + { + "building": "德光閣", + "address": "九龍九龍城區科發道3號德光閣" + }, + { + "building": "雅閣花園", + "address": "九龍九龍城區科發道8號雅閣花園" + }, + { + "building": "半島豪庭", + "address": "九龍九龍城區紅荔道8號半島豪庭" + }, + { + "building": "維港‧星岸", + "address": "九龍九龍城區紅鸞道" + }, + { + "building": " 維港‧星岸1座", + "address": "九龍九龍城區紅鸞道 7號" + }, + { + "building": "安和園第一期安和大廈", + "address": "九龍九龍城區美光街66號安和園第一期安和大廈" + }, + { + "building": "崇華閣", + "address": "九龍九龍城區美善同里17-19號崇華閣" + }, + { + "building": "美怡大廈", + "address": "九龍九龍城區美善同里8號美怡大廈" + }, + { + "building": "和善樓", + "address": "九龍九龍城區美善同里9-11號和善樓" + }, + { + "building": "美善同大廈", + "address": "九龍九龍城區美善同道" + }, + { + "building": "美麗苑", + "address": "九龍九龍城區美善同道" + }, + { + "building": "惠康", + "address": "九龍九龍城區美善同道102-104號惠康" + }, + { + "building": "幸福閣", + "address": "九龍九龍城區美善同道111-113號幸福閣" + }, + { + "building": "高望", + "address": "九龍九龍城區美善同道115-117號高望" + }, + { + "building": "善美閣", + "address": "九龍九龍城區美善同道123-125號善美閣" + }, + { + "building": "美嘉大廈", + "address": "九龍九龍城區美善同道1號美嘉大廈" + }, + { + "building": "美善大廈", + "address": "九龍九龍城區美善同道46號美善大廈" + }, + { + "building": "詠苑", + "address": "九龍九龍城區美善同道78-80號詠苑" + }, + { + "building": "家樂樓(美善同道)", + "address": "九龍九龍城區美善同道88-92號家樂樓(美善同道)" + }, + { + "building": "安樂樓 (美善同道)", + "address": "九龍九龍城區美善同道99-101號安樂樓 (美善同道)" + }, + { + "building": "美景樓第一期", + "address": "九龍九龍城區美景街2-28號美景樓第一期" + }, + { + "building": "安和園第二期安福大廈", + "address": "九龍九龍城區美景街36號安和園第二期安福大廈" + }, + { + "building": "安和園第二期安平大廈", + "address": "九龍九龍城區美景街39號安和園第二期安平大廈" + }, + { + "building": "安和園第二期安順大廈", + "address": "九龍九龍城區美景街54號安和園第二期安順大廈" + }, + { + "building": "安和園第二期安康大廈", + "address": "九龍九龍城區美景街55號安和園第二期安康大廈" + }, + { + "building": "安和園第二期安泰大廈", + "address": "九龍九龍城區美景街68號安和園第二期安泰大廈" + }, + { + "building": "偉恆昌新?", + "address": "九龍九龍城區美景街79-113號" + }, + { + "building": "安和園第二期安隆大廈", + "address": "九龍九龍城區美景街86號安和園第二期安隆大廈" + }, + { + "building": "偉恒昌新?第二期恒景閣", + "address": "九龍九龍城區美景街92-132號偉恒昌新?第二期恒景閣" + }, + { + "building": "光輝園", + "address": "九龍九龍城區范信達道1號" + }, + { + "building": "雅芳園", + "address": "九龍九龍城區范信達道2號雅芳園" + }, + { + "building": "雅芳園(E-H) 座", + "address": "九龍九龍城區范信達道2號雅芳園(E-H) 座" + }, + { + "building": "信達閣", + "address": "九龍九龍城區范信達道3號信達閣" + }, + { + "building": "真能閣", + "address": "九龍九龍城區范信達道4-6號真能閣" + }, + { + "building": "碧麗閣", + "address": "九龍九龍城區范信達道9-11號碧麗閣" + }, + { + "building": "君逸山", + "address": "九龍九龍城區迦密村街9號君逸山" + }, + { + "building": "聚賢大廈", + "address": "九龍九龍城區差館里17號聚賢大廈" + }, + { + "building": "富業大廈", + "address": "九龍九龍城區差館里21-27號富業大廈" + }, + { + "building": "北角中心大廈", + "address": "九龍九龍城區差館里31-35號" + }, + { + "building": "金安大廈", + "address": "九龍九龍城區差館里3-5號金安大廈" + }, + { + "building": "德安樓", + "address": "九龍九龍城區差館里67-69號德安樓" + }, + { + "building": "威利樓", + "address": "九龍九龍城區差館里71-73號威利樓" + }, + { + "building": "樂都大廈", + "address": "九龍九龍城區差館里75號樂都大廈" + }, + { + "building": "協輝大廈", + "address": "九龍九龍城區差館里9號協輝大廈" + }, + { + "building": "勝豐園", + "address": "九龍九龍城區書院道1號勝豐園" + }, + { + "building": "樂苑", + "address": "九龍九龍城區書院道24號樂苑" + }, + { + "building": "偉益大廈", + "address": "九龍九龍城區書院道2A-2B號偉益大廈" + }, + { + "building": "昌麗閣", + "address": "九龍九龍城區書院道2號昌麗閣" + }, + { + "building": "博文閣", + "address": "九龍九龍城區書院道5-7號博文閣" + }, + { + "building": "蟠龍閣", + "address": "九龍九龍城區朗德道15-21號蟠龍閣A座" + }, + { + "building": "麗景樓", + "address": "九龍九龍城區朗德道5-11號麗景樓" + }, + { + "building": "文英樓", + "address": "九龍九龍城區根德道3號文英樓" + }, + { + "building": "利.港灣18", + "address": "九龍九龍城區浙江街16-18號利.港灣18" + }, + { + "building": "旭日豪庭", + "address": "九龍九龍城區浙江街19-23號旭日豪庭" + }, + { + "building": "文信工業大廈", + "address": "九龍九龍城區浙江街20號文信工業大廈" + }, + { + "building": "同順興大廈", + "address": "九龍九龍城區浙江街22號同順興大廈" + }, + { + "building": "寶德大廈", + "address": "九龍九龍城區浙江街25-27號龍德,寶德大廈" + }, + { + "building": "宏豐大廈", + "address": "九龍九龍城區浙江街31-33號宏豐大廈" + }, + { + "building": "合誠商業大廈", + "address": "九龍九龍城區浙江街41-43號合誠商業大廈" + }, + { + "building": "明發大廈", + "address": "九龍九龍城區浙江街46-50A號明發大廈" + }, + { + "building": "廣廈", + "address": "九龍九龍城區浙江街52-52A, 54-54A, 56-56A, 58-58A號廣廈" + }, + { + "building": "海逸豪園第1期海逸豪園", + "address": "九龍九龍城區海逸道8號海逸豪園第1期海逸豪園" + }, + { + "building": "海逸豪園漁人碼頭", + "address": "九龍九龍城區海逸道8號海逸豪園漁人碼頭" + }, + { + "building": "祐滿樓", + "address": "九龍九龍城區祐滿街15-25號祐滿樓" + }, + { + "building": "康樂閣", + "address": "九龍九龍城區馬可尼道1號康樂閣" + }, + { + "building": "碧滿閣1座", + "address": "九龍九龍城區馬可尼道3號碧滿閣1座" + }, + { + "building": "康泰閣", + "address": "九龍九龍城區馬可尼道5號康泰閣" + }, + { + "building": "百美花園", + "address": "九龍九龍城區馬可尼道6號百美花園" + }, + { + "building": "碧麗閣", + "address": "九龍九龍城區馬可尼道8-10號碧麗閣" + }, + { + "building": "駿豪居", + "address": "九龍九龍城區馬坑涌道1號駿豪居" + }, + { + "building": "寶光大樓", + "address": "九龍九龍城區馬坑涌道2C號寶光大樓" + }, + { + "building": "馬坑涌道3號", + "address": "九龍九龍城區馬坑涌道3號" + }, + { + "building": "中華大廈", + "address": "九龍九龍城區馬坑涌道5號中華大廈" + }, + { + "building": "新寶工商中心第一期及第二期", + "address": "九龍九龍城區馬頭角道116-118號新寶工商中心第一期及第二期" + }, + { + "building": "金都豪苑", + "address": "九龍九龍城區馬頭角道28號金都豪苑" + }, + { + "building": "欣榮花園", + "address": "九龍九龍城區馬頭角道33號欣榮花園" + }, + { + "building": "東南工廠大廈", + "address": "九龍九龍城區馬頭角道40號東南工廠大廈" + }, + { + "building": "宏達閣", + "address": "九龍九龍城區馬頭角道4-4A號宏達閣" + }, + { + "building": "安寧大廈", + "address": "九龍九龍城區馬頭角道47-55號安寧大廈" + }, + { + "building": "順昌大廈", + "address": "九龍九龍城區馬頭角道57-59號順昌大廈" + }, + { + "building": "天虹樓", + "address": "九龍九龍城區馬頭角道NOS.35-45號天虹樓" + }, + { + "building": "福安大廈", + "address": "九龍九龍城區馬頭涌道" + }, + { + "building": "錦華大廈", + "address": "九龍九龍城區馬頭涌道111-127號錦華大廈" + }, + { + "building": "仁安大廈", + "address": "九龍九龍城區馬頭涌道28-30號仁安大廈" + }, + { + "building": "僑榮大廈", + "address": "九龍九龍城區馬頭涌道32-40號僑榮大廈" + }, + { + "building": "雅樂居", + "address": "九龍九龍城區馬頭涌道59-61號雅樂居" + }, + { + "building": "美聯閣(馬頭涌道93-103)", + "address": "九龍九龍城區馬頭涌道63-65號美聯閣(馬頭涌道93-103)" + }, + { + "building": "美聯閣(馬頭涌道67-69)", + "address": "九龍九龍城區馬頭涌道67-69號美聯閣(馬頭涌道67-69)" + }, + { + "building": "中南大廈", + "address": "九龍九龍城區馬頭涌道68-88號" + }, + { + "building": "博愛樓", + "address": "九龍九龍城區馬頭涌道75-77號博愛樓" + }, + { + "building": "美誠大廈美誠大廈", + "address": "九龍九龍城區馬頭涌道93-103號美誠大廈美誠大廈" + }, + { + "building": "紅磡商業中心", + "address": "九龍九龍城區馬頭圍道" + }, + { + "building": "金通商業大廈", + "address": "九龍九龍城區馬頭圍道100號金通商業大廈" + }, + { + "building": "新華大樓", + "address": "九龍九龍城區馬頭圍道103,103A,105號新華大樓" + }, + { + "building": "富恆閣", + "address": "九龍九龍城區馬頭圍道108號富恆閣" + }, + { + "building": "置富商業大廈", + "address": "九龍九龍城區馬頭圍道116-118號置富商業大廈" + }, + { + "building": "天富大廈", + "address": "九龍九龍城區馬頭圍道156-162號天富大廈" + }, + { + "building": "晨曦樓", + "address": "九龍九龍城區馬頭圍道182-186號晨曦樓" + }, + { + "building": "傲形", + "address": "九龍九龍城區馬頭圍道200號傲形" + }, + { + "building": "海悅豪庭第2座", + "address": "九龍九龍城區馬頭圍道209號海悅豪庭第2座" + }, + { + "building": "義達工業大廈", + "address": "九龍九龍城區馬頭圍道21號義達工業大廈" + }, + { + "building": "隆基大樓", + "address": "九龍九龍城區馬頭圍道23-35號隆基大樓" + }, + { + "building": "生昌大廈", + "address": "九龍九龍城區馬頭圍道276-276A號生昌大廈" + }, + { + "building": "安全大廈", + "address": "九龍九龍城區馬頭圍道278-280號安全大廈" + }, + { + "building": "柏堅大廈", + "address": "九龍九龍城區馬頭圍道288號柏堅大廈" + }, + { + "building": "巧興大廈", + "address": "九龍九龍城區馬頭圍道290號巧興大廈" + }, + { + "building": "華安閣", + "address": "九龍九龍城區馬頭圍道292號華安閣" + }, + { + "building": "七喜大廈", + "address": "九龍九龍城區馬頭圍道294-312號七喜大廈" + }, + { + "building": "寶馬閣", + "address": "九龍九龍城區馬頭圍道314-318號寶馬閣" + }, + { + "building": "光耀大樓", + "address": "九龍九龍城區馬頭圍道320-322號光耀大樓" + }, + { + "building": "美樂大廈", + "address": "九龍九龍城區馬頭圍道322A-322C號美樂大廈" + }, + { + "building": "晶明大廈", + "address": "九龍九龍城區馬頭圍道356號晶明大廈" + }, + { + "building": "好運樓", + "address": "九龍九龍城區馬頭圍道360號好運樓" + }, + { + "building": "海潤大廈", + "address": "九龍九龍城區馬頭圍道372號海潤大廈" + }, + { + "building": "樂意居", + "address": "九龍九龍城區馬頭圍道418號樂意居" + }, + { + "building": "金時閣", + "address": "九龍九龍城區馬頭圍道422號金時閣" + }, + { + "building": "美善閣", + "address": "九龍九龍城區馬頭圍道428號美善閣" + }, + { + "building": "金華樓", + "address": "九龍九龍城區馬頭圍道436號金華樓" + }, + { + "building": "德信大廈", + "address": "九龍九龍城區馬頭圍道442-448號德信大廈" + }, + { + "building": "悅輝大廈", + "address": "九龍九龍城區馬頭圍道450號悅輝大廈" + }, + { + "building": "VIVA", + "address": "九龍九龍城區馬頭圍道77-87號VIVA" + }, + { + "building": "嘉朗豪庭", + "address": "九龍九龍城區馬頭圍道80號嘉朗豪庭" + }, + { + "building": "海青閣", + "address": "九龍九龍城區馬頭圍道88號海青閣" + }, + { + "building": "福星大廈", + "address": "九龍九龍城區馬頭圍道89-93A號福星大廈" + }, + { + "building": "得利閣", + "address": "九龍九龍城區高山道10-16號得利閣" + }, + { + "building": "龍華閣", + "address": "九龍九龍城區高山道28-30號龍華閣" + }, + { + "building": "利高大廈", + "address": "九龍九龍城區高山道2-8號利高大廈" + }, + { + "building": "富怡閣", + "address": "九龍九龍城區高山道72-88號富怡閣" + }, + { + "building": "恆山閣", + "address": "九龍九龍城區高山道9號恆山閣" + }, + { + "building": "旺德大廈", + "address": "九龍九龍城區啟明街11-19號旺德大廈" + }, + { + "building": "啟明大樓", + "address": "九龍九龍城區啟明街16-18號啟明大樓" + }, + { + "building": "忠興樓", + "address": "九龍九龍城區啟德道43,43A,45號忠興樓" + }, + { + "building": "樹珍樓", + "address": "九龍九龍城區啟德道50-52號樹珍樓" + }, + { + "building": "德豐樓", + "address": "九龍九龍城區啟德道61-63號德豐樓" + }, + { + "building": "垣天大廈", + "address": "九龍九龍城區啟德道62-68號垣天大廈" + }, + { + "building": "富德中心", + "address": "九龍九龍城區崇平街2號富德中心" + }, + { + "building": "陽光廣場", + "address": "九龍九龍城區崇安街17號陽光廣場" + }, + { + "building": "半島廣場", + "address": "九龍九龍城區崇安街18號半島廣場" + }, + { + "building": "福運大廈", + "address": "九龍九龍城區崇志街32-36號福運大廈" + }, + { + "building": "崇字大廈", + "address": "九龍九龍城區崇潔街" + }, + { + "building": "常康園E-H座", + "address": "九龍九龍城區常康街1號常康園E-H座" + }, + { + "building": "皓畋", + "address": "九龍九龍城區常盛街28號皓畋" + }, + { + "building": "雅緻閣", + "address": "九龍九龍城區常盛街59-61號雅緻閣" + }, + { + "building": "集德苑", + "address": "九龍九龍城區常盛街63-65號集德苑" + }, + { + "building": "日麗園", + "address": "九龍九龍城區常盛街67號日麗園" + }, + { + "building": "半山壹號壹號名薈", + "address": "九龍九龍城區常盛街80號半山壹號壹號名薈" + }, + { + "building": "冠暉苑", + "address": "九龍九龍城區常樂街1號" + }, + { + "building": "冠熹苑", + "address": "九龍九龍城區常樂街3號冠熹苑" + }, + { + "building": "典雅大廈", + "address": "九龍九龍城區梭椏道15-15A號典雅大廈" + }, + { + "building": "仁儀苑", + "address": "九龍九龍城區梭椏道29-33號仁儀苑" + }, + { + "building": "畢架山一號第一座", + "address": "九龍九龍城區畢架山道1號畢架山一號第一座" + }, + { + "building": "盛德大廈", + "address": "九龍九龍城區盛德街12-14號盛德大廈" + }, + { + "building": "三達苑", + "address": "九龍九龍城區盛德街20-26號三達苑" + }, + { + "building": "黃埔花園", + "address": "九龍九龍城區船景街" + }, + { + "building": "德裕閣", + "address": "九龍九龍城區船塢街4-6號德裕閣" + }, + { + "building": "保基大廈", + "address": "九龍九龍城區船澳街2-2B號保基大廈" + }, + { + "building": "建豐閣", + "address": "九龍九龍城區勝利道11-13號建豐閣" + }, + { + "building": "慧宜閣", + "address": "九龍九龍城區勝利道12號慧宜閣" + }, + { + "building": "康強大廈", + "address": "九龍九龍城區勝利道14-14A號康強大廈" + }, + { + "building": "勝利大樓", + "address": "九龍九龍城區勝利道14F-14G號勝利大樓" + }, + { + "building": "金碧大廈", + "address": "九龍九龍城區勝利道16號金碧大廈" + }, + { + "building": "僑華樓", + "address": "九龍九龍城區勝利道22-24號僑華樓" + }, + { + "building": "新勝大樓", + "address": "九龍九龍城區勝利道28-36號新勝大樓" + }, + { + "building": "域多利大廈", + "address": "九龍九龍城區勝利道7,7A-G號域多利大廈" + }, + { + "building": "凱旋居", + "address": "九龍九龍城區勝利道9號凱旋居" + }, + { + "building": "碧華花園", + "address": "九龍九龍城區喇沙利道" + }, + { + "building": "喇沙樓", + "address": "九龍九龍城區喇沙利道11A, 11B & 11C號喇沙樓" + }, + { + "building": "愛賓花園第3座", + "address": "九龍九龍城區喇沙利道17-21號愛賓花園第3座" + }, + { + "building": "怡園", + "address": "九龍九龍城區喇沙利道21A號怡園" + }, + { + "building": "碧苑", + "address": "九龍九龍城區喇沙利道27號碧苑" + }, + { + "building": "麗珊園", + "address": "九龍九龍城區喇沙利道51-53號麗珊園" + }, + { + "building": "蘭馥園", + "address": "九龍九龍城區喇沙利道54-72號蘭馥園" + }, + { + "building": "嘉麗華大廈", + "address": "九龍九龍城區喇沙利道7號嘉麗華大廈" + }, + { + "building": "傲名", + "address": "九龍九龍城區喇沙利道8號傲名" + }, + { + "building": "騰龍閣", + "address": "九龍九龍城區棗利雅道1號騰龍閣" + }, + { + "building": "聯成大廈", + "address": "九龍九龍城區湖光街" + }, + { + "building": "聯成大廈", + "address": "九龍九龍城區湖光街1-7號" + }, + { + "building": "龍景樓", + "address": "九龍九龍城區筆架山道55號龍景樓" + }, + { + "building": "龍翔別墅", + "address": "九龍九龍城區筆架山道57號龍翔別墅" + }, + { + "building": "碧華閣", + "address": "九龍九龍城區筆架山道67號碧華閣" + }, + { + "building": "安和園第一期安慶大廈", + "address": "九龍九龍城區貴州街4J-4P號安和園,第一期安慶大廈" + }, + { + "building": "安和園第一期安寧大廈", + "address": "九龍九龍城區貴州街4K -4P號安和園第一期安寧大廈" + }, + { + "building": "安和園第一期安昌大廈", + "address": "九龍九龍城區貴州街4K-4P號安和園第一期安昌大廈" + }, + { + "building": "東方報業大廈", + "address": "九龍九龍城區貴州街6號東方報業大廈" + }, + { + "building": "海濱南岸", + "address": "九龍九龍城區愛景街8號海濱南岸" + }, + { + "building": "美寧臺", + "address": "九龍九龍城區敬德街1-3號美寧臺" + }, + { + "building": "敬德台", + "address": "九龍九龍城區敬德街4號敬德台" + }, + { + "building": "雲華臺", + "address": "九龍九龍城區敬德街5-7號雲華臺" + }, + { + "building": "嘉苑", + "address": "九龍九龍城區敬德街9號嘉苑" + }, + { + "building": "立基大廈", + "address": "九龍九龍城區新山道29B號立基大廈" + }, + { + "building": "新山道3號", + "address": "九龍九龍城區新山道3號" + }, + { + "building": "新山道6號", + "address": "九龍九龍城區新山道6號" + }, + { + "building": "裕錦樓", + "address": "九龍九龍城區新柳街18號裕錦樓" + }, + { + "building": "榮林大廈", + "address": "九龍九龍城區新柳街1A-1D號榮林大廈" + }, + { + "building": "富輝樓", + "address": "九龍九龍城區新柳街20-22號富輝樓" + }, + { + "building": "昌盛金舖大樓", + "address": "九龍九龍城區新柳街5-7號昌盛金舖大樓" + }, + { + "building": "豐富大廈", + "address": "九龍九龍城區新圍街15-19號豐富大廈" + }, + { + "building": "仁利大廈", + "address": "九龍九龍城區新圍街21-23號仁利大廈" + }, + { + "building": "幸福大廈", + "address": "九龍九龍城區新碼頭街3-5號幸福大廈" + }, + { + "building": "翔龍灣", + "address": "九龍九龍城區新碼頭街38號" + }, + { + "building": "裕景閣", + "address": "九龍九龍城區溫思勞街61號裕景閣" + }, + { + "building": "安泰大廈", + "address": "九龍九龍城區溫思勞街63-73號安泰大廈" + }, + { + "building": "新安樓", + "address": "九龍九龍城區獅子石道10-16號" + }, + { + "building": "新悅大樓", + "address": "九龍九龍城區獅子石道19-21號新悅大樓" + }, + { + "building": "德成樓", + "address": "九龍九龍城區獅子石道23-27號德成樓" + }, + { + "building": "福聯樓", + "address": "九龍九龍城區獅子石道40號福聯樓" + }, + { + "building": "安捷樓", + "address": "九龍九龍城區獅子石道53-55號安捷樓" + }, + { + "building": "新康大廈", + "address": "九龍九龍城區獅子石道57-59號新康大廈" + }, + { + "building": "龍邦樓", + "address": "九龍九龍城區獅子石道61-63號龍邦樓" + }, + { + "building": "百利樓", + "address": "九龍九龍城區獅子石道65號百利樓" + }, + { + "building": "金富樓", + "address": "九龍九龍城區獅子石道66-68號金富樓" + }, + { + "building": "創業樓", + "address": "九龍九龍城區獅子石道70號創業樓" + }, + { + "building": "泰豐樓", + "address": "九龍九龍城區獅子石道72-76號泰豐樓" + }, + { + "building": "嘉富樓", + "address": "九龍九龍城區獅子石道77-79號嘉富樓" + }, + { + "building": "恆勝樓", + "address": "九龍九龍城區獅子石道78-114號恆勝樓" + }, + { + "building": "光大樓", + "address": "九龍九龍城區獅子石道93號光大樓" + }, + { + "building": "龍園", + "address": "九龍九龍城區義本道12號龍園" + }, + { + "building": "晶苑", + "address": "九龍九龍城區義本道3號晶苑" + }, + { + "building": "愚園", + "address": "九龍九龍城區義本道4號愚園" + }, + { + "building": "雅景樓", + "address": "九龍九龍城區義本道5號雅景樓" + }, + { + "building": "龍圃別墅", + "address": "九龍九龍城區義本道6號龍圃別墅" + }, + { + "building": "涵碧別墅", + "address": "九龍九龍城區義本道8-10號涵碧別墅" + }, + { + "building": "霞明閣", + "address": "九龍九龍城區義本道9號霞明閣" + }, + { + "building": "義德臺", + "address": "九龍九龍城區義德道15號義德臺" + }, + { + "building": "獵苑", + "address": "九龍九龍城區義德道17號獵苑" + }, + { + "building": "翠竹園", + "address": "九龍九龍城區義德道6號翠竹園" + }, + { + "building": "蕙苑", + "address": "九龍九龍城區義德道8號蕙苑" + }, + { + "building": "僑裕及僑發大廈", + "address": "九龍九龍城區落山道" + }, + { + "building": "志昌工廠大廈", + "address": "九龍九龍城區落山道108號志昌工廠大廈" + }, + { + "building": "金和大廈", + "address": "九龍九龍城區落山道46-50號金和大廈" + }, + { + "building": "利成大廈", + "address": "九龍九龍城區落山道58-70號利成大廈" + }, + { + "building": "大龍樓", + "address": "九龍九龍城區落山道72-76號大龍樓" + }, + { + "building": "美景樓第二期", + "address": "九龍九龍城區落山道78號美景樓第二期" + }, + { + "building": "衙前小築", + "address": "九龍九龍城區衙前圍道" + }, + { + "building": "翠苑", + "address": "九龍九龍城區衙前圍道" + }, + { + "building": "億富樓", + "address": "九龍九龍城區衙前圍道110號億富樓" + }, + { + "building": "錦安軒", + "address": "九龍九龍城區衙前圍道128-130號錦安軒" + }, + { + "building": "福興樓", + "address": "九龍九龍城區衙前圍道132-134號福興樓" + }, + { + "building": "鴻運閣", + "address": "九龍九龍城區衙前圍道140號鴻運閣" + }, + { + "building": "錦利閣", + "address": "九龍九龍城區衙前圍道144號錦利閣" + }, + { + "building": "明苑閣", + "address": "九龍九龍城區衙前圍道152號明苑閣" + }, + { + "building": "百樂", + "address": "九龍九龍城區衙前圍道160號" + }, + { + "building": "華苑", + "address": "九龍九龍城區衙前圍道162,162A-B號華苑" + }, + { + "building": "怡德花園", + "address": "九龍九龍城區衙前圍道168號怡德花園" + }, + { + "building": "康寧台", + "address": "九龍九龍城區衙前圍道184A-F號康寧台" + }, + { + "building": "柏苑", + "address": "九龍九龍城區衙前圍道190-192號柏苑" + }, + { + "building": "喇沙園", + "address": "九龍九龍城區衙前圍道202-208號喇沙園" + }, + { + "building": "東寶大樓", + "address": "九龍九龍城區衙前圍道27號東寶大樓" + }, + { + "building": "南苑", + "address": "九龍九龍城區衙前圍道30號南苑" + }, + { + "building": "百營中心", + "address": "九龍九龍城區衙前圍道40-42號百營中心" + }, + { + "building": "興發樓", + "address": "九龍九龍城區衙前圍道45-45C號興發樓" + }, + { + "building": "陶源", + "address": "九龍九龍城區衙前圍道51-53號陶源" + }, + { + "building": "廣杏樓", + "address": "九龍九龍城區衙前圍道54號廣杏樓" + }, + { + "building": "康寧樓", + "address": "九龍九龍城區衙前圍道56-58號康寧樓" + }, + { + "building": "華蘭閣", + "address": "九龍九龍城區衙前圍道57號華蘭閣" + }, + { + "building": "曉逸軒", + "address": "九龍九龍城區衙前圍道64號曉逸軒" + }, + { + "building": "創基樓", + "address": "九龍九龍城區衙前圍道66號創基樓" + }, + { + "building": "金滿樓", + "address": "九龍九龍城區衙前圍道70-72號金滿樓" + }, + { + "building": "銀巒閣", + "address": "九龍九龍城區衙前圍道75號銀巒閣" + }, + { + "building": "南信樓", + "address": "九龍九龍城區衙前圍道86號南信樓" + }, + { + "building": "金安樓", + "address": "九龍九龍城區衙前圍道94號金安樓" + }, + { + "building": "梁玲樓", + "address": "九龍九龍城區衙前圍道96號梁玲樓" + }, + { + "building": "成業樓", + "address": "九龍九龍城區衙前塱道52-54號成業樓" + }, + { + "building": "御門.前", + "address": "九龍九龍城區衙前塱道56-66號御門.前" + }, + { + "building": "昌盛大廈", + "address": "九龍九龍城區衙前塱道68-72號昌盛大廈" + }, + { + "building": "逸利樓", + "address": "九龍九龍城區衙前塱道82-84號逸利樓" + }, + { + "building": "曉薈", + "address": "九龍九龍城區賈炳達道 33號曉薈" + }, + { + "building": "帝庭豪園", + "address": "九龍九龍城區農圃道11號帝庭豪園" + }, + { + "building": "嘉翠閣", + "address": "九龍九龍城區嘉林邊道17號嘉翠閣" + }, + { + "building": "福康園", + "address": "九龍九龍城區嘉林邊道18號福康園" + }, + { + "building": "嘉麗園", + "address": "九龍九龍城區嘉林邊道19A-D號嘉麗園" + }, + { + "building": "嘉華苑", + "address": "九龍九龍城區嘉林邊道22號嘉華苑" + }, + { + "building": "嘉苑", + "address": "九龍九龍城區嘉林邊道27號嘉苑" + }, + { + "building": "林邊大廈", + "address": "九龍九龍城區嘉林邊道30號林邊大廈" + }, + { + "building": "嘉利大廈", + "address": "九龍九龍城區嘉林邊道3-3A號嘉利大廈" + }, + { + "building": "豪城閣", + "address": "九龍九龍城區嘉林邊道37號豪城閣" + }, + { + "building": "格蘭大廈", + "address": "九龍九龍城區嘉林邊道41-43A號格蘭大廈" + }, + { + "building": "嘉美大廈", + "address": "九龍九龍城區嘉林邊道4-4A號嘉美大廈" + }, + { + "building": "嘉林閣", + "address": "九龍九龍城區嘉林邊道7號嘉林閣" + }, + { + "building": "加多利山山景大樓", + "address": "九龍九龍城區嘉道理道46A, 46B, 48A, 48B, 48C & 48D號加多利山山景大樓" + }, + { + "building": "雪芹樓", + "address": "九龍九龍城區嘉道理道54號雪芹樓" + }, + { + "building": "碧霞閣", + "address": "九龍九龍城區對衡道20號碧霞閣" + }, + { + "building": "榮輝大廈", + "address": "九龍九龍城區榮光街52號榮輝大廈" + }, + { + "building": "榮輝大廈第2座", + "address": "九龍九龍城區榮光街52號榮輝大廈第2座" + }, + { + "building": "榮光大廈", + "address": "九龍九龍城區榮光街6-16號榮光大廈" + }, + { + "building": "匯山園", + "address": "九龍九龍城區歌和老街10號匯山園" + }, + { + "building": "翠亨園", + "address": "九龍九龍城區歌和老街14號翠亨園" + }, + { + "building": "達運閣", + "address": "九龍九龍城區歌和老街16號達運閣" + }, + { + "building": "歌和台", + "address": "九龍九龍城區歌和老街2E, 2F, 2G & 2H號歌和台" + }, + { + "building": "紫蘭台", + "address": "九龍九龍城區歌和老街2M號紫蘭台" + }, + { + "building": "德麗閣", + "address": "九龍九龍城區歌和老街4號德麗閣" + }, + { + "building": "樂古花園", + "address": "九龍九龍城區歌和老街6號樂古花園" + }, + { + "building": "榮豐大廈", + "address": "九龍九龍城區漆咸道北220-224號榮豐大廈" + }, + { + "building": "樂嘉大廈", + "address": "九龍九龍城區漆咸道北240-242號樂嘉大廈" + }, + { + "building": "益群大廈", + "address": "九龍九龍城區漆咸道北244,246,248號益群大廈" + }, + { + "building": "高高大樓", + "address": "九龍九龍城區漆咸道北250-254號高高大樓" + }, + { + "building": "華懋紅磡商業中心", + "address": "九龍九龍城區漆咸道北270-274號華懋紅磡商業中心" + }, + { + "building": "高發大廈", + "address": "九龍九龍城區漆咸道北387-393A號高發大廈" + }, + { + "building": "昇御門", + "address": "九龍九龍城區漆咸道北388號昇御門" + }, + { + "building": "長豐園", + "address": "九龍九龍城區漆咸道北395號長豐園" + }, + { + "building": "東貿商業大廈", + "address": "九龍九龍城區漆咸道北397-399號東貿商業大廈" + }, + { + "building": "慶祥大廈", + "address": "九龍九龍城區漆咸道北413-421號慶祥大廈" + }, + { + "building": "怡輝大廈", + "address": "九龍九龍城區漆咸道北423-433號怡輝大廈" + }, + { + "building": "寶暉大廈", + "address": "九龍九龍城區漆咸道北435-439號寶暉大廈" + }, + { + "building": "富運大廈", + "address": "九龍九龍城區漆咸道北436-450號富運大廈" + }, + { + "building": "華蕙閣", + "address": "九龍九龍城區漆咸道北441-449號華蕙閣" + }, + { + "building": "富邦大廈", + "address": "九龍九龍城區漆咸道北451-455號富邦大廈" + }, + { + "building": "俊傑樓", + "address": "九龍九龍城區漆咸道北468號俊傑樓" + }, + { + "building": "漆咸樓", + "address": "九龍九龍城區漆咸道北491-493號漆咸樓" + }, + { + "building": "安亨大廈", + "address": "九龍九龍城區漆咸道北495-503號安亨大廈" + }, + { + "building": "嘉樂樓", + "address": "九龍九龍城區福佬村道11-13號嘉樂樓" + }, + { + "building": "泰然樓", + "address": "九龍九龍城區福佬村道15-17號泰然樓" + }, + { + "building": "成龍居", + "address": "九龍九龍城區福佬村道18號成龍居" + }, + { + "building": "福全閣", + "address": "九龍九龍城區福佬村道29-31號福全閣" + }, + { + "building": "福星大樓", + "address": "九龍九龍城區福佬村道51-53號福星大樓" + }, + { + "building": "鴻福樓", + "address": "九龍九龍城區福佬村道58號鴻福樓" + }, + { + "building": "福聯大樓", + "address": "九龍九龍城區福佬村道62-64號福聯大樓" + }, + { + "building": "福厚樓", + "address": "九龍九龍城區福佬村道72號福厚樓" + }, + { + "building": "富士商業大廈", + "address": "九龍九龍城區福佬村道74號富士商業大廈" + }, + { + "building": "新益樓", + "address": "九龍九龍城區福佬村道75-77號新益樓" + }, + { + "building": "福成閣", + "address": "九龍九龍城區福佬村道82-84號福成閣" + }, + { + "building": "嘉福閣", + "address": "九龍九龍城區福佬村道88-90號嘉福閣" + }, + { + "building": "馬樹大樓", + "address": "九龍九龍城區福佬村道92-94號馬樹大樓" + }, + { + "building": "馬樹閣", + "address": "九龍九龍城區福佬村道97號馬樹閣" + }, + { + "building": "怡安閣A座", + "address": "九龍九龍城區窩打老道" + }, + { + "building": "萬基大廈", + "address": "九龍九龍城區窩打老道" + }, + { + "building": "恒信大廈", + "address": "九龍九龍城區窩打老道106,106A號恒信大廈" + }, + { + "building": "匯景大廈", + "address": "九龍九龍城區窩打老道108-110號匯景大廈" + }, + { + "building": "碧儷閣", + "address": "九龍九龍城區窩打老道112A-112B號碧儷閣" + }, + { + "building": "高明大廈", + "address": "九龍九龍城區窩打老道120號高明大廈" + }, + { + "building": "康定舍", + "address": "九龍九龍城區窩打老道140號康定舍" + }, + { + "building": "龍濤花園", + "address": "九龍九龍城區窩打老道142號龍濤花園" + }, + { + "building": "柏盧", + "address": "九龍九龍城區窩打老道154號柏盧" + }, + { + "building": "松亭閣", + "address": "九龍九龍城區窩打老道61-63號松亭閣" + }, + { + "building": "年豐樓", + "address": "九龍九龍城區窩打老道65-65D號年豐樓" + }, + { + "building": "寶建大廈", + "address": "九龍九龍城區窩打老道66號寶建大廈" + }, + { + "building": "東南大樓", + "address": "九龍九龍城區窩打老道67A-67B號東南大樓" + }, + { + "building": "集貴大廈", + "address": "九龍九龍城區窩打老道67C號集貴大廈" + }, + { + "building": "勝利樓", + "address": "九龍九龍城區窩打老道67D號勝利樓" + }, + { + "building": "怡景大廈", + "address": "九龍九龍城區窩打老道67E號怡景大廈" + }, + { + "building": "龍翔大廈", + "address": "九龍九龍城區窩打老道68號龍翔大廈" + }, + { + "building": "曾榕大廈", + "address": "九龍九龍城區窩打老道70號曾榕大廈" + }, + { + "building": "松園廈", + "address": "九龍九龍城區窩打老道71A & B號松園廈" + }, + { + "building": "自由大廈", + "address": "九龍九龍城區窩打老道72號自由大廈" + }, + { + "building": "益發大廈", + "address": "九龍九龍城區窩打老道73,73A,73B號益發大廈" + }, + { + "building": "愷悌閣", + "address": "九龍九龍城區窩打老道73C號愷悌閣" + }, + { + "building": "盛馬苑", + "address": "九龍九龍城區窩打老道73D號盛馬苑" + }, + { + "building": "金華樓", + "address": "九龍九龍城區窩打老道77-77A號金華樓" + }, + { + "building": "芝齡大廈", + "address": "九龍九龍城區窩打老道77B,77C號芝齡大廈" + }, + { + "building": "翠林雅軒", + "address": "九龍九龍城區窩打老道78號翠林雅軒" + }, + { + "building": "帝國大廈", + "address": "九龍九龍城區窩打老道79號帝國大廈" + }, + { + "building": "聖佐治大廈", + "address": "九龍九龍城區窩打老道81號聖佐治大廈" + }, + { + "building": "嘉多利豪園", + "address": "九龍九龍城區窩打老道83號嘉多利豪園" + }, + { + "building": "冠華園", + "address": "九龍九龍城區窩打老道84號冠華園" + }, + { + "building": "恒懋大樓", + "address": "九龍九龍城區窩打老道85-91號恒懋大樓" + }, + { + "building": "金碧大廈", + "address": "九龍九龍城區窩打老道92號金碧大廈" + }, + { + "building": "麗豪閣A, B座", + "address": "九龍九龍城區窩打老道94-96號麗豪閣A, B座" + }, + { + "building": "美滿大廈", + "address": "九龍九龍城區窩打老道97-97A號美滿大廈" + }, + { + "building": "龍騰閣", + "address": "九龍九龍城區窩打老道98-100號龍騰閣" + }, + { + "building": "美佳大廈", + "address": "九龍九龍城區窩打老道99B號美佳大廈" + }, + { + "building": "銀漢大樓", + "address": "九龍九龍城區銀漢街15號銀漢大樓" + }, + { + "building": "庇利大廈", + "address": "九龍九龍城區銀漢街2-10號庇利大廈" + }, + { + "building": "龍德,寶德大廈龍德大廈", + "address": "九龍九龍城區銀漢街21-29號龍德,寶德大廈龍德大廈" + }, + { + "building": "九龍塘花園", + "address": "九龍九龍城區劍橋道1號九龍塘花園" + }, + { + "building": "碧麗閣", + "address": "九龍九龍城區廣播道" + }, + { + "building": "寶能閣", + "address": "九龍九龍城區廣播道" + }, + { + "building": "逸瓏五座", + "address": "九龍九龍城區廣播道1 號" + }, + { + "building": "龍翔苑", + "address": "九龍九龍城區廣播道15-37號龍翔苑" + }, + { + "building": "逸瓏", + "address": "九龍九龍城區廣播道1號" + }, + { + "building": "金翠苑", + "address": "九龍九龍城區廣播道36號金翠苑" + }, + { + "building": "嘉柏園及嘉翠園嘉柏園", + "address": "九龍九龍城區廣播道38號及嘉翠園嘉柏園" + }, + { + "building": "偉錦園", + "address": "九龍九龍城區廣播道39號偉錦園" + }, + { + "building": "萬寶閣", + "address": "九龍九龍城區廣播道41號" + }, + { + "building": "美輪閣", + "address": "九龍九龍城區廣播道42號美輪閣" + }, + { + "building": "雅麗園", + "address": "九龍九龍城區廣播道43號雅麗園" + }, + { + "building": "珍寶閣", + "address": "九龍九龍城區廣播道45號珍寶閣" + }, + { + "building": "慧園", + "address": "九龍九龍城區廣播道47號慧園" + }, + { + "building": "星輝豪庭", + "address": "九龍九龍城區廣播道63號星輝豪庭" + }, + { + "building": "百樂園", + "address": "九龍九龍城區廣播道6號百樂園" + }, + { + "building": "嘉皇臺", + "address": "九龍九龍城區廣播道83號嘉皇臺" + }, + { + "building": "雅樂園", + "address": "九龍九龍城區廣播道85號雅樂園" + }, + { + "building": "德民大廈", + "address": "九龍九龍城區德民街29號德民大廈" + }, + { + "building": "德安街11號", + "address": "九龍九龍城區德安街11號黃埔花園第7期(紅棉苑)" + }, + { + "building": "華閣", + "address": "九龍九龍城區靠背壟道" + }, + { + "building": "豐景閣", + "address": "九龍九龍城區靠背壟道103-105號豐景閣" + }, + { + "building": "好望大廈", + "address": "九龍九龍城區靠背壟道115,115A號好望大廈" + }, + { + "building": "穎新", + "address": "九龍九龍城區靠背壟道117-119號穎新" + }, + { + "building": "富裕閣", + "address": "九龍九龍城區靠背壟道121號富裕閣" + }, + { + "building": "晨樂大廈", + "address": "九龍九龍城區靠背壟道141-143號晨樂大廈" + }, + { + "building": "都會151", + "address": "九龍九龍城區靠背壟道151號都會151" + }, + { + "building": "萬壽", + "address": "九龍九龍城區靠背壟道153-155號萬壽" + }, + { + "building": "泰安", + "address": "九龍九龍城區靠背壟道157-159號泰安" + }, + { + "building": "鼎峰大廈", + "address": "九龍九龍城區學餘里1-2號鼎峰大廈" + }, + { + "building": "僑宏大廈", + "address": "九龍九龍城區學餘里3號僑宏大廈" + }, + { + "building": "必發樓", + "address": "九龍九龍城區機利士南路23-25號必發樓" + }, + { + "building": "機利士大廈", + "address": "九龍九龍城區機利士南路29-37號機利士大廈" + }, + { + "building": "合義樓", + "address": "九龍九龍城區機利士南路63號合義樓" + }, + { + "building": "源成大廈", + "address": "九龍九龍城區機利士路南9-21號源成大廈" + }, + { + "building": "蕪湖居", + "address": "九龍九龍城區蕪湖街105, 107, 109, 111, 113號蕪湖居" + }, + { + "building": "興邦大廈", + "address": "九龍九龍城區蕪湖街117-119號興邦大廈" + }, + { + "building": "俊暉華庭", + "address": "九龍九龍城區蕪湖街118號俊暉華庭" + }, + { + "building": "海德豪苑", + "address": "九龍九龍城區蕪湖街123號海德豪苑" + }, + { + "building": "興華大廈", + "address": "九龍九龍城區蕪湖街157-163, 167-171號興華大廈" + }, + { + "building": "裕新大廈", + "address": "九龍九龍城區蕪湖街177-191A號裕新大廈" + }, + { + "building": "紅湖大廈", + "address": "九龍九龍城區蕪湖街18-22號紅湖大廈" + }, + { + "building": "紅磡大廈", + "address": "九龍九龍城區蕪湖街46-56A號紅磡大廈" + }, + { + "building": "金達閣", + "address": "九龍九龍城區蕪湖街58號金達閣" + }, + { + "building": "兆寶閣", + "address": "九龍九龍城區蕪湖街63-69號兆寶閣" + }, + { + "building": "光明閣", + "address": "九龍九龍城區蕪湖街68號光明閣" + }, + { + "building": "南安商業大廈", + "address": "九龍九龍城區蕪湖街69A號南安商業大廈" + }, + { + "building": "潤達商業大廈", + "address": "九龍九龍城區蕪湖街70-74號潤達商業大廈" + }, + { + "building": "鑽石樓", + "address": "九龍九龍城區蕪湖街99,99A,101,103號鑽石樓" + }, + { + "building": "龍威大廈", + "address": "九龍九龍城區龍崗道11-13號龍威大廈" + }, + { + "building": "發達樓", + "address": "九龍九龍城區龍崗道14號發達樓" + }, + { + "building": "龍鳳樓", + "address": "九龍九龍城區龍崗道2-4號龍鳳樓" + }, + { + "building": "富建樓", + "address": "九龍九龍城區龍崗道27號富建樓" + }, + { + "building": "龍翔閣", + "address": "九龍九龍城區龍崗道33-39號龍翔閣" + }, + { + "building": "寶文閣", + "address": "九龍九龍城區龍崗道45-47號寶文閣" + }, + { + "building": "金寶", + "address": "九龍九龍城區龍崗道49-49A號金寶" + }, + { + "building": "佳景樓", + "address": "九龍九龍城區龍崗道57-59號佳景樓" + }, + { + "building": "金龍閣", + "address": "九龍九龍城區龍崗道7號金龍閣" + }, + { + "building": "新德園", + "address": "九龍九龍城區禧福道1號新德園" + }, + { + "building": "新泰樓", + "address": "九龍九龍城區聯合道14-16號新泰樓" + }, + { + "building": "裕聯大廈", + "address": "九龍九龍城區聯合道2-4號裕聯大廈" + }, + { + "building": "建新中心", + "address": "九龍九龍城區聯合道320號建新中心" + }, + { + "building": "億光樓", + "address": "九龍九龍城區聯合道32號億光樓" + }, + { + "building": "萬基樓", + "address": "九龍九龍城區聯合道40-46號萬基樓" + }, + { + "building": "聯發樓", + "address": "九龍九龍城區聯合道52-54號聯發樓" + }, + { + "building": "天成樓", + "address": "九龍九龍城區聯合道56-58號天成樓" + }, + { + "building": "增輝樓", + "address": "九龍九龍城區聯合道64-66號增輝樓" + }, + { + "building": "金城大廈", + "address": "九龍九龍城區聯合道68-74號金城大廈" + }, + { + "building": "愛月閣", + "address": "九龍九龍城區聯合道80號愛月閣" + }, + { + "building": "嘉運閣", + "address": "九龍九龍城區譚公道104號嘉運閣" + }, + { + "building": "雲天大樓", + "address": "九龍九龍城區譚公道108-114號雲天大樓" + }, + { + "building": "仁景大樓", + "address": "九龍九龍城區譚公道123-125號仁景大樓" + }, + { + "building": "恒康大廈", + "address": "九龍九龍城區譚公道128-132號恒康大廈" + }, + { + "building": "長城大廈", + "address": "九龍九龍城區譚公道16-26號長城大廈" + }, + { + "building": "恆盛大廈", + "address": "九龍九龍城區譚公道2-10號恆盛大廈" + }, + { + "building": "建安大廈", + "address": "九龍九龍城區譚公道34-38號建安大廈" + }, + { + "building": "仁和大廈", + "address": "九龍九龍城區譚公道41-43號仁和大廈" + }, + { + "building": "富康大廈", + "address": "九龍九龍城區譚公道42-46號富康大廈" + }, + { + "building": "譚公大廈", + "address": "九龍九龍城區譚公道45-63號譚公大廈" + }, + { + "building": "德勝大廈", + "address": "九龍九龍城區譚公道50號德勝大廈" + }, + { + "building": "香港工商銀行大廈(九龍)", + "address": "九龍九龍城區譚公道80號香港工商銀行大廈(九龍)" + }, + { + "building": "黃氏大廈", + "address": "九龍九龍城區譚公道84-90號黃氏大廈" + }, + { + "building": "兆豐閣", + "address": "九龍九龍城區譚公道98號兆豐閣" + }, + { + "building": "華麗大廈", + "address": "九龍九龍城區麗華街1-7號華麗大廈" + }, + { + "building": "城中匯", + "address": "九龍九龍城區寶其利街121號城中匯" + }, + { + "building": "盈采華庭", + "address": "九龍九龍城區寶其利街123號盈采華庭" + }, + { + "building": "寶利唐樓", + "address": "九龍九龍城區寶其利街145-163號寶利唐樓" + }, + { + "building": "寶安樓", + "address": "九龍九龍城區寶其利街165-167號寶安樓" + }, + { + "building": "寶利大廈", + "address": "九龍九龍城區寶其利街173-177號寶利大廈" + }, + { + "building": "寶源大廈", + "address": "九龍九龍城區寶其利街28號寶源大廈" + }, + { + "building": "黃埔唐樓A座", + "address": "九龍九龍城區寶其利街2G號黃埔唐樓A座" + }, + { + "building": "華寶大廈", + "address": "九龍九龍城區寶其利街33-41號華寶大廈." + }, + { + "building": "金華大廈", + "address": "九龍九龍城區寶其利街44-56B號金華大廈" + }, + { + "building": "銳光中心", + "address": "九龍九龍城區寶其利街45-47號銳光中心" + }, + { + "building": "寶利閣", + "address": "九龍九龍城區寶其利街53號寶利閣" + }, + { + "building": "寶威大廈", + "address": "九龍九龍城區寶其利街59-67號寶威大廈" + }, + { + "building": "基安大廈", + "address": "九龍九龍城區寶其利街66號基安大廈" + }, + { + "building": "東禧閣", + "address": "九龍九龍城區寶其利街73號東禧閣" + }, + { + "building": "大利大廈", + "address": "九龍九龍城區寶其利街81號大利大廈" + }, + { + "building": "寶新大廈", + "address": "九龍九龍城區寶其利街89號寶新大廈" + }, + { + "building": "怡園", + "address": "九龍九龍城區蘭開夏道17號怡園" + }, + { + "building": "劍橋花園", + "address": "九龍九龍城區蘭開夏道1號劍橋花園" + }, + { + "building": "麗和園", + "address": "九龍九龍城區蘭開夏道22-24號" + }, + { + "building": "九龍塘閣A座", + "address": "九龍九龍城區蘭開夏道4-8號九龍塘閣A座" + }, + { + "building": "露明閣", + "address": "九龍九龍城區露明道16-18號露明閣" + }, + { + "building": "維港中心", + "address": "九龍九龍城區鶴翔街" + }, + { + "building": "富恆工業大廈", + "address": "九龍九龍城區鶴園東街1號富恆工業大廈" + }, + { + "building": "衛安中心", + "address": "九龍九龍城區鶴園東街3號衛安中心" + }, + { + "building": "恒藝珠寶大廈", + "address": "九龍九龍城區鶴園東街4號恒藝珠寶大廈" + }, + { + "building": "康力投資大廈", + "address": "九龍九龍城區鶴園街13號康力投資大廈" + }, + { + "building": "恒豐工業大廈", + "address": "九龍九龍城區鶴園街2G號恒豐工業大廈" + }, + { + "building": "榮英大廈", + "address": "九龍九龍城區艷馬道" + }, + { + "building": "福群樓A座", + "address": "九龍油尖旺區" + }, + { + "building": "九龍中心", + "address": "九龍油尖旺區KIL10227亞士厘道29-39號九龍中心" + }, + { + "building": "君頤峰", + "address": "九龍油尖旺區KIL11118衛理道18號君頤峰" + }, + { + "building": "KIMBERLEY 26", + "address": "九龍油尖旺區KIL11147金巴利道26號KIMBERLEY 26" + }, + { + "building": "海桃灣第一座", + "address": "九龍油尖旺區KIL11162櫻桃街38號海桃灣第一座" + }, + { + "building": "翠匯軒", + "address": "九龍油尖旺區KIL1556廣東道600號翠匯軒" + }, + { + "building": "昌福大廈", + "address": "九龍油尖旺區KIL2028荔枝角道180-182號昌福大廈" + }, + { + "building": "宏福樓", + "address": "九龍油尖旺區KIL2128福全街25-27號宏福樓" + }, + { + "building": "逸安閣", + "address": "九龍油尖旺區KIL2232東安街28號逸安閣" + }, + { + "building": "廣明閣", + "address": "九龍油尖旺區KIL2234塘尾道67C號廣明閣" + }, + { + "building": "華寶大廈", + "address": "九龍油尖旺區KIL2307基隆街2-16號華寶大廈" + }, + { + "building": "慧妍閣", + "address": "九龍油尖旺區KIL2357花墟道18號慧妍閣" + }, + { + "building": "翠景閣", + "address": "九龍油尖旺區KIL2372花墟道50-56號翠景閣" + }, + { + "building": "名駒中心", + "address": "九龍油尖旺區KIL2931廣東道1145-1153號名駒中心" + }, + { + "building": "康威大廈", + "address": "九龍油尖旺區KIL2990砵蘭街388號康威大廈" + }, + { + "building": "太子 ~ 藍馬之城", + "address": "九龍油尖旺區KIL3073彌敦道761號太子 ~ 藍馬之城" + }, + { + "building": "金國中心", + "address": "九龍油尖旺區KIL3102花園街76A號金國中心" + }, + { + "building": "恒利中心", + "address": "九龍油尖旺區KIL3570弼街9號恒利中心" + }, + { + "building": "富華大廈", + "address": "九龍油尖旺區KIL4010砵蘭街331-335號富華大廈" + }, + { + "building": "龍駒企業大廈", + "address": "九龍油尖旺區KIL4253弼街1-7號龍駒企業大廈" + }, + { + "building": "周勝記商業大廈", + "address": "九龍油尖旺區KIL4317塘尾道25號周勝記商業大廈" + }, + { + "building": "祐安閣", + "address": "九龍油尖旺區KIL8064上海街322號祐安閣" + }, + { + "building": "溫莎大廈", + "address": "九龍油尖旺區KIL8247漆咸道南29-31號溫莎大廈" + }, + { + "building": "福駿閣", + "address": "九龍油尖旺區KIL9883福全街8號福駿閣" + }, + { + "building": "安蘭閣", + "address": "九龍油尖旺區KML84東安街38號安蘭閣" + }, + { + "building": "朗廷軒", + "address": "九龍油尖旺區廠街33號朗廷軒" + }, + { + "building": "興發商業大廈", + "address": "九龍油尖旺區廠街9號興發商業大廈" + }, + { + "building": "裕華國際大廈", + "address": "九龍油尖旺區九龍公園徑1號裕華國際大廈" + }, + { + "building": "永安樓", + "address": "九龍油尖旺區上海街" + }, + { + "building": "工商大廈", + "address": "九龍油尖旺區上海街113-119號工商大廈" + }, + { + "building": "金海大廈", + "address": "九龍油尖旺區上海街121-123號金海大廈" + }, + { + "building": "浩如樓", + "address": "九龍油尖旺區上海街141-145號浩如樓" + }, + { + "building": "碧荷樓", + "address": "九龍油尖旺區上海街163-165號碧荷樓" + }, + { + "building": "海源大廈", + "address": "九龍油尖旺區上海街167-169號海源大廈" + }, + { + "building": "恒福大廈", + "address": "九龍油尖旺區上海街170-174號恒福大廈" + }, + { + "building": "恆昌大樓", + "address": "九龍油尖旺區上海街20-26號恆昌大樓" + }, + { + "building": "海德中心", + "address": "九龍油尖旺區上海街228號海德中心" + }, + { + "building": "美化唐樓", + "address": "九龍油尖旺區上海街25-35號美化唐樓" + }, + { + "building": "昌茂大廈", + "address": "九龍油尖旺區上海街278-284號昌茂大廈" + }, + { + "building": "恒邦商業中心", + "address": "九龍油尖旺區上海街28-40號恒邦商業中心" + }, + { + "building": "裕景樓", + "address": "九龍油尖旺區上海街287-297號裕景樓" + }, + { + "building": "恒英樓", + "address": "九龍油尖旺區上海街326號恒英樓" + }, + { + "building": "東南唐樓", + "address": "九龍油尖旺區上海街327-333號東南唐樓" + }, + { + "building": "安居樓", + "address": "九龍油尖旺區上海街328-334號安居樓" + }, + { + "building": "成大廈", + "address": "九龍油尖旺區上海街362號成大廈" + }, + { + "building": "麗都樓", + "address": "九龍油尖旺區上海街364-368號麗都樓" + }, + { + "building": "得如樓大廈", + "address": "九龍油尖旺區上海街372-378A號得如樓大廈" + }, + { + "building": "明新大廈", + "address": "九龍油尖旺區上海街375-379號明新大廈" + }, + { + "building": "安業商業大廈", + "address": "九龍油尖旺區上海街395-397號安業商業大廈" + }, + { + "building": "文德樓", + "address": "九龍油尖旺區上海街406-408號文德樓" + }, + { + "building": "至誠大廈", + "address": "九龍油尖旺區上海街407-417號至誠大廈" + }, + { + "building": "萬事昌中心", + "address": "九龍油尖旺區上海街422-426號萬事昌中心" + }, + { + "building": "忠和商業中心", + "address": "九龍油尖旺區上海街42-46號忠和商業中心" + }, + { + "building": "興華中心", + "address": "九龍油尖旺區上海街433號興華中心" + }, + { + "building": "同珍商業中心", + "address": "九龍油尖旺區上海街438-444號同珍商業中心" + }, + { + "building": "友榮大廈", + "address": "九龍油尖旺區上海街439-443號友榮大廈" + }, + { + "building": "富達商業大廈", + "address": "九龍油尖旺區上海街446-448號富達商業大廈" + }, + { + "building": "生輝大廈", + "address": "九龍油尖旺區上海街451號生輝大廈" + }, + { + "building": "明華樓", + "address": "九龍油尖旺區上海街456-458號明華樓" + }, + { + "building": "載福樓", + "address": "九龍油尖旺區上海街466-468號載福樓" + }, + { + "building": "上海中心", + "address": "九龍油尖旺區上海街473-475號上海中心" + }, + { + "building": "順明大廈", + "address": "九龍油尖旺區上海街488號順明大廈" + }, + { + "building": "明暉樓", + "address": "九龍油尖旺區上海街499-501號明暉樓" + }, + { + "building": "福苑", + "address": "九龍油尖旺區上海街50-54號福苑" + }, + { + "building": "中基大樓", + "address": "九龍油尖旺區上海街515號中基大樓" + }, + { + "building": "華美大廈", + "address": "九龍油尖旺區上海街518-522號華美大廈華美大廈" + }, + { + "building": "東海閣", + "address": "九龍油尖旺區上海街525號東海閣" + }, + { + "building": "海景閣", + "address": "九龍油尖旺區上海街55號海景閣" + }, + { + "building": "安美大廈", + "address": "九龍油尖旺區上海街595-599A號安美大廈" + }, + { + "building": "嘉成大廈", + "address": "九龍油尖旺區上海街61-67號嘉成大廈" + }, + { + "building": "AVA 62", + "address": "九龍油尖旺區上海街62號AVA 62" + }, + { + "building": "國祥大廈", + "address": "九龍油尖旺區上海街635-637號國祥大廈" + }, + { + "building": "旺角海景中心", + "address": "九龍油尖旺區上海街638號旺角海景中心" + }, + { + "building": "家旺樓", + "address": "九龍油尖旺區上海街639-645號家旺樓" + }, + { + "building": "黃金大廈", + "address": "九龍油尖旺區上海街646-650號黃金大廈" + }, + { + "building": "文華閣", + "address": "九龍油尖旺區上海街647-651號文華閣" + }, + { + "building": "金基樓", + "address": "九龍油尖旺區上海街652-654號金基樓" + }, + { + "building": "毓成樓", + "address": "九龍油尖旺區上海街657-661A號毓成樓" + }, + { + "building": "天寶樓", + "address": "九龍油尖旺區上海街660-662號天寶樓" + }, + { + "building": "美樂華大廈", + "address": "九龍油尖旺區上海街675-677號美樂華大廈" + }, + { + "building": "潤基商業大廈", + "address": "九龍油尖旺區上海街682號潤基商業大廈" + }, + { + "building": "鎮海商業大廈", + "address": "九龍油尖旺區上海街688-690號鎮海商業大廈" + }, + { + "building": "鴻聯大廈", + "address": "九龍油尖旺區上海街689-693號鴻聯大廈" + }, + { + "building": "興發樓", + "address": "九龍油尖旺區上海街692-696號興發樓" + }, + { + "building": "榮光大廈", + "address": "九龍油尖旺區上海街711號榮光大廈" + }, + { + "building": "華海廣場", + "address": "九龍油尖旺區上海街80號華海廣場" + }, + { + "building": "中和樓", + "address": "九龍油尖旺區大角咀道141-147號中和樓" + }, + { + "building": "中英樓", + "address": "九龍油尖旺區大角咀道159-167號中英樓" + }, + { + "building": "一盛大廈", + "address": "九龍油尖旺區大角咀道171號一盛大廈" + }, + { + "building": "建福大廈", + "address": "九龍油尖旺區大角咀道249-255號建福大廈" + }, + { + "building": "新九龍廣場", + "address": "九龍油尖旺區大角咀道38號新九龍廣場" + }, + { + "building": "大智樓", + "address": "九龍油尖旺區大南街14-16號大智樓" + }, + { + "building": "泰安閣", + "address": "九龍油尖旺區大南街18-22號泰安閣" + }, + { + "building": "金唐大廈", + "address": "九龍油尖旺區大南街33-37號金唐大廈" + }, + { + "building": "美綸樓", + "address": "九龍油尖旺區大南街40-42A號美綸樓" + }, + { + "building": "璟璜大廈", + "address": "九龍油尖旺區大南街4-10號璟璜大廈" + }, + { + "building": "耀明樓", + "address": "九龍油尖旺區大南街77-79號耀明樓" + }, + { + "building": "大南花園", + "address": "九龍油尖旺區大南街81-83號大南花園" + }, + { + "building": "國泰樓", + "address": "九龍油尖旺區大南街91-93號國泰樓" + }, + { + "building": "廣榮樓", + "address": "九龍油尖旺區山東街18號廣榮樓" + }, + { + "building": "廣福大廈", + "address": "九龍油尖旺區山東街28-30號廣福大廈" + }, + { + "building": "德昌商業大廈", + "address": "九龍油尖旺區山東街31-35號德昌商業大廈" + }, + { + "building": "38廣場", + "address": "九龍油尖旺區山東街38號38廣場" + }, + { + "building": "東角樓", + "address": "九龍油尖旺區山東街40Q號東角樓" + }, + { + "building": "中僑商業大廈", + "address": "九龍油尖旺區山東街47-51號中僑商業大廈" + }, + { + "building": "百祥大廈", + "address": "九龍油尖旺區山東街59-65號百祥大廈" + }, + { + "building": "山林閣", + "address": "九龍油尖旺區山林道10-12號山林閣" + }, + { + "building": "達榮大廈", + "address": "九龍油尖旺區山林道14-16號達榮大廈" + }, + { + "building": "?豪商業大廈", + "address": "九龍油尖旺區山林道18號?豪商業大廈" + }, + { + "building": "俊福樓", + "address": "九龍油尖旺區山林道1號俊福樓" + }, + { + "building": "錦興大廈", + "address": "九龍油尖旺區山林道20號錦興大廈" + }, + { + "building": "瓊林閣", + "address": "九龍油尖旺區山林道22-26號瓊林閣" + }, + { + "building": "廣利樓", + "address": "九龍油尖旺區山林道29-31號廣利樓" + }, + { + "building": "昌林閣", + "address": "九龍油尖旺區山林道30-32號昌林閣" + }, + { + "building": "富盛大廈", + "address": "九龍油尖旺區山林道33-35號富盛大廈" + }, + { + "building": "華苑", + "address": "九龍油尖旺區山林道37-39號華苑" + }, + { + "building": "銀座38", + "address": "九龍油尖旺區山林道38號銀座38" + }, + { + "building": "協榮商業大廈", + "address": "九龍油尖旺區山林道3號協榮商業大廈" + }, + { + "building": "俊源大廈", + "address": "九龍油尖旺區山林道41-43號俊源大廈" + }, + { + "building": "國光大廈", + "address": "九龍油尖旺區山林道42-44號國光大廈" + }, + { + "building": "協和大廈", + "address": "九龍油尖旺區山林道45-47號協和大廈" + }, + { + "building": "運通商業大廈", + "address": "九龍油尖旺區山林道46-48號運通商業大廈" + }, + { + "building": "恒貿商業中心", + "address": "九龍油尖旺區山林道4號恒貿商業中心" + }, + { + "building": "俊僑商業中心", + "address": "九龍油尖旺區山林道50-50A號俊僑商業中心" + }, + { + "building": "環海大廈", + "address": "九龍油尖旺區山林道52號環海大廈" + }, + { + "building": "利雅商業大廈", + "address": "九龍油尖旺區山林道54-56號利雅商業大廈" + }, + { + "building": "高荔商業中心", + "address": "九龍油尖旺區山林道8號高荔商業中心" + }, + { + "building": "卓能中心", + "address": "九龍油尖旺區山林道9號卓能中心" + }, + { + "building": "遠東大廈", + "address": "九龍油尖旺區中間道5-6號遠東大廈" + }, + { + "building": "中興樓", + "address": "九龍油尖旺區中匯街29-55號中興樓" + }, + { + "building": "中星樓", + "address": "九龍油尖旺區中匯街57-69號中星樓" + }, + { + "building": "御金‧國?", + "address": "九龍油尖旺區友翔道1號御金‧國?" + }, + { + "building": "天文台閣", + "address": "九龍油尖旺區天文臺圍10-12號天文台閣" + }, + { + "building": "金瓊樓", + "address": "九龍油尖旺區天文臺圍1-3號金瓊樓" + }, + { + "building": "天文臺道", + "address": "九龍油尖旺區天文臺道" + }, + { + "building": "林珊閣", + "address": "九龍油尖旺區太子西洋菜北街324號林珊閣" + }, + { + "building": "利泰大樓", + "address": "九龍油尖旺區太子道西101-107號利泰大樓" + }, + { + "building": "康齡大廈", + "address": "九龍油尖旺區太子道西108-118號康齡大廈" + }, + { + "building": "嘉峰大廈", + "address": "九龍油尖旺區太子道西109-111號嘉峰大廈" + }, + { + "building": "都?", + "address": "九龍油尖旺區太子道西115-123A號都?" + }, + { + "building": "長榮大廈", + "address": "九龍油尖旺區太子道西141-155號長榮大廈" + }, + { + "building": "偉興大廈", + "address": "九龍油尖旺區太子道西146-148號偉興大廈" + }, + { + "building": "太子商業大廈", + "address": "九龍油尖旺區太子道西150-152號太子商業大廈" + }, + { + "building": "太子大樓", + "address": "九龍油尖旺區太子道西152A-152D號太子大樓" + }, + { + "building": "旺角城大廈", + "address": "九龍油尖旺區太子道西154-158號旺角城大廈" + }, + { + "building": "別樹華軒", + "address": "九龍油尖旺區太子道西157號別樹華軒" + }, + { + "building": "好達大廈", + "address": "九龍油尖旺區太子道西160號好達大廈" + }, + { + "building": "華邦商業中心", + "address": "九龍油尖旺區太子道西162號華邦商業中心" + }, + { + "building": "明苑", + "address": "九龍油尖旺區太子道西166-168號明苑" + }, + { + "building": "德興大樓", + "address": "九龍油尖旺區太子道西170-172號德興大樓" + }, + { + "building": "別樹一居", + "address": "九龍油尖旺區太子道西171號別樹一居" + }, + { + "building": "太華樓", + "address": "九龍油尖旺區太子道西178-180號太華樓" + }, + { + "building": "美輪大廈", + "address": "九龍油尖旺區太子道西181-183號美輪大廈" + }, + { + "building": "嘉爵大廈", + "address": "九龍油尖旺區太子道西185號嘉爵大廈" + }, + { + "building": "頤安樓", + "address": "九龍油尖旺區太子道西186-188A號頤安樓" + }, + { + "building": "寶來閣", + "address": "九龍油尖旺區太子道西214-216號寶來閣" + }, + { + "building": "金利大廈", + "address": "九龍油尖旺區太子道西218-220A號金利大廈" + }, + { + "building": "英美大樓", + "address": "九龍油尖旺區太子道西66-70號英美大樓" + }, + { + "building": "南風樓", + "address": "九龍油尖旺區太子道西76-78號南風樓" + }, + { + "building": "利盛大樓", + "address": "九龍油尖旺區太子道西83-87號利盛大樓" + }, + { + "building": "嘉怡大廈", + "address": "九龍油尖旺區太子道西84-88號嘉怡大廈" + }, + { + "building": "大華大樓", + "address": "九龍油尖旺區太子道西90-94號大華大樓" + }, + { + "building": "雲?樓", + "address": "九龍油尖旺區太子道西93-95號雲?樓" + }, + { + "building": "萬年大廈", + "address": "九龍油尖旺區太子道西96-100號萬年大廈" + }, + { + "building": "太子樓", + "address": "九龍油尖旺區太子道西97-99A號太子樓" + }, + { + "building": "文耀樓", + "address": "九龍油尖旺區文苑街" + }, + { + "building": "文英樓", + "address": "九龍油尖旺區文苑街1-23號" + }, + { + "building": "文苑樓 中座", + "address": "九龍油尖旺區文苑街2-24號文苑樓 中座" + }, + { + "building": "文苑樓 前座", + "address": "九龍油尖旺區文苑街2-24號文苑樓 前座" + }, + { + "building": "文苑樓 後座", + "address": "九龍油尖旺區文苑街2-24號文苑樓 後座" + }, + { + "building": "文華樓", + "address": "九龍油尖旺區文英街1-23號文華樓" + }, + { + "building": "文輝樓", + "address": "九龍油尖旺區文英街26-48號文輝樓" + }, + { + "building": "文景樓", + "address": "九龍油尖旺區文匯街26-48號" + }, + { + "building": "文蔚樓", + "address": "九龍油尖旺區文蔚街2-24號" + }, + { + "building": "文昌樓 ", + "address": "九龍油尖旺區文蔚街26-48號" + }, + { + "building": "安豪樓", + "address": "九龍油尖旺區水渠道22-28號安豪樓" + }, + { + "building": "美星樓", + "address": "九龍油尖旺區水渠道30-32A號美星樓" + }, + { + "building": "東樂大樓", + "address": "九龍油尖旺區水渠道34-36號東樂大樓" + }, + { + "building": "寶石大樓", + "address": "九龍油尖旺區水渠道38-42號寶石大樓" + }, + { + "building": "皇太子大廈", + "address": "九龍油尖旺區水渠道46-52號皇太子大廈" + }, + { + "building": "格蘭中心", + "address": "九龍油尖旺區加拿分道14號格蘭中心" + }, + { + "building": "立誠大廈", + "address": "九龍油尖旺區加拿分道15-19號立誠大廈" + }, + { + "building": "金輝大廈", + "address": "九龍油尖旺區加拿分道16號金輝大廈" + }, + { + "building": "恒生尖沙咀大廈", + "address": "九龍油尖旺區加拿分道18號恒生尖沙咀大廈" + }, + { + "building": "加拿芬廣場", + "address": "九龍油尖旺區加拿分道20號加拿芬廣場" + }, + { + "building": "加發大廈", + "address": "九龍油尖旺區加拿分道22,22a,24及24A號加發大廈" + }, + { + "building": "國際商業信貸銀行大廈", + "address": "九龍油尖旺區加拿分道25-31號國際商業信貸銀行大廈" + }, + { + "building": "僑業大廈", + "address": "九龍油尖旺區加拿分道26-28號僑業大廈" + }, + { + "building": "2 CARNARVON ROAD", + "address": "九龍油尖旺區加拿分道2號2 CARNARVON ROAD" + }, + { + "building": "發利大廈", + "address": "九龍油尖旺區加拿分道33-35A號發利大廈" + }, + { + "building": "香檳大廈(A座)", + "address": "九龍油尖旺區加拿分道40-46號香檳大廈(A座)" + }, + { + "building": "匯理商業大廈", + "address": "九龍油尖旺區加拿分道41-43號匯理商業大廈" + }, + { + "building": "利嘉大廈", + "address": "九龍油尖旺區加拿分道4-4A號利嘉大廈" + }, + { + "building": "宏生大廈", + "address": "九龍油尖旺區加拿分道45-47號宏生大廈" + }, + { + "building": "夏蕙樓", + "address": "九龍油尖旺區加拿分道49號夏蕙樓" + }, + { + "building": "集友大廈", + "address": "九龍油尖旺區加拿分道4B-6H號集友大廈" + }, + { + "building": "嘉芬大廈", + "address": "九龍油尖旺區加拿分道8-12號嘉芬大廈" + }, + { + "building": "港晶中心", + "address": "九龍油尖旺區加連威老道100號港晶中心" + }, + { + "building": "加連威大廈", + "address": "九龍油尖旺區加連威老道12-16號加連威大廈" + }, + { + "building": "德立大廈", + "address": "九龍油尖旺區加連威老道21A-21B號德立大廈" + }, + { + "building": "愛賓商業大廈", + "address": "九龍油尖旺區加連威老道2-6號愛賓商業大廈" + }, + { + "building": "嘉榮大廈", + "address": "九龍油尖旺區加連威老道27號嘉榮大廈" + }, + { + "building": "信基商業中心", + "address": "九龍油尖旺區加連威老道29號信基商業中心" + }, + { + "building": "連城閣", + "address": "九龍油尖旺區加連威老道34-36號連城閣" + }, + { + "building": "華暉大廈", + "address": "九龍油尖旺區加連威老道38-40號華暉大廈" + }, + { + "building": "太興商業大廈", + "address": "九龍油尖旺區加連威老道39號太興商業大廈" + }, + { + "building": "興明樓", + "address": "九龍油尖旺區加連威老道41A-41B號興明樓" + }, + { + "building": "嘉威大廈", + "address": "九龍油尖旺區加連威老道41C-41D號嘉威大廈" + }, + { + "building": "恒運大廈", + "address": "九龍油尖旺區加連威老道42-44號恒運大廈" + }, + { + "building": "恒隆銀行大廈", + "address": "九龍油尖旺區加連威老道46-48號恒隆銀行大廈" + }, + { + "building": "幸福大廈", + "address": "九龍油尖旺區加連威老道58-60A號幸福大廈" + }, + { + "building": "威華大廈", + "address": "九龍油尖旺區加連威老道66-76號威華大廈" + }, + { + "building": "開麟中心", + "address": "九龍油尖旺區加連威老道77-79號開麟中心" + }, + { + "building": "加威中心", + "address": "九龍油尖旺區加連威老道8A-10號加威中心" + }, + { + "building": "幸福中心", + "address": "九龍油尖旺區加連威老道92號幸福中心" + }, + { + "building": "明輝中心", + "address": "九龍油尖旺區加連威老道94號明輝中心" + }, + { + "building": "希爾頓大廈", + "address": "九龍油尖旺區加連威老道96號希爾頓大廈" + }, + { + "building": "太子集團中心", + "address": "九龍油尖旺區北京道12A號太子集團中心" + }, + { + "building": "國都大廈", + "address": "九龍油尖旺區北京道57號國都大廈" + }, + { + "building": "環球商業大廈", + "address": "九龍油尖旺區北京道65-69號環球商業大廈" + }, + { + "building": "誠信大廈", + "address": "九龍油尖旺區北京道71-77號誠信大廈" + }, + { + "building": "中柏大廈", + "address": "九龍油尖旺區北海街" + }, + { + "building": "麥花臣匯", + "address": "九龍油尖旺區奶路臣街38號麥花臣匯" + }, + { + "building": "宏景大廈", + "address": "九龍油尖旺區奶路臣街8-8A號宏景大廈" + }, + { + "building": "茂盛中心", + "address": "九龍油尖旺區必發道118號茂盛中心" + }, + { + "building": "宏創方", + "address": "九龍油尖旺區必發道128號宏創方" + }, + { + "building": "登發樓", + "address": "九龍油尖旺區必發道1-3號登發樓" + }, + { + "building": "百福大廈", + "address": "九龍油尖旺區必發道32-38A號百福大廈" + }, + { + "building": "肇豐大廈", + "address": "九龍油尖旺區必發道33號肇豐大廈" + }, + { + "building": "南華工廠大廈", + "address": "九龍油尖旺區必發道40號南華工廠大廈" + }, + { + "building": "福和大樓", + "address": "九龍油尖旺區必發道42-52號" + }, + { + "building": "必發工廠大廈", + "address": "九龍油尖旺區必發道51號必發工廠大廈" + }, + { + "building": "必發樓", + "address": "九龍油尖旺區必發道5號必發樓" + }, + { + "building": "必發臺", + "address": "九龍油尖旺區必發道68-72號必發臺" + }, + { + "building": "必發大廈", + "address": "九龍油尖旺區必發道7-19號必發大廈" + }, + { + "building": "SOLO", + "address": "九龍油尖旺區必發道83號SOLO" + }, + { + "building": "興利工業大廈", + "address": "九龍油尖旺區必發道89號興利工業大廈" + }, + { + "building": "THE BEDFORD", + "address": "九龍油尖旺區必發道91-93號THE BEDFORD" + }, + { + "building": "偉益工業大廈", + "address": "九龍油尖旺區必發道99-101號偉益工業大廈" + }, + { + "building": "星皇商業中心", + "address": "九龍油尖旺區永星里1B號星皇商業中心" + }, + { + "building": "永星里2A號", + "address": "九龍油尖旺區永星里2A號" + }, + { + "building": "永星商業大廈", + "address": "九龍油尖旺區永星里2號永星商業大廈" + }, + { + "building": "甘芳大廈", + "address": "九龍油尖旺區甘芳街10-20號甘芳大廈" + }, + { + "building": "新萬利大廈", + "address": "九龍油尖旺區甘芳街1-7A號新萬利大廈" + }, + { + "building": "甘芳閣", + "address": "九龍油尖旺區甘芳街28號甘芳閣" + }, + { + "building": "廣豐大廈", + "address": "九龍油尖旺區甘霖街1-19號廣豐大廈" + }, + { + "building": "廣裕大廈", + "address": "九龍油尖旺區甘霖街21-39號廣裕大廈" + }, + { + "building": "廣源大廈", + "address": "九龍油尖旺區甘霖街2-20號廣源大廈" + }, + { + "building": "永富大廈", + "address": "九龍油尖旺區白加士街10-24號永富大廈" + }, + { + "building": "康寧大廈", + "address": "九龍油尖旺區白加士街1-11號康寧大廈" + }, + { + "building": "Y Center", + "address": "九龍油尖旺區白加士街13-15號Y Center" + }, + { + "building": "伯嘉士大廈", + "address": "九龍油尖旺區白加士街17-23號伯嘉士大廈" + }, + { + "building": "慶雲商業大廈", + "address": "九龍油尖旺區白加士街25-27號慶雲商業大廈" + }, + { + "building": "盛華商業大廈", + "address": "九龍油尖旺區白加士街26-32號盛華商業大廈" + }, + { + "building": "?嘉商業中心", + "address": "九龍油尖旺區白加士街2-8號?嘉商業中心" + }, + { + "building": "嘉士商業大廈", + "address": "九龍油尖旺區白加士街29-31號嘉士商業大廈" + }, + { + "building": "其昌樓", + "address": "九龍油尖旺區白加士街53-55號其昌樓" + }, + { + "building": "凱豪商業中心", + "address": "九龍油尖旺區白加士街56號凱豪商業中心" + }, + { + "building": "嘉齡樓", + "address": "九龍油尖旺區白加士街61-63號嘉齡樓" + }, + { + "building": "南京大樓", + "address": "九龍油尖旺區白加士街68-70號南京大樓" + }, + { + "building": "百達大廈", + "address": "九龍油尖旺區白加士街86-90號百達大廈" + }, + { + "building": "金威廣場(白加士街)", + "address": "九龍油尖旺區白加士街98號金威廣場(白加士街)" + }, + { + "building": "榮發大廈", + "address": "九龍油尖旺區白楊街11-13號榮發大廈" + }, + { + "building": "基隆樓", + "address": "九龍油尖旺區白楊街9號基隆樓" + }, + { + "building": "富峰行", + "address": "九龍油尖旺區白蘭軒道2號富峰行" + }, + { + "building": "昌盛工業大廈", + "address": "九龍油尖旺區合桃街17號昌盛工業大廈" + }, + { + "building": "福昌工廠大廈", + "address": "九龍油尖旺區合桃街1號福昌工廠大廈" + }, + { + "building": "福群大廈", + "address": "九龍油尖旺區合桃街8號福群大廈" + }, + { + "building": "英來大廈", + "address": "九龍油尖旺區汝州街19-25號英來大廈" + }, + { + "building": "廣勝大廈", + "address": "九龍油尖旺區汝州街37-41號廣勝大廈" + }, + { + "building": "樂勝大廈", + "address": "九龍油尖旺區汝州街43-49號樂勝大廈" + }, + { + "building": "富錦樓", + "address": "九龍油尖旺區汝州街51-53號富錦樓" + }, + { + "building": "永泰樓", + "address": "九龍油尖旺區汝州街9號永泰樓" + }, + { + "building": "富山中心", + "address": "九龍油尖旺區西洋菜北街179-179A號富山中心" + }, + { + "building": "福苑", + "address": "九龍油尖旺區西洋菜南街138號福苑" + }, + { + "building": "榮華大廈", + "address": "九龍油尖旺區西洋菜南街14-24號榮華大廈" + }, + { + "building": "百寶利商業中心", + "address": "九龍油尖旺區西洋菜南街1A-1K號百寶利商業中心" + }, + { + "building": "生發大廈", + "address": "九龍油尖旺區西洋菜南街218-220號生發大廈" + }, + { + "building": "英京樓", + "address": "九龍油尖旺區西洋菜南街60號英京樓" + }, + { + "building": "嘉康中心", + "address": "九龍油尖旺區西洋菜街北155號嘉康中心" + }, + { + "building": "恆安樓恒安大樓", + "address": "九龍油尖旺區西洋菜街北157-163A號恆安樓恒安大樓" + }, + { + "building": "芝蘭樓", + "address": "九龍油尖旺區西洋菜街北167-173號芝蘭樓" + }, + { + "building": "和益樓", + "address": "九龍油尖旺區西洋菜街北175-177號和益樓" + }, + { + "building": "鉅成大樓", + "address": "九龍油尖旺區西洋菜街北290-302號鉅成大樓" + }, + { + "building": "同發樓", + "address": "九龍油尖旺區西洋菜街北306-310A號同發樓" + }, + { + "building": "壽菊樓", + "address": "九龍油尖旺區西洋菜街北312-314號壽菊樓" + }, + { + "building": "亞洲大樓", + "address": "九龍油尖旺區西洋菜街北326-328號亞洲大樓" + }, + { + "building": "五寶大廈", + "address": "九龍油尖旺區西洋菜街南103-109號五寶大廈" + }, + { + "building": "捷利大廈", + "address": "九龍油尖旺區西洋菜街南178-182A號捷利大廈" + }, + { + "building": "西洋大樓", + "address": "九龍油尖旺區西洋菜街南190-194A???西洋大樓" + }, + { + "building": "兆萬中心", + "address": "九龍油尖旺區西洋菜街南1N號兆萬中心" + }, + { + "building": "長寧大廈", + "address": "九龍油尖旺區西洋菜街南258-260號長寧大廈" + }, + { + "building": "遠景大廈", + "address": "九龍油尖旺區西洋菜街南26-36號遠景大廈" + }, + { + "building": "銀城廣場", + "address": "九龍油尖旺區西洋菜街南2A-H號銀城廣場" + }, + { + "building": "新江大樓", + "address": "九龍油尖旺區西洋菜街南2J-2Q號新江大樓" + }, + { + "building": "添置商業中心", + "address": "九龍油尖旺區西洋菜街南2T號添置商業中心" + }, + { + "building": "達利商業大廈", + "address": "九龍油尖旺區西洋菜街南2Y號達利商業大廈" + }, + { + "building": "萬高商業大廈", + "address": "九龍油尖旺區西洋菜街南38-40號萬高商業大廈" + }, + { + "building": "(寶華大廈)", + "address": "九龍油尖旺區西洋菜街南42-44號(寶華大廈)" + }, + { + "building": "友誠商業中心", + "address": "九龍油尖旺區西洋菜街南51號友誠商業中心" + }, + { + "building": "好望角大廈", + "address": "九龍油尖旺區西洋菜街南5-7號好望角大廈" + }, + { + "building": "中信大廈", + "address": "九龍油尖旺區西洋菜街南6-12號中信大廈" + }, + { + "building": "旺角城市中心", + "address": "九龍油尖旺區西洋菜街南74-84號旺角城市中心" + }, + { + "building": "聯興大廈", + "address": "九龍油尖旺區西洋菜街南86-88號聯興大廈" + }, + { + "building": "志和商業大廈", + "address": "九龍油尖旺區西貢街20號志和商業大廈" + }, + { + "building": "昌華商業大廈", + "address": "九龍油尖旺區西貢街3-5號昌華商業大廈" + }, + { + "building": "耀棠閣", + "address": "九龍油尖旺區佐敦道10-12號耀棠閣" + }, + { + "building": "嘉信樓", + "address": "九龍油尖旺區佐敦道14-16號嘉信樓" + }, + { + "building": "鴻運大樓", + "address": "九龍油尖旺區佐敦道18-24號鴻運大樓" + }, + { + "building": "福樂大廈", + "address": "九龍油尖旺區佐敦道21號福樂大廈" + }, + { + "building": "金誠大廈", + "address": "九龍油尖旺區佐敦道24A-26號金誠大廈" + }, + { + "building": "餘慶大廈", + "address": "九龍油尖旺區佐敦道26B-26D號餘慶大廈" + }, + { + "building": "寶輝閣", + "address": "九龍油尖旺區佐敦道26E號寶輝閣" + }, + { + "building": "百誠大廈", + "address": "九龍油尖旺區佐敦道31-37號百誠大廈" + }, + { + "building": "道興樓", + "address": "九龍油尖旺區佐敦道32-34號道興樓" + }, + { + "building": "德寶城商業中心", + "address": "九龍油尖旺區佐敦道37A-37B號德寶城商業中心" + }, + { + "building": "佐敦中心", + "address": "九龍油尖旺區佐敦道37C-37D號佐敦中心" + }, + { + "building": "統一大廈A座", + "address": "九龍油尖旺區佐敦道37E-37K號統一大廈A座" + }, + { + "building": "佐敦大廈", + "address": "九龍油尖旺區佐敦道37L-37P號佐敦大廈" + }, + { + "building": "保文大廈", + "address": "九龍油尖旺區佐敦道37U號保文大廈" + }, + { + "building": "聯德大廈", + "address": "九龍油尖旺區佐敦道40-44A號聯德大廈" + }, + { + "building": "瑜德大廈", + "address": "九龍油尖旺區佐敦道45-49號瑜德大廈" + }, + { + "building": "利僑大廈", + "address": "九龍油尖旺區佐敦道51號利僑大廈" + }, + { + "building": "至秀商業大廈", + "address": "九龍油尖旺區佐敦道5號至秀商業大廈" + }, + { + "building": "高基大廈", + "address": "九龍油尖旺區佐敦道9-11號高基大廈" + }, + { + "building": "利奧坊。曉岸", + "address": "九龍油尖旺區利得街11號利奧坊。曉岸" + }, + { + "building": "利得大廈", + "address": "九龍油尖旺區利得街40-42號利得大廈" + }, + { + "building": "海角樓", + "address": "九龍油尖旺區利得街44-54號海角樓" + }, + { + "building": "有利樓", + "address": "九龍油尖旺區利業街14-18號有利樓" + }, + { + "building": "顯發大廈", + "address": "九龍油尖旺區吳松街108號顯發大廈" + }, + { + "building": "穎嘉樓", + "address": "九龍油尖旺區吳松街119-121號穎嘉樓" + }, + { + "building": "利際商業大廈", + "address": "九龍油尖旺區吳松街122號利際商業大廈" + }, + { + "building": "吳淞大樓", + "address": "九龍油尖旺區吳松街123-127號吳淞大樓" + }, + { + "building": "金淞大廈", + "address": "九龍油尖旺區吳松街130-142號金淞大廈" + }, + { + "building": "嘉和大廈", + "address": "九龍油尖旺區吳松街131-137號嘉和大廈" + }, + { + "building": "創遠樓", + "address": "九龍油尖旺區吳松街1-3號創遠樓" + }, + { + "building": "寶業商業大廈", + "address": "九龍油尖旺區吳松街147號寶業商業大廈" + }, + { + "building": "龍匯商業大廈", + "address": "九龍油尖旺區吳松街149-151號龍匯商業大廈" + }, + { + "building": "金源樓", + "address": "九龍油尖旺區吳松街15-17號金源樓" + }, + { + "building": "寶樂大樓", + "address": "九龍油尖旺區吳松街154-164號寶樂大樓" + }, + { + "building": "置域商業大廈", + "address": "九龍油尖旺區吳松街165-167號置域商業大廈" + }, + { + "building": "榮國中心", + "address": "九龍油尖旺區吳松街174-184號榮國中心" + }, + { + "building": "突破中心", + "address": "九龍油尖旺區吳松街191號突破中心" + }, + { + "building": "大觀樓", + "address": "九龍油尖旺區吳松街42-52號大觀樓" + }, + { + "building": "文績樓", + "address": "九龍油尖旺區吳松街45-51號文績樓" + }, + { + "building": "幸福商業大廈", + "address": "九龍油尖旺區吳松街62-64號幸福商業大廈" + }, + { + "building": "金寶大廈", + "address": "九龍油尖旺區吳松街67-77號金寶大廈" + }, + { + "building": "德利樓", + "address": "九龍油尖旺區吳松街93-103號德利樓" + }, + { + "building": "利金閣", + "address": "九龍油尖旺區庇利金街13-25號利金閣" + }, + { + "building": "富利商業大廈", + "address": "九龍油尖旺區庇利金街14-20號富利商業大廈" + }, + { + "building": "大達大廈", + "address": "九龍油尖旺區庇利金街26-34號大達大廈" + }, + { + "building": "誠興樓", + "address": "九龍油尖旺區庇利金街53-55號誠興樓" + }, + { + "building": "百利金商業大廈", + "address": "九龍油尖旺區庇利金街8號百利金商業大廈" + }, + { + "building": "志和街13號", + "address": "九龍油尖旺區志和街13號" + }, + { + "building": "金基大樓", + "address": "九龍油尖旺區杉樹街2-16號金基大樓" + }, + { + "building": "百新商業大廈", + "address": "九龍油尖旺區杉樹街33號百新商業大廈" + }, + { + "building": "大利樓", + "address": "九龍油尖旺區角祥街31-41號大利樓" + }, + { + "building": "中堅樓", + "address": "九龍油尖旺區角祥街78-96A號中堅樓" + }, + { + "building": "雅士洋樓", + "address": "九龍油尖旺區亞士厘道10-14號雅士洋樓" + }, + { + "building": "好利時大廈", + "address": "九龍油尖旺區亞士厘道22號好利時大廈" + }, + { + "building": "天星大廈", + "address": "九龍油尖旺區亞士厘道24-38號天星大廈" + }, + { + "building": "ASHLEY 27", + "address": "九龍油尖旺區亞士厘道27號ASHLEY 27" + }, + { + "building": "利華樓", + "address": "九龍油尖旺區亞士厘道8號利華樓" + }, + { + "building": "麗榮樓", + "address": "九龍油尖旺區亞皆老街103,103A,105,105A號麗榮樓" + }, + { + "building": "皆旺商業大廈", + "address": "九龍油尖旺區亞皆老街109號皆旺商業大廈" + }, + { + "building": "廣亞大廈", + "address": "九龍油尖旺區亞皆老街15-17號廣亞大廈" + }, + { + "building": "旺角商業大廈", + "address": "九龍油尖旺區亞皆老街16-16B號旺角商業大廈" + }, + { + "building": "東方大廈", + "address": "九龍油尖旺區亞皆老街24-26號東方大廈" + }, + { + "building": "啟如商業大廈", + "address": "九龍油尖旺區亞皆老街2C號啟如商業大廈" + }, + { + "building": "新風樓", + "address": "九龍油尖旺區亞皆老街2號新風樓" + }, + { + "building": "金山商業中心", + "address": "九龍油尖旺區亞皆老街39-41號金山商業中心" + }, + { + "building": "利群大樓", + "address": "九龍油尖旺區亞皆老街40-46號利群大樓" + }, + { + "building": "雅佳樓", + "address": "九龍油尖旺區亞皆老街43-49號雅佳樓" + }, + { + "building": "新輝大廈", + "address": "九龍油尖旺區亞皆老街48-50號新輝大廈" + }, + { + "building": "利安大樓", + "address": "九龍油尖旺區亞皆老街56-62號利安大樓" + }, + { + "building": "偉基樓", + "address": "九龍油尖旺區亞皆老街64-70號偉基樓" + }, + { + "building": "康樂大樓", + "address": "九龍油尖旺區亞皆老街72-78號康樂大樓" + }, + { + "building": "宏安大廈", + "address": "九龍油尖旺區亞皆老街73-81號宏安大廈" + }, + { + "building": "先施大廈", + "address": "九龍油尖旺區亞皆老街83號先施大廈" + }, + { + "building": "先達廣場", + "address": "九龍油尖旺區亞皆老街83號先達廣場" + }, + { + "building": "利豐大廈", + "address": "九龍油尖旺區亞皆老街88-96號利豐大廈" + }, + { + "building": "京士柏山洋房", + "address": "九龍油尖旺區京士柏山道" + }, + { + "building": "帝庭園", + "address": "九龍油尖旺區京士柏道1號帝庭園" + }, + { + "building": "爵士花園", + "address": "九龍油尖旺區京士柏道33號爵士花園" + }, + { + "building": "仁傑大廈", + "address": "九龍油尖旺區官涌街14-18號仁傑大廈" + }, + { + "building": "官涌唐樓", + "address": "九龍油尖旺區官涌街15-21號官涌唐樓" + }, + { + "building": "喜滿懷大廈", + "address": "九龍油尖旺區官涌街24-30號喜滿懷大廈" + }, + { + "building": "The Austine Place", + "address": "九龍油尖旺區官涌街38號The Austine Place" + }, + { + "building": "官涌大樓", + "address": "九龍油尖旺區官涌街44-48號官涌大樓" + }, + { + "building": "匯萃", + "address": "九龍油尖旺區官涌街7號匯萃" + }, + { + "building": "藝旺商業大廈", + "address": "九龍油尖旺區旺角道11-13號藝旺商業大廈" + }, + { + "building": "日本信用大廈", + "address": "九龍油尖旺區旺角道16號日本信用大廈" + }, + { + "building": "旺角道壹號商業中心", + "address": "九龍油尖旺區旺角道1號旺角道壹號商業中心" + }, + { + "building": "琪恒中心", + "address": "九龍油尖旺區旺角道2A號琪恒中心" + }, + { + "building": "寶安大樓", + "address": "九龍油尖旺區旺角道30-36號寶安大樓" + }, + { + "building": "凱途發展大廈", + "address": "九龍油尖旺區旺角道33號凱途發展大廈" + }, + { + "building": "龍旺大廈", + "address": "九龍油尖旺區旺角道38-44號龍旺大廈" + }, + { + "building": "忠利大廈", + "address": "九龍油尖旺區旺角道46-48號忠利大廈" + }, + { + "building": "豪華廣場", + "address": "九龍油尖旺區旺角道4號豪華廣場" + }, + { + "building": "光榮大樓", + "address": "九龍油尖旺區旺角道8-8C號光榮大樓" + }, + { + "building": "華懋王子大廈", + "address": "九龍油尖旺區旺角道93-99號華懋王子大廈" + }, + { + "building": "中耀樓", + "address": "九龍油尖旺區旺堤街78-90號中耀樓" + }, + { + "building": "東裕大廈", + "address": "九龍油尖旺區東方街6-8A號東裕大廈" + }, + { + "building": "東方樓", + "address": "九龍油尖旺區東方街9, 10 & 10A號東方樓" + }, + { + "building": "寶亨大廈", + "address": "九龍油尖旺區東安街" + }, + { + "building": "東安閣", + "address": "九龍油尖旺區東安街17-21號東安閣" + }, + { + "building": "東興大廈", + "address": "九龍油尖旺區東安街23-33號東興大廈" + }, + { + "building": "萬安樓", + "address": "九龍油尖旺區東安街2-4號萬安樓" + }, + { + "building": "順豐大廈", + "address": "九龍油尖旺區東安街3號順豐大廈" + }, + { + "building": "海昇大廈", + "address": "九龍油尖旺區東安街40-48號海昇大廈" + }, + { + "building": "書匯", + "address": "九龍油尖旺區東安街50號書匯" + }, + { + "building": "松林大廈", + "address": "九龍油尖旺區松山道5-11號松林大廈" + }, + { + "building": "松山大廈", + "address": "九龍油尖旺區松山道8號松山大廈" + }, + { + "building": "名鑄", + "address": "九龍油尖旺區河內道18號名鑄" + }, + { + "building": "世紀商業大廈", + "address": "九龍油尖旺區河內道3-4號世紀商業大廈" + }, + { + "building": "普基商業大廈", + "address": "九龍油尖旺區河內道5-7號普基商業大廈." + }, + { + "building": "利興大樓", + "address": "九龍油尖旺區花園街107-123號利興大樓" + }, + { + "building": "四海大廈", + "address": "九龍油尖旺區花園街11-11A號四海大廈" + }, + { + "building": "大安大廈", + "address": "九龍油尖旺區花園街120-126號大安大廈" + }, + { + "building": "友和大樓", + "address": "九龍油尖旺區花園街132-136A號友和大樓" + }, + { + "building": "利鴻大樓", + "address": "九龍油尖旺區花園街137-143號利鴻大樓" + }, + { + "building": "聯安大廈", + "address": "九龍油尖旺區花園街142-148號聯安大廈" + }, + { + "building": "僑明大廈", + "address": "九龍油尖旺區花園街145-161號僑明大廈" + }, + { + "building": "華美樓", + "address": "九龍油尖旺區花園街150-156號華美樓" + }, + { + "building": "華園大廈", + "address": "九龍油尖旺區花園街158-164號華園大廈" + }, + { + "building": "兆業大廈", + "address": "九龍油尖旺區花園街183-189號兆業大廈" + }, + { + "building": "華園閣", + "address": "九龍油尖旺區花園街18號華園閣" + }, + { + "building": "華美樓", + "address": "九龍油尖旺區花園街191-193,195-197號華美樓" + }, + { + "building": "樂富大廈", + "address": "九龍油尖旺區花園街199-205號樂富大廈" + }, + { + "building": "花園廣場", + "address": "九龍油尖旺區花園街19號花園廣場" + }, + { + "building": "鴻禧大廈", + "address": "九龍油尖旺區花園街1號鴻禧大廈" + }, + { + "building": "東發樓", + "address": "九龍油尖旺區花園街200-206A號東發樓" + }, + { + "building": "宜豐大廈", + "address": "九龍油尖旺區花園街207-209號宜豐大廈" + }, + { + "building": "金發大廈", + "address": "九龍油尖旺區花園街208-214號金發大廈" + }, + { + "building": "花園大樓", + "address": "九龍油尖旺區花園街211-215A號花園大樓" + }, + { + "building": "花園閣", + "address": "九龍油尖旺區花園街216-218號花園閣" + }, + { + "building": "好景商業中心", + "address": "九龍油尖旺區花園街2-16號好景商業中心" + }, + { + "building": "金楓雅閣", + "address": "九龍油尖旺區花園街222號金楓雅閣" + }, + { + "building": "黃禮賢大廈", + "address": "九龍油尖旺區花園街232-242號黃禮賢大廈" + }, + { + "building": "偉雄大廈", + "address": "九龍油尖旺區花園街233-235號偉雄大廈" + }, + { + "building": "嘉慶苑", + "address": "九龍油尖旺區花園街239-243號嘉慶苑" + }, + { + "building": "蕙寧閣", + "address": "九龍油尖旺區花園街244-246號蕙寧閣" + }, + { + "building": "曉翠閣", + "address": "九龍油尖旺區花園街250號曉翠閣" + }, + { + "building": "富寧閣", + "address": "九龍油尖旺區花園街254-266號富寧閣" + }, + { + "building": "鴻威大廈第一座", + "address": "九龍油尖旺區花園街3-5號鴻威大廈第一座" + }, + { + "building": "鴻威大廈購物商場", + "address": "九龍油尖旺區花園街3-5號鴻威大廈購物商場" + }, + { + "building": "金旺樓", + "address": "九龍油尖旺區花園街37-39A號金旺樓" + }, + { + "building": "宏景大廈", + "address": "九龍油尖旺區花園街59號宏景大廈" + }, + { + "building": "忠信大廈", + "address": "九龍油尖旺區花園街60-62號忠信大廈" + }, + { + "building": "金都大廈", + "address": "九龍油尖旺區花園街64-68號金都大廈" + }, + { + "building": "花園商業大廈", + "address": "九龍油尖旺區花園街75-77號花園商業大廈" + }, + { + "building": "裕旺大廈", + "address": "九龍油尖旺區花園街7-9號裕旺大廈" + }, + { + "building": "建興大廈", + "address": "九龍油尖旺區花園街97號建興大廈" + }, + { + "building": "瓊華閣", + "address": "九龍油尖旺區花墟道10-16號瓊華閣" + }, + { + "building": "靄華閣", + "address": "九龍油尖旺區花墟道22-26號靄華閣" + }, + { + "building": "文華閣", + "address": "九龍油尖旺區花墟道28-36號文華閣" + }, + { + "building": "百花閣", + "address": "九龍油尖旺區花墟道2-8號百花閣" + }, + { + "building": "恒港中心", + "address": "九龍油尖旺區金巴利街1B號恒港中心" + }, + { + "building": "天文閣", + "address": "九龍油尖旺區金巴利街2A號天文閣" + }, + { + "building": "菲力大廈", + "address": "九龍油尖旺區金巴利街5號菲力大廈" + }, + { + "building": "安聯大廈", + "address": "九龍油尖旺區金巴利街7-15號安聯大廈" + }, + { + "building": "香檳大廈B座", + "address": "九龍油尖旺區金巴利道16號香檳大廈B座" + }, + { + "building": "長利商業大廈", + "address": "九龍油尖旺區金巴利道25號長利商業大廈" + }, + { + "building": "永利大廈", + "address": "九龍油尖旺區金巴利道27-33號永利大廈" + }, + { + "building": "金巴利廣場", + "address": "九龍油尖旺區金巴利道45-47號金巴利廣場" + }, + { + "building": "東匯大廈", + "address": "九龍油尖旺區金巴利道46-48號東匯大廈" + }, + { + "building": "金興大廈", + "address": "九龍油尖旺區金巴利道49-51號金興大廈" + }, + { + "building": "金碧閣", + "address": "九龍油尖旺區金巴利道58-60A號金碧閣" + }, + { + "building": "嘉新大廈", + "address": "九龍油尖旺區金巴利道61-63號嘉新大廈" + }, + { + "building": "順輝大廈", + "address": "九龍油尖旺區金巴利道64-66A號順輝大廈" + }, + { + "building": "太平洋大廈", + "address": "九龍油尖旺區金巴利道65-67B號太平洋大廈" + }, + { + "building": "美園大廈", + "address": "九龍油尖旺區金巴利道69-71A號美園大廈" + }, + { + "building": "奇盛中心", + "address": "九龍油尖旺區金巴利道74-76號奇盛中心" + }, + { + "building": "東南大樓", + "address": "九龍油尖旺區金巴利道75-77號東南大樓" + }, + { + "building": "金輝閣", + "address": "九龍油尖旺區金巴利道78號金輝閣" + }, + { + "building": "奇盛商業大廈", + "address": "九龍油尖旺區金巴利道80號奇盛商業大廈" + }, + { + "building": "金閣大廈", + "address": "九龍油尖旺區金巴利道82-84號金閣大廈" + }, + { + "building": "宏威中心", + "address": "九龍油尖旺區金馬倫道10-10A號宏威中心" + }, + { + "building": "萬勤商業大廈", + "address": "九龍油尖旺區金馬倫道18-20號萬勤商業大廈" + }, + { + "building": "東麗中心", + "address": "九龍油尖旺區金馬倫道22-24號東麗中心" + }, + { + "building": "金馬倫廣場", + "address": "九龍油尖旺區金馬倫道23-25A號金馬倫廣場" + }, + { + "building": "利達行", + "address": "九龍油尖旺區金馬倫道2-4A號利達行" + }, + { + "building": "金壘商業中心", + "address": "九龍油尖旺區金馬倫道26-28號金壘商業中心" + }, + { + "building": "金馬商業大廈", + "address": "九龍油尖旺區金馬倫道30-32號金馬商業大廈" + }, + { + "building": "金龍中心", + "address": "九龍油尖旺區金馬倫道38-40號金龍中心" + }, + { + "building": "波蒂妮斯大廈", + "address": "九龍油尖旺區金馬倫道3號波蒂妮斯大廈" + }, + { + "building": "華懋金馬倫中心", + "address": "九龍油尖旺區金馬倫道42號華懋金馬倫中心" + }, + { + "building": "中國保險大廈", + "address": "九龍油尖旺區金馬倫道48號中國保險大廈" + }, + { + "building": "龍記大廈", + "address": "九龍油尖旺區金馬倫道54-56號龍記大廈" + }, + { + "building": "國鈀大廈", + "address": "九龍油尖旺區金馬倫道58-60號國鈀大廈" + }, + { + "building": "太興廣場", + "address": "九龍油尖旺區金馬倫道5號太興廣場" + }, + { + "building": "長興大廈", + "address": "九龍油尖旺區長旺道15號長興大廈" + }, + { + "building": "長旺大廈", + "address": "九龍油尖旺區長旺道17號長旺大廈" + }, + { + "building": "長旺雅苑", + "address": "九龍油尖旺區長旺道9-11號長旺雅苑" + }, + { + "building": "木的地", + "address": "九龍油尖旺區長樂街11-21號木的地" + }, + { + "building": "德威大廈", + "address": "九龍油尖旺區長樂街23-27號德威大廈" + }, + { + "building": "文興樓", + "address": "九龍油尖旺區長樂街6-12號文興樓" + }, + { + "building": "嘉南樓", + "address": "九龍油尖旺區南京街13號嘉南樓" + }, + { + "building": "益美大廈", + "address": "九龍油尖旺區南京街22-28號益美大廈" + }, + { + "building": "懷高大廈", + "address": "九龍油尖旺區南京街3-5號懷高大廈" + }, + { + "building": "藍馬商業大廈", + "address": "九龍油尖旺區厚福街12-12A號藍馬商業大廈" + }, + { + "building": "華博商業大廈", + "address": "九龍油尖旺區厚福街3號華博商業大廈" + }, + { + "building": "多富閣", + "address": "九龍油尖旺區厚福街5-6號多富閣" + }, + { + "building": "豪華閣", + "address": "九龍油尖旺區厚福街9號豪華閣" + }, + { + "building": "咸美頓大廈", + "address": "九龍油尖旺區咸美頓街1-5A號咸美頓大廈" + }, + { + "building": "華麗閣", + "address": "九龍油尖旺區柏樹街19-23號華麗閣" + }, + { + "building": "依利大廈", + "address": "九龍油尖旺區染布房街12-14A號依利大廈" + }, + { + "building": "富華樓", + "address": "九龍油尖旺區染布房街1A-1B號富華樓" + }, + { + "building": "藝興大廈", + "address": "九龍油尖旺區染布房街5號藝興大廈" + }, + { + "building": "好安樓", + "address": "九龍油尖旺區柯士甸路107-109號好安樓" + }, + { + "building": "金屋大廈", + "address": "九龍油尖旺區柯士甸路1-1A號金屋大廈" + }, + { + "building": "僑豐大廈", + "address": "九龍油尖旺區柯士甸路14-18C號僑豐大廈" + }, + { + "building": "嘉華大廈", + "address": "九龍油尖旺區柯士甸路15B號嘉華大廈" + }, + { + "building": "良友大廈", + "address": "九龍油尖旺區柯士甸路15C號良友大廈" + }, + { + "building": "金巴利大廈", + "address": "九龍油尖旺區柯士甸路15號金巴利大廈" + }, + { + "building": "豐樂大廈", + "address": "九龍油尖旺區柯士甸路17號豐樂大廈" + }, + { + "building": "保發商業大廈", + "address": "九龍油尖旺區柯士甸路20號保發商業大廈" + }, + { + "building": "新港國際大廈", + "address": "九龍油尖旺區柯士甸路28號新港國際大廈" + }, + { + "building": "NEW AUSTIN CENTRE", + "address": "九龍油尖旺區柯士甸路2號NEW AUSTIN CENTRE" + }, + { + "building": "柯士甸商業中心", + "address": "九龍油尖旺區柯士甸路4號柯士甸商業中心" + }, + { + "building": "煥利商業大廈", + "address": "九龍油尖旺區柯士甸路7-9號煥利商業大廈" + }, + { + "building": "凱旋門", + "address": "九龍油尖旺區柯士甸路西1號" + }, + { + "building": "耀基大樓", + "address": "九龍油尖旺區柯士甸道106-108號耀基大樓" + }, + { + "building": "靄雲大廈", + "address": "九龍油尖旺區柯士甸道110-112A號靄雲大廈" + }, + { + "building": "百達行", + "address": "九龍油尖旺區柯士甸道11-15號百達行" + }, + { + "building": "山林", + "address": "九龍油尖旺區柯士甸道114-116號山林" + }, + { + "building": "業廣商業大廈", + "address": "九龍油尖旺區柯士甸道118-120號業廣商業大廈" + }, + { + "building": "帝寶樓", + "address": "九龍油尖旺區柯士甸道124-126號帝寶樓" + }, + { + "building": "嘉碧大廈", + "address": "九龍油尖旺區柯士甸道130號嘉碧大廈" + }, + { + "building": "金門商業大廈", + "address": "九龍油尖旺區柯士甸道136-138號金門商業大廈" + }, + { + "building": "瑞信集團大廈", + "address": "九龍油尖旺區柯士甸道140-142號瑞信集團大廈" + }, + { + "building": "好兆年行", + "address": "九龍油尖旺區柯士甸道152號好兆年行" + }, + { + "building": "柯士甸道花園大廈", + "address": "九龍油尖旺區柯士甸道154-156號柯士甸道花園大廈" + }, + { + "building": "永發大廈", + "address": "九龍油尖旺區柯士甸道19-23號永發大廈" + }, + { + "building": "偉安大廈", + "address": "九龍油尖旺區柯士甸道3-3A號" + }, + { + "building": "聯業大廈", + "address": "九龍油尖旺區柯士甸道45-53號聯業大廈" + }, + { + "building": "幸運大廈", + "address": "九龍油尖旺區柯士甸道65號幸運大廈" + }, + { + "building": "香港商業專科學校", + "address": "九龍油尖旺區柯士甸道79-81號香港商業專科學校" + }, + { + "building": "柯士甸廣場", + "address": "九龍油尖旺區柯士甸道83號柯士甸廣場" + }, + { + "building": "香港童軍中心", + "address": "九龍油尖旺區柯士甸道8號香港童軍中心" + }, + { + "building": "正記大樓", + "address": "九龍油尖旺區柯士甸道91-95號正記大樓" + }, + { + "building": "君臨天下", + "address": "九龍油尖旺區柯士甸道西1號" + }, + { + "building": "天?", + "address": "九龍油尖旺區柯士甸道西1號天?" + }, + { + "building": "漾日居", + "address": "九龍油尖旺區柯士甸道西1號漾日居" + }, + { + "building": "擎天半島", + "address": "九龍油尖旺區柯士甸道西1號擎天半島" + }, + { + "building": "環球貿易廣場", + "address": "九龍油尖旺區柯士甸道西1號環球貿易廣場" + }, + { + "building": "Grand Austin", + "address": "九龍油尖旺區柯士甸道西9號Grand Austin" + }, + { + "building": "形品.星寓", + "address": "九龍油尖旺區洋松街1號形品.星寓" + }, + { + "building": "時安大廈", + "address": "九龍油尖旺區洋松街46-48號時安大廈" + }, + { + "building": "雙喜樓", + "address": "九龍油尖旺區洋松街4-6A號雙喜樓" + }, + { + "building": "長發工業大廈", + "address": "九龍油尖旺區洋松街64-76號長發工業大廈" + }, + { + "building": "君豪工商大廈", + "address": "九龍油尖旺區洋松街73-79號君豪工商大廈" + }, + { + "building": "洋松工業大廈", + "address": "九龍油尖旺區洋松街8-10號洋松工業大廈" + }, + { + "building": "納東中心", + "address": "九龍油尖旺區洋松街81-83號納東中心" + }, + { + "building": "康泰工廈", + "address": "九龍油尖旺區洋松街85號康泰工廈" + }, + { + "building": "永嘉工廠大廈", + "address": "九龍油尖旺區洋松街87號永嘉工廠大廈" + }, + { + "building": "科興中心", + "address": "九龍油尖旺區洋松街88號科興中心" + }, + { + "building": "建聯工廠大廈", + "address": "九龍油尖旺區洋松街89-91號建聯工廠大廈" + }, + { + "building": "建煌華廈", + "address": "九龍油尖旺區洗衣街" + }, + { + "building": "國際大廈", + "address": "九龍油尖旺區洗衣街137-139號國際大廈" + }, + { + "building": "正華大廈", + "address": "九龍油尖旺區洗衣街141-145號正華大廈" + }, + { + "building": "榮梅大廈", + "address": "九龍油尖旺區洗衣街147-149A號榮梅大廈" + }, + { + "building": "嘉德大廈", + "address": "九龍油尖旺區洗衣街167-175號嘉德大廈" + }, + { + "building": "瑞意華廈", + "address": "九龍油尖旺區洗衣街177-179號瑞意華廈" + }, + { + "building": "貴華閣", + "address": "九龍油尖旺區洗衣街181-183號貴華閣" + }, + { + "building": "伊利莎大廈", + "address": "九龍油尖旺區洗衣街185-191號伊利莎大廈" + }, + { + "building": "蕙逸居", + "address": "九龍油尖旺區洗衣街193-199號蕙逸居" + }, + { + "building": "耀昌大廈", + "address": "九龍油尖旺區洗衣街201-203號耀昌大廈" + }, + { + "building": "仁歡花園", + "address": "九龍油尖旺區洗衣街233-239號仁歡花園" + }, + { + "building": "瑞珍閣", + "address": "九龍油尖旺區洗衣街241-243號瑞珍閣" + }, + { + "building": "興業樓", + "address": "九龍油尖旺區洗衣街24-26號興業樓" + }, + { + "building": "僑熹樓", + "address": "九龍油尖旺區洗衣街245-251號僑熹樓" + }, + { + "building": "金雞廣場", + "address": "九龍油尖旺區洗衣街39號金雞廣場" + }, + { + "building": "得寶大廈", + "address": "九龍油尖旺區洗衣街62-72號得寶大廈" + }, + { + "building": "德利大廈", + "address": "九龍油尖旺區炮台街10-18號德利大廈" + }, + { + "building": "德昌大廈", + "address": "九龍油尖旺區炮台街107-117號德昌大廈" + }, + { + "building": "常安大廈", + "address": "九龍油尖旺區炮台街11-17號常安大廈" + }, + { + "building": "順利樓", + "address": "九龍油尖旺區炮台街19-21號順利樓" + }, + { + "building": "南京樓", + "address": "九龍油尖旺區炮台街27號南京樓" + }, + { + "building": "寶倫大廈", + "address": "九龍油尖旺區炮台街28-34號寶倫大廈" + }, + { + "building": "捷邦樓", + "address": "九龍油尖旺區炮台街54-56號捷邦樓" + }, + { + "building": "光裕大廈", + "address": "九龍油尖旺區炮台街65-71A號光裕大廈" + }, + { + "building": "啟儀閣", + "address": "九龍油尖旺區炮台街66-70號啟儀閣" + }, + { + "building": "順華大廈", + "address": "九龍油尖旺區炮台街73號順華大廈" + }, + { + "building": "德基大廈", + "address": "九龍油尖旺區炮台街95-105號德基大廈" + }, + { + "building": "南楓樓", + "address": "九龍油尖旺區界限街10F-10H號南楓樓" + }, + { + "building": "興隆大樓", + "address": "九龍油尖旺區界限街12A號興隆大樓" + }, + { + "building": "華生樓", + "address": "九龍油尖旺區界限街14號華生樓" + }, + { + "building": "業利樓", + "address": "九龍油尖旺區界限街20-22號業利樓" + }, + { + "building": "萬利樓", + "address": "九龍油尖旺區界限街24-26號萬利樓" + }, + { + "building": "裕成樓", + "address": "九龍油尖旺區界限街28-30號裕成樓" + }, + { + "building": "仁友大廈", + "address": "九龍油尖旺區界限街2E-2F號仁友大廈" + }, + { + "building": "界限大樓", + "address": "九龍油尖旺區界限街2號界限大樓" + }, + { + "building": "民興大廈", + "address": "九龍油尖旺區界限街32-34A號民興大廈" + }, + { + "building": "金華大樓", + "address": "九龍油尖旺區界限街38L-38N號金華大樓" + }, + { + "building": "福群大廈", + "address": "九龍油尖旺區界限街4-10號福群大廈" + }, + { + "building": "福祿大廈", + "address": "九龍油尖旺區界限街44-48號福祿大廈" + }, + { + "building": "碧柏苑", + "address": "九龍油尖旺區界限街54-56號碧柏苑" + }, + { + "building": "新文華中心", + "address": "九龍油尖旺區科學館道14號新文華中心" + }, + { + "building": "華懋廣場", + "address": "九龍油尖旺區科學館道16號華懋廣場" + }, + { + "building": "新東海商業中心", + "address": "九龍油尖旺區科學館道9號新東海商業中心" + }, + { + "building": "中美樓", + "address": "九龍油尖旺區美安街1-29號中美樓" + }, + { + "building": "茂林商業大廈", + "address": "九龍油尖旺區茂林街16-18號茂林商業大廈" + }, + { + "building": "雅達行", + "address": "九龍油尖旺區茂林街2號雅達行" + }, + { + "building": "香港善一堂道德協會", + "address": "九龍油尖旺區香港善一堂道德協會" + }, + { + "building": "嘉韻閣", + "address": "九龍油尖旺區埃華街18號嘉韻閣" + }, + { + "building": "明泰樓", + "address": "九龍油尖旺區埃華街1號明泰樓" + }, + { + "building": "永利工業大廈", + "address": "九龍油尖旺區埃華街26-28號永利工業大廈" + }, + { + "building": "安業工廠大廈", + "address": "九龍油尖旺區埃華街33號安業工廠大廈" + }, + { + "building": "海明閣", + "address": "九龍油尖旺區振榮街8-12號海明閣" + }, + { + "building": "周演森信託基金大廈", + "address": "九龍油尖旺區晏架街10號周演森信託基金大廈" + }, + { + "building": "置發樓", + "address": "九龍油尖旺區晏架街3號置發樓" + }, + { + "building": "麗華中心", + "address": "九龍油尖旺區晏架街4號麗華中心" + }, + { + "building": "海康大廈", + "address": "九龍油尖旺區晏架街65-67號海康大廈" + }, + { + "building": "星光行", + "address": "九龍油尖旺區梳士巴利道3號星光行" + }, + { + "building": "凱帆軒第一座", + "address": "九龍油尖旺區海帆道11號凱帆軒第一座" + }, + { + "building": "寶豐大廈", + "address": "九龍油尖旺區海防道32-34號寶豐大廈" + }, + { + "building": "海利行", + "address": "九龍油尖旺區海防道35-37號海利行" + }, + { + "building": "中達大廈", + "address": "九龍油尖旺區海防道38-40號中達大廈" + }, + { + "building": "The Camphora", + "address": "九龍油尖旺區海防道51-52號The Camphora" + }, + { + "building": "帝?.皇殿帝?皇殿", + "address": "九龍油尖旺區海泓道1號帝?.皇殿帝?皇殿" + }, + { + "building": "富榮花園", + "address": "九龍油尖旺區海庭道" + }, + { + "building": "帝柏海灣", + "address": "九龍油尖旺區海庭道18號帝柏海灣" + }, + { + "building": "柏景灣", + "address": "九龍油尖旺區海庭道18號柏景灣" + }, + { + "building": "海富苑", + "address": "九龍油尖旺區海庭道2號海富苑" + }, + { + "building": "瓏璽", + "address": "九龍油尖旺區海輝道10號" + }, + { + "building": "奧海城1期奧海城 1", + "address": "九龍油尖旺區海輝道11號奧海城1期奧海城 1" + }, + { + "building": "維港灣", + "address": "九龍油尖旺區海輝道11號維港灣第一座" + }, + { + "building": "一號銀海第一座", + "address": "九龍油尖旺區海輝道18號一號銀海" + }, + { + "building": "浪澄灣", + "address": "九龍油尖旺區海輝道8號" + }, + { + "building": "宜發大廈", + "address": "九龍油尖旺區砵蘭街10-16號宜發大廈" + }, + { + "building": "偉華商業大廈", + "address": "九龍油尖旺區砵蘭街109-113號偉華商業大廈" + }, + { + "building": "歐美廣場", + "address": "九龍油尖旺區砵蘭街115-121號歐美廣場" + }, + { + "building": "和豐行", + "address": "九龍油尖旺區砵蘭街120-122號和豐行" + }, + { + "building": "砵崙樓", + "address": "九龍油尖旺區砵蘭街124-128號砵崙樓" + }, + { + "building": "德榮樓", + "address": "九龍油尖旺區砵蘭街134-136號德榮樓" + }, + { + "building": "名成商業中心", + "address": "九龍油尖旺區砵蘭街138號名成商業中心" + }, + { + "building": "台山汶村商務中心大廈", + "address": "九龍油尖旺區砵蘭街139號台山汶村商務中心大廈" + }, + { + "building": "美昌大廈", + "address": "九龍油尖旺區砵蘭街141-145號美昌大廈" + }, + { + "building": "萬新大廈", + "address": "九龍油尖旺區砵蘭街163-173號萬新大廈" + }, + { + "building": "新興大廈東京銀座", + "address": "九龍油尖旺區砵蘭街180號新興大廈東京銀座" + }, + { + "building": "仁俊大廈", + "address": "九龍油尖旺區砵蘭街18-26號仁俊大廈" + }, + { + "building": "瑞興大廈", + "address": "九龍油尖旺區砵蘭街199-205號瑞興大廈" + }, + { + "building": "遠東發展旺角大廈", + "address": "九龍油尖旺區砵蘭街240-244號遠東發展旺角大廈" + }, + { + "building": "常安樓", + "address": "九龍油尖旺區砵蘭街2-4號常安樓" + }, + { + "building": "永康樓", + "address": "九龍油尖旺區砵蘭街283-285號永康樓" + }, + { + "building": "天成大廈", + "address": "九龍油尖旺區砵蘭街289-295號天成大廈" + }, + { + "building": "置富樓", + "address": "九龍油尖旺區砵蘭街301號置富樓" + }, + { + "building": "德祥大廈", + "address": "九龍油尖旺區砵蘭街304-306號德祥大廈" + }, + { + "building": "福昌大廈", + "address": "九龍油尖旺區砵蘭街314-316號福昌大廈" + }, + { + "building": "龐堅中心", + "address": "九龍油尖旺區砵蘭街332-334號龐堅中心" + }, + { + "building": "鴻業大樓", + "address": "九龍油尖旺區砵蘭街340-342號鴻業大樓" + }, + { + "building": "興旺閣", + "address": "九龍油尖旺區砵蘭街355-357號興旺閣" + }, + { + "building": "利發大廈", + "address": "九龍油尖旺區砵蘭街362A號利發大廈" + }, + { + "building": "家興樓", + "address": "九龍油尖旺區砵蘭街364-366號家興樓" + }, + { + "building": "耀中大廈", + "address": "九龍油尖旺區砵蘭街368-370A號耀中大廈" + }, + { + "building": "基隆大廈", + "address": "九龍油尖旺區砵蘭街369-379號基隆大廈" + }, + { + "building": "順好樓", + "address": "九龍油尖旺區砵蘭街39-41號順好樓" + }, + { + "building": "鴻曙商業大廈", + "address": "九龍油尖旺區砵蘭街400號鴻曙商業大廈" + }, + { + "building": "東盛大廈", + "address": "九龍油尖旺區砵蘭街402-406號東盛大廈" + }, + { + "building": "華益大樓", + "address": "九龍油尖旺區砵蘭街408-410號華益大樓" + }, + { + "building": "砵蘭大樓", + "address": "九龍油尖旺區砵蘭街412-414號砵蘭大樓" + }, + { + "building": "寶崙樓", + "address": "九龍油尖旺區砵蘭街424-428號寶崙樓" + }, + { + "building": "利聯大廈", + "address": "九龍油尖旺區砵蘭街430-436A號利聯大廈" + }, + { + "building": "慕群樓", + "address": "九龍油尖旺區砵蘭街438-440號慕群樓" + }, + { + "building": "HQ", + "address": "九龍油尖旺區砵蘭街450-454號HQ" + }, + { + "building": "iRent Apartment", + "address": "九龍油尖旺區砵蘭街46-52號iRent Apartment" + }, + { + "building": "長盛中心", + "address": "九龍油尖旺區砵蘭街61-63號長盛中心" + }, + { + "building": "昌威大廈", + "address": "九龍油尖旺區砵蘭街62-66號昌威大廈" + }, + { + "building": "幸運大廈", + "address": "九龍油尖旺區砵蘭街78-84號幸運大廈" + }, + { + "building": "美蘭大廈", + "address": "九龍油尖旺區砵蘭街86-88號美蘭大廈" + }, + { + "building": "金鳳樓", + "address": "九龍油尖旺區荔枝角道100-102號金鳳樓" + }, + { + "building": "德仁大廈", + "address": "九龍油尖旺區荔枝角道103-107號德仁大廈" + }, + { + "building": "位元樓", + "address": "九龍油尖旺區荔枝角道108-110號位元樓" + }, + { + "building": "太平洋飾物製品廠", + "address": "九龍油尖旺區荔枝角道109號太平洋飾物製品廠" + }, + { + "building": "五華樓", + "address": "九龍油尖旺區荔枝角道111-113號五華樓" + }, + { + "building": "麗寶大廈", + "address": "九龍油尖旺區荔枝角道115-117A號麗寶大廈" + }, + { + "building": "金荔閣", + "address": "九龍油尖旺區荔枝角道127-133號金荔閣" + }, + { + "building": "興寧樓", + "address": "九龍油尖旺區荔枝角道130-132號興寧樓" + }, + { + "building": "康美樓", + "address": "九龍油尖旺區荔枝角道135-137號康美樓" + }, + { + "building": "健榮樓", + "address": "九龍油尖旺區荔枝角道142號健榮樓" + }, + { + "building": "金安大廈", + "address": "九龍油尖旺區荔枝角道144-148號金安大廈" + }, + { + "building": "榮達樓", + "address": "九龍油尖旺區荔枝角道159-161號榮達樓" + }, + { + "building": "麗珠大廈", + "address": "九龍油尖旺區荔枝角道163-165號麗珠大廈" + }, + { + "building": "萬盛閣", + "address": "九龍油尖旺區荔枝角道168號萬盛閣" + }, + { + "building": "萬盛閣商舖", + "address": "九龍油尖旺區荔枝角道168號萬盛閣商舖" + }, + { + "building": "嘉福中心", + "address": "九龍油尖旺區荔枝角道175-185號嘉福中心" + }, + { + "building": "百匯軒", + "address": "九龍油尖旺區荔枝角道33號百匯軒" + }, + { + "building": "荔枝角大廈", + "address": "九龍油尖旺區荔枝角道63-69號荔枝角大廈" + }, + { + "building": "寶豐大樓", + "address": "九龍油尖旺區荔枝角道75-79號寶豐大樓" + }, + { + "building": "荔景閣", + "address": "九龍油尖旺區荔枝角道81號荔景閣" + }, + { + "building": "德豐大廈", + "address": "九龍油尖旺區荔枝角道85-91A號德豐大廈" + }, + { + "building": "鑽發樓", + "address": "九龍油尖旺區荔枝角道88號鑽發樓" + }, + { + "building": "友豐大廈", + "address": "九龍油尖旺區荔枝角道93-95號友豐大廈" + }, + { + "building": "國康大廈", + "address": "九龍油尖旺區荔枝角道94-98號國康大廈" + }, + { + "building": "應如大廈", + "address": "九龍油尖旺區荔枝角道99-101號應如大廈" + }, + { + "building": "白雲大廈", + "address": "九龍油尖旺區偉晴街10-12號白雲大廈" + }, + { + "building": "永安大樓", + "address": "九龍油尖旺區偉晴街21-27號永安大樓" + }, + { + "building": "騏邦大廈", + "address": "九龍油尖旺區偉晴街29-37號騏邦大廈" + }, + { + "building": "聯美中心", + "address": "九龍油尖旺區偉晴街44-52號聯美中心" + }, + { + "building": "偉利閣", + "address": "九龍油尖旺區偉晴街49-59號偉利閣" + }, + { + "building": "華偉大廈", + "address": "九龍油尖旺區偉晴街70-80號華偉大廈" + }, + { + "building": "偉程商業大廈", + "address": "九龍油尖旺區偉晴街77-79號偉程商業大廈" + }, + { + "building": "翡翠閣", + "address": "九龍油尖旺區偉晴街81-87號翡翠閣" + }, + { + "building": "偉業大廈", + "address": "九龍油尖旺區偉晴街82-88號偉業大廈" + }, + { + "building": "寶興大樓", + "address": "九龍油尖旺區基隆街109-119號寶興大樓" + }, + { + "building": "永基樓", + "address": "九龍油尖旺區基隆街13-15號永基樓" + }, + { + "building": "金鼎樓", + "address": "九龍油尖旺區基隆街1-3號金鼎樓" + }, + { + "building": "昌基樓", + "address": "九龍油尖旺區基隆街22-24號昌基樓" + }, + { + "building": "嘉利大廈", + "address": "九龍油尖旺區基隆街37-53號嘉利大廈" + }, + { + "building": "逸新", + "address": "九龍油尖旺區基隆街50號逸新" + }, + { + "building": "基?樓", + "address": "九龍油尖旺區基隆街55-57號基?樓" + }, + { + "building": "金隆樓", + "address": "九龍油尖旺區基隆街59-61號金隆樓" + }, + { + "building": "恒利樓", + "address": "九龍油尖旺區基隆街9-11號恒利樓" + }, + { + "building": "華康樓", + "address": "九龍油尖旺區康樂街13-20號華康樓" + }, + { + "building": "新泰大廈", + "address": "九龍油尖旺區深圳街1-6號新泰大廈" + }, + { + "building": "?豐中心", + "address": "九龍油尖旺區深旺道" + }, + { + "building": "嘉運大廈", + "address": "九龍油尖旺區深旺道3號嘉運大廈" + }, + { + "building": "君匯港", + "address": "九龍油尖旺區深旺道8號君匯港" + }, + { + "building": "駿發花園", + "address": "九龍油尖旺區眾坊街3號駿發花園" + }, + { + "building": "華富園", + "address": "九龍油尖旺區豉油街110號華富園" + }, + { + "building": "萬利商業大廈", + "address": "九龍油尖旺區豉油街15號萬利商業大廈" + }, + { + "building": "總統商業大廈", + "address": "九龍油尖旺區豉油街20-22號總統商業大廈" + }, + { + "building": "昌記大廈", + "address": "九龍油尖旺區豉油街21-21B號昌記大廈" + }, + { + "building": "福泰大廈", + "address": "九龍油尖旺區豉油街24-26號福泰大廈" + }, + { + "building": "旺角廣場", + "address": "九龍油尖旺區豉油街28號旺角廣場" + }, + { + "building": "鴻都大廈", + "address": "九龍油尖旺區豉油街60-104B號鴻都大廈" + }, + { + "building": "德利大廈", + "address": "九龍油尖旺區通州街107-111號德利大廈" + }, + { + "building": "祝齡大廈", + "address": "九龍油尖旺區通州街113-117號祝齡大廈" + }, + { + "building": "國貿中心", + "address": "九龍油尖旺區通州街123號國貿中心" + }, + { + "building": "宜利大廈", + "address": "九龍油尖旺區通州街131-133號宜利大廈" + }, + { + "building": "明德中心", + "address": "九龍油尖旺區通州街135-137號明德中心" + }, + { + "building": "通州大樓", + "address": "九龍油尖旺區通州街174-176號通州大樓" + }, + { + "building": "富安大廈", + "address": "九龍油尖旺區通州街178-192號富安大廈" + }, + { + "building": "頌賢花園", + "address": "九龍油尖旺區通州街28號頌賢花園" + }, + { + "building": "新漢大樓", + "address": "九龍油尖旺區通州街51-67號新漢大樓" + }, + { + "building": "昌興樓", + "address": "九龍油尖旺區通州街71號昌興樓" + }, + { + "building": "金堡工業大廈", + "address": "九龍油尖旺區通州街81-87號金堡工業大廈" + }, + { + "building": "恒生中心", + "address": "九龍油尖旺區通州街95-97號恒生中心" + }, + { + "building": "利民大廈", + "address": "九龍油尖旺區通菜街104-116號利民大廈" + }, + { + "building": "東寶大廈", + "address": "九龍油尖旺區通菜街111-117號東寶大廈" + }, + { + "building": "A Hotel", + "address": "九龍油尖旺區通菜街123-127號A Hotel" + }, + { + "building": "友誠大廈", + "address": "九龍油尖旺區通菜街129-139號友誠大廈" + }, + { + "building": "怡輝大樓", + "address": "九龍油尖旺區通菜街141-151號怡輝大樓" + }, + { + "building": "啟運大廈", + "address": "九龍油尖旺區通菜街142-146號啟運大廈" + }, + { + "building": "華鴻大樓", + "address": "九龍油尖旺區通菜街153-159號華鴻大樓" + }, + { + "building": "安成大廈", + "address": "九龍油尖旺區通菜街154-156號安成大廈" + }, + { + "building": "明發大廈", + "address": "九龍油尖旺區通菜街158A-158C號明發大廈" + }, + { + "building": "錦華大廈", + "address": "九龍油尖旺區通菜街173號錦華大廈" + }, + { + "building": "榮英樓", + "address": "九龍油尖旺區通菜街181-187號榮英樓" + }, + { + "building": "永輝大廈", + "address": "九龍油尖旺區通菜街189-195號永輝大廈" + }, + { + "building": "金華樓", + "address": "九龍油尖旺區通菜街18號金華樓" + }, + { + "building": "威達商業大廈", + "address": "九龍油尖旺區通菜街1A-1L號威達商業大廈" + }, + { + "building": "華發大廈", + "address": "九龍油尖旺區通菜街1M-1T號華發大廈" + }, + { + "building": "達明大廈", + "address": "九龍油尖旺區通菜街20-22A號達明大廈" + }, + { + "building": "龍普樓", + "address": "九龍油尖旺區通菜街204號龍普樓" + }, + { + "building": "光明樓", + "address": "九龍油尖旺區通菜街210-212號光明樓" + }, + { + "building": "怡寧閣", + "address": "九龍油尖旺區通菜街211-215號怡寧閣" + }, + { + "building": "協成唐樓", + "address": "九龍油尖旺區通菜街214-216號協成唐樓" + }, + { + "building": "天馬樓", + "address": "九龍油尖旺區通菜街224-226號天馬樓" + }, + { + "building": "榮森大廈", + "address": "九龍油尖旺區通菜街230-238號榮森大廈" + }, + { + "building": "樂興大廈", + "address": "九龍油尖旺區通菜街240-242號樂興大廈" + }, + { + "building": "泰豐大廈", + "address": "九龍油尖旺區通菜街24-24A號泰豐大廈" + }, + { + "building": "通發大廈", + "address": "九龍油尖旺區通菜街248-250號通發大廈" + }, + { + "building": "昌好大廈", + "address": "九龍油尖旺區通菜街252號昌好大廈" + }, + { + "building": "鴻光大廈", + "address": "九龍油尖旺區通菜街2A-2P號鴻光大廈" + }, + { + "building": "百祥大廈", + "address": "九龍油尖旺區通菜街30-34號百祥大廈" + }, + { + "building": "榮高樓", + "address": "九龍油尖旺區通菜街3-7號榮高樓" + }, + { + "building": "寶寧大廈", + "address": "九龍油尖旺區通菜街56-62號寶寧大廈" + }, + { + "building": "德發大廈", + "address": "九龍油尖旺區通菜街59A-61C號德發大廈" + }, + { + "building": "國榮大樓", + "address": "九龍油尖旺區通菜街63-67號國榮大樓" + }, + { + "building": "時興大廈", + "address": "九龍油尖旺區通菜街66-70號時興大廈" + }, + { + "building": "The Metropolis Residence", + "address": "九龍油尖旺區都會道8-9號The Metropolis Residence" + }, + { + "building": "都會軒", + "address": "九龍油尖旺區都會道8-9號都會軒" + }, + { + "building": "富貴大廈東座", + "address": "九龍油尖旺區博文街1-7號富貴大廈東座" + }, + { + "building": "富貴大廈西座", + "address": "九龍油尖旺區博文街9-21號富貴大廈西座" + }, + { + "building": "堪富利士大廈", + "address": "九龍油尖旺區堪富利士道11號堪富利士大廈" + }, + { + "building": "宏貿發展大廈", + "address": "九龍油尖旺區堪富利士道12號宏貿發展大廈" + }, + { + "building": "時財商業大廈", + "address": "九龍油尖旺區堪富利士道3-3A號時財商業大廈" + }, + { + "building": "堪富利廣場", + "address": "九龍油尖旺區堪富利士道4號堪富利廣場" + }, + { + "building": "FUJI HOUSE", + "address": "九龍油尖旺區堪富利士道5-5A號FUJI HOUSE" + }, + { + "building": "福照工廠大廈", + "address": "九龍油尖旺區弼街20號福照工廠大廈" + }, + { + "building": "九龍企業有限公司大廈", + "address": "九龍油尖旺區弼街2-12號九龍企業有限公司大廈" + }, + { + "building": "中華基督教會望覺堂基督教大樓", + "address": "九龍油尖旺區弼街56號中華基督教會望覺堂基督教大樓" + }, + { + "building": "珍寶樓", + "address": "九龍油尖旺區弼街63號珍寶樓" + }, + { + "building": "弼街樓", + "address": "九龍油尖旺區弼街71-73A號弼街樓" + }, + { + "building": "棉登大廈", + "address": "九龍油尖旺區棉登徑13-15號棉登大廈" + }, + { + "building": "華楓大廈", + "address": "九龍油尖旺區棉登徑17-23號華楓大廈" + }, + { + "building": "恒成大廈", + "address": "九龍油尖旺區棉登徑22-26號恒成大廈" + }, + { + "building": "錦榮商業大廈", + "address": "九龍油尖旺區棉登徑28號錦榮商業大廈" + }, + { + "building": "振華商業大廈", + "address": "九龍油尖旺區棉登徑30號振華商業大廈" + }, + { + "building": "凱譽", + "address": "九龍油尖旺區棉登徑8號凱譽" + }, + { + "building": "榮富苑", + "address": "九龍油尖旺區棕樹街2-20號榮富苑" + }, + { + "building": "富怡閣", + "address": "九龍油尖旺區渡船街11-16號富怡閣" + }, + { + "building": "順利大廈", + "address": "九龍油尖旺區渡船街240號順利大廈" + }, + { + "building": "富景洋樓", + "address": "九龍油尖旺區渡船街252號富景洋樓" + }, + { + "building": "寶時商業中心", + "address": "九龍油尖旺區渡船街28號寶時商業中心" + }, + { + "building": "順興大廈", + "address": "九龍油尖旺區渡船街314-324B號順興大廈" + }, + { + "building": "富利來商業大廈", + "address": "九龍油尖旺區渡船街32-36號富利來商業大廈" + }, + { + "building": "順景大廈", + "address": "九龍油尖旺區渡船街325-334B號" + }, + { + "building": "建邦商業大廈", + "address": "九龍油尖旺區渡船街38號建邦商業大廈" + }, + { + "building": "仁賢大廈", + "address": "九龍油尖旺區渡船街7-10號仁賢大廈" + }, + { + "building": "書匯", + "address": "九龍油尖旺區登打士街10-12號書匯" + }, + { + "building": "國強大廈", + "address": "九龍油尖旺區登打士街20-22號國強大廈" + }, + { + "building": "嘉興商業中心", + "address": "九龍油尖旺區登打士街23-29號嘉興商業中心" + }, + { + "building": "登德大廈", + "address": "九龍油尖旺區登打士街33-35B號登德大廈" + }, + { + "building": "恆威商業中心", + "address": "九龍油尖旺區登打士街36號恆威商業中心" + }, + { + "building": "登打士廣場", + "address": "九龍油尖旺區登打士街43-43H號登打士廣場" + }, + { + "building": "鴻達樓", + "address": "九龍油尖旺區登打士街55號鴻達樓" + }, + { + "building": "?裕商業大廈", + "address": "九龍油尖旺區登打士街56號?裕商業大廈" + }, + { + "building": "永信大樓", + "address": "九龍油尖旺區菩提街4號永信大樓" + }, + { + "building": "旺財樓", + "address": "九龍油尖旺區黑布街80-86A號旺財樓" + }, + { + "building": "威發大廈", + "address": "九龍油尖旺區黑布街96-102號威發大廈" + }, + { + "building": "The Austin", + "address": "九龍油尖旺區匯翔道 8號The Austin" + }, + { + "building": "寶田大廈", + "address": "九龍油尖旺區園藝街" + }, + { + "building": "嘉禮大廈", + "address": "九龍油尖旺區塘尾道18號嘉禮大廈" + }, + { + "building": "好世界洋樓", + "address": "九龍油尖旺區塘尾道197-199號好世界洋樓" + }, + { + "building": "荔塘大廈第B座", + "address": "九龍油尖旺區塘尾道198D-198N號荔塘大廈第B座" + }, + { + "building": "匯輝樓", + "address": "九龍油尖旺區塘尾道200-202號匯輝樓" + }, + { + "building": "華安大廈", + "address": "九龍油尖旺區塘尾道201-203號華安大廈" + }, + { + "building": "慶年大樓", + "address": "九龍油尖旺區塘尾道208-228號慶年大樓" + }, + { + "building": "榮基樓", + "address": "九龍油尖旺區塘尾道209號榮基樓" + }, + { + "building": "長輝大廈", + "address": "九龍油尖旺區塘尾道22號長輝大廈" + }, + { + "building": "裕耀工廠大廈", + "address": "九龍油尖旺區塘尾道50-52號裕耀工廠大廈" + }, + { + "building": "新港豪庭", + "address": "九龍油尖旺區塘尾道51號新港豪庭" + }, + { + "building": "永利工業大廈", + "address": "九龍油尖旺區塘尾道54-58號永利工業大廈" + }, + { + "building": "新興鋼具商業大廈", + "address": "九龍油尖旺區塘尾道55號新興鋼具商業大廈" + }, + { + "building": "福康工業大廈", + "address": "九龍油尖旺區塘尾道60-62B號福康工業大廈" + }, + { + "building": "榮富大廈", + "address": "九龍油尖旺區塘尾道61號榮富大廈" + }, + { + "building": "福強工業大廈", + "address": "九龍油尖旺區塘尾道66-68號福強工業大廈" + }, + { + "building": "昇億樓", + "address": "九龍油尖旺區塘尾道67A-67B號昇億樓" + }, + { + "building": "大安樓", + "address": "九龍油尖旺區塘尾道75-77號大安樓" + }, + { + "building": "長豐大廈", + "address": "九龍油尖旺區塘尾道85-95號長豐大廈" + }, + { + "building": "新利大廈", + "address": "九龍油尖旺區新填地街" + }, + { + "building": "榮興大樓", + "address": "九龍油尖旺區新填地街13-21A號榮興大樓" + }, + { + "building": "恒運樓", + "address": "九龍油尖旺區新填地街141號恒運樓" + }, + { + "building": "俊逸豪園", + "address": "九龍油尖旺區新填地街151號俊逸豪園" + }, + { + "building": "金田樓", + "address": "九龍油尖旺區新填地街162-170號金田樓" + }, + { + "building": "時新大廈", + "address": "九龍油尖旺區新填地街163號時新大廈" + }, + { + "building": "同福樓", + "address": "九龍油尖旺區新填地街173-177號同福樓" + }, + { + "building": "仁豐大樓", + "address": "九龍油尖旺區新填地街193-193A號仁豐大樓" + }, + { + "building": "東寶閣", + "address": "九龍油尖旺區新填地街202-214號東寶閣" + }, + { + "building": "宏昌商業大廈", + "address": "九龍油尖旺區新填地街249-253A號宏昌商業大廈" + }, + { + "building": "東鴻大廈", + "address": "九龍油尖旺區新填地街255-261號東鴻大廈" + }, + { + "building": "寶祥大樓", + "address": "九龍油尖旺區新填地街260-264號寶祥大樓" + }, + { + "building": "昌寶中心", + "address": "九龍油尖旺區新填地街263號昌寶中心" + }, + { + "building": "慶華大廈", + "address": "九龍油尖旺區新填地街266-282號慶華大廈" + }, + { + "building": "昌泰大廈", + "address": "九龍油尖旺區新填地街287-289號昌泰大廈" + }, + { + "building": "美嘉商業大廈", + "address": "九龍油尖旺區新填地街288-290號美嘉商業大廈" + }, + { + "building": "全理大樓", + "address": "九龍油尖旺區新填地街297-299號全理大樓" + }, + { + "building": "英發大廈", + "address": "九龍油尖旺區新填地街308-310號英發大廈" + }, + { + "building": "永福大樓", + "address": "九龍油尖旺區新填地街316-320號永福大樓" + }, + { + "building": "德豐大廈", + "address": "九龍油尖旺區新填地街374-388號德豐大廈" + }, + { + "building": "錦利樓", + "address": "九龍油尖旺區新填地街3號錦利樓" + }, + { + "building": "永昌大廈", + "address": "九龍油尖旺區新填地街404-412號永昌大廈" + }, + { + "building": "俊興樓", + "address": "九龍油尖旺區新填地街435號俊興樓" + }, + { + "building": "海島中心", + "address": "九龍油尖旺區新填地街470號海島中心" + }, + { + "building": "萬成大廈", + "address": "九龍油尖旺區新填地街472-480號萬成大廈" + }, + { + "building": "嘉富大廈", + "address": "九龍油尖旺區新填地街482-488號嘉富大廈" + }, + { + "building": "榮益樓", + "address": "九龍油尖旺區新填地街50A號榮益樓" + }, + { + "building": "福星大廈", + "address": "九龍油尖旺區新填地街52-58號福星大廈" + }, + { + "building": "弼華大廈", + "address": "九龍油尖旺區新填地街565-569號弼華大廈" + }, + { + "building": "新輝商業中心", + "address": "九龍油尖旺區新填地街576號新輝商業中心" + }, + { + "building": "鴉蘭大廈", + "address": "九龍油尖旺區新填地街596號鴉蘭大廈" + }, + { + "building": "榮記大樓", + "address": "九龍油尖旺區新填地街61-65號榮記大樓" + }, + { + "building": "昌喜樓", + "address": "九龍油尖旺區新填地街625-627號昌喜樓" + }, + { + "building": "金山大樓", + "address": "九龍油尖旺區新填地街78-86號金山大樓" + }, + { + "building": "甘霖大廈", + "address": "九龍油尖旺區新填地街98-104號甘霖大廈" + }, + { + "building": "華源工廠大廈", + "address": "九龍油尖旺區榆樹街10-18A號華源工廠大廈" + }, + { + "building": "宏業工業大廈", + "address": "九龍油尖旺區榆樹街1號宏業工業大廈" + }, + { + "building": "新型工廠大廈", + "address": "九龍油尖旺區榆樹街9號新型工廠大廈" + }, + { + "building": "鴻祥大廈", + "address": "九龍油尖旺區煙廠街1-3號鴻祥大廈" + }, + { + "building": "華新大廈", + "address": "九龍油尖旺區煙廠街6-20號華新大廈" + }, + { + "building": "萬豪閣", + "address": "九龍油尖旺區萬安街15號萬豪閣" + }, + { + "building": "萬利大廈", + "address": "九龍油尖旺區萬安街19-21號萬利大廈" + }, + { + "building": "萬安大廈", + "address": "九龍油尖旺區萬安街2-6號萬安大廈" + }, + { + "building": "松園", + "address": "九龍油尖旺區詩歌舞街16號松園" + }, + { + "building": "美藝苑", + "address": "九龍油尖旺區詩歌舞街22-24號美藝苑" + }, + { + "building": "龍鳳大樓", + "address": "九龍油尖旺區詩歌舞街64號龍鳳大樓" + }, + { + "building": "亮賢居", + "address": "九龍油尖旺區詩歌舞街83號亮賢居" + }, + { + "building": "金明閣", + "address": "九龍油尖旺區運動場道12-14號金明閣" + }, + { + "building": "京華大廈", + "address": "九龍油尖旺區運動場道15號京華大廈" + }, + { + "building": "運泰大廈", + "address": "九龍油尖旺區運動場道21-27號運泰大廈" + }, + { + "building": "桂華樓", + "address": "九龍油尖旺區運動場道5號桂華樓" + }, + { + "building": "格蘭大廈", + "address": "九龍油尖旺區運動場道8-10號格蘭大廈" + }, + { + "building": "福祥樓", + "address": "九龍油尖旺區嘉善街32-48號福祥樓" + }, + { + "building": "利時商業大廈", + "address": "九龍油尖旺區嘉蘭圍5-11號利時商業大廈" + }, + { + "building": "遂意工廠大廈", + "address": "九龍油尖旺區槐樹街15號遂意工廠大廈" + }, + { + "building": "麗華閣", + "address": "九龍油尖旺區槐樹街6號麗華閣" + }, + { + "building": "意服務式住宅", + "address": "九龍油尖旺區漆咸圍10-12號意服務式住宅" + }, + { + "building": "金時商業大廈", + "address": "九龍油尖旺區漆咸圍2-4號金時商業大廈" + }, + { + "building": "宏富大廈", + "address": "九龍油尖旺區漆咸圍5-7號宏富大廈" + }, + { + "building": "紀德樓", + "address": "九龍油尖旺區漆咸圍6-8號紀德樓" + }, + { + "building": "若璠閣", + "address": "九龍油尖旺區漆咸圍9-11號若璠閣" + }, + { + "building": "海景大廈", + "address": "九龍油尖旺區漆咸道南" + }, + { + "building": "中晶金融中心", + "address": "九龍油尖旺區漆咸道南107-109號中晶金融中心" + }, + { + "building": "美華閣", + "address": "九龍油尖旺區漆咸道南111-113號美華閣" + }, + { + "building": "余仁生中心", + "address": "九龍油尖旺區漆咸道南11-15號余仁生中心" + }, + { + "building": "達成商業大廈", + "address": "九龍油尖旺區漆咸道南115號達成商業大廈" + }, + { + "building": "崇基商業大廈", + "address": "九龍油尖旺區漆咸道南117號崇基商業大廈" + }, + { + "building": "豐景大廈", + "address": "九龍油尖旺區漆咸道南119A-119C號豐景大廈" + }, + { + "building": "永業大廈", + "address": "九龍油尖旺區漆咸道南121-123號永業大廈" + }, + { + "building": "漆咸道南一號", + "address": "九龍油尖旺區漆咸道南1號漆咸道南一號" + }, + { + "building": "友聯大廈", + "address": "九龍油尖旺區漆咸道南33-35號友聯大廈" + }, + { + "building": "鐵路大廈", + "address": "九龍油尖旺區漆咸道南39號鐵路大廈" + }, + { + "building": "其士大廈", + "address": "九龍油尖旺區漆咸道南45-51號其士大廈" + }, + { + "building": "金馬倫中心", + "address": "九龍油尖旺區漆咸道南57-59號金馬倫中心" + }, + { + "building": "首都廣場", + "address": "九龍油尖旺區漆咸道南61-65號首都廣場" + }, + { + "building": "安年大廈", + "address": "九龍油尖旺區漆咸道南67-71號安年大廈" + }, + { + "building": "中國五礦大廈", + "address": "九龍油尖旺區漆咸道南79號中國五礦大廈" + }, + { + "building": "金德大廈", + "address": "九龍油尖旺區漆咸道南83-85A號金德大廈" + }, + { + "building": "百利商業中心", + "address": "九龍油尖旺區漆咸道南87-105號百利商業中心" + }, + { + "building": "新聲大廈", + "address": "九龍油尖旺區漢口道17號新聲大廈" + }, + { + "building": "漢宜大廈", + "address": "九龍油尖旺區漢口道19-21號漢宜大廈" + }, + { + "building": "漢光大廈", + "address": "九龍油尖旺區漢口道25-29號漢光大廈" + }, + { + "building": "恕園大樓", + "address": "九龍油尖旺區漢口道35-37號恕園大樓" + }, + { + "building": "漢威大廈", + "address": "九龍油尖旺區漢口道42-44號漢威大廈" + }, + { + "building": "漢口大廈", + "address": "九龍油尖旺區漢口道43-49A號漢口大廈" + }, + { + "building": "騏生商業中心", + "address": "九龍油尖旺區漢口道4-6號騏生商業中心" + }, + { + "building": "漢口中心", + "address": "九龍油尖旺區漢口道5-15號漢口中心" + }, + { + "building": "漢中大廈", + "address": "九龍油尖旺區漢口道8-10號漢中大廈" + }, + { + "building": "富榮樓", + "address": "九龍油尖旺區碧街16-18號富榮樓" + }, + { + "building": "碧街大廈", + "address": "九龍油尖旺區碧街1-7號碧街大廈" + }, + { + "building": "旭威閣", + "address": "九龍油尖旺區碧街20-22號旭威閣" + }, + { + "building": "金冠樓", + "address": "九龍油尖旺區碧街27B號金冠樓" + }, + { + "building": "協群商業大廈", + "address": "九龍油尖旺區碧街38號協群商業大廈" + }, + { + "building": "福全大廈", + "address": "九龍油尖旺區福全街12-16號福全大廈" + }, + { + "building": "福興大樓", + "address": "九龍油尖旺區福全街20-28號福興大樓" + }, + { + "building": "福明大樓", + "address": "九龍油尖旺區福全街32-40號福明大樓" + }, + { + "building": "榮裕閣", + "address": "九龍油尖旺區福全街4號榮裕閣" + }, + { + "building": "其士工業大廈", + "address": "九龍油尖旺區福全街55-57號其士工業大廈" + }, + { + "building": "志發工廠大廈", + "address": "九龍油尖旺區福全街78-80號志發工廠大廈" + }, + { + "building": "港灣豪庭", + "address": "九龍油尖旺區福利街8號港灣豪庭" + }, + { + "building": "奧城.西岸", + "address": "九龍油尖旺區福澤街18號奧城.西岸" + }, + { + "building": "永發大樓", + "address": "九龍油尖旺區福澤街24-30號永發大樓" + }, + { + "building": "榮德大廈", + "address": "九龍油尖旺區窩打老道" + }, + { + "building": "金輝大廈", + "address": "九龍油尖旺區窩打老道16-24A號金輝大廈" + }, + { + "building": "金石商業大樓", + "address": "九龍油尖旺區窩打老道17號金石商業大樓" + }, + { + "building": "致富商業大廈", + "address": "九龍油尖旺區窩打老道19號致富商業大廈" + }, + { + "building": "華德大廈", + "address": "九龍油尖旺區窩打老道1A-1J號華德大廈" + }, + { + "building": "翠園大樓(一期)", + "address": "九龍油尖旺區窩打老道31-39A號翠園大樓(一期)" + }, + { + "building": "賀賢居", + "address": "九龍油尖旺區窩打老道45號賀賢居" + }, + { + "building": "?達中心", + "address": "九龍油尖旺區窩打老道53-55號?達中心" + }, + { + "building": "?齡大廈", + "address": "九龍油尖旺區窩打老道57-59號?齡大廈" + }, + { + "building": "利就商業大廈", + "address": "九龍油尖旺區赫德道11號利就商業大廈" + }, + { + "building": "利威商業大廈", + "address": "九龍油尖旺區赫德道1-3號利威商業大廈" + }, + { + "building": "海信大廈", + "address": "九龍油尖旺區赫德道17號海信大廈" + }, + { + "building": "夏蕙閣", + "address": "九龍油尖旺區赫德道19-23號夏蕙閣" + }, + { + "building": "蘇豪坊", + "address": "九龍油尖旺區赫德道25號蘇豪坊" + }, + { + "building": "首邦行", + "address": "九龍油尖旺區赫德道2A號首邦行" + }, + { + "building": "金麟商業中心", + "address": "九龍油尖旺區赫德道2號金麟商業中心" + }, + { + "building": "德裕中心", + "address": "九龍油尖旺區赫德道5-9號德裕中心" + }, + { + "building": "好德商業大廈", + "address": "九龍油尖旺區赫德道6號好德商業大廈" + }, + { + "building": "德拓大廈", + "address": "九龍油尖旺區麼地道1-3號德拓大廈" + }, + { + "building": "半島大廈", + "address": "九龍油尖旺區麼地道16號半島大廈" + }, + { + "building": "建泉大廈", + "address": "九龍油尖旺區麼地道18-20號建泉大廈" + }, + { + "building": "美麗都大廈", + "address": "九龍油尖旺區麼地道1A-1J號美麗都大廈" + }, + { + "building": "中福商業大廈", + "address": "九龍油尖旺區麼地道22-28號中福商業大廈" + }, + { + "building": "麼地大廈", + "address": "九龍油尖旺區麼地道30號麼地大廈" + }, + { + "building": "海景大廈", + "address": "九龍油尖旺區麼地道31-43號海景大廈" + }, + { + "building": "麗東大廈", + "address": "九龍油尖旺區麼地道32-48號麗東大廈" + }, + { + "building": "冠華中心", + "address": "九龍油尖旺區麼地道61號冠華中心" + }, + { + "building": "永安廣場", + "address": "九龍油尖旺區麼地道62號永安廣場" + }, + { + "building": "好時中心", + "address": "九龍油尖旺區麼地道63號好時中心" + }, + { + "building": "安達中心", + "address": "九龍油尖旺區麼地道65號安達中心" + }, + { + "building": "半島中心", + "address": "九龍油尖旺區麼地道67號半島中心" + }, + { + "building": "帝國中心", + "address": "九龍油尖旺區麼地道68號帝國中心" + }, + { + "building": "南洋中心", + "address": "九龍油尖旺區麼地道75號" + }, + { + "building": "漢興商業大廈", + "address": "九龍油尖旺區廟街108-116號漢興商業大廈" + }, + { + "building": "時勝大廈", + "address": "九龍油尖旺區廟街123-127號時勝大廈" + }, + { + "building": "興發大廈", + "address": "九龍油尖旺區廟街133-137號興發大廈" + }, + { + "building": "志興樓", + "address": "九龍油尖旺區廟街148-154號志興樓" + }, + { + "building": "嘉泰大樓", + "address": "九龍油尖旺區廟街174-184A號嘉泰大樓" + }, + { + "building": "南京大廈", + "address": "九龍油尖旺區廟街220號南京大廈" + }, + { + "building": "六福珠寶中心", + "address": "九龍油尖旺區廟街239號六福珠寶中心" + }, + { + "building": "協祥大廈", + "address": "九龍油尖旺區廟街249-251號協祥大廈" + }, + { + "building": "世華商業大廈", + "address": "九龍油尖旺區廟街253-255號世華商業大廈" + }, + { + "building": "怡齡閣", + "address": "九龍油尖旺區廟街259A號怡齡閣" + }, + { + "building": "雅達商業大廈", + "address": "九龍油尖旺區廟街26-28號雅達商業大廈" + }, + { + "building": "恩賜大廈", + "address": "九龍油尖旺區廟街263-267號恩賜大廈" + }, + { + "building": "華興大廈", + "address": "九龍油尖旺區廟街269-271號華興大廈" + }, + { + "building": "寶發大廈", + "address": "九龍油尖旺區廟街273-285號寶發大廈" + }, + { + "building": "德福大廈", + "address": "九龍油尖旺區廟街280-284號德福大廈" + }, + { + "building": "華志大廈", + "address": "九龍油尖旺區廟街286-298號華志大廈" + }, + { + "building": "昆鏡大廈", + "address": "九龍油尖旺區廟街2-8號昆鏡大廈" + }, + { + "building": "創德樓", + "address": "九龍油尖旺區廟街291號創德樓" + }, + { + "building": "富昌大廈", + "address": "九龍油尖旺區廟街29-35號富昌大廈" + }, + { + "building": "寶華大廈", + "address": "九龍油尖旺區廟街300-306號寶華大廈" + }, + { + "building": "生發大廈", + "address": "九龍油尖旺區廟街308號生發大廈" + }, + { + "building": "永星大廈", + "address": "九龍油尖旺區廟街36-40F號永星大廈" + }, + { + "building": "萬成大廈", + "address": "九龍油尖旺區廟街41-45號萬成大廈" + }, + { + "building": "正康大樓", + "address": "九龍油尖旺區廟街47-57號正康大樓" + }, + { + "building": "兆豐大廈", + "address": "九龍油尖旺區廟街7-13號兆豐大廈" + }, + { + "building": "成安大廈", + "address": "九龍油尖旺區廟街99-101號成安大廈" + }, + { + "building": "恆通大廈", + "address": "九龍油尖旺區廣東道" + }, + { + "building": "德利樓", + "address": "九龍油尖旺區廣東道1001-1003號德利樓" + }, + { + "building": "金慶樓", + "address": "九龍油尖旺區廣東道1004-1012號金慶樓" + }, + { + "building": "彩星集團大廈", + "address": "九龍油尖旺區廣東道100號彩星集團大廈" + }, + { + "building": "桂和樂樓", + "address": "九龍油尖旺區廣東道1026號桂和樂樓" + }, + { + "building": "高好樓", + "address": "九龍油尖旺區廣東道1038-1040號高好樓" + }, + { + "building": "福禧樓", + "address": "九龍油尖旺區廣東道1091-1093號福禧樓" + }, + { + "building": "快富閣", + "address": "九龍油尖旺區廣東道1096號快富閣" + }, + { + "building": "月圓大廈", + "address": "九龍油尖旺區廣東道1099-1103號月圓大廈" + }, + { + "building": "廣東大樓", + "address": "九龍油尖旺區廣東道1128號廣東大樓" + }, + { + "building": "日昌樓", + "address": "九龍油尖旺區廣東道1130號日昌樓" + }, + { + "building": "安英大廈", + "address": "九龍油尖旺區廣東道1136-1142號安英大廈" + }, + { + "building": "業廣工業樓", + "address": "九龍油尖旺區廣東道1139號業廣工業樓" + }, + { + "building": "協和工業大廈", + "address": "九龍油尖旺區廣東道1141-1143號協和工業大廈" + }, + { + "building": "兆豐樓", + "address": "九龍油尖旺區廣東道1146-1152號兆豐樓" + }, + { + "building": "廣蘭大樓", + "address": "九龍油尖旺區廣東道1154-1160號廣蘭大樓" + }, + { + "building": "海威商業中心", + "address": "九龍油尖旺區廣東道116-120號海威商業中心" + }, + { + "building": "港賓大廈", + "address": "九龍油尖旺區廣東道1162號港賓大廈" + }, + { + "building": "中華漆廠大廈", + "address": "九龍油尖旺區廣東道1163號中華漆廠大廈" + }, + { + "building": "嘉寶樓", + "address": "九龍油尖旺區廣東道1176-1178號嘉寶樓" + }, + { + "building": "萬福樓", + "address": "九龍油尖旺區廣東道1180-1182號萬福樓" + }, + { + "building": "慕華樓", + "address": "九龍油尖旺區廣東道1184-1186號慕華樓" + }, + { + "building": "海港城世界商業中心", + "address": "九龍油尖旺區廣東道11號海港城世界商業中心" + }, + { + "building": "中港中心", + "address": "九龍油尖旺區廣東道122-126號中港中心" + }, + { + "building": "錦星大廈", + "address": "九龍油尖旺區廣東道1227-1229號錦星大廈" + }, + { + "building": "宏華大廈", + "address": "九龍油尖旺區廣東道1231-1233號宏華大廈" + }, + { + "building": "松鳳商業大廈", + "address": "九龍油尖旺區廣東道12號松鳳商業大廈" + }, + { + "building": "港威大廈", + "address": "九龍油尖旺區廣東道15-25號海港城,港威港威大廈" + }, + { + "building": "海港城環球金融中心", + "address": "九龍油尖旺區廣東道17-19號海港城環球金融中心" + }, + { + "building": "力寶太陽廣場", + "address": "九龍油尖旺區廣東道28號力寶太陽廣場" + }, + { + "building": "1881 Hertiage", + "address": "九龍油尖旺區廣東道2A號1881 Hertiage" + }, + { + "building": "海星大廈", + "address": "九龍油尖旺區廣東道2號海星大廈" + }, + { + "building": "煒亨大廈", + "address": "九龍油尖旺區廣東道308-310A號煒亨大廈" + }, + { + "building": "新港中心新港中心", + "address": "九龍油尖旺區廣東道30號新港中心新港中心" + }, + { + "building": "公園大廈", + "address": "九龍油尖旺區廣東道312-320號公園大廈" + }, + { + "building": "利來洋樓", + "address": "九龍油尖旺區廣東道332-338號利來洋樓" + }, + { + "building": "中港城中港城", + "address": "九龍油尖旺區廣東道33號中港城中港城" + }, + { + "building": "海港城海運大廈", + "address": "九龍油尖旺區廣東道3號海港城海運大廈" + }, + { + "building": "瑞香園大廈", + "address": "九龍油尖旺區廣東道504-512號瑞香園大廈" + }, + { + "building": "玉器交易廣場", + "address": "九龍油尖旺區廣東道513號玉器交易廣場" + }, + { + "building": "四海玉器中心", + "address": "九龍油尖旺區廣東道530-536號四海玉器中心" + }, + { + "building": "都會名軒", + "address": "九龍油尖旺區廣東道535-541號都會名軒" + }, + { + "building": "廣興大廈", + "address": "九龍油尖旺區廣東道543-553號廣興大廈" + }, + { + "building": "帝國大廈", + "address": "九龍油尖旺區廣東道54-66號帝國大廈" + }, + { + "building": "玉暉商業大廈", + "address": "九龍油尖旺區廣東道555-557號玉暉商業大廈" + }, + { + "building": "廣發商業大廈", + "address": "九龍油尖旺區廣東道582-588號廣發商業大廈" + }, + { + "building": "澤興樓", + "address": "九龍油尖旺區廣東道587-589號澤興樓" + }, + { + "building": "廣基大廈", + "address": "九龍油尖旺區廣東道602-616號廣基大廈" + }, + { + "building": "德昇大廈", + "address": "九龍油尖旺區廣東道618-632號德昇大廈." + }, + { + "building": "恒利大廈", + "address": "九龍油尖旺區廣東道68-80號恒利大廈" + }, + { + "building": "海港城九倉電訊中心", + "address": "九龍油尖旺區廣東道7號海港城九倉電訊中心" + }, + { + "building": "永泰大廈", + "address": "九龍油尖旺區廣東道802-812號永泰大廈" + }, + { + "building": "大安樓", + "address": "九龍油尖旺區廣東道820-832號大安樓" + }, + { + "building": "流尚店", + "address": "九龍油尖旺區廣東道82-84號流尚店" + }, + { + "building": "金華大廈", + "address": "九龍油尖旺區廣東道831A-831L號金華大廈" + }, + { + "building": "利源閣", + "address": "九龍油尖旺區廣東道835-845號利源閣" + }, + { + "building": "永發樓", + "address": "九龍油尖旺區廣東道840-844號永發樓" + }, + { + "building": "永發大廈", + "address": "九龍油尖旺區廣東道847-865號永發大廈" + }, + { + "building": "金聲樓", + "address": "九龍油尖旺區廣東道856-858號金聲樓" + }, + { + "building": "文利大廈", + "address": "九龍油尖旺區廣東道86-98號文利大廈" + }, + { + "building": "廣發大廈", + "address": "九龍油尖旺區廣東道878-888號廣發大廈" + }, + { + "building": "海威大廈", + "address": "九龍油尖旺區廣東道887-889號海威大廈" + }, + { + "building": "榮興樓", + "address": "九龍油尖旺區廣東道896號榮興樓" + }, + { + "building": "昌華商業大廈", + "address": "九龍油尖旺區廣東道900-904號昌華商業大廈" + }, + { + "building": "順昌大廈", + "address": "九龍油尖旺區廣東道913-923號順昌大廈" + }, + { + "building": "富益閣", + "address": "九龍油尖旺區廣東道932號富益閣" + }, + { + "building": "東成大廈", + "address": "九龍油尖旺區廣東道950-954號東成大廈" + }, + { + "building": "安達大廈", + "address": "九龍油尖旺區廣東道976-978號安達大廈" + }, + { + "building": "明威閣", + "address": "九龍油尖旺區廣華街15-33號明威閣" + }, + { + "building": "仁安大廈B座", + "address": "九龍油尖旺區廣華街1號仁安大廈B座" + }, + { + "building": "翠園大樓(二期)", + "address": "九龍油尖旺區廣華街2-20號翠園大樓(二期)" + }, + { + "building": "百利達廣場", + "address": "九龍油尖旺區廣華街3號百利達廣場" + }, + { + "building": "廣發商業中心", + "address": "九龍油尖旺區廣華街42-56號廣發商業中心" + }, + { + "building": "康源閣康源閣", + "address": "九龍油尖旺區德成街1-5號康源閣康源閣" + }, + { + "building": "富裕臺", + "address": "九龍油尖旺區德成街4-16號富裕臺" + }, + { + "building": "德昌閣", + "address": "九龍油尖旺區德昌里19號德昌閣" + }, + { + "building": "海溢閣", + "address": "九龍油尖旺區德昌里8號海溢閣" + }, + { + "building": "德喜大廈", + "address": "九龍油尖旺區德昌街18-26號德喜大廈" + }, + { + "building": "金風閣", + "address": "九龍油尖旺區德昌街70-80號金風閣" + }, + { + "building": "興富中心", + "address": "九龍油尖旺區德興街12號興富中心" + }, + { + "building": "怡興閣", + "address": "九龍油尖旺區德興街13號怡興閣" + }, + { + "building": "富麗閣", + "address": "九龍油尖旺區德興街4-6號富麗閣" + }, + { + "building": "寶來大廈", + "address": "九龍油尖旺區德興街9-10號寶來大廈" + }, + { + "building": "中原樓", + "address": "九龍油尖旺區樂群街1-19號中原樓" + }, + { + "building": "安順大廈", + "address": "九龍油尖旺區樂道13-19A號安順大廈" + }, + { + "building": "永樂大樓", + "address": "九龍油尖旺區樂道1-3A號永樂大樓" + }, + { + "building": "龍華大廈", + "address": "九龍油尖旺區樂道21-21A號龍華大廈" + }, + { + "building": "樂輝商業大廈", + "address": "九龍油尖旺區樂道27號樂輝商業大廈" + }, + { + "building": "嘉樂大廈", + "address": "九龍油尖旺區樂道5-7A號嘉樂大廈" + }, + { + "building": "緬甸大廈", + "address": "九龍油尖旺區緬甸臺1-2B號緬甸大廈" + }, + { + "building": "恆星樓", + "address": "九龍油尖旺區緬甸臺3號恆星樓" + }, + { + "building": "衛理苑", + "address": "九龍油尖旺區衛理道15-23號衛理苑" + }, + { + "building": "雅寶大廈", + "address": "九龍油尖旺區鴉打街46-58號雅寶大廈" + }, + { + "building": "歡樂樓", + "address": "九龍油尖旺區鴉蘭街2-4號歡樂樓" + }, + { + "building": "大角咀大廈", + "address": "九龍油尖旺區橡樹街41-63號大角咀大廈" + }, + { + "building": "豐盛樓", + "address": "九龍油尖旺區橡樹街66-68號豐盛樓" + }, + { + "building": "昌滿樓", + "address": "九龍油尖旺區橡樹街70-72號昌滿樓" + }, + { + "building": "永利大廈", + "address": "九龍油尖旺區橡樹街74-76號永利大廈" + }, + { + "building": "廣和大廈", + "address": "九龍油尖旺區橡樹街78號廣和大廈" + }, + { + "building": "廣和大廈", + "address": "九龍油尖旺區橡樹街80, 82 及82A號廣和大廈" + }, + { + "building": "明德閣", + "address": "九龍油尖旺區橡樹街81-85A號明德閣" + }, + { + "building": "耀邦大廈", + "address": "九龍油尖旺區諾士佛臺12號耀邦大廈" + }, + { + "building": "樂福大廈", + "address": "九龍油尖旺區諾士佛臺13-14A號樂福大廈" + }, + { + "building": "ONE KNUTSFORD", + "address": "九龍油尖旺區諾士佛臺1號ONE KNUTSFORD" + }, + { + "building": "東港商業大廈", + "address": "九龍油尖旺區諾士佛臺4-5號東港商業大廈" + }, + { + "building": "樂芬大廈", + "address": "九龍油尖旺區諾士佛臺7-8號樂芬大廈" + }, + { + "building": "冠福中心", + "address": "九龍油尖旺區諾士佛臺9號冠福中心" + }, + { + "building": "彌敦大廈", + "address": "九龍油尖旺區彌敦道" + }, + { + "building": "美麗華商場", + "address": "九龍油尖旺區彌敦道132號美麗華商場" + }, + { + "building": "太平洋大廈", + "address": "九龍油尖旺區彌敦道172-174號太平洋大廈" + }, + { + "building": "寶華大廈", + "address": "九龍油尖旺區彌敦道180號寶華大廈" + }, + { + "building": "友誠大廈", + "address": "九龍油尖旺區彌敦道182號友誠大廈" + }, + { + "building": "有利大樓", + "address": "九龍油尖旺區彌敦道184A-188號有利大樓" + }, + { + "building": "THE WAVE", + "address": "九龍油尖旺區彌敦道184號THE WAVE" + }, + { + "building": "協成行九龍中心", + "address": "九龍油尖旺區彌敦道192-194號協成行九龍中心" + }, + { + "building": "寶安商業大廈", + "address": "九龍油尖旺區彌敦道196-198號寶安商業大廈" + }, + { + "building": "遠東發展大廈", + "address": "九龍油尖旺區彌敦道204-206號遠東發展大廈" + }, + { + "building": "恆豐中心", + "address": "九龍油尖旺區彌敦道216-228號恆豐中心" + }, + { + "building": "莊士倫敦廣場", + "address": "九龍油尖旺區彌敦道219號莊士倫敦廣場" + }, + { + "building": "同昌商業大廈", + "address": "九龍油尖旺區彌敦道221-221A號同昌商業大廈" + }, + { + "building": "恒福商業中心", + "address": "九龍油尖旺區彌敦道221B-221E號恒福商業中心" + }, + { + "building": "明珠廣場", + "address": "九龍油尖旺區彌敦道225號明珠廣場" + }, + { + "building": "金百龍大廈", + "address": "九龍油尖旺區彌敦道227號金百龍大廈" + }, + { + "building": "金陵大廈", + "address": "九龍油尖旺區彌敦道231號金陵大廈" + }, + { + "building": "彩星中心", + "address": "九龍油尖旺區彌敦道23-25號彩星中心" + }, + { + "building": "佐敦薈", + "address": "九龍油尖旺區彌敦道233-239號佐敦薈" + }, + { + "building": "立信大廈", + "address": "九龍油尖旺區彌敦道240-252號立信大廈" + }, + { + "building": "金峰大廈", + "address": "九龍油尖旺區彌敦道241-243號金峰大廈" + }, + { + "building": "良士大廈", + "address": "九龍油尖旺區彌敦道27-33號良士大廈" + }, + { + "building": "華豐大廈", + "address": "九龍油尖旺區彌敦道298-306號華豐大廈" + }, + { + "building": "嘉賓商業大廈", + "address": "九龍油尖旺區彌敦道301-309號嘉賓商業大廈" + }, + { + "building": "美明大廈", + "address": "九龍油尖旺區彌敦道312號美明大廈" + }, + { + "building": "金漢大廈", + "address": "九龍油尖旺區彌敦道317-321號金漢大廈" + }, + { + "building": "百樂大廈", + "address": "九龍油尖旺區彌敦道322-326A號百樂大廈" + }, + { + "building": "儉德大廈", + "address": "九龍油尖旺區彌敦道328-342A號儉德大廈" + }, + { + "building": "高信大廈", + "address": "九龍油尖旺區彌敦道331-333號高信大廈" + }, + { + "building": "加盛商業中心", + "address": "九龍油尖旺區彌敦道333號加盛商業中心" + }, + { + "building": "高怡醫務中心", + "address": "九龍油尖旺區彌敦道335號高怡醫務中心" + }, + { + "building": "金滿樓", + "address": "九龍油尖旺區彌敦道337-339號金滿樓" + }, + { + "building": "黃氏大廈", + "address": "九龍油尖旺區彌敦道341號黃氏大廈" + }, + { + "building": "永安九龍中心", + "address": "九龍油尖旺區彌敦道345號永安九龍中心" + }, + { + "building": "國際廣場", + "address": "九龍油尖旺區彌敦道35-79號國際廣場" + }, + { + "building": "善美大廈", + "address": "九龍油尖旺區彌敦道358-366號善美大廈" + }, + { + "building": "重慶站", + "address": "九龍油尖旺區彌敦道36-44號重慶站" + }, + { + "building": "金勳大廈", + "address": "九龍油尖旺區彌敦道375-381號金勳大廈" + }, + { + "building": "平安大樓", + "address": "九龍油尖旺區彌敦道383-389C號平安大樓" + }, + { + "building": "重慶大廈A座", + "address": "九龍油尖旺區彌敦道40-44號重慶大廈A座" + }, + { + "building": "彌敦商務大廈", + "address": "九龍油尖旺區彌敦道430-436號彌敦商務大廈" + }, + { + "building": "鄧氏大廈", + "address": "九龍油尖旺區彌敦道438號鄧氏大廈" + }, + { + "building": "澤豐大廈", + "address": "九龍油尖旺區彌敦道440-442號澤豐大廈" + }, + { + "building": "增祥大廈", + "address": "九龍油尖旺區彌敦道444-446A號增祥大廈" + }, + { + "building": "文豪閣", + "address": "九龍油尖旺區彌敦道448-452號文豪閣" + }, + { + "building": "美景大廈", + "address": "九龍油尖旺區彌敦道458-460號美景大廈" + }, + { + "building": "恩佳大廈", + "address": "九龍油尖旺區彌敦道466-472號恩佳大廈" + }, + { + "building": "新光商業大廈", + "address": "九龍油尖旺區彌敦道469-471號新光商業大廈" + }, + { + "building": "康樂大樓", + "address": "九龍油尖旺區彌敦道475-477A號康樂大樓" + }, + { + "building": "凱都中心", + "address": "九龍油尖旺區彌敦道476號凱都中心" + }, + { + "building": "嘉美樓", + "address": "九龍油尖旺區彌敦道479-481號嘉美樓" + }, + { + "building": "鴻寶商業大廈", + "address": "九龍油尖旺區彌敦道480號鴻寶商業大廈" + }, + { + "building": "鴻星大廈", + "address": "九龍油尖旺區彌敦道482-484號鴻星大廈" + }, + { + "building": "益南華廈", + "address": "九龍油尖旺區彌敦道486-488號益南華廈" + }, + { + "building": "盤谷銀行大廈", + "address": "九龍油尖旺區彌敦道490-492號盤谷銀行大廈" + }, + { + "building": "展望大廈", + "address": "九龍油尖旺區彌敦道491-493A號展望大廈" + }, + { + "building": "晉利商業大廈", + "address": "九龍油尖旺區彌敦道494-496號晉利商業大廈" + }, + { + "building": "麗星大廈", + "address": "九龍油尖旺區彌敦道495-497A號麗星大廈" + }, + { + "building": "獨立大廈", + "address": "九龍油尖旺區彌敦道499-501A號獨立大廈" + }, + { + "building": "萬榮大廈", + "address": "九龍油尖旺區彌敦道503-507號萬榮大廈" + }, + { + "building": "彌敦道大樓", + "address": "九龍油尖旺區彌敦道509-511A號彌敦道大樓" + }, + { + "building": "泰和商業大樓", + "address": "九龍油尖旺區彌敦道513號泰和商業大樓" + }, + { + "building": "錦華樓", + "address": "九龍油尖旺區彌敦道514-516號錦華樓" + }, + { + "building": "好收成商業大廈", + "address": "九龍油尖旺區彌敦道515-517號好收成商業大廈" + }, + { + "building": "禮基大廈", + "address": "九龍油尖旺區彌敦道521-523號禮基大廈" + }, + { + "building": "金龍商業大廈", + "address": "九龍油尖旺區彌敦道522號金龍商業大廈" + }, + { + "building": "僑江大廈", + "address": "九龍油尖旺區彌敦道524號僑江大廈" + }, + { + "building": "寶寧大廈", + "address": "九龍油尖旺區彌敦道525-543A號寶寧大廈" + }, + { + "building": "康祐大廈", + "address": "九龍油尖旺區彌敦道528號康祐大廈" + }, + { + "building": "永僑大廈", + "address": "九龍油尖旺區彌敦道530號永僑大廈" + }, + { + "building": "嘉榮大廈", + "address": "九龍油尖旺區彌敦道532-538號嘉榮大廈" + }, + { + "building": "安利大廈", + "address": "九龍油尖旺區彌敦道545號安利大廈" + }, + { + "building": "旺角大樓", + "address": "九龍油尖旺區彌敦道546-548號旺角大樓" + }, + { + "building": "龍馬大廈", + "address": "九龍油尖旺區彌敦道550-552號龍馬大廈" + }, + { + "building": "寶聲大廈", + "address": "九龍油尖旺區彌敦道554-556A號寶聲大廈" + }, + { + "building": "九龍行", + "address": "九龍油尖旺區彌敦道555號九龍行" + }, + { + "building": "永旺行", + "address": "九龍油尖旺區彌敦道557-559號永旺行" + }, + { + "building": "交通銀行大廈", + "address": "九龍油尖旺區彌敦道563號交通銀行大廈" + }, + { + "building": "明芳大樓", + "address": "九龍油尖旺區彌敦道564號明芳大樓" + }, + { + "building": "銀座廣場", + "address": "九龍油尖旺區彌敦道565-567號銀座廣場" + }, + { + "building": "僑建大廈", + "address": "九龍油尖旺區彌敦道566-568A號僑建大廈" + }, + { + "building": "基利商業大廈", + "address": "九龍油尖旺區彌敦道570-572號基利商業大廈" + }, + { + "building": "富運商業中心", + "address": "九龍油尖旺區彌敦道573號富運商業中心" + }, + { + "building": "和富商業大廈", + "address": "九龍油尖旺區彌敦道574-576號和富商業大廈" + }, + { + "building": "高氏大樓", + "address": "九龍油尖旺區彌敦道577-577A號高氏大樓" + }, + { + "building": "恒隆大廈", + "address": "九龍油尖旺區彌敦道578-580號恒隆大廈" + }, + { + "building": "彌敦中心", + "address": "九龍油尖旺區彌敦道580G-580K號彌敦中心" + }, + { + "building": "富時中心", + "address": "九龍油尖旺區彌敦道583A-585號富時中心" + }, + { + "building": "豐怡中心", + "address": "九龍油尖旺區彌敦道591號豐怡中心" + }, + { + "building": "旺角新城", + "address": "九龍油尖旺區彌敦道594-596號旺角新城" + }, + { + "building": "創興廣場", + "address": "九龍油尖旺區彌敦道601號創興廣場" + }, + { + "building": "新興大廈", + "address": "九龍油尖旺區彌敦道603-609A號新興大廈" + }, + { + "building": "荷李活商業中心", + "address": "九龍油尖旺區彌敦道610號荷李活商業中心" + }, + { + "building": "雅蘭中心雅蘭中心一 & 二期", + "address": "九龍油尖旺區彌敦道625-639號雅蘭中心雅蘭中心一 & 二期" + }, + { + "building": "瓊華中心", + "address": "九龍油尖旺區彌敦道628號瓊華中心" + }, + { + "building": "東亞銀行旺角大廈", + "address": "九龍油尖旺區彌敦道638-640號東亞銀行旺角大廈" + }, + { + "building": "陶德大廈", + "address": "九龍油尖旺區彌敦道642-646號陶德大廈" + }, + { + "building": "利威大樓", + "address": "九龍油尖旺區彌敦道654-658號利威大樓" + }, + { + "building": "胡社生行", + "address": "九龍油尖旺區彌敦道655號胡社生行" + }, + { + "building": "上海商業銀行大廈", + "address": "九龍油尖旺區彌敦道664-672號上海商業銀行大廈" + }, + { + "building": "金冠大廈", + "address": "九龍油尖旺區彌敦道66-70號金冠大廈" + }, + { + "building": "恒生旺角大廈", + "address": "九龍油尖旺區彌敦道677號恒生旺角大廈" + }, + { + "building": "華僑商業中心", + "address": "九龍油尖旺區彌敦道678號華僑商業中心" + }, + { + "building": "美美大廈", + "address": "九龍油尖旺區彌敦道683-685號美美大廈" + }, + { + "building": "嘉禾大廈", + "address": "九龍油尖旺區彌敦道687-689號嘉禾大廈" + }, + { + "building": "旺角中心第一座", + "address": "九龍油尖旺區彌敦道688號旺角中心第一座" + }, + { + "building": "永如大廈", + "address": "九龍油尖旺區彌敦道691-691A,693-695A,697號永如大廈" + }, + { + "building": "T.O.P", + "address": "九龍油尖旺區彌敦道700號T.O.P" + }, + { + "building": "番發大廈", + "address": "九龍油尖旺區彌敦道701號番發大廈" + }, + { + "building": "金鑽?", + "address": "九龍油尖旺區彌敦道703-705號金鑽?" + }, + { + "building": "銀高國際大廈", + "address": "九龍油尖旺區彌敦道707-713號銀高國際大廈" + }, + { + "building": "八珍樓", + "address": "九龍油尖旺區彌敦道717號八珍樓" + }, + { + "building": "銀都商業大廈", + "address": "九龍油尖旺區彌敦道719號銀都商業大廈" + }, + { + "building": "家樂樓", + "address": "九龍油尖旺區彌敦道720-722號家樂樓" + }, + { + "building": "華比銀行大廈", + "address": "九龍油尖旺區彌敦道721-725號華比銀行大廈" + }, + { + "building": "南新大廈", + "address": "九龍油尖旺區彌敦道727號南新大廈" + }, + { + "building": "廣安銀行旺角分行大廈", + "address": "九龍油尖旺區彌敦道728-730號廣安銀行旺角分行大廈" + }, + { + "building": "昌興大廈", + "address": "九龍油尖旺區彌敦道72號昌興大廈" + }, + { + "building": "振宜大廈", + "address": "九龍油尖旺區彌敦道731-733號振宜大廈" + }, + { + "building": "寬成樓", + "address": "九龍油尖旺區彌敦道732號寬成樓" + }, + { + "building": "迅華大廈", + "address": "九龍油尖旺區彌敦道735-735A號迅華大廈" + }, + { + "building": "中?商業大廈", + "address": "九龍油尖旺區彌敦道736號中?商業大廈" + }, + { + "building": "金輪大廈", + "address": "九龍油尖旺區彌敦道737-741C號金輪大廈" + }, + { + "building": "利華大廈", + "address": "九龍油尖旺區彌敦道738-740A號利華大廈" + }, + { + "building": "有成大廈", + "address": "九龍油尖旺區彌敦道746-748號有成大廈" + }, + { + "building": "文遜大廈", + "address": "九龍油尖旺區彌敦道74-78號文遜大廈" + }, + { + "building": "愛都婚紗中心", + "address": "九龍油尖旺區彌敦道749A號愛都婚紗中心" + }, + { + "building": "歐亞銀行大廈", + "address": "九龍油尖旺區彌敦道749號歐亞銀行大廈" + }, + { + "building": "始創中心", + "address": "九龍油尖旺區彌敦道750號始創中心" + }, + { + "building": "龍盛樓", + "address": "九龍油尖旺區彌敦道751-753A號龍盛樓" + }, + { + "building": "冠顏樓", + "address": "九龍油尖旺區彌敦道751A-751C號冠顏樓" + }, + { + "building": "合盈商業中心", + "address": "九龍油尖旺區彌敦道755號合盈商業中心" + }, + { + "building": "東海大廈(下層聯合廣場)", + "address": "九龍油尖旺區彌敦道760-780號東海大廈(下層聯合廣場)" + }, + { + "building": "新望大廈", + "address": "九龍油尖旺區彌敦道763-767號新望大廈" + }, + { + "building": "?宜中心", + "address": "九龍油尖旺區彌敦道771-775號?宜中心" + }, + { + "building": "中銀太子大樓", + "address": "九龍油尖旺區彌敦道774號中銀太子大樓" + }, + { + "building": "恒利商業大廈", + "address": "九龍油尖旺區彌敦道776-778號恒利商業大廈" + }, + { + "building": "安寶樓", + "address": "九龍油尖旺區彌敦道777-781號安寶樓" + }, + { + "building": "麗英大廈", + "address": "九龍油尖旺區彌敦道780-782號麗英大廈" + }, + { + "building": "大生銀行大廈", + "address": "九龍油尖旺區彌敦道784號大生銀行大廈" + }, + { + "building": "利達大樓", + "address": "九龍油尖旺區彌敦道785-787A號利達大樓" + }, + { + "building": "中興商業大廈", + "address": "九龍油尖旺區彌敦道786號中興商業大廈" + }, + { + "building": "利美大廈", + "address": "九龍油尖旺區彌敦道788-790號利美大廈" + }, + { + "building": "健峰保險大廈", + "address": "九龍油尖旺區彌敦道789號健峰保險大廈" + }, + { + "building": "安康寧商業大廈", + "address": "九龍油尖旺區彌敦道792號安康寧商業大廈" + }, + { + "building": "協成行太子中心", + "address": "九龍油尖旺區彌敦道794-802號協成行太子中心" + }, + { + "building": "金鑾大廈", + "address": "九龍油尖旺區彌敦道80號金鑾大廈" + }, + { + "building": "喜利大廈", + "address": "九龍油尖旺區彌敦道81號喜利大廈" + }, + { + "building": "安樂大廈", + "address": "九龍油尖旺區彌敦道86-88A號安樂大廈" + }, + { + "building": "華敦大廈", + "address": "九龍油尖旺區彌敦道90-94C號華敦大廈" + }, + { + "building": "海防大廈", + "address": "九龍油尖旺區彌敦道99-101號海防大廈" + }, + { + "building": "寶力大樓", + "address": "九龍油尖旺區寶勒巷13-15號寶力大樓" + }, + { + "building": "玫瑰大廈", + "address": "九龍油尖旺區寶勒巷1-3號玫瑰大廈" + }, + { + "building": "雲龍商業大廈", + "address": "九龍油尖旺區寶勒巷22-24號雲龍商業大廈" + }, + { + "building": "東匯商業大廈", + "address": "九龍油尖旺區寶勒巷27號東匯商業大廈" + }, + { + "building": "寶昌商業大廈", + "address": "九龍油尖旺區寶勒巷29號寶昌商業大廈" + }, + { + "building": "萬事昌廣場", + "address": "九龍油尖旺區寶勒巷3-7A號萬事昌廣場" + }, + { + "building": "金帝行", + "address": "九龍油尖旺區寶勒巷4號金帝行" + }, + { + "building": "盈豐商業大廈", + "address": "九龍油尖旺區寶勒巷6-8號盈豐商業大廈" + }, + { + "building": "安居大廈", + "address": "九龍油尖旺區寶靈街1H號安居大廈" + }, + { + "building": "佐敦中心", + "address": "九龍油尖旺區寶靈街2-6號佐敦中心" + }, + { + "building": "寶安大廈", + "address": "九龍油尖旺區寶靈街32-38B號寶安大廈" + }, + { + "building": "寶興樓", + "address": "九龍油尖旺區寶靈街48-50號寶興樓" + }, + { + "building": "寶靈大樓", + "address": "九龍油尖旺區寶靈街8-20號寶靈大樓" + }, + { + "building": "東景台", + "address": "九龍油尖旺區覺士道3號東景台" + }, + { + "building": "御景臺", + "address": "九龍油尖旺區覺士道5號御景臺" + }, + { + "building": "嘉文花園", + "address": "九龍油尖旺區覺士道9號嘉文花園" + }, + { + "building": "興業中心", + "address": "九龍油尖旺區櫸樹街37號興業中心" + }, + { + "building": "業廣工商大廈", + "address": "九龍油尖旺區櫸樹街39-41號業廣工商大廈" + }, + { + "building": "豐年工業大廈", + "address": "九龍油尖旺區櫸樹街7-13號豐年工業大廈" + }, + { + "building": "奧柏.御? 一座", + "address": "九龍油尖旺區櫸樹街88號奧柏.御? 一座" + }, + { + "building": "櫻桃大廈", + "address": "九龍油尖旺區櫻桃街22-22A號櫻桃大廈" + }, + { + "building": "金旺閣", + "address": "九龍油尖旺區櫻桃街24-24A號金旺閣" + }, + { + "building": "金堂閣", + "address": "九龍油尖旺區鐵樹街13-23A號金堂閣" + }, + { + "building": "南苑", + "address": "九龍深水?區" + }, + { + "building": "美寧中心A座", + "address": "九龍深水?區" + }, + { + "building": "香港紗廠工業大廈第一期", + "address": "九龍深水?區" + }, + { + "building": "黃金大廈", + "address": "九龍深水?區" + }, + { + "building": "樂年花園", + "address": "九龍深水?區" + }, + { + "building": "瑞星商業大樓", + "address": "九龍深水?區NKIL1173長沙灣道202-204號瑞星商業大樓" + }, + { + "building": "生泰大廈", + "address": "九龍深水?區NKIL1463 & 2018青山道329-331號生泰大廈" + }, + { + "building": "利聯益大廈", + "address": "九龍深水?區NKIL176荔枝角道390-394號利聯益大廈" + }, + { + "building": "君凱豪庭", + "address": "九龍深水?區NKIL2188福華街561號君凱豪庭" + }, + { + "building": "光華樓", + "address": "九龍深水?區NKIL2877營盤街151-153號光華樓" + }, + { + "building": "D2 PLACE 二期", + "address": "九龍深水?區NKIL5560長順街15號D2 PLACE 二期" + }, + { + "building": "華苑", + "address": "九龍深水?區九江街140-142號華苑" + }, + { + "building": "置榮閣", + "address": "九龍深水?區九江街158-160號置榮閣" + }, + { + "building": "豐溢閣", + "address": "九龍深水?區九江街162號豐溢閣" + }, + { + "building": "僑輝大廈", + "address": "九龍深水?區九龍道5-7號僑輝大廈" + }, + { + "building": "博華大廈", + "address": "九龍深水?區九龍道9號博華大廈" + }, + { + "building": "又一居", + "address": "九龍深水?區又一居道9號又一居" + }, + { + "building": "華匯廣場", + "address": "九龍深水?區大南西街1008號華匯廣場" + }, + { + "building": "百福工業大廈", + "address": "九龍深水?區大南西街615-617號百福工業大廈" + }, + { + "building": "國基集團大廈", + "address": "九龍深水?區大南街156-158號國基集團大廈" + }, + { + "building": "金泉樓", + "address": "九龍深水?區大南街160-170號金泉樓" + }, + { + "building": "大南商業大廈", + "address": "九龍深水?區大南街169-171號大南商業大廈" + }, + { + "building": "安樂樓", + "address": "九龍深水?區大南街172-174號安樂樓" + }, + { + "building": "金寧大廈", + "address": "九龍深水?區大南街176-178號金寧大廈" + }, + { + "building": "萬豐大廈", + "address": "九龍深水?區大南街180號萬豐大廈" + }, + { + "building": "安樂大廈", + "address": "九龍深水?區大南街181-183號安樂大廈" + }, + { + "building": "興基大廈", + "address": "九龍深水?區大南街195-201號興基大廈" + }, + { + "building": "朝南樓", + "address": "九龍深水?區大南街206-212號朝南樓" + }, + { + "building": "兆昌大廈", + "address": "九龍深水?區大南街223-223A號兆昌大廈" + }, + { + "building": "恆昌樓", + "address": "九龍深水?區大南街230-234號恆昌樓" + }, + { + "building": "南富樓", + "address": "九龍深水?區大南街295-297號南富樓" + }, + { + "building": "南邦樓", + "address": "九龍深水?區大南街307-309號南邦樓" + }, + { + "building": "崇德樓", + "address": "九龍深水?區大南街315-319號崇德樓" + }, + { + "building": "立基樓", + "address": "九龍深水?區大南街321-323號立基樓" + }, + { + "building": "昌利大廈", + "address": "九龍深水?區大南街339-341號昌利大廈" + }, + { + "building": "興安樓", + "address": "九龍深水?區大南街359-361A號興安樓" + }, + { + "building": "嘉利閣", + "address": "九龍深水?區大南街370-372號嘉利閣" + }, + { + "building": "長輝閣", + "address": "九龍深水?區大南街376-378號長輝閣" + }, + { + "building": "永義廣場", + "address": "九龍深水?區大南街西609號永義廣場" + }, + { + "building": "德安大廈", + "address": "九龍深水?區大埔道10-12A號德安大廈" + }, + { + "building": "豪信大廈", + "address": "九龍深水?區大埔道104-106號豪信大廈" + }, + { + "building": "大埔樓", + "address": "九龍深水?區大埔道13-15號大埔樓" + }, + { + "building": "康寶大廈", + "address": "九龍深水?區大埔道132-134號康寶大廈" + }, + { + "building": "東廬大樓", + "address": "九龍深水?區大埔道136-154號東廬大樓" + }, + { + "building": "華都大廈", + "address": "九龍深水?區大埔道14-16號華都大廈" + }, + { + "building": "白花大廈", + "address": "九龍深水?區大埔道156-158號白花大廈" + }, + { + "building": "南都大廈", + "address": "九龍深水?區大埔道168-178號南都大廈" + }, + { + "building": "恆生深水?大廈", + "address": "九龍深水?區大埔道180-182號恆生深水?大廈" + }, + { + "building": "曉尚", + "address": "九龍深水?區大埔道188號曉尚" + }, + { + "building": "中國聯合銀行大廈", + "address": "九龍深水?區大埔道18號中國聯合銀行大廈" + }, + { + "building": "五聯大廈", + "address": "九龍深水?區大埔道190-192B號五聯大廈" + }, + { + "building": "嘉順大廈", + "address": "九龍深水?區大埔道194-196號嘉順大廈" + }, + { + "building": "金山樓", + "address": "九龍深水?區大埔道198-200號金山樓" + }, + { + "building": "澤群樓", + "address": "九龍深水?區大埔道232-234號澤群樓" + }, + { + "building": "金安大廈", + "address": "九龍深水?區大埔道236號金安大廈" + }, + { + "building": "長興閣", + "address": "九龍深水?區大埔道238號長興閣" + }, + { + "building": "金宇大樓", + "address": "九龍深水?區大埔道240-242號金宇大樓" + }, + { + "building": "銀輝樓", + "address": "九龍深水?區大埔道244-248號銀輝樓" + }, + { + "building": "景翠苑", + "address": "九龍深水?區大埔道25-27號景翠苑" + }, + { + "building": "德勝樓", + "address": "九龍深水?區大埔道29-29D號德勝樓" + }, + { + "building": "置輝閣", + "address": "九龍深水?區大埔道31-35號置輝閣" + }, + { + "building": "爾登華庭", + "address": "九龍深水?區大埔道369號" + }, + { + "building": "翠竹苑", + "address": "九龍深水?區大埔道389號翠竹苑" + }, + { + "building": "香港華商織造總會大廈", + "address": "九龍深水?區大埔道40號香港華商織造總會大廈" + }, + { + "building": "豐寧樓", + "address": "九龍深水?區大埔道42-44號豐寧樓" + }, + { + "building": "時康大廈", + "address": "九龍深水?區大埔道43-45號" + }, + { + "building": "永發樓", + "address": "九龍深水?區大埔道46號永發樓" + }, + { + "building": "中正大廈", + "address": "九龍深水?區大埔道48-52號中正大廈" + }, + { + "building": "協福大廈", + "address": "九龍深水?區大埔道63-71號協福大廈" + }, + { + "building": "福耀大廈", + "address": "九龍深水?區大埔道6-8號福耀大廈" + }, + { + "building": "太子中心", + "address": "九龍深水?區大埔道70號" + }, + { + "building": "太子中心商場", + "address": "九龍深水?區大埔道70號太子中心商場" + }, + { + "building": "海祥大廈", + "address": "九龍深水?區大埔道72-74號海祥大廈" + }, + { + "building": "威信大廈", + "address": "九龍深水?區大埔道75號威信大廈" + }, + { + "building": "華僑大廈", + "address": "九龍深水?區大埔道76-84號華僑大廈" + }, + { + "building": "民安大廈", + "address": "九龍深水?區大埔道79-85A號民安大廈" + }, + { + "building": "裕發大樓", + "address": "九龍深水?區大埔道87-91號裕發大樓" + }, + { + "building": "華仁大廈", + "address": "九龍深水?區大埔道92-102號華仁大廈" + }, + { + "building": "丹桂路10號", + "address": "九龍深水?區丹桂路10號" + }, + { + "building": "月中閣", + "address": "九龍深水?區丹桂路12號月中閣" + }, + { + "building": "丹桂閣", + "address": "九龍深水?區丹桂路14號丹桂閣" + }, + { + "building": "丹桂路16號", + "address": "九龍深水?區丹桂路16號" + }, + { + "building": "丹桂路3號", + "address": "九龍深水?區丹桂路3號" + }, + { + "building": "丹桂路4號", + "address": "九龍深水?區丹桂路4號" + }, + { + "building": "富澤苑", + "address": "九龍深水?區丹桂路5號富澤苑" + }, + { + "building": "蘭翠苑", + "address": "九龍深水?區丹桂路6-8號蘭翠苑" + }, + { + "building": "義華大廈", + "address": "九龍深水?區元州街" + }, + { + "building": "南都大廈", + "address": "九龍深水?區元州街124-126號南都大廈" + }, + { + "building": "龍鳳大廈", + "address": "九龍深水?區元州街131-135號龍鳳大廈" + }, + { + "building": "大興大廈", + "address": "九龍深水?區元州街132號大興大廈" + }, + { + "building": "大元樓", + "address": "九龍深水?區元州街1-3A號大元樓." + }, + { + "building": "富源閣", + "address": "九龍深水?區元州街143-145號富源閣" + }, + { + "building": "華興大樓", + "address": "九龍深水?區元州街146-150號華興大樓" + }, + { + "building": "新元洲大廈", + "address": "九龍深水?區元州街151-153A號新元洲大廈" + }, + { + "building": "金樂樓", + "address": "九龍深水?區元州街152號金樂樓" + }, + { + "building": "元安大廈", + "address": "九龍深水?區元州街154-160號元安大廈" + }, + { + "building": "翠雲大廈", + "address": "九龍深水?區元州街155-163號翠雲大廈" + }, + { + "building": "步陞工商業大樓", + "address": "九龍深水?區元州街165號步陞工商業大樓" + }, + { + "building": "鴻裕大廈", + "address": "九龍深水?區元州街174-188號鴻裕大廈" + }, + { + "building": "渭濱樓", + "address": "九龍深水?區元州街18B-18C號渭濱樓" + }, + { + "building": "美居中心", + "address": "九龍深水?區元州街213號美居中心" + }, + { + "building": "金源大廈", + "address": "九龍深水?區元州街223-229號金源大廈" + }, + { + "building": "潤發大廈", + "address": "九龍深水?區元州街231-247號潤發大廈" + }, + { + "building": "惠珍樓", + "address": "九龍深水?區元州街24-26號惠珍樓" + }, + { + "building": "懷德工業大廈", + "address": "九龍深水?區元州街249-263號懷德工業大廈" + }, + { + "building": "昌發工廠大廈", + "address": "九龍深水?區元州街265-271號昌發工廠大廈" + }, + { + "building": "泰盛工廠大廈", + "address": "九龍深水?區元州街273-279號泰盛工廠大廈" + }, + { + "building": "置達大廈", + "address": "九龍深水?區元州街28-30號置達大廈" + }, + { + "building": "西岸國際大廈", + "address": "九龍深水?區元州街290-296號西岸國際大廈" + }, + { + "building": "海旭閣", + "address": "九龍深水?區元州街298號海旭閣" + }, + { + "building": "隆基樓", + "address": "九龍深水?區元州街2號隆基樓" + }, + { + "building": "秉暉工業大廈", + "address": "九龍深水?區元州街312-314號秉暉工業大廈" + }, + { + "building": "永發大廈", + "address": "九龍深水?區元州街318-320A號永發大廈" + }, + { + "building": "元安大廈", + "address": "九龍深水?區元州街32-40號元安大廈" + }, + { + "building": "樂成樓", + "address": "九龍深水?區元州街33-35號樂成樓" + }, + { + "building": "南廬大廈", + "address": "九龍深水?區元州街334號南廬大廈" + }, + { + "building": "冠榮大廈", + "address": "九龍深水?區元州街353-357號冠榮大廈" + }, + { + "building": "尚南天", + "address": "九龍深水?區元州街362號尚南天" + }, + { + "building": "肇如大廈", + "address": "九龍深水?區元州街388號肇如大廈" + }, + { + "building": "興華樓", + "address": "九龍深水?區元州街414-418號興華樓" + }, + { + "building": "宏基樓", + "address": "九龍深水?區元州街43號宏基樓" + }, + { + "building": "寶華閣", + "address": "九龍深水?區元州街450-464號寶華閣" + }, + { + "building": "龍安大廈", + "address": "九龍深水?區元州街45號龍安大廈" + }, + { + "building": "紹恒大廈", + "address": "九龍深水?區元州街477-483號紹恒大廈" + }, + { + "building": "金碧閣", + "address": "九龍深水?區元州街482-492號金碧閣" + }, + { + "building": "富洲大廈", + "address": "九龍深水?區元州街485-491號富洲大廈" + }, + { + "building": "靄華大廈", + "address": "九龍深水?區元州街493-499號靄華大廈" + }, + { + "building": "青華閣", + "address": "九龍深水?區元州街498號青華閣" + }, + { + "building": "桂元樓", + "address": "九龍深水?區元州街50-52號桂元樓" + }, + { + "building": "鴻興大廈", + "address": "九龍深水?區元州街58-60號鴻興大廈" + }, + { + "building": "富雅閣", + "address": "九龍深水?區元州街71-73號富雅閣" + }, + { + "building": "兩洲大廈", + "address": "九龍深水?區元州街72-82號兩洲大廈" + }, + { + "building": "置安閣", + "address": "九龍深水?區元州街77-81號置安閣" + }, + { + "building": "金必多大廈", + "address": "九龍深水?區元州街85-95號金必多大廈" + }, + { + "building": "新高登電腦廣場", + "address": "九龍深水?區元州街85-95號新高登電腦廣場." + }, + { + "building": "慶成樓", + "address": "九龍深水?區元州街8-8A號慶成樓" + }, + { + "building": "喜漾", + "address": "九龍深水?區元州街喜漾" + }, + { + "building": "巴域閣", + "address": "九龍深水?區巴域街51號巴域閣" + }, + { + "building": "新寧大樓", + "address": "九龍深水?區巴域街61A-61C號新寧大樓" + }, + { + "building": "巴域居", + "address": "九龍深水?區巴域街61號巴域居" + }, + { + "building": "長興閣", + "address": "九龍深水?區巴域街69號長興閣" + }, + { + "building": "樂意居", + "address": "九龍深水?區北河街132號樂意居" + }, + { + "building": "銀河大廈", + "address": "九龍深水?區北河街134-136號銀河大廈" + }, + { + "building": "恆發大廈", + "address": "九龍深水?區北河街147-151號恆發大廈" + }, + { + "building": "大利樓", + "address": "九龍深水?區北河街165-167號大利樓" + }, + { + "building": "慶豐大樓", + "address": "九龍深水?區北河街169-171號慶豐大樓" + }, + { + "building": "富匯居", + "address": "九龍深水?區北河街183號富匯居" + }, + { + "building": "如意大廈", + "address": "九龍深水?區北河街24-26號如意大廈" + }, + { + "building": "愉翠苑", + "address": "九龍深水?區北河街33-39號愉翠苑" + }, + { + "building": "永富大廈", + "address": "九龍深水?區北河街48號永富大廈" + }, + { + "building": "振興大樓", + "address": "九龍深水?區北河街96-96C號振興大樓" + }, + { + "building": "永康中心", + "address": "九龍深水?區永康街18號永康中心" + }, + { + "building": "安泰工業大廈", + "address": "九龍深水?區永康街23-27號安泰工業大廈" + }, + { + "building": "兆威工業大廈", + "address": "九龍深水?區永康街29-33號兆威工業大廈" + }, + { + "building": "匯華工廠大廈", + "address": "九龍深水?區永康街41號匯華工廠大廈" + }, + { + "building": "綽榮商業大廈", + "address": "九龍深水?區永康街42A號綽榮商業大廈" + }, + { + "building": "時穎中心", + "address": "九龍深水?區永康街51-53號時穎中心" + }, + { + "building": "康輝大廈 B 座", + "address": "九龍深水?區永康街60-62號康輝大廈 B 座" + }, + { + "building": "環薈中心", + "address": "九龍深水?區永康街77號環薈中心" + }, + { + "building": "恒龍工商中心", + "address": "九龍深水?區永康街79號恒龍工商中心" + }, + { + "building": "西港都會中心", + "address": "九龍深水?區永康街7號西港都會中心" + }, + { + "building": "美景閣", + "address": "九龍深水?區玉蘭路11A號美景閣" + }, + { + "building": "景山閣", + "address": "九龍深水?區玉蘭路11號景山閣" + }, + { + "building": "美華閣", + "address": "九龍深水?區玉蘭路15號美華閣" + }, + { + "building": "祟明苑崇明苑", + "address": "九龍深水?區玉蘭路17號祟明苑崇明苑" + }, + { + "building": "玉蘭閣", + "address": "九龍深水?區玉蘭路19號玉蘭閣" + }, + { + "building": "蘭芳閣", + "address": "九龍深水?區玉蘭路1號蘭芳閣" + }, + { + "building": "雅趣苑", + "address": "九龍深水?區玉蘭路21號雅趣苑" + }, + { + "building": "美蘭閣", + "address": "九龍深水?區玉蘭路3號美蘭閣" + }, + { + "building": "德園", + "address": "九龍深水?區玉蘭路4號德園" + }, + { + "building": "蘭香閣", + "address": "九龍深水?區玉蘭路5號蘭香閣" + }, + { + "building": "玉寶閣", + "address": "九龍深水?區玉蘭路9號玉寶閣 第1座" + }, + { + "building": "明勝樓", + "address": "九龍深水?區白楊街20-22號明勝樓" + }, + { + "building": "順昌樓", + "address": "九龍深水?區白楊街21號順昌樓" + }, + { + "building": "嘉安大廈", + "address": "九龍深水?區白楊街27-29號嘉安大廈" + }, + { + "building": "翠景樓", + "address": "九龍深水?區白楊街31號翠景樓" + }, + { + "building": "茹苑", + "address": "九龍深水?區石竹路11號茹苑" + }, + { + "building": "石竹閣", + "address": "九龍深水?區石竹路12號石竹閣" + }, + { + "building": "皇朝閣", + "address": "九龍深水?區石竹路14-14D號皇朝閣" + }, + { + "building": "時喜閣", + "address": "九龍深水?區石竹路15號時喜閣" + }, + { + "building": "富康閣", + "address": "九龍深水?區石竹路16號富康閣" + }, + { + "building": "高雲閣", + "address": "九龍深水?區石竹路17號高雲閣" + }, + { + "building": "麗松苑", + "address": "九龍深水?區石竹路18號麗松苑" + }, + { + "building": "馨石苑", + "address": "九龍深水?區石竹路1號馨石苑" + }, + { + "building": "富安閣", + "address": "九龍深水?區石竹路2-2M號富安閣" + }, + { + "building": "麗?苑", + "address": "九龍深水?區石竹路3號麗?苑" + }, + { + "building": "東圃", + "address": "九龍深水?區石竹路7號東圃" + }, + { + "building": "富怡苑", + "address": "九龍深水?區石竹路8號富怡苑" + }, + { + "building": "良苑", + "address": "九龍深水?區石竹路9號良苑" + }, + { + "building": "荔聯大廈", + "address": "九龍深水?區石硤尾街2G號荔聯大廈" + }, + { + "building": "福華樓", + "address": "九龍深水?區石硤尾街34-38號福華樓" + }, + { + "building": "仁發大廈", + "address": "九龍深水?區石硤尾街39-41號仁發大廈" + }, + { + "building": "嘉麗苑", + "address": "九龍深水?區地錦路10號嘉麗苑" + }, + { + "building": "景康閣", + "address": "九龍深水?區地錦路12號景康閣" + }, + { + "building": "錦花園", + "address": "九龍深水?區地錦路1號錦花園" + }, + { + "building": "麗錦花園", + "address": "九龍深水?區地錦路3號麗錦花園" + }, + { + "building": "金暉苑", + "address": "九龍深水?區地錦路4號金暉苑" + }, + { + "building": "錦安閣", + "address": "九龍深水?區地錦路6號錦安閣" + }, + { + "building": "永康工廠大廈", + "address": "九龍深水?區汝州西街777-783號永康工廠大廈" + }, + { + "building": "汝洲樓", + "address": "九龍深水?區汝州街108-112號汝洲樓" + }, + { + "building": "萬興大廈", + "address": "九龍深水?區汝州街130-134號萬興大廈" + }, + { + "building": "宇宙大廈", + "address": "九龍深水?區汝州街136-138號宇宙大廈" + }, + { + "building": "富裕大廈", + "address": "九龍深水?區汝州街175-177號富裕大廈" + }, + { + "building": "金海大廈", + "address": "九龍深水?區汝州街184號金海大廈" + }, + { + "building": "金海大廈", + "address": "九龍深水?區汝州街188-190號金海大廈" + }, + { + "building": "冠明樓", + "address": "九龍深水?區汝州街199號冠明樓" + }, + { + "building": "保良局少清大廈", + "address": "九龍深水?區汝州街201-207號保良局少清大廈" + }, + { + "building": "安順大廈", + "address": "九龍深水?區汝州街202-214號安順大廈" + }, + { + "building": "高明大廈 (汝州街)", + "address": "九龍深水?區汝州街209-211號高明大廈 (汝州街)" + }, + { + "building": "捷興大廈", + "address": "九龍深水?區汝州街213-221號捷興大廈" + }, + { + "building": "長安大廈", + "address": "九龍深水?區汝州街218-224號長安大廈" + }, + { + "building": "玉泉樓", + "address": "九龍深水?區汝州街237-241號玉泉樓" + }, + { + "building": "涵碧樓", + "address": "九龍深水?區汝州街240-246號涵碧樓" + }, + { + "building": "建和閣", + "address": "九龍深水?區汝州街243-245號建和閣" + }, + { + "building": "東興大廈(汝州街)", + "address": "九龍深水?區汝州街251-255號東興大廈(汝州街)" + }, + { + "building": "彩蘭樓", + "address": "九龍深水?區汝州街257-259號彩蘭樓" + }, + { + "building": "森明大廈", + "address": "九龍深水?區汝州街264-270號森明大廈" + }, + { + "building": "信邦大廈", + "address": "九龍深水?區汝州街265-267號信邦大廈" + }, + { + "building": "溫馨閣", + "address": "九龍深水?區汝州街295-297號溫馨閣" + }, + { + "building": "寶喜大廈", + "address": "九龍深水?區汝州街42-46號寶喜大廈" + }, + { + "building": "萬邦大廈", + "address": "九龍深水?區汝州街48-56號萬邦大廈" + }, + { + "building": "布業大廈", + "address": "九龍深水?區汝州街81-89號布業大廈" + }, + { + "building": "昌輝大廈", + "address": "九龍深水?區汝州街95-97號昌輝大廈" + }, + { + "building": "園景大廈 第1座", + "address": "九龍深水?區西洋菜北街197-209號園景大廈 第1座" + }, + { + "building": "騏昌大廈", + "address": "九龍深水?區西洋菜北街211-213A號騏昌大廈" + }, + { + "building": "美邦大廈", + "address": "九龍深水?區西洋菜北街221-225號美邦大廈" + }, + { + "building": "萬和大廈", + "address": "九龍深水?區西洋菜北街227-229A號萬和大廈" + }, + { + "building": "新豪大廈", + "address": "九龍深水?區西洋菜北街271-281號新豪大廈" + }, + { + "building": "晉嶺", + "address": "九龍深水?區西洋菜北街289號晉嶺" + }, + { + "building": "碧翠樓", + "address": "九龍深水?區西洋菜北街444-446號碧翠樓" + }, + { + "building": "景怡?", + "address": "九龍深水?區西洋菜北街468號景怡?" + }, + { + "building": "富麗苑", + "address": "九龍深水?區牡丹路11號富麗苑" + }, + { + "building": "翡翠閣", + "address": "九龍深水?區牡丹路12號翡翠閣" + }, + { + "building": "富豪苑", + "address": "九龍深水?區牡丹路2號富豪苑" + }, + { + "building": "富寧苑", + "address": "九龍深水?區牡丹路3號富寧苑" + }, + { + "building": "錦謙閣", + "address": "九龍深水?區牡丹路4號錦謙閣" + }, + { + "building": "牡丹閣", + "address": "九龍深水?區牡丹路5號牡丹閣" + }, + { + "building": "錦?苑", + "address": "九龍深水?區牡丹路6號錦?苑" + }, + { + "building": "文華閣", + "address": "九龍深水?區牡丹路7號文華閣" + }, + { + "building": "富達苑", + "address": "九龍深水?區牡丹路8號富達苑" + }, + { + "building": "幸俊苑", + "address": "九龍深水?區幸祥街2號" + }, + { + "building": "帝景峰帝景居2座", + "address": "九龍深水?區延坪道" + }, + { + "building": "金華閣", + "address": "九龍深水?區昌華街20號金華閣" + }, + { + "building": "昌暉大廈", + "address": "九龍深水?區昌華街41-51號昌暉大廈" + }, + { + "building": "東蘭閣", + "address": "九龍深水?區東沙島街167B-167E號東蘭閣" + }, + { + "building": "富華閣", + "address": "九龍深水?區東沙島街171-175號富華閣" + }, + { + "building": "潤恆大廈", + "address": "九龍深水?區東沙島街182號潤恆大廈" + }, + { + "building": "恒邦商業大廈", + "address": "九龍深水?區東京街31號恒邦商業大廈" + }, + { + "building": "恆順大廈", + "address": "九龍深水?區東京街37-39號恆順大廈" + }, + { + "building": "東寧大廈", + "address": "九龍深水?區東京街40-42號東寧大廈" + }, + { + "building": "嘉利閣", + "address": "九龍深水?區東京街56-58號嘉利閣" + }, + { + "building": "玫瑰苑", + "address": "九龍深水?區玫瑰街" + }, + { + "building": "THE PRIMROSE", + "address": "九龍深水?區玫瑰街38號THE PRIMROSE" + }, + { + "building": "麗苑", + "address": "九龍深水?區花圃街" + }, + { + "building": "福祥苑", + "address": "九龍深水?區花圃街10號福祥苑" + }, + { + "building": "又一樓", + "address": "九龍深水?區花圃街11-11C號又一樓" + }, + { + "building": "花圃別墅", + "address": "九龍深水?區花圃街12-14號花圃別墅" + }, + { + "building": "福新苑", + "address": "九龍深水?區花圃街16號福新苑" + }, + { + "building": "金園別墅", + "address": "九龍深水?區花圃街18-20號金園別墅" + }, + { + "building": "花明別墅", + "address": "九龍深水?區花圃街26號花明別墅" + }, + { + "building": "又一村花園", + "address": "九龍深水?區花圃街63號又一村花園" + }, + { + "building": "運苑別墅", + "address": "九龍深水?區花圃街6-8號運苑別墅" + }, + { + "building": "正輝大樓", + "address": "九龍深水?區長沙灣道103-107號正輝大樓" + }, + { + "building": "榮華樓", + "address": "九龍深水?區長沙灣道109-115號榮華樓" + }, + { + "building": "永漢樓", + "address": "九龍深水?區長沙灣道11-13號永漢樓" + }, + { + "building": "長沙大樓", + "address": "九龍深水?區長沙灣道116-122號長沙大樓" + }, + { + "building": "德祥大樓", + "address": "九龍深水?區長沙灣道124-126號德祥大樓" + }, + { + "building": "長華大廈", + "address": "九龍深水?區長沙灣道125-127號長華大廈" + }, + { + "building": "怡家大廈", + "address": "九龍深水?區長沙灣道132-134號怡家大廈" + }, + { + "building": "長利商業大廈", + "address": "九龍深水?區長沙灣道137-143號長利商業大廈" + }, + { + "building": "大新大廈", + "address": "九龍深水?區長沙灣道140-142號大新大廈" + }, + { + "building": "大安樓", + "address": "九龍深水?區長沙灣道145-149A號大安樓" + }, + { + "building": "南灣大廈", + "address": "九龍深水?區長沙灣道151-153號南灣大廈" + }, + { + "building": "譽華大廈", + "address": "九龍深水?區長沙灣道15-19A號譽華大廈" + }, + { + "building": "協興大廈", + "address": "九龍深水?區長沙灣道158-160A號協興大廈" + }, + { + "building": "康寧大廈", + "address": "九龍深水?區長沙灣道162-166號康寧大廈" + }, + { + "building": "利誠樓", + "address": "九龍深水?區長沙灣道168-170號利誠樓" + }, + { + "building": "文裔大廈", + "address": "九龍深水?區長沙灣道172-176號文裔大廈" + }, + { + "building": "更新樓", + "address": "九龍深水?區長沙灣道186-188號更新樓" + }, + { + "building": "富安商業大廈", + "address": "九龍深水?區長沙灣道190-192號富安商業大廈" + }, + { + "building": "長樂大廈", + "address": "九龍深水?區長沙灣道191-203號長樂大廈" + }, + { + "building": "中銀長沙灣大樓", + "address": "九龍深水?區長沙灣道194-200號中銀長沙灣大樓" + }, + { + "building": "金沙樓", + "address": "九龍深水?區長沙灣道212-216號金沙樓" + }, + { + "building": "長豐大廈", + "address": "九龍深水?區長沙灣道21-25號長豐大廈" + }, + { + "building": "安樂大廈", + "address": "九龍深水?區長沙灣道218號安樂大廈" + }, + { + "building": "長利樓", + "address": "九龍深水?區長沙灣道219號長利樓" + }, + { + "building": "恆成大樓", + "address": "九龍深水?區長沙灣道22-24號恆成大樓" + }, + { + "building": "深之都", + "address": "九龍深水?區長沙灣道226-242號 G/F 至 3/F深之都" + }, + { + "building": "錦帆大廈", + "address": "九龍深水?區長沙灣道227-229號錦帆大廈" + }, + { + "building": "惠康大廈", + "address": "九龍深水?區長沙灣道233-239號惠康大廈" + }, + { + "building": "桂祥大廈", + "address": "九龍深水?區長沙灣道241-249號桂祥大廈" + }, + { + "building": "友興大廈", + "address": "九龍深水?區長沙灣道244-246號友興大廈" + }, + { + "building": "永安大廈", + "address": "九龍深水?區長沙灣道250-252號永安大廈" + }, + { + "building": "球安大廈", + "address": "九龍深水?區長沙灣道251-253號球安大廈" + }, + { + "building": "蘭芳華廈", + "address": "九龍深水?區長沙灣道255-261號蘭芳華廈" + }, + { + "building": "秋霞樓", + "address": "九龍深水?區長沙灣道260號秋霞樓" + }, + { + "building": "萬利大廈", + "address": "九龍深水?區長沙灣道262號萬利大廈" + }, + { + "building": "鴻益大廈", + "address": "九龍深水?區長沙灣道263-267號鴻益大廈" + }, + { + "building": "長康大廈", + "address": "九龍深水?區長沙灣道26-32號長康大廈" + }, + { + "building": "金煇大廈", + "address": "九龍深水?區長沙灣道264號金煇大廈" + }, + { + "building": "瑞祥大廈", + "address": "九龍深水?區長沙灣道269-273號瑞祥大廈" + }, + { + "building": "保華大廈", + "address": "九龍深水?區長沙灣道276-278A號保華大廈" + }, + { + "building": "惠康樓", + "address": "九龍深水?區長沙灣道280號惠康樓" + }, + { + "building": "南洋大廈", + "address": "九龍深水?區長沙灣道286-300號南洋大廈" + }, + { + "building": "怡靖苑", + "address": "九龍深水?區長沙灣道311號" + }, + { + "building": "鴻運大廈", + "address": "九龍深水?區長沙灣道31-41號鴻運大廈" + }, + { + "building": "怡閣苑", + "address": "九龍深水?區長沙灣道329-343號怡閣苑" + }, + { + "building": "長興大廈", + "address": "九龍深水?區長沙灣道43-45號長興大廈" + }, + { + "building": "雙喜大廈", + "address": "九龍深水?區長沙灣道44號雙喜大廈" + }, + { + "building": "廣興大廈", + "address": "九龍深水?區長沙灣道52-54號廣興大廈" + }, + { + "building": "合源樓", + "address": "九龍深水?區長沙灣道57-59號合源樓" + }, + { + "building": "肇義樓", + "address": "九龍深水?區長沙灣道64-66號肇義樓" + }, + { + "building": "中國船舶大廈", + "address": "九龍深水?區長沙灣道650號中國船舶大廈" + }, + { + "building": "麗新商業中心", + "address": "九龍深水?區長沙灣道678-684號麗新商業中心" + }, + { + "building": "貿易廣場", + "address": "九龍深水?區長沙灣道681號貿易廣場" + }, + { + "building": "名人居", + "address": "九龍深水?區長沙灣道68-70號名人居" + }, + { + "building": "昌明大廈", + "address": "九龍深水?區長沙灣道72-74號昌明大廈" + }, + { + "building": "鴻昌工廠大廈", + "address": "九龍深水?區長沙灣道742-748號鴻昌工廠大廈" + }, + { + "building": "廣大工廠大廈", + "address": "九龍深水?區長沙灣道750號廣大工廠大廈" + }, + { + "building": "長明大廈", + "address": "九龍深水?區長沙灣道76-78號長明大廈" + }, + { + "building": "天安工業大廈", + "address": "九龍深水?區長沙灣道777-779號天安工業大廈" + }, + { + "building": "香港中心", + "address": "九龍深水?區長沙灣道778-784號香港中心" + }, + { + "building": "嘉威大廈", + "address": "九龍深水?區長沙灣道7-9號嘉威大廈" + }, + { + "building": "文海樓", + "address": "九龍深水?區長沙灣道80-82號文海樓" + }, + { + "building": "長沙灣廣場", + "address": "九龍深水?區長沙灣道833號長沙灣廣場" + }, + { + "building": "協群樓", + "address": "九龍深水?區長沙灣道84-86號協群樓" + }, + { + "building": "利豐大廈", + "address": "九龍深水?區長沙灣道868-888號利豐大廈" + }, + { + "building": "億利工業中心", + "address": "九龍深水?區長沙灣道883號億利工業中心" + }, + { + "building": "康富樓", + "address": "九龍深水?區長沙灣道88-92號康富樓" + }, + { + "building": "安泰大廈", + "address": "九龍深水?區長沙灣道910號安泰大廈" + }, + { + "building": "時信中心", + "address": "九龍深水?區長沙灣道912-914號時信中心" + }, + { + "building": "百麗大廈", + "address": "九龍深水?區長沙灣道918號百麗大廈" + }, + { + "building": "時代中心", + "address": "九龍深水?區長沙灣道928-930號時代中心" + }, + { + "building": "興迅廣場", + "address": "九龍深水?區長沙灣道932號興迅廣場" + }, + { + "building": "永崇樓", + "address": "九龍深水?區長沙灣道94-96號永崇樓" + }, + { + "building": "永寧大廈", + "address": "九龍深水?區長發街17號永寧大廈" + }, + { + "building": "順輝大廈", + "address": "九龍深水?區長發街22號順輝大廈" + }, + { + "building": "安發大廈", + "address": "九龍深水?區長發街28號安發大廈" + }, + { + "building": "長城工廠大廈", + "address": "九龍深水?區長順街11號長城工廠大廈" + }, + { + "building": "華盛工業大廈", + "address": "九龍深水?區長順街18號華盛工業大廈" + }, + { + "building": "楊耀松第六工業大廈", + "address": "九龍深水?區長順街19號楊耀松第六工業大廈" + }, + { + "building": "新昌工業大廈", + "address": "九龍深水?區長順街1號新昌工業大廈" + }, + { + "building": "西頓中心", + "address": "九龍深水?區長順街7號西頓中心" + }, + { + "building": "昌隆工業大廈", + "address": "九龍深水?區長義街10號昌隆工業大廈" + }, + { + "building": "長江工廠大廈", + "address": "九龍深水?區長義街6號長江工廠大廈" + }, + { + "building": "D2 PLACE", + "address": "九龍深水?區長義街9號D2 PLACE" + }, + { + "building": "定豐中心", + "address": "九龍深水?區長裕街11號定豐中心" + }, + { + "building": "經達廣場", + "address": "九龍深水?區長裕街12號經達廣場" + }, + { + "building": "永明工業中心", + "address": "九龍深水?區長裕街15號永明工業中心" + }, + { + "building": "柏裕工業中心 B 座", + "address": "九龍深水?區長裕街18號柏裕工業中心 B 座" + }, + { + "building": "嘉圖工廠大廈", + "address": "九龍深水?區長裕街2號嘉圖工廠大廈" + }, + { + "building": "中國宏興大廈", + "address": "九龍深水?區長裕街5號中國宏興大廈" + }, + { + "building": "億京廣場", + "address": "九龍深水?區長裕街8號億京廣場" + }, + { + "building": "永隆大廈", + "address": "九龍深水?區青山道" + }, + { + "building": "鴻裕大廈A 座", + "address": "九龍深水?區青山道" + }, + { + "building": "菁盈雅軒", + "address": "九龍深水?區青山道100號菁盈雅軒" + }, + { + "building": "富裕居", + "address": "九龍深水?區青山道108號富裕居" + }, + { + "building": "威利商業大廈", + "address": "九龍深水?區青山道128號威利商業大廈" + }, + { + "building": "顯暉大廈", + "address": "九龍深水?區青山道129-135號顯暉大廈" + }, + { + "building": "順發居", + "address": "九龍深水?區青山道142號順發居" + }, + { + "building": "安寧大廈", + "address": "九龍深水?區青山道145-153號安寧大廈" + }, + { + "building": "永基商業大廈", + "address": "九龍深水?區青山道156-162號永基商業大廈" + }, + { + "building": "富臨門大廈", + "address": "九龍深水?區青山道15號富臨門大廈" + }, + { + "building": "宇宙大廈", + "address": "九龍深水?區青山道164-170號宇宙大廈" + }, + { + "building": "華盛大廈", + "address": "九龍深水?區青山道17-23號華盛大廈" + }, + { + "building": "永業大廈", + "address": "九龍深水?區青山道193A號永業大廈" + }, + { + "building": "雅怡居", + "address": "九龍深水?區青山道195A號雅怡居" + }, + { + "building": "恆輝樓", + "address": "九龍深水?區青山道195號恆輝樓" + }, + { + "building": "興隆大廈", + "address": "九龍深水?區青山道202-210號興隆大廈" + }, + { + "building": "春輝大廈", + "address": "九龍深水?區青山道205-209號春輝大廈" + }, + { + "building": "瑞麗閣", + "address": "九龍深水?區青山道212號瑞麗閣" + }, + { + "building": "達明大廈", + "address": "九龍深水?區青山道242-244號達明大廈" + }, + { + "building": "青山大樓", + "address": "九龍深水?區青山道246-248號青山大樓" + }, + { + "building": "金球閣", + "address": "九龍深水?區青山道252-256號金球閣" + }, + { + "building": "恒輝閣", + "address": "九龍深水?區青山道253-259號恒輝閣" + }, + { + "building": "永勝大樓", + "address": "九龍深水?區青山道25-35號永勝大樓." + }, + { + "building": "鉅昌大樓", + "address": "九龍深水?區青山道261-263號鉅昌大樓" + }, + { + "building": "怡發樓", + "address": "九龍深水?區青山道289號怡發樓" + }, + { + "building": "發祥大廈", + "address": "九龍深水?區青山道290-292號發祥大廈" + }, + { + "building": "廣發唐樓", + "address": "九龍深水?區青山道320-322號廣發唐樓" + }, + { + "building": "華懋333廣場", + "address": "九龍深水?區青山道333號華懋333廣場" + }, + { + "building": "順利商業大廈", + "address": "九龍深水?區青山道338-340號順利商業大廈" + }, + { + "building": "恒生青山道大廈", + "address": "九龍深水?區青山道339號恒生青山道大廈" + }, + { + "building": "建新大廈", + "address": "九龍深水?區青山道3-5號建新大廈" + }, + { + "building": "喜韻", + "address": "九龍深水?區青山道368號喜韻" + }, + { + "building": "昭德大廈", + "address": "九龍深水?區青山道373-379號昭德大廈" + }, + { + "building": "倫美大廈", + "address": "九龍深水?區青山道386-390號倫美大廈" + }, + { + "building": "喜薈", + "address": "九龍深水?區青山道399號喜薈" + }, + { + "building": "金城商業中心", + "address": "九龍深水?區青山道412-420號金城商業中心" + }, + { + "building": "東景大廈", + "address": "九龍深水?區青山道413號東景大廈" + }, + { + "building": "富華廣場", + "address": "九龍深水?區青山道421號富華廣場" + }, + { + "building": "秋創商業大廈", + "address": "九龍深水?區青山道422-428號秋創商業大廈" + }, + { + "building": "麗群閣", + "address": "九龍深水?區青山道438號麗群閣" + }, + { + "building": "康利大廈", + "address": "九龍深水?區青山道444-450號康利大廈" + }, + { + "building": "美奇大廈", + "address": "九龍深水?區青山道457-463號美奇大廈" + }, + { + "building": "聯邦閣A座", + "address": "九龍深水?區青山道467號聯邦閣A座" + }, + { + "building": "百佳商業中心", + "address": "九龍深水?區青山道476號百佳商業中心" + }, + { + "building": "百欣大廈", + "address": "九龍深水?區青山道478號百欣大廈" + }, + { + "building": "麗昌工廠大廈", + "address": "九龍深水?區青山道479-479A號麗昌工廠大廈" + }, + { + "building": "公源商標造織廠", + "address": "九龍深水?區青山道483D-483E號公源商標造織廠" + }, + { + "building": "再發工廠大廈", + "address": "九龍深水?區青山道483F-483G號再發工廠大廈" + }, + { + "building": "九龍廣場", + "address": "九龍深水?區青山道485號九龍廣場" + }, + { + "building": "香港工業中心", + "address": "九龍深水?區青山道489-491號香港工業中心" + }, + { + "building": "誠信工業大廈", + "address": "九龍深水?區青山道495號誠信工業大廈" + }, + { + "building": "時來工廠大廈", + "address": "九龍深水?區青山道497號時來工廠大廈" + }, + { + "building": "永興工業大廈", + "address": "九龍深水?區青山道499號永興工業大廈" + }, + { + "building": "百美工業大廈", + "address": "九龍深水?區青山道500號百美工業大廈" + }, + { + "building": "義德工廠大廈", + "address": "九龍深水?區青山道528號義德工廠大廈" + }, + { + "building": "偉基大廈", + "address": "九龍深水?區青山道532-532A號偉基大廈" + }, + { + "building": "半島大廈", + "address": "九龍深水?區青山道538號半島大廈" + }, + { + "building": "恒發工業大廈", + "address": "九龍深水?區青山道550-556號恒發工業大廈" + }, + { + "building": "製衣工業中心", + "address": "九龍深水?區青山道576-586號製衣工業中心" + }, + { + "building": "永盛工業大廈", + "address": "九龍深水?區青山道588-592號永盛工業大廈" + }, + { + "building": "榮吉工業大廈", + "address": "九龍深水?區青山道608號榮吉工業大廈" + }, + { + "building": "豐華工業大廈", + "address": "九龍深水?區青山道646-648A號豐華工業大廈" + }, + { + "building": "名人商業中心", + "address": "九龍深水?區青山道64號名人商業中心" + }, + { + "building": "益大工業大廈", + "address": "九龍深水?區青山道650-652號益大工業大廈" + }, + { + "building": "浪淘大廈", + "address": "九龍深水?區青山道654-656號浪淘大廈" + }, + { + "building": "福至工業大廈", + "address": "九龍深水?區青山道658號福至工業大廈" + }, + { + "building": "百生利中心", + "address": "九龍深水?區青山道660-662號百生利中心" + }, + { + "building": "奇華工業大廈", + "address": "九龍深水?區青山道666號奇華工業大廈" + }, + { + "building": "建文大廈", + "address": "九龍深水?區青山道66-74號建文大廈" + }, + { + "building": "潮流工貿中心", + "address": "九龍深水?區青山道682號潮流工貿中心" + }, + { + "building": "嘉名工廠大廈", + "address": "九龍深水?區青山道688-690號嘉名工廠大廈" + }, + { + "building": "中太工業大廈", + "address": "九龍深水?區青山道698號中太工業大廈" + }, + { + "building": "合興工業大廈", + "address": "九龍深水?區青山道702-704號合興工業大廈" + }, + { + "building": "英倫大廈", + "address": "九龍深水?區青山道7-7A號英倫大廈" + }, + { + "building": "新明閣", + "address": "九龍深水?區青山道84-90號新明閣" + }, + { + "building": "豐裕閣", + "address": "九龍深水?區青山道92號豐裕閣" + }, + { + "building": "新寶大廈", + "address": "九龍深水?區保安道17-33號新寶大廈" + }, + { + "building": "喜雅", + "address": "九龍深水?區保安道18-28號喜雅" + }, + { + "building": "寶安閣", + "address": "九龍深水?區保安道1號寶安閣" + }, + { + "building": "寶熙苑富熙閣", + "address": "九龍深水?區保安道255號寶熙苑富熙閣" + }, + { + "building": "寶熙苑榮熙閣", + "address": "九龍深水?區保安道255號寶熙苑榮熙閣" + }, + { + "building": "寶麗苑寶康閣", + "address": "九龍深水?區保安道325號寶麗苑寶康閣" + }, + { + "building": "寶麗苑寶澤閣", + "address": "九龍深水?區保安道327號寶麗苑寶澤閣" + }, + { + "building": "寶麗苑寶福閣", + "address": "九龍深水?區保安道329號寶麗苑寶福閣" + }, + { + "building": "寶華閣", + "address": "九龍深水?區保安道32號寶華閣" + }, + { + "building": "麗寶花園", + "address": "九龍深水?區保安道383號麗寶花園" + }, + { + "building": "卓華樓", + "address": "九龍深水?區南昌街124-126號卓華樓" + }, + { + "building": "南邦大廈", + "address": "九龍深水?區南昌街128-136號南邦大廈" + }, + { + "building": "南昌閣", + "address": "九龍深水?區南昌街133-135號南昌閣" + }, + { + "building": "南昌大廈", + "address": "九龍深水?區南昌街153-155號南昌大廈" + }, + { + "building": "廣豐樓", + "address": "九龍深水?區南昌街16-18C號廣豐樓" + }, + { + "building": "耀錦大樓", + "address": "九龍深水?區南昌街164-166號耀錦大樓" + }, + { + "building": "成林大廈", + "address": "九龍深水?區南昌街169-175號成林大廈" + }, + { + "building": "普泰大廈", + "address": "九龍深水?區南昌街176-180號普泰大廈" + }, + { + "building": "南昌樓", + "address": "九龍深水?區南昌街177號南昌樓" + }, + { + "building": "俊賢樓", + "address": "九龍深水?區南昌街182號俊賢樓" + }, + { + "building": "華麗廣場", + "address": "九龍深水?區南昌街188-200號華麗廣場" + }, + { + "building": "南昌苑", + "address": "九龍深水?區南昌街191號南昌苑" + }, + { + "building": "南昌一號", + "address": "九龍深水?區南昌街1及3號南昌一號" + }, + { + "building": "昌華新樓", + "address": "九龍深水?區南昌街203-211號昌華新樓" + }, + { + "building": "南昌戲院大?", + "address": "九龍深水?區南昌街223-237號南昌戲院大?" + }, + { + "building": "寶華樓", + "address": "九龍深水?區南昌街24-26號寶華樓" + }, + { + "building": "泰昌樓", + "address": "九龍深水?區南昌街36-40號泰昌樓" + }, + { + "building": "昌華樓", + "address": "九龍深水?區南昌街42-44號昌華樓" + }, + { + "building": "安兆樓", + "address": "九龍深水?區南昌街46-48號安兆樓" + }, + { + "building": "東成大廈(南昌街)", + "address": "九龍深水?區南昌街61-65號東成大廈(南昌街)" + }, + { + "building": "恆達大廈", + "address": "九龍深水?區南昌街80-82號恆達大廈" + }, + { + "building": "南昌中心", + "address": "九龍深水?區南昌街81-95號南昌中心" + }, + { + "building": "梅芳樓", + "address": "九龍深水?區南昌街90號梅芳樓" + }, + { + "building": "綽餘樓", + "address": "九龍深水?區南昌街96號綽餘樓" + }, + { + "building": "有男樓", + "address": "九龍深水?區南昌街97號有男樓" + }, + { + "building": "永昌樓", + "address": "九龍深水?區南昌街98-100號永昌樓" + }, + { + "building": "樂滿大廈", + "address": "九龍深水?區南昌街99-103號樂滿大廈" + }, + { + "building": "金椽樓", + "address": "九龍深水?區界限街15-15E號金椽樓" + }, + { + "building": "安發大廈", + "address": "九龍深水?區界限街21B-21D號安發大廈" + }, + { + "building": "明勝樓", + "address": "九龍深水?區界限街25-25B號明勝樓" + }, + { + "building": "恆順大樓", + "address": "九龍深水?區界限街27-41號恆順大樓" + }, + { + "building": "恒富大廈", + "address": "九龍深水?區界限街43號恒富大廈" + }, + { + "building": "曉珀", + "address": "九龍深水?區界限街51號曉珀" + }, + { + "building": "順興樓", + "address": "九龍深水?區桂林街121-125號順興樓" + }, + { + "building": "金滿樓", + "address": "九龍深水?區桂林街137-139號金滿樓" + }, + { + "building": "金桂大廈", + "address": "九龍深水?區桂林街145-147號金桂大廈" + }, + { + "building": "同德大廈", + "address": "九龍深水?區桂林街48-50A號同德大廈" + }, + { + "building": "幗寶樓", + "address": "九龍深水?區桂林街91-93號幗寶樓" + }, + { + "building": "華仁行", + "address": "九龍深水?區桃源街37-37A號華仁行" + }, + { + "building": "桃苑", + "address": "九龍深水?區桃源街39號桃苑" + }, + { + "building": "海棠苑", + "address": "九龍深水?區海棠路" + }, + { + "building": "勵精閣", + "address": "九龍深水?區海棠路" + }, + { + "building": "碧麗苑", + "address": "九龍深水?區海棠路1號碧麗苑" + }, + { + "building": "又一廣場", + "address": "九龍深水?區海棠路21-31號又一廣場" + }, + { + "building": "群力閣", + "address": "九龍深水?區海棠路50號群力閣." + }, + { + "building": "屏園", + "address": "九龍深水?區海棠路7號屏園" + }, + { + "building": "海壇大廈", + "address": "九龍深水?區海壇街145-149號海壇大廈" + }, + { + "building": "普陞閣", + "address": "九龍深水?區海壇街151-159號普陞閣" + }, + { + "building": "銀海大廈", + "address": "九龍深水?區海壇街163-167號銀海大廈" + }, + { + "building": "海安閣", + "address": "九龍深水?區海壇街166號海安閣" + }, + { + "building": "豐泰大樓", + "address": "九龍深水?區海壇街168號豐泰大樓" + }, + { + "building": "北海樓", + "address": "九龍深水?區海壇街186A號北海樓" + }, + { + "building": "金英樓", + "address": "九龍深水?區海壇街194號金英樓" + }, + { + "building": "安居閣", + "address": "九龍深水?區海壇街219-221號安居閣" + }, + { + "building": "海天大廈", + "address": "九龍深水?區海壇街224-226號海天大廈" + }, + { + "building": "富昌大廈", + "address": "九龍深水?區海壇街232-234號富昌大廈" + }, + { + "building": "海逸閣", + "address": "九龍深水?區海壇街236-236A號海逸閣" + }, + { + "building": "海天大樓", + "address": "九龍深水?區海壇街240-242號海天大樓" + }, + { + "building": "金海大廈", + "address": "九龍深水?區海壇街241-245號金海大廈" + }, + { + "building": "斑寶大廈", + "address": "九龍深水?區海壇街242A號斑寶大廈" + }, + { + "building": "泓景臺", + "address": "九龍深水?區荔枝角道" + }, + { + "building": "大安樓", + "address": "九龍深水?區荔枝角道195-201號大安樓" + }, + { + "building": "景輝閣", + "address": "九龍深水?區荔枝角道203-207號景輝閣" + }, + { + "building": "裕興大廈", + "address": "九龍深水?區荔枝角道208-210號裕興大廈" + }, + { + "building": "寶豪大廈", + "address": "九龍深水?區荔枝角道209-213號寶豪大廈" + }, + { + "building": "順景商業大廈", + "address": "九龍深水?區荔枝角道218-220號順景商業大廈" + }, + { + "building": "永明大廈", + "address": "九龍深水?區荔枝角道223-227A號永明大廈" + }, + { + "building": "荔香大廈", + "address": "九龍深水?區荔枝角道229-233A號荔香大廈" + }, + { + "building": "寶興樓", + "address": "九龍深水?區荔枝角道240-244號寶興樓" + }, + { + "building": "荔安樓", + "address": "九龍深水?區荔枝角道256-258號荔安樓" + }, + { + "building": "華僑樓", + "address": "九龍深水?區荔枝角道260-262號華僑樓" + }, + { + "building": "龍康樓", + "address": "九龍深水?區荔枝角道265-267號龍康樓" + }, + { + "building": "懷邦樓", + "address": "九龍深水?區荔枝角道270-272號懷邦樓" + }, + { + "building": "萬安大廈", + "address": "九龍深水?區荔枝角道282-290A號萬安大廈" + }, + { + "building": "紀華商業大廈", + "address": "九龍深水?區荔枝角道292號紀華商業大廈" + }, + { + "building": "百祥大樓", + "address": "九龍深水?區荔枝角道295-297號百祥大樓" + }, + { + "building": "正嘉大樓", + "address": "九龍深水?區荔枝角道299-303號正嘉大樓" + }, + { + "building": "盈達樓", + "address": "九龍深水?區荔枝角道315-315A號盈達樓" + }, + { + "building": "怡景樓", + "address": "九龍深水?區荔枝角道321號怡景樓" + }, + { + "building": "明德大廈", + "address": "九龍深水?區荔枝角道324-330號明德大廈" + }, + { + "building": "荔枝閣", + "address": "九龍深水?區荔枝角道338-342號荔枝閣" + }, + { + "building": "丰匯", + "address": "九龍深水?區荔枝角道339號丰匯" + }, + { + "building": "豐年閣", + "address": "九龍深水?區荔枝角道352-354號豐年閣" + }, + { + "building": "就安大廈", + "address": "九龍深水?區荔枝角道367-369號就安大廈" + }, + { + "building": "金倫閣", + "address": "九龍深水?區荔枝角道370-372號金倫閣" + }, + { + "building": "東明樓", + "address": "九龍深水?區荔枝角道378-380號東明樓" + }, + { + "building": "金碧大廈", + "address": "九龍深水?區荔枝角道382-384號金碧大廈" + }, + { + "building": "健益大廈", + "address": "九龍深水?區荔枝角道396號健益大廈" + }, + { + "building": "田氏企業中心", + "address": "九龍深水?區荔枝角道777號田氏企業中心" + }, + { + "building": "應通工業大廈", + "address": "九龍深水?區荔枝角道802號應通工業大廈" + }, + { + "building": "好運工業中心", + "address": "九龍深水?區荔枝角道808號好運工業中心" + }, + { + "building": "昇悅居", + "address": "九龍深水?區荔枝角道833號" + }, + { + "building": "勵豐中心", + "address": "九龍深水?區荔枝角道838號勵豐中心" + }, + { + "building": "永新工業大廈", + "address": "九龍深水?區荔枝角道850-870號永新工業大廈" + }, + { + "building": "一號.西九龍", + "address": "九龍深水?區荔枝角道873號一號.西九龍" + }, + { + "building": "東方石油大廈", + "address": "九龍深水?區荔枝角道877號東方石油大廈" + }, + { + "building": "凱樂苑", + "address": "九龍深水?區荔盈街3號" + }, + { + "building": "清麗苑", + "address": "九龍深水?區荔景山路264號清麗苑麗寧閣" + }, + { + "building": "嘉珀山第一座", + "address": "九龍深水?區郝德傑道1-3號嘉珀山第一座" + }, + { + "building": "郝德傑山第一座", + "address": "九龍深水?區郝德傑道2號郝德傑山第一座" + }, + { + "building": "瑞雯閣", + "address": "九龍深水?區高槐路10號瑞雯閣" + }, + { + "building": "高登閣", + "address": "九龍深水?區高槐路12號高登閣" + }, + { + "building": "駿皇閣", + "address": "九龍深水?區高槐路14號駿皇閣" + }, + { + "building": "康豪苑", + "address": "九龍深水?區高槐路1號康豪苑" + }, + { + "building": "昌裕閣", + "address": "九龍深水?區高槐路2號昌裕閣" + }, + { + "building": "高雅苑", + "address": "九龍深水?區高槐路6號高雅苑" + }, + { + "building": "賢苑", + "address": "九龍深水?區高槐路8號賢苑" + }, + { + "building": "田豐樓", + "address": "九龍深水?區偉智里1-3號田豐樓" + }, + { + "building": "白玉樓", + "address": "九龍深水?區偉智里1-3號白玉樓" + }, + { + "building": "福田大廈", + "address": "九龍深水?區偉智街38號福田大廈" + }, + { + "building": "寶田大廈", + "address": "九龍深水?區偉智街39號寶田大廈" + }, + { + "building": "幗瑞樓", + "address": "九龍深水?區基隆街118-120號幗瑞樓" + }, + { + "building": "華楓樓", + "address": "九龍深水?區基隆街123-129號華楓樓" + }, + { + "building": "金碧樓", + "address": "九龍深水?區基隆街128號金碧樓" + }, + { + "building": "宏德樓", + "address": "九龍深水?區基隆街143-145號宏德樓" + }, + { + "building": "基業大廈", + "address": "九龍深水?區基隆街152-154號基業大廈" + }, + { + "building": "基發樓", + "address": "九龍深水?區基隆街168-170號基發樓" + }, + { + "building": "榮生樓", + "address": "九龍深水?區基隆街172-176A號榮生樓" + }, + { + "building": "龍祥大廈", + "address": "九龍深水?區基隆街184-190號龍祥大廈" + }, + { + "building": "大德樓", + "address": "九龍深水?區基隆街298-302號大德樓" + }, + { + "building": "聯康大廈", + "address": "九龍深水?區基隆街316-324號聯康大廈" + }, + { + "building": "基隆樓", + "address": "九龍深水?區基隆街363-365號基隆樓" + }, + { + "building": "基發樓", + "address": "九龍深水?區基隆街381-383號基發樓" + }, + { + "building": "興隆大廈", + "address": "九龍深水?區基隆街385-391號興隆大廈" + }, + { + "building": "龍慶堂", + "address": "九龍深水?區基隆街92-94號龍慶堂" + }, + { + "building": "匯璽", + "address": "九龍深水?區深旺道28號匯璽" + }, + { + "building": "碧海藍天", + "address": "九龍深水?區深盛路8號碧海藍天" + }, + { + "building": "宇晴軒 第三座", + "address": "九龍深水?區深盛道9號" + }, + { + "building": "新光工業大廈", + "address": "九龍深水?區通州西街1059-1061號新光工業大廈" + }, + { + "building": "迦南大廈", + "address": "九龍深水?區通州街200號迦南大廈" + }, + { + "building": "海柏匯", + "address": "九龍深水?區通州街208號海柏匯" + }, + { + "building": "悅海軒", + "address": "九龍深水?區通州街218號悅海軒" + }, + { + "building": "通明大廈", + "address": "九龍深水?區通州街252-254號通明大廈" + }, + { + "building": "世運臺", + "address": "九龍深水?區通州街256號世運臺" + }, + { + "building": "仁光大廈", + "address": "九龍深水?區通州街314-316號仁光大廈" + }, + { + "building": "九洲大廈", + "address": "九龍深水?區通州街324-330號九洲大廈" + }, + { + "building": "時尚華庭", + "address": "九龍深水?區通州街336號時尚華庭" + }, + { + "building": "星匯居 二座", + "address": "九龍深水?區通州街500號星匯居 二座" + }, + { + "building": "盈暉臺", + "address": "九龍深水?區景荔徑8號盈暉臺" + }, + { + "building": "建新大樓", + "address": "九龍深水?區欽州街11-21號建新大樓" + }, + { + "building": "華興大樓", + "address": "九龍深水?區欽州街16-22號華興大樓" + }, + { + "building": "昌遠大廈", + "address": "九龍深水?區欽州街1-9A號昌遠大廈" + }, + { + "building": "德昌大廈", + "address": "九龍深水?區欽州街24-30號德昌大廈" + }, + { + "building": "永明大廈", + "address": "九龍深水?區欽州街34-42號永明大廈" + }, + { + "building": "西九龍中心", + "address": "九龍深水?區欽州街37K號西九龍中心" + }, + { + "building": "平安大廈", + "address": "九龍深水?區欽州街52-54號平安大廈" + }, + { + "building": "明輝大廈", + "address": "九龍深水?區欽州街56號明輝大廈" + }, + { + "building": "米蘭軒", + "address": "九龍深水?區欽州街58號米蘭軒" + }, + { + "building": "榮業商業大廈", + "address": "九龍深水?區欽州街65-71號榮業商業大廈" + }, + { + "building": "廣興閣", + "address": "九龍深水?區欽州街72-74號廣興閣" + }, + { + "building": "金濤閣", + "address": "九龍深水?區欽州街8號金濤閣" + }, + { + "building": "黃金閣", + "address": "九龍深水?區欽州街94號黃金閣" + }, + { + "building": "家家發大廈", + "address": "九龍深水?區發祥街9-11號家家發大廈" + }, + { + "building": "紫藤閣", + "address": "九龍深水?區紫藤路2號紫藤閣" + }, + { + "building": "紫藤花園", + "address": "九龍深水?區紫藤路9號紫藤花園" + }, + { + "building": "耀輝大廈", + "address": "九龍深水?區集輝街2-12號耀輝大廈" + }, + { + "building": "順景閣", + "address": "九龍深水?區順寧道15號順景閣" + }, + { + "building": "順安閣", + "address": "九龍深水?區順寧道17-25號順安閣" + }, + { + "building": "松鳴樓", + "address": "九龍深水?區順寧道1號松鳴樓" + }, + { + "building": "恆寧閣", + "address": "九龍深水?區順寧道253-263號恆寧閣" + }, + { + "building": "和豐大廈", + "address": "九龍深水?區順寧道25B號和豐大廈" + }, + { + "building": "康福樓", + "address": "九龍深水?區順寧道26-36號康福樓" + }, + { + "building": "日輝大廈", + "address": "九龍深水?區順寧道265-277號日輝大廈" + }, + { + "building": "永順大廈", + "address": "九龍深水?區順寧道277A-277E號永順大廈" + }, + { + "building": "順寧苑", + "address": "九龍深水?區順寧道283號順寧苑" + }, + { + "building": "新寧閣", + "address": "九龍深水?區順寧道29-39號新寧閣" + }, + { + "building": "忠信", + "address": "九龍深水?區順寧道316-318號忠信" + }, + { + "building": "順寧閣", + "address": "九龍深水?區順寧道320-328號順寧閣" + }, + { + "building": "曦華樓", + "address": "九龍深水?區順寧道323號曦華樓" + }, + { + "building": "興隆樓", + "address": "九龍深水?區順寧道329號興隆樓" + }, + { + "building": "順康居", + "address": "九龍深水?區順寧道38號順康居" + }, + { + "building": "裕成大廈", + "address": "九龍深水?區順寧道41-45號裕成大廈" + }, + { + "building": "順寧居", + "address": "九龍深水?區順寧道439-443號順寧居" + }, + { + "building": "順發大廈", + "address": "九龍深水?區順寧道445-449號順發大廈" + }, + { + "building": "秀怡閣", + "address": "九龍深水?區順寧道451-461號秀怡閣" + }, + { + "building": "永寧大廈", + "address": "九龍深水?區順寧道501-511號" + }, + { + "building": "東寶閣", + "address": "九龍深水?區順寧道50號東寶閣" + }, + { + "building": "怡景閣", + "address": "九龍深水?區順寧道513-521號怡景閣" + }, + { + "building": "順年閣", + "address": "九龍深水?區順寧道55-61號順年閣" + }, + { + "building": "仁順大廈", + "address": "九龍深水?區順寧道63-67號仁順大廈" + }, + { + "building": "松竹大廈", + "address": "九龍深水?區黃竹街1-3號松竹大廈" + }, + { + "building": "時康大廈", + "address": "九龍深水?區黃竹街43-45號時康大廈" + }, + { + "building": "維邦大廈", + "address": "九龍深水?區黃竹街44-48號維邦大廈" + }, + { + "building": "好景唐樓", + "address": "九龍深水?區黃竹街4-8號好景唐樓" + }, + { + "building": "順發大廈", + "address": "九龍深水?區黃竹街55-57號順發大廈" + }, + { + "building": "德安樓", + "address": "九龍深水?區黃竹街9-13號德安樓" + }, + { + "building": "萬事達廣場1-17號", + "address": "九龍深水?區萬事達廣場1-17號美孚新?,第七期" + }, + { + "building": "又一村花園", + "address": "九龍深水?區達之路" + }, + { + "building": "寶信園", + "address": "九龍深水?區達之路11A號寶信園" + }, + { + "building": "達之苑", + "address": "九龍深水?區達之路11號達之苑" + }, + { + "building": "雅麗苑", + "address": "九龍深水?區達之路15-17號" + }, + { + "building": "瑰麗新村", + "address": "九龍深水?區達之路21號瑰麗新村" + }, + { + "building": "樂景樓", + "address": "九龍深水?區達之路36號樂景樓" + }, + { + "building": "創新中心", + "address": "九龍深水?區達之路72號創新中心" + }, + { + "building": "秀蘭苑", + "address": "九龍深水?區達之路7號" + }, + { + "building": "又一城", + "address": "九龍深水?區達之路80號又一城" + }, + { + "building": "陳宅", + "address": "九龍深水?區達之路9號陳宅" + }, + { + "building": "秀菊苑 第二座", + "address": "九龍深水?區壽菊路12-14號秀菊苑 第二座" + }, + { + "building": "紫翠園", + "address": "九龍深水?區壽菊路1號紫翠園" + }, + { + "building": "蒂苑", + "address": "九龍深水?區壽菊路3號蒂苑" + }, + { + "building": "萬金閣", + "address": "九龍深水?區壽菊路4號萬金閣" + }, + { + "building": "美倫閣", + "address": "九龍深水?區壽菊路6號美倫閣" + }, + { + "building": "MARAVILLA", + "address": "九龍深水?區壽菊路7號MARAVILLA" + }, + { + "building": "安華閣", + "address": "九龍深水?區壽菊路8號安華閣" + }, + { + "building": "畢架山峰", + "address": "九龍深水?區歌和老街20號" + }, + { + "building": "北河大廈", + "address": "九龍深水?區福華街" + }, + { + "building": "福昌樓", + "address": "九龍深水?區福華街" + }, + { + "building": "華安大廈", + "address": "九龍深水?區福華街103-107號華安大廈" + }, + { + "building": "北河大廈北河商場 ", + "address": "九龍深水?區福華街115-117號北河大廈北河商場 (北河大廈)" + }, + { + "building": "美華大廈", + "address": "九龍深水?區福華街123-127號美華大廈" + }, + { + "building": "貴華樓", + "address": "九龍深水?區福華街132-134號貴華樓" + }, + { + "building": "永裕大廈", + "address": "九龍深水?區福華街133號永裕大廈" + }, + { + "building": "恆興大廈", + "address": "九龍深水?區福華街1-3號恆興大廈" + }, + { + "building": "福僑大樓", + "address": "九龍深水?區福華街143-145號福僑大樓" + }, + { + "building": "慶華大廈", + "address": "九龍深水?區福華街147-151A號慶華大廈" + }, + { + "building": "發新樓", + "address": "九龍深水?區福華街14號發新樓" + }, + { + "building": "金華大廈", + "address": "九龍深水?區福華街153-155號金華大廈" + }, + { + "building": "玉成樓", + "address": "九龍深水?區福華街157A-157D號玉成樓" + }, + { + "building": "福仁大廈", + "address": "九龍深水?區福華街161-175號福仁大廈" + }, + { + "building": "龍華大廈", + "address": "九龍深水?區福華街16-24號龍華大廈" + }, + { + "building": "福昇大廈", + "address": "九龍深水?區福華街17-25號福昇大廈" + }, + { + "building": "永聯大廈", + "address": "九龍深水?區福華街177A-177C號永聯大廈" + }, + { + "building": "新華大樓", + "address": "九龍深水?區福華街179-185號新華大樓" + }, + { + "building": "怡華閣", + "address": "九龍深水?區福華街182-186號怡華閣" + }, + { + "building": "海?", + "address": "九龍深水?區福華街188號海?" + }, + { + "building": "福隆大廈", + "address": "九龍深水?區福華街191-199號福隆大廈" + }, + { + "building": "福華閣", + "address": "九龍深水?區福華街201-205號福華閣" + }, + { + "building": "福江大廈", + "address": "九龍深水?區福華街208A-208C號福江大廈" + }, + { + "building": "捷德樓", + "address": "九龍深水?區福華街210-212號捷德樓" + }, + { + "building": "三英大廈", + "address": "九龍深水?區福華街2-2C號三英大廈" + }, + { + "building": "朝光商業大廈", + "address": "九龍深水?區福華街27號朝光商業大廈" + }, + { + "building": "力生居", + "address": "九龍深水?區福華街28-30號力生居" + }, + { + "building": "明華大廈", + "address": "九龍深水?區福華街32-38號明華大廈" + }, + { + "building": "鴻福大樓", + "address": "九龍深水?區福華街45-51號鴻福大樓" + }, + { + "building": "海生樓", + "address": "九龍深水?區福華街54-56號海生樓" + }, + { + "building": "深祟閣", + "address": "九龍深水?區福華街55B號深祟閣" + }, + { + "building": "華寶樓", + "address": "九龍深水?區福華街5-7號華寶樓" + }, + { + "building": "鴻生大廈", + "address": "九龍深水?區福華街61-67號鴻生大廈" + }, + { + "building": "華邦大樓", + "address": "九龍深水?區福華街69-75號華邦大樓" + }, + { + "building": "紫雲大樓", + "address": "九龍深水?區福華街77B-77C號紫雲大樓" + }, + { + "building": "福安大廈", + "address": "九龍深水?區福華街88-90號福安大廈" + }, + { + "building": "裕豐樓", + "address": "九龍深水?區福華街96-100號裕豐樓" + }, + { + "building": "福榮大廈", + "address": "九龍深水?區福榮街" + }, + { + "building": "百福大廈", + "address": "九龍深水?區福榮街100號百福大廈" + }, + { + "building": "利達大廈", + "address": "九龍深水?區福榮街103-105號利達大廈" + }, + { + "building": "嘉匯大廈", + "address": "九龍深水?區福榮街1-11號嘉匯大廈" + }, + { + "building": "五昌大樓", + "address": "九龍深水?區福榮街116-118號五昌大樓" + }, + { + "building": "榮利大廈", + "address": "九龍深水?區福榮街138-148號榮利大廈" + }, + { + "building": "健發樓", + "address": "九龍深水?區福榮街14號健發樓" + }, + { + "building": "冠奇大廈", + "address": "九龍深水?區福榮街153-159號冠奇大廈" + }, + { + "building": "永邦樓", + "address": "九龍深水?區福榮街161-163號永邦樓" + }, + { + "building": "福安樓", + "address": "九龍深水?區福榮街16A-16D號福安樓" + }, + { + "building": "九福大廈", + "address": "九龍深水?區福榮街170-172號九福大廈" + }, + { + "building": "聯益泰大廈", + "address": "九龍深水?區福榮街17-19號聯益泰大廈" + }, + { + "building": "永華大廈", + "address": "九龍深水?區福榮街171號永華大廈" + }, + { + "building": "明興樓", + "address": "九龍深水?區福榮街174-176號明興樓" + }, + { + "building": "順怡閣", + "address": "九龍深水?區福榮街178-182號順怡閣" + }, + { + "building": "福怡大廈", + "address": "九龍深水?區福榮街18-20號福怡大廈" + }, + { + "building": "常榮大樓", + "address": "九龍深水?區福榮街187-189號常榮大樓" + }, + { + "building": "百樂大樓", + "address": "九龍深水?區福榮街208-210號百樂大樓" + }, + { + "building": "營福大廈", + "address": "九龍深水?區福榮街212-214號營福大廈" + }, + { + "building": "寓?捌", + "address": "九龍深水?區福榮街228-232號寓?捌" + }, + { + "building": "新榮大樓", + "address": "九龍深水?區福榮街25-31A號新榮大樓" + }, + { + "building": "福祥樓", + "address": "九龍深水?區福榮街26號福祥樓" + }, + { + "building": "佳成大廈", + "address": "九龍深水?區福榮街33-35號佳成大廈" + }, + { + "building": "福年大廈", + "address": "九龍深水?區福榮街42-44號福年大廈" + }, + { + "building": "逸軒", + "address": "九龍深水?區福榮街47號逸軒" + }, + { + "building": "榮華大廈", + "address": "九龍深水?區福榮街49-53號榮華大廈" + }, + { + "building": "福榮唐樓", + "address": "九龍深水?區福榮街4號福榮唐樓" + }, + { + "building": "依時大廈", + "address": "九龍深水?區福榮街512-518號依時大廈" + }, + { + "building": "喜遇", + "address": "九龍深水?區福榮街538號喜遇" + }, + { + "building": "聯邦閣B座", + "address": "九龍深水?區福榮街548號聯邦閣B座" + }, + { + "building": "文昌閣", + "address": "九龍深水?區福榮街55-57號文昌閣" + }, + { + "building": "興體樓", + "address": "九龍深水?區福榮街64-66號興體樓" + }, + { + "building": "金陵樓", + "address": "九龍深水?區福榮街80-82號金陵樓" + }, + { + "building": "恆安樓", + "address": "九龍深水?區福榮街88-90號恆安樓" + }, + { + "building": "常福大廈", + "address": "九龍深水?區福榮街92-98號常福大廈" + }, + { + "building": "仁寶大廈", + "address": "九龍深水?區窩仔街3號仁寶大廈" + }, + { + "building": "廣成街1號", + "address": "九龍深水?區廣成街1號" + }, + { + "building": "曉盈", + "address": "九龍深水?區褔榮街188號曉盈" + }, + { + "building": "合興船務工程(香港)有限公司", + "address": "九龍深水?區興華西街 81號合興船務工程(香港)有限公司" + }, + { + "building": "信德中旅船務管理有限公司", + "address": "九龍深水?區興華西街 83號信德中旅船務管理有限公司" + }, + { + "building": "宏德大廈", + "address": "九龍深水?區興華西街 85號宏德大廈" + }, + { + "building": "和興大廈", + "address": "九龍深水?區興華街27A-27F號和興大廈" + }, + { + "building": "海華麗軒", + "address": "九龍深水?區興華街38號海華麗軒" + }, + { + "building": "其景樓", + "address": "九龍深水?區鴨寮街102號其景樓" + }, + { + "building": "錦城大廈", + "address": "九龍深水?區鴨寮街120-124號錦城大廈" + }, + { + "building": "慧賢閣", + "address": "九龍深水?區鴨寮街12-14號慧賢閣" + }, + { + "building": "華登大廈", + "address": "九龍深水?區鴨寮街139-141號華登大廈" + }, + { + "building": "東成大廈(鴨寮街)", + "address": "九龍深水?區鴨寮街155-167號東成大廈(鴨寮街)" + }, + { + "building": "英偉樓", + "address": "九龍深水?區鴨寮街166-170號英偉樓" + }, + { + "building": "明珠大樓", + "address": "九龍深水?區鴨寮街195-201號明珠大樓" + }, + { + "building": "好時閣", + "address": "九龍深水?區鴨寮街214-216號好時閣" + }, + { + "building": "金輝大廈(鴨寮街)", + "address": "九龍深水?區鴨寮街240-242號金輝大廈(鴨寮街)" + }, + { + "building": "運福樓", + "address": "九龍深水?區鴨寮街28-36號運福樓" + }, + { + "building": "田發樓", + "address": "九龍深水?區鴨寮街2號田發樓" + }, + { + "building": "寶隆大廈", + "address": "九龍深水?區鴨寮街38-40號寶隆大廈" + }, + { + "building": "友來大廈", + "address": "九龍深水?區鴨寮街9-19號友來大廈" + }, + { + "building": "昌福大廈", + "address": "九龍深水?區鴨寮街97-101號昌福大廈" + }, + { + "building": "畢架山花園", + "address": "九龍深水?區龍坪道1號畢架山花園" + }, + { + "building": "建安大廈", + "address": "九龍深水?區營盤街163-173號建安大廈" + }, + { + "building": "源盛工業大廈", + "address": "九龍深水?區醫局西街1033號源盛工業大廈" + }, + { + "building": "深水?大廈", + "address": "九龍深水?區醫局街104-110號深水?大廈" + }, + { + "building": "金輝樓", + "address": "九龍深水?區醫局街128-132號金輝樓" + }, + { + "building": "紹興大樓", + "address": "九龍深水?區醫局街129-131A號紹興大樓" + }, + { + "building": "三達大廈", + "address": "九龍深水?區醫局街148-152號三達大廈" + }, + { + "building": "金怡樓", + "address": "九龍深水?區醫局街154-156號金怡樓" + }, + { + "building": "喜居", + "address": "九龍深水?區醫局街161號喜居" + }, + { + "building": "桂林大廈", + "address": "九龍深水?區醫局街193A-193D號桂林大廈" + }, + { + "building": "嘉裕居", + "address": "九龍深水?區醫局街198號嘉裕居" + }, + { + "building": "健基閣", + "address": "九龍深水?區醫局街207號健基閣" + }, + { + "building": "德富大廈", + "address": "九龍深水?區醫局街211號德富大廈" + }, + { + "building": "騰達樓", + "address": "九龍深水?區醫局街214-216號騰達樓" + }, + { + "building": "置豐閣", + "address": "九龍深水?區醫局街218-220號置豐閣" + }, + { + "building": "欽州大廈", + "address": "九龍深水?區醫局街219B號欽州大廈." + }, + { + "building": "仁禮大廈", + "address": "九龍深水?區醫局街222-224號仁禮大廈" + }, + { + "building": "寶榮大廈寶榮大樓", + "address": "九龍深水?區醫局街235-249號寶榮大廈寶榮大樓" + }, + { + "building": "嘉美中心A座", + "address": "九龍深水?區醫局街238號嘉美中心A座" + }, + { + "building": "嘉美中心B座", + "address": "九龍深水?區醫局街238號嘉美中心B座" + }, + { + "building": "怡高工業中心", + "address": "九龍深水?區醫局街555號怡高工業中心" + }, + { + "building": "利德昌大廈", + "address": "九龍深水?區醫局街94-98號利德昌大廈" + }, + { + "building": "永昌工業大廈", + "address": "九龍深水?區瓊林街121號永昌工業大廈" + }, + { + "building": "龍翔工業大廈", + "address": "九龍深水?區瓊林街93號龍翔工業大廈" + }, + { + "building": "曼克頓山", + "address": "九龍深水?區寶輪街1號曼克頓山" + }, + { + "building": "振發工廠大廈", + "address": "九龍黃大仙區七寶街3號振發工廠大廈" + }, + { + "building": "利中工業大廈", + "address": "九龍黃大仙區七寶街7號利中工業大廈" + }, + { + "building": "八達工業大廈", + "address": "九龍黃大仙區八達街1號八達工業大廈" + }, + { + "building": "安達工業大廈", + "address": "九龍黃大仙區八達街3-5號安達工業大廈" + }, + { + "building": "威達工貿商業中心", + "address": "九龍黃大仙區八達街7-9號威達工貿商業中心" + }, + { + "building": "正華工業大廈", + "address": "九龍黃大仙區三祝街10號正華工業大廈" + }, + { + "building": "榮森第二工業大廈", + "address": "九龍黃大仙區三祝街12-14號榮森第二工業大廈" + }, + { + "building": "百勝工廠大廈", + "address": "九龍黃大仙區三祝街16-20號百勝工廠大廈" + }, + { + "building": "啟德工廠大廈第一期", + "address": "九龍黃大仙區三祝街22號啟德工廠大廈第一期" + }, + { + "building": "萬星工業大廈", + "address": "九龍黃大仙區大有街14號萬星工業大廈" + }, + { + "building": "昌泰工廠大廈", + "address": "九龍黃大仙區大有街16號昌泰工廠大廈" + }, + { + "building": "標準工業大廈", + "address": "九龍黃大仙區大有街22-24號標準工業大廈" + }, + { + "building": "寶城工業大廈", + "address": "九龍黃大仙區大有街23號寶城工業大廈" + }, + { + "building": "天虹大廈", + "address": "九龍黃大仙區大有街26-28號天虹大廈" + }, + { + "building": "善美工業大廈", + "address": "九龍黃大仙區大有街31號善美工業大廈" + }, + { + "building": "佳力工業大廈", + "address": "九龍黃大仙區大有街33號佳力工業大廈" + }, + { + "building": "新科技廣場", + "address": "九龍黃大仙區大有街34號新科技廣場" + }, + { + "building": "義發工業大廈", + "address": "九龍黃大仙區大有街35號義發工業大廈" + }, + { + "building": "華興工業大廈", + "address": "九龍黃大仙區大有街36號華興工業大廈" + }, + { + "building": "新寶中心", + "address": "九龍黃大仙區五芳街10號新寶中心" + }, + { + "building": "利景工業大樓", + "address": "九龍黃大仙區五芳街12號利景工業大樓" + }, + { + "building": "立安工業大廈", + "address": "九龍黃大仙區五芳街18號立安工業大廈" + }, + { + "building": "宏發工廠大廈", + "address": "九龍黃大仙區五芳街20-22A號宏發工廠大廈" + }, + { + "building": "榮盛工業大廈", + "address": "九龍黃大仙區五芳街24-26號榮盛工業大廈" + }, + { + "building": "永濟工業大廈", + "address": "九龍黃大仙區五芳街27-29號永濟工業大廈" + }, + { + "building": "利森工廠大廈", + "address": "九龍黃大仙區五芳街28號利森工廠大廈" + }, + { + "building": "裕美工業中心", + "address": "九龍黃大仙區五芳街2號裕美工業中心" + }, + { + "building": "永顯工廠大廈", + "address": "九龍黃大仙區五芳街31-33號永顯工廠大廈" + }, + { + "building": "華懋工業大廈", + "address": "九龍黃大仙區五芳街5-7號華懋工業大廈" + }, + { + "building": "仁愛大樓", + "address": "九龍黃大仙區仁愛街2-24號仁愛大樓" + }, + { + "building": "安隆工廠大廈", + "address": "九龍黃大仙區六合街11-13號安隆工廠大廈" + }, + { + "building": "萬昌中心", + "address": "九龍黃大仙區六合街23號萬昌中心" + }, + { + "building": "中興工業大廈", + "address": "九龍黃大仙區六合街2-4號中興工業大廈" + }, + { + "building": "嘉時工廠大廈", + "address": "九龍黃大仙區六合街25-27號嘉時工廠大廈" + }, + { + "building": "利運工廠大廈", + "address": "九龍黃大仙區六合街5號利運工廠大廈" + }, + { + "building": "永發印刷廠", + "address": "九龍黃大仙區六合街6號永發印刷廠" + }, + { + "building": "六合工業大廈", + "address": "九龍黃大仙區六合街8號六合工業大廈" + }, + { + "building": "中溪工業大廈", + "address": "九龍黃大仙區六合街9號中溪工業大廈" + }, + { + "building": "譽‧港灣", + "address": "九龍黃大仙區太子道東638號譽‧港灣1座" + }, + { + "building": "寶光商業中心", + "address": "九龍黃大仙區太子道東698號寶光商業中心" + }, + { + "building": "超達工業大廈", + "address": "九龍黃大仙區太子道東708-710號超達工業大廈" + }, + { + "building": "捷景工業大廈", + "address": "九龍黃大仙區太子道東714號捷景工業大廈" + }, + { + "building": "怡發花園", + "address": "九龍黃大仙區永定道15號怡發花園" + }, + { + "building": "怡富花園", + "address": "九龍黃大仙區永定道20號怡富花園" + }, + { + "building": "威豪花園", + "address": "九龍黃大仙區永定道2號威豪花園" + }, + { + "building": "竹園廣場", + "address": "九龍黃大仙區竹園道15號竹園廣場" + }, + { + "building": "天宏苑宏美閣", + "address": "九龍黃大仙區竹園道51號天宏苑宏美閣" + }, + { + "building": "天宏苑宏遠閣", + "address": "九龍黃大仙區竹園道51號天宏苑宏遠閣" + }, + { + "building": "天馬苑", + "address": "九龍黃大仙區竹園道55號天馬苑" + }, + { + "building": "康強苑", + "address": "九龍黃大仙區杏林街23號康強苑" + }, + { + "building": "永德樓", + "address": "九龍黃大仙區沙田坳道106-108號永德樓" + }, + { + "building": "豪門", + "address": "九龍黃大仙區沙浦道46號豪門" + }, + { + "building": "御·豪門", + "address": "九龍黃大仙區沙浦道83號御·豪門" + }, + { + "building": "帝峰豪苑", + "address": "九龍黃大仙區斧山道183號帝峰豪苑" + }, + { + "building": "宏景花園", + "address": "九龍黃大仙區斧山道185號" + }, + { + "building": "慈安苑安欣閣", + "address": "九龍黃大仙區欣華街10號慈安苑安欣閣" + }, + { + "building": "毓華樓", + "address": "九龍黃大仙區芳華里1-11號毓華樓" + }, + { + "building": "富源樓", + "address": "九龍黃大仙區衍慶街21-29號富源樓" + }, + { + "building": "寶興大廈", + "address": "九龍黃大仙區衍慶街55-57號寶興大廈" + }, + { + "building": "東誠大廈", + "address": "九龍黃大仙區衍慶街5-7號東誠大廈" + }, + { + "building": "盈利大廈", + "address": "九龍黃大仙區飛鳳街17-29號盈利大廈" + }, + { + "building": "長春大廈", + "address": "九龍黃大仙區飛鳳街28-46號長春大廈" + }, + { + "building": "天虹之家", + "address": "九龍黃大仙區飛鳳街45號天虹之家" + }, + { + "building": "利誠大廈", + "address": "九龍黃大仙區飛鳳街48-52號利誠大廈" + }, + { + "building": "飛鳳樓", + "address": "九龍黃大仙區飛鳳街54號飛鳳樓" + }, + { + "building": "德寶大廈", + "address": "九龍黃大仙區飛鳳街64號德寶大廈" + }, + { + "building": "龍暉閣", + "address": "九龍黃大仙區飛鳳街66-68號龍暉閣" + }, + { + "building": "新安樓", + "address": "九龍黃大仙區崇華街12號新安樓" + }, + { + "building": "新昌樓", + "address": "九龍黃大仙區崇華街20號新昌樓" + }, + { + "building": "新華樓", + "address": "九龍黃大仙區崇華街28號新華樓" + }, + { + "building": "新輝樓", + "address": "九龍黃大仙區崇華街42號新輝樓" + }, + { + "building": "新寧樓", + "address": "九龍黃大仙區崇華街4號新寧樓" + }, + { + "building": "威信樓", + "address": "九龍黃大仙區崇齡街1-3號威信樓" + }, + { + "building": "新蒲崗廣場", + "address": "九龍黃大仙區崇齡街33號新蒲崗廣場" + }, + { + "building": "如意樓", + "address": "九龍黃大仙區崇齡街80-94A號如意樓" + }, + { + "building": "安福大樓", + "address": "九龍黃大仙區崇齡街95-97號安福大樓" + }, + { + "building": "康強洋樓", + "address": "九龍黃大仙區康強街" + }, + { + "building": "康強大樓", + "address": "九龍黃大仙區康強街27-33號康強大樓" + }, + { + "building": "康景商場", + "address": "九龍黃大仙區康強街28號康景商場" + }, + { + "building": "信安大樓", + "address": "九龍黃大仙區康強街35-49號信安大樓" + }, + { + "building": "安強大樓", + "address": "九龍黃大仙區康強街51-65A號安強大樓" + }, + { + "building": "新蒲崗大廈", + "address": "九龍黃大仙區彩虹道" + }, + { + "building": "啟德花園", + "address": "九龍黃大仙區彩虹道121號啟德花園" + }, + { + "building": "盛景工業大廈", + "address": "九龍黃大仙區彩虹道206-208號盛景工業大廈" + }, + { + "building": "嘉榮工廠大廈", + "address": "九龍黃大仙區彩虹道214-216號嘉榮工廠大廈" + }, + { + "building": "緯綸工業大廈", + "address": "九龍黃大仙區彩虹道218-220號緯綸工業大廈" + }, + { + "building": "采頤花園", + "address": "九龍黃大仙區彩虹道242號采頤花園" + }, + { + "building": "麗景樓", + "address": "九龍黃大仙區彩虹道48-56號麗景樓" + }, + { + "building": "衍慶大廈", + "address": "九龍黃大仙區彩虹道58-82號衍慶大廈" + }, + { + "building": "彩峰苑", + "address": "九龍黃大仙區彩鳳徑23號彩峰苑" + }, + { + "building": "興業大廈", + "address": "九龍黃大仙區清水灣道19號興業大廈" + }, + { + "building": "嘉強苑", + "address": "九龍黃大仙區富美街3號" + }, + { + "building": "富強苑", + "address": "九龍黃大仙區富美街8號" + }, + { + "building": "德強苑", + "address": "九龍黃大仙區富強街9號德強苑" + }, + { + "building": "安發大廈 A & C", + "address": "九龍黃大仙區富源街15號安發大廈 A & C" + }, + { + "building": "富崇樓", + "address": "九龍黃大仙區富源街21-27號富崇樓" + }, + { + "building": "啟新大廈", + "address": "九龍黃大仙區富源街2號啟新大廈" + }, + { + "building": "泰景工業大樓", + "address": "九龍黃大仙區景福街100-102號泰景工業大樓" + }, + { + "building": "新時代工貿商業中心", + "address": "九龍黃大仙區景福街104號新時代工貿商業中心" + }, + { + "building": "景泰苑", + "address": "九龍黃大仙區景福街118號景泰苑" + }, + { + "building": "昌泰大廈", + "address": "九龍黃大仙區景福街83-97號昌泰大廈" + }, + { + "building": "慈愛苑", + "address": "九龍黃大仙區雲華街2號" + }, + { + "building": "錦發樓", + "address": "九龍黃大仙區慈華里11號錦發樓" + }, + { + "building": "永利樓", + "address": "九龍黃大仙區慈華里1-3號永利樓" + }, + { + "building": "德慈樓", + "address": "九龍黃大仙區慈華里4-14號德慈樓" + }, + { + "building": "慈愛苑", + "address": "九龍黃大仙區慈雲山道120號慈愛苑" + }, + { + "building": "華基大樓", + "address": "九龍黃大仙區毓華里1-23號華基大樓" + }, + { + "building": "嘉喜大廈", + "address": "九龍黃大仙區毓華里20-22號嘉喜大廈" + }, + { + "building": "嘉茜大廈", + "address": "九龍黃大仙區毓華里24號嘉茜大廈" + }, + { + "building": "雲華樓", + "address": "九龍黃大仙區毓華里26號雲華樓" + }, + { + "building": "萬寶大廈", + "address": "九龍黃大仙區毓華里28號萬寶大廈" + }, + { + "building": "祖強樓", + "address": "九龍黃大仙區毓華里45-47A號祖強樓" + }, + { + "building": "萬年戲院大廈", + "address": "九龍黃大仙區毓華里51-59號萬年戲院大廈" + }, + { + "building": "永發大廈", + "address": "九龍黃大仙區毓華里6-10號永發大廈" + }, + { + "building": "錦安樓", + "address": "九龍黃大仙區毓華街40-44號錦安樓" + }, + { + "building": "廣發大廈", + "address": "九龍黃大仙區毓華街60-64號廣發大廈" + }, + { + "building": "嘉華大廈", + "address": "九龍黃大仙區毓華街74-80A號嘉華大廈" + }, + { + "building": "現崇山", + "address": "九龍黃大仙區睦鄰街8號" + }, + { + "building": "越秀廣場", + "address": "九龍黃大仙區寧遠街9號" + }, + { + "building": "鵬程苑", + "address": "九龍黃大仙區翠竹街6號" + }, + { + "building": "翠竹花園", + "address": "九龍黃大仙區翠竹街8號翠竹花園" + }, + { + "building": "翠鳳樓", + "address": "九龍黃大仙區翠鳳街19-33號翠鳳樓" + }, + { + "building": "翡翠樓", + "address": "九龍黃大仙區翠鳳街2-4號翡翠樓" + }, + { + "building": "月明樓", + "address": "九龍黃大仙區翠鳳街46-48號月明樓" + }, + { + "building": "德文樓", + "address": "九龍黃大仙區翠鳳街47-49號德文樓" + }, + { + "building": "慈樂大廈", + "address": "九龍黃大仙區蒲田里1-7號慈樂大廈" + }, + { + "building": "慈祥大廈", + "address": "九龍黃大仙區蒲田里2號慈祥大廈" + }, + { + "building": "蒲芳樓", + "address": "九龍黃大仙區蒲芳里3-7號蒲芳樓" + }, + { + "building": "華麗樓", + "address": "九龍黃大仙區蒲英里1-9號華麗樓" + }, + { + "building": "慈華大廈", + "address": "九龍黃大仙區蒲英里2-8號慈華大廈" + }, + { + "building": "寶明樓", + "address": "九龍黃大仙區蒲崗村道117-119號寶明樓" + }, + { + "building": "發強樓", + "address": "九龍黃大仙區蒲崗村道121-125號發強樓" + }, + { + "building": "立基樓", + "address": "九龍黃大仙區蒲崗村道127-129號立基樓" + }, + { + "building": "高美樓", + "address": "九龍黃大仙區蒲崗村道163號高美樓" + }, + { + "building": "民豐樓", + "address": "九龍黃大仙區蒲崗村道165號民豐樓" + }, + { + "building": "百利軒", + "address": "九龍黃大仙區蒲崗村道33號百利軒" + }, + { + "building": "好景樓", + "address": "九龍黃大仙區蒲崗村道35號好景樓" + }, + { + "building": "長樂樓", + "address": "九龍黃大仙區蒲崗村道39-41號長樂樓" + }, + { + "building": "恆安大廈", + "address": "九龍黃大仙區蒲崗村道43-59號恆安大廈" + }, + { + "building": "富祐大廈", + "address": "九龍黃大仙區蒲崗村道61號富祐大廈" + }, + { + "building": "鳳鑽苑", + "address": "九龍黃大仙區蒲崗村道80號鳳鑽苑" + }, + { + "building": "秀芳花園", + "address": "九龍黃大仙區蒲崗村道95號秀芳花園" + }, + { + "building": "匯豪山", + "address": "九龍黃大仙區蒲崗村道99號匯豪山" + }, + { + "building": "蒲崗樓", + "address": "九龍黃大仙區蒲崗里" + }, + { + "building": "獅子樓", + "address": "九龍黃大仙區蒲崗里40號獅子樓" + }, + { + "building": "彩雲樓", + "address": "九龍黃大仙區蒲崗里42號彩雲樓" + }, + { + "building": "翠明樓", + "address": "九龍黃大仙區蒲崗里44號翠明樓" + }, + { + "building": "漢成樓", + "address": "九龍黃大仙區蒲景里8號漢成樓" + }, + { + "building": "建煌樓", + "address": "九龍黃大仙區銀鳳街10-12A號建煌樓" + }, + { + "building": "銀鳳樓", + "address": "九龍黃大仙區銀鳳街16-18號銀鳳樓" + }, + { + "building": "安達大廈", + "address": "九龍黃大仙區銀鳳街17-27號安達大廈" + }, + { + "building": "安康樓", + "address": "九龍黃大仙區銀鳳街20號安康樓" + }, + { + "building": "華芝樓", + "address": "九龍黃大仙區銀鳳街24-28號華芝樓" + }, + { + "building": "健康樓", + "address": "九龍黃大仙區銀鳳街2-4號健康樓" + }, + { + "building": "安發樓", + "address": "九龍黃大仙區銀鳳街32號安發樓" + }, + { + "building": "鳳儀樓", + "address": "九龍黃大仙區銀鳳街34-42號鳳儀樓" + }, + { + "building": "祐興樓", + "address": "九龍黃大仙區銀鳳街35號祐興樓" + }, + { + "building": "百達樓", + "address": "九龍黃大仙區銀鳳街37號百達樓" + }, + { + "building": "鳳芳樓", + "address": "九龍黃大仙區銀鳳街39號鳳芳樓" + }, + { + "building": "永華樓", + "address": "九龍黃大仙區銀鳳街44-46號永華樓" + }, + { + "building": "懷安樓", + "address": "九龍黃大仙區銀鳳街45號懷安樓" + }, + { + "building": "緯寶樓", + "address": "九龍黃大仙區銀鳳街47號緯寶樓" + }, + { + "building": "萬寶樓", + "address": "九龍黃大仙區銀鳳街48號萬寶樓" + }, + { + "building": "發達樓", + "address": "九龍黃大仙區銀鳳街49-51號發達樓" + }, + { + "building": "興福樓", + "address": "九龍黃大仙區銀鳳街52-56號興福樓" + }, + { + "building": "恒利樓", + "address": "九龍黃大仙區銀鳳街53號恒利樓" + }, + { + "building": "福來樓", + "address": "九龍黃大仙區銀鳳街55號福來樓" + }, + { + "building": "文顯樓", + "address": "九龍黃大仙區銀鳳街57-59號文顯樓" + }, + { + "building": "鳳寧樓", + "address": "九龍黃大仙區鳳德道13-21號鳳寧樓" + }, + { + "building": "安樂樓", + "address": "九龍黃大仙區鳳德道23-29號安樂樓" + }, + { + "building": "濟廬", + "address": "九龍黃大仙區鳳德道31-33號濟廬" + }, + { + "building": "英祥樓", + "address": "九龍黃大仙區鳳德道37-39號英祥樓" + }, + { + "building": "錦發樓", + "address": "九龍黃大仙區鳳德道5-11號錦發樓" + }, + { + "building": "美德樓", + "address": "九龍黃大仙區鳳德道71-73號美德樓" + }, + { + "building": "合歡樓", + "address": "九龍黃大仙區鳳德道81號合歡樓" + }, + { + "building": "永基樓", + "address": "九龍黃大仙區鳳德道83-89號永基樓" + }, + { + "building": "鳳禮苑鳳禧閣", + "address": "九龍黃大仙區鳳禮道8號鳳禮苑鳳禧閣" + }, + { + "building": "鳳凰大樓", + "address": "九龍黃大仙區鳴鳳街2-16號鳳凰大樓" + }, + { + "building": "乾豐大廈", + "address": "九龍黃大仙區鳴鳳街26-32A號乾豐大廈" + }, + { + "building": "嗚鳳閣", + "address": "九龍黃大仙區鳴鳳街39號嗚鳳閣" + }, + { + "building": "永華樓", + "address": "九龍黃大仙區鳴鳳街43-53號永華樓" + }, + { + "building": "伯德大樓", + "address": "九龍黃大仙區鳴鳳街55-57號伯德大樓" + }, + { + "building": "盈福苑A座", + "address": "九龍黃大仙區穎竹街17號盈福苑A座" + }, + { + "building": "竹園北?", + "address": "九龍黃大仙區穎竹街8號竹園北?" + }, + { + "building": "萬義大廈", + "address": "九龍黃大仙區錦榮街26號萬義大廈" + }, + { + "building": "金橋大廈", + "address": "九龍黃大仙區錦榮街6-24A號金橋大廈" + }, + { + "building": "彩虹花園", + "address": "九龍黃大仙區龍池徑60號彩虹花園" + }, + { + "building": "豪苑", + "address": "九龍黃大仙區龍翔道110號豪苑" + }, + { + "building": "新光中心", + "address": "九龍黃大仙區龍翔道120號新光中心" + }, + { + "building": "悅庭軒", + "address": "九龍黃大仙區龍蟠街1-3號悅庭軒" + }, + { + "building": "星河明居", + "address": "九龍黃大仙區龍蟠街3號星河明居" + }, + { + "building": "龍蟠苑", + "address": "九龍黃大仙區龍蟠街8號龍蟠苑" + }, + { + "building": "龍蟠苑商場", + "address": "九龍黃大仙區龍蟠街8號龍蟠苑商場" + }, + { + "building": "裕富大廈", + "address": "九龍黃大仙區爵祿街116-118號裕富大廈" + }, + { + "building": "永樂唐樓", + "address": "九龍黃大仙區爵祿街18-30A號永樂唐樓" + }, + { + "building": "Port 33", + "address": "九龍黃大仙區爵祿街33號Port 33" + }, + { + "building": "啟德工廠大廈第二期", + "address": "九龍黃大仙區爵祿街39-41號啟德工廠大廈第二期" + }, + { + "building": "東安大廈", + "address": "九龍黃大仙區爵祿街60-70號東安大廈" + }, + { + "building": "東星大廈", + "address": "九龍黃大仙區爵祿街72-82號東星大廈" + }, + { + "building": "康景樓", + "address": "九龍黃大仙區爵祿街86號康景樓" + }, + { + "building": "爵祿居", + "address": "九龍黃大仙區爵祿街98號爵祿居" + }, + { + "building": "安康大廈", + "address": "九龍黃大仙區環鳳街35號安康大廈" + }, + { + "building": "鳳錦樓", + "address": "九龍黃大仙區環鳳街37-43A號鳳錦樓" + }, + { + "building": "金城大廈", + "address": "九龍黃大仙區環鳳街4-6號金城大廈" + }, + { + "building": "富德樓", + "address": "九龍黃大仙區環鳳街50-52號富德樓" + }, + { + "building": "鳳祥樓", + "address": "九龍黃大仙區環鳳街5-33號鳳祥樓" + }, + { + "building": "寶發大廈", + "address": "九龍黃大仙區環鳳街54-66號寶發大廈" + }, + { + "building": "永安樓", + "address": "九龍黃大仙區環鳳街57-65號永安樓" + }, + { + "building": "鑽嶺", + "address": "九龍黃大仙區環鳳街68號鑽嶺" + }, + { + "building": "華頌樓", + "address": "九龍黃大仙區環鳳街8-14號華頌樓" + }, + { + "building": "鳳寶大廈", + "address": "九龍黃大仙區環鳳街90-100號鳳寶大廈" + }, + { + "building": "聯合大樓", + "address": "九龍黃大仙區聯合道174-180號聯合大樓" + }, + { + "building": "金國大廈", + "address": "九龍黃大仙區聯合道182-188號金國大廈" + }, + { + "building": "瓊山苑瓊?閣", + "address": "九龍黃大仙區豐盛街" + }, + { + "building": "海港花園", + "address": "九龍黃大仙區豐盛街33號海港花園" + }, + { + "building": "瓊麗苑瓊昌閣", + "address": "九龍黃大仙區豐盛街36-38號瓊麗苑瓊昌閣" + }, + { + "building": "瓊麗苑瓊泰閣", + "address": "九龍黃大仙區豐盛街36-38號瓊麗苑瓊泰閣" + }, + { + "building": "峻弦", + "address": "九龍黃大仙區豐盛街51號" + }, + { + "building": "曉暉花園", + "address": "九龍黃大仙區豐盛街63號曉暉花園" + }, + { + "building": "富德工業大廈", + "address": "九龍黃大仙區雙喜街17號富德工業大廈" + }, + { + "building": "雙喜工業大廈", + "address": "九龍黃大仙區雙喜街19號雙喜工業大廈" + }, + { + "building": "同德工業大廈", + "address": "九龍黃大仙區雙喜街2-4號同德工業大廈" + }, + { + "building": "福和工業大廈", + "address": "九龍黃大仙區雙喜街5號福和工業大廈" + }, + { + "building": "業豐工業大廈", + "address": "九龍黃大仙區雙喜街7號業豐工業大廈" + }, + { + "building": "成功樓", + "address": "九龍黃大仙區雙鳳街" + }, + { + "building": "華鳳樓", + "address": "九龍黃大仙區雙鳳街12-14號華鳳樓" + }, + { + "building": "觀鳳樓", + "address": "九龍黃大仙區雙鳳街26-28號觀鳳樓" + }, + { + "building": "華慶樓", + "address": "九龍黃大仙區雙鳳街32-34A號華慶樓" + }, + { + "building": "瓊軒苑瓊軒苑", + "address": "九龍黃大仙區瓊東街1號瓊軒苑瓊軒苑" + }, + { + "building": "嘉峰臺", + "address": "九龍黃大仙區瓊東街8號嘉峰臺" + }, + { + "building": "創紀之城", + "address": "九龍觀塘區" + }, + { + "building": "鴻懋工業大廈", + "address": "九龍觀塘區KTIL151鴻圖道62號鴻懋工業大廈" + }, + { + "building": "東瀛遊廣場", + "address": "九龍觀塘區KTIL234鴻圖道83號東瀛遊廣場" + }, + { + "building": "天星中心", + "address": "九龍觀塘區KTIL238天星中心" + }, + { + "building": "百本中心", + "address": "九龍觀塘區KTIL286鴻圖道52號百本中心" + }, + { + "building": "新城工商中心", + "address": "九龍觀塘區KTIL330鯉魚門道2號新城工商中心" + }, + { + "building": "日昇亞太中心", + "address": "九龍觀塘區KTIL361駿業街41號日昇亞太中心" + }, + { + "building": "寶業大廈", + "address": "九龍觀塘區KTIL49興業街23號寶業大廈" + }, + { + "building": "海洋工業大廈", + "address": "九龍觀塘區KTIL554大業街29號海洋工業大廈" + }, + { + "building": "鴻盛工業大廈", + "address": "九龍觀塘區KTIL555大業街27號鴻盛工業大廈" + }, + { + "building": "禧年大廈", + "address": "九龍觀塘區KTIL567大業街1號禧年大廈" + }, + { + "building": "敬運工業大廈", + "address": "九龍觀塘區KTIL66敬業街65-67號敬運工業大廈" + }, + { + "building": "鱷魚恤中心", + "address": "九龍觀塘區KTIL692鱷魚恤中心" + }, + { + "building": "敬業工廠大廈", + "address": "九龍觀塘區KTIL70敬業街59號敬業工廠大廈" + }, + { + "building": "聯卓中心", + "address": "九龍觀塘區KTIL739大業街2號聯卓中心" + }, + { + "building": "宏利金融中心A座", + "address": "九龍觀塘區KTIL744偉業街223號宏利金融中心A座" + }, + { + "building": "俊匯中心", + "address": "九龍觀塘區KTIL753鴻圖道22號俊匯中心" + }, + { + "building": "寧晉中心", + "address": "九龍觀塘區KTIL89寧晉中心" + }, + { + "building": "成運工業大廈", + "address": "九龍觀塘區KTIL91成業街15-17號成運工業大廈" + }, + { + "building": "成業工業大廈", + "address": "九龍觀塘區KTIL92成業街19-21號成業工業大廈" + }, + { + "building": "宏力工業大廈", + "address": "九龍觀塘區NKIL5872常怡道33號宏力工業大廈" + }, + { + "building": "九龍灣國際展貿中心", + "address": "九龍觀塘區NKIL6032展貿徑1號九龍灣國際展貿中心" + }, + { + "building": "傲騰廣場", + "address": "九龍觀塘區NKIL6215傲騰廣場" + }, + { + "building": "國際交易中心", + "address": "九龍觀塘區NKIL6310宏照道33號國際交易中心" + }, + { + "building": "鯉灣天下", + "address": "九龍觀塘區YTIL21崇信街8號鯉灣天下" + }, + { + "building": "生利工業中心", + "address": "九龍觀塘區YTIL32茶果嶺道610號生利工業中心" + }, + { + "building": "嘉賢居", + "address": "九龍觀塘區YTIL38草園街8號嘉賢居" + }, + { + "building": "華凱發展大廈", + "address": "九龍觀塘區大業街11號華凱發展大廈" + }, + { + "building": "安昌工廠大廈", + "address": "九龍觀塘區大業街19號安昌工廠大廈" + }, + { + "building": "長慶工業大廈", + "address": "九龍觀塘區大業街23號長慶工業大廈" + }, + { + "building": "協發工商大廈", + "address": "九龍觀塘區大業街31號協發工商大廈" + }, + { + "building": "楊耀松第五工業大廈", + "address": "九龍觀塘區大業街34號楊耀松第五工業大廈" + }, + { + "building": "福和工業大廈", + "address": "九龍觀塘區大業街35號福和工業大廈" + }, + { + "building": "榮泰工業大廈", + "address": "九龍觀塘區大業街3號榮泰工業大廈" + }, + { + "building": "達通大?", + "address": "九龍觀塘區大業街4號達通大?" + }, + { + "building": "三湘九龍灣貨運中心", + "address": "九龍觀塘區大業街59號三湘九龍灣貨運中心" + }, + { + "building": "好景工業大廈", + "address": "九龍觀塘區大業街9號好景工業大廈" + }, + { + "building": "仁苑大廈", + "address": "九龍觀塘區天香街2號仁苑大廈" + }, + { + "building": "華豐大廈", + "address": "九龍觀塘區天香街7-9A號華豐大廈" + }, + { + "building": "多喜大廈I", + "address": "九龍觀塘區月華街" + }, + { + "building": "遠景大廈", + "address": "九龍觀塘區月華街16號遠景大廈" + }, + { + "building": "僑業大廈", + "address": "九龍觀塘區月華街18號僑業大廈" + }, + { + "building": "觀景閣", + "address": "九龍觀塘區月華街20號觀景閣" + }, + { + "building": "華麗樓", + "address": "九龍觀塘區月華街24號華麗樓" + }, + { + "building": "月華大廈", + "address": "九龍觀塘區月華街25-39號月華大廈" + }, + { + "building": "月華大廈第二座", + "address": "九龍觀塘區月華街25-39號月華大廈" + }, + { + "building": "海景大廈後座", + "address": "九龍觀塘區月華街26號海景大廈後座" + }, + { + "building": "泰康樓", + "address": "九龍觀塘區月華街30號泰康樓" + }, + { + "building": "天星樓", + "address": "九龍觀塘區月華街32號天星樓" + }, + { + "building": "天星樓C座", + "address": "九龍觀塘區月華街32號天星樓C座" + }, + { + "building": "萬和花園大廈", + "address": "九龍觀塘區月華街38號萬和花園大廈" + }, + { + "building": "萬福大廈", + "address": "九龍觀塘區月華街40號萬福大廈" + }, + { + "building": "華苑大廈", + "address": "九龍觀塘區月華街42號華苑大廈" + }, + { + "building": "永寧樓", + "address": "九龍觀塘區月華街43號永寧樓" + }, + { + "building": "安樂花園大廈", + "address": "九龍觀塘區月華街47號安樂花園大廈" + }, + { + "building": "月威大廈", + "address": "九龍觀塘區月華街48號月威大廈" + }, + { + "building": "豐景樓", + "address": "九龍觀塘區月華街49號豐景樓" + }, + { + "building": "集景樓", + "address": "九龍觀塘區月華街50號" + }, + { + "building": "月明樓", + "address": "九龍觀塘區月華街52號月明樓" + }, + { + "building": "好景樓", + "address": "九龍觀塘區月華街71號好景樓" + }, + { + "building": "觀月‧樺?", + "address": "九龍觀塘區月華街8號觀月‧樺?" + }, + { + "building": "瑞其樓", + "address": "九龍觀塘區牛頭角道160號瑞其樓" + }, + { + "building": "金和樓", + "address": "九龍觀塘區牛頭角道162-172號金和樓" + }, + { + "building": "德昌樓", + "address": "九龍觀塘區牛頭角道174-176號德昌樓" + }, + { + "building": "嘉和園", + "address": "九龍觀塘區牛頭角道17號" + }, + { + "building": "裕民中心", + "address": "九龍觀塘區牛頭角道300-302號裕民中心" + }, + { + "building": "官塘立成大廈", + "address": "九龍觀塘區牛頭角道305-325A號官塘立成大廈" + }, + { + "building": "?林大廈", + "address": "九龍觀塘區牛頭角道327-333號?林大廈" + }, + { + "building": "興達大廈", + "address": "九龍觀塘區牛頭角道335-351號興達大廈" + }, + { + "building": "宏光樓", + "address": "九龍觀塘區牛頭角道33號宏光樓" + }, + { + "building": "得寶花園H座", + "address": "九龍觀塘區牛頭角道3號得寶花園H座" + }, + { + "building": "利基大廈", + "address": "九龍觀塘區牛頭角道55號利基大廈" + }, + { + "building": "淘大花園", + "address": "九龍觀塘區牛頭角道77號淘大花園" + }, + { + "building": "淘大工業村第一座淘大工業村", + "address": "九龍觀塘區牛頭角道7號第一座淘大工業村" + }, + { + "building": "凱德大廈", + "address": "九龍觀塘區功樂道21號凱德大廈" + }, + { + "building": "海天園", + "address": "九龍觀塘區功樂道40-42號海天園" + }, + { + "building": "功樂大廈A座", + "address": "九龍觀塘區功樂道44號功樂大廈A座" + }, + { + "building": "碧麗苑", + "address": "九龍觀塘區功樂道53號碧麗苑" + }, + { + "building": "林景閣", + "address": "九龍觀塘區功樂道75號林景閣" + }, + { + "building": "金龍園", + "address": "九龍觀塘區功樂道77號金龍園" + }, + { + "building": "金麗閣", + "address": "九龍觀塘區功樂道81號金麗閣" + }, + { + "building": "富麗花園紫荊閣", + "address": "九龍觀塘區功樂道9號富麗花園紫荊閣" + }, + { + "building": "華利工業大廈", + "address": "九龍觀塘區四山街11號華利工業大廈" + }, + { + "building": "大益貨倉工業大廈", + "address": "九龍觀塘區四山街14號大益貨倉工業大廈" + }, + { + "building": "美塘工業大廈", + "address": "九龍觀塘區四山街22號美塘工業大廈" + }, + { + "building": "味千集團大廈", + "address": "九龍觀塘區四山街24-26號味千集團大廈" + }, + { + "building": "海迪工業大廈", + "address": "九龍觀塘區四山街28號海迪工業大廈" + }, + { + "building": "華輝工業大廈", + "address": "九龍觀塘區四山街4號華輝工業大廈" + }, + { + "building": "世運貨倉", + "address": "九龍觀塘區四山街8號世運貨倉" + }, + { + "building": "LANDMARK EAST友邦九龍大樓", + "address": "九龍觀塘區巧明街100號LANDMARK EAST友邦九龍大樓" + }, + { + "building": "LANDMARK EAST安盛金融大樓", + "address": "九龍觀塘區巧明街100號LANDMARK EAST安盛金融大樓" + }, + { + "building": "南益集團大廈", + "address": "九龍觀塘區巧明街108號南益集團大廈" + }, + { + "building": "迅達工業大廈", + "address": "九龍觀塘區巧明街114號迅達工業大廈" + }, + { + "building": "柏秀中心", + "address": "九龍觀塘區巧明街115號柏秀中心" + }, + { + "building": "萬年工業大廈", + "address": "九龍觀塘區巧明街116-118號萬年工業大廈" + }, + { + "building": "港貿中心", + "address": "九龍觀塘區巧明街117號港貿中心" + }, + { + "building": "年運工業大廈", + "address": "九龍觀塘區巧明街119-121號年運工業大廈" + }, + { + "building": "德士活工業中心", + "address": "九龍觀塘區巧明街4-6號德士活工業中心" + }, + { + "building": "兆璣行", + "address": "九龍觀塘區巧明街68號兆璣行" + }, + { + "building": "晶苑工業大廈", + "address": "九龍觀塘區巧明街71號晶苑工業大廈" + }, + { + "building": "鴻圖中心", + "address": "九龍觀塘區巧明街94-96號鴻圖中心" + }, + { + "building": "巧明工廠大廈", + "address": "九龍觀塘區巧明街99號巧明工廠大廈" + }, + { + "building": "運通樓", + "address": "九龍觀塘區平成里6號運通樓" + }, + { + "building": "電訊一代廣場", + "address": "九龍觀塘區成業街10號電訊一代廣場" + }, + { + "building": "華成工商中心", + "address": "九龍觀塘區成業街11-13號華成工商中心" + }, + { + "building": "新怡生工業大廈", + "address": "九龍觀塘區成業街18-20號新怡生工業大廈" + }, + { + "building": "怡生工業大廈", + "address": "九龍觀塘區成業街20號怡生工業大廈" + }, + { + "building": "日昇中心", + "address": "九龍觀塘區成業街27號日昇中心" + }, + { + "building": "華富工貿中心", + "address": "九龍觀塘區成業街30號華富工貿中心" + }, + { + "building": "泓富廣場", + "address": "九龍觀塘區成業街6號泓富廣場" + }, + { + "building": "偉景樓", + "address": "九龍觀塘區佐頓谷道北1-9號偉景樓" + }, + { + "building": "億京中心", + "address": "九龍觀塘區宏光道1號億京中心" + }, + { + "building": "豐隆工業中心", + "address": "九龍觀塘區宏光道4號豐隆工業中心" + }, + { + "building": "興力工業中心", + "address": "九龍觀塘區宏光道7號興力工業中心" + }, + { + "building": "巨昇中心", + "address": "九龍觀塘區宏光道8號巨昇中心" + }, + { + "building": "鴻力工業中心A座", + "address": "九龍觀塘區宏冠道6號鴻力工業中心A座" + }, + { + "building": "榮發工業大廈", + "address": "九龍觀塘區宏泰道12號榮發工業大廈" + }, + { + "building": "第一集團中心", + "address": "九龍觀塘區宏泰道14號第一集團中心" + }, + { + "building": "合力工業中心", + "address": "九龍觀塘區宏泰道3-5號合力工業中心" + }, + { + "building": "永安貨倉大廈", + "address": "九龍觀塘區宏基街1號永安貨倉大廈" + }, + { + "building": "新駱駝大廈", + "address": "九龍觀塘區宏基街3號新駱駝大廈" + }, + { + "building": "正興工業大廈", + "address": "九龍觀塘區宏基街5號正興工業大廈" + }, + { + "building": "景發工業中心", + "address": "九龍觀塘區宏開道13號景發工業中心" + }, + { + "building": "九龍灣工業中心", + "address": "九龍觀塘區宏開道15號九龍灣工業中心" + }, + { + "building": "德福大廈", + "address": "九龍觀塘區宏開道16號德福大廈" + }, + { + "building": "順發工業大廈", + "address": "九龍觀塘區宏開道17號順發工業大廈" + }, + { + "building": "健力工業大廈", + "address": "九龍觀塘區宏開道19號健力工業大廈" + }, + { + "building": "其士商業中心", + "address": "九龍觀塘區宏開道8號其士商業中心" + }, + { + "building": "寶隆中心", + "address": "九龍觀塘區宏照道11號寶隆中心" + }, + { + "building": "金聯大廈", + "address": "九龍觀塘區宏照道15號金聯大廈" + }, + { + "building": "康大電業大廈", + "address": "九龍觀塘區宏照道17號康大電業大廈" + }, + { + "building": "中國建設銀行中心", + "address": "九龍觀塘區宏照道18號中國建設銀行中心" + }, + { + "building": "源發工業大廈", + "address": "九龍觀塘區宏照道25號源發工業大廈" + }, + { + "building": "一號九龍", + "address": "九龍觀塘區宏遠街1號一號九龍" + }, + { + "building": "曉麗苑", + "address": "九龍觀塘區秀茂坪曉光街21號曉麗苑" + }, + { + "building": "仁富大樓後座", + "address": "九龍觀塘區協和街121-141號仁富大樓後座" + }, + { + "building": "仁富大樓前座", + "address": "九龍觀塘區協和街127號仁富大樓前座" + }, + { + "building": "協和大廈", + "address": "九龍觀塘區協和街143-167號協和大廈" + }, + { + "building": "華峰園", + "address": "九龍觀塘區協和街301號華峰園" + }, + { + "building": "志恒大廈", + "address": "九龍觀塘區協和街70-76號志恒大廈" + }, + { + "building": "建德大樓", + "address": "九龍觀塘區協和街93-115號建德大樓" + }, + { + "building": "仁寧大廈", + "address": "九龍觀塘區定安街100-102號仁寧大廈" + }, + { + "building": "永明樓", + "address": "九龍觀塘區定安街114號永明樓" + }, + { + "building": "富安大廈", + "address": "九龍觀塘區定安街3-19號富安大廈" + }, + { + "building": "立興大樓", + "address": "九龍觀塘區定安街37-39號立興大樓" + }, + { + "building": "立興大樓", + "address": "九龍觀塘區定安街41-43號立興大樓" + }, + { + "building": "安泰大樓", + "address": "九龍觀塘區定安街45-51號安泰大樓" + }, + { + "building": "定安樓", + "address": "九龍觀塘區定安街53-61號定安樓" + }, + { + "building": "定興大廈", + "address": "九龍觀塘區定安街69-73號定興大廈" + }, + { + "building": "富安樓", + "address": "九龍觀塘區定安街91-93號富安樓" + }, + { + "building": "雙喜大樓", + "address": "九龍觀塘區定安街94-98號雙喜大樓" + }, + { + "building": "三喜大廈", + "address": "九龍觀塘區定安街95-103號三喜大廈" + }, + { + "building": "定富樓", + "address": "九龍觀塘區定富街105-119號定富樓" + }, + { + "building": "樂善大廈", + "address": "九龍觀塘區定富街123號樂善大廈" + }, + { + "building": "家利閣", + "address": "九龍觀塘區定富街26-30號家利閣" + }, + { + "building": "七喜大廈", + "address": "九龍觀塘區定富街4-24號七喜大廈" + }, + { + "building": "華發樓", + "address": "九龍觀塘區定富街45-47號華發樓" + }, + { + "building": "安賢樓", + "address": "九龍觀塘區定富街49-51號安賢樓" + }, + { + "building": "定勝樓", + "address": "九龍觀塘區定富街53-63號定勝樓" + }, + { + "building": "億富樓", + "address": "九龍觀塘區定富街5-7號億富樓" + }, + { + "building": "一定富大廈", + "address": "九龍觀塘區定富街71-79號一定富大廈" + }, + { + "building": "富裕大廈", + "address": "九龍觀塘區定富街83-103號富裕大廈" + }, + { + "building": "多喜大廈", + "address": "九龍觀塘區定富街9-17號多喜大廈" + }, + { + "building": "仁厚大廈", + "address": "九龍觀塘區定富街94-110號仁厚大廈" + }, + { + "building": "永盛樓", + "address": "九龍觀塘區定業街12-16號永盛樓" + }, + { + "building": "定業大廈", + "address": "九龍觀塘區定業街30-42號定業大廈" + }, + { + "building": "百富閣", + "address": "九龍觀塘區定業街3號百富閣" + }, + { + "building": "定業樓", + "address": "九龍觀塘區定業街4-10號定業樓" + }, + { + "building": "安德大廈", + "address": "九龍觀塘區定業街50號安德大廈" + }, + { + "building": "致昌大廈", + "address": "九龍觀塘區宜安街2-4E號致昌大廈" + }, + { + "building": "聯利大樓", + "address": "九龍觀塘區宜安街6L-6Q號聯利大樓" + }, + { + "building": "有利大廈", + "address": "九龍觀塘區宜安街9-11號有利大廈" + }, + { + "building": "大業織造廠有限公司", + "address": "九龍觀塘區東源街1號大業織造廠有限公司" + }, + { + "building": "Ocean One", + "address": "九龍觀塘區油塘內地段第二十餘段崇信街6號Ocean One" + }, + { + "building": "南洋大樓", + "address": "九龍觀塘區物華街31-41號南洋大樓" + }, + { + "building": "華安大樓", + "address": "九龍觀塘區物華街43-53號華安大樓" + }, + { + "building": "明輝大樓明輝大廈", + "address": "九龍觀塘區恆安街27-37號明輝大樓明輝大廈" + }, + { + "building": "美安樓", + "address": "九龍觀塘區恆安街39-49號美安樓" + }, + { + "building": "觀塘戲院大廈", + "address": "九龍觀塘區恆安街51-59號" + }, + { + "building": "恒安唐樓", + "address": "九龍觀塘區恒安街19-23號恒安唐樓" + }, + { + "building": "兆景樓", + "address": "九龍觀塘區振華道10號兆景樓" + }, + { + "building": "安基苑", + "address": "九龍觀塘區振華道20號" + }, + { + "building": "振華苑", + "address": "九龍觀塘區振華道22號振華苑" + }, + { + "building": "樂雅苑", + "address": "九龍觀塘區振華道50號" + }, + { + "building": "萬兆豐中心", + "address": "九龍觀塘區海濱道133號萬兆豐中心" + }, + { + "building": "宏基資本大廈", + "address": "九龍觀塘區海濱道135-137號宏基資本大廈" + }, + { + "building": "航天科技中心", + "address": "九龍觀塘區海濱道143號航天科技中心" + }, + { + "building": "廣生行中心", + "address": "九龍觀塘區海濱道151-153號廣生行中心" + }, + { + "building": "大強貨倉", + "address": "九龍觀塘區海濱道155號大強貨倉" + }, + { + "building": "九龍麵粉廠企業有限公司", + "address": "九龍觀塘區海濱道161號九龍麵粉廠企業有限公司" + }, + { + "building": "申新證券大廈", + "address": "九龍觀塘區海濱道171號申新證券大廈" + }, + { + "building": "申新大廈", + "address": "九龍觀塘區海濱道173號申新大廈" + }, + { + "building": "國際工業大廈", + "address": "九龍觀塘區海濱道175號國際工業大廈" + }, + { + "building": "海裕工業中心", + "address": "九龍觀塘區海濱道177號海裕工業中心" + }, + { + "building": "One Harbour Square", + "address": "九龍觀塘區海濱道181號One Harbour Square" + }, + { + "building": "One Bay East(東座 Citi Tower)", + "address": "九龍觀塘區海濱道83號One Bay East(東座 Citi Tower)" + }, + { + "building": "宏利大廈", + "address": "九龍觀塘區海濱道83號宏利大廈" + }, + { + "building": "茶果嶺大廈", + "address": "九龍觀塘區茶果嶺道" + }, + { + "building": "維信樓", + "address": "九龍觀塘區茶果嶺道157-159號維信樓" + }, + { + "building": "龍門樓", + "address": "九龍觀塘區茶果嶺道161-163號龍門樓" + }, + { + "building": "金時樓", + "address": "九龍觀塘區茶果嶺道177-179號金時樓" + }, + { + "building": "金時樓", + "address": "九龍觀塘區茶果嶺道181-183號金時樓" + }, + { + "building": "海珠樓", + "address": "九龍觀塘區茶果嶺道189號海珠樓" + }, + { + "building": "榮山工業大廈", + "address": "九龍觀塘區茶果嶺道榮山工業大廈" + }, + { + "building": "松?商業大廈", + "address": "九龍觀塘區草園街2號松?商業大廈" + }, + { + "building": "華順工業大廈", + "address": "九龍觀塘區草園街4號華順工業大廈" + }, + { + "building": "寶恩大廈", + "address": "九龍觀塘區馬蹄徑1號寶恩大廈" + }, + { + "building": "麗裕大廈", + "address": "九龍觀塘區馬蹄徑3號麗裕大廈" + }, + { + "building": "寶?大廈", + "address": "九龍觀塘區馬蹄徑5號寶?大廈" + }, + { + "building": "高俊苑", + "address": "九龍觀塘區高超道23號高俊苑" + }, + { + "building": "寶城工業大廈", + "address": "九龍觀塘區高輝道13-15號寶城工業大廈" + }, + { + "building": "萬年工業大廈", + "address": "九龍觀塘區高輝道15號萬年工業大廈" + }, + { + "building": "油塘工業城", + "address": "九龍觀塘區高輝道17號油塘工業城" + }, + { + "building": "高輝工業大廈", + "address": "九龍觀塘區高輝道7號高輝工業大廈" + }, + { + "building": "振邦工業大廈", + "address": "九龍觀塘區偉業街103號振邦工業大廈" + }, + { + "building": "展豐大廈", + "address": "九龍觀塘區偉業街105號展豐大廈" + }, + { + "building": "新昌中心", + "address": "九龍觀塘區偉業街107-109號新昌中心" + }, + { + "building": "均輝貨運大廈", + "address": "九龍觀塘區偉業街111號均輝貨運大廈" + }, + { + "building": "聯邦工業大廈", + "address": "九龍觀塘區偉業街116號聯邦工業大廈" + }, + { + "building": "星河出版集團大廈", + "address": "九龍觀塘區偉業街118號星河出版集團大廈" + }, + { + "building": "觀奇洋服工業中心", + "address": "九龍觀塘區偉業街120號觀奇洋服工業中心" + }, + { + "building": "華貿中心", + "address": "九龍觀塘區偉業街122-124號華貿中心" + }, + { + "building": "越聯工廠大廈", + "address": "九龍觀塘區偉業街126號越聯工廠大廈" + }, + { + "building": "瑞安工業大廈", + "address": "九龍觀塘區偉業街134號瑞安工業大廈" + }, + { + "building": "特格中心", + "address": "九龍觀塘區偉業街135號特格中心" + }, + { + "building": "永發隆工業大廈", + "address": "九龍觀塘區偉業街136號永發隆工業大廈" + }, + { + "building": "泛亞中心", + "address": "九龍觀塘區偉業街137號泛亞中心" + }, + { + "building": "兆發工業大廈", + "address": "九龍觀塘區偉業街139-141號兆發工業大廈" + }, + { + "building": "依時工業大廈", + "address": "九龍觀塘區偉業街140號依時工業大廈" + }, + { + "building": "越成工廠大廈", + "address": "九龍觀塘區偉業街145號越成工廠大廈" + }, + { + "building": "建生工業大廈", + "address": "九龍觀塘區偉業街147號建生工業大廈" + }, + { + "building": "彩虹工業大廈", + "address": "九龍觀塘區偉業街149號彩虹工業大廈" + }, + { + "building": "天順工業大廈", + "address": "九龍觀塘區偉業街151號天順工業大廈" + }, + { + "building": "偉業中心", + "address": "九龍觀塘區偉業街153號偉業中心" + }, + { + "building": "德信工業大廈", + "address": "九龍觀塘區偉業街154號德信工業大廈" + }, + { + "building": "致全中心", + "address": "九龍觀塘區偉業街156號致全中心" + }, + { + "building": "美康工業大廈", + "address": "九龍觀塘區偉業街160號美康工業大廈" + }, + { + "building": "德勝廣場", + "address": "九龍觀塘區偉業街161號德勝廣場" + }, + { + "building": "華康工業大廈", + "address": "九龍觀塘區偉業街162號華康工業大廈" + }, + { + "building": "時代中心", + "address": "九龍觀塘區偉業街164號時代中心" + }, + { + "building": "宏章工業大廈", + "address": "九龍觀塘區偉業街168號宏章工業大廈" + }, + { + "building": "中懋工業大廈", + "address": "九龍觀塘區偉業街169號中懋工業大廈" + }, + { + "building": "豐業工業大廈", + "address": "九龍觀塘區偉業街170號豐業工業大廈" + }, + { + "building": "偉業工業大廈", + "address": "九龍觀塘區偉業街171號偉業工業大廈" + }, + { + "building": "堅德工業大廈", + "address": "九龍觀塘區偉業街172號堅德工業大廈" + }, + { + "building": "德隆工業大廈", + "address": "九龍觀塘區偉業街179號德隆工業大廈" + }, + { + "building": "盈達商業大廈", + "address": "九龍觀塘區偉業街181號盈達商業大廈" + }, + { + "building": "觀塘碼頭廣場", + "address": "九龍觀塘區偉業街182號觀塘碼頭廣場" + }, + { + "building": "恆生工業大廈", + "address": "九龍觀塘區偉業街185-187號恆生工業大廈" + }, + { + "building": "金寶工業大廈", + "address": "九龍觀塘區偉業街189號金寶工業大廈" + }, + { + "building": "同得仕大廈", + "address": "九龍觀塘區偉業街203號同得仕大廈" + }, + { + "building": "茂興工業大廈", + "address": "九龍觀塘區偉業街205號茂興工業大廈" + }, + { + "building": "富合工廠大廈", + "address": "九龍觀塘區偉業街209-211號富合工廠大廈" + }, + { + "building": "建生大廈", + "address": "九龍觀塘區偉業街213號建生大廈" + }, + { + "building": "宏利金融中心B座", + "address": "九龍觀塘區偉業街223號宏利金融中心B座" + }, + { + "building": "德福花園", + "address": "九龍觀塘區偉業街33號德福花園" + }, + { + "building": "永英工業大廈", + "address": "九龍觀塘區偉業街95號永英工業大廈" + }, + { + "building": "榮韶工業大廈", + "address": "九龍觀塘區偉業街97號榮韶工業大廈" + }, + { + "building": "連順工業大廈", + "address": "九龍觀塘區偉業街99號連順工業大廈" + }, + { + "building": "啟田大廈", + "address": "九龍觀塘區啟田道" + }, + { + "building": "康田苑", + "address": "九龍觀塘區啟田道" + }, + { + "building": "大昌行集團大廈", + "address": "九龍觀塘區啟祥道20號大昌行集團大廈" + }, + { + "building": "開達大廈", + "address": "九龍觀塘區啟祥道22號開達大廈" + }, + { + "building": "信和工商中心", + "address": "九龍觀塘區啟祥道9號信和工商中心" + }, + { + "building": "啟泰苑", + "address": "九龍觀塘區啟業道28號啟泰苑" + }, + { + "building": "九龍貨倉", + "address": "九龍觀塘區啟興道1-3號九龍貨倉" + }, + { + "building": "太平洋貿易中心", + "address": "九龍觀塘區啟興道2號太平洋貿易中心" + }, + { + "building": "安順大廈", + "address": "九龍觀塘區崇仁街15-31號安順大廈" + }, + { + "building": "建豐樓", + "address": "九龍觀塘區崇仁街33-39A號建豐樓" + }, + { + "building": "安興大廈", + "address": "九龍觀塘區崇仁街7-13號安興大廈" + }, + { + "building": "南華大樓", + "address": "九龍觀塘區崇仁街91-95號南華大樓" + }, + { + "building": "油塘工業大廈", + "address": "九龍觀塘區崇信街2號油塘工業大廈" + }, + { + "building": "新明大廈", + "address": "九龍觀塘區常悅道11號新明大廈" + }, + { + "building": "瑞興中心", + "address": "九龍觀塘區常悅道13號瑞興中心" + }, + { + "building": "福康工業大廈", + "address": "九龍觀塘區常悅道19號福康工業大廈" + }, + { + "building": "環球工商大廈", + "address": "九龍觀塘區常悅道20號環球工商大廈" + }, + { + "building": "企業廣場", + "address": "九龍觀塘區常悅道9號企業廣場" + }, + { + "building": "樂意園", + "address": "九龍觀塘區康利道11號樂意園" + }, + { + "building": "南康大廈", + "address": "九龍觀塘區康利道23號南康大廈" + }, + { + "building": "康利苑", + "address": "九龍觀塘區康利道24號康利苑" + }, + { + "building": "金豪閣", + "address": "九龍觀塘區康利道25號金豪閣" + }, + { + "building": "冠天閣", + "address": "九龍觀塘區康寧道11號冠天閣" + }, + { + "building": "康麗園", + "address": "九龍觀塘區康寧道147號康麗園" + }, + { + "building": "康濤閣", + "address": "九龍觀塘區康寧道149-151號康濤閣" + }, + { + "building": "裕民大廈", + "address": "九龍觀塘區康寧道15-17號裕民大廈" + }, + { + "building": "仁安大廈", + "address": "九龍觀塘區康寧道23號仁安大廈" + }, + { + "building": "金僑華廈", + "address": "九龍觀塘區康寧道25-41號金僑華廈" + }, + { + "building": "泰安樓", + "address": "九龍觀塘區康寧道40-44A號泰安樓" + }, + { + "building": "宜安中心", + "address": "九龍觀塘區康寧道45號宜安中心" + }, + { + "building": "康寧唐樓(第二期)", + "address": "九龍觀塘區康寧道46-54號康寧唐樓(第二期)" + }, + { + "building": "康寧閣", + "address": "九龍觀塘區康寧道55號康寧閣" + }, + { + "building": "益利大廈", + "address": "九龍觀塘區康寧道57-69號益利大廈" + }, + { + "building": "富恒樓", + "address": "九龍觀塘區康寧道70號富恒樓" + }, + { + "building": "鴻昌樓", + "address": "九龍觀塘區康寧道71-77號鴻昌樓" + }, + { + "building": "康裕大樓", + "address": "九龍觀塘區康寧道74-76號康裕大樓" + }, + { + "building": "晨光大廈", + "address": "九龍觀塘區康寧道7-9號晨光大廈" + }, + { + "building": "華發大樓", + "address": "九龍觀塘區康寧道91-103號華發大樓" + }, + { + "building": "鴻發大樓", + "address": "九龍觀塘區通明街21-33號鴻發大樓" + }, + { + "building": "樂明樓", + "address": "九龍觀塘區通明街35-39號樂明樓" + }, + { + "building": "鴻昌樓", + "address": "九龍觀塘區通明街40-46號鴻昌樓" + }, + { + "building": "明泰大廈", + "address": "九龍觀塘區通明街41-43號明泰大廈" + }, + { + "building": "康寧大廈前座", + "address": "九龍觀塘區通明街48-52號康寧大廈前座" + }, + { + "building": "通明大樓", + "address": "九龍觀塘區通明街74-88號通明大樓" + }, + { + "building": "光明大樓", + "address": "九龍觀塘區通明街7號光明大樓" + }, + { + "building": "康華苑", + "address": "九龍觀塘區連德道2號康華苑" + }, + { + "building": "萬泰利廣場", + "address": "九龍觀塘區創業街15號萬泰利廣場" + }, + { + "building": "創富中心", + "address": "九龍觀塘區創業街25號創富中心" + }, + { + "building": "美亞工業大廈", + "address": "九龍觀塘區創業街2號美亞工業大廈" + }, + { + "building": "英亞工廠大廈", + "address": "九龍觀塘區創業街34號英亞工廠大廈" + }, + { + "building": "華基中心", + "address": "九龍觀塘區創業街36號華基中心" + }, + { + "building": "建業中心", + "address": "九龍觀塘區創業街40號建業中心" + }, + { + "building": "駱駝漆大廈", + "address": "九龍觀塘區開源道" + }, + { + "building": "有利中心", + "address": "九龍觀塘區開源道45號有利中心" + }, + { + "building": "凱源工業大廈", + "address": "九龍觀塘區開源道47號凱源工業大廈" + }, + { + "building": "威利廣場", + "address": "九龍觀塘區開源道48號威利廣場" + }, + { + "building": "創貿廣場", + "address": "九龍觀塘區開源道49號創貿廣場" + }, + { + "building": "利寶時中心", + "address": "九龍觀塘區開源道50號利寶時中心" + }, + { + "building": "豐利中心", + "address": "九龍觀塘區開源道54號豐利中心" + }, + { + "building": "開聯工業中心", + "address": "九龍觀塘區開源道55號開聯工業中心" + }, + { + "building": "金米蘭中心", + "address": "九龍觀塘區開源道61號金米蘭中心" + }, + { + "building": "源成中心", + "address": "九龍觀塘區開源道64號源成中心" + }, + { + "building": "觀塘廣場", + "address": "九龍觀塘區開源道68號觀塘廣場" + }, + { + "building": "王子大廈", + "address": "九龍觀塘區開源道71號王子大廈" + }, + { + "building": "業發工業大廈一期", + "address": "九龍觀塘區開源道77號業發工業大廈一期" + }, + { + "building": "德利大廈", + "address": "九龍觀塘區雲漢街19-25號德利大廈" + }, + { + "building": "雲漢大樓", + "address": "九龍觀塘區雲漢街26-34號雲漢大樓" + }, + { + "building": "南和大樓", + "address": "九龍觀塘區雲漢街27-35號南和大樓" + }, + { + "building": "晨星樓", + "address": "九龍觀塘區雲漢街36-48號晨星樓" + }, + { + "building": "福興樓", + "address": "九龍觀塘區雲漢街41-41A,43-43A號福興樓" + }, + { + "building": "南寧大樓", + "address": "九龍觀塘區雲漢街49-61號南寧大樓" + }, + { + "building": "建泰樓", + "address": "九龍觀塘區雲漢街89-113號建泰樓" + }, + { + "building": "順緻苑", + "address": "九龍觀塘區順緻街" + }, + { + "building": "?景花園", + "address": "九龍觀塘區匯景道8號?景花園" + }, + { + "building": "建生商業中心", + "address": "九龍觀塘區敬業街49號建生商業中心" + }, + { + "building": "皇廷廣場", + "address": "九龍觀塘區敬業街55號皇廷廣場" + }, + { + "building": "利維大廈", + "address": "九龍觀塘區敬業街61-63號利維大廈" + }, + { + "building": "永順大廈", + "address": "九龍觀塘區瑞和街20號永順大廈" + }, + { + "building": "光星大廈", + "address": "九龍觀塘區瑞和街23-33號光星大廈" + }, + { + "building": "南安大樓", + "address": "九龍觀塘區瑞和街28-48號南安大樓" + }, + { + "building": "月耀樓", + "address": "九龍觀塘區瑞和街41-47號月耀樓" + }, + { + "building": "南泰大樓", + "address": "九龍觀塘區瑞和街50-68號南泰大樓" + }, + { + "building": "永輝樓", + "address": "九龍觀塘區瑞和街59-69號永輝樓" + }, + { + "building": "長安大樓", + "address": "九龍觀塘區瑞和街70-86號長安大樓" + }, + { + "building": "瑞寧樓", + "address": "九龍觀塘區瑞寧街24-50號瑞寧樓" + }, + { + "building": "裕民大廈", + "address": "九龍觀塘區裕民坊14-24號裕民大廈" + }, + { + "building": "油塘中心", + "address": "九龍觀塘區嘉榮街" + }, + { + "building": "順景大樓", + "address": "九龍觀塘區嘉樂街17-33號順景大樓" + }, + { + "building": "宏業大樓", + "address": "九龍觀塘區嘉樂街2-26號宏業大樓" + }, + { + "building": "怡昌大廈", + "address": "九龍觀塘區嘉樂街3-15號怡昌大廈" + }, + { + "building": "振萬廣場", + "address": "九龍觀塘區榮業街2號振萬廣場" + }, + { + "building": "海濱工業大廈", + "address": "九龍觀塘區榮業街6號海濱工業大廈" + }, + { + "building": "康瑞苑", + "address": "九龍觀塘區碧雲道133號康瑞苑" + }, + { + "building": "康?苑", + "address": "九龍觀塘區碧雲道139號" + }, + { + "building": "康雅苑", + "address": "九龍觀塘區碧雲道189號康雅苑" + }, + { + "building": "康盈苑", + "address": "九龍觀塘區碧雲道225號康盈苑" + }, + { + "building": "樂昌樓", + "address": "九龍觀塘區輔仁街26-38號樂昌樓" + }, + { + "building": "乾豐大廈", + "address": "九龍觀塘區輔仁街2-8號乾豐大廈" + }, + { + "building": "康寧大廈", + "address": "九龍觀塘區輔仁街50-52號康寧大廈" + }, + { + "building": "康逸苑", + "address": "九龍觀塘區德田街康逸苑" + }, + { + "building": "曉光大廈", + "address": "九龍觀塘區曉光街26-38號曉光大廈" + }, + { + "building": "曉華大廈", + "address": "九龍觀塘區曉光街42號曉華大廈" + }, + { + "building": "富華閣", + "address": "九龍觀塘區曉光街44號富華閣" + }, + { + "building": "永泰中心", + "address": "九龍觀塘區興業街12號永泰中心" + }, + { + "building": "永興工業大廈", + "address": "九龍觀塘區興業街14號永興工業大廈" + }, + { + "building": "中美中心", + "address": "九龍觀塘區興業街15-17號中美中心A座" + }, + { + "building": "駱駝漆中心", + "address": "九龍觀塘區興業街1號駱駝漆大廈駱駝漆中心" + }, + { + "building": "興業中心", + "address": "九龍觀塘區興業街31號興業中心" + }, + { + "building": "THE WAVE", + "address": "九龍觀塘區興業街4號THE WAVE" + }, + { + "building": "聯僑廣場", + "address": "九龍觀塘區勵業街11號聯僑廣場" + }, + { + "building": "天輝工業大廈", + "address": "九龍觀塘區勵業街46號天輝工業大廈" + }, + { + "building": "翠華集團中心", + "address": "九龍觀塘區勵業街50號翠華集團中心" + }, + { + "building": "同利工業大廈", + "address": "九龍觀塘區勵業街9號同利工業大廈" + }, + { + "building": "永德樓", + "address": "九龍觀塘區繁華街18-22號永德樓" + }, + { + "building": "嘉華樓", + "address": "九龍觀塘區繁華街24-26號嘉華樓" + }, + { + "building": "榮華樓", + "address": "九龍觀塘區繁華街28-34號榮華樓" + }, + { + "building": "源昌樓", + "address": "九龍觀塘區繁華街4號源昌樓" + }, + { + "building": "聯安大樓", + "address": "九龍觀塘區聯安街" + }, + { + "building": "泰興樓", + "address": "九龍觀塘區聯安街 1-7號泰興樓" + }, + { + "building": "連安大樓", + "address": "九龍觀塘區聯安街17-23A號連安大樓" + }, + { + "building": "泰華樓", + "address": "九龍觀塘區聯安街33-35號泰華樓" + }, + { + "building": "永毅大樓", + "address": "九龍觀塘區聯安街9-9B號永毅大樓" + }, + { + "building": "高銀環球廣場", + "address": "九龍觀塘區臨福街2號高銀環球廣場" + }, + { + "building": "南豐商業中心", + "address": "九龍觀塘區臨樂街19號南豐商業中心" + }, + { + "building": "商業廣場", + "address": "九龍觀塘區臨樂街8號商業廣場" + }, + { + "building": "同力工業中心", + "address": "九龍觀塘區臨興街19號同力工業中心" + }, + { + "building": "富洋工業中心", + "address": "九龍觀塘區臨興街20-28號富洋工業中心" + }, + { + "building": "美羅中心", + "address": "九龍觀塘區臨興街32號美羅中心" + }, + { + "building": "富利工業大廈", + "address": "九龍觀塘區駿業里6號富利工業大廈" + }, + { + "building": "世貿大樓", + "address": "九龍觀塘區駿業里8號世貿大樓" + }, + { + "building": "建德豐工業大樓", + "address": "九龍觀塘區駿業街39號建德豐工業大樓" + }, + { + "building": "航空科技大廈", + "address": "九龍觀塘區駿業街44號航空科技大廈" + }, + { + "building": "佳貿中心", + "address": "九龍觀塘區駿業街49號佳貿中心" + }, + { + "building": "南達大廈", + "address": "九龍觀塘區駿業街51號南達大廈" + }, + { + "building": "中海日升中心", + "address": "九龍觀塘區駿業街52-56號中海日升中心" + }, + { + "building": "駿運工業大廈", + "address": "九龍觀塘區駿業街60號駿運工業大廈" + }, + { + "building": "京貿中心", + "address": "九龍觀塘區駿業街62號京貿中心" + }, + { + "building": "南益工業中心", + "address": "九龍觀塘區駿業街64號南益工業中心" + }, + { + "building": "艾域林工業大廈", + "address": "九龍觀塘區鴻圖道10號艾域林工業大廈" + }, + { + "building": "精棉工業大廈", + "address": "九龍觀塘區鴻圖道12號精棉工業大廈" + }, + { + "building": "志成工業大廈", + "address": "九龍觀塘區鴻圖道16號志成工業大廈" + }, + { + "building": "發利工業大廈", + "address": "九龍觀塘區鴻圖道17號發利工業大廈" + }, + { + "building": "富登中心", + "address": "九龍觀塘區鴻圖道19號富登中心" + }, + { + "building": "訊科中心", + "address": "九龍觀塘區鴻圖道21號訊科中心" + }, + { + "building": "利登中心", + "address": "九龍觀塘區鴻圖道23號利登中心" + }, + { + "building": "偉基工業大廈", + "address": "九龍觀塘區鴻圖道25號偉基工業大廈" + }, + { + "building": "威登中心", + "address": "九龍觀塘區鴻圖道26號威登中心" + }, + { + "building": "德信工業大廈", + "address": "九龍觀塘區鴻圖道28A號德信工業大廈" + }, + { + "building": "鴻貿中心", + "address": "九龍觀塘區鴻圖道31號鴻貿中心" + }, + { + "building": "榮興利工業大廈", + "address": "九龍觀塘區鴻圖道32號榮興利工業大廈" + }, + { + "building": "王氏大廈", + "address": "九龍觀塘區鴻圖道33號王氏大廈" + }, + { + "building": "鴻泰工業大廈", + "address": "九龍觀塘區鴻圖道37-39號鴻泰工業大廈" + }, + { + "building": "偉業工業大廈", + "address": "九龍觀塘區鴻圖道38號偉業工業大廈" + }, + { + "building": "豐明大廈", + "address": "九龍觀塘區鴻圖道40號豐明大廈" + }, + { + "building": "華鴻工貿中心", + "address": "九龍觀塘區鴻圖道41號華鴻工貿中心" + }, + { + "building": "華寶中心", + "address": "九龍觀塘區鴻圖道42號華寶中心" + }, + { + "building": "世紀工商中心", + "address": "九龍觀塘區鴻圖道44-46號世紀工商中心" + }, + { + "building": "宏光工業大廈", + "address": "九龍觀塘區鴻圖道45號宏光工業大廈" + }, + { + "building": "嘉鴻中心", + "address": "九龍觀塘區鴻圖道47號嘉鴻中心" + }, + { + "building": "新榮大廈", + "address": "九龍觀塘區鴻圖道48號新榮大廈" + }, + { + "building": "陳漢深商行大廈", + "address": "九龍觀塘區鴻圖道4號陳漢深商行大廈" + }, + { + "building": "寶冠大廈", + "address": "九龍觀塘區鴻圖道50號寶冠大廈" + }, + { + "building": "保華企業中心", + "address": "九龍觀塘區鴻圖道51號保華企業中心" + }, + { + "building": "威明中心", + "address": "九龍觀塘區鴻圖道53號威明中心" + }, + { + "building": "景雲大廈", + "address": "九龍觀塘區鴻圖道54號景雲大廈" + }, + { + "building": "香江國際工商大廈", + "address": "九龍觀塘區鴻圖道56號香江國際工商大廈" + }, + { + "building": "南洋廣場", + "address": "九龍觀塘區鴻圖道57號南洋廣場" + }, + { + "building": "鵬光大廈", + "address": "九龍觀塘區鴻圖道59號鵬光大廈" + }, + { + "building": "鴻福工廠大廈", + "address": "九龍觀塘區鴻圖道60號鴻福工廠大廈" + }, + { + "building": "泰豐工業大廈", + "address": "九龍觀塘區鴻圖道61號泰豐工業大廈" + }, + { + "building": "鴻運工廠大廈", + "address": "九龍觀塘區鴻圖道63-65號鴻運工廠大廈" + }, + { + "building": "新星大廈", + "address": "九龍觀塘區鴻圖道64號新星大廈" + }, + { + "building": "樂居工業大廈", + "address": "九龍觀塘區鴻圖道6-8號樂居工業大廈" + }, + { + "building": "利安工業大廈", + "address": "九龍觀塘區鴻圖道70號利安工業大廈" + }, + { + "building": "瀝洋工業大廈", + "address": "九龍觀塘區鴻圖道71號瀝洋工業大廈" + }, + { + "building": "恆勝中心", + "address": "九龍觀塘區鴻圖道72號恆勝中心" + }, + { + "building": "KOHO", + "address": "九龍觀塘區鴻圖道73-75號KOHO" + }, + { + "building": "明順大廈", + "address": "九龍觀塘區鴻圖道74號明順大廈" + }, + { + "building": "聯運工業大廈", + "address": "九龍觀塘區鴻圖道76號聯運工業大廈" + }, + { + "building": "潤承大廈", + "address": "九龍觀塘區鴻圖道77號潤承大廈" + }, + { + "building": "嘉士亞洲工業大廈", + "address": "九龍觀塘區鴻圖道79號嘉士亞洲工業大廈" + }, + { + "building": "CONTEMPO PLACE", + "address": "九龍觀塘區鴻圖道81號CONTEMPO PLACE" + }, + { + "building": "新傳媒集團中心", + "address": "九龍觀塘區鴻圖道82號新傳媒集團中心" + }, + { + "building": "大偉工業大廈", + "address": "九龍觀塘區鴻圖道86號大偉工業大廈" + }, + { + "building": "越秀工業大廈", + "address": "九龍觀塘區鴻圖道87號越秀工業大廈" + }, + { + "building": "志聯中心", + "address": "九龍觀塘區鴻圖道88號志聯中心" + }, + { + "building": "鯉安苑鯉欣閣", + "address": "九龍觀塘區鯉魚門道" + }, + { + "building": "油翠苑", + "address": "九龍觀塘區鯉魚門道56號" + }, + { + "building": "麗港城", + "address": "九龍觀塘區麗港東街10號麗港城" + }, + { + "building": "寶珮苑寶珊閣", + "address": "九龍觀塘區寶珮街2號寶珮苑寶珊閣" + }, + { + "building": "寶珮苑寶瑚閣", + "address": "九龍觀塘區寶珮街3號寶珮苑寶瑚閣" + }, + { + "building": "寶珮苑寶瑛閣", + "address": "九龍觀塘區寶珮街5號寶珮苑寶瑛閣" + }, + { + "building": "寶珮苑寶瑤閣", + "address": "九龍觀塘區寶珮街9號寶珮苑寶瑤閣" + }, + { + "building": "官塘工業中心", + "address": "九龍觀塘區觀塘道" + }, + { + "building": "欣榮大廈", + "address": "九龍觀塘區觀塘道241號欣榮大廈" + }, + { + "building": "永英樓", + "address": "九龍觀塘區觀塘道257-269號永英樓" + }, + { + "building": "德明樓", + "address": "九龍觀塘區觀塘道271-275號德明樓" + }, + { + "building": "捷煌樓", + "address": "九龍觀塘區觀塘道301-309號捷煌樓" + }, + { + "building": "理想集團中心", + "address": "九龍觀塘區觀塘道320-322號理想集團中心" + }, + { + "building": "理高工業大廈", + "address": "九龍觀塘區觀塘道324號理高工業大廈" + }, + { + "building": "濱海集團中心", + "address": "九龍觀塘區觀塘道326號濱海集團中心" + }, + { + "building": "溫黛工廠大廈", + "address": "九龍觀塘區觀塘道328號溫黛工廠大廈" + }, + { + "building": "威力貨運大廈", + "address": "九龍觀塘區觀塘道330號威力貨運大廈" + }, + { + "building": "香港商報大廈", + "address": "九龍觀塘區觀塘道332號香港商報大廈" + }, + { + "building": "KT336", + "address": "九龍觀塘區觀塘道334-336號KT336" + }, + { + "building": "觀塘自由倉大廈", + "address": "九龍觀塘區觀塘道338號觀塘自由倉大廈" + }, + { + "building": "泉源工業大廈", + "address": "九龍觀塘區觀塘道342-344號泉源工業大廈" + }, + { + "building": "麥士威工業大廈", + "address": "九龍觀塘區觀塘道350號麥士威工業大廈" + }, + { + "building": "嘉域大廈", + "address": "九龍觀塘區觀塘道398-402號嘉域大廈" + }, + { + "building": "國泰大樓", + "address": "九龍觀塘區觀塘道401-405號國泰大樓" + }, + { + "building": "時運工業大廈", + "address": "九龍觀塘區觀塘道404號時運工業大廈" + }, + { + "building": "裕華大廈", + "address": "九龍觀塘區觀塘道407-431號裕華大廈" + }, + { + "building": "觀點中心", + "address": "九龍觀塘區觀塘道410號觀點中心" + }, + { + "building": "一亞太中心", + "address": "九龍觀塘區觀塘道414號" + }, + { + "building": "新界西貢區 鹿尾村", + "address": "西貢區鹿尾村" + }, + { + "building": "堅麗閣", + "address": "香港島中西區IL1381堅尼地道10-18號堅麗閣" + }, + { + "building": "半山樓", + "address": "香港島中西區IL1381麥當勞道21-23號半山樓" + }, + { + "building": "翠麗軒", + "address": "香港島中西區IL1892居賢坊3號翠麗軒" + }, + { + "building": "美意居", + "address": "香港島中西區IL220皇后大道西38號美意居" + }, + { + "building": "陞寶大廈", + "address": "香港島中西區IL3691高陞街16-20號陞寶大廈" + }, + { + "building": "懿?", + "address": "香港島中西區IL4629西摩道9號懿?" + }, + { + "building": "嘉輝大廈", + "address": "香港島中西區IL5544西摩道23號嘉輝大廈" + }, + { + "building": "金富樓", + "address": "香港島中西區IL5983吉席街66-68號金富樓" + }, + { + "building": "雍慧閣", + "address": "香港島中西區IL689般咸道11號雍慧閣" + }, + { + "building": "添福商業中心", + "address": "香港島中西區IL7395荷李活道53-55號添福商業中心" + }, + { + "building": "信德中心", + "address": "香港島中西區IL8517干諾道中168-200號信德中心" + }, + { + "building": "怡?", + "address": "香港島中西區IL8873加惠民道33號怡?" + }, + { + "building": "傲翔灣畔", + "address": "香港島中西區IL8982域多利道86號傲翔灣畔" + }, + { + "building": "豐樂閣", + "address": "香港島中西區IL94堅道99號豐樂閣" + }, + { + "building": "金豪大廈", + "address": "香港島中西區IL94鴨巴甸街41-49號金豪大廈" + }, + { + "building": "MANHATTAN AVENUE", + "address": "香港島中西區IL99皇后大道中255號MANHATTAN AVENUE" + }, + { + "building": "博仕臺", + "address": "香港島中西區ML205皇后大道西419K號博仕臺" + }, + { + "building": "綠意居", + "address": "香港島中西區ML239卑路乍街26號綠意居" + }, + { + "building": "友邦金融中心", + "address": "香港島中西區ML278干諾道中1號友邦金融中心" + }, + { + "building": "盈峰一號", + "address": "香港島中西區ML58和風街1號盈峰一號" + }, + { + "building": "林氏大廈", + "address": "香港島中西區九如坊6-10號林氏大廈" + }, + { + "building": "MARTIN HSE", + "address": "香港島中西區上亞厘畢道1號MARTIN HSE" + }, + { + "building": "藝穗會", + "address": "香港島中西區下亞里畢道2號藝穗會" + }, + { + "building": "騏利大廈", + "address": "香港島中西區士丹利街16號騏利大廈" + }, + { + "building": "鴨都喇利大廈", + "address": "香港島中西區士丹利街20號鴨都喇利大廈" + }, + { + "building": "登寶大廈", + "address": "香港島中西區士丹利街22號登寶大廈" + }, + { + "building": "陸羽大廈", + "address": "香港島中西區士丹利街24-26號陸羽大廈" + }, + { + "building": "金禾大廈", + "address": "香港島中西區士丹利街34-38號金禾大廈" + }, + { + "building": "萬事利大廈", + "address": "香港島中西區士丹利街42-44號萬事利大廈" + }, + { + "building": "信誠廣場", + "address": "香港島中西區士丹利街50號信誠廣場" + }, + { + "building": "明珠行", + "address": "香港島中西區士丹利街60號明珠行" + }, + { + "building": "佳德商業大廈", + "address": "香港島中西區士丹利街66-72號佳德商業大廈" + }, + { + "building": "旺興大廈", + "address": "香港島中西區士丹利街74-78號旺興大廈" + }, + { + "building": "萬利豐中心", + "address": "香港島中西區士丹利街8-12號萬利豐中心" + }, + { + "building": "御珍閣", + "address": "香港島中西區士丹頓街10-12號御珍閣" + }, + { + "building": "STAUNTON BUILDING", + "address": "香港島中西區士丹頓街14-18號STAUNTON BUILDING" + }, + { + "building": "金禧樓", + "address": "香港島中西區士丹頓街33-35號金禧樓" + }, + { + "building": "兆和軒", + "address": "香港島中西區士丹頓街3號兆和軒" + }, + { + "building": "均發樓", + "address": "香港島中西區士丹頓街44-46號均發樓" + }, + { + "building": "華怡樓", + "address": "香港島中西區士丹頓街51-57號華怡樓" + }, + { + "building": "明興樓", + "address": "香港島中西區士丹頓街52-56號明興樓" + }, + { + "building": "嘉彩閣", + "address": "香港島中西區士丹頓街5號嘉彩閣" + }, + { + "building": "順滿樓", + "address": "香港島中西區士丹頓街66號順滿樓" + }, + { + "building": "尚賢居", + "address": "香港島中西區士丹頓街72號尚賢居" + }, + { + "building": "翠文樓", + "address": "香港島中西區士丹頓街7號翠文樓" + }, + { + "building": "匡景居", + "address": "香港島中西區士丹頓街80號匡景居" + }, + { + "building": "新發大廈", + "address": "香港島中西區士美非路12S-12T號新發大廈" + }, + { + "building": "文光閣", + "address": "香港島中西區士美非路12號文光閣" + }, + { + "building": "華輝大廈", + "address": "香港島中西區士美非路26-34號華輝大廈" + }, + { + "building": "美菲閣", + "address": "香港島中西區士美非路41A-43號美菲閣" + }, + { + "building": "時美閣", + "address": "香港島中西區士美非路83號時美閣" + }, + { + "building": "美暉大廈", + "address": "香港島中西區士美非路8號美暉大廈" + }, + { + "building": "美新大廈", + "address": "香港島中西區士美菲路1-15號美新大廈" + }, + { + "building": "慧華閣", + "address": "香港島中西區士美菲路12R號慧華閣" + }, + { + "building": "美華大廈", + "address": "香港島中西區士美菲路36-42號美華大廈" + }, + { + "building": "聯興新樓", + "address": "香港島中西區士美菲路47號聯興新樓" + }, + { + "building": "聯發新樓", + "address": "香港島中西區士美菲路49號聯發新樓" + }, + { + "building": "士美菲園", + "address": "香港島中西區士美菲路50號士美菲園" + }, + { + "building": "嘉輝花園", + "address": "香港島中西區士美菲路77號嘉輝花園" + }, + { + "building": "翠麗苑", + "address": "香港島中西區士美菲路81號翠麗苑" + }, + { + "building": "安樂大樓", + "address": "香港島中西區大安臺1-4號安樂大樓" + }, + { + "building": "大安臺8號", + "address": "香港島中西區大安臺8號" + }, + { + "building": "文豪花園", + "address": "香港島中西區山市街15-17號文豪花園" + }, + { + "building": "太生大廈", + "address": "香港島中西區山市街1A號太生大廈" + }, + { + "building": "海怡花園1座", + "address": "香港島中西區山市街1B號海怡花園1座" + }, + { + "building": "山市大廈", + "address": "香港島中西區山市街23-25號山市大廈" + }, + { + "building": "海利大廈", + "address": "香港島中西區山市街29-31號海利大廈" + }, + { + "building": "順安大廈", + "address": "香港島中西區山市街2號順安大廈" + }, + { + "building": "盈基花園", + "address": "香港島中西區山市街34號盈基花園" + }, + { + "building": "寶樹樓", + "address": "香港島中西區山市街35-37號寶樹樓" + }, + { + "building": "雅福台", + "address": "香港島中西區山市街3-5號雅福台" + }, + { + "building": "紫蘭樓", + "address": "香港島中西區山市街39-43號紫蘭樓" + }, + { + "building": "永泰大樓", + "address": "香港島中西區山市街7-9號永泰大樓" + }, + { + "building": "山頂廣場", + "address": "香港島中西區山頂道118號山頂廣場" + }, + { + "building": "東蘆", + "address": "香港島中西區山頂道74-76號東蘆" + }, + { + "building": "何東花園", + "address": "香港島中西區山頂道75號何東花園" + }, + { + "building": "十間", + "address": "香港島中西區山頂道81-95號" + }, + { + "building": "頤翠苑", + "address": "香港島中西區山頂道86-88號頤翠苑" + }, + { + "building": "順景樓", + "address": "香港島中西區山道101號順景樓" + }, + { + "building": "佳景閣", + "address": "香港島中西區山道38號佳景閣" + }, + { + "building": "富賢閣", + "address": "香港島中西區山道39號富賢閣" + }, + { + "building": "南昌大廈", + "address": "香港島中西區山道48-52號南昌大廈" + }, + { + "building": "適安大廈", + "address": "香港島中西區山道54-66號適安大廈" + }, + { + "building": "昌運大廈", + "address": "香港島中西區山道55-59號昌運大廈" + }, + { + "building": "富山苑", + "address": "香港島中西區山道61-69號富山苑" + }, + { + "building": "山景園", + "address": "香港島中西區山道72號" + }, + { + "building": "山道閣", + "address": "香港島中西區山道79-85號山道閣" + }, + { + "building": "長發大廈", + "address": "香港島中西區山道7-9號長發大廈" + }, + { + "building": "福慶樓", + "address": "香港島中西區山道87號福慶樓" + }, + { + "building": "翠怡閣", + "address": "香港島中西區己連拿利2號翠怡閣" + }, + { + "building": "園林大樓", + "address": "香港島中西區己連拿利3-4號園林大樓" + }, + { + "building": "鐵崗", + "address": "香港島中西區己連拿利5-6號鐵崗" + }, + { + "building": "樹福大廈", + "address": "香港島中西區己連拿利7號樹福大廈" + }, + { + "building": "芝蘭台", + "address": "香港島中西區干德道" + }, + { + "building": "康苑", + "address": "香港島中西區干德道" + }, + { + "building": "華翠園", + "address": "香港島中西區干德道" + }, + { + "building": "美景台", + "address": "香港島中西區干德道11號美景台" + }, + { + "building": "峰景大廈", + "address": "香港島中西區干德道12號峰景大廈" + }, + { + "building": "全景大廈第一座", + "address": "香港島中西區干德道15號全景大廈" + }, + { + "building": "君德閣", + "address": "香港島中西區干德道20號君德閣" + }, + { + "building": "慧豪閣第一座", + "address": "香港島中西區干德道22號慧豪閣第一座" + }, + { + "building": "華麗閣", + "address": "香港島中西區干德道26-28號華麗閣" + }, + { + "building": "康威園", + "address": "香港島中西區干德道29號康威園" + }, + { + "building": "殷榮閣", + "address": "香港島中西區干德道30號殷榮閣" + }, + { + "building": "敦皓", + "address": "香港島中西區干德道31號敦皓" + }, + { + "building": "承德山莊", + "address": "香港島中西區干德道33號承德山莊" + }, + { + "building": "慧明苑第一座", + "address": "香港島中西區干德道36號慧明苑第一座" + }, + { + "building": "THE ICON", + "address": "香港島中西區干德道38號THE ICON" + }, + { + "building": "天匯", + "address": "香港島中西區干德道39號天匯" + }, + { + "building": "海天閣", + "address": "香港島中西區干德道41C號海天閣" + }, + { + "building": "聯邦花園", + "address": "香港島中西區干德道41號聯邦花園" + }, + { + "building": "?豪閣", + "address": "香港島中西區干德道42號?豪閣" + }, + { + "building": "金徽閣", + "address": "香港島中西區干德道45號金徽閣" + }, + { + "building": "鑑波樓", + "address": "香港島中西區干德道47號鑑波樓" + }, + { + "building": "華庭閣", + "address": "香港島中西區干德道49號華庭閣" + }, + { + "building": "年豐園二座", + "address": "香港島中西區干德道51號年豐園二座" + }, + { + "building": "駿豪閣", + "address": "香港島中西區干德道52號駿豪閣" + }, + { + "building": "彝年大廈", + "address": "香港島中西區干德道54A-54D號彝年大廈" + }, + { + "building": "璈珀", + "address": "香港島中西區干德道55號璈珀" + }, + { + "building": "殷樺花園2期", + "address": "香港島中西區干德道56號殷樺花園2期" + }, + { + "building": "富景花園", + "address": "香港島中西區干德道58A-58B號富景花園" + }, + { + "building": "帝豪閣", + "address": "香港島中西區干德道62G號帝豪閣" + }, + { + "building": "嘉富臺", + "address": "香港島中西區干德道62號嘉富臺" + }, + { + "building": "宜安閣", + "address": "香港島中西區干德道64A號宜安閣" + }, + { + "building": "健園", + "address": "香港島中西區干德道66號健園" + }, + { + "building": "華星閣", + "address": "香港島中西區干德道68號華星閣" + }, + { + "building": "僑星閣", + "address": "香港島中西區干德道70號僑星閣" + }, + { + "building": "麗豪閣", + "address": "香港島中西區干德道8號" + }, + { + "building": "李園", + "address": "香港島中西區干德道9號" + }, + { + "building": "豫泰商業大廈", + "address": "香港島中西區干諾道中128-129號豫泰商業大廈" + }, + { + "building": "誠信大廈", + "address": "香港島中西區干諾道中133號誠信大廈" + }, + { + "building": "珠江船務大廈", + "address": "香港島中西區干諾道中143號珠江船務大廈" + }, + { + "building": "多寧大廈", + "address": "香港島中西區干諾道中145號多寧大廈" + }, + { + "building": "粵海投資大廈", + "address": "香港島中西區干諾道中148號粵海投資大廈" + }, + { + "building": "大昌大廈", + "address": "香港島中西區干諾道中15-18號大昌大廈" + }, + { + "building": "招商局", + "address": "香港島中西區干諾道中152-155號招商局" + }, + { + "building": "寶基大廈", + "address": "香港島中西區干諾道中156-157號寶基大廈" + }, + { + "building": "開僑商業大廈", + "address": "香港島中西區干諾道中158號開僑商業大廈" + }, + { + "building": "招商局大廈", + "address": "香港島中西區干諾道中168-200號招商局大廈" + }, + { + "building": "馮氏大廈", + "address": "香港島中西區干諾道中19-20號馮氏大廈" + }, + { + "building": "華商會所大廈", + "address": "香港島中西區干諾道中21-22號華商會所大廈" + }, + { + "building": "香林大廈", + "address": "香港島中西區干諾道中23號香林大廈" + }, + { + "building": "中華總商會大廈", + "address": "香港島中西區干諾道中24-25號中華總商會大廈" + }, + { + "building": "莊士大廈", + "address": "香港島中西區干諾道中30-32號莊士大廈" + }, + { + "building": "亞洲大廈", + "address": "香港島中西區干諾道中33號亞洲大廈" + }, + { + "building": "華懋大廈", + "address": "香港島中西區干諾道中34-37號華懋大廈" + }, + { + "building": "中國建設銀行大廈", + "address": "香港島中西區干諾道中3號中國建設銀行大廈" + }, + { + "building": "紐約行", + "address": "香港島中西區干諾道中60號紐約行" + }, + { + "building": "福興大廈", + "address": "香港島中西區干諾道中61號福興大廈" + }, + { + "building": "中興商業大廈", + "address": "香港島中西區干諾道中62-63號中興商業大廈" + }, + { + "building": "中保集團大廈", + "address": "香港島中西區干諾道中73號中保集團大廈" + }, + { + "building": "標華豐集團大廈", + "address": "香港島中西區干諾道中77號標華豐集團大廈" + }, + { + "building": "中旅集團大廈", + "address": "香港島中西區干諾道中78-83號中旅集團大廈" + }, + { + "building": "遮打大廈", + "address": "香港島中西區干諾道中8號遮打大廈" + }, + { + "building": "南源大廈", + "address": "香港島中西區干諾道中南源大廈" + }, + { + "building": "威利大廈", + "address": "香港島中西區干諾道西104-106號威利大廈" + }, + { + "building": "確利達中心", + "address": "香港島中西區干諾道西121-122號確利達中心" + }, + { + "building": "立本大廈", + "address": "香港島中西區干諾道西123-124號立本大廈" + }, + { + "building": "安順大廈", + "address": "香港島中西區干諾道西125-126號安順大廈" + }, + { + "building": "寶豐大廈", + "address": "香港島中西區干諾道西127-128號寶豐大廈" + }, + { + "building": "倫工商業大廈", + "address": "香港島中西區干諾道西131-132號倫工商業大廈" + }, + { + "building": "利宏大樓", + "address": "香港島中西區干諾道西133-134號利宏大樓" + }, + { + "building": "錦添工業大廈", + "address": "香港島中西區干諾道西135號錦添工業大廈" + }, + { + "building": "興泰大廈", + "address": "香港島中西區干諾道西139-140號興泰大廈" + }, + { + "building": "保?中心", + "address": "香港島中西區干諾道西141-143號保?中心" + }, + { + "building": "成基商業中心", + "address": "香港島中西區干諾道西144-151號成基商業中心" + }, + { + "building": "高樂花園", + "address": "香港島中西區干諾道西153-157號高樂花園" + }, + { + "building": "富康樓", + "address": "香港島中西區干諾道西158號富康樓" + }, + { + "building": "昌寧大廈", + "address": "香港島中西區干諾道西162-164A號昌寧大廈" + }, + { + "building": "偉景閣", + "address": "香港島中西區干諾道西165-166號偉景閣" + }, + { + "building": "豐盛大廈", + "address": "香港島中西區干諾道西168號豐盛大廈" + }, + { + "building": "祐華大廈", + "address": "香港島中西區干諾道西18-19號祐華大廈" + }, + { + "building": "?港中心", + "address": "香港島中西區干諾道西181號?港中心" + }, + { + "building": "中英大廈", + "address": "香港島中西區干諾道西20-20A號中英大廈" + }, + { + "building": "海景商業大廈", + "address": "香港島中西區干諾道西21-24號海景商業大廈" + }, + { + "building": "康諾維港大廈", + "address": "香港島中西區干諾道西35-36號康諾維港大廈" + }, + { + "building": "達隆名居", + "address": "香港島中西區干諾道西38號達隆名居" + }, + { + "building": "億利商業大廈", + "address": "香港島中西區干諾道西3號億利商業大廈" + }, + { + "building": "東江大廈", + "address": "香港島中西區干諾道西40-41號東江大廈" + }, + { + "building": "會達中心", + "address": "香港島中西區干諾道西55號會達中心" + }, + { + "building": "時代商業大廈", + "address": "香港島中西區干諾道西62-63號時代商業大廈" + }, + { + "building": "中銀信用卡中心", + "address": "香港島中西區干諾道西64-69號中銀信用卡中心" + }, + { + "building": "金佑商業大廈", + "address": "香港島中西區干諾道西70-72號金佑商業大廈" + }, + { + "building": "致祥大廈", + "address": "香港島中西區干諾道西74-75號致祥大廈" + }, + { + "building": "米行大廈", + "address": "香港島中西區干諾道西77-78號米行大廈" + }, + { + "building": "德豐大廈", + "address": "香港島中西區干諾道西79-81號德豐大廈" + }, + { + "building": "嘉安大廈", + "address": "香港島中西區干諾道西8-14號嘉安大廈" + }, + { + "building": "海景大廈", + "address": "香港島中西區干諾道西82-87號海景大廈" + }, + { + "building": "粵財大廈", + "address": "香港島中西區干諾道西88號粵財大廈" + }, + { + "building": "廣德大廈", + "address": "香港島中西區干諾道西92-93號廣德大廈" + }, + { + "building": "利興樓", + "address": "香港島中西區干諾道西96號利興樓" + }, + { + "building": "日景閣", + "address": "香港島中西區太子台12-14號日景閣" + }, + { + "building": "寶筏樓", + "address": "香港島中西區太子臺6號寶筏樓" + }, + { + "building": "太子樓", + "address": "香港島中西區太子臺8號太子樓" + }, + { + "building": "欣翠閣", + "address": "香港島中西區太平山街1-3號欣翠閣" + }, + { + "building": "太安樓", + "address": "香港島中西區太平山街14號太安樓" + }, + { + "building": "太寧樓", + "address": "香港島中西區太平山街18號太寧樓" + }, + { + "building": "太裕樓", + "address": "香港島中西區太平山街20號太裕樓" + }, + { + "building": "太平樓", + "address": "香港島中西區太平山街22-24A號太平樓" + }, + { + "building": "太昌樓", + "address": "香港島中西區太平山街2-4號太昌樓" + }, + { + "building": "太康樓", + "address": "香港島中西區太平山街26-30號太康樓" + }, + { + "building": "太山樓", + "address": "香港島中西區太平山街32-34號太山樓" + }, + { + "building": "順景雅庭", + "address": "香港島中西區太平山街38號順景雅庭" + }, + { + "building": "寶雲樓", + "address": "香港島中西區太平山街6號寶雲樓" + }, + { + "building": "太白閣", + "address": "香港島中西區太白臺4-5號太白閣" + }, + { + "building": "陞大廈", + "address": "香港島中西區巴丙頓道13-15A號陞大廈" + }, + { + "building": "精緻園", + "address": "香港島中西區巴丙頓道18號精緻園" + }, + { + "building": "崇寧大廈", + "address": "香港島中西區巴丙頓道1A號崇寧大廈" + }, + { + "building": "興華大廈M座", + "address": "香港島中西區巴丙頓道1號興華大廈M座" + }, + { + "building": "金時大廈", + "address": "香港島中西區巴丙頓道20號金時大廈" + }, + { + "building": "兆忠閣", + "address": "香港島中西區巴丙頓道21號兆忠閣" + }, + { + "building": "樂賢閣", + "address": "香港島中西區巴丙頓道25號樂賢閣" + }, + { + "building": "海明苑", + "address": "香港島中西區巴丙頓道4號海明苑" + }, + { + "building": "巴威大廈", + "address": "香港島中西區巴丙頓道5號巴威大廈" + }, + { + "building": "時樂花園", + "address": "香港島中西區巴丙頓道6A號時樂花園" + }, + { + "building": "基苑", + "address": "香港島中西區巴丙頓道6B號基苑" + }, + { + "building": "格蘭閣", + "address": "香港島中西區巴丙頓道6號格蘭閣" + }, + { + "building": "永德商業中心", + "address": "香港島中西區文咸西街13-19號永德商業中心" + }, + { + "building": "嘉豐大廈", + "address": "香港島中西區文咸西街23-25號嘉豐大廈" + }, + { + "building": "乾泰隆大廈", + "address": "香港島中西區文咸西街27-29號乾泰隆大廈" + }, + { + "building": "新成大廈", + "address": "香港島中西區文咸西街32-42號新成大廈" + }, + { + "building": "南北行商業中心", + "address": "香港島中西區文咸西街44A-46號南北行商業中心" + }, + { + "building": "信裕大廈", + "address": "香港島中西區文咸西街48-48A號信裕大廈" + }, + { + "building": "四海通銀行大廈", + "address": "香港島中西區文咸西街49-51號四海通銀行大廈" + }, + { + "building": "恆發貿易大廈", + "address": "香港島中西區文咸西街52號恆發貿易大廈" + }, + { + "building": "豐生貿易大廈", + "address": "香港島中西區文咸西街54號豐生貿易大廈" + }, + { + "building": "趙氏大廈", + "address": "香港島中西區文咸西街6-10號趙氏大廈" + }, + { + "building": "永順大廈", + "address": "香港島中西區文咸西街64-66號永順大廈" + }, + { + "building": "成利源大廈", + "address": "香港島中西區文咸西街69-71號成利源大廈" + }, + { + "building": "建南大廈", + "address": "香港島中西區文咸西街81-85號建南大廈" + }, + { + "building": "文景大廈", + "address": "香港島中西區文咸西街9-11號文景大廈" + }, + { + "building": "利文商業大廈", + "address": "香港島中西區文咸東街105-107號利文商業大廈" + }, + { + "building": "萬和閣", + "address": "香港島中西區文咸東街127號萬和閣" + }, + { + "building": "南島商業大廈", + "address": "香港島中西區文咸東街128 -130號南島商業大廈" + }, + { + "building": "威威商業大廈", + "address": "香港島中西區文咸東街12號威威商業大廈" + }, + { + "building": "柏廷坊", + "address": "香港島中西區文咸東街22-26號柏廷坊" + }, + { + "building": "泗宗樓", + "address": "香港島中西區文咸東街32號泗宗樓" + }, + { + "building": "泰基商業大廈", + "address": "香港島中西區文咸東街40號泰基商業大廈" + }, + { + "building": "慶豐商業大廈", + "address": "香港島中西區文咸東街49號慶豐商業大廈" + }, + { + "building": "安榮大廈", + "address": "香港島中西區文咸東街51-59號安榮大廈" + }, + { + "building": "興隆大廈", + "address": "香港島中西區文咸東街68-74號興隆大廈" + }, + { + "building": "順發樓", + "address": "香港島中西區文咸東街6-8號順發樓" + }, + { + "building": "華東商業大廈", + "address": "香港島中西區文咸東街78號華東商業大廈" + }, + { + "building": "順隆大廈", + "address": "香港島中西區文咸東街84-90號順隆大廈" + }, + { + "building": "東北商業大廈", + "address": "香港島中西區文咸東街95號東北商業大廈" + }, + { + "building": "盤谷銀行大廈", + "address": "香港島中西區文咸街西18號盤谷銀行大廈" + }, + { + "building": "林記大廈", + "address": "香港島中西區文咸街西73號林記大廈" + }, + { + "building": "文華大廈", + "address": "香港島中西區文咸街東35-45B號文華大廈" + }, + { + "building": "金閣大廈", + "address": "香港島中西區文咸街東60-62號金閣大廈" + }, + { + "building": "喬苑", + "address": "香港島中西區文輝道1-3號喬苑" + }, + { + "building": "富基大廈", + "address": "香港島中西區日富里7-13號富基大廈" + }, + { + "building": "寶泰大廈", + "address": "香港島中西區水坑口街9號寶泰大廈" + }, + { + "building": "東利大廈", + "address": "香港島中西區水街" + }, + { + "building": "翠景閣", + "address": "香港島中西區水街18號翠景閣" + }, + { + "building": "荔安大廈", + "address": "香港島中西區水街2-2C號荔安大廈" + }, + { + "building": "樂新大廈", + "address": "香港島中西區水街25-35號樂新大廈" + }, + { + "building": "偉安樓", + "address": "香港島中西區水街37-43號偉安樓" + }, + { + "building": "永多樓", + "address": "香港島中西區水街4號永多樓" + }, + { + "building": "昌榮閣", + "address": "香港島中西區水街5號昌榮閣" + }, + { + "building": "康裕苑", + "address": "香港島中西區水街9號康裕苑" + }, + { + "building": "LA HACIENDA", + "address": "香港島中西區加列山道27號 LA HACIENDA" + }, + { + "building": "崑廬", + "address": "香港島中西區加列山道44號崑廬" + }, + { + "building": "陽光花園", + "address": "香港島中西區加列山道48號陽光花園" + }, + { + "building": "龍庭", + "address": "香港島中西區加列山道5號龍庭" + }, + { + "building": "賽詩閣", + "address": "香港島中西區加列山道63號賽詩閣" + }, + { + "building": "嘉麗園", + "address": "香港島中西區加列山道65-69號嘉麗園" + }, + { + "building": "顯峰居", + "address": "香港島中西區加列山道8號" + }, + { + "building": "西環新樓", + "address": "香港島中西區加多近街37號西環新樓" + }, + { + "building": "嘉都大廈", + "address": "香港島中西區加多近街39-41號嘉都大廈" + }, + { + "building": "恒裕大廈", + "address": "香港島中西區加多近街45-55號恒裕大廈" + }, + { + "building": "安發大廈", + "address": "香港島中西區加多近街57號安發大廈" + }, + { + "building": "加暉閣", + "address": "香港島中西區加倫臺18-22號加暉閣" + }, + { + "building": "榮富樓", + "address": "香港島中西區加倫臺2-6號榮富樓" + }, + { + "building": "俊賢閣", + "address": "香港島中西區加倫臺28號俊賢閣" + }, + { + "building": "嘉利大廈", + "address": "香港島中西區加倫臺8-16號嘉利大廈" + }, + { + "building": "加惠臺", + "address": "香港島中西區加惠民道29號" + }, + { + "building": "采逸軒", + "address": "香港島中西區北街12號采逸軒" + }, + { + "building": "昌裕大廈", + "address": "香港島中西區北街13-19號昌裕大廈" + }, + { + "building": "建隆樓", + "address": "香港島中西區北街16-26號建隆樓" + }, + { + "building": "福安大廈", + "address": "香港島中西區北街23-25號福安大廈" + }, + { + "building": "鴻利樓", + "address": "香港島中西區北街29-31號鴻利樓" + }, + { + "building": "金寶樓", + "address": "香港島中西區北街37-41號金寶樓" + }, + { + "building": "五福大廈A座", + "address": "香港島中西區北街4-8號五福大廈A座" + }, + { + "building": "豪景臺", + "address": "香港島中西區四方街26號豪景臺" + }, + { + "building": "雍翠台第二座", + "address": "香港島中西區必列者士街18號雍翠台第二座" + }, + { + "building": "東盛臺", + "address": "香港島中西區必列者士街39號東盛臺" + }, + { + "building": "啟正中心", + "address": "香港島中西區正街16-22號啟正中心" + }, + { + "building": "寶豐大廈", + "address": "香港島中西區正街1-7號寶豐大廈" + }, + { + "building": "雅賢軒", + "address": "香港島中西區正街33號雅賢軒" + }, + { + "building": "裕豐花園", + "address": "香港島中西區正街51號裕豐花園" + }, + { + "building": "錦邦大廈", + "address": "香港島中西區永吉街14-16號錦邦大廈" + }, + { + "building": "永富大廈", + "address": "香港島中西區永吉街18-24號永富大廈" + }, + { + "building": "誠興商業大廈", + "address": "香港島中西區永吉街21-27號誠興商業大廈" + }, + { + "building": "永吉利商業大廈", + "address": "香港島中西區永吉街28-36號永吉利商業大廈" + }, + { + "building": "恒豐大廈", + "address": "香港島中西區永吉街29-35號恒豐大廈" + }, + { + "building": "永宜商業大廈", + "address": "香港島中西區永吉街3-7號永宜商業大廈" + }, + { + "building": "誠利商業大廈", + "address": "香港島中西區永吉街6-12號誠利商業大廈" + }, + { + "building": "永亨保險大廈", + "address": "香港島中西區永吉街9-17號永亨保險大廈" + }, + { + "building": "和興商業大廈", + "address": "香港島中西區永和街11-15號和興商業大廈" + }, + { + "building": "偉興商業大廈", + "address": "香港島中西區永和街17-19號偉興商業大廈" + }, + { + "building": "建宏樓", + "address": "香港島中西區永和街21號建宏樓" + }, + { + "building": "俊和商業中心", + "address": "香港島中西區永和街23-29號俊和商業中心" + }, + { + "building": "康而健大廈", + "address": "香港島中西區永和街31號康而健大廈" + }, + { + "building": "興泰商業大廈", + "address": "香港島中西區永樂街114號興泰商業大廈" + }, + { + "building": "有成大廈", + "address": "香港島中西區永樂街120-122號有成大廈" + }, + { + "building": "永達商業大廈", + "address": "香港島中西區永樂街121-125號永達商業大廈" + }, + { + "building": "永昇商業中心", + "address": "香港島中西區永樂街12-16號永昇商業中心" + }, + { + "building": "恒樂大廈", + "address": "香港島中西區永樂街128-130號恒樂大廈" + }, + { + "building": "富樂大樓", + "address": "香港島中西區永樂街131-133號富樂大樓" + }, + { + "building": "啟華樓", + "address": "香港島中西區永樂街135-137號啟華樓" + }, + { + "building": "恆發大廈", + "address": "香港島中西區永樂街138-140號恆發大廈" + }, + { + "building": "世瑛大廈", + "address": "香港島中西區永樂街1-3號世瑛大廈" + }, + { + "building": "南和行大廈", + "address": "香港島中西區永樂街148號南和行大廈" + }, + { + "building": "永樂大廈", + "address": "香港島中西區永樂街160-162號永樂大廈" + }, + { + "building": "豐樂商業大廈", + "address": "香港島中西區永樂街163號豐樂商業大廈" + }, + { + "building": "永輝大廈", + "address": "香港島中西區永樂街164-166號永輝大廈" + }, + { + "building": "榮成樓", + "address": "香港島中西區永樂街168-170號榮成樓" + }, + { + "building": "永富商業大廈", + "address": "香港島中西區永樂街172-176號永富商業大廈" + }, + { + "building": "?榮大廈", + "address": "香港島中西區永樂街180-182號?榮大廈" + }, + { + "building": "念慈樓", + "address": "香港島中西區永樂街18-20號念慈樓" + }, + { + "building": "昌隆大廈", + "address": "香港島中西區永樂街184-186號昌隆大廈" + }, + { + "building": "太景樓", + "address": "香港島中西區永樂街188-190號太景樓" + }, + { + "building": "萬順昌大廈", + "address": "香港島中西區永樂街199號萬順昌大廈" + }, + { + "building": "協基商業大廈", + "address": "香港島中西區永樂街205-211號協基商業大廈" + }, + { + "building": "和樂大廈", + "address": "香港島中西區永樂街219-221號和樂大廈" + }, + { + "building": "德彰大廈", + "address": "香港島中西區永樂街22-24號德彰大廈" + }, + { + "building": "亨隆大廈", + "address": "香港島中西區永樂街229-231號亨隆大廈" + }, + { + "building": "兆豐行大廈", + "address": "香港島中西區永樂街239-241號兆豐行大廈" + }, + { + "building": "耀坤樓", + "address": "香港島中西區永樂街26號耀坤樓" + }, + { + "building": "東成商業大廈", + "address": "香港島中西區永樂街34號東成商業大廈" + }, + { + "building": "開僑樓", + "address": "香港島中西區永樂街46號開僑樓" + }, + { + "building": "昌盛大廈", + "address": "香港島中西區永樂街50號昌盛大廈" + }, + { + "building": "永安祥大廈", + "address": "香港島中西區永樂街5號永安祥大廈" + }, + { + "building": "譚氏宏陽大廈", + "address": "香港島中西區永樂街63-65號譚氏宏陽大廈" + }, + { + "building": "富生行", + "address": "香港島中西區永樂街67-69號富生行" + }, + { + "building": "御珍閣", + "address": "香港島中西區永樂街68-70號御珍閣" + }, + { + "building": "萊德商業中心", + "address": "香港島中西區永樂街8-10號萊德商業中心" + }, + { + "building": "富昌大廈", + "address": "香港島中西區永樂街82-86號富昌大廈" + }, + { + "building": "泰達大廈", + "address": "香港島中西區永樂街87號泰達大廈" + }, + { + "building": "樹福商業大廈", + "address": "香港島中西區永樂街93-103號樹福商業大廈" + }, + { + "building": "金裕大廈", + "address": "香港島中西區甘雨街8號金裕大廈" + }, + { + "building": "摘星閣", + "address": "香港島中西區白加道" + }, + { + "building": "柏架別墅", + "address": "香港島中西區白加道41號柏架別墅" + }, + { + "building": "懷遠樓", + "address": "香港島中西區伊利近街12-14號懷遠樓" + }, + { + "building": "大利樓", + "address": "香港島中西區伊利近街15-19號大利樓" + }, + { + "building": "永利大廈", + "address": "香港島中西區伊利近街1-5號永利大廈" + }, + { + "building": "萬城閣", + "address": "香港島中西區伊利近街28號萬城閣" + }, + { + "building": "伊利樓", + "address": "香港島中西區伊利近街41-43號伊利樓" + }, + { + "building": "錦棠閣", + "address": "香港島中西區伊利近街47A號錦棠閣" + }, + { + "building": "伊利閣", + "address": "香港島中西區伊利近街51號伊利閣" + }, + { + "building": "碧翠園", + "address": "香港島中西區列堤頓道" + }, + { + "building": "文華大廈", + "address": "香港島中西區列堤頓道28-34號文華大廈" + }, + { + "building": "俊賢花園", + "address": "香港島中西區列堤頓道29號俊賢花園" + }, + { + "building": "嘉華大廈", + "address": "香港島中西區列堤頓道36-42號嘉華大廈" + }, + { + "building": "福華洋樓", + "address": "香港島中西區列堤頓道43-53號福華洋樓" + }, + { + "building": "嘉和苑", + "address": "香港島中西區列堤頓道52號嘉和苑" + }, + { + "building": "昌輝大樓", + "address": "香港島中西區吉席街17-21號昌輝大樓" + }, + { + "building": "順興大廈", + "address": "香港島中西區吉席街22-34號順興大廈" + }, + { + "building": "錦興大廈", + "address": "香港島中西區吉席街27-31號錦興大廈" + }, + { + "building": "卿旺大廈", + "address": "香港島中西區吉席街61號卿旺大廈" + }, + { + "building": "志豐樓", + "address": "香港島中西區吉席街62-64號志豐樓" + }, + { + "building": "嘉富大廈", + "address": "香港島中西區吉席街63號" + }, + { + "building": "嘉安大廈", + "address": "香港島中西區吉席街65號" + }, + { + "building": "吉利樓", + "address": "香港島中西區吉席街9-15號吉利樓" + }, + { + "building": "添利閣", + "address": "香港島中西區吉席街99號添利閣" + }, + { + "building": "世紀大廈一座", + "address": "香港島中西區地利根德里" + }, + { + "building": "騰皇居", + "address": "香港島中西區地利根德里10A號騰皇居" + }, + { + "building": "地利根德閣", + "address": "香港島中西區地利根德里14號地利根德閣" + }, + { + "building": "金銀商業大廈", + "address": "香港島中西區孖沙街12-18號金銀商業大廈" + }, + { + "building": "孖寶樓", + "address": "香港島中西區孖沙街15-17號孖寶樓" + }, + { + "building": "祝安商業中心", + "address": "香港島中西區孖沙街19-25號祝安商業中心" + }, + { + "building": "金滿大廈", + "address": "香港島中西區孖沙街8-10號金滿大廈" + }, + { + "building": "安樂樓", + "address": "香港島中西區安和里10-12號安樂樓" + }, + { + "building": "安慶大廈", + "address": "香港島中西區安慶臺1號安慶大廈" + }, + { + "building": "中安大廈", + "address": "香港島中西區安蘭街11-15號中安大廈" + }, + { + "building": "維記大廈", + "address": "香港島中西區安蘭街17-19號維記大廈" + }, + { + "building": "李龍華大廈", + "address": "香港島中西區安蘭街7號李龍華大廈" + }, + { + "building": "紀利大廈", + "address": "香港島中西區安蘭街8-10號紀利大廈" + }, + { + "building": "熙慶樓", + "address": "香港島中西區安蘭街9號熙慶樓" + }, + { + "building": "清暉大廈", + "address": "香港島中西區旭龢道10號清暉大廈" + }, + { + "building": "嘉賢大廈", + "address": "香港島中西區旭龢道12號嘉賢大廈" + }, + { + "building": "雅翠園A座", + "address": "香港島中西區旭龢道14-36號雅翠園A座" + }, + { + "building": "赫頓大廈", + "address": "香港島中西區旭龢道15號赫頓大廈" + }, + { + "building": "威都閣", + "address": "香港島中西區旭龢道3號威都閣" + }, + { + "building": "龍騰閣", + "address": "香港島中西區旭龢道5號龍騰閣" + }, + { + "building": "秀麗閣", + "address": "香港島中西區旭龢道8號秀麗閣" + }, + { + "building": "褔苑", + "address": "香港島中西區旭龢道9號褔苑" + }, + { + "building": "百子樓", + "address": "香港島中西區百子里1-2號百子樓" + }, + { + "building": "百祿徑15號", + "address": "香港島中西區百祿徑15號" + }, + { + "building": "百祿徑17號", + "address": "香港島中西區百祿徑17號" + }, + { + "building": "福祥閣", + "address": "香港島中西區西安里10號福祥閣" + }, + { + "building": "寶翠閣", + "address": "香港島中西區西祥街2號" + }, + { + "building": "宜發樓", + "address": "香港島中西區西街49-51號宜發樓" + }, + { + "building": "興發樓", + "address": "香港島中西區西源里24-26號興發樓" + }, + { + "building": "西寧閣", + "address": "香港島中西區西寧街35號西寧閣" + }, + { + "building": "福澤花園", + "address": "香港島中西區西摩道11號福澤花園" + }, + { + "building": "雅景大廈", + "address": "香港島中西區西摩道17-21號雅景大廈" + }, + { + "building": "輝煌臺", + "address": "香港島中西區西摩道1號輝煌臺" + }, + { + "building": "蔚然", + "address": "香港島中西區西摩道2A號蔚然" + }, + { + "building": "高雲臺", + "address": "香港島中西區西摩道2號高雲臺" + }, + { + "building": "瀚然", + "address": "香港島中西區西摩道33號瀚然" + }, + { + "building": "輝煌豪園", + "address": "香港島中西區西摩道3號輝煌豪園" + }, + { + "building": "寶玉閣", + "address": "香港島中西區西摩道49號寶玉閣" + }, + { + "building": "珒然", + "address": "香港島中西區西摩道63號珒然" + }, + { + "building": "輝永大廈", + "address": "香港島中西區西摩道6A-B號輝永大廈" + }, + { + "building": "香港花園C-D座", + "address": "香港島中西區西摩道8號香港花園C-D座" + }, + { + "building": "嘉寶園", + "address": "香港島中西區西摩臺2-3號嘉寶園" + }, + { + "building": "國松樓", + "address": "香港島中西區西邊街18-20號國松樓" + }, + { + "building": "永祥大廈", + "address": "香港島中西區西邊街19-29號永祥大廈" + }, + { + "building": "悅心大廈", + "address": "香港島中西區西邊街2-2E號悅心大廈" + }, + { + "building": "源發新樓", + "address": "香港島中西區西邊街22號源發新樓" + }, + { + "building": "明德山", + "address": "香港島中西區西邊街38號明德山" + }, + { + "building": "慧苑A座", + "address": "香港島中西區克頓道5號慧苑" + }, + { + "building": "通明大廈", + "address": "香港島中西區利源西街27-29號通明大廈" + }, + { + "building": "輝文大廈", + "address": "香港島中西區利源西街9-13號輝文大廈" + }, + { + "building": "寶華樓", + "address": "香港島中西區利源東街12-13號寶華樓" + }, + { + "building": "沃明樓", + "address": "香港島中西區利源東街5號沃明樓" + }, + { + "building": "利東大廈", + "address": "香港島中西區利源東街9號利東大廈" + }, + { + "building": "永盛大廈", + "address": "香港島中西區利源街西12-16號永盛大廈" + }, + { + "building": "同和樓", + "address": "香港島中西區利源街西23-25號同和樓" + }, + { + "building": "龍輝樓", + "address": "香港島中西區李寶龍路20-22號龍輝樓" + }, + { + "building": "展鴻閣", + "address": "香港島中西區李寶龍路26號展鴻閣" + }, + { + "building": "寶龍樓", + "address": "香港島中西區李寶龍路28-30號寶龍樓" + }, + { + "building": "寶華樓", + "address": "香港島中西區李寶龍路36-40號寶華樓" + }, + { + "building": "裕熙園", + "address": "香港島中西區貝璐道4號裕熙園" + }, + { + "building": "永安?", + "address": "香港島中西區貝璐道7號永安?A座" + }, + { + "building": "些利閣", + "address": "香港島中西區些利街19-21號些利閣" + }, + { + "building": "怡珍閣", + "address": "香港島中西區些利街23-25號怡珍閣" + }, + { + "building": "亞畢諾大廈", + "address": "香港島中西區亞畢諾道10-12號亞畢諾大廈" + }, + { + "building": "元明大廈", + "address": "香港島中西區亞畢諾道11號元明大廈" + }, + { + "building": "百麗花園", + "address": "香港島中西區亞畢諾道15號百麗花園" + }, + { + "building": "文華閣", + "address": "香港島中西區亞畢諾道16號文華閣" + }, + { + "building": "福蔭閣", + "address": "香港島中西區亞畢諾道18號福蔭閣" + }, + { + "building": "亞畢諾道2號", + "address": "香港島中西區亞畢諾道2號" + }, + { + "building": "應彪大廈", + "address": "香港島中西區卑利士道1-3號應彪大廈" + }, + { + "building": "發利樓", + "address": "香港島中西區卑利街62-64號發利樓" + }, + { + "building": "中興閣", + "address": "香港島中西區卑利街67號中興閣" + }, + { + "building": "金莉大廈", + "address": "香港島中西區卑利街80-82號金莉大廈" + }, + { + "building": "怡富閣", + "address": "香港島中西區卑利街88號怡富閣" + }, + { + "building": "高富大廈", + "address": "香港島中西區卑利街9號高富大廈" + }, + { + "building": "南山樓", + "address": "香港島中西區卑路乍街113-119號南山樓" + }, + { + "building": "聯康新樓", + "address": "香港島中西區卑路乍街116-122號聯康新樓" + }, + { + "building": "聯基新樓", + "address": "香港島中西區卑路乍街124-134號聯基新樓" + }, + { + "building": "金輝大廈", + "address": "香港島中西區卑路乍街125-129號金輝大廈" + }, + { + "building": "金堂大廈", + "address": "香港島中西區卑路乍街139-153號金堂大廈" + }, + { + "building": "金豪閣", + "address": "香港島中西區卑路乍街144-148號金豪閣" + }, + { + "building": "堅尼地大廈", + "address": "香港島中西區卑路乍街165-175號堅尼地大廈" + }, + { + "building": "如意大樓", + "address": "香港島中西區卑路乍街18A-20A號如意大樓" + }, + { + "building": "懋華大廈", + "address": "香港島中西區卑路乍街22-24A號懋華大廈" + }, + { + "building": "金寶閣", + "address": "香港島中西區卑路乍街28號金寶閣" + }, + { + "building": "萬發大樓", + "address": "香港島中西區卑路乍街30-30C號萬發大樓" + }, + { + "building": "翡翠閣", + "address": "香港島中西區卑路乍街35A號翡翠閣" + }, + { + "building": "天成工業大廈", + "address": "香港島中西區卑路乍街36-38號天成工業大廈" + }, + { + "building": "海傍大廈", + "address": "香港島中西區卑路乍街37號海傍大廈" + }, + { + "building": "大新閣", + "address": "香港島中西區卑路乍街3號大新閣" + }, + { + "building": "曉順閣", + "address": "香港島中西區卑路乍街40號曉順閣" + }, + { + "building": "寶雅山", + "address": "香港島中西區卑路乍街42-44號寶雅山" + }, + { + "building": "隆基大樓", + "address": "香港島中西區卑路乍街46A號隆基大樓" + }, + { + "building": "南雄大廈", + "address": "香港島中西區卑路乍街5-5H號南雄大廈" + }, + { + "building": "嘉明大廈", + "address": "香港島中西區卑路乍街56號嘉明大廈" + }, + { + "building": "利達樓", + "address": "香港島中西區卑路乍街57-61號利達樓" + }, + { + "building": "恒輝大廈", + "address": "香港島中西區卑路乍街67-83號恒輝大廈" + }, + { + "building": "海都樓", + "address": "香港島中西區卑路乍街7-11號海都樓" + }, + { + "building": "南生大廈", + "address": "香港島中西區卑路乍街86號南生大廈" + }, + { + "building": "世安樓", + "address": "香港島中西區卑路乍街93-95號世安樓" + }, + { + "building": "金陵閣", + "address": "香港島中西區和合街1-3號金陵閣" + }, + { + "building": "翠景閣", + "address": "香港島中西區和合街14-20號翠景閣" + }, + { + "building": "國基大廈", + "address": "香港島中西區和合街2-12號國基大廈" + }, + { + "building": "和安樓", + "address": "香港島中西區和安里8-13號和安樓" + }, + { + "building": "和福別墅", + "address": "香港島中西區和福道" + }, + { + "building": "居仁閣", + "address": "香港島中西區居仁里3號居仁閣" + }, + { + "building": "金陵大廈", + "address": "香港島中西區屈地街10-20號金陵大廈" + }, + { + "building": "屈地大廈", + "address": "香港島中西區屈地街22-44號屈地大廈" + }, + { + "building": "忠正街2-4號", + "address": "香港島中西區忠正街2-4號" + }, + { + "building": "昌生商業大廈", + "address": "香港島中西區東來里4-6號昌生商業大廈" + }, + { + "building": "太盛樓", + "address": "香港島中西區東街12-14號太盛樓" + }, + { + "building": "聯益大廈", + "address": "香港島中西區東街23-27號聯益大廈" + }, + { + "building": "東成樓", + "address": "香港島中西區東街28-30號東成樓" + }, + { + "building": "肆拾捌", + "address": "香港島中西區東街48號肆拾捌" + }, + { + "building": "華明樓", + "address": "香港島中西區東邊街2A-2B號華明樓" + }, + { + "building": "金石樓", + "address": "香港島中西區東邊街38-42號金石樓" + }, + { + "building": "廣發行大廈", + "address": "香港島中西區林士街1號廣發行大廈" + }, + { + "building": "芝古臺3號", + "address": "香港島中西區芝古臺3號" + }, + { + "building": "中銀大廈", + "address": "香港島中西區花園道1號中銀大廈" + }, + { + "building": "愛都大廈", + "address": "香港島中西區花園道55號愛都大廈" + }, + { + "building": "力寶中心", + "address": "香港島中西區金鐘道89號力寶中心" + }, + { + "building": "金鐘廊", + "address": "香港島中西區金鐘道93號金鐘廊" + }, + { + "building": "統一中心", + "address": "香港島中西區金鐘道95號統一中心" + }, + { + "building": "順成大廈", + "address": "香港島中西區長庚里1號順成大廈" + }, + { + "building": "青蓮閣", + "address": "香港島中西區青蓮臺4-6號青蓮閣" + }, + { + "building": "怡景苑", + "address": "香港島中西區青蓮臺7-8號怡景苑" + }, + { + "building": "樂寶大樓", + "address": "香港島中西區保德街2-4號樂寶大樓" + }, + { + "building": "昌寶大樓", + "address": "香港島中西區保德街29-31號昌寶大樓" + }, + { + "building": "榮基大廈", + "address": "香港島中西區保德街33-39號榮基大廈" + }, + { + "building": "保基大廈", + "address": "香港島中西區保德街6-20號保基大廈" + }, + { + "building": "仁愛苑", + "address": "香港島中西區保德街9-15號仁愛苑" + }, + { + "building": "南里壹號", + "address": "香港島中西區南里1號南里壹號" + }, + { + "building": "大德樓", + "address": "香港島中西區厚和街1-5號大德樓" + }, + { + "building": "順暉大廈", + "address": "香港島中西區厚和街19號順暉大廈" + }, + { + "building": "順昌大廈", + "address": "香港島中西區厚和街28號順昌大廈" + }, + { + "building": "持平大廈", + "address": "香港島中西區厚和街38號持平大廈" + }, + { + "building": "厚和樓", + "address": "香港島中西區厚和街39-45號厚和樓" + }, + { + "building": "滿發大廈", + "address": "香港島中西區厚和街6-18號滿發大廈" + }, + { + "building": "冠南樓", + "address": "香港島中西區城皇街12-14號冠南樓" + }, + { + "building": "冠南樓", + "address": "香港島中西區城皇街16-18號冠南樓" + }, + { + "building": "威利樓", + "address": "香港島中西區威利麻街2號威利樓" + }, + { + "building": "星輝大廈", + "address": "香港島中西區威利麻街8-12號星輝大廈" + }, + { + "building": "新威大廈", + "address": "香港島中西區威靈頓街112-114號新威大廈" + }, + { + "building": "DOTCOM HOUSE", + "address": "香港島中西區威靈頓街128號DOTCOM HOUSE" + }, + { + "building": "曾昭灝大廈", + "address": "香港島中西區威靈頓街160-164號曾昭灝大廈" + }, + { + "building": "香港工商大廈", + "address": "香港島中西區威靈頓街17-19號香港工商大廈" + }, + { + "building": "永威唐樓", + "address": "香港島中西區威靈頓街172號永威唐樓" + }, + { + "building": "元益大廈", + "address": "香港島中西區威靈頓街27-29號元益大廈" + }, + { + "building": "威靈頓廣場", + "address": "香港島中西區威靈頓街2-8號威靈頓廣場" + }, + { + "building": "鏞記大廈", + "address": "香港島中西區威靈頓街32-40號鏞記大廈" + }, + { + "building": "六基大廈", + "address": "香港島中西區威靈頓街39號六基大廈" + }, + { + "building": "新利大廈", + "address": "香港島中西區威靈頓街43-49號新利大廈" + }, + { + "building": "華威大廈", + "address": "香港島中西區威靈頓街50號華威大廈" + }, + { + "building": "威寧大廈", + "address": "香港島中西區威靈頓街56-58號威寧大廈" + }, + { + "building": "威安商業大廈", + "address": "香港島中西區威靈頓街60號威安商業大廈" + }, + { + "building": "威蘭樓", + "address": "香港島中西區威靈頓街62號威蘭樓" + }, + { + "building": "富麗樓", + "address": "香港島中西區威靈頓街63-69號富麗樓" + }, + { + "building": "裕榮大廈", + "address": "香港島中西區威靈頓街64-66號裕榮大廈" + }, + { + "building": "啟華大廈", + "address": "香港島中西區威靈頓街68號啟華大廈" + }, + { + "building": "明發大廈", + "address": "香港島中西區威靈頓街72-74號明發大廈" + }, + { + "building": "群英商業大廈", + "address": "香港島中西區威靈頓街85-89號群英商業大廈" + }, + { + "building": "通濟大廈", + "address": "香港島中西區威靈頓街86-90號通濟大廈" + }, + { + "building": "光源樓", + "address": "香港島中西區威靈頓街95號光源樓" + }, + { + "building": "YIN SERVICED APARTMENTS", + "address": "香港島中西區威靈頓街97A號YIN SERVICED APARTMENTS" + }, + { + "building": "威利大廈", + "address": "香港島中西區威靈頓街97號威利大廈" + }, + { + "building": "翡翠中心", + "address": "香港島中西區威靈頓街98號翡翠中心" + }, + { + "building": "威基商業中心", + "address": "香港島中西區威靈頓街99號威基商業中心" + }, + { + "building": "豪華大廈", + "address": "香港島中西區屋蘭士里10-16號豪華大廈A座" + }, + { + "building": "興華大廈A座", + "address": "香港島中西區屋蘭士里2號興華大廈A座" + }, + { + "building": "金豐大廈", + "address": "香港島中西區急庇利街8號金豐大廈" + }, + { + "building": "倚雲山莊", + "address": "香港島中西區施勳道4號倚雲山莊" + }, + { + "building": "倚巒", + "address": "香港島中西區施勳道8號倚巒" + }, + { + "building": "昭隆大廈", + "address": "香港島中西區昭隆街15-25號昭隆大廈" + }, + { + "building": "歐銀中心", + "address": "香港島中西區昭隆街9號歐銀中心" + }, + { + "building": "蔚庭軒", + "address": "香港島中西區柏道18號蔚庭軒" + }, + { + "building": "瑞祺大廈C-D座", + "address": "香港島中西區柏道2A號瑞祺大廈C-D座" + }, + { + "building": "寶威閣", + "address": "香港島中西區柏道4號寶威閣" + }, + { + "building": "豫苑", + "address": "香港島中西區柏道6號" + }, + { + "building": "山頂花園", + "address": "香港島中西區柯士甸山道16-20號山頂花園" + }, + { + "building": "豐林閣", + "address": "香港島中西區柯士甸山道24-26號豐林閣" + }, + { + "building": "岫雲", + "address": "香港島中西區柯士甸山道4號岫雲" + }, + { + "building": "活倫閣", + "address": "香港島中西區活倫臺1號活倫閣" + }, + { + "building": "嘉倫軒", + "address": "香港島中西區活倫臺4號嘉倫軒" + }, + { + "building": "聯盛大廈", + "address": "香港島中西區皇后大道中118-120號聯盛大廈" + }, + { + "building": "工銀大廈", + "address": "香港島中西區皇后大道中122-126號工銀大廈" + }, + { + "building": "顯光樓", + "address": "香港島中西區皇后大道中125號顯光樓" + }, + { + "building": "中財中心", + "address": "香港島中西區皇后大道中131-133號中財中心" + }, + { + "building": "威享大廈", + "address": "香港島中西區皇后大道中138號威享大廈" + }, + { + "building": "THE L.PLACE", + "address": "香港島中西區皇后大道中139號THE L.PLACE" + }, + { + "building": "金利商業大廈", + "address": "香港島中西區皇后大道中142-146號金利商業大廈" + }, + { + "building": "華源大廈", + "address": "香港島中西區皇后大道中145-149號華源大廈" + }, + { + "building": "鹿角大廈", + "address": "香港島中西區皇后大道中148號鹿角大廈" + }, + { + "building": "兆英商業大廈", + "address": "香港島中西區皇后大道中153號兆英商業大廈" + }, + { + "building": "公爵大廈", + "address": "香港島中西區皇后大道中15號公爵大廈" + }, + { + "building": "永亨銀行大廈", + "address": "香港島中西區皇后大道中161-169號永亨銀行大廈" + }, + { + "building": "新世界大廈", + "address": "香港島中西區皇后大道中16-18號新世界大廈" + }, + { + "building": "合源中心", + "address": "香港島中西區皇后大道中171號合源中心" + }, + { + "building": "錦安大廈", + "address": "香港島中西區皇后大道中176A-176F號錦安大廈" + }, + { + "building": "香港珠寶大廈", + "address": "香港島中西區皇后大道中178-180號香港珠寶大廈" + }, + { + "building": "新紀元廣場", + "address": "香港島中西區皇后大道中181號新紀元廣場" + }, + { + "building": "恒隆大廈", + "address": "香港島中西區皇后大道中184-192號恒隆大廈" + }, + { + "building": "啟豐大廈", + "address": "香港島中西區皇后大道中189-205號啟豐大廈" + }, + { + "building": "致富商業大廈", + "address": "香港島中西區皇后大道中198-200號致富商業大廈" + }, + { + "building": "?豐總行大廈", + "address": "香港島中西區皇后大道中1號?豐總行大廈" + }, + { + "building": "太平行", + "address": "香港島中西區皇后大道中20-20B號太平行" + }, + { + "building": "安業樓", + "address": "香港島中西區皇后大道中207-209號安業樓" + }, + { + "building": "勝基中心", + "address": "香港島中西區皇后大道中208號勝基中心" + }, + { + "building": "發得順大?", + "address": "香港島中西區皇后大道中213號發得順大?" + }, + { + "building": "恒盛樓", + "address": "香港島中西區皇后大道中219號恒盛樓" + }, + { + "building": "啟煌商業大廈", + "address": "香港島中西區皇后大道中222-226號啟煌商業大廈" + }, + { + "building": "廣記大廈", + "address": "香港島中西區皇后大道中229號廣記大廈" + }, + { + "building": "柏聯樓", + "address": "香港島中西區皇后大道中233-235號柏聯樓" + }, + { + "building": "太興中心", + "address": "香港島中西區皇后大道中237號" + }, + { + "building": "荷李活華庭", + "address": "香港島中西區皇后大道中268號荷李活華庭A座" + }, + { + "building": "中央大廈", + "address": "香港島中西區皇后大道中270-276號中央大廈" + }, + { + "building": "禧利大廈", + "address": "香港島中西區皇后大道中275號禧利大廈" + }, + { + "building": "永傑中心", + "address": "香港島中西區皇后大道中287-301號永傑中心" + }, + { + "building": "福禮大廈", + "address": "香港島中西區皇后大道中288-290號福禮大廈" + }, + { + "building": "中?大廈", + "address": "香港島中西區皇后大道中28號中?大廈" + }, + { + "building": "長江集團中心", + "address": "香港島中西區皇后大道中2號長江集團中心" + }, + { + "building": "北海商業大廈", + "address": "香港島中西區皇后大道中302號北海商業大廈" + }, + { + "building": "蔚林樓", + "address": "香港島中西區皇后大道中303號蔚林樓" + }, + { + "building": "永業中心", + "address": "香港島中西區皇后大道中305-313號永業中心" + }, + { + "building": "娛樂行", + "address": "香港島中西區皇后大道中30號娛樂行" + }, + { + "building": "陸海通大廈", + "address": "香港島中西區皇后大道中31-31A號陸海通大廈" + }, + { + "building": "利豐大廈", + "address": "香港島中西區皇后大道中315-319號利豐大廈" + }, + { + "building": "嘉寶大廈", + "address": "香港島中西區皇后大道中325-329號嘉寶大廈" + }, + { + "building": "中源中心A座", + "address": "香港島中西區皇后大道中328號中源中心A座" + }, + { + "building": "中源中心B座", + "address": "香港島中西區皇后大道中328號中源中心B座" + }, + { + "building": "登富商業大廈", + "address": "香港島中西區皇后大道中331-333號登富商業大廈" + }, + { + "building": "萬邦行", + "address": "香港島中西區皇后大道中33-33A號萬邦行" + }, + { + "building": "華秦國際大廈", + "address": "香港島中西區皇后大道中340號華秦國際大廈" + }, + { + "building": "金煌行", + "address": "香港島中西區皇后大道中346-348號金煌行" + }, + { + "building": "偉利大廈", + "address": "香港島中西區皇后大道中368號偉利大廈" + }, + { + "building": "興瑋大廈", + "address": "香港島中西區皇后大道中36號興瑋大廈" + }, + { + "building": "福陞閣", + "address": "香港島中西區皇后大道中378號福陞閣" + }, + { + "building": "余道生行", + "address": "香港島中西區皇后大道中37號余道生行" + }, + { + "building": "豐盛創建大廈", + "address": "香港島中西區皇后大道中39號豐盛創建大廈" + }, + { + "building": "聯成大廈", + "address": "香港島中西區皇后大道中41-47號聯成大廈" + }, + { + "building": "萬年大廈", + "address": "香港島中西區皇后大道中48號萬年大廈" + }, + { + "building": "金銘樓", + "address": "香港島中西區皇后大道中49-51號金銘樓" + }, + { + "building": "陸佑行", + "address": "香港島中西區皇后大道中50-52號陸佑行" + }, + { + "building": "永昌樓", + "address": "香港島中西區皇后大道中53號永昌樓" + }, + { + "building": "利達商業大廈", + "address": "香港島中西區皇后大道中57號利達商業大廈" + }, + { + "building": "泛海大廈", + "address": "香港島中西區皇后大道中59-65號泛海大廈" + }, + { + "building": "衡怡大廈", + "address": "香港島中西區皇后大道中5號衡怡大廈" + }, + { + "building": "卡佛大廈", + "address": "香港島中西區皇后大道中70號卡佛大廈" + }, + { + "building": "百佳大廈", + "address": "香港島中西區皇后大道中72號百佳大廈" + }, + { + "building": "中旅大廈", + "address": "香港島中西區皇后大道中77號中旅大廈" + }, + { + "building": "萬興大廈", + "address": "香港島中西區皇后大道中79-83號萬興大廈" + }, + { + "building": "勵精中心", + "address": "香港島中西區皇后大道中88號勵精中心" + }, + { + "building": "中環中心", + "address": "香港島中西區皇后大道中99號中環中心" + }, + { + "building": "嘉軒廣場", + "address": "香港島中西區皇后大道中9號嘉軒廣場" + }, + { + "building": "西營盤渣打銀行大廈", + "address": "香港島中西區皇后大道西102-106號西營盤渣打銀行大廈" + }, + { + "building": "華富商業大廈", + "address": "香港島中西區皇后大道西111號華富商業大廈" + }, + { + "building": "僑發大廈", + "address": "香港島中西區皇后大道西115-119號僑發大廈" + }, + { + "building": "家樂花園", + "address": "香港島中西區皇后大道西128號家樂花園" + }, + { + "building": "富大樓", + "address": "香港島中西區皇后大道西138-140號富大樓" + }, + { + "building": "永祥大樓", + "address": "香港島中西區皇后大道西141-151號永祥大樓" + }, + { + "building": "天和樓", + "address": "香港島中西區皇后大道西146-148號天和樓" + }, + { + "building": "和富樓", + "address": "香港島中西區皇后大道西159-161號和富樓" + }, + { + "building": "南北行大廈", + "address": "香港島中西區皇后大道西17-19號南北行大廈" + }, + { + "building": "建興樓", + "address": "香港島中西區皇后大道西172-180號建興樓" + }, + { + "building": "達興樓", + "address": "香港島中西區皇后大道西182-186號達興樓" + }, + { + "building": "西浦", + "address": "香港島中西區皇后大道西189號西浦" + }, + { + "building": "仲成大廈", + "address": "香港島中西區皇后大道西196-198號仲成大廈" + }, + { + "building": "聯發商業中心", + "address": "香港島中西區皇后大道西2-12號聯發商業中心" + }, + { + "building": "富國大廈", + "address": "香港島中西區皇后大道西213-217號富國大廈" + }, + { + "building": "顏如樓", + "address": "香港島中西區皇后大道西219-223號顏如樓" + }, + { + "building": "好時大廈", + "address": "香港島中西區皇后大道西230-236號好時大廈" + }, + { + "building": "年興樓", + "address": "香港島中西區皇后大道西233號年興樓" + }, + { + "building": "和益大廈", + "address": "香港島中西區皇后大道西263號和益大廈" + }, + { + "building": "得利大廈", + "address": "香港島中西區皇后大道西270-280號得利大廈" + }, + { + "building": "豐景閣", + "address": "香港島中西區皇后大道西282號豐景閣" + }, + { + "building": "八達大廈", + "address": "香港島中西區皇后大道西292-298號八達大廈" + }, + { + "building": "安達中心", + "address": "香港島中西區皇后大道西311-325號安達中心" + }, + { + "building": "僑成大樓", + "address": "香港島中西區皇后大道西327-333號僑成大樓" + }, + { + "building": "新昇大廈", + "address": "香港島中西區皇后大道西330-336號新昇大廈" + }, + { + "building": "崑保商業大廈", + "address": "香港島中西區皇后大道西335-339號崑保商業大廈" + }, + { + "building": "惠苑", + "address": "香港島中西區皇后大道西341-343號惠苑" + }, + { + "building": "啟成大廈", + "address": "香港島中西區皇后大道西351-353號啟成大廈" + }, + { + "building": "永成樓", + "address": "香港島中西區皇后大道西355-359號永成樓" + }, + { + "building": "俊庭居", + "address": "香港島中西區皇后大道西356號俊庭居" + }, + { + "building": "樂信大廈", + "address": "香港島中西區皇后大道西371-379號樂信大廈" + }, + { + "building": "三多大樓", + "address": "香港島中西區皇后大道西384-386號三多大樓" + }, + { + "building": "富滿大廈", + "address": "香港島中西區皇后大道西398-400號富滿大廈" + }, + { + "building": "利時大廈", + "address": "香港島中西區皇后大道西399-401號利時大廈" + }, + { + "building": "宏立閣", + "address": "香港島中西區皇后大道西403-405號宏立閣" + }, + { + "building": "怡景花園第一座", + "address": "香港島中西區皇后大道西409-419號怡景花園第一座" + }, + { + "building": "樂怡軒", + "address": "香港島中西區皇后大道西411號樂怡軒" + }, + { + "building": "東蔚苑", + "address": "香港島中西區皇后大道西419G號東蔚苑" + }, + { + "building": "雅蘭閣", + "address": "香港島中西區皇后大道西419R-419T號雅蘭閣" + }, + { + "building": "冠華大廈", + "address": "香港島中西區皇后大道西420-424號冠華大廈" + }, + { + "building": "華明中心B座", + "address": "香港島中西區皇后大道西421號華明中心B座" + }, + { + "building": "賴恩樓", + "address": "香港島中西區皇后大道西42-56號賴恩樓" + }, + { + "building": "永華大廈", + "address": "香港島中西區皇后大道西425G-425Z號永華大廈" + }, + { + "building": "真善美大廈", + "address": "香港島中西區皇后大道西428-440號真善美大廈" + }, + { + "building": "恒隆銀行西區分行大廈", + "address": "香港島中西區皇后大道西441號恒隆銀行西區分行大廈" + }, + { + "building": "龍暉花園", + "address": "香港島中西區皇后大道西455-485號龍暉花園" + }, + { + "building": "永興樓", + "address": "香港島中西區皇后大道西476-482號永興樓" + }, + { + "building": "新安大樓", + "address": "香港島中西區皇后大道西484-496號新安大樓" + }, + { + "building": "美城大廈", + "address": "香港島中西區皇后大道西501-511號美城大廈" + }, + { + "building": "尼斯花園", + "address": "香港島中西區皇后大道西513號尼斯花園" + }, + { + "building": "聯華大廈", + "address": "香港島中西區皇后大道西518-520號聯華大廈" + }, + { + "building": "和發大廈", + "address": "香港島中西區皇后大道西533-543號和發大廈" + }, + { + "building": "寶德大廈", + "address": "香港島中西區皇后大道西540-546號寶德大廈" + }, + { + "building": "百好大樓", + "address": "香港島中西區皇后大道西554-560號百好大樓" + }, + { + "building": "厚福大樓", + "address": "香港島中西區皇后大道西562-570號厚福大樓" + }, + { + "building": "高良大廈", + "address": "香港島中西區皇后大道西572-574號高良大廈" + }, + { + "building": "新景樓", + "address": "香港島中西區皇后大道西576-584號新景樓" + }, + { + "building": "大皇商業大廈", + "address": "香港島中西區皇后大道西5-7號大皇商業大廈" + }, + { + "building": "安樂大樓", + "address": "香港島中西區皇后大道西586-588號安樂大樓" + }, + { + "building": "兆宜大廈", + "address": "香港島中西區皇后大道西590-596A號兆宜大廈" + }, + { + "building": "漢邦新樓", + "address": "香港島中西區皇后大道西598-600號漢邦新樓" + }, + { + "building": "三匯大廈", + "address": "香港島中西區皇后大道西608-616號三匯大廈" + }, + { + "building": "荷李活中心", + "address": "香港島中西區皇后大道西77-91號荷李活中心" + }, + { + "building": "東慶閣", + "address": "香港島中西區皇后大道西88號東慶閣" + }, + { + "building": "帝后華庭第二座", + "address": "香港島中西區皇后街1號帝后華庭第二座" + }, + { + "building": "東昌大廈", + "address": "香港島中西區紅棉路8號東昌大廈" + }, + { + "building": "鴻昌樓", + "address": "香港島中西區美輪街7號鴻昌樓" + }, + { + "building": "英華閣", + "address": "香港島中西區英華臺12號英華閣" + }, + { + "building": "華輝閣", + "address": "香港島中西區英華臺1-6號華輝閣" + }, + { + "building": "英輝閣", + "address": "香港島中西區英輝臺1號英輝閣" + }, + { + "building": "蔚晴軒", + "address": "香港島中西區英輝臺2-3號蔚晴軒" + }, + { + "building": "和記大廈", + "address": "香港島中西區夏愨道10號和記大廈" + }, + { + "building": "美國銀行中心", + "address": "香港島中西區夏愨道12號美國銀行中心" + }, + { + "building": "遠東金融中心", + "address": "香港島中西區夏愨道16號遠東金融中心" + }, + { + "building": "海富中心", + "address": "香港島中西區夏愨道18號海富中心" + }, + { + "building": "尚雅苑", + "address": "香港島中西區差館上街8號尚雅苑" + }, + { + "building": "麗華樓", + "address": "香港島中西區桂香街12-16號麗華樓" + }, + { + "building": "永利大廈", + "address": "香港島中西區桂香街18-24號永利大廈" + }, + { + "building": "昌桂樓", + "address": "香港島中西區桂香街2-4號昌桂樓" + }, + { + "building": "永桂樓", + "address": "香港島中西區桂香街6-8號永桂樓" + }, + { + "building": "桃李園", + "address": "香港島中西區桃李臺15-19號桃李園" + }, + { + "building": "浚?", + "address": "香港島中西區爹核士街11號浚?" + }, + { + "building": "裕福大廈", + "address": "香港島中西區爹核士街1號裕福大廈" + }, + { + "building": "永勝大廈", + "address": "香港島中西區爹核士街24-26A號永勝大廈" + }, + { + "building": "致生大廈", + "address": "香港島中西區砵典乍街10號致生大廈" + }, + { + "building": "富永樓", + "address": "香港島中西區砵典乍街18-20號富永樓" + }, + { + "building": "寶城大廈", + "address": "香港島中西區砵典乍街24-26號寶城大廈" + }, + { + "building": "金明行", + "address": "香港島中西區砵典乍街28-30號金明行" + }, + { + "building": "華興大廈", + "address": "香港島中西區砵典乍街33-35號華興大廈" + }, + { + "building": "立輝大廈", + "address": "香港島中西區砵典乍街6-8號立輝大廈" + }, + { + "building": "喜訊大廈", + "address": "香港島中西區租庇利街1-3號喜訊大廈" + }, + { + "building": "順聯大廈", + "address": "香港島中西區租庇利街17-19號順聯大廈" + }, + { + "building": "富興大廈", + "address": "香港島中西區租庇利街9-11號富興大廈" + }, + { + "building": "金寧大廈", + "address": "香港島中西區般咸道13-15號金寧大廈" + }, + { + "building": "嘉富大廈", + "address": "香港島中西區般咸道19-27號嘉富大廈" + }, + { + "building": "嘉威花園", + "address": "香港島中西區般咸道1號嘉威花園" + }, + { + "building": "百合苑", + "address": "香港島中西區般咸道20-22號百合苑" + }, + { + "building": "般含臺", + "address": "香港島中西區般咸道24-26號般含臺" + }, + { + "building": "崇華大廈", + "address": "香港島中西區般咸道28-30號崇華大廈" + }, + { + "building": "新聯大廈", + "address": "香港島中西區般咸道29-31號新聯大廈" + }, + { + "building": "穎章大廈", + "address": "香港島中西區般咸道37-47號穎章大廈" + }, + { + "building": "般含軒", + "address": "香港島中西區般咸道38C號般含軒" + }, + { + "building": "清風大廈", + "address": "香港島中西區般咸道38D-38F號清風大廈" + }, + { + "building": "麗怡大廈", + "address": "香港島中西區般咸道38號麗怡大廈" + }, + { + "building": "慶英大廈", + "address": "香港島中西區般咸道40-42號慶英大廈" + }, + { + "building": "錦翠園", + "address": "香港島中西區般咸道46A-50號錦翠園" + }, + { + "building": "好景洋樓", + "address": "香港島中西區般咸道51-53號好景洋樓" + }, + { + "building": "寶恒閣", + "address": "香港島中西區般咸道52號" + }, + { + "building": "般柏苑", + "address": "香港島中西區般咸道54號般柏苑" + }, + { + "building": "南寧大廈", + "address": "香港島中西區般咸道58-60號南寧大廈" + }, + { + "building": "金風大廈", + "address": "香港島中西區般咸道59-61號金風大廈" + }, + { + "building": "般景台", + "address": "香港島中西區般咸道5號般景台" + }, + { + "building": "怡基閣", + "address": "香港島中西區般咸道62號怡基閣" + }, + { + "building": "興漢大廈", + "address": "香港島中西區般咸道63B-65F號興漢大廈" + }, + { + "building": "學林雅軒", + "address": "香港島中西區般咸道63G號學林雅軒" + }, + { + "building": "釆文軒", + "address": "香港島中西區般咸道63號釆文軒" + }, + { + "building": "嘉麗苑", + "address": "香港島中西區般咸道64號嘉麗苑" + }, + { + "building": "濂溪別業", + "address": "香港島中西區般咸道65A-65B號濂溪別業" + }, + { + "building": "寧養台寧養臺", + "address": "香港島中西區般咸道78A-78B號寧養台寧養臺" + }, + { + "building": "金帝軒", + "address": "香港島中西區般咸道7-9號金帝軒" + }, + { + "building": "禮賢閣B座", + "address": "香港島中西區般咸道80-82號禮賢閣" + }, + { + "building": "禮賢樓", + "address": "香港島中西區般咸道84號禮賢樓" + }, + { + "building": "利安大廈", + "address": "香港島中西區荔安里11-13號利安大廈" + }, + { + "building": "利安大廈", + "address": "香港島中西區荔安里7-9號利安大廈" + }, + { + "building": "港景別墅", + "address": "香港島中西區馬己仙峽道11號港景別墅" + }, + { + "building": "嘉慧園", + "address": "香港島中西區馬己仙峽道1-3A號嘉慧園" + }, + { + "building": "馬己仙大廈", + "address": "香港島中西區馬己仙峽道17號" + }, + { + "building": "重德大廈", + "address": "香港島中西區馬己仙峽道2號重德大廈" + }, + { + "building": "澄碧閣", + "address": "香港島中西區馬己仙峽道5-7號澄碧閣" + }, + { + "building": "玫瑰別墅", + "address": "香港島中西區馬己仙峽道9號玫瑰別墅" + }, + { + "building": "恆昌泰大廈", + "address": "香港島中西區高陞街21-23號恆昌泰大廈" + }, + { + "building": "合隆大廈", + "address": "香港島中西區高陞街25-29號合隆大廈" + }, + { + "building": "恒利商業大廈", + "address": "香港島中西區高陞街34-36號恒利商業大廈" + }, + { + "building": "泰發大廈", + "address": "香港島中西區高陞街37號泰發大廈" + }, + { + "building": "高陞大廈", + "address": "香港島中西區高陞街48-66號高陞大廈" + }, + { + "building": "俊陞華庭", + "address": "香港島中西區高陞街80號俊陞華庭" + }, + { + "building": "高街", + "address": "香港島中西區高街" + }, + { + "building": "瑞華閣", + "address": "香港島中西區高街100號瑞華閣" + }, + { + "building": "OVOLO", + "address": "香港島中西區高街111號OVOLO" + }, + { + "building": "高雋閣", + "address": "香港島中西區高街11號高雋閣" + }, + { + "building": "翠樺樓", + "address": "香港島中西區高街120-122號翠樺樓" + }, + { + "building": "紹德樓", + "address": "香港島中西區高街124-126號紹德樓" + }, + { + "building": "金高大廈", + "address": "香港島中西區高街19A-19B號金高大廈" + }, + { + "building": "匯賢居", + "address": "香港島中西區高街1號匯賢居." + }, + { + "building": "昌景閣", + "address": "香港島中西區高街26-38號昌景閣" + }, + { + "building": "金輪大廈", + "address": "香港島中西區高街39-41號金輪大廈" + }, + { + "building": "誠積樓", + "address": "香港島中西區高街43-45號誠積樓" + }, + { + "building": "恒陞大樓", + "address": "香港島中西區高街48-78號恒陞大樓" + }, + { + "building": "富裕大廈", + "address": "香港島中西區高街53-65號富裕大廈" + }, + { + "building": "賢德大廈", + "address": "香港島中西區高街69-73號賢德大廈" + }, + { + "building": "翠華閣", + "address": "香港島中西區高街8號翠華閣" + }, + { + "building": "崇恩閣", + "address": "香港島中西區高街95A-95B號崇恩閣" + }, + { + "building": "高雅閣", + "address": "香港島中西區高街9號高雅閣" + }, + { + "building": "源記國際大廈", + "address": "香港島中西區域多利皇后街3號源記國際大廈" + }, + { + "building": "利隆大廈", + "address": "香港島中西區域多利皇后街4號利隆大廈" + }, + { + "building": "鴻基大廈", + "address": "香港島中西區域多利皇后街5-8號鴻基大廈" + }, + { + "building": "中商大廈", + "address": "香港島中西區域多利皇后街9-10號中商大廈" + }, + { + "building": "耀基工廠大廈", + "address": "香港島中西區域多利道62號耀基工廠大廈" + }, + { + "building": "亨富閣", + "address": "香港島中西區域多利道70號亨富閣" + }, + { + "building": "麗景大廈", + "address": "香港島中西區域多利道80號麗景大廈" + }, + { + "building": "百年大樓", + "address": "香港島中西區域多利道9-15號" + }, + { + "building": "益豐花園B座", + "address": "香港島中西區堅尼地城海旁20號益豐花園B座" + }, + { + "building": "城暉大廈", + "address": "香港島中西區堅尼地城海傍27號城暉大廈" + }, + { + "building": "堅城中心A座", + "address": "香港島中西區堅尼地城海傍38號堅城中心A座" + }, + { + "building": "堅城中心B座", + "address": "香港島中西區堅尼地城海傍38號堅城中心B座" + }, + { + "building": "南海大廈", + "address": "香港島中西區堅尼地城海傍46-47號南海大廈" + }, + { + "building": "華寶大廈", + "address": "香港島中西區堅尼地城新海旁1-1A號華寶大廈" + }, + { + "building": "泓都", + "address": "香港島中西區堅尼地城新海傍38號泓都" + }, + { + "building": "燦如閣", + "address": "香港島中西區堅尼地道22-24號燦如閣" + }, + { + "building": "甘苑", + "address": "香港島中西區堅尼地道32號甘苑" + }, + { + "building": "時和大廈A座", + "address": "香港島中西區堅尼地道34號時和大廈A座" + }, + { + "building": "帝景閣", + "address": "香港島中西區堅尼地道3號帝景閣" + }, + { + "building": "君珀", + "address": "香港島中西區堅尼地道4號君珀" + }, + { + "building": "御花園第1座", + "address": "香港島中西區堅尼地道9A號御花園第1座" + }, + { + "building": "御花園第2座", + "address": "香港島中西區堅尼地道9A號御花園第2座" + }, + { + "building": "殷然", + "address": "香港島中西區堅道100號殷然" + }, + { + "building": "翠苑", + "address": "香港島中西區堅道107-109號翠苑" + }, + { + "building": "寶華軒", + "address": "香港島中西區堅道117號寶華軒" + }, + { + "building": "金堅大廈", + "address": "香港島中西區堅道119-125號金堅大廈" + }, + { + "building": "海雅閣", + "address": "香港島中西區堅道120號海雅閣" + }, + { + "building": "泰豐大廈", + "address": "香港島中西區堅道124號泰豐大廈" + }, + { + "building": "萬翠花園", + "address": "香港島中西區堅道126號萬翠花園" + }, + { + "building": "延齡樓", + "address": "香港島中西區堅道127號延齡樓" + }, + { + "building": "堅威大廈", + "address": "香港島中西區堅道128-132號堅威大廈" + }, + { + "building": "大成大廈", + "address": "香港島中西區堅道129-133號大成大廈" + }, + { + "building": "金谷大廈", + "address": "香港島中西區堅道135-137號金谷大廈" + }, + { + "building": "堅苑", + "address": "香港島中西區堅道139號堅苑" + }, + { + "building": "嘉年華閣", + "address": "香港島中西區堅道141-145號嘉年華閣" + }, + { + "building": "康和大廈", + "address": "香港島中西區堅道15號康和大廈" + }, + { + "building": "雅苑", + "address": "香港島中西區堅道21-23號雅苑" + }, + { + "building": "廣堅大廈", + "address": "香港島中西區堅道22-22A號廣堅大廈" + }, + { + "building": "長庚大廈", + "address": "香港島中西區堅道24-24A號長庚大廈" + }, + { + "building": "恒龍閣", + "address": "香港島中西區堅道28號恒龍閣" + }, + { + "building": "奮興大廈", + "address": "香港島中西區堅道29-31號奮興大廈" + }, + { + "building": "利堅大廈", + "address": "香港島中西區堅道33-37A號利堅大廈" + }, + { + "building": "瑧環", + "address": "香港島中西區堅道38號瑧環" + }, + { + "building": "寶苑大廈", + "address": "香港島中西區堅道39-41號寶苑大廈" + }, + { + "building": "添寶閣", + "address": "香港島中西區堅道43-45號添寶閣" + }, + { + "building": "御景臺", + "address": "香港島中西區堅道46號御景臺" + }, + { + "building": "浩堅大廈", + "address": "香港島中西區堅道49號浩堅大廈" + }, + { + "building": "昌雅閣", + "address": "香港島中西區堅道57號昌雅閣" + }, + { + "building": "美蘭閣", + "address": "香港島中西區堅道58-62號美蘭閣" + }, + { + "building": "浩誠樓", + "address": "香港島中西區堅道59號浩誠樓" + }, + { + "building": "寶林閣", + "address": "香港島中西區堅道5A-5B號寶林閣" + }, + { + "building": "宜昌樓", + "address": "香港島中西區堅道61號宜昌樓" + }, + { + "building": "慧源閣", + "address": "香港島中西區堅道63-69號慧源閣" + }, + { + "building": "金庭居", + "address": "香港島中西區堅道66號金庭居" + }, + { + "building": "愛迪樓", + "address": "香港島中西區堅道71號愛迪樓" + }, + { + "building": "翰庭軒", + "address": "香港島中西區堅道75號翰庭軒" + }, + { + "building": "堅都大廈", + "address": "香港島中西區堅道80-88號堅都大廈" + }, + { + "building": "嘉景臺", + "address": "香港島中西區堅道93號嘉景臺" + }, + { + "building": "曉輝大廈", + "address": "香港島中西區堅彌地城海旁12號曉輝大廈" + }, + { + "building": "龍翔花園", + "address": "香港島中西區堅彌地城海旁26號龍翔花園" + }, + { + "building": "明珠閣", + "address": "香港島中西區堅彌地城海旁28號明珠閣" + }, + { + "building": "澤安閣", + "address": "香港島中西區堅彌地城海旁6-8號澤安閣" + }, + { + "building": "同發大樓", + "address": "香港島中西區堅彌地城新海旁1B-1C號同發大樓" + }, + { + "building": "高逸華軒", + "address": "香港島中西區堅彌地城新海旁28號高逸華軒" + }, + { + "building": "崇慶樓", + "address": "香港島中西區崇慶里2A號崇慶樓" + }, + { + "building": "慶邦大樓", + "address": "香港島中西區崇慶里3號慶邦大樓" + }, + { + "building": "崇慶樓", + "address": "香港島中西區崇慶里4號崇慶樓" + }, + { + "building": "交易廣場", + "address": "香港島中西區康樂廣場8號交易廣場" + }, + { + "building": "新發樓", + "address": "香港島中西區梁輝臺4號新發樓" + }, + { + "building": "德苑", + "address": "香港島中西區梁輝臺5號德苑" + }, + { + "building": "嘉富麗苑", + "address": "香港島中西區梅道10-12號嘉富麗苑" + }, + { + "building": "蔚皇居", + "address": "香港島中西區梅道11號蔚皇居" + }, + { + "building": "梅苑", + "address": "香港島中西區梅道7號梅苑" + }, + { + "building": "中信大廈", + "address": "香港島中西區添美道1號中信大廈" + }, + { + "building": "告羅士打大廈", + "address": "香港島中西區畢打街11號告羅士打大廈" + }, + { + "building": "畢打行", + "address": "香港島中西區畢打街12-12A號畢打行" + }, + { + "building": "中建大廈", + "address": "香港島中西區畢打街1-3號中建大廈" + }, + { + "building": "會德豐大廈", + "address": "香港島中西區畢打街20號會德豐大廈" + }, + { + "building": "金輝樓", + "address": "香港島中西區畢街11-13號金輝樓" + }, + { + "building": "順泰大廈", + "address": "香港島中西區第一街121-131號順泰大廈" + }, + { + "building": "太益樓", + "address": "香港島中西區第一街27-29號太益樓" + }, + { + "building": "興業大廈", + "address": "香港島中西區第一街5-23號興業大廈" + }, + { + "building": "嘉盛閣", + "address": "香港島中西區第一街55-61號嘉盛閣" + }, + { + "building": "俊景閣", + "address": "香港島中西區第一街83號俊景閣" + }, + { + "building": "縉城峰", + "address": "香港島中西區第一街8號" + }, + { + "building": "永豐樓", + "address": "香港島中西區第二街107-117號永豐樓" + }, + { + "building": "金殿閣", + "address": "香港島中西區第二街10號金殿閣" + }, + { + "building": "東祥大廈", + "address": "香港島中西區第二街1-11號東祥大廈" + }, + { + "building": "仁福大廈", + "address": "香港島中西區第二街120-126號仁福大廈" + }, + { + "building": "海昇大廈第二座", + "address": "香港島中西區第二街128號海昇大廈第二座" + }, + { + "building": "海昇大廈第1期", + "address": "香港島中西區第二街143號海昇大廈第1期" + }, + { + "building": "宜順大廈", + "address": "香港島中西區第二街58-66號宜順大廈" + }, + { + "building": "裕新大廈", + "address": "香港島中西區第二街68-80號裕新大廈" + }, + { + "building": "德明樓", + "address": "香港島中西區第二街6-8號德明樓" + }, + { + "building": "西園", + "address": "香港島中西區第二街83號西園" + }, + { + "building": "真光大廈", + "address": "香港島中西區第三街100-106號真光大廈" + }, + { + "building": "怡豐閣", + "address": "香港島中西區第三街101號怡豐閣" + }, + { + "building": "豐盛大廈", + "address": "香港島中西區第三街129-133號豐盛大廈" + }, + { + "building": "麗景閣", + "address": "香港島中西區第三街138號麗景閣" + }, + { + "building": "仁信大廈", + "address": "香港島中西區第三街142-150號仁信大廈" + }, + { + "building": "華達閣", + "address": "香港島中西區第三街152-158號華達閣" + }, + { + "building": "觀海閣", + "address": "香港島中西區第三街162-166號觀海閣" + }, + { + "building": "廣豐台", + "address": "香港島中西區第三街163號廣豐台" + }, + { + "building": "榮昇閣", + "address": "香港島中西區第三街178-180號榮昇閣" + }, + { + "building": "豐裕大廈", + "address": "香港島中西區第三街182-190號豐裕大廈" + }, + { + "building": "福安樓", + "address": "香港島中西區第三街192號福安樓" + }, + { + "building": "毓明閣", + "address": "香港島中西區第三街208號毓明閣" + }, + { + "building": "榮華大廈", + "address": "香港島中西區第三街29-33號榮華大廈" + }, + { + "building": "豐逸大廈", + "address": "香港島中西區第三街38-40號豐逸大廈" + }, + { + "building": "東南大廈", + "address": "香港島中西區第三街43-47號東南大廈" + }, + { + "building": "超格居庭", + "address": "香港島中西區第三街46-48號超格居庭" + }, + { + "building": "康福閣", + "address": "香港島中西區第三街52-54號康福閣" + }, + { + "building": "福滿大廈", + "address": "香港島中西區第三街56-72號福滿大廈" + }, + { + "building": "滕王閣", + "address": "香港島中西區第三街63號滕王閣" + }, + { + "building": "興華樓", + "address": "香港島中西區第三街69-73號興華樓" + }, + { + "building": "康和花園", + "address": "香港島中西區第三街83號康和花園" + }, + { + "building": "星鑽", + "address": "香港島中西區第三街88號星鑽" + }, + { + "building": "利基閣", + "address": "香港島中西區第三街9-11號利基閣" + }, + { + "building": "華懋荷李活中心", + "address": "香港島中西區荷李活道1-13號華懋荷李活中心" + }, + { + "building": "大興樓", + "address": "香港島中西區荷李活道132-134號大興樓" + }, + { + "building": "歐士大廈", + "address": "香港島中西區荷李活道15-19號歐士大廈" + }, + { + "building": "啟發大廈", + "address": "香港島中西區荷李活道160-168號啟發大廈" + }, + { + "building": "利華大廈", + "address": "香港島中西區荷李活道171-177號利華大廈" + }, + { + "building": "太基樓", + "address": "香港島中西區荷李活道174-174B號太基樓" + }, + { + "building": "太明樓", + "address": "香港島中西區荷李活道180-182號太明樓" + }, + { + "building": "華冠大廈", + "address": "香港島中西區荷李活道181-199號華冠大廈" + }, + { + "building": "荷李活大樓", + "address": "香港島中西區荷李活道186-190號荷李活大樓" + }, + { + "building": "祺安大廈", + "address": "香港島中西區荷李活道198-202號祺安大廈" + }, + { + "building": "大興樓", + "address": "香港島中西區荷李活道205A-205C號大興樓" + }, + { + "building": "太平大廈", + "address": "香港島中西區荷李活道208號太平大廈" + }, + { + "building": "古今閣", + "address": "香港島中西區荷李活道209-223號古今閣" + }, + { + "building": "荷李活商業中心", + "address": "香港島中西區荷李活道233號荷李活商業中心" + }, + { + "building": "金珀苑", + "address": "香港島中西區荷李活道23號金珀苑" + }, + { + "building": "興隆樓", + "address": "香港島中西區荷李活道248號興隆樓" + }, + { + "building": "永寧大廈", + "address": "香港島中西區荷李活道26-28號" + }, + { + "building": "高陞大樓", + "address": "香港島中西區荷李活道265-267號高陞大樓" + }, + { + "building": "活麟大廈", + "address": "香港島中西區荷李活道27-29號活麟大廈" + }, + { + "building": "建業榮基中心", + "address": "香港島中西區荷李活道32號建業榮基中心" + }, + { + "building": "永安樓", + "address": "香港島中西區荷李活道38-40號永安樓" + }, + { + "building": "安樂樓", + "address": "香港島中西區荷李活道39-43號安樂樓" + }, + { + "building": "旭照樓", + "address": "香港島中西區荷李活道44-50號旭照樓" + }, + { + "building": "鴻豐商業中心", + "address": "香港島中西區荷李活道49-51號鴻豐商業中心" + }, + { + "building": "中發大廈", + "address": "香港島中西區荷李活道54-58號中發大廈" + }, + { + "building": "利來商業大廈", + "address": "香港島中西區荷李活道57-59號利來商業大廈" + }, + { + "building": "SOHO 69", + "address": "香港島中西區荷李活道69號SOHO 69" + }, + { + "building": "錦興大樓", + "address": "香港島中西區荷李活道88號錦興大樓" + }, + { + "building": "寶龍樓", + "address": "香港島中西區荷李活道89-95號寶龍樓" + }, + { + "building": "建益大樓", + "address": "香港島中西區荷蘭街1-11號建益大樓" + }, + { + "building": "太康大廈", + "address": "香港島中西區荷蘭街1A-1G號太康大廈" + }, + { + "building": "樂成行", + "address": "香港島中西區都爹利街13號樂成行" + }, + { + "building": "都爹利街一號", + "address": "香港島中西區都爹利街1號都爹利街一號" + }, + { + "building": "律敦治中心帝納大廈", + "address": "香港島中西區都爹利街3-11號律敦治中心帝納大廈" + }, + { + "building": "香港鑽石會大廈", + "address": "香港島中西區都爹利街8-10號香港鑽石會大廈" + }, + { + "building": "印刷行", + "address": "香港島中西區雪廠街18號印刷行" + }, + { + "building": "順豪商業大廈", + "address": "香港島中西區雪廠街24-30號順豪商業大廈" + }, + { + "building": "聖佐治大廈", + "address": "香港島中西區雪廠街2號聖佐治大廈" + }, + { + "building": "龍景樓", + "address": "香港島中西區麥當奴道39B號龍景樓" + }, + { + "building": "樂觀大廈", + "address": "香港島中西區麥當奴道54號樂觀大廈" + }, + { + "building": "康樂大廈", + "address": "香港島中西區麥當勞道" + }, + { + "building": "端納大廈一座", + "address": "香港島中西區麥當勞道" + }, + { + "building": "崇華大廈", + "address": "香港島中西區麥當勞道102-104號崇華大廈" + }, + { + "building": "輝煌大廈", + "address": "香港島中西區麥當勞道106-108號輝煌大廈" + }, + { + "building": "肇苑", + "address": "香港島中西區麥當勞道10號肇苑" + }, + { + "building": "?齡大廈", + "address": "香港島中西區麥當勞道110-112號?齡大廈" + }, + { + "building": "高雲大廈", + "address": "香港島中西區麥當勞道114-120號高雲大廈" + }, + { + "building": "豪輝閣", + "address": "香港島中西區麥當勞道12-14號豪輝閣" + }, + { + "building": "惠利大廈", + "address": "香港島中西區麥當勞道16-18號惠利大廈" + }, + { + "building": "嘉苑", + "address": "香港島中西區麥當勞道17號嘉苑" + }, + { + "building": "雨時大廈", + "address": "香港島中西區麥當勞道20號雨時大廈" + }, + { + "building": "聚安樓", + "address": "香港島中西區麥當勞道24號聚安樓" + }, + { + "building": "百年順大廈", + "address": "香港島中西區麥當勞道27-29號百年順大廈" + }, + { + "building": "惠苑", + "address": "香港島中西區麥當勞道36號惠苑" + }, + { + "building": "晨光大廈", + "address": "香港島中西區麥當勞道38A-38D號晨光大廈" + }, + { + "building": "快樂大廈", + "address": "香港島中西區麥當勞道42號快樂大廈" + }, + { + "building": "康樂大廈", + "address": "香港島中西區麥當勞道44號" + }, + { + "building": "蔚山花園A座", + "address": "香港島中西區麥當勞道48號" + }, + { + "building": "恒翠園", + "address": "香港島中西區麥當勞道56-58號恒翠園" + }, + { + "building": "南賓大廈", + "address": "香港島中西區麥當勞道5號南賓大廈" + }, + { + "building": "永康大廈", + "address": "香港島中西區麥當勞道60-62號永康大廈" + }, + { + "building": "碧雲樓", + "address": "香港島中西區麥當勞道64號碧雲樓" + }, + { + "building": "麥堅尼大廈", + "address": "香港島中西區麥當勞道65-73號麥堅尼大廈" + }, + { + "building": "好景大廈", + "address": "香港島中西區麥當勞道66-68號好景大廈" + }, + { + "building": "錦輝大廈", + "address": "香港島中西區麥當勞道68A號錦輝大廈" + }, + { + "building": "香海大廈", + "address": "香港島中西區麥當勞道70號香海大廈" + }, + { + "building": "百輝大廈", + "address": "香港島中西區麥當勞道72號百輝大廈" + }, + { + "building": "勝宗大廈", + "address": "香港島中西區麥當勞道74-76號勝宗大廈" + }, + { + "building": "惠士大廈", + "address": "香港島中西區麥當勞道78-80號惠士大廈" + }, + { + "building": "豪華閣", + "address": "香港島中西區麥當勞道7-9號豪華閣" + }, + { + "building": "寶樺臺", + "address": "香港島中西區麥當勞道96號寶樺臺" + }, + { + "building": "嘉年大廈", + "address": "香港島中西區麥當勞道98-100號嘉年大廈" + }, + { + "building": "華善樓", + "address": "香港島中西區善慶街6-10號華善樓" + }, + { + "building": "福澤樓", + "address": "香港島中西區普仁街17號福澤樓" + }, + { + "building": "世銀花苑", + "address": "香港島中西區普義街11號世銀花苑" + }, + { + "building": "普慶閣", + "address": "香港島中西區普慶坊10-18號普慶閣" + }, + { + "building": "太慶大廈", + "address": "香港島中西區普慶坊22-34號太慶大廈" + }, + { + "building": "寶慶大廈", + "address": "香港島中西區普慶坊2-8號寶慶大廈" + }, + { + "building": "朝光樓", + "address": "香港島中西區朝光街1號朝光樓" + }, + { + "building": "時利樓A座", + "address": "香港島中西區朝光街21-24號時利樓A座" + }, + { + "building": "合勤閣", + "address": "香港島中西區朝光街2號合勤閣" + }, + { + "building": "兆祥樓", + "address": "香港島中西區朝光街3-4號兆祥樓" + }, + { + "building": "國際金融中心1期", + "address": "香港島中西區港景街1號國際金融中心1期" + }, + { + "building": "福志樓", + "address": "香港島中西區結志街22-24號福志樓" + }, + { + "building": "永豐大廈", + "address": "香港島中西區結志街35號永豐大廈" + }, + { + "building": "嘉寓", + "address": "香港島中西區結志街36號嘉寓" + }, + { + "building": "新中環大廈", + "address": "香港島中西區結志街39-49號新中環大廈" + }, + { + "building": "雅賓利", + "address": "香港島中西區雅賓利道1號" + }, + { + "building": "恒信大廈", + "address": "香港島中西區雲咸街10-12號恒信大廈" + }, + { + "building": "啟光行", + "address": "香港島中西區雲咸街13號啟光行" + }, + { + "building": "萬祥大廈", + "address": "香港島中西區雲咸街15-17號萬祥大廈" + }, + { + "building": "王仲銘商業大廈", + "address": "香港島中西區雲咸街16號王仲銘商業大廈" + }, + { + "building": "威信大廈", + "address": "香港島中西區雲咸街19-27號威信大廈" + }, + { + "building": "南華大廈", + "address": "香港島中西區雲咸街1號南華大廈" + }, + { + "building": "四寶大樓", + "address": "香港島中西區雲咸街22-28號四寶大樓" + }, + { + "building": "雲咸大廈", + "address": "香港島中西區雲咸街30-32號雲咸大廈" + }, + { + "building": "東耀商業大廈", + "address": "香港島中西區雲咸街31A號東耀商業大廈" + }, + { + "building": "THE MOOD@LKF", + "address": "香港島中西區雲咸街31號THE MOOD@LKF" + }, + { + "building": "世界商業大廈", + "address": "香港島中西區雲咸街34號世界商業大廈" + }, + { + "building": "雲慶樓", + "address": "香港島中西區雲咸街36-38號雲慶樓" + }, + { + "building": "雲咸商業中心", + "address": "香港島中西區雲咸街40-44號雲咸商業中心" + }, + { + "building": "余悅禮行", + "address": "香港島中西區雲咸街43-55號余悅禮行" + }, + { + "building": "雲明行", + "address": "香港島中西區雲咸街46-48號雲明行" + }, + { + "building": "福成閣", + "address": "香港島中西區雲咸街50號福成閣" + }, + { + "building": "得怡坊", + "address": "香港島中西區雲咸街52號得怡坊" + }, + { + "building": "旭日大廈", + "address": "香港島中西區雲咸街57-59號旭日大廈" + }, + { + "building": "立健商業大廈", + "address": "香港島中西區雲咸街67號立健商業大廈" + }, + { + "building": "賀善尼大廈", + "address": "香港島中西區雲咸街69號賀善尼大廈" + }, + { + "building": "雲山大廈", + "address": "香港島中西區雲咸街73號雲山大廈" + }, + { + "building": "嘉兆商業大廈", + "address": "香港島中西區雲咸街75-77號嘉兆商業大廈" + }, + { + "building": "新陞大樓", + "address": "香港島中西區奧卑利街21-31號新陞大樓" + }, + { + "building": "荷李活商業大廈", + "address": "香港島中西區奧卑利街3-5號荷李活商業大廈" + }, + { + "building": "浩福大樓", + "address": "香港島中西區奧卑利街9號浩福大樓" + }, + { + "building": "偉裕樓", + "address": "香港島中西區新街15-17號偉裕樓" + }, + { + "building": "新佳大廈", + "address": "香港島中西區新街2-8號新佳大廈" + }, + { + "building": "環球大廈", + "address": "香港島中西區新街5-13號環球大廈" + }, + { + "building": "安東樓", + "address": "香港島中西區新街市街34號安東樓" + }, + { + "building": "康威花園", + "address": "香港島中西區新街市街8號康威花園" + }, + { + "building": "金鳳閣", + "address": "香港島中西區聖士提反里1-2號金鳳閣" + }, + { + "building": "亨順閣", + "address": "香港島中西區聖士提反里3號亨順閣" + }, + { + "building": "莊士明德軒", + "address": "香港島中西區聖士提反里5號莊士明德軒" + }, + { + "building": "萬宜里11號", + "address": "香港島中西區萬宜里11號" + }, + { + "building": "儒林臺", + "address": "香港島中西區裕林臺3號儒林臺" + }, + { + "building": "儒林閣", + "address": "香港島中西區裕林臺5號儒林閣" + }, + { + "building": "嘉豪大廈", + "address": "香港島中西區嘉咸街35-39號嘉豪大廈" + }, + { + "building": "天安城商業大廈", + "address": "香港島中西區嘉咸街41-43號天安城商業大廈" + }, + { + "building": "嘉利大廈", + "address": "香港島中西區嘉咸街45-53A號嘉利大廈" + }, + { + "building": "榮華大廈B座", + "address": "香港島中西區榮華里8-16號榮華大廈B座" + }, + { + "building": "經富中心", + "address": "香港島中西區歌賦街33號經富中心" + }, + { + "building": "宏興樓", + "address": "香港島中西區歌賦街34號宏興樓" + }, + { + "building": "多福樓", + "address": "香港島中西區歌賦街35-39A號多福樓" + }, + { + "building": "光遠樓", + "address": "香港島中西區歌賦街3-5號光遠樓" + }, + { + "building": "順景樓", + "address": "香港島中西區歌賦街7-9號順景樓" + }, + { + "building": "漢寧大廈", + "address": "香港島中西區漢寧頓道8號漢寧大廈" + }, + { + "building": "恒興樓", + "address": "香港島中西區福壽里2-14號恒興樓" + }, + { + "building": "富華樓", + "address": "香港島中西區福壽里7-13號富華樓" + }, + { + "building": "迎福苑", + "address": "香港島中西區種植道" + }, + { + "building": "濠景閣", + "address": "香港島中西區種植道15號濠景閣" + }, + { + "building": "維景山莊", + "address": "香港島中西區種植道19號維景山莊" + }, + { + "building": "山景", + "address": "香港島中西區種植道21號山景" + }, + { + "building": "奇峰山莊1座", + "address": "香港島中西區種植道35-37號奇峰山莊1座" + }, + { + "building": "高雲山莊", + "address": "香港島中西區種植道35-37號高雲山莊" + }, + { + "building": "雲嶺山莊", + "address": "香港島中西區種植道35-37號雲嶺山莊" + }, + { + "building": "紅梅閣", + "address": "香港島中西區種植道36號紅梅閣" + }, + { + "building": "風水", + "address": "香港島中西區種植道50號風水" + }, + { + "building": "ABERGELDIE", + "address": "香港島中西區種植道52號ABERGELDIE" + }, + { + "building": "翰林軒", + "address": "香港島中西區蒲飛路23號翰林軒" + }, + { + "building": "蒲苑", + "address": "香港島中西區蒲飛路38號蒲苑" + }, + { + "building": "普輝苑", + "address": "香港島中西區蒲飛路40號普輝苑" + }, + { + "building": "寶園", + "address": "香港島中西區蒲魯賢徑9號寶園" + }, + { + "building": "致發大廈", + "address": "香港島中西區閣麟街10-16號致發大廈" + }, + { + "building": "國麟大廈", + "address": "香港島中西區閣麟街13-17號國麟大廈" + }, + { + "building": "美輪樓", + "address": "香港島中西區閣麟街30-34號美輪樓" + }, + { + "building": "德和大廈", + "address": "香港島中西區德己立街17-19號德和大廈" + }, + { + "building": "業豐大廈", + "address": "香港島中西區德己立街2-18號業豐大廈" + }, + { + "building": "JAZMIN CASA HSE", + "address": "香港島中西區德己立街56號JAZMIN CASA HSE" + }, + { + "building": "詹氏商業大廈", + "address": "香港島中西區德輔道中102-104號詹氏商業大廈" + }, + { + "building": "鴻德大廈", + "address": "香港島中西區德輔道中106-108號鴻德大廈" + }, + { + "building": "余崇本行", + "address": "香港島中西區德輔道中107-111號余崇本行" + }, + { + "building": "東亞銀行大廈", + "address": "香港島中西區德輔道中10號東亞銀行大廈" + }, + { + "building": "順安商業大廈", + "address": "香港島中西區德輔道中112-114號順安商業大廈" + }, + { + "building": "遠東發展大廈", + "address": "香港島中西區德輔道中113-125A號遠東發展大廈" + }, + { + "building": "大眾銀行中心", + "address": "香港島中西區德輔道中120號大眾銀行中心" + }, + { + "building": "置地廣場", + "address": "香港島中西區德輔道中12-16號置地廣場" + }, + { + "building": "有餘貿易中心", + "address": "香港島中西區德輔道中127-131號有餘貿易中心" + }, + { + "building": "香港中華廠商會聯合大廈", + "address": "香港島中西區德輔道中133號香港中華廠商會聯合大廈" + }, + { + "building": "華懋廣場II期", + "address": "香港島中西區德輔道中135-137號華懋廣場II期" + }, + { + "building": "富偉大廈", + "address": "香港島中西區德輔道中140-142號富偉大廈" + }, + { + "building": "南洋商業銀行大廈", + "address": "香港島中西區德輔道中151號南洋商業銀行大廈" + }, + { + "building": "通用商業大廈", + "address": "香港島中西區德輔道中156-164號通用商業大廈" + }, + { + "building": "香港貿易中心", + "address": "香港島中西區德輔道中161-167號香港貿易中心" + }, + { + "building": "大新行", + "address": "香港島中西區德輔道中181號大新行" + }, + { + "building": "金龍中心", + "address": "香港島中西區德輔道中188號金龍中心" + }, + { + "building": "李寶椿大廈", + "address": "香港島中西區德輔道中189號李寶椿大廈" + }, + { + "building": "無限極廣場", + "address": "香港島中西區德輔道中199號無限極廣場" + }, + { + "building": "環球大廈", + "address": "香港島中西區德輔道中19號環球大廈" + }, + { + "building": "太子大廈", + "address": "香港島中西區德輔道中1A-3A號太子大廈" + }, + { + "building": "顏氏大廈", + "address": "香港島中西區德輔道中206-210號顏氏大廈" + }, + { + "building": "永安中心", + "address": "香港島中西區德輔道中209-211號永安中心" + }, + { + "building": "德成大廈", + "address": "香港島中西區德輔道中20號德成大廈" + }, + { + "building": "德輔商業中心", + "address": "香港島中西區德輔道中212-214號德輔商業中心" + }, + { + "building": "偉利大廈", + "address": "香港島中西區德輔道中222-224號偉利大廈" + }, + { + "building": "嘉華銀行中心", + "address": "香港島中西區德輔道中232號嘉華銀行中心" + }, + { + "building": "漢貿商業中心", + "address": "香港島中西區德輔道中237-241號漢貿商業中心" + }, + { + "building": "東協商業大廈", + "address": "香港島中西區德輔道中244-248號東協商業大廈" + }, + { + "building": "德祐大廈", + "address": "香港島中西區德輔道中247號德祐大廈" + }, + { + "building": "創興銀行中心", + "address": "香港島中西區德輔道中24號創興銀行中心" + }, + { + "building": "安樂園大廈", + "address": "香港島中西區德輔道中25-27A號安樂園大廈" + }, + { + "building": "金融商業大廈", + "address": "香港島中西區德輔道中254-256號金融商業大廈" + }, + { + "building": "錦甡大廈", + "address": "香港島中西區德輔道中255-257號錦甡大廈" + }, + { + "building": "海外信託銀行大廈", + "address": "香港島中西區德輔道中259-265號海外信託銀行大廈" + }, + { + "building": "一洲大廈", + "address": "香港島中西區德輔道中262號一洲大廈" + }, + { + "building": "龍記大廈", + "address": "香港島中西區德輔道中267-275號龍記大廈" + }, + { + "building": "岑氏商業大廈", + "address": "香港島中西區德輔道中268號岑氏商業大廈" + }, + { + "building": "興業商業中心", + "address": "香港島中西區德輔道中272-284號興業商業中心" + }, + { + "building": "豐和商業大廈", + "address": "香港島中西區德輔道中279-281號豐和商業大廈" + }, + { + "building": "錦康樓", + "address": "香港島中西區德輔道中285號錦康樓" + }, + { + "building": "香港長達大廈", + "address": "香港島中西區德輔道中287-291號香港長達大廈" + }, + { + "building": "易通商業大廈", + "address": "香港島中西區德輔道中288號易通商業大廈" + }, + { + "building": "盤谷銀行大廈", + "address": "香港島中西區德輔道中28號盤谷銀行大廈" + }, + { + "building": "西伯利亞皮草大廈", + "address": "香港島中西區德輔道中29號西伯利亞皮草大廈" + }, + { + "building": "中國銀行大廈", + "address": "香港島中西區德輔道中2A號中國銀行大廈" + }, + { + "building": "華傑商業中心", + "address": "香港島中西區德輔道中300-302號華傑商業中心" + }, + { + "building": "景福大廈", + "address": "香港島中西區德輔道中30-32號景福大廈" + }, + { + "building": "余氏大廈", + "address": "香港島中西區德輔道中304-306號余氏大廈" + }, + { + "building": "富衛金融中心", + "address": "香港島中西區德輔道中308號富衛金融中心" + }, + { + "building": "啟德商業大廈", + "address": "香港島中西區德輔道中317-319號啟德商業大廈" + }, + { + "building": "西港城", + "address": "香港島中西區德輔道中323號西港城" + }, + { + "building": "富邦銀行大廈", + "address": "香港島中西區德輔道中34-38號富邦銀行大廈" + }, + { + "building": "通明大廈", + "address": "香港島中西區德輔道中40-42號通明大廈" + }, + { + "building": "永隆銀行大廈", + "address": "香港島中西區德輔道中45號永隆銀行大廈" + }, + { + "building": "裕昌大廈", + "address": "香港島中西區德輔道中48-52號裕昌大廈" + }, + { + "building": "歷山大廈", + "address": "香港島中西區德輔道中5-17號歷山大廈" + }, + { + "building": "中環李錦記", + "address": "香港島中西區德輔道中54-58號中環李錦記" + }, + { + "building": "協成行中心", + "address": "香港島中西區德輔道中55號協成行中心" + }, + { + "building": "中南行", + "address": "香港島中西區德輔道中59號中南行" + }, + { + "building": "萬宜大廈", + "address": "香港島中西區德輔道中68號萬宜大廈" + }, + { + "building": "永安集團大廈", + "address": "香港島中西區德輔道中71號永安集團大廈" + }, + { + "building": "集友銀行大廈", + "address": "香港島中西區德輔道中74-78號集友銀行大廈" + }, + { + "building": "恒生銀行總行大廈", + "address": "香港島中西區德輔道中83號恒生銀行總行大廈" + }, + { + "building": "中環88", + "address": "香港島中西區德輔道中88-98號中環88" + }, + { + "building": "新顯利大廈", + "address": "香港島中西區德輔道中8A-8C號新顯利大廈" + }, + { + "building": "大新人壽大廈", + "address": "香港島中西區德輔道中99-105號大新人壽大廈" + }, + { + "building": "均益大廈", + "address": "香港島中西區德輔道西" + }, + { + "building": "錦華大廈", + "address": "香港島中西區德輔道西" + }, + { + "building": "樂基商業中心", + "address": "香港島中西區德輔道西103號樂基商業中心" + }, + { + "building": "庾柱林大廈", + "address": "香港島中西區德輔道西108-110號庾柱林大廈" + }, + { + "building": "利華大廈", + "address": "香港島中西區德輔道西111-117號利華大廈" + }, + { + "building": "海昌隆大廈", + "address": "香港島中西區德輔道西118號海昌隆大廈" + }, + { + "building": "大興大廈", + "address": "香港島中西區德輔道西119-127號大興大廈" + }, + { + "building": "德仁大廈", + "address": "香港島中西區德輔道西132-136號德仁大廈" + }, + { + "building": "鴻昌商業大廈", + "address": "香港島中西區德輔道西139-145號鴻昌商業大廈" + }, + { + "building": "金坤大廈", + "address": "香港島中西區德輔道西163-173號金坤大廈" + }, + { + "building": "西都大廈", + "address": "香港島中西區德輔道西164-170號西都大廈" + }, + { + "building": "安邦大廈", + "address": "香港島中西區德輔道西176-178號安邦大廈" + }, + { + "building": "永發樓", + "address": "香港島中西區德輔道西179-181號永發樓" + }, + { + "building": "聯德大廈", + "address": "香港島中西區德輔道西180-188A號聯德大廈" + }, + { + "building": "高陞大廈", + "address": "香港島中西區德輔道西187-189號高陞大廈" + }, + { + "building": "梅芳大廈", + "address": "香港島中西區德輔道西190-194號梅芳大廈" + }, + { + "building": "德輔大廈", + "address": "香港島中西區德輔道西19-25號德輔大廈" + }, + { + "building": "202 中心", + "address": "香港島中西區德輔道西202-204號202 中心" + }, + { + "building": "浩榮商業大廈", + "address": "香港島中西區德輔道西210-212號浩榮商業大廈" + }, + { + "building": "同興大廈", + "address": "香港島中西區德輔道西211-213號同興大廈" + }, + { + "building": "福成大廈", + "address": "香港島中西區德輔道西220號福成大廈" + }, + { + "building": "得安樓", + "address": "香港島中西區德輔道西221-223號得安樓" + }, + { + "building": "湀昌大廈", + "address": "香港島中西區德輔道西234-242號湀昌大廈" + }, + { + "building": "德美樓", + "address": "香港島中西區德輔道西239-241號德美樓" + }, + { + "building": "兆安大廈", + "address": "香港島中西區德輔道西243-245號兆安大廈" + }, + { + "building": "東慈商業中心", + "address": "香港島中西區德輔道西246號東慈商業中心" + }, + { + "building": "華立大樓", + "address": "香港島中西區德輔道西251-253號華立大樓" + }, + { + "building": "銀行大廈", + "address": "香港島中西區德輔道西259-269號銀行大廈" + }, + { + "building": "正德大廈", + "address": "香港島中西區德輔道西260-264號正德大廈" + }, + { + "building": "明興大廈", + "address": "香港島中西區德輔道西268-270號明興大廈" + }, + { + "building": "星衢商業大廈", + "address": "香港島中西區德輔道西27號星衢商業大廈" + }, + { + "building": "西區商業大廈", + "address": "香港島中西區德輔道西29-31號西區商業大廈" + }, + { + "building": "寶立閣", + "address": "香港島中西區德輔道西294號寶立閣" + }, + { + "building": "天興大廈", + "address": "香港島中西區德輔道西295-305號天興大廈" + }, + { + "building": "瑧璈", + "address": "香港島中西區德輔道西321號瑧璈" + }, + { + "building": "帝權商業大樓", + "address": "香港島中西區德輔道西32-36號帝權商業大樓." + }, + { + "building": "安慶樓", + "address": "香港島中西區德輔道西326-332號安慶樓" + }, + { + "building": "恒裕大廈", + "address": "香港島中西區德輔道西334-350號恒裕大廈" + }, + { + "building": "光前大廈第1座", + "address": "香港島中西區德輔道西351號光前大廈第1座" + }, + { + "building": "中亞大樓", + "address": "香港島中西區德輔道西352-366號中亞大樓" + }, + { + "building": "龍豐閣", + "address": "香港島中西區德輔道西363號龍豐閣" + }, + { + "building": "幸運樓", + "address": "香港島中西區德輔道西370-372號幸運樓" + }, + { + "building": "家安大廈", + "address": "香港島中西區德輔道西374-376號家安大廈" + }, + { + "building": "同達大廈", + "address": "香港島中西區德輔道西390-392號同達大廈" + }, + { + "building": "華明中心C座", + "address": "香港島中西區德輔道西394-400號華明中心C座" + }, + { + "building": "創業中心", + "address": "香港島中西區德輔道西402-404號創業中心" + }, + { + "building": "西區中心", + "address": "香港島中西區德輔道西40-50號西區中心" + }, + { + "building": "得富大樓", + "address": "香港島中西區德輔道西406D-406E號得富大樓" + }, + { + "building": "太平洋廣場", + "address": "香港島中西區德輔道西418號太平洋廣場" + }, + { + "building": "美新樓A 座", + "address": "香港島中西區德輔道西442號美新樓A 座" + }, + { + "building": "香港工業大廈", + "address": "香港島中西區德輔道西444-452號香港工業大廈" + }, + { + "building": "維壹大廈", + "address": "香港島中西區德輔道西458-458A號維壹大廈" + }, + { + "building": "碧華閣", + "address": "香港島中西區德輔道西464-464D號碧華閣" + }, + { + "building": "永勝大廈", + "address": "香港島中西區德輔道西52-58號永勝大廈" + }, + { + "building": "甘泉大廈", + "address": "香港島中西區德輔道西59-61號甘泉大廈" + }, + { + "building": "嘉裕樓", + "address": "香港島中西區德輔道西63-65號嘉裕樓" + }, + { + "building": "昇雲大廈", + "address": "香港島中西區德輔道西65-68號昇雲大廈" + }, + { + "building": "興利大廈", + "address": "香港島中西區德輔道西72-74號興利大廈" + }, + { + "building": "四邑大廈", + "address": "香港島中西區德輔道西73-79號四邑大廈" + }, + { + "building": "安華大廈", + "address": "香港島中西區德輔道西76-78號安華大廈" + }, + { + "building": "潮州會館", + "address": "香港島中西區德輔道西81-85號潮州會館" + }, + { + "building": "信光商業大廈", + "address": "香港島中西區德輔道西8號信光商業大廈" + }, + { + "building": "聯威商業大廈", + "address": "香港島中西區德輔道西93-97號聯威商業大廈" + }, + { + "building": "億豐大廈", + "address": "香港島中西區德輔道西94-96號億豐大廈" + }, + { + "building": "宏基商業大廈", + "address": "香港島中西區摩利臣街10號宏基商業大廈" + }, + { + "building": "翠海別墅", + "address": "香港島中西區摩星嶺道" + }, + { + "building": "怡林閣", + "address": "香港島中西區摩星嶺道2A號怡林閣" + }, + { + "building": "安利", + "address": "香港島中西區摩星嶺道2號" + }, + { + "building": "恒琪園", + "address": "香港島中西區摩星嶺道4號恒琪園" + }, + { + "building": "華亭閣", + "address": "香港島中西區摩星嶺道52-54號華亭閣" + }, + { + "building": "司徒濂石樓", + "address": "香港島中西區摩羅上街15-19號司徒濂石樓" + }, + { + "building": "慧林閣", + "address": "香港島中西區摩羅廟交加街17號慧林閣" + }, + { + "building": "竹笑樓", + "address": "香港島中西區摩羅廟交加街33號竹笑樓" + }, + { + "building": "禮順苑", + "address": "香港島中西區摩羅廟交加街8號禮順苑" + }, + { + "building": "嘉寧樓", + "address": "香港島中西區摩羅廟交加街9-11號嘉寧樓" + }, + { + "building": "美樂閣", + "address": "香港島中西區摩羅廟街12號美樂閣" + }, + { + "building": "嘉怡閣", + "address": "香港島中西區摩羅廟街23號嘉怡閣" + }, + { + "building": "建興樓", + "address": "香港島中西區摩羅廟街26-28號建興樓" + }, + { + "building": "樂欣大廈", + "address": "香港島中西區摩羅廟街31-37號樂欣大廈" + }, + { + "building": "富潤樓", + "address": "香港島中西區摩囉上街8-12號富潤樓" + }, + { + "building": "東昇樓", + "address": "香港島中西區樂古道18號東昇樓" + }, + { + "building": "邦暉大樓", + "address": "香港島中西區樂古道2-8號邦暉大樓" + }, + { + "building": "藝邦中心", + "address": "香港島中西區樂古道28號藝邦中心" + }, + { + "building": "皇后商業大廈", + "address": "香港島中西區樂古道31-37號皇后商業大廈" + }, + { + "building": "麗雅苑", + "address": "香港島中西區樂古道3號麗雅苑" + }, + { + "building": "裕利大廈", + "address": "香港島中西區樂古道68號裕利大廈" + }, + { + "building": "樓梯街5號", + "address": "香港島中西區樓梯街5號" + }, + { + "building": "明發樓", + "address": "香港島中西區磅巷6號明發樓" + }, + { + "building": "嘉苑", + "address": "香港島中西區衛城里4號嘉苑" + }, + { + "building": "美麗閣A-D座", + "address": "香港島中西區衛城道10號美麗閣A-D座" + }, + { + "building": "美麗閣E-G座", + "address": "香港島中西區衛城道10號美麗閣E-G座" + }, + { + "building": "城閣", + "address": "香港島中西區衛城道6號城閣" + }, + { + "building": "活倫大廈", + "address": "香港島中西區衛城道9A-9C號活倫大廈" + }, + { + "building": "香港會所大廈", + "address": "香港島中西區遮打道3A號香港會所大廈" + }, + { + "building": "添謀大廈", + "address": "香港島中西區機利文新街14-16號添謀大廈" + }, + { + "building": "永康樓", + "address": "香港島中西區機利文新街18-20號永康樓" + }, + { + "building": "亞細亞大廈", + "address": "香港島中西區機利文新街22-24號亞細亞大廈" + }, + { + "building": "合興樓", + "address": "香港島中西區機利文新街30號合興樓" + }, + { + "building": "天澤行", + "address": "香港島中西區機利文新街32-34號天澤行" + }, + { + "building": "龍廬", + "address": "香港島中西區盧吉道32號龍廬" + }, + { + "building": "羲皇臺第一座", + "address": "香港島中西區羲皇臺1號羲皇臺第一座" + }, + { + "building": "高士台", + "address": "香港島中西區興漢道23號高士台" + }, + { + "building": "美興樓", + "address": "香港島中西區興漢道3-4號美興樓" + }, + { + "building": "文利樓", + "address": "香港島中西區鴨巴甸街11-11A號文利樓" + }, + { + "building": "天成樓", + "address": "香港島中西區鴨巴甸街13號天成樓" + }, + { + "building": "興揚大廈", + "address": "香港島中西區鴨巴甸街24-26號興揚大廈" + }, + { + "building": "景怡居", + "address": "香港島中西區鴨巴甸街55號景怡居" + }, + { + "building": "連威大廈", + "address": "香港島中西區禧利街13-15號連威大廈" + }, + { + "building": "富輝商業中心", + "address": "香港島中西區禧利街27號富輝商業中心" + }, + { + "building": "東寧大廈", + "address": "香港島中西區禧利街2號東寧大廈" + }, + { + "building": "禧利大廈", + "address": "香港島中西區禧利街33號禧利大廈" + }, + { + "building": "學士台", + "address": "香港島中西區薄扶林道101號學士台" + }, + { + "building": "有餘樓", + "address": "香港島中西區薄扶林道21-23號有餘樓" + }, + { + "building": "恒輝大廈", + "address": "香港島中西區薄扶林道22-32號恒輝大廈" + }, + { + "building": "華寶樓", + "address": "香港島中西區薄扶林道2-6號華寶樓" + }, + { + "building": "廣德樓", + "address": "香港島中西區薄扶林道29C-29D號廣德樓" + }, + { + "building": "東銘閣", + "address": "香港島中西區薄扶林道39號東銘閣" + }, + { + "building": "利威樓", + "address": "香港島中西區薄扶林道41-43號利威樓" + }, + { + "building": "寶林閣", + "address": "香港島中西區薄扶林道67號寶林閣" + }, + { + "building": "錦明閣", + "address": "香港島中西區薄扶林道69號錦明閣" + }, + { + "building": "裕德大樓", + "address": "香港島中西區薄扶林道7-11號裕德大樓" + }, + { + "building": "翠安閣", + "address": "香港島中西區薄扶林道71號翠安閣" + }, + { + "building": "俊威閣", + "address": "香港島中西區薄扶林道73號俊威閣" + }, + { + "building": "寶瑜閣", + "address": "香港島中西區薄扶林道77號寶瑜閣" + }, + { + "building": "富林苑", + "address": "香港島中西區薄扶林道84號富林苑" + }, + { + "building": "樸園", + "address": "香港島中西區薄扶林道86A-86D號樸園" + }, + { + "building": "嘉瑜園", + "address": "香港島中西區薄扶林道86號嘉瑜園" + }, + { + "building": "錦棠小築", + "address": "香港島中西區薄扶林道88號錦棠小築" + }, + { + "building": "寶翠園", + "address": "香港島中西區薄扶林道89號寶翠園" + }, + { + "building": "翠林苑", + "address": "香港島中西區薄扶林道90號翠林苑" + }, + { + "building": "利嘉大廈", + "address": "香港島中西區薄扶林道92號利嘉大廈" + }, + { + "building": "碧林閣", + "address": "香港島中西區薄扶林道94號碧林閣" + }, + { + "building": "裕仁大廈", + "address": "香港島中西區薄扶林道96號裕仁大廈" + }, + { + "building": "福慧苑", + "address": "香港島中西區薄扶林道98號福慧苑" + }, + { + "building": "合成商業大廈", + "address": "香港島中西區擺花街12-16號合成商業大廈" + }, + { + "building": "嘉寶商業大廈", + "address": "香港島中西區擺花街18-20號嘉寶商業大廈" + }, + { + "building": "一號廣場", + "address": "香港島中西區擺花街1號一號廣場" + }, + { + "building": "中環大廈", + "address": "香港島中西區擺花街23-41號中環大廈" + }, + { + "building": "THE WORKST@TION", + "address": "香港島中西區擺花街43號THE WORKST@TION" + }, + { + "building": "中晶商業大廈", + "address": "香港島中西區擺花街46號中晶商業大廈" + }, + { + "building": "新豐樓", + "address": "香港島中西區擺花街52-60號新豐樓" + }, + { + "building": "帝景園", + "address": "香港島中西區舊山頂道17-23號帝景園" + }, + { + "building": "雋巒(曉峰閣第4座)", + "address": "香港島中西區舊山頂道18號雋巒(曉峰閣第4座)" + }, + { + "building": "曉峰閣", + "address": "香港島中西區舊山頂道18號曉峰閣" + }, + { + "building": "錦園大廈", + "address": "香港島中西區舊山頂道3號錦園大廈" + }, + { + "building": "柏詩苑", + "address": "香港島中西區舊山頂道5號柏詩苑" + }, + { + "building": "翠峰園", + "address": "香港島中西區舊山頂道5號翠峰園" + }, + { + "building": "好利閣", + "address": "香港島中西區舊山頂道6號好利閣" + }, + { + "building": "花園台", + "address": "香港島中西區舊山頂道8號花園台" + }, + { + "building": "裕景花園", + "address": "香港島中西區舊山頂道9號裕景花園" + }, + { + "building": "榮華大廈", + "address": "香港島中西區醫院道10-12號榮華大廈" + }, + { + "building": "暢園", + "address": "香港島中西區醫院道14-16號暢園" + }, + { + "building": "頌賢閣", + "address": "香港島中西區醫院道17號頌賢閣" + }, + { + "building": "Shama Midlevels", + "address": "香港島中西區醫院道8號Shama Midlevels." + }, + { + "building": "翡翠園", + "address": "香港島中西區羅便臣道" + }, + { + "building": "夏蕙苑", + "address": "香港島中西區羅便臣道101號" + }, + { + "building": "景雅花園", + "address": "香港島中西區羅便臣道103號景雅花園" + }, + { + "building": "嘉兆臺", + "address": "香港島中西區羅便臣道10號嘉兆臺" + }, + { + "building": "景翠園", + "address": "香港島中西區羅便臣道125號景翠園" + }, + { + "building": "雅慧園", + "address": "香港島中西區羅便臣道1號雅慧園" + }, + { + "building": "豪景閣", + "address": "香港島中西區羅便臣道21號豪景閣" + }, + { + "building": "福熙苑", + "address": "香港島中西區羅便臣道22號福熙苑" + }, + { + "building": "正大花園", + "address": "香港島中西區羅便臣道27號正大花園" + }, + { + "building": "麗華大廈", + "address": "香港島中西區羅便臣道28號麗華大廈" + }, + { + "building": "利德大廈", + "address": "香港島中西區羅便臣道29號利德大廈" + }, + { + "building": "寶時大廈", + "address": "香港島中西區羅便臣道30-32號寶時大廈" + }, + { + "building": "雅緻大廈", + "address": "香港島中西區羅便臣道36-40號雅緻大廈" + }, + { + "building": "宜新大廈", + "address": "香港島中西區羅便臣道39-41A號宜新大廈" + }, + { + "building": "羅便臣花園大廈", + "address": "香港島中西區羅便臣道3B-3C,3F-3G號羅便臣花園大廈" + }, + { + "building": "明苑", + "address": "香港島中西區羅便臣道46-48號明苑" + }, + { + "building": "威勝大廈", + "address": "香港島中西區羅便臣道52號威勝大廈" + }, + { + "building": "信怡閣", + "address": "香港島中西區羅便臣道60號信怡閣" + }, + { + "building": "寶如玉大廈", + "address": "香港島中西區羅便臣道61號寶如玉大廈" + }, + { + "building": "愛富華庭", + "address": "香港島中西區羅便臣道62B號愛富華庭" + }, + { + "building": "燕貽大廈", + "address": "香港島中西區羅便臣道63-67號燕貽大廈" + }, + { + "building": "嘉樂園", + "address": "香港島中西區羅便臣道64號嘉樂園" + }, + { + "building": "蕙恩閣", + "address": "香港島中西區羅便臣道68號蕙恩閣" + }, + { + "building": "文麗苑", + "address": "香港島中西區羅便臣道69A-B號文麗苑" + }, + { + "building": "雍景臺", + "address": "香港島中西區羅便臣道70號雍景臺" + }, + { + "building": "賓士花園", + "address": "香港島中西區羅便臣道71-73號賓士花園" + }, + { + "building": "蔚巒閣", + "address": "香港島中西區羅便臣道74號蔚巒閣" + }, + { + "building": "羅便臣大廈", + "address": "香港島中西區羅便臣道77號羅便臣大廈" + }, + { + "building": "雅苑", + "address": "香港島中西區羅便臣道82號雅苑" + }, + { + "building": "輝鴻閣", + "address": "香港島中西區羅便臣道83號輝鴻閣" + }, + { + "building": "昭景大廈", + "address": "香港島中西區羅便臣道84號昭景大廈" + }, + { + "building": "崇樓", + "address": "香港島中西區羅便臣道88號崇樓" + }, + { + "building": "樂信臺", + "address": "香港島中西區羅便臣道8號樂信臺" + }, + { + "building": "麗祥樓", + "address": "香港島中西區羅便臣道90-92號麗祥樓" + }, + { + "building": "殷樺花園第一期", + "address": "香港島中西區羅便臣道95號殷樺花園第一期" + }, + { + "building": "贊善大廈", + "address": "香港島中西區贊善里3-4號贊善大廈" + }, + { + "building": "贊善樓", + "address": "香港島中西區贊善里5-5A號贊善樓" + }, + { + "building": "THE MOOD@SOHO", + "address": "香港島中西區贊善里5B號THE MOOD@SOHO" + }, + { + "building": "金碧臺", + "address": "香港島中西區贊善里8-10號金碧臺" + }, + { + "building": "寶城大廈", + "address": "香港島中西區寶珊道14-16號" + }, + { + "building": "杏彤苑", + "address": "香港島中西區寶珊道1A號杏彤苑" + }, + { + "building": "碧苑", + "address": "香港島中西區寶珊道6號碧苑" + }, + { + "building": "愛敦大廈", + "address": "香港島中西區寶珊道8號愛敦大廈" + }, + { + "building": "寶雲閣", + "address": "香港島中西區寶雲道11A號寶雲閣" + }, + { + "building": "寶雲殿", + "address": "香港島中西區寶雲道11B號寶雲殿" + }, + { + "building": "寶雲山莊", + "address": "香港島中西區寶雲道2B號寶雲山莊" + }, + { + "building": "富匯豪庭", + "address": "香港島中西區寶雲道2號富匯豪庭" + }, + { + "building": "景雲樓", + "address": "香港島中西區寶雲道5L-5P號景雲樓" + }, + { + "building": "寶雲大廈", + "address": "香港島中西區寶雲道7C號寶雲大廈" + }, + { + "building": "寶德臺", + "address": "香港島中西區寶雲道8-9號寶德臺" + }, + { + "building": "秀平商業大廈", + "address": "香港島中西區蘇杭街104號秀平商業大廈" + }, + { + "building": "福興樓", + "address": "香港島中西區蘇杭街109號福興樓" + }, + { + "building": "商業大樓", + "address": "香港島中西區蘇杭街110號商業大樓" + }, + { + "building": "萬邦大廈", + "address": "香港島中西區蘇杭街111-115號萬邦大廈" + }, + { + "building": "華熙樓", + "address": "香港島中西區蘇杭街130-132號華熙樓" + }, + { + "building": "新永安大廈", + "address": "香港島中西區蘇杭街17號新永安大廈" + }, + { + "building": "永昌商業大廈", + "address": "香港島中西區蘇杭街19-25號永昌商業大廈" + }, + { + "building": "蘇杭樓", + "address": "香港島中西區蘇杭街1號蘇杭樓" + }, + { + "building": "榮發樓", + "address": "香港島中西區蘇杭街3-5號榮發樓" + }, + { + "building": "蘇杭商業大廈", + "address": "香港島中西區蘇杭街41-47號蘇杭商業大廈" + }, + { + "building": "華威大廈", + "address": "香港島中西區蘇杭街84號華威大廈" + }, + { + "building": "樹本善堂大廈", + "address": "香港島中西區蘇杭街90號樹本善堂大廈" + }, + { + "building": "東利商業大廈", + "address": "香港島中西區蘇杭街91-97號東利商業大廈" + }, + { + "building": "能興盛樓", + "address": "香港島中西區蘇杭街94號能興盛樓" + }, + { + "building": "嘉發商業中心", + "address": "香港島中西區蘇杭街99-101號嘉發商業中心" + }, + { + "building": "好利商業大廈", + "address": "香港島中西區蘭桂坊17-19號好利商業大廈" + }, + { + "building": "蘭芳樓", + "address": "香港島中西區蘭桂坊2-3號蘭芳樓" + }, + { + "building": "蘭桂樓", + "address": "香港島中西區蘭桂坊5-6號蘭桂樓" + }, + { + "building": "昌隆商業大廈", + "address": "香港島中西區蘭桂坊8-11號昌隆商業大廈" + }, + { + "building": "鴻安大廈", + "address": "香港島中西區鐵行里4號鴻安大廈" + }, + { + "building": "康怡花園", + "address": "香港島東區" + }, + { + "building": "港濤軒", + "address": "香港島東區IL7105渣華道180號港濤軒" + }, + { + "building": "威德閣", + "address": "香港島東區IL7273宏安道18號威德閣" + }, + { + "building": "明軒", + "address": "香港島東區IL897明園西街18號明軒" + }, + { + "building": "柯達大廈(一期及二期)柯達大廈", + "address": "香港島東區ML705健康街東39號(一期及二期)柯達大廈" + }, + { + "building": "都富大廈", + "address": "香港島東區SIL126南康街2號都富大廈" + }, + { + "building": "德福樓", + "address": "香港島東區SIL512工廠街28號德福樓" + }, + { + "building": "海峰中心", + "address": "香港島東區SIL549寶文街2號海峰中心" + }, + { + "building": "長樂樓", + "address": "香港島東區SIL682西灣河街112-114號長樂樓" + }, + { + "building": "太就樓", + "address": "香港島東區魚涌街121號太就樓" + }, + { + "building": "太成樓", + "address": "香港島東區魚涌街122號太成樓" + }, + { + "building": "太隆樓", + "address": "香港島東區魚涌街123號太隆樓" + }, + { + "building": "雅利閣", + "address": "香港島東區七姊妹道10-12號雅利閣" + }, + { + "building": "富邦大廈", + "address": "香港島東區七姊妹道106-110號富邦大廈" + }, + { + "building": "兆華大廈", + "address": "香港島東區七姊妹道116-122號兆華大廈" + }, + { + "building": "兆寶大廈", + "address": "香港島東區七姊妹道126-128B號兆寶大廈" + }, + { + "building": "東建工廠大廈A-D座", + "address": "香港島東區七姊妹道196-202號東建工廠大廈A-D座" + }, + { + "building": "昌苑", + "address": "香港島東區七姊妹道2-8號昌苑" + }, + { + "building": "合偉大廈", + "address": "香港島東區七姊妺道112-114號合偉大廈" + }, + { + "building": "華福閣", + "address": "香港島東區七姊妺道124號華福閣" + }, + { + "building": "兆景大廈", + "address": "香港島東區七姊妺道14-16號兆景大廈" + }, + { + "building": "寶城閣", + "address": "香港島東區七姊妺道18號寶城閣" + }, + { + "building": "健康村 康宏閣", + "address": "香港島東區七姊妺道190-192號健康村 康宏閣" + }, + { + "building": "健康村 康輝閣", + "address": "香港島東區七姊妺道190-192號健康村 康輝閣" + }, + { + "building": "昌利工廠大廈", + "address": "香港島東區七姊妺道206-208號昌利工廠大廈" + }, + { + "building": "嘉蘭大廈", + "address": "香港島東區七姊妺道25-31號嘉蘭大廈" + }, + { + "building": "富家閣", + "address": "香港島東區七姊妺道28號富家閣" + }, + { + "building": "兆年大廈", + "address": "香港島東區七姊妺道30-36號兆年大廈" + }, + { + "building": "昌輝閣", + "address": "香港島東區七姊妺道5-13號昌輝閣" + }, + { + "building": "恒安閣", + "address": "香港島東區大石街17號恒安閣" + }, + { + "building": "大成樓", + "address": "香港島東區大石街19-23A號大成樓" + }, + { + "building": "山翠苑", + "address": "香港島東區大潭道200號" + }, + { + "building": "佳翠苑", + "address": "香港島東區小西灣道16號" + }, + { + "building": "富景花園", + "address": "香港島東區小西灣道18號富景花園" + }, + { + "building": "富怡花園", + "address": "香港島東區小西灣道23號富怡花園" + }, + { + "building": "藍灣半島", + "address": "香港島東區小西灣道28號" + }, + { + "building": "富欣花園", + "address": "香港島東區小西灣道9號富欣花園" + }, + { + "building": "宏華大廈", + "address": "香港島東區工廠街2-4號宏華大廈" + }, + { + "building": "莊士軒", + "address": "香港島東區工廠街30號莊士軒" + }, + { + "building": "筲箕灣中心", + "address": "香港島東區工廠街7-9號" + }, + { + "building": "丹拿花園", + "address": "香港島東區丹拿道18號" + }, + { + "building": "友福園", + "address": "香港島東區丹拿道44-58號友福園" + }, + { + "building": "港運城", + "address": "香港島東區丹拿道51-61號港運城" + }, + { + "building": "夏蕙台", + "address": "香港島東區天后廟道108-114號夏蕙台" + }, + { + "building": "雲峰大廈A1座", + "address": "香港島東區天后廟道144-158號雲峰大廈A1座A1 座" + }, + { + "building": "百福花園", + "address": "香港島東區天后廟道151-173號" + }, + { + "building": "金香閣", + "address": "香港島東區天后廟道17號金香閣" + }, + { + "building": "景暉閣", + "address": "香港島東區天后廟道19-21號景暉閣" + }, + { + "building": "慧雅閣", + "address": "香港島東區天后廟道200號慧雅閣" + }, + { + "building": "瓊峰園", + "address": "香港島東區天后廟道202-216號" + }, + { + "building": "維景台", + "address": "香港島東區天后廟道25-29號維景台" + }, + { + "building": "君悅華庭", + "address": "香港島東區天后廟道31號君悅華庭" + }, + { + "building": "天后廟道富輝閣", + "address": "香港島東區天后廟道33號天后廟道富輝閣" + }, + { + "building": "華園", + "address": "香港島東區天后廟道37-39A號華園" + }, + { + "building": "天后廟道翠巒閣", + "address": "香港島東區天后廟道41號天后廟道翠巒閣" + }, + { + "building": "創福苑", + "address": "香港島東區天后廟道63號創福苑" + }, + { + "building": "康德大廈", + "address": "香港島東區天后廟道95-97號康德大廈" + }, + { + "building": "雅苑", + "address": "香港島東區天后廟道96-102號雅苑" + }, + { + "building": "太古城海星閣", + "address": "香港島東區太古城道10號太古城海星閣" + }, + { + "building": "太古城東山閣", + "address": "香港島東區太古城道11號太古城東山閣" + }, + { + "building": "太古城耀星閣", + "address": "香港島東區太古城道14號太古城耀星閣" + }, + { + "building": "太古城智星閣", + "address": "香港島東區太古城道16號太古城智星閣" + }, + { + "building": "太古城華山閣", + "address": "香港島東區太古城道17號太古城華山閣" + }, + { + "building": "太古城冠天閣", + "address": "香港島東區太古城道18A號太古城冠天閣" + }, + { + "building": "太古城逸天閣", + "address": "香港島東區太古城道18B號太古城逸天閣" + }, + { + "building": "太古城南天閣", + "address": "香港島東區太古城道18C號太古城南天閣" + }, + { + "building": "太古城寶山閣", + "address": "香港島東區太古城道1號太古城寶山閣" + }, + { + "building": "太古城元宮閣", + "address": "香港島東區太古城道20號太古城元宮閣" + }, + { + "building": "太古城龍山閣", + "address": "香港島東區太古城道21-23號太古城龍山閣" + }, + { + "building": "太古城明宮閣", + "address": "香港島東區太古城道22號太古城明宮閣" + }, + { + "building": "太古城鳳山閣", + "address": "香港島東區太古城道23號太古城鳳山閣" + }, + { + "building": "太古城夏宮閣", + "address": "香港島東區太古城道24號太古城夏宮閣" + }, + { + "building": "太古城富山閣", + "address": "香港島東區太古城道25號太古城富山閣" + }, + { + "building": "太古城漢宮閣", + "address": "香港島東區太古城道26號太古城漢宮閣" + }, + { + "building": "太古城寧安閣", + "address": "香港島東區太古城道28號太古城寧安閣" + }, + { + "building": "太古城太湖閣", + "address": "香港島東區太古城道2號太古城太湖閣" + }, + { + "building": "太古城唐宮閣", + "address": "香港島東區太古城道31號太古城唐宮閣" + }, + { + "building": "太古城南山閣", + "address": "香港島東區太古城道3-5號太古城南山閣" + }, + { + "building": "匯豪峰", + "address": "香港島東區太古城道39號及船塢里16號匯豪峰" + }, + { + "building": "太古城洞庭閣", + "address": "香港島東區太古城道4號太古城洞庭閣" + }, + { + "building": "太古城盧山閣", + "address": "香港島東區太古城道5-7號太古城盧山閣" + }, + { + "building": "太古城鄱陽閣", + "address": "香港島東區太古城道6號太古城鄱陽閣" + }, + { + "building": "太古城泰山閣", + "address": "香港島東區太古城道7-9號太古城泰山閣" + }, + { + "building": "太古城東海閣", + "address": "香港島東區太古城道8號太古城東海閣" + }, + { + "building": "太古城天山閣", + "address": "香港島東區太古城道9號太古城天山閣" + }, + { + "building": "太古城美菊閣", + "address": "香港島東區太古灣道10號太古城美菊閣" + }, + { + "building": "太古城彩天閣", + "address": "香港島東區太古灣道11號太古城彩天閣" + }, + { + "building": "太古城富天閣", + "address": "香港島東區太古灣道13號太古城富天閣" + }, + { + "building": "太古城海天閣", + "address": "香港島東區太古灣道15號太古城海天閣" + }, + { + "building": "太古城銀?閣", + "address": "香港島東區太古灣道16號太古城銀?閣" + }, + { + "building": "太古城啟天閣", + "address": "香港島東區太古灣道17號太古城啟天閣" + }, + { + "building": "太古城北海閣", + "address": "香港島東區太古灣道1號太古城北海閣" + }, + { + "building": "太古城綠楊閣", + "address": "香港島東區太古灣道22號太古城綠楊閣" + }, + { + "building": "太古城翠榕閣", + "address": "香港島東區太古灣道24號太古城翠榕閣" + }, + { + "building": "太古城青松閣", + "address": "香港島東區太古灣道26號太古城青松閣" + }, + { + "building": "太古城春櫻閣", + "address": "香港島東區太古灣道2號太古城春櫻閣" + }, + { + "building": "太古城雅蓮閣", + "address": "香港島東區太古灣道6號太古城雅蓮閣" + }, + { + "building": "太古城海棠閣", + "address": "香港島東區太古灣道8號太古城海棠閣" + }, + { + "building": "鯉景灣安明閣", + "address": "香港島東區太安街" + }, + { + "building": "逸濤灣", + "address": "香港島東區太安街28號" + }, + { + "building": "嘉亨灣", + "address": "香港島東區太康街38號嘉亨灣" + }, + { + "building": "太樂樓", + "address": "香港島東區太祥街2號太樂樓" + }, + { + "building": "金輝樓(太富街)", + "address": "香港島東區太富街15-19號 / 筲箕灣道48號金輝樓(太富街)" + }, + { + "building": "小茅舍", + "address": "香港島東區太富街2-4號小茅舍" + }, + { + "building": "太古城寶安閣", + "address": "香港島東區太裕路1號太古城寶安閣" + }, + { + "building": "太古城齊宮閣", + "address": "香港島東區太裕路2號太古城齊宮閣" + }, + { + "building": "太古城興安閣", + "address": "香港島東區太裕路5號太古城興安閣" + }, + { + "building": "太古城建安閣", + "address": "香港島東區太裕路7號太古城建安閣" + }, + { + "building": "太古城高安閣", + "address": "香港島東區太裕路9號太古城高安閣" + }, + { + "building": "太寧", + "address": "香港島東區太寧街2A-2B號太寧" + }, + { + "building": "百利居(太寧街)", + "address": "香港島東區太寧街3號百利居(太寧街)" + }, + { + "building": "太古城天星閣", + "address": "香港島東區太榮路1號太古城天星閣" + }, + { + "building": "太古城南海閣", + "address": "香港島東區太榮路2號太古城南海閣" + }, + { + "building": "太古城恒星閣", + "address": "香港島東區太榮路3號太古城恒星閣" + }, + { + "building": "太樂街9-11號", + "address": "香港島東區太樂街9-11號" + }, + { + "building": "太古城銀星閣", + "address": "香港島東區太豐路1號太古城銀星閣" + }, + { + "building": "太古城恆天閣", + "address": "香港島東區太豐路2號太古城恆天閣" + }, + { + "building": "太古城金星閣", + "address": "香港島東區太豐路3號太古城金星閣" + }, + { + "building": "太古城金山閣", + "address": "香港島東區太豐路5號太古城金山閣" + }, + { + "building": "太古城怡山閣", + "address": "香港島東區太豐路7號太古城怡山閣" + }, + { + "building": "明園洋樓,第三期明園洋樓(第三期)", + "address": "香港島東區孔雀道16-18號明園洋樓,第三期明園洋樓(第三期)" + }, + { + "building": "明園大廈,第一期明園大廈(第一期)A座", + "address": "香港島東區孔雀道1-7號明園大廈,第一期明園大廈(第一期)A座" + }, + { + "building": "明園花園洋樓,第二期明園花園洋樓(第二期)", + "address": "香港島東區孔雀道26-72號明園花園洋樓,第二期明園花園洋樓(第二期)" + }, + { + "building": "嘉運大廈", + "address": "香港島東區月園街10-16號嘉運大廈" + }, + { + "building": "明威大廈", + "address": "香港島東區月園街17-29號明威大廈" + }, + { + "building": "明月大廈", + "address": "香港島東區月園街7-15號明月大廈" + }, + { + "building": "光超台", + "address": "香港島東區北角炮台山道" + }, + { + "building": "鴻日大廈", + "address": "香港島東區北角道11-13號鴻日大廈" + }, + { + "building": "嘉雲樓", + "address": "香港島東區北角道14A-14C號嘉雲樓" + }, + { + "building": "北角小樓", + "address": "香港島東區北角道19-21A號北角小樓" + }, + { + "building": "文瀾樓", + "address": "香港島東區北角道2-4號文瀾樓" + }, + { + "building": "和富豪庭", + "address": "香港島東區北角道33號和富豪庭" + }, + { + "building": "隆運大廈", + "address": "香港島東區北角道8號隆運大廈" + }, + { + "building": "北角台", + "address": "香港島東區北角臺1號北角台" + }, + { + "building": "新德樓", + "address": "香港島東區永平街1號新德樓" + }, + { + "building": "柴灣工業城", + "address": "香港島東區永泰道" + }, + { + "building": "杏翠苑", + "address": "香港島東區永泰道63號杏翠苑" + }, + { + "building": "達藝工業中心", + "address": "香港島東區吉勝街12號達藝工業中心" + }, + { + "building": "吉勝大廈", + "address": "香港島東區吉勝街8號吉勝大廈" + }, + { + "building": "新華豐中心", + "address": "香港島東區安業街1號新華豐中心" + }, + { + "building": "新藝工業大廈", + "address": "香港島東區安業街3號新藝工業大廈" + }, + { + "building": "富安樓", + "address": "香港島東區成安街1-3號富安樓" + }, + { + "building": "港島·東18", + "address": "香港島東區成安街18-36號港島·東18" + }, + { + "building": "大中樓", + "address": "香港島東區成安街2A-2B號大中樓" + }, + { + "building": "富成樓", + "address": "香港島東區成安街9-13號富成樓" + }, + { + "building": "寶馬台", + "address": "香港島東區百福道寶馬台" + }, + { + "building": "安業大廈", + "address": "香港島東區西灣河街100-104號安業大廈" + }, + { + "building": "西灣河長興大樓", + "address": "香港島東區西灣河街110-110C號西灣河長興大樓" + }, + { + "building": "萬興樓", + "address": "香港島東區西灣河街122-124號萬興樓" + }, + { + "building": "西灣河街利基大廈", + "address": "香港島東區西灣河街129-133號西灣河街利基大廈" + }, + { + "building": "泰興樓", + "address": "香港島東區西灣河街130-132號泰興樓" + }, + { + "building": "興中樓", + "address": "香港島東區西灣河街134-136號興中樓" + }, + { + "building": "西灣閣", + "address": "香港島東區西灣河街138-140號西灣閣" + }, + { + "building": "金海樓", + "address": "香港島東區西灣河街14-20號金海樓" + }, + { + "building": "友誼", + "address": "香港島東區西灣河街152-154號友誼" + }, + { + "building": "幸運樓", + "address": "香港島東區西灣河街164-166號幸運樓" + }, + { + "building": "西灣河美東大廈", + "address": "香港島東區西灣河街17-19號西灣河美東大廈" + }, + { + "building": "達利樓", + "address": "香港島東區西灣河街172-174號達利樓" + }, + { + "building": "恒昌閣", + "address": "香港島東區西灣河街22-28號恒昌閣" + }, + { + "building": "富欣閣", + "address": "香港島東區西灣河街23號富欣閣" + }, + { + "building": "順利", + "address": "香港島東區西灣河街35-37號順利" + }, + { + "building": "堅信樓", + "address": "香港島東區西灣河街4-4A號堅信樓" + }, + { + "building": "西灣大廈", + "address": "香港島東區西灣河街5,5A-7號西灣大廈" + }, + { + "building": "海利大廈(西灣河街)", + "address": "香港島東區西灣河街58-60號海利大廈(西灣河街)" + }, + { + "building": "西旺樓", + "address": "香港島東區西灣河街70-72號西旺樓" + }, + { + "building": "永裕源大廈", + "address": "香港島東區西灣河街74-80號永裕源大廈" + }, + { + "building": "君悅軒", + "address": "香港島東區西灣河街8號君悅軒" + }, + { + "building": "協成工廠大廈", + "address": "香港島東區西灣河街9-11號協成工廠大廈" + }, + { + "building": "海安大廈", + "address": "香港島東區西灣河街92-98號海安大廈" + }, + { + "building": "逸意居", + "address": "香港島東區西灣臺18號逸意居" + }, + { + "building": "蜆殼工業大廈", + "address": "香港島東區利眾街12號蜆殼工業大廈" + }, + { + "building": "德昌大廈", + "address": "香港島東區利眾街14-16號德昌大廈" + }, + { + "building": "美利倉大廈", + "address": "香港島東區利眾街18號美利倉大廈" + }, + { + "building": "東貿廣場", + "address": "香港島東區利眾街24號東貿廣場" + }, + { + "building": "香港(柴灣)工業大廈", + "address": "香港島東區利眾街26號香港(柴灣)工業大廈" + }, + { + "building": "德景工業大廈", + "address": "香港島東區利眾街27號德景工業大廈" + }, + { + "building": "中安工業大廈", + "address": "香港島東區利眾街28號中安工業大廈" + }, + { + "building": "信誼工廠大廈", + "address": "香港島東區利眾街30-32號信誼工廠大廈" + }, + { + "building": "復興工廠大廈", + "address": "香港島東區利眾街33號復興工廠大廈" + }, + { + "building": "寶源(東丞)工業樓", + "address": "香港島東區利眾街34號寶源(東丞)工業樓" + }, + { + "building": "泗興工業大樓", + "address": "香港島東區利眾街37號泗興工業大樓" + }, + { + "building": "富誠工業大廈", + "address": "香港島東區利眾街40號富誠工業大廈" + }, + { + "building": "宏暉大廈", + "address": "香港島東區宏安道2-12號宏暉大廈" + }, + { + "building": "宏華閣", + "address": "香港島東區京華道1-3號宏華閣" + }, + { + "building": "京華樓", + "address": "香港島東區京華道5-7號京華樓" + }, + { + "building": "富利來大廈", + "address": "香港島東區京華道9-27號富利來大廈" + }, + { + "building": "和富大樓", + "address": "香港島東區和富道128-132號和富大樓" + }, + { + "building": "明暉大廈(和富道)", + "address": "香港島東區和富道20-36號明暉大廈(和富道)" + }, + { + "building": "和富中心", + "address": "香港島東區和富道21-53號" + }, + { + "building": "豐昌大廈", + "address": "香港島東區和富道38-48號豐昌大廈" + }, + { + "building": "新和富大廈", + "address": "香港島東區和富道68-72號新和富大廈" + }, + { + "building": "仁寶閣", + "address": "香港島東區和富道74-82號仁寶閣" + }, + { + "building": "(和富道)銀輝大廈", + "address": "香港島東區和富道84-94號(和富道)銀輝大廈" + }, + { + "building": "僑裕大廈", + "address": "香港島東區和富道96-106號僑裕大廈" + }, + { + "building": "海景大廈(屈臣道)", + "address": "香港島東區屈臣道2-8號海景大廈(屈臣道)" + }, + { + "building": "怡翠苑", + "address": "香港島東區怡盛街1號怡翠苑" + }, + { + "building": "明園閣", + "address": "香港島東區明園西街19-23號明園閣" + }, + { + "building": "明苑中心", + "address": "香港島東區明園西街2-6號明苑中心" + }, + { + "building": "曉?", + "address": "香港島東區明園西街28號曉?" + }, + { + "building": "雅怡閣", + "address": "香港島東區明園西街36號雅怡閣" + }, + { + "building": "形品", + "address": "香港島東區明園西街38號形品" + }, + { + "building": "南珠大廈", + "address": "香港島東區明園西街7-9號南珠大廈" + }, + { + "building": "星島新聞集團大廈", + "address": "香港島東區東旺道3號星島新聞集團大廈" + }, + { + "building": "東貿廣場", + "address": "香港島東區東貿廣場" + }, + { + "building": "海暉大廈(芬尼街)", + "address": "香港島東區芬尼街22-26號海暉大廈(芬尼街)" + }, + { + "building": "僑英大廈", + "address": "香港島東區芬尼街2D-2H號僑英大廈" + }, + { + "building": "金威樓", + "address": "香港島東區金華街12-18號金威樓" + }, + { + "building": "明暉樓", + "address": "香港島東區金華街20-22號 / 望隆街13-15號明暉樓" + }, + { + "building": "錦華大樓(筲箕灣東大街)", + "address": "香港島東區金華街2-10號錦華大樓(筲箕灣東大街)" + }, + { + "building": "金華閣", + "address": "香港島東區金華街24號金華閣" + }, + { + "building": "金華街永華大廈", + "address": "香港島東區金華街26-30號金華街永華大廈" + }, + { + "building": "富康樓", + "address": "香港島東區金華街35-37號富康樓" + }, + { + "building": "協和大廈(愛秩序街)", + "address": "香港島東區金華街46-58號及愛秩序街22-26號協和大廈(愛秩序街)" + }, + { + "building": "榮華樓", + "address": "香港島東區金華街49-51號榮華樓" + }, + { + "building": "金旺樓(金華街)", + "address": "香港島東區金華街53-55號金旺樓(金華街)" + }, + { + "building": "金華街念慈樓", + "address": "香港島東區金華街57-59號金華街念慈樓" + }, + { + "building": "金華街金華樓", + "address": "香港島東區金華街61-67號金華街金華樓" + }, + { + "building": "嘉安苑", + "address": "香港島東區長康街12號嘉安苑" + }, + { + "building": "中天樓", + "address": "香港島東區長康街20 & 22號中天樓" + }, + { + "building": "豐華大廈", + "address": "香港島東區長康街21-23B號豐華大廈" + }, + { + "building": "民興工業大廈", + "address": "香港島東區阿公岩村里8號民興工業大廈" + }, + { + "building": "恆通資源中心", + "address": "香港島東區阿公岩村道18號恆通資源中心" + }, + { + "building": "讀者文摘大廈", + "address": "香港島東區阿公岩村道3號讀者文摘大廈" + }, + { + "building": "聯昇工業大廈", + "address": "香港島東區阿公岩村道4號聯昇工業大廈" + }, + { + "building": "東都中心", + "address": "香港島東區阿公岩村道5號東都中心" + }, + { + "building": "新高聲工業大廈", + "address": "香港島東區阿公岩村道6號新高聲工業大廈" + }, + { + "building": "精雅印刷集團大廈", + "address": "香港島東區阿公岩村道8號精雅印刷集團大廈" + }, + { + "building": "永華大廈", + "address": "香港島東區南安街23號永華大廈" + }, + { + "building": "嘉裕大廈", + "address": "香港島東區南安街3號嘉裕大廈" + }, + { + "building": "仲齊大廈", + "address": "香港島東區南安街67-71號仲齊大廈" + }, + { + "building": "德福樓", + "address": "香港島東區南安街73號德福樓" + }, + { + "building": "合榮大廈", + "address": "香港島東區南安街75號合榮大廈" + }, + { + "building": "海安商業中心", + "address": "香港島東區南安街83號海安商業中心" + }, + { + "building": "鯉景大廈", + "address": "香港島東區南安街93號鯉景大廈" + }, + { + "building": "南安閣", + "address": "香港島東區南安街95號南安閣" + }, + { + "building": "興業樓", + "address": "香港島東區南安街99號興業樓" + }, + { + "building": "國興樓", + "address": "香港島東區南康街1-3號國興樓" + }, + { + "building": "筲箕灣廣場", + "address": "香港島東區南康街17號筲箕灣廣場" + }, + { + "building": "康華大廈", + "address": "香港島東區南康街18號康華大廈" + }, + { + "building": "電燈中心", + "address": "香港島東區城市花園道 28號電燈中心" + }, + { + "building": "楓林花園", + "address": "香港島東區建華街" + }, + { + "building": "俊文樓", + "address": "香港島東區建華街14-16號俊文樓" + }, + { + "building": "福華洋樓", + "address": "香港島東區建華街17-19號福華洋樓" + }, + { + "building": "嘉文樓", + "address": "香港島東區建華街1-7號嘉文樓" + }, + { + "building": "宇宙閣B座", + "address": "香港島東區建華街18-26號宇宙閣B座" + }, + { + "building": "威明閣", + "address": "香港島東區建華街21-27號威明閣" + }, + { + "building": "建華花園", + "address": "香港島東區建華街2-8號建華花園" + }, + { + "building": "偉榮洋樓", + "address": "香港島東區建華街28號偉榮洋樓" + }, + { + "building": "永順大廈", + "address": "香港島東區建華街9號永順大廈" + }, + { + "building": "嘉寶大廈", + "address": "香港島東區春秧街102-108號嘉寶大廈" + }, + { + "building": "港逸軒", + "address": "香港島東區春秧街128號港逸軒" + }, + { + "building": "春秧街宜安大廈", + "address": "香港島東區春秧街55-71號春秧街宜安大廈" + }, + { + "building": "華誠洋樓", + "address": "香港島東區春秧街70-74號華誠洋樓" + }, + { + "building": "明秀大廈", + "address": "香港島東區春秧街91 A-B號明秀大廈" + }, + { + "building": "公利大廈", + "address": "香港島東區春秧街94-96號公利大廈" + }, + { + "building": "百嘉樂", + "address": "香港島東區柏架山道10-12號百嘉樂" + }, + { + "building": "柏架閣", + "address": "香港島東區柏架山道14-16號柏架閣" + }, + { + "building": "柏雅台第2座", + "address": "香港島東區柏架山道6-8號柏雅台第2座" + }, + { + "building": "豪廷峰", + "address": "香港島東區炮台山道28號豪廷峰" + }, + { + "building": "富澤花園", + "address": "香港島東區炮台山道32號富澤花園" + }, + { + "building": "金堡大廈", + "address": "香港島東區炮台山道5-13號金堡大廈" + }, + { + "building": "北角大廈", + "address": "香港島東區英皇道" + }, + { + "building": "麗池花園大廈", + "address": "香港島東區英皇道" + }, + { + "building": "寶峰園A座", + "address": "香港島東區英皇道" + }, + { + "building": "海景樓", + "address": "香港島東區英皇道1026號海景樓" + }, + { + "building": "海山樓", + "address": "香港島東區英皇道1028號海山樓" + }, + { + "building": "福昌樓", + "address": "香港島東區英皇道1032-1044號福昌樓" + }, + { + "building": "益昌大廈", + "address": "香港島東區英皇道1046號益昌大廈" + }, + { + "building": "益發大廈", + "address": "香港島東區英皇道1048號益發大廈" + }, + { + "building": "富通中心", + "address": "香港島東區英皇道1063號富通中心" + }, + { + "building": "東達中心", + "address": "香港島東區英皇道1065號東達中心" + }, + { + "building": "仁孚工業大廈", + "address": "香港島東區英皇道1067號仁孚工業大廈" + }, + { + "building": "康山花園", + "address": "香港島東區英皇道1128號康山花園" + }, + { + "building": "英皇道嘉信大廈A座", + "address": "香港島東區英皇道117-121號英皇道嘉信大廈A座" + }, + { + "building": "月明樓", + "address": "香港島東區英皇道125-133號月明樓" + }, + { + "building": "英皇大廈", + "address": "香港島東區英皇道153號英皇大廈" + }, + { + "building": "六合商業大廈", + "address": "香港島東區英皇道157號六合商業大廈" + }, + { + "building": "京都大廈", + "address": "香港島東區英皇道159-161號京都大廈" + }, + { + "building": "公主大廈", + "address": "香港島東區英皇道165-175號公主大廈" + }, + { + "building": "英皇中心", + "address": "香港島東區英皇道193-203號英皇中心" + }, + { + "building": "康澤花園", + "address": "香港島東區英皇道238號康澤花園" + }, + { + "building": "國都廣場", + "address": "香港島東區英皇道255號國都廣場" + }, + { + "building": "南方大廈", + "address": "香港島東區英皇道257-273號南方大廈" + }, + { + "building": "興漢大廈", + "address": "香港島東區英皇道26-36號興漢大廈" + }, + { + "building": "順利大廈", + "address": "香港島東區英皇道268-270號順利大廈" + }, + { + "building": "南天大廈", + "address": "香港島東區英皇道275號南天大廈" + }, + { + "building": "皇都戲院大廈", + "address": "香港島東區英皇道277-291號皇都戲院大廈" + }, + { + "building": "北角中心大廈英皇?麗大道商場", + "address": "香港島東區英皇道278-288號北角中心大廈英皇?麗大道商場" + }, + { + "building": "新時代廣場", + "address": "香港島東區英皇道278-288號新時代廣場" + }, + { + "building": "璇宮大廈", + "address": "香港島東區英皇道293-299號璇宮大廈" + }, + { + "building": "麗宮大廈", + "address": "香港島東區英皇道301-319號麗宮大廈" + }, + { + "building": "雲華大廈", + "address": "香港島東區英皇道310-316號雲華大廈" + }, + { + "building": "宏安閣", + "address": "香港島東區英皇道310A號宏安閣" + }, + { + "building": "恒英大廈", + "address": "香港島東區英皇道318-328號恒英大廈" + }, + { + "building": "香港皇冠大廈", + "address": "香港島東區英皇道321號香港皇冠大廈" + }, + { + "building": "美都大廈", + "address": "香港島東區英皇道330-332號美都大廈" + }, + { + "building": "青雲大廈", + "address": "香港島東區英皇道334-336號青雲大廈" + }, + { + "building": "恒生北角大廈", + "address": "香港島東區英皇道335-341號恒生北角大廈" + }, + { + "building": "華懋交易廣場2期", + "address": "香港島東區英皇道338號華懋交易廣場2期" + }, + { + "building": "新達大廈", + "address": "香港島東區英皇道343-349A號新達大廈" + }, + { + "building": "銀輝中心", + "address": "香港島東區英皇道351-353號銀輝中心" + }, + { + "building": "裕益大廈", + "address": "香港島東區英皇道363-365號裕益大廈" + }, + { + "building": "振華大廈", + "address": "香港島東區英皇道370-374號振華大廈" + }, + { + "building": "成明閣", + "address": "香港島東區英皇道375-377號成明閣" + }, + { + "building": "英皇道美麗閣", + "address": "香港島東區英皇道376-380號英皇道美麗閣" + }, + { + "building": "福英大廈", + "address": "香港島東區英皇道379-381號福英大廈" + }, + { + "building": "華都大廈", + "address": "香港島東區英皇道382-384號華都大廈" + }, + { + "building": "北角商業大廈", + "address": "香港島東區英皇道383-385號北角商業大廈" + }, + { + "building": "北港商業大廈", + "address": "香港島東區英皇道388號北港商業大廈" + }, + { + "building": "豫港電力發展大廈", + "address": "香港島東區英皇道389號豫港電力發展大廈" + }, + { + "building": "亞洲大廈", + "address": "香港島東區英皇道390-394號亞洲大廈" + }, + { + "building": "恆隆銀行東區分行大廈", + "address": "香港島東區英皇道391號恆隆銀行東區分行大廈" + }, + { + "building": "僑冠大廈", + "address": "香港島東區英皇道395號僑冠大廈" + }, + { + "building": "康威大廈", + "address": "香港島東區英皇道406號康威大廈" + }, + { + "building": "僑輝大廈", + "address": "香港島東區英皇道413-421號僑輝大廈" + }, + { + "building": "新都城大廈", + "address": "香港島東區英皇道416-430號新都城大廈" + }, + { + "building": "安寧大廈", + "address": "香港島東區英皇道425號安寧大廈" + }, + { + "building": "珠璣大廈", + "address": "香港島東區英皇道435號珠璣大廈" + }, + { + "building": "漢宮大廈", + "address": "香港島東區英皇道441-447號漢宮大廈" + }, + { + "building": "美輪大廈", + "address": "香港島東區英皇道442-452號美輪大廈" + }, + { + "building": "華興大廈", + "address": "香港島東區英皇道449-455號華興大廈" + }, + { + "building": "英輝大廈", + "address": "香港島東區英皇道457-459號英輝大廈" + }, + { + "building": "樂嘉中心第一座", + "address": "香港島東區英皇道466號樂嘉中心第一座" + }, + { + "building": "昌明洋樓B座", + "address": "香港島東區英皇道480號昌明洋樓B座" + }, + { + "building": "安輝樓", + "address": "香港島東區英皇道482號安輝樓" + }, + { + "building": "東寶大廈 (英皇道)", + "address": "香港島東區英皇道483-497號東寶大廈 (英皇道)" + }, + { + "building": "英華閣", + "address": "香港島東區英皇道486, 488號英華閣" + }, + { + "building": "北角工業大廈", + "address": "香港島東區英皇道499號" + }, + { + "building": "康明苑", + "address": "香港島東區英皇道52號康明苑" + }, + { + "building": "健威花園", + "address": "香港島東區英皇道560號健威花園" + }, + { + "building": "康麗苑", + "address": "香港島東區英皇道56號康麗苑" + }, + { + "building": "康福園", + "address": "香港島東區英皇道60號康福園" + }, + { + "building": "寶石樓(英皇道)", + "address": "香港島東區英皇道614-628號寶石樓(英皇道)" + }, + { + "building": "怡景大廈(英皇道)", + "address": "香港島東區英皇道630號怡景大廈(英皇道)" + }, + { + "building": "慧雲峰", + "address": "香港島東區英皇道632號慧雲峰" + }, + { + "building": "科匯中心", + "address": "香港島東區英皇道651號科匯中心" + }, + { + "building": "東祥工廠大廈", + "address": "香港島東區英皇道653-655號" + }, + { + "building": "泓富產業千禧廣場", + "address": "香港島東區英皇道663-665號泓富產業千禧廣場" + }, + { + "building": "健康村重建二期 康欣閣", + "address": "香港島東區英皇道668號健康村重建二期 康欣閣" + }, + { + "building": "健康村重建二期 康祥閣", + "address": "香港島東區英皇道668號健康村重建二期 康祥閣" + }, + { + "building": "健康村重建二期 康勝閣", + "address": "香港島東區英皇道668號健康村重建二期 康勝閣" + }, + { + "building": "英皇道榮華工業大廈", + "address": "香港島東區英皇道677號英皇道榮華工業大廈" + }, + { + "building": "建康花園", + "address": "香港島東區英皇道68號建康花園" + }, + { + "building": "友邦香港大樓", + "address": "香港島東區英皇道734-738號友邦香港大樓" + }, + { + "building": "民新大廈", + "address": "香港島東區英皇道842-850號民新大廈" + }, + { + "building": "麗都大廈", + "address": "香港島東區英皇道860-878號麗都大廈" + }, + { + "building": "麗華樓", + "address": "香港島東區英皇道867-881號麗華樓" + }, + { + "building": "富景閣", + "address": "香港島東區英皇道885-891號富景閣" + }, + { + "building": "金舫大廈", + "address": "香港島東區英皇道893-899號金舫大廈" + }, + { + "building": "華信花園", + "address": "香港島東區英皇道898號華信花園" + }, + { + "building": "英麗閣A座", + "address": "香港島東區英皇道901-907號英麗閣A座" + }, + { + "building": "英麗閣B座", + "address": "香港島東區英皇道901-907號英麗閣B座" + }, + { + "building": "英麗閣D座", + "address": "香港島東區英皇道901號英麗閣D座" + }, + { + "building": "御皇臺", + "address": "香港島東區英皇道933號御皇臺" + }, + { + "building": "寶新閣", + "address": "香港島東區英皇道951-953號寶新閣" + }, + { + "building": "惠芳閣", + "address": "香港島東區英皇道955-957號惠芳閣" + }, + { + "building": "多寶樓", + "address": "香港島東區英皇道965-965A號多寶樓" + }, + { + "building": "英皇大樓", + "address": "香港島東區英皇道969-971號英皇大樓" + }, + { + "building": "太古坊濠豐大廈", + "address": "香港島東區英皇道979號 / 華蘭路22號太古坊濠豐大廈" + }, + { + "building": "太古坊多盛大廈", + "address": "香港島東區英皇道979號太古坊多盛大廈" + }, + { + "building": "太古坊林肯大廈", + "address": "香港島東區英皇道979號太古坊林肯大廈" + }, + { + "building": "太古坊康橋大廈", + "address": "香港島東區英皇道979號太古坊康橋大廈" + }, + { + "building": "太古坊電訊大廈 電訊盈科中心", + "address": "香港島東區英皇道979號太古坊電訊盈科中心" + }, + { + "building": "康和大廈", + "address": "香港島東區英皇道979號康和大廈" + }, + { + "building": "瑞士樓", + "address": "香港島東區英皇道985-987號瑞士樓" + }, + { + "building": "新威園", + "address": "香港島東區英皇道989號新威園" + }, + { + "building": "得利樓", + "address": "香港島東區英皇道993號得利樓" + }, + { + "building": "寶利大廈", + "address": "香港島東區英皇道995號寶利大廈" + }, + { + "building": "景翠苑", + "address": "香港島東區峰霞道8號景翠苑" + }, + { + "building": "國賓大廈", + "address": "香港島東區書局街26-28號國賓大廈" + }, + { + "building": "建邦大廈", + "address": "香港島東區書局街27B號建邦大廈" + }, + { + "building": "高威閣第", + "address": "香港島東區柴灣道111號高威閣" + }, + { + "building": "高威閣東港城", + "address": "香港島東區柴灣道111號高威閣東港城" + }, + { + "building": "高威廣場", + "address": "香港島東區柴灣道111號高威廣場" + }, + { + "building": "華泰大廈", + "address": "香港島東區柴灣道220號華泰大廈" + }, + { + "building": "新翠花園", + "address": "香港島東區柴灣道233號新翠花園" + }, + { + "building": "耀園花園大廈", + "address": "香港島東區柴灣道27號耀園花園大廈" + }, + { + "building": "香苑大廈", + "address": "香港島東區柴灣道29號香苑大廈" + }, + { + "building": "永利中心", + "address": "香港島東區柴灣道333號" + }, + { + "building": "宏德居", + "address": "香港島東區柴灣道341號宏德居德壽樓" + }, + { + "building": "金源洋樓", + "address": "香港島東區柴灣道345號金源洋樓" + }, + { + "building": "樂軒臺", + "address": "香港島東區柴灣道350號樂軒臺" + }, + { + "building": "柴灣雅麗閣", + "address": "香港島東區柴灣道392號柴灣雅麗閣" + }, + { + "building": "富安閣", + "address": "香港島東區柴灣道394號富安閣" + }, + { + "building": "富城閣", + "address": "香港島東區柴灣道396號富城閣" + }, + { + "building": "第一亞洲廣場", + "address": "香港島東區柴灣道399號第一亞洲廣場" + }, + { + "building": "樂翠台(泰民街)第1座", + "address": "香港島東區泰民街11-15號樂翠台(泰民街)" + }, + { + "building": "康翠臺", + "address": "香港島東區泰民街4號康翠臺" + }, + { + "building": "海光苑", + "address": "香港島東區海光街" + }, + { + "building": "漢威大廈(海光街)", + "address": "香港島東區海光街11號漢威大廈(海光街)" + }, + { + "building": "多寶樓", + "address": "香港島東區海光街18-24號多寶樓" + }, + { + "building": "太豐樓", + "address": "香港島東區海光街26-36號太豐樓" + }, + { + "building": "雁亭", + "address": "香港島東區海晏街38號雁亭" + }, + { + "building": "美德園", + "address": "香港島東區海晏街50號美德園" + }, + { + "building": "禮林大廈", + "address": "香港島東區海晏街5-7號禮林大廈" + }, + { + "building": "華昇大廈", + "address": "香港島東區海晏街9-15號華昇大廈" + }, + { + "building": "多寶樓", + "address": "香港島東區海康街11-17號多寶樓" + }, + { + "building": "多寶樓", + "address": "香港島東區海堤街2,2A-4號 / 芬尼街2J-2M號 / 海康街1號 / 海光街4號多寶樓" + }, + { + "building": "龍景大廈", + "address": "香港島東區海堤街6-16號龍景大廈" + }, + { + "building": "東港中心", + "address": "香港島東區海澤街28號東港中心" + }, + { + "building": "海傍新樓", + "address": "香港島東區海灣街" + }, + { + "building": "華懋交易廣場", + "address": "香港島東區海灣街1號華懋交易廣場" + }, + { + "building": "嘉榮大廈(海灣街)", + "address": "香港島東區海灣街4-6號嘉榮大廈(海灣街)" + }, + { + "building": "海灣新樓", + "address": "香港島東區海灣街9-29號海灣新樓" + }, + { + "building": "康蕙花園1座", + "address": "香港島東區祐民街38號康蕙花園1座" + }, + { + "building": "康蕙花園第二座", + "address": "香港島東區祐民街38號康蕙花園第二座" + }, + { + "building": "茵翠苑茵榮閣", + "address": "香港島東區茵翠街10-12號茵翠苑茵榮閣" + }, + { + "building": "悅翠苑A座", + "address": "香港島東區茵翠街9號悅翠苑A座" + }, + { + "building": "啟協大廈", + "address": "香港島東區馬寶道18號啟協大廈" + }, + { + "building": "馬寶道萬寶大廈", + "address": "香港島東區馬寶道1R號馬寶道萬寶大廈" + }, + { + "building": "華匯中心", + "address": "香港島東區馬寶道28號華匯中心" + }, + { + "building": "馬寶居", + "address": "香港島東區馬寶道2F-2H號馬寶居" + }, + { + "building": "寶馬花園", + "address": "香港島東區馬寶道33號寶馬花園" + }, + { + "building": "馬寶道華禮大廈", + "address": "香港島東區馬寶道62-76號馬寶道華禮大廈" + }, + { + "building": "康樂大廈", + "address": "香港島東區馬寶道77-87號康樂大廈" + }, + { + "building": "健康街西1-11號", + "address": "香港島東區健康街西1-11號" + }, + { + "building": "中原大廈", + "address": "香港島東區健康街東23-25號中原大廈" + }, + { + "building": "南豐新?", + "address": "香港島東區基利坊" + }, + { + "building": "?蕙苑康?閣", + "address": "香港島東區基利路" + }, + { + "building": "逸樺園", + "address": "香港島東區基利路1-3號逸樺園" + }, + { + "building": "太吉樓", + "address": "香港島東區基利路7號太吉樓" + }, + { + "building": "發達中心", + "address": "香港島東區常安街77號發達中心" + }, + { + "building": "雅景閣", + "address": "香港島東區康平街4號雅景閣" + }, + { + "building": "富明閣", + "address": "香港島東區康平街6號富明閣" + }, + { + "building": "華裕閣", + "address": "香港島東區康平街8號華裕閣" + }, + { + "building": "新力工業大廈", + "address": "香港島東區康民街10號新力工業大廈" + }, + { + "building": "康民工業中心", + "address": "香港島東區康民街2號康民工業中心" + }, + { + "building": "灣景園", + "address": "香港島東區康民街3號灣景園" + }, + { + "building": "金萬豐工業大廈", + "address": "香港島東區康民街6號金萬豐工業大廈" + }, + { + "building": "康景花園", + "address": "香港島東區康柏徑10號康景花園" + }, + { + "building": "太祥樓", + "address": "香港島東區康祥街2號太祥樓" + }, + { + "building": "太順樓", + "address": "香港島東區康祥街4號太順樓" + }, + { + "building": "太富樓", + "address": "香港島東區康祥街6號太富樓" + }, + { + "building": "太康樓", + "address": "香港島東區康祥街8號太康樓" + }, + { + "building": "康輝園", + "address": "香港島東區康福臺1號康輝園" + }, + { + "building": "康平閣", + "address": "香港島東區康福臺6號康平閣" + }, + { + "building": "惠風閣", + "address": "香港島東區康福臺7A號惠風閣" + }, + { + "building": "康盛苑", + "address": "香港島東區康福臺7號康盛苑" + }, + { + "building": "合隆工廠大廈", + "address": "香港島東區望隆街1號合隆工廠大廈" + }, + { + "building": "清華大廈", + "address": "香港島東區清華街1-3號清華大廈" + }, + { + "building": "富景閣", + "address": "香港島東區清華街18-24號富景閣" + }, + { + "building": "清暉臺", + "address": "香港島東區清華街4-8號清暉臺" + }, + { + "building": "樂景樓", + "address": "香港島東區清華街5號樂景樓" + }, + { + "building": "杏花?", + "address": "香港島東區盛泰道100號杏花?" + }, + { + "building": "杏花園第2座", + "address": "香港島東區盛泰道100號杏花園第2座" + }, + { + "building": "致高工業大廈", + "address": "香港島東區祥利街17號致高工業大廈" + }, + { + "building": "聯發隆工業大廈", + "address": "香港島東區祥利街19號聯發隆工業大廈" + }, + { + "building": "銀星中心", + "address": "香港島東區祥利街26號銀星中心" + }, + { + "building": "國貿中心", + "address": "香港島東區祥利街29-31號國貿中心" + }, + { + "building": "萬峰工業大廈", + "address": "香港島東區祥利街7號萬峰工業大廈" + }, + { + "building": "長華工業大廈", + "address": "香港島東區船塢里10-12號長華工業大廈" + }, + { + "building": "華廈工業大廈", + "address": "香港島東區船塢里8號華廈工業大廈" + }, + { + "building": "建業樓", + "address": "香港島東區連城道14-32號建業樓" + }, + { + "building": "仁樂大廈", + "address": "香港島東區連城道4-12號及環翠道120號仁樂大廈" + }, + { + "building": "華曦大廈", + "address": "香港島東區堡壘街10-16號華曦大廈" + }, + { + "building": "偉文大廈", + "address": "香港島東區堡壘街11-17號偉文大廈" + }, + { + "building": "華健大廈", + "address": "香港島東區堡壘街18-20號華健大廈" + }, + { + "building": "景文樓", + "address": "香港島東區堡壘街19-19A號景文樓" + }, + { + "building": "美嘉洋樓", + "address": "香港島東區堡壘街21-23號美嘉洋樓" + }, + { + "building": "堡壘大樓", + "address": "香港島東區堡壘街25-27號堡壘大樓" + }, + { + "building": "寶翠洋樓", + "address": "香港島東區堡壘街28-34A號寶翠洋樓" + }, + { + "building": "永寶大廈", + "address": "香港島東區堡壘街33號永寶大廈" + }, + { + "building": "華海大廈", + "address": "香港島東區堡壘街3-5號華海大廈" + }, + { + "building": "美威大廈", + "address": "香港島東區堡壘街36-38號美威大廈" + }, + { + "building": "富澤軒", + "address": "香港島東區堡壘街38A號富澤軒" + }, + { + "building": "怡家洋樓", + "address": "香港島東區堡壘街41-43號怡家洋樓" + }, + { + "building": "怡新大廈", + "address": "香港島東區堡壘街42-46A號怡新大廈" + }, + { + "building": "景興閣", + "address": "香港島東區堡壘街48-52號景興閣" + }, + { + "building": "寶豐大廈(堡壘街)", + "address": "香港島東區堡壘街49-55號寶豐大廈(堡壘街)" + }, + { + "building": "怡昇洋樓", + "address": "香港島東區堡壘街54-60號怡昇洋樓" + }, + { + "building": "怡寶洋樓", + "address": "香港島東區堡壘街57-59號怡寶洋樓" + }, + { + "building": "寶峰閣", + "address": "香港島東區堡壘街61號寶峰閣" + }, + { + "building": "百佳閣", + "address": "香港島東區堡壘街62-64號百佳閣" + }, + { + "building": "華康大廈", + "address": "香港島東區堡壘街6-8號華康大廈" + }, + { + "building": "兆文樓", + "address": "香港島東區堡壘街7-9號兆文樓" + }, + { + "building": "寶蕊樓", + "address": "香港島東區惠亨街19號寶蕊樓" + }, + { + "building": "偉亨樓", + "address": "香港島東區惠亨街25號偉亨樓" + }, + { + "building": "渣華商業中心", + "address": "香港島東區渣華道124-132號渣華商業中心" + }, + { + "building": "嘉威大廈(渣華道)", + "address": "香港島東區渣華道146-166號嘉威大廈(渣華道)" + }, + { + "building": "僑華大廈", + "address": "香港島東區渣華道188-194號僑華大廈" + }, + { + "building": "嘉?商業大廈", + "address": "香港島東區渣華道18號嘉?商業大廈" + }, + { + "building": "嘉華國際中心", + "address": "香港島東區渣華道191號嘉華國際中心" + }, + { + "building": "嘉富大廈(渣華道)", + "address": "香港島東區渣華道196-202號嘉富大廈(渣華道)" + }, + { + "building": "港輝豪庭", + "address": "香港島東區渣華道28號港輝豪庭" + }, + { + "building": "宏裕大廈", + "address": "香港島東區渣華道33-35號宏裕大廈" + }, + { + "building": "永光閣", + "address": "香港島東區渣華道3-5號永光閣" + }, + { + "building": "香港中華煤氣有限公司", + "address": "香港島東區渣華道363號香港中華煤氣有限公司" + }, + { + "building": "清華樓", + "address": "香港島東區渣華道37-39號清華樓" + }, + { + "building": "嘉興大廈", + "address": "香港島東區渣華道41-47號嘉興大廈" + }, + { + "building": "耀明大廈", + "address": "香港島東區渣華道42-48號耀明大廈" + }, + { + "building": "胡日皆大廈", + "address": "香港島東區渣華道52-60A號胡日皆大廈" + }, + { + "building": "盈富閣(渣華道)", + "address": "香港島東區渣華道55號盈富閣(渣華道)" + }, + { + "building": "添金閣", + "address": "香港島東區渣華道57-59號添金閣" + }, + { + "building": "華成大廈", + "address": "香港島東區渣華道61 & 63號華成大廈" + }, + { + "building": "渣華道高發大廈", + "address": "香港島東區渣華道62-68號渣華道高發大廈" + }, + { + "building": "仁和大廈", + "address": "香港島東區渣華道70號仁和大廈" + }, + { + "building": "得勝大樓", + "address": "香港島東區渣華道88-94號得勝大樓" + }, + { + "building": "威邦商業中心", + "address": "香港島東區渣華道8號威邦商業中心" + }, + { + "building": "旭威閣", + "address": "香港島東區琴行街26號旭威閣" + }, + { + "building": "建明閣", + "address": "香港島東區琴行街2A-2B號建明閣" + }, + { + "building": "愛琴軒", + "address": "香港島東區琴行街2C, 2D號愛琴軒" + }, + { + "building": "北角好景中心", + "address": "香港島東區琴行街4號北角好景中心" + }, + { + "building": "華蘭花園", + "address": "香港島東區華蘭路" + }, + { + "building": "港島東中心", + "address": "香港島東區華蘭路18號港島東中心" + }, + { + "building": "豐榮苑", + "address": "香港島東區華蘭路1號豐榮苑" + }, + { + "building": "華蘭中心", + "address": "香港島東區華蘭路20號華蘭中心" + }, + { + "building": "大昌行商業中心", + "address": "香港島東區華蘭路25號大昌行商業中心" + }, + { + "building": "惠安苑", + "address": "香港島東區華蘭路4號惠安苑" + }, + { + "building": "滿華樓", + "address": "香港島東區萃文道9-23號滿華樓" + }, + { + "building": "雲景道海景台", + "address": "香港島東區雲景道31號雲景道海景台" + }, + { + "building": "海天峰", + "address": "香港島東區雲景道35號海天峰" + }, + { + "building": "雲景台", + "address": "香港島東區雲景道38號雲景台" + }, + { + "building": "怡和苑", + "address": "香港島東區雲景道39號怡和苑" + }, + { + "building": "雅景台", + "address": "香港島東區雲景道40號雅景台" + }, + { + "building": "雲景樓", + "address": "香港島東區雲景道41號雲景樓" + }, + { + "building": "恆景閣", + "address": "香港島東區雲景道43-49號恆景閣" + }, + { + "building": "萬德閣", + "address": "香港島東區雲景道46號萬德閣" + }, + { + "building": "富麗園", + "address": "香港島東區雲景道50號富麗園" + }, + { + "building": "珊瑚閣B, C座", + "address": "香港島東區雲景道51-67號珊瑚閣B, C座" + }, + { + "building": "雲景道", + "address": "香港島東區雲景道56號雲景道" + }, + { + "building": "?景大廈", + "address": "香港島東區雲景道60號?景大廈" + }, + { + "building": "新利大廈", + "address": "香港島東區愛民街6-50號新利大廈" + }, + { + "building": "東濤苑", + "address": "香港島東區愛信道33號東濤苑" + }, + { + "building": "愛秩序樓", + "address": "香港島東區愛秩序街1-3號愛秩序樓" + }, + { + "building": "東旭苑", + "address": "香港島東區愛賢街8號東旭苑" + }, + { + "building": "愛蝶灣", + "address": "香港島東區愛禮街2號愛蝶灣" + }, + { + "building": "冠華鏡廠(第二)工業大廈", + "address": "香港島東區新安街4號冠華鏡廠(第二)工業大廈" + }, + { + "building": "碧麗閣(新成街)", + "address": "香港島東區新成街22號碧麗閣(新成街)" + }, + { + "building": "樂群大廈", + "address": "香港島東區新成街2號樂群大廈" + }, + { + "building": "新成中心", + "address": "香港島東區新成街8號新成中心" + }, + { + "building": "森龍工業大廈", + "address": "香港島東區新業街11號森龍工業大廈" + }, + { + "building": "王子工業大廈A座", + "address": "香港島東區新業街5號王子工業大廈A座" + }, + { + "building": "安力工業中心", + "address": "香港島東區新業街6號安力工業中心" + }, + { + "building": "協興工業大廈", + "address": "香港島東區新業街7號協興工業大廈" + }, + { + "building": "八號商業廣場", + "address": "香港島東區新業街8號八號商業廣場" + }, + { + "building": "新業大廈", + "address": "香港島東區新業街9號新業大廈" + }, + { + "building": "利嘉中心", + "address": "香港島東區筲箕彎道361號利嘉中心" + }, + { + "building": "安樂樓", + "address": "香港島東區筲箕灣大街東15號安樂樓" + }, + { + "building": "麗東海景豪苑", + "address": "香港島東區筲箕灣東大街" + }, + { + "building": "東泰大廈", + "address": "香港島東區筲箕灣東大街118-124號東泰大廈" + }, + { + "building": "筲箕灣東大街金發大廈", + "address": "香港島東區筲箕灣東大街11號筲箕灣東大街金發大廈" + }, + { + "building": "義德大樓", + "address": "香港島東區筲箕灣東大街121-131號義德大樓" + }, + { + "building": "東明樓(筲箕灣東大街)", + "address": "香港島東區筲箕灣東大街133-137號東明樓(筲箕灣東大街)" + }, + { + "building": "筲箕灣好景樓", + "address": "香港島東區筲箕灣東大街134號筲箕灣好景樓" + }, + { + "building": "仿文樓", + "address": "香港島東區筲箕灣東大街138-142號仿文樓" + }, + { + "building": "東康樓(筲箕灣東大街)", + "address": "香港島東區筲箕灣東大街139號東康樓(筲箕灣東大街)" + }, + { + "building": "金基大廈(筲箕灣東大街)", + "address": "香港島東區筲箕灣東大街141-151號金基大廈(筲箕灣東大街)" + }, + { + "building": "東大樓", + "address": "香港島東區筲箕灣東大街144-148號 及 工廠街10-14號東大樓" + }, + { + "building": "東輝大廈", + "address": "香港島東區筲箕灣東大街159-167號東輝大廈" + }, + { + "building": "東紫樓", + "address": "香港島東區筲箕灣東大街169-171號東紫樓" + }, + { + "building": "瑞興閣", + "address": "香港島東區筲箕灣東大街173-175號瑞興閣" + }, + { + "building": "東豪大廈", + "address": "香港島東區筲箕灣東大街177-183號東豪大廈" + }, + { + "building": "筲箕灣順景樓", + "address": "香港島東區筲箕灣東大街185-189號 / 工廠街6-8號筲箕灣順景樓" + }, + { + "building": "東旺樓", + "address": "香港島東區筲箕灣東大街18號東旺樓" + }, + { + "building": "東興大廈(筲箕灣東大街)", + "address": "香港島東區筲箕灣東大街28-40A號東興大廈(筲箕灣東大街)" + }, + { + "building": "東勝樓(筲箕灣東大街)", + "address": "香港島東區筲箕灣東大街31-33號東勝樓(筲箕灣東大街)" + }, + { + "building": "東寶大廈", + "address": "香港島東區筲箕灣東大街4,8,10號東寶大廈" + }, + { + "building": "東灣閣", + "address": "香港島東區筲箕灣東大街51號東灣閣" + }, + { + "building": "東強大廈", + "address": "香港島東區筲箕灣東大街54-60號東強大廈" + }, + { + "building": "東威大廈", + "address": "香港島東區筲箕灣東大街59-99號東威大廈" + }, + { + "building": "廣信樓", + "address": "香港島東區筲箕灣東大街76號廣信樓" + }, + { + "building": "景輝大廈", + "address": "香港島東區筲箕灣東大街94-112號景輝大廈" + }, + { + "building": "香島第一座", + "address": "香港島東區筲箕灣柴灣道 33??? 香島第一座" + }, + { + "building": "捷富樓", + "address": "香港島東區筲箕灣道106-108號捷富樓" + }, + { + "building": "欣景花園", + "address": "香港島東區筲箕灣道111號欣景花園" + }, + { + "building": "筲箕灣道金寶大廈", + "address": "香港島東區筲箕灣道121-131號筲箕灣道金寶大廈" + }, + { + "building": "富裕中心", + "address": "香港島東區筲箕灣道138號富裕中心" + }, + { + "building": "高望大樓", + "address": "香港島東區筲箕灣道142-146號高望大樓" + }, + { + "building": "都寧樓東翼及西翼", + "address": "香港島東區筲箕灣道152, 154號都寧樓東翼及西翼" + }, + { + "building": "譽·東", + "address": "香港島東區筲箕灣道157號譽·東" + }, + { + "building": "華樂樓", + "address": "香港島東區筲箕灣道162-164號華樂樓" + }, + { + "building": "都會大樓", + "address": "香港島東區筲箕灣道195-201號都會大樓" + }, + { + "building": "福怡大廈(筲箕灣道)", + "address": "香港島東區筲箕灣道220-228號福怡大廈(筲箕灣道)" + }, + { + "building": "金星樓(筲箕灣道)", + "address": "香港島東區筲箕灣道230-232號金星樓(筲箕灣道)" + }, + { + "building": "福昇大廈", + "address": "香港島東區筲箕灣道234-238號福昇大廈" + }, + { + "building": "廣南興大廈", + "address": "香港島東區筲箕灣道239A號廣南興大廈" + }, + { + "building": "海富樓", + "address": "香港島東區筲箕灣道240-242號海富樓" + }, + { + "building": "萬康大廈", + "address": "香港島東區筲箕灣道241-249號萬康大廈" + }, + { + "building": "御景軒", + "address": "香港島東區筲箕灣道246-254號御景軒" + }, + { + "building": "都城大樓", + "address": "香港島東區筲箕灣道251-261號都城大樓" + }, + { + "building": "寶文大廈", + "address": "香港島東區筲箕灣道260-264號寶文大廈" + }, + { + "building": "筲箕灣道南華大廈", + "address": "香港島東區筲箕灣道269-271號筲箕灣道南華大廈" + }, + { + "building": "嘉福大廈", + "address": "香港島東區筲箕灣道289-293號嘉福大廈" + }, + { + "building": "筲箕灣新成大樓", + "address": "香港島東區筲箕灣道290-294號筲箕灣新成大樓" + }, + { + "building": "海福大廈(筲箕灣道)", + "address": "香港島東區筲箕灣道300號海福大廈(筲箕灣道)" + }, + { + "building": "捷利商業大廈", + "address": "香港島東區筲箕灣道30-36號捷利商業大廈" + }, + { + "building": "譽都", + "address": "香港島東區筲箕灣道305號譽都" + }, + { + "building": "廣益大廈", + "address": "香港島東區筲箕灣道306-310號廣益大廈" + }, + { + "building": "德雲樓", + "address": "香港島東區筲箕灣道307-309號德雲樓" + }, + { + "building": "潤民商業中心", + "address": "香港島東區筲箕灣道324號潤民商業中心" + }, + { + "building": "康泰大樓", + "address": "香港島東區筲箕灣道326-332號康泰大樓" + }, + { + "building": "麗灣大廈", + "address": "香港島東區筲箕灣道33-35號 / 太康街1號麗灣大廈" + }, + { + "building": "樂融軒", + "address": "香港島東區筲箕灣道333號樂融軒" + }, + { + "building": "筲箕灣道華寶大廈", + "address": "香港島東區筲箕灣道334-336號筲箕灣道華寶大廈" + }, + { + "building": "利發樓", + "address": "香港島東區筲箕灣道352-354號利發樓" + }, + { + "building": "達利樓", + "address": "香港島東區筲箕灣道356-358號達利樓" + }, + { + "building": "海灣華庭", + "address": "香港島東區筲箕灣道368號海灣華庭" + }, + { + "building": "筲箕灣道永興大樓", + "address": "香港島東區筲箕灣道374-380號筲箕灣道永興大樓" + }, + { + "building": "益基大廈", + "address": "香港島東區筲箕灣道382-386號益基大廈" + }, + { + "building": "華堂大廈", + "address": "香港島東區筲箕灣道38-44號華堂大廈" + }, + { + "building": "逢源大廈", + "address": "香港島東區筲箕灣道388-414號逢源大廈" + }, + { + "building": "富景大樓", + "address": "香港島東區筲箕灣道416-426號富景大樓" + }, + { + "building": "東安大廈", + "address": "香港島東區筲箕灣道428-432E號東安大廈" + }, + { + "building": "陽安大廈", + "address": "香港島東區筲箕灣道50-54號陽安大廈" + }, + { + "building": "西灣河中心", + "address": "香港島東區筲箕灣道66-68號西灣河中心" + }, + { + "building": "新利大樓", + "address": "香港島東區筲箕灣道82-84號新利大樓" + }, + { + "building": "泰寧樓", + "address": "香港島東區筲箕灣道88-90,90A號泰寧樓" + }, + { + "building": "業寧大廈", + "address": "香港島東區筲箕灣道92-102號業寧大廈" + }, + { + "building": "鴻恩大廈", + "address": "香港島東區聖十字徑38號鴻恩大廈" + }, + { + "building": "?宜大廈", + "address": "香港島東區電氣道166-168號?宜大廈" + }, + { + "building": "康宏匯", + "address": "香港島東區電氣道169號康宏匯" + }, + { + "building": "百家利中心", + "address": "香港島東區電氣道180號百家利中心" + }, + { + "building": "友邦廣場", + "address": "香港島東區電氣道183號友邦廣場" + }, + { + "building": "城市花園", + "address": "香港島東區電氣道233號城市花園" + }, + { + "building": "華凱大廈B座", + "address": "香港島東區電氣道254-280號華凱大廈B座" + }, + { + "building": "益高工業大廈", + "address": "香港島東區嘉業街10號益高工業大廈" + }, + { + "building": "百樂門大廈", + "address": "香港島東區嘉業街12號百樂門大廈" + }, + { + "building": "明報工業中心", + "address": "香港島東區嘉業街18號明報工業中心" + }, + { + "building": "安全貨倉工業大廈", + "address": "香港島東區嘉業街56號安全貨倉工業大廈" + }, + { + "building": "誠興大廈", + "address": "香港島東區寧富街3號誠興大廈" + }, + { + "building": "天宮台", + "address": "香港島東區熙和街1-17號天宮台" + }, + { + "building": "海和苑", + "address": "香港島東區熙和街28號海和苑" + }, + { + "building": "利都樓", + "address": "香港島東區福元街7 AND 9號 / 英皇道183號利都樓" + }, + { + "building": "海峰園高峰閣", + "address": "香港島東區福蔭道5號海峰園高峰閣" + }, + { + "building": "百寧大廈", + "address": "香港島東區廟東街5-11號百寧大廈" + }, + { + "building": "曉翠苑", + "address": "香港島東區曉翠街7號曉翠苑" + }, + { + "building": "富蘭苑", + "address": "香港島東區糖水道5-7號富蘭苑" + }, + { + "building": "慶安樓", + "address": "香港島東區興民街" + }, + { + "building": "濱景樓", + "address": "香港島東區興民街38-44號濱景樓" + }, + { + "building": "興民大廈", + "address": "香港島東區興民街46-48號興民大廈" + }, + { + "building": "永興閣", + "address": "香港島東區興民街50號永興閣" + }, + { + "building": "雅歌苑(興民街)", + "address": "香港島東區興民街54號雅歌苑(興民街)" + }, + { + "building": "海天廣場", + "address": "香港島東區興民街68號海天廣場" + }, + { + "building": "東發大廈", + "address": "香港島東區錦屏街" + }, + { + "building": "錦明園", + "address": "香港島東區錦屏街11號錦明園" + }, + { + "building": "鴻福大樓", + "address": "香港島東區錦屏街40-78號鴻福大樓" + }, + { + "building": "金海大樓第一期", + "address": "香港島東區濱海街" + }, + { + "building": "中興大廈", + "address": "香港島東區濱海街1-15號中興大廈" + }, + { + "building": "豐業街業昌中心", + "address": "香港島東區豐業街10號豐業街業昌中心" + }, + { + "building": "啟力工業大廈BLOCK B", + "address": "香港島東區豐業街12號啟力工業大廈BLOCK B" + }, + { + "building": "楊耀松第七工業大廈", + "address": "香港島東區豐業街2號楊耀松第七工業大廈" + }, + { + "building": "志同昌工業大廈", + "address": "香港島東區豐業街4號志同昌工業大廈" + }, + { + "building": "華盛中心", + "address": "香港島東區豐業街5號華盛中心" + }, + { + "building": "志榮昌工業大廈", + "address": "香港島東區豐業街6號志榮昌工業大廈" + }, + { + "building": "宏亞大廈", + "address": "香港島東區豐業街8號宏亞大廈" + }, + { + "building": "峻峰花園", + "address": "香港島東區寶文街1號峻峰花園" + }, + { + "building": "東華三院方樹泉社會服務大樓", + "address": "香港島東區寶文街6號東華三院方樹泉社會服務大樓" + }, + { + "building": "寶馬山花園", + "address": "香港島東區寶馬山道1號" + }, + { + "building": "豐林閣 ", + "address": "香港島東區寶馬山道24-26號豐林閣" + }, + { + "building": "豪景", + "address": "香港島東區寶馬山道2號豪景" + }, + { + "building": "賽西湖大廈第", + "address": "香港島東區寶馬山道33號賽西湖大廈" + }, + { + "building": "天寶大廈", + "address": "香港島東區寶馬山道4號天寶大廈" + }, + { + "building": "金運大廈", + "address": "香港島東區繼園台15-16號金運大廈" + }, + { + "building": "海港閣", + "address": "香港島東區繼園台17-18號海港閣" + }, + { + "building": "吉利洋樓", + "address": "香港島東區繼園街36號吉利洋樓" + }, + { + "building": "和景閣(繼園街)", + "address": "香港島東區繼園街50號和景閣(繼園街)" + }, + { + "building": "美景新廈", + "address": "香港島東區繼園街54號美景新廈" + }, + { + "building": "富雅花園", + "address": "香港島東區繼園臺3-4號" + }, + { + "building": "東盛苑", + "address": "香港島東區耀興道28號東盛苑" + }, + { + "building": "東駿苑B座", + "address": "香港島東區耀興道33號東駿苑B座" + }, + { + "building": "東駿苑金駿閣A座", + "address": "香港島東區耀興道33號東駿苑金駿閣A座" + }, + { + "building": "東熹苑", + "address": "香港島東區耀興道38號東熹苑" + }, + { + "building": "東匯廣場", + "address": "香港島東區耀興道3號東匯廣場" + }, + { + "building": "東霖苑", + "address": "香港島東區耀興道63號東霖苑" + }, + { + "building": "東欣苑榮欣閣", + "address": "香港島東區耀興道68號東欣苑榮欣閣" + }, + { + "building": "東欣苑歡欣閣", + "address": "香港島東區耀興道68號東欣苑歡欣閣" + }, + { + "building": "星灣峰", + "address": "香港島東區耀興道88號星灣峰" + }, + { + "building": "玫瑰園", + "address": "香港島南區" + }, + { + "building": "南灣御園", + "address": "香港島南區" + }, + { + "building": "深灣軒第", + "address": "香港島南區APIL128鴨?洲徑3號深灣軒" + }, + { + "building": "碧荔花園", + "address": "香港島南區IL623碧荔道25-27號碧荔花園" + }, + { + "building": "錦鳳苑", + "address": "香港島南區RBL1033錦鳳苑" + }, + { + "building": "松柏花園", + "address": "香港島南區RBL899壽山村道18號松柏花園" + }, + { + "building": "陽明山莊", + "address": "香港島南區大潭水塘道88號" + }, + { + "building": "輝百閣", + "address": "香港島南區大潭道" + }, + { + "building": "大潭花園", + "address": "香港島南區大潭道11號大潭花園" + }, + { + "building": "輝百苑", + "address": "香港島南區大潭道17號輝百苑" + }, + { + "building": "映月閣", + "address": "香港島南區大潭道18號映月閣" + }, + { + "building": "碧濤閣", + "address": "香港島南區大潭道27號碧濤閣" + }, + { + "building": "浪琴園", + "address": "香港島南區大潭道38號浪琴園" + }, + { + "building": "龜背灣", + "address": "香港島南區大潭道60號龜背灣" + }, + { + "building": "君誠閣", + "address": "香港島南區大潭道9號君誠閣" + }, + { + "building": "新英工業中心", + "address": "香港島南區田灣徑9號新英工業中心" + }, + { + "building": "嘉隆苑", + "address": "香港島南區田灣海旁道33號嘉隆苑" + }, + { + "building": "興偉中心", + "address": "香港島南區田灣海旁道7及9號興偉中心" + }, + { + "building": "田灣畔", + "address": "香港島南區田灣街11-15號田灣畔" + }, + { + "building": "紅山花園", + "address": "香港島南區白筆山道12號紅山花園" + }, + { + "building": "皇府灣", + "address": "香港島南區白筆山道8號皇府灣" + }, + { + "building": "金山電腦大廈", + "address": "香港島南區石排灣道40號金山電腦大廈" + }, + { + "building": "富澤大廈", + "address": "香港島南區石排灣道48-54號富澤大廈" + }, + { + "building": "大樂樓", + "address": "香港島南區石排灣道53-53C號大樂樓" + }, + { + "building": "?賢大廈", + "address": "香港島南區石排灣道55-61號?賢大廈" + }, + { + "building": "仁勝大廈", + "address": "香港島南區石排灣道56-62號仁勝大廈" + }, + { + "building": "建安樓", + "address": "香港島南區石排灣道71-73號建安樓" + }, + { + "building": "南景花園", + "address": "香港島南區石排灣道80號南景花園" + }, + { + "building": "兆暉大廈", + "address": "香港島南區石排灣道81號兆暉大廈" + }, + { + "building": "好景街26-28號", + "address": "香港島南區好景街26-28號" + }, + { + "building": "嘉城大樓", + "address": "香港島南區成都道10號嘉城大樓" + }, + { + "building": "茂盛大廈", + "address": "香港島南區成都道14-18號茂盛大廈" + }, + { + "building": "添喜大廈", + "address": "香港島南區成都道20-28號添喜大廈" + }, + { + "building": "利港中心", + "address": "香港島南區成都道38號利港中心" + }, + { + "building": "百良大廈", + "address": "香港島南區利民道7號百良大廈" + }, + { + "building": "鴨?洲中心", + "address": "香港島南區利枝道138號鴨?洲中心" + }, + { + "building": "金發大廈", + "address": "香港島南區利枝道145號金發大廈" + }, + { + "building": "屯門工業中心", + "address": "香港島南區利南道111號" + }, + { + "building": "新海怡廣場", + "address": "香港島南區利榮街2號新海怡廣場" + }, + { + "building": "海灣工貿中心", + "address": "香港島南區利樂街2號海灣工貿中心" + }, + { + "building": "港灣工貿中心", + "address": "香港島南區利興街10號港灣工貿中心" + }, + { + "building": "海日樓", + "address": "香港島南區沙宣道42號海日樓" + }, + { + "building": "金康園", + "address": "香港島南區沙宣道45號金康園" + }, + { + "building": "百合苑", + "address": "香港島南區沙宣道46號百合苑" + }, + { + "building": "愛蓮別墅", + "address": "香港島南區沙宣道50-52號愛蓮別墅" + }, + { + "building": "金東閣", + "address": "香港島南區赤柱大街118號金東閣" + }, + { + "building": "敦勝樓", + "address": "香港島南區赤柱大街126號敦勝樓" + }, + { + "building": "彭發樓", + "address": "香港島南區赤柱大街130-132號彭發樓" + }, + { + "building": "耀升閣", + "address": "香港島南區赤柱大街13號耀升閣" + }, + { + "building": "偉基樓", + "address": "香港島南區赤柱大街1號偉基樓" + }, + { + "building": "隆達樓", + "address": "香港島南區赤柱大街2-6號隆達樓" + }, + { + "building": "倫輝樓", + "address": "香港島南區赤柱大街30A號倫輝樓" + }, + { + "building": "友榮樓", + "address": "香港島南區赤柱大街34-38號友榮樓" + }, + { + "building": "鐘英大廈", + "address": "香港島南區赤柱大街48-50號鐘英大廈" + }, + { + "building": "友誠樓", + "address": "香港島南區赤柱大街52-56號友誠樓" + }, + { + "building": "海山閣", + "address": "香港島南區赤柱大街55-57號海山閣" + }, + { + "building": "和豐樓", + "address": "香港島南區赤柱大街5-5A號和豐樓" + }, + { + "building": "伴閑居", + "address": "香港島南區赤柱大街5B號伴閑居" + }, + { + "building": "和豐樓", + "address": "香港島南區赤柱大街5號和豐樓" + }, + { + "building": "裕海樓", + "address": "香港島南區赤柱大街8號裕海樓" + }, + { + "building": "德偉花園", + "address": "香港島南區赤柱大街90A號德偉花園" + }, + { + "building": "海天別墅", + "address": "香港島南區赤柱大街92號海天別墅" + }, + { + "building": "啟厚閣", + "address": "香港島南區赤柱市場道25號啟厚閣" + }, + { + "building": "伊甸園", + "address": "香港島南區赤柱村道18號伊甸園" + }, + { + "building": "VISTA STANLEY", + "address": "香港島南區赤柱村道20-20B號VISTA STANLEY" + }, + { + "building": "GROSSE POINTE VILLA", + "address": "香港島南區赤柱村道4-4A號GROSSE POINTE VILLA" + }, + { + "building": "翠屋", + "address": "香港島南區赤柱村道49號翠屋" + }, + { + "building": "維壁別墅", + "address": "香港島南區赤柱村道66號維壁別墅維璧別墅" + }, + { + "building": "旭逸居", + "address": "香港島南區赤柱村道7號旭逸居" + }, + { + "building": "和德利樓", + "address": "香港島南區赤柱村道80號和德利樓" + }, + { + "building": "榕蔭園", + "address": "香港島南區赤柱村道9號榕蔭園" + }, + { + "building": "葆琳居", + "address": "香港島南區赤柱崗道3號葆琳居" + }, + { + "building": "海寧雅舍", + "address": "香港島南區赤柱崗道8號海寧雅舍" + }, + { + "building": "海灣園", + "address": "香港島南區赤柱崗道9號海灣園" + }, + { + "building": "積德樓", + "address": "香港島南區赤柱新街11號積德樓" + }, + { + "building": "裕景樓", + "address": "香港島南區赤柱新街15號裕景樓" + }, + { + "building": "海灣閣", + "address": "香港島南區赤柱灘道16號海灣閣" + }, + { + "building": "喜蓮花園", + "address": "香港島南區赤柱灘道22號喜蓮花園" + }, + { + "building": "醇廬", + "address": "香港島南區赤柱灘道8號醇廬" + }, + { + "building": "景春別墅", + "address": "香港島南區赤柱灘道9A-9B&11A-11B號景春別墅11A-11B" + }, + { + "building": "海明山", + "address": "香港島南區佳美道12號海明山" + }, + { + "building": "佳美道20號", + "address": "香港島南區佳美道20號" + }, + { + "building": "歌敦臺", + "address": "香港島南區佳美道4-8A號歌敦臺" + }, + { + "building": "御庭園", + "address": "香港島南區怡南路33號" + }, + { + "building": "朗盈商業大廈", + "address": "香港島南區東勝道10號朗盈商業大廈" + }, + { + "building": "FAIRWINDS 29號", + "address": "香港島南區東頭灣道29-31號FAIRWINDS 29號" + }, + { + "building": "FAIRWINDS 31號", + "address": "香港島南區東頭灣道29-31號FAIRWINDS 31號" + }, + { + "building": "步雲軒", + "address": "香港島南區東頭灣道2號步雲軒" + }, + { + "building": "紫薇", + "address": "香港島南區東頭灣道33號紫薇" + }, + { + "building": "碧麗苑", + "address": "香港島南區金粟街19-21號碧麗苑" + }, + { + "building": "金碧花園", + "address": "香港島南區金粟街22-24號金碧花園" + }, + { + "building": "碧勵苑", + "address": "香港島南區金粟街23號碧勵苑" + }, + { + "building": "景緻閣", + "address": "香港島南區金粟街9號景緻閣" + }, + { + "building": "冠冕臺", + "address": "香港島南區冠冕臺" + }, + { + "building": "帝鑾閣", + "address": "香港島南區冠冕臺21號帝鑾閣" + }, + { + "building": "美麗閣", + "address": "香港島南區冠冕臺4號美麗閣" + }, + { + "building": "BISNEY VILLA", + "address": "香港島南區冠冕臺7-13號BISNEY VILLA" + }, + { + "building": "金寶花園2座", + "address": "香港島南區南朗山道8號金寶花園2座" + }, + { + "building": "香港仔中心美光閣", + "address": "香港島南區南寧街" + }, + { + "building": "南灣花園", + "address": "香港島南區南灣坊33號南灣花園" + }, + { + "building": "康南閣", + "address": "香港島南區南灣坊45號康南閣" + }, + { + "building": "南灣新?", + "address": "香港島南區南灣坊4號南灣新?" + }, + { + "building": "雅景閣", + "address": "香港島南區南灣道10號雅景閣" + }, + { + "building": "蕙園", + "address": "香港島南區南灣道12號蕙園" + }, + { + "building": "THE NAUTILUS", + "address": "香港島南區南灣道16A號THE NAUTILUS" + }, + { + "building": "海星別墅", + "address": "香港島南區南灣道19號海星別墅" + }, + { + "building": "康芷苑", + "address": "香港島南區南灣道21號康芷苑" + }, + { + "building": "湖邊別墅", + "address": "香港島南區南灣道23-25號湖邊別墅" + }, + { + "building": "龍景園", + "address": "香港島南區南灣道4A號龍景園" + }, + { + "building": "海灘公寓", + "address": "香港島南區南灣道4號海灘公寓" + }, + { + "building": "嘉麟閣", + "address": "香港島南區南灣道55號嘉麟閣" + }, + { + "building": "南灣大廈", + "address": "香港島南區南灣道59號南灣大廈" + }, + { + "building": "華景園", + "address": "香港島南區南灣道61號華景園" + }, + { + "building": "濱景園", + "address": "香港島南區南灣道9號濱景園" + }, + { + "building": "鴻福閣", + "address": "香港島南區洪聖街13-15號鴻福閣" + }, + { + "building": "洪聖大樓", + "address": "香港島南區洪聖街17-19號洪聖大樓" + }, + { + "building": "鴻勝大廈", + "address": "香港島南區洪聖街3-7號鴻勝大廈" + }, + { + "building": "玫瑰園", + "address": "香港島南區紅山道88號玫瑰園" + }, + { + "building": "美景臺", + "address": "香港島南區美景徑" + }, + { + "building": "The Look Out", + "address": "香港島南區郊區建屋地段第374號南灣道The Look Out" + }, + { + "building": "ISLAND GROVE", + "address": "香港島南區香島道40號ISLAND GROVE" + }, + { + "building": "愛寶園", + "address": "香港島南區香島道43號愛寶園" + }, + { + "building": "繼園", + "address": "香港島南區香島道55號繼園" + }, + { + "building": "福群大樓", + "address": "香港島南區香港仔大道" + }, + { + "building": "達和大廈", + "address": "香港島南區香港仔大道108-112號達和大廈" + }, + { + "building": "上海商業銀行大廈", + "address": "香港島南區香港仔大道118號上海商業銀行大廈" + }, + { + "building": "百匯行", + "address": "香港島南區香港仔大道120-122號百匯行" + }, + { + "building": "金香大廈", + "address": "香港島南區香港仔大道128號金香大廈" + }, + { + "building": "利發大廈", + "address": "香港島南區香港仔大道142-144號利發大廈" + }, + { + "building": "宏興大廈", + "address": "香港島南區香港仔大道152-156號宏興大廈" + }, + { + "building": "海波大樓", + "address": "香港島南區香港仔大道153號海波大樓" + }, + { + "building": "海?大廈", + "address": "香港島南區香港仔大道170-172號海?大廈" + }, + { + "building": "金豐大廈", + "address": "香港島南區香港仔大道171號金豐大廈" + }, + { + "building": "亮全大樓", + "address": "香港島南區香港仔大道178號亮全大樓" + }, + { + "building": "建輝大廈", + "address": "香港島南區香港仔大道18-20號建輝大廈" + }, + { + "building": "港基大廈", + "address": "香港島南區香港仔大道184號港基大廈" + }, + { + "building": "香島大廈", + "address": "香港島南區香港仔大道190號香島大廈" + }, + { + "building": "珍寶大廈", + "address": "香港島南區香港仔大道201號珍寶大廈" + }, + { + "building": "裕輝商業中心", + "address": "香港島南區香港仔大道208號裕輝商業中心" + }, + { + "building": "永發商業大廈", + "address": "香港島南區香港仔大道216-218號永發商業大廈" + }, + { + "building": "利群商業大廈", + "address": "香港島南區香港仔大道223號利群商業大廈" + }, + { + "building": "偉景大廈", + "address": "香港島南區香港仔大道22號偉景大廈" + }, + { + "building": "城都工業大廈", + "address": "香港島南區香港仔大道232號城都工業大廈" + }, + { + "building": "富嘉工業大廈", + "address": "香港島南區香港仔大道234號富嘉工業大廈" + }, + { + "building": "香港仔工業大廈", + "address": "香港島南區香港仔大道236號香港仔工業大廈" + }, + { + "building": "海峰華軒", + "address": "香港島南區香港仔大道244號海峰華軒" + }, + { + "building": "海光閣", + "address": "香港島南區香港仔大道26號海光閣" + }, + { + "building": "業漁大樓", + "address": "香港島南區香港仔大道48-50號業漁大樓" + }, + { + "building": "雙喜大廈", + "address": "香港島南區香港仔大道52-64號雙喜大廈" + }, + { + "building": "嘉寧大廈", + "address": "香港島南區香港仔大道88號嘉寧大廈" + }, + { + "building": "景惠花園第一座", + "address": "香港島南區香港仔大道8號景惠花園第一座" + }, + { + "building": "銀豐大廈", + "address": "香港島南區香港仔大道94-98號銀豐大廈" + }, + { + "building": "逸港居", + "address": "香港島南區香港仔海傍道3號逸港居" + }, + { + "building": "港暉中心", + "address": "香港島南區香港仔舊大街108號港暉中心" + }, + { + "building": "兆群大廈", + "address": "香港島南區香港仔舊大街120號兆群大廈" + }, + { + "building": "美倫閣", + "address": "香港島南區香港仔舊大街56號美倫閣" + }, + { + "building": "協勝大廈", + "address": "香港島南區香港仔舊大街58-62號協勝大廈" + }, + { + "building": "海洋大廈", + "address": "香港島南區香港仔舊大街64-70號海洋大廈" + }, + { + "building": "寶文樓", + "address": "香港島南區香港仔舊大街74-76號寶文樓" + }, + { + "building": "安輝大廈", + "address": "香港島南區香港仔舊大街82號安輝大廈" + }, + { + "building": "志聯興工業大樓", + "address": "香港島南區香葉道10號志聯興工業大樓" + }, + { + "building": "嘉尚匯", + "address": "香港島南區香葉道28號嘉尚匯" + }, + { + "building": "啟時深灣大廈", + "address": "香港島南區香葉道38號啟時深灣大廈" + }, + { + "building": "風行工業大廈", + "address": "香港島南區香葉道43號風行工業大廈" + }, + { + "building": "怡達工業大廈", + "address": "香港島南區香葉道4號怡達工業大廈" + }, + { + "building": "聯益工廠大廈", + "address": "香港島南區香葉道50號聯益工廠大廈" + }, + { + "building": "益年工業大廈", + "address": "香港島南區香葉道6號益年工業大廈" + }, + { + "building": "萬興工業中心", + "address": "香港島南區香葉道8號萬興工業中心" + }, + { + "building": "悅海華庭", + "address": "香港島南區悅海街3號悅海華庭" + }, + { + "building": "珊瑚小築", + "address": "香港島南區海天徑27號珊瑚小築" + }, + { + "building": "海天小築", + "address": "香港島南區海天徑38-48號海天小築" + }, + { + "building": "華翠海灘別墅", + "address": "香港島南區海天徑3號華翠海灘別墅" + }, + { + "building": "海怡半島", + "address": "香港島南區海怡路8號海怡半島" + }, + { + "building": "文麗雙築", + "address": "香港島南區海洋公園道38號文麗雙築" + }, + { + "building": "海風徑10號", + "address": "香港島南區海風徑10號" + }, + { + "building": "海風徑4號", + "address": "香港島南區海風徑4號" + }, + { + "building": "海風徑6號", + "address": "香港島南區海風徑6號" + }, + { + "building": "趙苑", + "address": "香港島南區域多利道200號趙苑" + }, + { + "building": "樂居", + "address": "香港島南區域多利道200號樂居" + }, + { + "building": "碧苑", + "address": "香港島南區域多利道212號碧苑" + }, + { + "building": "域多利花園2座", + "address": "香港島南區域多利道301號域多利花園2座" + }, + { + "building": "碧瑤灣", + "address": "香港島南區域多利道550號碧瑤灣" + }, + { + "building": "大口環(域多利道)村", + "address": "香港島南區域多利道大口環(域多利道)村" + }, + { + "building": "華利大廈", + "address": "香港島南區崇文街15-17號華利大廈" + }, + { + "building": "文華閣", + "address": "香港島南區崇文街21號文華閣" + }, + { + "building": "崇文樓", + "address": "香港島南區崇文街23-25號崇文樓" + }, + { + "building": "崇文街31號", + "address": "香港島南區崇文街31號" + }, + { + "building": "崇文閣", + "address": "香港島南區崇文街33-37號崇文閣" + }, + { + "building": "嘉名苑", + "address": "香港島南區深水灣徑7-9號嘉名苑" + }, + { + "building": "深水灣徑8-12號", + "address": "香港島南區深水灣徑8-12號青巒" + }, + { + "building": "文禮苑", + "address": "香港島南區深水灣道48號文禮苑" + }, + { + "building": "雅濤閣", + "address": "香港島南區深灣道11號雅濤閣" + }, + { + "building": "南濤閣", + "address": "香港島南區深灣道3號南濤閣" + }, + { + "building": "冠園", + "address": "香港島南區淺水灣道" + }, + { + "building": "海峰園A", + "address": "香港島南區淺水灣道" + }, + { + "building": "雲濤別墅", + "address": "香港島南區淺水灣道" + }, + { + "building": "影灣園", + "address": "香港島南區淺水灣道109號影灣園" + }, + { + "building": "天風樓", + "address": "香港島南區淺水灣道111號天風樓" + }, + { + "building": "淺水灣大廈", + "address": "香港島南區淺水灣道113號淺水灣大廈" + }, + { + "building": "保華大廈", + "address": "香港島南區淺水灣道119A號保華大廈" + }, + { + "building": "明苑", + "address": "香港島南區淺水灣道121號明苑" + }, + { + "building": "喜蓮苑", + "address": "香港島南區淺水灣道123號喜蓮苑" + }, + { + "building": "THE LILY", + "address": "香港島南區淺水灣道129號THE LILY" + }, + { + "building": "Estrellita", + "address": "香港島南區淺水灣道12號Estrellita" + }, + { + "building": "福慧大廈", + "address": "香港島南區淺水灣道25號福慧大廈" + }, + { + "building": "聚豪居", + "address": "香港島南區淺水灣道27號聚豪居" + }, + { + "building": "南山別墅", + "address": "香港島南區淺水灣道41號南山別墅" + }, + { + "building": "雙溪", + "address": "香港島南區淺水灣道43號雙溪" + }, + { + "building": "明慧園", + "address": "香港島南區淺水灣道45號明慧園" + }, + { + "building": "詩禮花園", + "address": "香港島南區淺水灣道5號詩禮花園" + }, + { + "building": "曼克頓大廈", + "address": "香港島南區淺水灣道63號 曼克頓大廈" + }, + { + "building": "松苑", + "address": "香港島南區淺水灣道65號松苑" + }, + { + "building": "怡峰", + "address": "香港島南區淺水灣道67號怡峰" + }, + { + "building": "OVERBAYS", + "address": "香港島南區淺水灣道71-71A號OVERBAYS" + }, + { + "building": "AERIES", + "address": "香港島南區淺水灣道73號AERIES" + }, + { + "building": "淺水灣別墅", + "address": "香港島南區淺水灣道78-80號淺水灣別墅A座" + }, + { + "building": "環翠園", + "address": "香港島南區淺水灣道79號環翠園" + }, + { + "building": "楊宅", + "address": "香港島南區淺水灣道81號楊宅" + }, + { + "building": "寶晶苑", + "address": "香港島南區淺水灣道93號" + }, + { + "building": "浩漢台", + "address": "香港島南區舂磡角道41號浩漢台" + }, + { + "building": "紫荊園", + "address": "香港島南區舂磡角道42號A座" + }, + { + "building": "順利樓", + "address": "香港島南區惠風街18號順利樓" + }, + { + "building": "金利豐大廈", + "address": "香港島南區惠風街20號金利豐大廈" + }, + { + "building": "惠風樓", + "address": "香港島南區惠風街5-7號惠風樓" + }, + { + "building": "珍寶閣", + "address": "香港島南區惠福道3號珍寶閣" + }, + { + "building": "登峰南岸", + "address": "香港島南區登豐街1號登峰南岸" + }, + { + "building": "富臨軒", + "address": "香港島南區華富道8號富臨軒" + }, + { + "building": "華富閣", + "address": "香港島南區華樂徑4號華富閣" + }, + { + "building": "香華工業大廈", + "address": "香港島南區黃竹坑道12號香華工業大廈" + }, + { + "building": "勝利工廠大廈", + "address": "香港島南區黃竹坑道16號勝利工廠大廈" + }, + { + "building": "瑞琪工業大廈", + "address": "香港島南區黃竹坑道18號瑞琪工業大廈" + }, + { + "building": "環匯廣場", + "address": "香港島南區黃竹坑道21號環匯廣場" + }, + { + "building": "胡嘉烈工業大廈", + "address": "香港島南區黃竹坑道23號胡嘉烈工業大廈" + }, + { + "building": "建德工業大廈", + "address": "香港島南區黃竹坑道26號建德工業大廈" + }, + { + "building": "甄沾記大廈", + "address": "香港島南區黃竹坑道27號甄沾記大廈" + }, + { + "building": "保濟工業大廈", + "address": "香港島南區黃竹坑道28號保濟工業大廈" + }, + { + "building": "維他大廈", + "address": "香港島南區黃竹坑道29號維他大廈" + }, + { + "building": "長德工業大廈", + "address": "香港島南區黃竹坑道30號長德工業大廈" + }, + { + "building": "利基中心", + "address": "香港島南區黃竹坑道31號利基中心" + }, + { + "building": "創協坊", + "address": "香港島南區黃竹坑道33-35號創協坊" + }, + { + "building": "華明樓", + "address": "香港島南區黃竹坑道34號華明樓" + }, + { + "building": "仁孚香港仔車廠", + "address": "香港島南區黃竹坑道36號仁孚香港仔車廠" + }, + { + "building": "利達中心", + "address": "香港島南區黃竹坑道37號利達中心" + }, + { + "building": "安盛匯", + "address": "香港島南區黃竹坑道38號安盛匯" + }, + { + "building": "載思中心", + "address": "香港島南區黃竹坑道38號載思中心" + }, + { + "building": "偉晉中心一期", + "address": "香港島南區黃竹坑道39號偉晉中心一期" + }, + { + "building": "貴寶工業大廈", + "address": "香港島南區黃竹坑道40號貴寶工業大廈" + }, + { + "building": "利美中心", + "address": "香港島南區黃竹坑道42號利美中心" + }, + { + "building": "新興工業大廈", + "address": "香港島南區黃竹坑道46號新興工業大廈" + }, + { + "building": "聯合工業大廈", + "address": "香港島南區黃竹坑道48號聯合工業大廈" + }, + { + "building": "得力工業大廈", + "address": "香港島南區黃竹坑道49號得力工業大廈" + }, + { + "building": "W50", + "address": "香港島南區黃竹坑道50號W50" + }, + { + "building": "合隆工業大廈", + "address": "香港島南區黃竹坑道52號合隆工業大廈" + }, + { + "building": "英基工業中心", + "address": "香港島南區黃竹坑道53號英基工業中心" + }, + { + "building": "怡華工業大廈", + "address": "香港島南區黃竹坑道56-60號怡華工業大廈" + }, + { + "building": "本利發工業大廈", + "address": "香港島南區黃竹坑道59-61號本利發工業大廈" + }, + { + "building": "科達設計中心", + "address": "香港島南區黃竹坑道62號科達設計中心" + }, + { + "building": "天豐工業大廈", + "address": "香港島南區黃竹坑道63號天豐工業大廈" + }, + { + "building": "South Island Place", + "address": "香港島南區黃竹坑道8號South Island Place" + }, + { + "building": "富豪海灣", + "address": "香港島南區黃麻角道" + }, + { + "building": "綠怡居", + "address": "香港島南區黃麻角道10號綠怡居" + }, + { + "building": "南德大樓", + "address": "香港島南區新市街37-39號南德大樓" + }, + { + "building": "新明大樓", + "address": "香港島南區新市街41-43號新明大樓" + }, + { + "building": "松?工業大廈", + "address": "香港島南區業發街12號松?工業大廈" + }, + { + "building": "金寶大廈", + "address": "香港島南區業發街1號金寶大廈" + }, + { + "building": "The Hub", + "address": "香港島南區業勤街23號The Hub" + }, + { + "building": "南?廣場", + "address": "香港島南區業興街11號南?廣場" + }, + { + "building": "置富花園", + "address": "香港島南區置富道" + }, + { + "building": "嘉福閣", + "address": "香港島南區嘉禾街1-12號嘉福閣" + }, + { + "building": "金爵大廈", + "address": "香港島南區嘉禾街1-3號金爵大廈" + }, + { + "building": "嘉和大廈", + "address": "香港島南區嘉禾街14-22號嘉和大廈" + }, + { + "building": "順豐大廈", + "address": "香港島南區嘉禾街15-19號順豐大廈" + }, + { + "building": "大德樓", + "address": "香港島南區嘉禾街27-33B號大德樓" + }, + { + "building": "益添大廈", + "address": "香港島南區嘉禾街5-11號益添大廈" + }, + { + "building": "壽山別墅", + "address": "香港島南區壽山村道" + }, + { + "building": "餘慶園", + "address": "香港島南區壽山村道" + }, + { + "building": "駿園", + "address": "香港島南區壽山村道" + }, + { + "building": "喜蓮閣", + "address": "香港島南區壽山村道14號喜蓮閣" + }, + { + "building": "松柏花園", + "address": "香港島南區壽山村道18號松柏花園" + }, + { + "building": "怡禮苑", + "address": "香港島南區壽山村道22號怡禮苑" + }, + { + "building": "嘉碧苑", + "address": "香港島南區壽山村道25號嘉碧苑" + }, + { + "building": "蘭苑第", + "address": "香港島南區壽山村道26號蘭苑" + }, + { + "building": "朗松居", + "address": "香港島南區壽山村道33號朗松居" + }, + { + "building": "翠峰園", + "address": "香港島南區壽山村道35A號翠峰園" + }, + { + "building": "翠谷別墅第", + "address": "香港島南區壽山村道4號翠谷別墅" + }, + { + "building": "厚園", + "address": "香港島南區壽山村道51號厚園" + }, + { + "building": "傲林軒", + "address": "香港島南區壽山村道53號傲林軒" + }, + { + "building": "南源", + "address": "香港島南區壽山村道57號" + }, + { + "building": "木苑", + "address": "香港島南區壽山村道5號" + }, + { + "building": "壽山花園", + "address": "香港島南區壽山村道6A號壽山花園" + }, + { + "building": "榛苑榛園", + "address": "香港島南區壽山村道6號榛苑榛園" + }, + { + "building": "碧麗閣", + "address": "香港島南區壽山村道7號碧麗閣" + }, + { + "building": "恒安閣", + "address": "香港島南區壽山村道8號恒安閣" + }, + { + "building": "南苑", + "address": "香港島南區壽山村道9號南苑" + }, + { + "building": "松苑", + "address": "香港島南區壽臣山道西" + }, + { + "building": "曉穎花園", + "address": "香港島南區壽臣山道西 13號" + }, + { + "building": "金信閣", + "address": "香港島南區壽臣山道西11號金信閣" + }, + { + "building": "春暉園", + "address": "香港島南區壽臣山道西7號春暉園" + }, + { + "building": "麒麟閣", + "address": "香港島南區壽臣山道東" + }, + { + "building": "一座", + "address": "香港島南區壽臣山道東1號一座" + }, + { + "building": "八座", + "address": "香港島南區壽臣山道東1號八座" + }, + { + "building": "五座", + "address": "香港島南區壽臣山道東1號五座" + }, + { + "building": "六座", + "address": "香港島南區壽臣山道東1號六座" + }, + { + "building": "漁暉苑", + "address": "香港島南區漁光道45號漁暉苑" + }, + { + "building": "漁安苑", + "address": "香港島南區漁安苑道3號" + }, + { + "building": "碧麗大廈", + "address": "香港島南區漁歌街5號碧麗大廈" + }, + { + "building": "港麗豪園", + "address": "香港島南區漁獲街1號港麗豪園" + }, + { + "building": "大洋中心", + "address": "香港島南區漁豐街3號大洋中心" + }, + { + "building": "浪頤居", + "address": "香港島南區碧荔道" + }, + { + "building": "美琳苑", + "address": "香港島南區碧荔道28號美琳苑" + }, + { + "building": "新麗閣", + "address": "香港島南區碧荔道30-32號新麗閣" + }, + { + "building": "雅廬", + "address": "香港島南區碧荔道37-39號雅廬" + }, + { + "building": "帝柏園", + "address": "香港島南區碧荔道43號帝柏園" + }, + { + "building": "碧麗軒", + "address": "香港島南區碧荔道55-57號碧麗軒" + }, + { + "building": "雙灣", + "address": "香港島南區赫蘭道16-18號雙灣" + }, + { + "building": "赫蘭道", + "address": "香港島南區赫蘭道5" + }, + { + "building": "湖苑", + "address": "香港島南區摩星嶺道37號湖苑" + }, + { + "building": "碧海閣", + "address": "香港島南區摩星嶺道49號碧海閣" + }, + { + "building": "SOUTHWEST", + "address": "香港島南區摩星嶺道53號SOUTHWEST" + }, + { + "building": "衛星花園", + "address": "香港島南區摩星嶺道5號衛星花園" + }, + { + "building": "大生工業大廈", + "address": "香港島南區興和街25號大生工業大廈" + }, + { + "building": "昭陽花園", + "address": "香港島南區靜修里33號" + }, + { + "building": "松濤小築", + "address": "香港島南區靜修里35號松濤小築" + }, + { + "building": "文麗大樓", + "address": "香港島南區鴨?洲大街105-113號文麗大樓" + }, + { + "building": "東南大廈", + "address": "香港島南區鴨?洲大街112-118號東南大廈" + }, + { + "building": "亨利閣", + "address": "香港島南區鴨?洲大街11號亨利閣" + }, + { + "building": "高寶閣", + "address": "香港島南區鴨?洲大街129號高寶閣" + }, + { + "building": "合時大樓", + "address": "香港島南區鴨?洲大街132號合時大樓" + }, + { + "building": "僑民大廈", + "address": "香港島南區鴨?洲大街145號僑民大廈" + }, + { + "building": "利豐大廈", + "address": "香港島南區鴨?洲大街147號利豐大廈" + }, + { + "building": "怡慶大廈", + "address": "香港島南區鴨?洲大街150號怡慶大廈" + }, + { + "building": "海德樓", + "address": "香港島南區鴨?洲大街17-19號海德樓" + }, + { + "building": "東寶閣", + "address": "香港島南區鴨?洲大街18號東寶閣" + }, + { + "building": "花洲大樓", + "address": "香港島南區鴨?洲大街21-23號花洲大樓" + }, + { + "building": "年豐大廈", + "address": "香港島南區鴨?洲大街25-31號年豐大廈" + }, + { + "building": "順景閣", + "address": "香港島南區鴨?洲大街33號順景閣" + }, + { + "building": "崇新閣", + "address": "香港島南區鴨?洲大街73-79號崇新閣" + }, + { + "building": "順風樓", + "address": "香港島南區鴨?洲大街81-83號順風樓" + }, + { + "building": "利發大廈", + "address": "香港島南區鴨?洲大街96-98號利發大廈" + }, + { + "building": "仁正大廈", + "address": "香港島南區鴨?洲大街97-103號仁正大廈" + }, + { + "building": "南區.左岸", + "address": "香港島南區鴨?洲徑8號南區.左岸" + }, + { + "building": "南灣", + "address": "香港島南區鴨?洲海旁道8號南灣" + }, + { + "building": "環翠苑", + "address": "香港島南區環角徑" + }, + { + "building": "璧如?", + "address": "香港島南區環角徑18號璧如?" + }, + { + "building": "VILLA PIUBELLO", + "address": "香港島南區環角徑1號VILLA PIUBELLO" + }, + { + "building": "柏濤小築", + "address": "香港島南區環角道32號" + }, + { + "building": "龍德苑", + "address": "香港島南區環角道52號龍德苑" + }, + { + "building": "龍欣苑", + "address": "香港島南區環角道60號" + }, + { + "building": "豪峰二期", + "address": "香港島南區薄扶林道116號豪峰二期" + }, + { + "building": "豪峰 I", + "address": "香港島南區薄扶林道118號豪峰 I" + }, + { + "building": "多福大廈", + "address": "香港島南區薄扶林道126號多福大廈" + }, + { + "building": "嘉林閣", + "address": "香港島南區薄扶林道137號嘉林閣" + }, + { + "building": "薄扶林花園", + "address": "香港島南區薄扶林道180號薄扶林花園" + }, + { + "building": "璧池", + "address": "香港島南區麗景道" + }, + { + "building": "淺水灣麗景園", + "address": "香港島南區麗景道18-40號淺水灣麗景園" + }, + { + "building": "淺水灣花園", + "address": "香港島南區麗景道3號淺水灣花園" + }, + { + "building": "淺水灣麗景花園", + "address": "香港島南區麗景道5號淺水灣麗景花園" + }, + { + "building": "尚翹峰第一座", + "address": "香港島灣仔區" + }, + { + "building": "金碧別墅", + "address": "香港島灣仔區" + }, + { + "building": "銅鑼灣廣場", + "address": "香港島灣仔區" + }, + { + "building": "大寧閣", + "address": "香港島灣仔區IL1573寶靈頓道18-20號大寧閣" + }, + { + "building": "樂天?", + "address": "香港島灣仔區IL2132樂活道12號樂天?" + }, + { + "building": "海怡閣", + "address": "香港島灣仔區IL2506成和道39E號海怡閣" + }, + { + "building": "樂中樓", + "address": "香港島灣仔區IL2617駱克道402-404號樂中樓" + }, + { + "building": "利威商業大廈", + "address": "香港島灣仔區IL2618軒尼詩道375-379號利威商業大廈" + }, + { + "building": "華軒商業中心", + "address": "香港島灣仔區IL2618軒尼詩道381-383號華軒商業中心" + }, + { + "building": "福怡大廈", + "address": "香港島灣仔區IL2622駱克道324-330A號福怡大廈" + }, + { + "building": "德士古大廈", + "address": "香港島灣仔區IL2769軒尼詩道258號德士古大廈" + }, + { + "building": "中威商業大廈", + "address": "香港島灣仔區IL2835駱克道447-449號中威商業大廈" + }, + { + "building": "秀華商業大廈", + "address": "香港島灣仔區IL3672謝斐道211-213號秀華商業大廈" + }, + { + "building": "福華大廈", + "address": "香港島灣仔區IL4078清風街2-4號福華大廈" + }, + { + "building": "登龍閣", + "address": "香港島灣仔區IL461邊寧頓街9-11號登龍閣" + }, + { + "building": "紀雲峰", + "address": "香港島灣仔區IL4959山光道20號紀雲峰" + }, + { + "building": "寰海軒", + "address": "香港島灣仔區IL6888太原街15號寰海軒" + }, + { + "building": "僑阜商業大廈", + "address": "香港島灣仔區IL6998駱克道300-306號僑阜商業大廈" + }, + { + "building": "怡苑", + "address": "香港島灣仔區IL8348藍塘道41號怡苑" + }, + { + "building": "金山花園", + "address": "香港島灣仔區IL8458雲地利道29-35號金山花園" + }, + { + "building": "慧莉苑", + "address": "香港島灣仔區IL8830山村道17號慧莉苑" + }, + { + "building": "大同大廈", + "address": "香港島灣仔區IL8844菲林明道8號大同大廈" + }, + { + "building": "富利大廈", + "address": "香港島灣仔區ML119三角街10-18號富利大廈" + }, + { + "building": "百德大廈D座", + "address": "香港島灣仔區ML52記利佐治街9號百德大廈D座" + }, + { + "building": "澳門逸園中心", + "address": "香港島灣仔區ML52軒尼詩道525號澳門逸園中心" + }, + { + "building": "三角街1號", + "address": "香港島灣仔區三角街1號" + }, + { + "building": "華欣閣", + "address": "香港島灣仔區三角街2-3號華欣閣" + }, + { + "building": "福鵬大廈", + "address": "香港島灣仔區三板街21號福鵬大廈" + }, + { + "building": "銳興樓", + "address": "香港島灣仔區大王西街7-11號銳興樓" + }, + { + "building": "大旺樓", + "address": "香港島灣仔區大王東街3-5號大旺樓" + }, + { + "building": "樹德大廈", + "address": "香港島灣仔區大王街東22-30號樹德大廈" + }, + { + "building": "嘉景臺", + "address": "香港島灣仔區大坑徑19號嘉景臺" + }, + { + "building": "名門", + "address": "香港島灣仔區大坑徑23號" + }, + { + "building": "龍華花園", + "address": "香港島灣仔區大坑徑25號龍華花園" + }, + { + "building": "柏園", + "address": "香港島灣仔區大坑徑6號柏園" + }, + { + "building": "高景大廈", + "address": "香港島灣仔區大坑徑7號高景大廈" + }, + { + "building": "碧蘭閣", + "address": "香港島灣仔區大坑徑8號碧蘭閣" + }, + { + "building": "麗寧苑", + "address": "香港島灣仔區大坑道101-111號麗寧苑" + }, + { + "building": "瑞士花園", + "address": "香港島灣仔區大坑道113號瑞士花園" + }, + { + "building": "上林", + "address": "香港島灣仔區大坑道11號" + }, + { + "building": "芝蘭閣", + "address": "香港島灣仔區大坑道12-14號芝蘭閣" + }, + { + "building": "渣甸山花園大廈A1-A4座", + "address": "香港島灣仔區大坑道148號渣甸山花園大廈A1-A4座" + }, + { + "building": "嘉崙臺", + "address": "香港島灣仔區大坑道152號嘉崙臺" + }, + { + "building": "保祿大廈", + "address": "香港島灣仔區大坑道154號保祿大廈" + }, + { + "building": "雅景軒", + "address": "香港島灣仔區大坑道19號雅景軒" + }, + { + "building": "融園", + "address": "香港島灣仔區大坑道20-22號融園" + }, + { + "building": "煜康臺", + "address": "香港島灣仔區大坑道21號煜康臺" + }, + { + "building": "昍逵閣", + "address": "香港島灣仔區大坑道23-25號昍逵閣" + }, + { + "building": "帝后臺", + "address": "香港島灣仔區大坑道26號帝后臺" + }, + { + "building": "華峰閣", + "address": "香港島灣仔區大坑道27號華峰閣" + }, + { + "building": "勤屋", + "address": "香港島灣仔區大坑道28-28A號勤屋" + }, + { + "building": "得雲閣", + "address": "香港島灣仔區大坑道30號得雲閣" + }, + { + "building": "環翠園第一座", + "address": "香港島灣仔區大坑道325-331號環翠園" + }, + { + "building": "雅麗閣", + "address": "香港島灣仔區大坑道333號雅麗閣" + }, + { + "building": "雅居", + "address": "香港島灣仔區大坑道341-343號雅居" + }, + { + "building": "嘉園", + "address": "香港島灣仔區大坑道345號嘉園" + }, + { + "building": "永威閣", + "address": "香港島灣仔區大坑道3號永威閣" + }, + { + "building": "康馨園", + "address": "香港島灣仔區大坑道43號康馨園" + }, + { + "building": "騰黃閣", + "address": "香港島灣仔區大坑道52A號騰黃閣" + }, + { + "building": "福群大廈", + "address": "香港島灣仔區大坑道53-55號福群大廈" + }, + { + "building": "兆暉閣", + "address": "香港島灣仔區大坑道54號兆暉閣" + }, + { + "building": "優悠台", + "address": "香港島灣仔區大坑道56號優悠台" + }, + { + "building": "優雅閣", + "address": "香港島灣仔區大坑道60號優雅閣" + }, + { + "building": "大寶閣", + "address": "香港島灣仔區大坑道70號大寶閣" + }, + { + "building": "光明臺第2座", + "address": "香港島灣仔區大坑道7號光明臺第2座" + }, + { + "building": "龍風臺", + "address": "香港島灣仔區大坑道89-93號龍風臺" + }, + { + "building": "雅苑", + "address": "香港島灣仔區大坑道95-99號雅苑" + }, + { + "building": "雅?苑雅柏苑", + "address": "香港島灣仔區大潭水塘道7號雅?苑雅柏苑" + }, + { + "building": "山光大廈", + "address": "香港島灣仔區山光道 7C, 7D, 7E & 7F號山光大廈" + }, + { + "building": "華苑", + "address": "香港島灣仔區山光道14-14A號華苑" + }, + { + "building": "嘉蘭閣", + "address": "香港島灣仔區山光道16號嘉蘭閣" + }, + { + "building": "意廬小築", + "address": "香港島灣仔區山光道1A號意廬小築" + }, + { + "building": "翠雅園", + "address": "香港島灣仔區山光道1號翠雅園" + }, + { + "building": "山光苑一期", + "address": "香港島灣仔區山光道22號山光苑" + }, + { + "building": "山光樓", + "address": "香港島灣仔區山光道26-32號山光樓" + }, + { + "building": "萬壽大廈", + "address": "香港島灣仔區山光道2號萬壽大廈" + }, + { + "building": "永富苑", + "address": "香港島灣仔區山光道34-40號永富苑" + }, + { + "building": "愉寶大廈", + "address": "香港島灣仔區山光道3號愉寶大廈" + }, + { + "building": "美光園", + "address": "香港島灣仔區山光道6號美光園" + }, + { + "building": "崇德大廈", + "address": "香港島灣仔區山光道7號崇德大廈" + }, + { + "building": "山村閣", + "address": "香港島灣仔區山村台19-21號山村閣" + }, + { + "building": "好運樓", + "address": "香港島灣仔區山村道10-12號好運樓" + }, + { + "building": "愉安大廈", + "address": "香港島灣仔區山村道11號愉安大廈" + }, + { + "building": "興利大廈", + "address": "香港島灣仔區山村道13-15號興利大廈" + }, + { + "building": "金翠樓", + "address": "香港島灣仔區山村道14-16號金翠樓" + }, + { + "building": "山勝大廈", + "address": "香港島灣仔區山村道18-20號山勝大廈" + }, + { + "building": "金珊閣", + "address": "香港島灣仔區山村道19號金珊閣" + }, + { + "building": "銀星閣", + "address": "香港島灣仔區山村道22-26號銀星閣" + }, + { + "building": "利華閣", + "address": "香港島灣仔區山村道29號利華閣" + }, + { + "building": "山景閣", + "address": "香港島灣仔區山村道31號山景閣" + }, + { + "building": "豐寧大廈", + "address": "香港島灣仔區山村道32-40號豐寧大廈" + }, + { + "building": "傲山村", + "address": "香港島灣仔區山村道39號傲山村" + }, + { + "building": "雅仕閣", + "address": "香港島灣仔區山村道45-47號雅仕閣" + }, + { + "building": "嘉泰大廈", + "address": "香港島灣仔區山村道46-48號嘉泰大廈" + }, + { + "building": "駿愉居", + "address": "香港島灣仔區山村道49號駿愉居" + }, + { + "building": "逸東軒", + "address": "香港島灣仔區山村道4H號逸東軒" + }, + { + "building": "匯文樓", + "address": "香港島灣仔區山村道50-52號匯文樓" + }, + { + "building": "愉安樓", + "address": "香港島灣仔區山村道56號愉安樓" + }, + { + "building": "鵬麗閣", + "address": "香港島灣仔區山村道5號鵬麗閣" + }, + { + "building": "豪軒", + "address": "香港島灣仔區山村道64號豪軒" + }, + { + "building": "雅園", + "address": "香港島灣仔區山村道66-68號雅園" + }, + { + "building": "山村大廈", + "address": "香港島灣仔區山村道7號山村大廈" + }, + { + "building": "泰苑", + "address": "香港島灣仔區山村臺11號泰苑" + }, + { + "building": "富雅閣", + "address": "香港島灣仔區山村臺13號富雅閣" + }, + { + "building": "太古大廈", + "address": "香港島灣仔區山頂道25號太古大廈" + }, + { + "building": "欣怡居", + "address": "香港島灣仔區山頂道8-12號欣怡居" + }, + { + "building": "華園", + "address": "香港島灣仔區中峽道5號華園" + }, + { + "building": "得利樓", + "address": "香港島灣仔區分域街15號得利樓" + }, + { + "building": "君悅居", + "address": "香港島灣仔區分域街8-12號君悅居" + }, + { + "building": "時代廣場", + "address": "香港島灣仔區勿地臣街1號時代廣場" + }, + { + "building": "寶明閣", + "address": "香港島灣仔區天后廟道14號寶明閣" + }, + { + "building": "柏傲山", + "address": "香港島灣仔區天后廟道18-A號柏傲山" + }, + { + "building": "傲龍軒", + "address": "香港島灣仔區天后廟道18號傲龍軒" + }, + { + "building": "景香樓", + "address": "香港島灣仔區天后廟道2-4號景香樓" + }, + { + "building": "飛龍台", + "address": "香港島灣仔區天后廟道26-32號飛龍台" + }, + { + "building": "明德樓", + "address": "香港島灣仔區天后廟道6-8號明德樓" + }, + { + "building": "威景臺", + "address": "香港島灣仔區天后廟道70號威景臺" + }, + { + "building": "僑康大廈", + "address": "香港島灣仔區天樂里3-5A號僑康大廈" + }, + { + "building": "恒安大廈", + "address": "香港島灣仔區天樂里6-18號恒安大廈" + }, + { + "building": "兆豐大廈", + "address": "香港島灣仔區天樂里9-17號兆豐大廈" + }, + { + "building": "福和大廈", + "address": "香港島灣仔區太和街10-20號福和大廈" + }, + { + "building": "泰和閣", + "address": "香港島灣仔區太和街22-28號泰和閣" + }, + { + "building": "泰和大廈", + "address": "香港島灣仔區太和街4-8號泰和大廈" + }, + { + "building": "瑞安閣", + "address": "香港島灣仔區太原街1-3號瑞安閣" + }, + { + "building": "匯源閣", + "address": "香港島灣仔區太原街17-19號匯源閣" + }, + { + "building": "雅慧苑", + "address": "香港島灣仔區太原街20-26號雅慧苑" + }, + { + "building": "太源閣", + "address": "香港島灣仔區太原街38號太源閣" + }, + { + "building": "海源中心", + "address": "香港島灣仔區太原街8號海源中心" + }, + { + "building": "百營商業大廈", + "address": "香港島灣仔區巴路士街1-3號百營商業大廈" + }, + { + "building": "英發新樓", + "address": "香港島灣仔區巴路士街2-4號英發新樓" + }, + { + "building": "駿逸峰", + "address": "香港島灣仔區日善街28號駿逸峰" + }, + { + "building": "順好樓", + "address": "香港島灣仔區日街1號順好樓" + }, + { + "building": "日新樓", + "address": "香港島灣仔區日街6-7號日新樓" + }, + { + "building": "日興樓", + "address": "香港島灣仔區日街8-9號日興樓" + }, + { + "building": "月星樓", + "address": "香港島灣仔區月街14-16號月星樓" + }, + { + "building": "大亞樓", + "address": "香港島灣仔區月街15-17號大亞樓" + }, + { + "building": "月豐閣", + "address": "香港島灣仔區月街17A號月豐閣" + }, + { + "building": "星月閣", + "address": "香港島灣仔區月街2-12號星月閣" + }, + { + "building": "縉景臺", + "address": "香港島灣仔區木星街18號縉景臺第一座" + }, + { + "building": "維?浚匯", + "address": "香港島灣仔區木星街23號維?浚匯" + }, + { + "building": "澤盈中心", + "address": "香港島灣仔區木星街3號澤盈中心" + }, + { + "building": "永昇中心", + "address": "香港島灣仔區木星街9-11號永昇中心" + }, + { + "building": "海新大廈", + "address": "香港島灣仔區水星街10-16號海新大廈" + }, + { + "building": "山河大廈", + "address": "香港島灣仔區水星街17-19號山河大廈" + }, + { + "building": "華信大廈", + "address": "香港島灣仔區水星街18-20號華信大廈" + }, + { + "building": "耀星華庭", + "address": "香港島灣仔區水星街28號耀星華庭" + }, + { + "building": "海興大廈(水星街)", + "address": "香港島灣仔區水星街5-7號海興大廈(水星街)" + }, + { + "building": "鉅利大廈", + "address": "香港島灣仔區水星街9-11號鉅利大廈" + }, + { + "building": "友園", + "address": "香港島灣仔區冬青道10-12號友園" + }, + { + "building": "冬青閣", + "address": "香港島灣仔區冬青道1號冬青閣" + }, + { + "building": "加路連大樓", + "address": "香港島灣仔區加路連山道" + }, + { + "building": "加路連山花園", + "address": "香港島灣仔區加路連山道101號加路連山花園" + }, + { + "building": "力生軒", + "address": "香港島灣仔區加路連山道109號力生軒" + }, + { + "building": "禮信大廈", + "address": "香港島灣仔區加路連山道1號禮信大廈" + }, + { + "building": "海威大廈", + "address": "香港島灣仔區加寧街10號海威大廈" + }, + { + "building": "美亞美大廈", + "address": "香港島灣仔區加寧街13-15號美亞美大廈" + }, + { + "building": "美登大廈", + "address": "香港島灣仔區加寧街1-3號美登大廈" + }, + { + "building": "加寧大廈", + "address": "香港島灣仔區加寧街5-7號加寧大廈" + }, + { + "building": "海倫大廈", + "address": "香港島灣仔區加寧街8號海倫大廈" + }, + { + "building": "華高大廈", + "address": "香港島灣仔區加寧街9-11號華高大廈" + }, + { + "building": "楊志誠堂", + "address": "香港島灣仔區包華士道4號楊志誠堂" + }, + { + "building": "城市大廈", + "address": "香港島灣仔區史釗域道14-16號城市大廈" + }, + { + "building": "友邦大廈", + "address": "香港島灣仔區司徒拔道1號友邦大廈" + }, + { + "building": "豐景台豐景臺", + "address": "香港島灣仔區司徒拔道24號豐景台豐景臺" + }, + { + "building": "漢苑", + "address": "香港島灣仔區司徒拔道28-30號漢苑" + }, + { + "building": "紀園", + "address": "香港島灣仔區司徒拔道34號紀園" + }, + { + "building": "玫瑰新?", + "address": "香港島灣仔區司徒拔道41A號玫瑰新?" + }, + { + "building": "御峰", + "address": "香港島灣仔區司徒拔道41C號御峰" + }, + { + "building": "曉廬", + "address": "香港島灣仔區司徒拔道41D號曉廬" + }, + { + "building": "碧蕙園", + "address": "香港島灣仔區司徒拔道41號碧蕙園" + }, + { + "building": "威利閣", + "address": "香港島灣仔區司徒拔道43A號威利閣" + }, + { + "building": "松柏新?", + "address": "香港島灣仔區司徒拔道43號松柏新?A座" + }, + { + "building": "大鵬閣", + "address": "香港島灣仔區司徒拔道47B號大鵬閣" + }, + { + "building": "寶璧大廈", + "address": "香港島灣仔區司徒拔道47C號寶璧大廈" + }, + { + "building": "?徑苑", + "address": "香港島灣仔區布力徑" + }, + { + "building": "永安閣", + "address": "香港島灣仔區布思道" + }, + { + "building": "年達園", + "address": "香港島灣仔區布思道11號年達園" + }, + { + "building": "?麗園", + "address": "香港島灣仔區布思道1號?麗園" + }, + { + "building": "田華閣", + "address": "香港島灣仔區永興街10-12號田華閣" + }, + { + "building": "興裕大廈", + "address": "香港島灣仔區永興街21-23號興裕大廈" + }, + { + "building": "永興新樓", + "address": "香港島灣仔區永興街25-31A號永興新樓" + }, + { + "building": "昌盛洋樓", + "address": "香港島灣仔區永興街33-39號昌盛洋樓" + }, + { + "building": "漢文閣", + "address": "香港島灣仔區永興街9-11號漢文閣" + }, + { + "building": "永豪閣", + "address": "香港島灣仔區永豐街12-18號永豪閣" + }, + { + "building": "永豐閣", + "address": "香港島灣仔區永豐街21號永豐閣" + }, + { + "building": "嘉樂園", + "address": "香港島灣仔區甘道24-26號嘉樂園" + }, + { + "building": "嘉鵬園", + "address": "香港島灣仔區白建時道" + }, + { + "building": "禮苑", + "address": "香港島灣仔區白建時道11號禮苑" + }, + { + "building": "嘉雲臺", + "address": "香港島灣仔區白建時道33號嘉雲臺" + }, + { + "building": "松?園", + "address": "香港島灣仔區白建時道39號松?園" + }, + { + "building": "寧苑", + "address": "香港島灣仔區白建時道41號寧苑" + }, + { + "building": "寧苑", + "address": "香港島灣仔區白建時道43-45號寧苑" + }, + { + "building": "牛奶公司白建時道商場", + "address": "香港島灣仔區白建時道5號牛奶公司白建時道商場" + }, + { + "building": "明頓別墅", + "address": "香港島灣仔區白建時道61-63號明頓別墅" + }, + { + "building": "?富閣", + "address": "香港島灣仔區石水渠街10-12號?富閣" + }, + { + "building": "其發大廈", + "address": "香港島灣仔區石水渠街1-13號其發大廈" + }, + { + "building": "金勝大廈", + "address": "香港島灣仔區石水渠街14-24號金勝大廈" + }, + { + "building": "恒旺樓", + "address": "香港島灣仔區石水渠街19-21號恒旺樓" + }, + { + "building": "永基大廈", + "address": "香港島灣仔區石水渠街23-25號永基大廈" + }, + { + "building": "富樂樓", + "address": "香港島灣仔區石水渠街64-70A號富樂樓" + }, + { + "building": "年威閣", + "address": "香港島灣仔區石水渠街69-71號年威閣" + }, + { + "building": "鴻發樓", + "address": "香港島灣仔區石水渠街88-90號鴻發樓" + }, + { + "building": "保和大廈", + "address": "香港島灣仔區交加里51號保和大廈" + }, + { + "building": "富榮閣", + "address": "香港島灣仔區交加街10-12號富榮閣" + }, + { + "building": "富園大廈", + "address": "香港島灣仔區交加街1-7號富園大廈" + }, + { + "building": "兆威閣", + "address": "香港島灣仔區交加街18號兆威閣" + }, + { + "building": "珊瑚苑", + "address": "香港島灣仔區交加街26號珊瑚苑" + }, + { + "building": "廣廈樓", + "address": "香港島灣仔區交加街30-32號廣廈樓" + }, + { + "building": "慧蘭閣", + "address": "香港島灣仔區交加街33號慧蘭閣" + }, + { + "building": "福祥樓", + "address": "香港島灣仔區交加街34-38號福祥樓" + }, + { + "building": "欣榮商業大廈", + "address": "香港島灣仔區伊榮街9號欣榮商業大廈" + }, + { + "building": "大德樓", + "address": "香港島灣仔區吉安街17號大德樓" + }, + { + "building": "新城樓", + "address": "香港島灣仔區吉安街1號新城樓" + }, + { + "building": "建安樓", + "address": "香港島灣仔區吉安街8-12號建安樓" + }, + { + "building": "勵志大廈", + "address": "香港島灣仔區安庶庇街28號勵志大廈" + }, + { + "building": "綄紗大廈", + "address": "香港島灣仔區安庶庇街5號綄紗大廈" + }, + { + "building": "利昌大廈", + "address": "香港島灣仔區安樂里1-3號利昌大廈" + }, + { + "building": "梅林大廈", + "address": "香港島灣仔區成和坊2號梅林大廈" + }, + { + "building": "輝華小苑", + "address": "香港島灣仔區成和坊4號輝華小苑" + }, + { + "building": "鳳棲樓", + "address": "香港島灣仔區成和坊5號鳳棲樓" + }, + { + "building": "麗成大廈", + "address": "香港島灣仔區成和道13-19號麗成大廈" + }, + { + "building": "津懋花園", + "address": "香港島灣仔區成和道18號津懋花園" + }, + { + "building": "御珍閣", + "address": "香港島灣仔區成和道22號御珍閣" + }, + { + "building": "雅緻苑", + "address": "香港島灣仔區成和道25-27號雅緻苑" + }, + { + "building": "協德大廈", + "address": "香港島灣仔區成和道2-8號協德大廈" + }, + { + "building": "日月大廈", + "address": "香港島灣仔區成和道45號日月大廈" + }, + { + "building": "南榮大廈", + "address": "香港島灣仔區成和道49-51A號南榮大廈" + }, + { + "building": "昌明大樓", + "address": "香港島灣仔區成和道53-59A號昌明大樓" + }, + { + "building": "豐和大廈", + "address": "香港島灣仔區成和道65號豐和大廈" + }, + { + "building": "昇平樓", + "address": "香港島灣仔區成和道67-67C號昇平樓" + }, + { + "building": "嘉逸軒", + "address": "香港島灣仔區成和道69號嘉逸軒" + }, + { + "building": "荷塘苑", + "address": "香港島灣仔區成和道70-70A號荷塘苑" + }, + { + "building": "雅麗閣", + "address": "香港島灣仔區成和道71號雅麗閣" + }, + { + "building": "文瀚苑", + "address": "香港島灣仔區成和道73號文瀚苑" + }, + { + "building": "藍塘別墅", + "address": "香港島灣仔區成和道74-80號藍塘別墅" + }, + { + "building": "仁美大廈", + "address": "香港島灣仔區汕頭街11-21號仁美大廈" + }, + { + "building": "怡勤閣", + "address": "香港島灣仔區汕頭街12號怡勤閣" + }, + { + "building": "意可樓", + "address": "香港島灣仔區汕頭街22-24號意可樓" + }, + { + "building": "開平周濂溪大樓", + "address": "香港島灣仔區汕頭街23號開平周濂溪大樓" + }, + { + "building": "華登大廈", + "address": "香港島灣仔區百德新街27號華登大廈" + }, + { + "building": "百德大廈A座", + "address": "香港島灣仔區百德新街37-47號百德大廈A座" + }, + { + "building": "百德大廈C座", + "address": "香港島灣仔區百德新街37號百德大廈C座" + }, + { + "building": "銅鑼灣大廈", + "address": "香港島灣仔區百德新街42-48號銅鑼灣大廈" + }, + { + "building": "唐寧大廈", + "address": "香港島灣仔區百德新街50-56號唐寧大廈" + }, + { + "building": "華爾大廈", + "address": "香港島灣仔區百德新街51號華爾大廈" + }, + { + "building": "海德大廈", + "address": "香港島灣仔區百德新街53號海德大廈" + }, + { + "building": "海華大廈", + "address": "香港島灣仔區百德新街57號海華大廈" + }, + { + "building": "華廈大廈", + "address": "香港島灣仔區百德新街58-64號華廈大廈" + }, + { + "building": "海濱大廈", + "address": "香港島灣仔區百德新街59-65號海濱大廈" + }, + { + "building": "海灣大廈", + "address": "香港島灣仔區百德新街66-72號海灣大廈" + }, + { + "building": "展鴻大廈", + "address": "香港島灣仔區克街1-15號展鴻大廈" + }, + { + "building": "廣生行大廈B座", + "address": "香港島灣仔區克街6號廣生行大廈B座" + }, + { + "building": "鳳鳴大廈", + "address": "香港島灣仔區利園山道54-70號鳳鳴大廈" + }, + { + "building": "利恒閣", + "address": "香港島灣仔區利群道5號利恒閣" + }, + { + "building": "利群閣", + "address": "香港島灣仔區利群道7號利群閣" + }, + { + "building": "大新金融中心", + "address": "香港島灣仔區告士打道108號大新金融中心" + }, + { + "building": "東惠商業大廈", + "address": "香港島灣仔區告士打道109-111號東惠商業大廈" + }, + { + "building": "樂高大廈", + "address": "香港島灣仔區告士打道132-133號樂高大廈" + }, + { + "building": "聯合鹿島大廈", + "address": "香港島灣仔區告士打道138號聯合鹿島大廈" + }, + { + "building": "資本中心", + "address": "香港島灣仔區告士打道151號資本中心" + }, + { + "building": "信和財務大廈", + "address": "香港島灣仔區告士打道166-168號信和財務大廈" + }, + { + "building": "安邦商業大廈", + "address": "香港島灣仔區告士打道171-172號安邦商業大廈" + }, + { + "building": "華懋世紀廣場", + "address": "香港島灣仔區告士打道178號華懋世紀廣場" + }, + { + "building": "中怡大廈", + "address": "香港島灣仔區告士打道181-185號中怡大廈" + }, + { + "building": "新銀集團中心", + "address": "香港島灣仔區告士打道200號新銀集團中心" + }, + { + "building": "尚匯", + "address": "香港島灣仔區告士打道212號尚匯" + }, + { + "building": "漣天", + "address": "香港島灣仔區告士打道217-218號漣天" + }, + { + "building": "基華樓", + "address": "香港島灣仔區告士打道219-220號基華樓" + }, + { + "building": "海聯大廈", + "address": "香港島灣仔區告士打道221-226號海聯大廈" + }, + { + "building": "宇宙商業大廈", + "address": "香港島灣仔區告士打道229-230號宇宙商業大廈" + }, + { + "building": "交通銀行大廈", + "address": "香港島灣仔區告士打道233號交通銀行大廈" + }, + { + "building": "伊利莎伯大廈", + "address": "香港島灣仔區告士打道250號伊利莎伯大廈" + }, + { + "building": "信和廣場", + "address": "香港島灣仔區告士打道255-257號信和廣場" + }, + { + "building": "鵬利中心", + "address": "香港島灣仔區告士打道262號鵬利中心" + }, + { + "building": "海宮大廈", + "address": "香港島灣仔區告士打道264-268號海宮大廈" + }, + { + "building": "世界貿易中心", + "address": "香港島灣仔區告士打道280號世界貿易中心" + }, + { + "building": "中國恆大中心", + "address": "香港島灣仔區告士打道38號中國恆大中心" + }, + { + "building": "電訊大廈", + "address": "香港島灣仔區告士打道3號電訊大廈" + }, + { + "building": "永亨金融中心", + "address": "香港島灣仔區告士打道60號永亨金融中心" + }, + { + "building": "六國中心", + "address": "香港島灣仔區告士打道72號六國中心" + }, + { + "building": "富通大廈", + "address": "香港島灣仔區告士打道77-79號富通大廈" + }, + { + "building": "寶德大廈", + "address": "香港島灣仔區宏德街3A-3E號寶德大廈" + }, + { + "building": "宏豐臺", + "address": "香港島灣仔區宏豐臺" + }, + { + "building": "梅苑別墅梅苑", + "address": "香港島灣仔區宏豐臺11號別墅梅苑" + }, + { + "building": "豐景苑", + "address": "香港島灣仔區宏豐臺12號豐景苑" + }, + { + "building": "均輝閣", + "address": "香港島灣仔區宏豐臺13-14號均輝閣" + }, + { + "building": "怡翠軒", + "address": "香港島灣仔區宏豐臺16號怡翠軒" + }, + { + "building": "偉景大廈", + "address": "香港島灣仔區宏豐臺1號偉景大廈" + }, + { + "building": "怡晴軒", + "address": "香港島灣仔區宏豐臺6號怡晴軒" + }, + { + "building": "愉園", + "address": "香港島灣仔區宏豐臺7號愉園" + }, + { + "building": "禮希大廈第一座", + "address": "香港島灣仔區希雲街" + }, + { + "building": "禮雲大廈", + "address": "香港島灣仔區希雲街" + }, + { + "building": "希雲大廈", + "address": "香港島灣仔區希雲街2-30號希雲大廈" + }, + { + "building": "蟾宮大廈", + "address": "香港島灣仔區希慎道2-4號蟾宮大廈" + }, + { + "building": "裕景商業中心", + "address": "香港島灣仔區希慎道8號裕景商業中心" + }, + { + "building": "李節花園", + "address": "香港島灣仔區李節街1號李節花園" + }, + { + "building": "文熙大廈", + "address": "香港島灣仔區李節街21號文熙大廈" + }, + { + "building": "?策大廈", + "address": "香港島灣仔區杜老誌道6號?策大廈" + }, + { + "building": "海華苑一座", + "address": "香港島灣仔區秀華坊11-17號海華苑一座" + }, + { + "building": "海華苑二座", + "address": "香港島灣仔區秀華坊8號海華苑二座" + }, + { + "building": "怡園", + "address": "香港島灣仔區谷柏道15號怡園" + }, + { + "building": "東寧大廈", + "address": "香港島灣仔區京士頓街11號東寧大廈" + }, + { + "building": "京士頓大廈", + "address": "香港島灣仔區京士頓街2-4號京士頓大廈" + }, + { + "building": "漢寧大廈", + "address": "香港島灣仔區京士頓街6號漢寧大廈" + }, + { + "building": "新豪大廈", + "address": "香港島灣仔區京士頓街8號新豪大廈" + }, + { + "building": "嘉賓大廈", + "address": "香港島灣仔區京士頓街9號嘉賓大廈" + }, + { + "building": "維多利中心", + "address": "香港島灣仔區屈臣道15號" + }, + { + "building": "香港大廈", + "address": "香港島灣仔區怡和街1-1L號香港大廈" + }, + { + "building": "樂聲大廈", + "address": "香港島灣仔區怡和街19-31號樂聲大廈" + }, + { + "building": "英光大廈", + "address": "香港島灣仔區怡和街2-6號英光大廈" + }, + { + "building": "恒生銅鑼灣大廈", + "address": "香港島灣仔區怡和街28號恒生銅鑼灣大廈" + }, + { + "building": "怡華大廈", + "address": "香港島灣仔區怡和街38-40A號怡華大廈" + }, + { + "building": "華人銀行東區大廈", + "address": "香港島灣仔區怡和街42-44號華人銀行東區大廈" + }, + { + "building": "百利保廣場", + "address": "香港島灣仔區怡和街68號百利保廣場" + }, + { + "building": "V CAUSEWAY BAY", + "address": "香港島灣仔區怡和街9-15號V CAUSEWAY BAY" + }, + { + "building": "愉昇閣", + "address": "香港島灣仔區昇平街1-5號愉昇閣" + }, + { + "building": "茗苑", + "address": "香港島灣仔區昌明街1-3號茗苑" + }, + { + "building": "東山臺", + "address": "香港島灣仔區東山臺" + }, + { + "building": "德信豪庭", + "address": "香港島灣仔區東山臺16號德信豪庭" + }, + { + "building": "瑩景閣", + "address": "香港島灣仔區東山臺17號瑩景閣" + }, + { + "building": "德信花園", + "address": "香港島灣仔區東山臺19號德信花園" + }, + { + "building": "摘星閣", + "address": "香港島灣仔區東山臺1號摘星閣" + }, + { + "building": "東山別墅", + "address": "香港島灣仔區東山臺2號東山別墅" + }, + { + "building": "月陶居", + "address": "香港島灣仔區東山臺3號月陶居" + }, + { + "building": "雅閣", + "address": "香港島灣仔區東山臺5號雅閣" + }, + { + "building": "BOWEN VERDE", + "address": "香港島灣仔區東山臺6號BOWEN VERDE" + }, + { + "building": "莒園", + "address": "香港島灣仔區東山臺8號莒園" + }, + { + "building": "置安大廈", + "address": "香港島灣仔區東角道24號置安大廈" + }, + { + "building": "怡安大廈", + "address": "香港島灣仔區東角道26號怡安大廈" + }, + { + "building": "寶榮大樓", + "address": "香港島灣仔區波斯富街108-120號寶榮大樓" + }, + { + "building": "軒尼詩大廈", + "address": "香港島灣仔區波斯富街48-52號軒尼詩大廈" + }, + { + "building": "高華樓", + "address": "香港島灣仔區波斯富街67-69號高華樓" + }, + { + "building": "寶富大樓", + "address": "香港島灣仔區波斯富街84-94號寶富大樓" + }, + { + "building": "寶明大廈", + "address": "香港島灣仔區波斯富街96-106號寶明大廈" + }, + { + "building": "利舞臺廣場", + "address": "香港島灣仔區波斯富街99號利舞臺廣場" + }, + { + "building": "憩苑", + "address": "香港島灣仔區金馬麟山道22號憩苑" + }, + { + "building": "龍心閣", + "address": "香港島灣仔區金龍台11號龍心閣" + }, + { + "building": "乘龍閣", + "address": "香港島灣仔區金龍台13號乘龍閣" + }, + { + "building": "金龍臺金龍大廈", + "address": "香港島灣仔區金龍台6號金龍臺金龍大廈" + }, + { + "building": "龍峰閣", + "address": "香港島灣仔區金龍台9號龍峰閣" + }, + { + "building": "聚龍閣", + "address": "香港島灣仔區金龍臺1號聚龍閣" + }, + { + "building": "金龍臺9A號", + "address": "香港島灣仔區金龍臺9-A號金龍臺9A號" + }, + { + "building": "華英大廈", + "address": "香港島灣仔區信德街14-20號華英大廈" + }, + { + "building": "宏信大廈", + "address": "香港島灣仔區信德街15號宏信大廈" + }, + { + "building": "美蘭閣", + "address": "香港島灣仔區信德街1-7號美蘭閣" + }, + { + "building": "百威商業大廈", + "address": "香港島灣仔區信德街9-11號百威商業大廈" + }, + { + "building": "啟蔭閣", + "address": "香港島灣仔區奕蔭街10號啟蔭閣" + }, + { + "building": "仁麗苑", + "address": "香港島灣仔區奕蔭街18號仁麗苑" + }, + { + "building": "奕蔭樓", + "address": "香港島灣仔區奕蔭街20-22號奕蔭樓" + }, + { + "building": "奕雲樓", + "address": "香港島灣仔區奕蔭街24-28號奕雲樓" + }, + { + "building": "成和大廈", + "address": "香港島灣仔區奕蔭街2-8號成和大廈" + }, + { + "building": "文華樓", + "address": "香港島灣仔區奕蔭街34-36號文華樓" + }, + { + "building": "新暉閣", + "address": "香港島灣仔區奕蔭街37-39號新暉閣" + }, + { + "building": "順興樓", + "address": "香港島灣仔區威非路道11-13號順興樓" + }, + { + "building": "萬順樓", + "address": "香港島灣仔區威非路道15-19號萬順樓" + }, + { + "building": "威非路道18號", + "address": "香港島灣仔區威非路道18號" + }, + { + "building": "佳景大廈", + "address": "香港島灣仔區威非路道23-35號佳景大廈" + }, + { + "building": "金都洋樓", + "address": "香港島灣仔區威菲路道2-10號金都洋樓" + }, + { + "building": "海都洋樓", + "address": "香港島灣仔區威菲路道2-10號海都洋樓" + }, + { + "building": "銀都洋樓", + "address": "香港島灣仔區威菲路道2-10號銀都洋樓" + }, + { + "building": "海閣洋樓", + "address": "香港島灣仔區威菲路道3-9號海閣洋樓" + }, + { + "building": "積信樓", + "address": "香港島灣仔區施弼街7號積信樓" + }, + { + "building": "匯星壹號", + "address": "香港島灣仔區星街1號匯星壹號" + }, + { + "building": "永星苑", + "address": "香港島灣仔區星街7號永星苑" + }, + { + "building": "星域軒第二座", + "address": "香港島灣仔區星街9號星域軒第二座" + }, + { + "building": "春暉大廈", + "address": "香港島灣仔區春園街1-11號春暉大廈" + }, + { + "building": "春園大廈", + "address": "香港島灣仔區春園街29-41號春園大廈" + }, + { + "building": "新春園大廈", + "address": "香港島灣仔區春園街47-65號新春園大廈" + }, + { + "building": "永興樓", + "address": "香港島灣仔區春園街6-12號永興樓" + }, + { + "building": "愉富大廈", + "address": "香港島灣仔區春暉道" + }, + { + "building": "億景樓", + "address": "香港島灣仔區春暉道3號億景樓" + }, + { + "building": "大坑台", + "address": "香港島灣仔區春暉道5號大坑台" + }, + { + "building": "慧景園", + "address": "香港島灣仔區春暉道7號" + }, + { + "building": "龍園", + "address": "香港島灣仔區春暉臺1號龍園" + }, + { + "building": "其昌中心", + "address": "香港島灣仔區柯布連道15號其昌中心" + }, + { + "building": "香海大廈", + "address": "香港島灣仔區柯布連道28-32號香海大廈" + }, + { + "building": "修頓花園", + "address": "香港島灣仔區柯布連道2號修頓花園" + }, + { + "building": "迢舜大廈", + "address": "香港島灣仔區柯布連道3-3B號迢舜大廈" + }, + { + "building": "耀基商業大廈", + "address": "香港島灣仔區柯布連道5號耀基商業大廈" + }, + { + "building": "萃?", + "address": "香港島灣仔區活道28號萃?" + }, + { + "building": "活道樓", + "address": "香港島灣仔區活道3-5號活道樓" + }, + { + "building": "長春大廈", + "address": "香港島灣仔區活道6-10A號長春大廈" + }, + { + "building": "鉅芝樓", + "address": "香港島灣仔區皇后大道東100-102號鉅芝樓" + }, + { + "building": "慶安大樓", + "address": "香港島灣仔區皇后大道東101-103號慶安大樓" + }, + { + "building": "富東樓", + "address": "香港島灣仔區皇后大道東104號富東樓" + }, + { + "building": "智群商業中心", + "address": "香港島灣仔區皇后大道東109-115號智群商業中心" + }, + { + "building": "欣景閣", + "address": "香港島灣仔區皇后大道東119-121號欣景閣" + }, + { + "building": "金港大廈", + "address": "香港島灣仔區皇后大道東122-128號金港大廈" + }, + { + "building": "惠民樓", + "address": "香港島灣仔區皇后大道東133-133A號惠民樓" + }, + { + "building": "聲浩樓", + "address": "香港島灣仔區皇后大道東137號聲浩樓" + }, + { + "building": "聖安樓", + "address": "香港島灣仔區皇后大道東139號聖安樓" + }, + { + "building": "恒山中心", + "address": "香港島灣仔區皇后大道東141-145號恒山中心" + }, + { + "building": "明仁大樓", + "address": "香港島灣仔區皇后大道東146-152號明仁大樓" + }, + { + "building": "威利商業大廈", + "address": "香港島灣仔區皇后大道東147-151號威利商業大廈" + }, + { + "building": "順豐國際中心", + "address": "香港島灣仔區皇后大道東182號順豐國際中心" + }, + { + "building": "合和中心", + "address": "香港島灣仔區皇后大道東183號合和中心" + }, + { + "building": "東曦大廈", + "address": "香港島灣仔區皇后大道東18號東曦大廈" + }, + { + "building": "太古廣場 ", + "address": "香港島灣仔區皇后大道東1號太古廣場" + }, + { + "building": "囍匯", + "address": "香港島灣仔區皇后大道東200號1期囍匯5座" + }, + { + "building": "百福樓", + "address": "香港島灣仔區皇后大道東208-212號百福樓" + }, + { + "building": "胡忠大廈", + "address": "香港島灣仔區皇后大道東213號胡忠大廈" + }, + { + "building": "瑞祥大廈", + "address": "香港島灣仔區皇后大道東223-229A號瑞祥大廈" + }, + { + "building": "中華大廈", + "address": "香港島灣仔區皇后大道東228號中華大廈" + }, + { + "building": "恒威商業大廈", + "address": "香港島灣仔區皇后大道東231-233號恒威商業大廈" + }, + { + "building": "隆基樓", + "address": "香港島灣仔區皇后大道東238號隆基樓" + }, + { + "building": "金鐘匯中心", + "address": "香港島灣仔區皇后大道東24-32號金鐘匯中心" + }, + { + "building": "均利大樓", + "address": "香港島灣仔區皇后大道東265-267號均利大樓" + }, + { + "building": "樂滿大廈", + "address": "香港島灣仔區皇后大道東29-31號樂滿大廈" + }, + { + "building": "嘉佑大廈", + "address": "香港島灣仔區皇后大道東36-44號嘉佑大廈" + }, + { + "building": "新華通訊社", + "address": "香港島灣仔區皇后大道東379-381號新華通訊社" + }, + { + "building": "華景樓", + "address": "香港島灣仔區皇后大道東383-385A號華景樓" + }, + { + "building": "東美中心", + "address": "香港島灣仔區皇后大道東43-59號東美中心" + }, + { + "building": "帝后商業中心", + "address": "香港島灣仔區皇后大道東58-64號帝后商業中心" + }, + { + "building": "晴峰居", + "address": "香港島灣仔區皇后大道東63-65號晴峰居" + }, + { + "building": "大東大廈", + "address": "香港島灣仔區皇后大道東67-73號大東大廈" + }, + { + "building": "雲樓", + "address": "香港島灣仔區皇后大道東70號雲樓" + }, + { + "building": "順發樓", + "address": "香港島灣仔區皇后大道東72-76號順發樓" + }, + { + "building": "集富中心", + "address": "香港島灣仔區皇后大道東83號集富中心" + }, + { + "building": "公安樓", + "address": "香港島灣仔區英皇道 / 1A 木星街85號公安樓" + }, + { + "building": "僑興大廈", + "address": "香港島灣仔區英皇道14號僑興大廈" + }, + { + "building": "?景臺", + "address": "香港島灣仔區英皇道1號?景臺" + }, + { + "building": "鴻安大廈", + "address": "香港島灣仔區英皇道2-4號鴻安大廈" + }, + { + "building": "英皇道凱英大廈", + "address": "香港島灣仔區英皇道29號英皇道凱英大廈" + }, + { + "building": "金山閣", + "address": "香港島灣仔區英皇道37號金山閣" + }, + { + "building": "顯淋樓", + "address": "香港島灣仔區英皇道39號顯淋樓" + }, + { + "building": "維順閣", + "address": "香港島灣仔區英皇道41號維順閣" + }, + { + "building": "啟禮閣", + "address": "香港島灣仔區英皇道67-71號啟禮閣" + }, + { + "building": "百利大廈", + "address": "香港島灣仔區英皇道6-8號百利大廈" + }, + { + "building": "聯合出版大廈", + "address": "香港島灣仔區英皇道75-83號聯合出版大廈" + }, + { + "building": "錦平中心", + "address": "香港島灣仔區英皇道93號錦平中心" + }, + { + "building": "建基大廈", + "address": "香港島灣仔區英皇道99號建基大廈" + }, + { + "building": "熙信大廈", + "address": "香港島灣仔區軍器廠街2號熙信大廈" + }, + { + "building": "中南大廈", + "address": "香港島灣仔區軍器廠街4號中南大廈" + }, + { + "building": "亨利中心", + "address": "香港島灣仔區恩平道42號亨利中心" + }, + { + "building": "恩平中心", + "address": "香港島灣仔區恩平道44-48號恩平中心" + }, + { + "building": "晉寶大廈", + "address": "香港島灣仔區晉源街7號晉寶大廈" + }, + { + "building": "誠和閣", + "address": "香港島灣仔區桂成里18號誠和閣" + }, + { + "building": "EIGHT KWAI FONG", + "address": "香港島灣仔區桂芳街8號EIGHT KWAI FONG" + }, + { + "building": "融苑", + "address": "香港島灣仔區浣紗街" + }, + { + "building": "浣紗閣", + "address": "香港島灣仔區浣紗街1-5號浣紗閣" + }, + { + "building": "松棉樓", + "address": "香港島灣仔區浣紗街16-18號松棉樓" + }, + { + "building": "西施樓", + "address": "香港島灣仔區浣紗街20-22號西施樓" + }, + { + "building": "錦松樓", + "address": "香港島灣仔區浣紗街26-28號錦松樓" + }, + { + "building": "浣紗花園", + "address": "香港島灣仔區浣紗街33-45號浣紗花園" + }, + { + "building": "雍藝軒", + "address": "香港島灣仔區浣紗街55號雍藝軒" + }, + { + "building": "福興閣", + "address": "香港島灣仔區浣紗街63號福興閣" + }, + { + "building": "全興樓", + "address": "香港島灣仔區浣紗街6-6A號全興樓" + }, + { + "building": "南景樓", + "address": "香港島灣仔區琉璃街13-17號南景樓" + }, + { + "building": "向南樓", + "address": "香港島灣仔區琉璃街3-3C號向南樓" + }, + { + "building": "永安樓", + "address": "香港島灣仔區琉璃街4-4A號永安樓" + }, + { + "building": "柏景中心", + "address": "香港島灣仔區琉璃街7號柏景中心" + }, + { + "building": "留仙街雅景樓", + "address": "香港島灣仔區留仙街1-5號留仙街雅景樓" + }, + { + "building": "益群苑", + "address": "香港島灣仔區益群道8號益群苑" + }, + { + "building": "(金百利) 金堡中心", + "address": "香港島灣仔區記利佐治街1號(金百利) 金堡中心" + }, + { + "building": "珠城大廈", + "address": "香港島灣仔區記利佐治街25-29號珠城大廈" + }, + { + "building": "百德大廈B座", + "address": "香港島灣仔區記利佐治街7-9號百德大廈B座" + }, + { + "building": "越興大廈", + "address": "香港島灣仔區軒尼詩道103號越興大廈" + }, + { + "building": "協生大廈", + "address": "香港島灣仔區軒尼詩道107-115號協生大廈" + }, + { + "building": "軒尼詩大樓", + "address": "香港島灣仔區軒尼詩道117-123號軒尼詩大樓" + }, + { + "building": "修頓中心", + "address": "香港島灣仔區軒尼詩道130-150號修頓中心" + }, + { + "building": "中國海外大廈", + "address": "香港島灣仔區軒尼詩道139號中國海外大廈" + }, + { + "building": "安康商業大廈", + "address": "香港島灣仔區軒尼詩道145號安康商業大廈" + }, + { + "building": "萬寶樓", + "address": "香港島灣仔區軒尼詩道149-151號萬寶樓" + }, + { + "building": "順利大廈", + "address": "香港島灣仔區軒尼詩道153-155號順利大廈" + }, + { + "building": "利榮大樓", + "address": "香港島灣仔區軒尼詩道156-162號利榮大樓" + }, + { + "building": "FC RESIDENCE", + "address": "香港島灣仔區軒尼詩道157號FC RESIDENCE" + }, + { + "building": "亨寧商業大廈", + "address": "香港島灣仔區軒尼詩道164-166號亨寧商業大廈" + }, + { + "building": "台山商會大廈", + "address": "香港島灣仔區軒尼詩道167-169號台山商會大廈" + }, + { + "building": "煥然樓", + "address": "香港島灣仔區軒尼詩道168-170號煥然樓" + }, + { + "building": "宜發大廈", + "address": "香港島灣仔區軒尼詩道16號宜發大廈" + }, + { + "building": "光裕樓", + "address": "香港島灣仔區軒尼詩道172-174A號光裕樓" + }, + { + "building": "貴榮大廈", + "address": "香港島灣仔區軒尼詩道175-177號貴榮大廈" + }, + { + "building": "聯星大廈", + "address": "香港島灣仔區軒尼詩道176-178號聯星大廈" + }, + { + "building": "康富大廈", + "address": "香港島灣仔區軒尼詩道179-181號康富大廈" + }, + { + "building": "永昌大廈", + "address": "香港島灣仔區軒尼詩道18-20號永昌大廈" + }, + { + "building": "兆安大廈", + "address": "香港島灣仔區軒尼詩道183-185號兆安大廈" + }, + { + "building": "濂風大廈", + "address": "香港島灣仔區軒尼詩道187-193號濂風大廈" + }, + { + "building": "TOWER 188", + "address": "香港島灣仔區軒尼詩道188-190號TOWER 188" + }, + { + "building": "英京大廈", + "address": "香港島灣仔區軒尼詩道192-198號英京大廈" + }, + { + "building": "東華大廈", + "address": "香港島灣仔區軒尼詩道199-203號東華大廈" + }, + { + "building": "恒生灣仔大廈", + "address": "香港島灣仔區軒尼詩道200號恒生灣仔大廈" + }, + { + "building": "廣德大廈", + "address": "香港島灣仔區軒尼詩道205-207號廣德大廈" + }, + { + "building": "金軒商業大廈", + "address": "香港島灣仔區軒尼詩道209-211號金軒商業大廈" + }, + { + "building": "寶華商業中心", + "address": "香港島灣仔區軒尼詩道226-226A號寶華商業中心" + }, + { + "building": "怡明閣", + "address": "香港島灣仔區軒尼詩道231號怡明閣" + }, + { + "building": "詩禮大樓", + "address": "香港島灣仔區軒尼詩道241-243號詩禮大樓" + }, + { + "building": "卓能廣場", + "address": "香港島灣仔區軒尼詩道244-250號卓能廣場" + }, + { + "building": "守時商業大廈", + "address": "香港島灣仔區軒尼詩道245-251號守時商業大廈" + }, + { + "building": "宏基大廈", + "address": "香港島灣仔區軒尼詩道252-254號宏基大廈" + }, + { + "building": "依時商業大廈", + "address": "香港島灣仔區軒尼詩道253-261號依時商業大廈" + }, + { + "building": "新軒尼詩大廈", + "address": "香港島灣仔區軒尼詩道263號新軒尼詩大廈" + }, + { + "building": "光華大廈", + "address": "香港島灣仔區軒尼詩道269-273號光華大廈" + }, + { + "building": "立興大廈", + "address": "香港島灣仔區軒尼詩道275-285號立興大廈" + }, + { + "building": "朱鈞記商業中心", + "address": "香港島灣仔區軒尼詩道289號朱鈞記商業中心" + }, + { + "building": "德華大廈", + "address": "香港島灣仔區軒尼詩道290-296號德華大廈" + }, + { + "building": "廣生行大廈A座", + "address": "香港島灣仔區軒尼詩道298號廣生行大廈A座" + }, + { + "building": "中邦商業大廈", + "address": "香港島灣仔區軒尼詩道300號中邦商業大廈" + }, + { + "building": "集成中心", + "address": "香港島灣仔區軒尼詩道302-308號集成中心" + }, + { + "building": "中國人壽大廈", + "address": "香港島灣仔區軒尼詩道313號中國人壽大廈" + }, + { + "building": "益華大廈", + "address": "香港島灣仔區軒尼詩道319-321號益華大廈" + }, + { + "building": "英利大廈", + "address": "香港島灣仔區軒尼詩道323-331號英利大廈" + }, + { + "building": "北海中心", + "address": "香港島灣仔區軒尼詩道326-338號北海中心" + }, + { + "building": "國華大樓", + "address": "香港島灣仔區軒尼詩道340-342號國華大樓" + }, + { + "building": "宏發樓", + "address": "香港島灣仔區軒尼詩道341-343號宏發樓" + }, + { + "building": "昌業大廈", + "address": "香港島灣仔區軒尼詩道344-354A號昌業大廈" + }, + { + "building": "友誼大廈", + "address": "香港島灣仔區軒尼詩道345-351號友誼大廈" + }, + { + "building": "宜興樓", + "address": "香港島灣仔區軒尼詩道357-359號宜興樓" + }, + { + "building": "富德樓", + "address": "香港島灣仔區軒尼詩道365-367號富德樓" + }, + { + "building": "循道衛理大廈", + "address": "香港島灣仔區軒尼詩道36號循道衛理大廈" + }, + { + "building": "齊安大廈", + "address": "香港島灣仔區軒尼詩道380-394號齊安大廈" + }, + { + "building": "新基大樓", + "address": "香港島灣仔區軒尼詩道38-46號新基大樓" + }, + { + "building": "軒寧大廈", + "address": "香港島灣仔區軒尼詩道385-391號軒寧大廈" + }, + { + "building": "東區商業大廈", + "address": "香港島灣仔區軒尼詩道393-407號東區商業大廈" + }, + { + "building": "德興大廈", + "address": "香港島灣仔區軒尼詩道402-406號德興大廈" + }, + { + "building": "中銀灣仔商業中心", + "address": "香港島灣仔區軒尼詩道409-415號中銀灣仔商業中心" + }, + { + "building": "海外大廈", + "address": "香港島灣仔區軒尼詩道417-421號海外大廈" + }, + { + "building": "嘉年華商業大廈", + "address": "香港島灣仔區軒尼詩道423-425號嘉年華商業大廈" + }, + { + "building": "張寶慶大廈", + "address": "香港島灣仔區軒尼詩道427-429號張寶慶大廈" + }, + { + "building": "金鵝商業大廈", + "address": "香港島灣仔區軒尼詩道438-444號金鵝商業大廈" + }, + { + "building": "香島大廈", + "address": "香港島灣仔區軒尼詩道439-445號香島大廈" + }, + { + "building": "軒華大廈", + "address": "香港島灣仔區軒尼詩道446-450號軒華大廈" + }, + { + "building": "合群大廈", + "address": "香港島灣仔區軒尼詩道447-449號合群大廈" + }, + { + "building": "勝華樓", + "address": "香港島灣仔區軒尼詩道451-457號勝華樓" + }, + { + "building": "金聯商業中心", + "address": "香港島灣仔區軒尼詩道458-468號金聯商業中心" + }, + { + "building": "建德豐商業大廈", + "address": "香港島灣仔區軒尼詩道467-473號建德豐商業大廈" + }, + { + "building": "錦祥樓", + "address": "香港島灣仔區軒尼詩道470號錦祥樓" + }, + { + "building": "南業大廈", + "address": "香港島灣仔區軒尼詩道472號南業大廈" + }, + { + "building": "東南大廈", + "address": "香港島灣仔區軒尼詩道475-481號東南大廈" + }, + { + "building": "泰港大廈", + "address": "香港島灣仔區軒尼詩道480-482號泰港大廈" + }, + { + "building": "永光商業大廈", + "address": "香港島灣仔區軒尼詩道499號永光商業大廈" + }, + { + "building": "希慎廣場", + "address": "香港島灣仔區軒尼詩道500號希慎廣場" + }, + { + "building": "大華商業大廈", + "address": "香港島灣仔區軒尼詩道501-503號大華商業大廈" + }, + { + "building": "電業城", + "address": "香港島灣仔區軒尼詩道505號電業城" + }, + { + "building": "維寶商業大廈", + "address": "香港島灣仔區軒尼詩道513-517號維寶商業大廈" + }, + { + "building": "東角中心(新翼)", + "address": "香港島灣仔區軒尼詩道529-555號東角中心(新翼)" + }, + { + "building": "四寶大廈", + "address": "香港島灣仔區軒尼詩道59-65號四寶大廈" + }, + { + "building": "華美樓", + "address": "香港島灣仔區軒尼詩道67-69號華美樓" + }, + { + "building": "偉倫大樓", + "address": "香港島灣仔區軒尼詩道78-84A號偉倫大樓" + }, + { + "building": "中港大廈", + "address": "香港島灣仔區軒尼詩道8-12號中港大廈" + }, + { + "building": "華寧大廈", + "address": "香港島灣仔區軒尼詩道89-91號華寧大廈" + }, + { + "building": "游宅", + "address": "香港島灣仔區軒德蓀道5號游宅" + }, + { + "building": "金馬倫大廈", + "address": "香港島灣仔區馬己仙峽道34號金馬倫大廈" + }, + { + "building": "嘉樂苑", + "address": "香港島灣仔區馬己仙峽道40號嘉樂苑" + }, + { + "building": "高威樓", + "address": "香港島灣仔區高士威道16-22號高威樓" + }, + { + "building": "灣景樓", + "address": "香港島灣仔區高士威道24-36號灣景樓" + }, + { + "building": "華都大廈", + "address": "香港島灣仔區高士威道2-6A號華都大廈" + }, + { + "building": "莒園", + "address": "香港島灣仔區高士美道1號莒園" + }, + { + "building": "慧景臺", + "address": "香港島灣仔區堅尼地道128-130號慧景臺第一座" + }, + { + "building": "富士屋", + "address": "香港島灣仔區堅尼地道21-23A號富士屋" + }, + { + "building": "永威閣", + "address": "香港島灣仔區堅尼地道31號永威閣" + }, + { + "building": "鳳凰閣", + "address": "香港島灣仔區堅尼地道39號鳳凰閣" + }, + { + "building": "萬東大廈", + "address": "香港島灣仔區堅尼地道41號萬東大廈" + }, + { + "building": "福來閣", + "address": "香港島灣仔區堅尼地道43號福來閣" + }, + { + "building": "滿?台", + "address": "香港島灣仔區堅尼地道48號滿?台" + }, + { + "building": "倚雲閣", + "address": "香港島灣仔區堅尼地道54-56號倚雲閣" + }, + { + "building": "金櫻閣", + "address": "香港島灣仔區堅尼地道58-60號金櫻閣" + }, + { + "building": "康德居", + "address": "香港島灣仔區堅尼地道62號康德居" + }, + { + "building": "AL FRESCO", + "address": "香港島灣仔區堅尼地道64號AL FRESCO" + }, + { + "building": "永福閣", + "address": "香港島灣仔區堅尼地道68號永福閣" + }, + { + "building": "珀苑", + "address": "香港島灣仔區堅尼地道70-72號珀苑" + }, + { + "building": "竹林苑", + "address": "香港島灣仔區堅尼地道74-86號竹林苑" + }, + { + "building": "豐樂新?A座", + "address": "香港島灣仔區堅尼地道88-90號" + }, + { + "building": "嘉賢臺", + "address": "香港島灣仔區堅尼地道98號嘉賢臺" + }, + { + "building": "萬信臺", + "address": "香港島灣仔區堅尼地道9L號萬信臺" + }, + { + "building": "皇朝閣", + "address": "香港島灣仔區堅尼地道9M號皇朝閣" + }, + { + "building": "冠景樓", + "address": "香港島灣仔區堅拿道西10號冠景樓" + }, + { + "building": "愉景樓", + "address": "香港島灣仔區堅拿道西26-30號愉景樓" + }, + { + "building": "二千年廣場", + "address": "香港島灣仔區堅拿道東8號二千年廣場" + }, + { + "building": "康福樓", + "address": "香港島灣仔區堅彌地街11-11A號康福樓" + }, + { + "building": "堅安大廈", + "address": "香港島灣仔區堅彌地街16-20號堅安大廈" + }, + { + "building": "堅尼閣", + "address": "香港島灣仔區堅彌地街22-28號堅尼閣" + }, + { + "building": "置樂台", + "address": "香港島灣仔區堅彌地街3號置樂台" + }, + { + "building": "慧賢軒", + "address": "香港島灣仔區堅彌地街8號慧賢軒" + }, + { + "building": "妙鏡台", + "address": "香港島灣仔區捷船街1-5號妙鏡台" + }, + { + "building": "劍明樓", + "address": "香港島灣仔區清風街1-3號劍明樓" + }, + { + "building": "新風大廈", + "address": "香港島灣仔區清風街21-23號新風大廈" + }, + { + "building": "富豐樓", + "address": "香港島灣仔區清風街5-7號富豐樓" + }, + { + "building": "凱豐商業大廈", + "address": "香港島灣仔區清風街6-8號凱豐商業大廈" + }, + { + "building": "寶德樓", + "address": "香港島灣仔區清風街9-11號寶德樓" + }, + { + "building": "金碧園", + "address": "香港島灣仔區畢拉山徑" + }, + { + "building": "渣甸園", + "address": "香港島灣仔區畢拉山徑30號渣甸園" + }, + { + "building": "松風臺", + "address": "香港島灣仔區畢拉山道" + }, + { + "building": "寶業大廈", + "address": "香港島灣仔區船街1-7號寶業大廈" + }, + { + "building": "東昇樓", + "address": "香港島灣仔區船街24號東昇樓" + }, + { + "building": "維基樓", + "address": "香港島灣仔區荷塘道6-8號維基樓" + }, + { + "building": "雙喜樓", + "address": "香港島灣仔區莊士敦道112號雙喜樓" + }, + { + "building": "宜興大廈", + "address": "香港島灣仔區莊士敦道120號宜興大廈" + }, + { + "building": "新盛商業大廈", + "address": "香港島灣仔區莊士敦道137-139號新盛商業大廈" + }, + { + "building": "鴻江大廈", + "address": "香港島灣仔區莊士敦道141-147號鴻江大廈" + }, + { + "building": "恒生莊士敦道大廈", + "address": "香港島灣仔區莊士敦道142號恒生莊士敦道大廈" + }, + { + "building": "成德樓", + "address": "香港島灣仔區莊士敦道144-146號成德樓" + }, + { + "building": "中南樓及平安閣", + "address": "香港島灣仔區莊士敦道148-150號平安閣/152-158號中南樓" + }, + { + "building": "東方大廈", + "address": "香港島灣仔區莊士敦道151-155號東方大廈" + }, + { + "building": "勝任商業大廈", + "address": "香港島灣仔區莊士敦道163號勝任商業大廈" + }, + { + "building": "美華大廈", + "address": "香港島灣仔區莊士敦道164-176號美華大廈" + }, + { + "building": "中匯大樓", + "address": "香港島灣仔區莊士敦道176A-176D號中匯大樓" + }, + { + "building": "華懋莊士敦廣場", + "address": "香港島灣仔區莊士敦道178-186號華懋莊士敦廣場" + }, + { + "building": "全豐樓", + "address": "香港島灣仔區莊士敦道188-192號全豐樓" + }, + { + "building": "嘉寧大廈", + "address": "香港島灣仔區莊士敦道18號嘉寧大廈" + }, + { + "building": "廣亞大廈", + "address": "香港島灣仔區莊士敦道195-197號廣亞大廈" + }, + { + "building": "德安樓", + "address": "香港島灣仔區莊士敦道199-201號德安樓" + }, + { + "building": "大喜樓", + "address": "香港島灣仔區莊士敦道214-216號大喜樓" + }, + { + "building": "玉泉樓", + "address": "香港島灣仔區莊士敦道218-220號玉泉樓" + }, + { + "building": "富嘉大廈", + "address": "香港島灣仔區莊士敦道222-230號富嘉大廈" + }, + { + "building": "莊士敦大樓", + "address": "香港島灣仔區莊士敦道28-34號莊士敦大樓" + }, + { + "building": "利文樓", + "address": "香港島灣仔區莊士敦道35-45號利文樓" + }, + { + "building": "南成大廈", + "address": "香港島灣仔區莊士敦道47-49號南成大廈" + }, + { + "building": "兆豐商業大廈", + "address": "香港島灣仔區莊士敦道51-53號兆豐商業大廈" + }, + { + "building": "修頓大廈", + "address": "香港島灣仔區莊士敦道55-61號修頓大廈" + }, + { + "building": "嘉薈軒", + "address": "香港島灣仔區莊士敦道60號嘉薈軒" + }, + { + "building": "互信大廈", + "address": "香港島灣仔區莊士敦道68號互信大廈" + }, + { + "building": "昭憲大廈", + "address": "香港島灣仔區莊士敦道94-102號昭憲大廈" + }, + { + "building": "?翠臺", + "address": "香港島灣仔區連道" + }, + { + "building": "嘉蘭閣", + "address": "香港島灣仔區連道1號嘉蘭閣" + }, + { + "building": "華翠臺", + "address": "香港島灣仔區連道3號華翠臺" + }, + { + "building": "加達樓", + "address": "香港島灣仔區麥加力歌街1-19號加達樓" + }, + { + "building": "普樂樓", + "address": "香港島灣仔區普樂里2號普樂樓" + }, + { + "building": "景德樓", + "address": "香港島灣仔區景光街10-12號景德樓" + }, + { + "building": "雅仕閣", + "address": "香港島灣仔區景光街11號雅仕閣" + }, + { + "building": "怡景閣", + "address": "香港島灣仔區景光街15-17號怡景閣" + }, + { + "building": "珍慶樓", + "address": "香港島灣仔區景光街19-21號珍慶樓" + }, + { + "building": "文景軒", + "address": "香港島灣仔區景光街25-27號文景軒" + }, + { + "building": "利景樓", + "address": "香港島灣仔區景光街28-30號利景樓" + }, + { + "building": "裕利樓", + "address": "香港島灣仔區景光街32-34號裕利樓" + }, + { + "building": "金光大廈", + "address": "香港島灣仔區景光街36-44號金光大廈" + }, + { + "building": "景光樓", + "address": "香港島灣仔區景光街8號景光樓" + }, + { + "building": "富寶閣", + "address": "香港島灣仔區景星街5-7號富寶閣" + }, + { + "building": "景隆街1-3號", + "address": "香港島灣仔區景隆街1-3號" + }, + { + "building": "海都大廈", + "address": "香港島灣仔區景隆街15-27號海都大廈" + }, + { + "building": "新安大廈", + "address": "香港島灣仔區景隆街20-28號新安大廈" + }, + { + "building": "渣菲大廈", + "address": "香港島灣仔區景隆街6號渣菲大廈" + }, + { + "building": "京華中心第二座", + "address": "香港島灣仔區渣甸坊28號京華中心第二座" + }, + { + "building": "利發大廈", + "address": "香港島灣仔區渣甸坊30-36號利發大廈" + }, + { + "building": "蓮福商業大廈", + "address": "香港島灣仔區渣甸坊3號蓮福商業大廈" + }, + { + "building": "廣安大廈", + "address": "香港島灣仔區渣甸街22-28號廣安大廈" + }, + { + "building": "兆基商業中心", + "address": "香港島灣仔區渣甸街23號兆基商業中心" + }, + { + "building": "金利隆中心", + "address": "香港島灣仔區渣甸街25-27號金利隆中心" + }, + { + "building": "人人商業大廈", + "address": "香港島灣仔區渣甸街43A-45號人人商業大廈" + }, + { + "building": "渣甸中心", + "address": "香港島灣仔區渣甸街46-52號渣甸中心" + }, + { + "building": "采怡閣", + "address": "香港島灣仔區渣甸街47號采怡閣" + }, + { + "building": "京華中心", + "address": "香港島灣仔區渣甸街5-19號京華中心" + }, + { + "building": "中環廣場", + "address": "香港島灣仔區港灣道18號中環廣場" + }, + { + "building": "鷹君中心", + "address": "香港島灣仔區港灣道23號鷹君中心" + }, + { + "building": "海港中心", + "address": "香港島灣仔區港灣道25號海港中心" + }, + { + "building": "華潤大廈", + "address": "香港島灣仔區港灣道26號華潤大廈" + }, + { + "building": "灣景中心大廈", + "address": "香港島灣仔區港灣道28號灣景中心大廈" + }, + { + "building": "新鴻基中心", + "address": "香港島灣仔區港灣道30號新鴻基中心" + }, + { + "building": "瑞安中心", + "address": "香港島灣仔區港灣道6-8號瑞安中心" + }, + { + "building": "金朝陽中心二期", + "address": "香港島灣仔區登龍街1-29號金朝陽中心二期" + }, + { + "building": "永光中心", + "address": "香港島灣仔區登龍街28號永光中心" + }, + { + "building": "玉山大廈", + "address": "香港島灣仔區登龍街31-35號玉山大廈" + }, + { + "building": "登輝大廈", + "address": "香港島灣仔區登龍街36-48號登輝大廈" + }, + { + "building": "金龍大廈", + "address": "香港島灣仔區登龍街41-51號金龍大廈" + }, + { + "building": "景隆商業大廈", + "address": "香港島灣仔區登龍街52號景隆商業大廈" + }, + { + "building": "尚巒", + "address": "香港島灣仔區華倫街23號尚巒" + }, + { + "building": "玉滿樓", + "address": "香港島灣仔區菲林明道11-15號玉滿樓" + }, + { + "building": "德業大廈", + "address": "香港島灣仔區菲林明道1-3號德業大廈" + }, + { + "building": "東基大廈", + "address": "香港島灣仔區菲林明道20號東基大廈" + }, + { + "building": "三元大廈", + "address": "香港島灣仔區菲林明道21-29號三元大廈" + }, + { + "building": "立德大廈", + "address": "香港島灣仔區菲林明道31-33號立德大廈" + }, + { + "building": "好發商業大廈", + "address": "香港島灣仔區菲林明道7號好發商業大廈" + }, + { + "building": "海華苑五座", + "address": "香港島灣仔區進教圍8號海華苑五座" + }, + { + "building": "雲地利大廈", + "address": "香港島灣仔區雲地利道15號雲地利大廈" + }, + { + "building": "雲暉大廈", + "address": "香港島灣仔區雲地利道1-5號雲暉大廈" + }, + { + "building": "柏莉園", + "address": "香港島灣仔區雲地利道17號柏莉園" + }, + { + "building": "雲地利台", + "address": "香港島灣仔區雲地利道19-23B號雲地利台" + }, + { + "building": "雲臺別墅A座", + "address": "香港島灣仔區雲地利道25-27號雲臺別墅A座" + }, + { + "building": "愉華大廈", + "address": "香港島灣仔區雲地利道36-38號愉華大廈" + }, + { + "building": "藍塘大廈", + "address": "香港島灣仔區雲地利道58-60號藍塘大廈" + }, + { + "building": "雲地利道8號", + "address": "香港島灣仔區雲地利道8號" + }, + { + "building": "美家閣", + "address": "香港島灣仔區雲景道12號美家閣" + }, + { + "building": "高瞻台", + "address": "香港島灣仔區雲景道8-10號高瞻台" + }, + { + "building": "怡園", + "address": "香港島灣仔區黃泥涌峽道" + }, + { + "building": "利安閣", + "address": "香港島灣仔區黃泥涌峽道12-14號利安閣" + }, + { + "building": "怡園A&B座", + "address": "香港島灣仔區黃泥涌峽道2A-2B號怡園A&B座" + }, + { + "building": "欣景台", + "address": "香港島灣仔區黃泥涌峽道4-4A號欣景台" + }, + { + "building": "蔚豪苑", + "address": "香港島灣仔區黃泥涌峽道8號蔚豪苑" + }, + { + "building": "逸廬", + "address": "香港島灣仔區黃泥涌道" + }, + { + "building": "永勝大廈", + "address": "香港島灣仔區黃泥涌道11-11A號永勝大廈" + }, + { + "building": "嘉雲閣", + "address": "香港島灣仔區黃泥涌道135-135A號嘉雲閣" + }, + { + "building": "南珍閣", + "address": "香港島灣仔區黃泥涌道151-153號南珍閣" + }, + { + "building": "好運大廈", + "address": "香港島灣仔區黃泥涌道161-163號好運大廈" + }, + { + "building": "馨閣", + "address": "香港島灣仔區黃泥涌道165號馨閣" + }, + { + "building": "恒豐大廈", + "address": "香港島灣仔區黃泥涌道17-19號恒豐大廈" + }, + { + "building": "永光苑", + "address": "香港島灣仔區黃泥涌道1號永光苑" + }, + { + "building": "浩利大廈", + "address": "香港島灣仔區黃泥涌道21-23號浩利大廈" + }, + { + "building": "愉豐大廈", + "address": "香港島灣仔區黃泥涌道27號愉豐大廈" + }, + { + "building": "愉都大廈", + "address": "香港島灣仔區黃泥涌道29號愉都大廈" + }, + { + "building": "愉園大廈", + "address": "香港島灣仔區黃泥涌道31-37號愉園大廈" + }, + { + "building": "雅詩大廈", + "address": "香港島灣仔區黃泥涌道43號雅詩大廈" + }, + { + "building": "翠谷樓", + "address": "香港島灣仔區黃泥涌道49-51號翠谷樓" + }, + { + "building": "愉輝大廈", + "address": "香港島灣仔區黃泥涌道53號愉輝大廈" + }, + { + "building": "翠景樓", + "address": "香港島灣仔區黃泥涌道55-57號翠景樓" + }, + { + "building": "安美大廈", + "address": "香港島灣仔區黃泥涌道63-65號安美大廈" + }, + { + "building": "金鞍大廈", + "address": "香港島灣仔區黃泥涌道67-69號金鞍大廈" + }, + { + "building": "雅景大廈", + "address": "香港島灣仔區黃泥涌道73-75號雅景大廈" + }, + { + "building": "雅谷大廈", + "address": "香港島灣仔區黃泥涌道79A號雅谷大廈" + }, + { + "building": "旭逸閣", + "address": "香港島灣仔區黃泥涌道7-9號旭逸閣" + }, + { + "building": "駿馬閣", + "address": "香港島灣仔區黃泥涌道81號駿馬閣" + }, + { + "building": "年達閣", + "address": "香港島灣仔區黃泥涌道83-85號年達閣" + }, + { + "building": "廣泰樓", + "address": "香港島灣仔區廈門街1-5號廣泰樓" + }, + { + "building": "偉誠樓", + "address": "香港島灣仔區廈門街25-27號偉誠樓" + }, + { + "building": "廈門樓", + "address": "香港島灣仔區廈門街29-31號廈門樓" + }, + { + "building": "寶藝花園", + "address": "香港島灣仔區廈門街30號寶藝花園" + }, + { + "building": "百旺都中心", + "address": "香港島灣仔區廈門街7-17號百旺都中心" + }, + { + "building": "愛群商業大廈", + "address": "香港島灣仔區愛群道32號愛群商業大廈" + }, + { + "building": "敬誠閣", + "address": "香港島灣仔區敬誠街3號敬誠閣" + }, + { + "building": "勤輝大廈", + "address": "香港島灣仔區新村街44-49號勤輝大廈" + }, + { + "building": "寶輝大廈", + "address": "香港島灣仔區毓秀街10-16號寶輝大廈" + }, + { + "building": "金毓大廈", + "address": "香港島灣仔區毓秀街13號金毓大廈" + }, + { + "building": "毓成大廈", + "address": "香港島灣仔區毓秀街1-9號毓成大廈" + }, + { + "building": "學談花園", + "address": "香港島灣仔區毓秀街22號學談花園" + }, + { + "building": "逸怡居", + "address": "香港島灣仔區毓秀街23號逸怡居" + }, + { + "building": "名仕閣", + "address": "香港島灣仔區毓秀街33-35號名仕閣" + }, + { + "building": "景祥大樓", + "address": "香港島灣仔區毓秀街6-8號景祥大樓" + }, + { + "building": "維達樓", + "address": "香港島灣仔區源遠街1號維達樓" + }, + { + "building": "寶成樓", + "address": "香港島灣仔區源遠街8號寶成樓" + }, + { + "building": "渣甸山花園", + "address": "香港島灣仔區睦誠道21號渣甸山花園" + }, + { + "building": "盛苑", + "address": "香港島灣仔區睦誠道4號盛苑" + }, + { + "building": "銀霞閣", + "address": "香港島灣仔區睦誠道61號銀霞閣" + }, + { + "building": "阜康樓", + "address": "香港島灣仔區聖佛蘭士街14號阜康樓" + }, + { + "building": "聖佛蘭士大廈", + "address": "香港島灣仔區聖佛蘭士街4-6號聖佛蘭士大廈" + }, + { + "building": "寶豐大廈", + "address": "香港島灣仔區聖佛蘭士街9-11號寶豐大廈" + }, + { + "building": "桂濤苑", + "address": "香港島灣仔區萬茂臺1號桂濤苑" + }, + { + "building": "萬茂苑", + "address": "香港島灣仔區萬茂臺3號萬茂苑" + }, + { + "building": "福利樓", + "address": "香港島灣仔區蜆殼街1-7號福利樓" + }, + { + "building": "嘉昌商業中心", + "address": "香港島灣仔區蜆殼街18號嘉昌商業中心" + }, + { + "building": "宇宙商業大廈", + "address": "香港島灣仔區蜆殼街4號宇宙商業大廈" + }, + { + "building": "北角寶榮大廈", + "address": "香港島灣仔區蜆殼街6-16號北角寶榮大廈" + }, + { + "building": "秀明中心", + "address": "香港島灣仔區蜆殼街9-23號秀明中心" + }, + { + "building": "雅怡閣", + "address": "香港島灣仔區載德街2-4號雅怡閣" + }, + { + "building": "永興樓(永興街)", + "address": "香港島灣仔區電氣道107-109號 / 永興街13A號 永興樓(永興街)" + }, + { + "building": "冠貿商業大廈", + "address": "香港島灣仔區電氣道108號冠貿商業大廈" + }, + { + "building": "寶田樓", + "address": "香港島灣仔區電氣道111-117號寶田樓" + }, + { + "building": "麗明樓", + "address": "香港島灣仔區電氣道127-129號麗明樓" + }, + { + "building": "電氣道泰華大廈", + "address": "香港島灣仔區電氣道130-140號電氣道泰華大廈" + }, + { + "building": "凱旋大廈", + "address": "香港島灣仔區電氣道13-41號凱旋大廈" + }, + { + "building": "海城洋樓", + "address": "香港島灣仔區電氣道141-155號 / 威菲路道1A-B號海城洋樓" + }, + { + "building": "金殿大廈", + "address": "香港島灣仔區電氣道22-52號金殿大廈" + }, + { + "building": "美景樓(電氣道)", + "address": "香港島灣仔區電氣道60-62號美景樓(電氣道)" + }, + { + "building": "金基大廈", + "address": "香港島灣仔區電氣道74-78號金基大廈" + }, + { + "building": "利景閣", + "address": "香港島灣仔區電氣道83號利景閣" + }, + { + "building": "錦源樓", + "address": "香港島灣仔區電氣道88-90號錦源樓" + }, + { + "building": "金漢樓", + "address": "香港島灣仔區電氣道92-94號金漢樓" + }, + { + "building": "萬愷大廈", + "address": "香港島灣仔區電氣道98-100號萬愷大廈" + }, + { + "building": "豪園", + "address": "香港島灣仔區嘉寧徑豪園" + }, + { + "building": "迦南樓", + "address": "香港島灣仔區歌頓道2-4號迦南樓" + }, + { + "building": "維?", + "address": "香港島灣仔區歌頓道3號維?" + }, + { + "building": "歌頓道明興大樓", + "address": "香港島灣仔區歌頓道9-11號歌頓道明興大樓" + }, + { + "building": "福?軒", + "address": "香港島灣仔區福群道11-12號福?軒" + }, + { + "building": "覺廬", + "address": "香港島灣仔區福群道3-4號覺廬" + }, + { + "building": "頌月花園", + "address": "香港島灣仔區福群道5號頌月花園" + }, + { + "building": "愛群閣", + "address": "香港島灣仔區福群道6A號愛群閣" + }, + { + "building": "潔園", + "address": "香港島灣仔區箕璉坊" + }, + { + "building": "菽園新臺", + "address": "香港島灣仔區箕璉坊2號菽園新臺" + }, + { + "building": "怡發大廈", + "address": "香港島灣仔區綿發街2號怡發大廈" + }, + { + "building": "威利閣", + "address": "香港島灣仔區聚文街12A號威利閣" + }, + { + "building": "聚安閣", + "address": "香港島灣仔區聚文街15號聚安閣" + }, + { + "building": "滿輝大廈", + "address": "香港島灣仔區肇輝臺11號滿輝大廈" + }, + { + "building": "嘉苑", + "address": "香港島灣仔區肇輝臺14號嘉苑" + }, + { + "building": "肇輝台1號", + "address": "香港島灣仔區肇輝臺1號肇輝台1號" + }, + { + "building": "美麗?", + "address": "香港島灣仔區肇輝臺2B號" + }, + { + "building": "嘉美閣", + "address": "香港島灣仔區肇輝臺2C號嘉美閣" + }, + { + "building": "詩濤花園", + "address": "香港島灣仔區肇輝臺2號詩濤花園" + }, + { + "building": "肇輝台花園", + "address": "香港島灣仔區肇輝臺3-4號肇輝台花園" + }, + { + "building": "景麗苑", + "address": "香港島灣仔區肇輝臺4B-4C號景麗苑" + }, + { + "building": "顯輝豪庭", + "address": "香港島灣仔區肇輝臺7A號顯輝豪庭" + }, + { + "building": "騰黃閣", + "address": "香港島灣仔區肇輝臺7號騰黃閣" + }, + { + "building": "渣甸臺", + "address": "香港島灣仔區裴樂士道" + }, + { + "building": "輝漢洋樓", + "address": "香港島灣仔區銀幕街15-17號輝漢洋樓" + }, + { + "building": "海景軒", + "address": "香港島灣仔區銀幕街1號海景軒" + }, + { + "building": "永安樓", + "address": "香港島灣仔區銀幕街27-29號永安樓" + }, + { + "building": "莊苑", + "address": "香港島灣仔區銅鑼灣道162號莊苑" + }, + { + "building": "銅鑼灣道百成樓", + "address": "香港島灣仔區銅鑼灣道168-174號銅鑼灣道百成樓" + }, + { + "building": "建華大廈", + "address": "香港島灣仔區銅鑼灣道176-178號建華大廈" + }, + { + "building": "建康商業大廈", + "address": "香港島灣仔區銅鑼灣道19-23號建康商業大廈" + }, + { + "building": "新豪閣", + "address": "香港島灣仔區銅鑼灣道29-31號新豪閣" + }, + { + "building": "國泰大廈", + "address": "香港島灣仔區銅鑼灣道3-17號國泰大廈" + }, + { + "building": "海麗軒", + "address": "香港島灣仔區銅鑼灣道38號海麗軒" + }, + { + "building": "金暉閣", + "address": "香港島灣仔區銅鑼灣道42-44號金暉閣" + }, + { + "building": "樂榮閣", + "address": "香港島灣仔區鳳輝臺14號樂榮閣" + }, + { + "building": "文雅閣", + "address": "香港島灣仔區鳳輝臺15號文雅閣" + }, + { + "building": "豐盛苑", + "address": "香港島灣仔區鳳輝臺20號豐盛苑" + }, + { + "building": "豐榮苑", + "address": "香港島灣仔區鳳輝臺21號豐榮苑" + }, + { + "building": "崇明閣", + "address": "香港島灣仔區鳳輝臺22號崇明閣" + }, + { + "building": "鳳輝閣", + "address": "香港島灣仔區鳳輝臺3-4號鳳輝閣" + }, + { + "building": "怡輝苑", + "address": "香港島灣仔區鳳輝臺5號怡輝苑" + }, + { + "building": "碧麗苑", + "address": "香港島灣仔區鳳輝臺6號碧麗苑" + }, + { + "building": "文興大廈", + "address": "香港島灣仔區德仁街1-3號文興大廈" + }, + { + "building": "金石樓", + "address": "香港島灣仔區慶雲街1號金石樓" + }, + { + "building": "明琴大樓", + "address": "香港島灣仔區慶雲街5-9號明琴大樓" + }, + { + "building": "新都樓", + "address": "香港島灣仔區摩理臣山道12-18號新都樓" + }, + { + "building": "金利大廈", + "address": "香港島灣仔區摩理臣山道20-30號金利大廈" + }, + { + "building": "大發大廈", + "address": "香港島灣仔區摩理臣山道25-27號大發大廈" + }, + { + "building": "仁誠大廈", + "address": "香港島灣仔區摩理臣山道29號仁誠大廈" + }, + { + "building": "摩利臣商業大廈", + "address": "香港島灣仔區摩理臣山道31號摩利臣商業大廈" + }, + { + "building": "德安樓", + "address": "香港島灣仔區摩理臣山道32-34號德安樓" + }, + { + "building": "幸運閣", + "address": "香港島灣仔區摩理臣山道33號幸運閣" + }, + { + "building": "文華商業大廈", + "address": "香港島灣仔區摩理臣山道38號文華商業大廈" + }, + { + "building": "展晴軒", + "address": "香港島灣仔區摩理臣山道46-48號展晴軒" + }, + { + "building": "經信商業大廈", + "address": "香港島灣仔區摩理臣山道4-6號經信商業大廈" + }, + { + "building": "天樂廣場", + "address": "香港島灣仔區摩理臣山道5-9號天樂廣場" + }, + { + "building": "凱利商業大廈", + "address": "香港島灣仔區摩理臣山道70-74號凱利商業大廈" + }, + { + "building": "永祥大廈", + "address": "香港島灣仔區摩理臣山道78號永祥大廈" + }, + { + "building": "柏餘中心", + "address": "香港島灣仔區摩理臣山道80-82號柏餘中心" + }, + { + "building": "豐景大廈", + "address": "香港島灣仔區摩頓臺1-1B號豐景大廈" + }, + { + "building": "百富中心", + "address": "香港島灣仔區摩頓臺5號百富中心" + }, + { + "building": "樂翠台", + "address": "香港島灣仔區樂活道10號" + }, + { + "building": "樂陶苑", + "address": "香港島灣仔區樂活道18號樂陶苑" + }, + { + "building": "銀禧大廈", + "address": "香港島灣仔區樂活道1A號銀禧大廈" + }, + { + "building": "樂景園", + "address": "香港島灣仔區樂活道20號樂景園" + }, + { + "building": "禮頓山", + "address": "香港島灣仔區樂活道2B號禮頓山" + }, + { + "building": "?樂苑", + "address": "香港島灣仔區樂活道38號?樂苑" + }, + { + "building": "樂活臺", + "address": "香港島灣仔區樂活道4號樂活臺" + }, + { + "building": "比華利山", + "address": "香港島灣仔區樂活道6號" + }, + { + "building": "西園樓", + "address": "香港島灣仔區樂景臺" + }, + { + "building": "華景閣", + "address": "香港島灣仔區樂景臺" + }, + { + "building": "樂景臺", + "address": "香港島灣仔區樂景臺" + }, + { + "building": "豐樂園", + "address": "香港島灣仔區樂景臺10-12A號豐樂園" + }, + { + "building": "富威閣", + "address": "香港島灣仔區樂景臺7-9號富威閣" + }, + { + "building": "金樂居", + "address": "香港島灣仔區蓮花宮西街16號金樂居" + }, + { + "building": "中華大廈", + "address": "香港島灣仔區蓮花宮西街1-9號中華大廈" + }, + { + "building": "禮賢樓", + "address": "香港島灣仔區蓮花宮東街1-9號禮賢樓" + }, + { + "building": "蓮花園", + "address": "香港島灣仔區蓮花街2-8號蓮花園" + }, + { + "building": "明新大廈", + "address": "香港島灣仔區蓮花街5-7號明新大廈" + }, + { + "building": "松圃", + "address": "香港島灣仔區衛信道10-10A號松圃" + }, + { + "building": "松圃", + "address": "香港島灣仔區衛信道12-12A號松圃" + }, + { + "building": "復園", + "address": "香港島灣仔區衛信道1-3號復園" + }, + { + "building": "沃柏臺", + "address": "香港島灣仔區衛信道23-29號沃柏臺" + }, + { + "building": "復園", + "address": "香港島灣仔區衛信道5-7號復園" + }, + { + "building": "松圃", + "address": "香港島灣仔區衛信道8-8A號松圃" + }, + { + "building": "復園", + "address": "香港島灣仔區衛信道9-11號復園" + }, + { + "building": "龍苑大廈", + "address": "香港島灣仔區適安街8號龍苑大廈" + }, + { + "building": "錦德大廈", + "address": "香港島灣仔區機利臣街1A號錦德大廈" + }, + { + "building": "維昌大廈", + "address": "香港島灣仔區機利臣街5-9A號維昌大廈" + }, + { + "building": "基利大廈", + "address": "香港島灣仔區機利臣街6-14號基利大廈" + }, + { + "building": "海德中心", + "address": "香港島灣仔區盧押道18號海德中心" + }, + { + "building": "其康大廈", + "address": "香港島灣仔區盧押道20號其康大廈" + }, + { + "building": "THE PHOENIX", + "address": "香港島灣仔區盧押道23號THE PHOENIX" + }, + { + "building": "澳洲大廈", + "address": "香港島灣仔區盧押道7-9號澳洲大廈" + }, + { + "building": "銅鑼灣中心", + "address": "香港島灣仔區糖街15-23號銅鑼灣中心" + }, + { + "building": "銅鑼灣商業大廈", + "address": "香港島灣仔區糖街1-5號銅鑼灣商業大廈" + }, + { + "building": "怡景商業大廈", + "address": "香港島灣仔區糖街27號怡景商業大廈" + }, + { + "building": "匯景商業中心", + "address": "香港島灣仔區糖街29-31號匯景商業中心" + }, + { + "building": "維多利大廈", + "address": "香港島灣仔區興發街" + }, + { + "building": "維景花園A座", + "address": "香港島灣仔區興發街40-42號維景花園A座" + }, + { + "building": "美城花園大廈", + "address": "香港島灣仔區興發街62 -74號美城花園大廈" + }, + { + "building": "歌頓大廈", + "address": "香港島灣仔區興發街82-86號歌頓大廈" + }, + { + "building": "麗珊大廈", + "address": "香港島灣仔區霎西街1號麗珊大廈" + }, + { + "building": "必發商業大廈", + "address": "香港島灣仔區霎西街28號必發商業大廈" + }, + { + "building": "麗麗大廈", + "address": "香港島灣仔區駱克道102-108A號麗麗大廈" + }, + { + "building": "嘉洛商業大廈", + "address": "香港島灣仔區駱克道114-120號嘉洛商業大廈" + }, + { + "building": "興邦大廈", + "address": "香港島灣仔區駱克道117號興邦大廈" + }, + { + "building": "安安大樓", + "address": "香港島灣仔區駱克道123-125A號安安大樓" + }, + { + "building": "冠美樓", + "address": "香港島灣仔區駱克道127-131A號冠美樓" + }, + { + "building": "香江大廈", + "address": "香港島灣仔區駱克道137-147號香江大廈" + }, + { + "building": "裕安大樓", + "address": "香港島灣仔區駱克道146-148號裕安大樓" + }, + { + "building": "利順大樓", + "address": "香港島灣仔區駱克道157-159號利順大樓" + }, + { + "building": "越秀大廈", + "address": "香港島灣仔區駱克道160-174號越秀大廈" + }, + { + "building": "祐德大廈", + "address": "香港島灣仔區駱克道167-169號祐德大廈" + }, + { + "building": "金威商業大廈", + "address": "香港島灣仔區駱克道171-173號金威商業大廈" + }, + { + "building": "京城大廈", + "address": "香港島灣仔區駱克道175-191號京城大廈" + }, + { + "building": "兆安中心", + "address": "香港島灣仔區駱克道188號兆安中心" + }, + { + "building": "東超商業中心", + "address": "香港島灣仔區駱克道193-197號東超商業中心" + }, + { + "building": "東新商業中心", + "address": "香港島灣仔區駱克道194-200號東新商業中心" + }, + { + "building": "金星大廈", + "address": "香港島灣仔區駱克道20-24號金星大廈" + }, + { + "building": "洛洋閣", + "address": "香港島灣仔區駱克道212-220號洛洋閣" + }, + { + "building": "榮安大廈", + "address": "香港島灣仔區駱克道230-232號榮安大廈" + }, + { + "building": "星港大廈", + "address": "香港島灣仔區駱克道233-243號星港大廈" + }, + { + "building": "益誠大廈", + "address": "香港島灣仔區駱克道238-240號益誠大廈" + }, + { + "building": "雲豐大廈", + "address": "香港島灣仔區駱克道245-251號雲豐大廈" + }, + { + "building": "增城樓", + "address": "香港島灣仔區駱克道250號增城樓" + }, + { + "building": "泰華大廈", + "address": "香港島灣仔區駱克道262-268A號泰華大廈" + }, + { + "building": "揭陽大廈", + "address": "香港島灣仔區駱克道271號揭陽大廈" + }, + { + "building": "東成樓", + "address": "香港島灣仔區駱克道272-274號東成樓" + }, + { + "building": "金樂大廈", + "address": "香港島灣仔區駱克道275-277號金樂大廈" + }, + { + "building": "安隆商業大廈", + "address": "香港島灣仔區駱克道276-278號安隆商業大廈" + }, + { + "building": "平霖商業大廈", + "address": "香港島灣仔區駱克道280-282號平霖商業大廈" + }, + { + "building": "高華大廈", + "address": "香港島灣仔區駱克道285-295A號高華大廈" + }, + { + "building": "曾氏大廈", + "address": "香港島灣仔區駱克道288-290號曾氏大廈" + }, + { + "building": "華豐樓", + "address": "香港島灣仔區駱克道296-298號華豐樓" + }, + { + "building": "洛克中心", + "address": "香港島灣仔區駱克道301-307號洛克中心" + }, + { + "building": "金冠大廈", + "address": "香港島灣仔區駱克道308-312號金冠大廈" + }, + { + "building": "廣榮樓", + "address": "香港島灣仔區駱克道309-311A號廣榮樓" + }, + { + "building": "啟光商業大廈", + "address": "香港島灣仔區駱克道332-334號啟光商業大廈" + }, + { + "building": "中國網絡中心", + "address": "香港島灣仔區駱克道333號中國網絡中心" + }, + { + "building": "樂友大廈", + "address": "香港島灣仔區駱克道336-342號樂友大廈" + }, + { + "building": "恒發商業大廈", + "address": "香港島灣仔區駱克道348-350號恒發商業大廈" + }, + { + "building": "鴻福大廈", + "address": "香港島灣仔區駱克道356-362號鴻福大廈" + }, + { + "building": "鴻圖商業大廈", + "address": "香港島灣仔區駱克道357-359號鴻圖商業大廈" + }, + { + "building": "翹賢商業大廈", + "address": "香港島灣仔區駱克道361-363號翹賢商業大廈" + }, + { + "building": "國家大廈", + "address": "香港島灣仔區駱克道365-371號國家大廈" + }, + { + "building": "富士大廈", + "address": "香港島灣仔區駱克道381-383號富士大廈" + }, + { + "building": "嘉賢大廈", + "address": "香港島灣仔區駱克道384-388號嘉賢大廈" + }, + { + "building": "金禧大廈", + "address": "香港島灣仔區駱克道389-399號金禧大廈" + }, + { + "building": "明賢大廈", + "address": "香港島灣仔區駱克道390-396A號明賢大廈" + }, + { + "building": "永輝樓", + "address": "香港島灣仔區駱克道398-400號永輝樓" + }, + { + "building": "怡安保險大廈", + "address": "香港島灣仔區駱克道3號怡安保險大廈" + }, + { + "building": "華發大廈", + "address": "香港島灣仔區駱克道405-419號華發大廈" + }, + { + "building": "年豐大廈", + "address": "香港島灣仔區駱克道410-412號年豐大廈" + }, + { + "building": "東城大廈", + "address": "香港島灣仔區駱克道41號東城大廈" + }, + { + "building": "雅閣大廈", + "address": "香港島灣仔區駱克道421-425號雅閣大廈" + }, + { + "building": "駱克大廈A座", + "address": "香港島灣仔區駱克道441-445號駱克大廈A座" + }, + { + "building": "大觀樓", + "address": "香港島灣仔區駱克道442-452號大觀樓" + }, + { + "building": "駱克大樓", + "address": "香港島灣仔區駱克道451-453號駱克大樓" + }, + { + "building": "超然樓", + "address": "香港島灣仔區駱克道458-460號超然樓" + }, + { + "building": "合宜大廈", + "address": "香港島灣仔區駱克道474-476號合宜大廈" + }, + { + "building": "本德大廈", + "address": "香港島灣仔區駱克道478-484號本德大廈" + }, + { + "building": "恆景大廈", + "address": "香港島灣仔區駱克道485號恆景大廈" + }, + { + "building": "駱克", + "address": "香港島灣仔區駱克道487-489號駱克" + }, + { + "building": "合亞廣場", + "address": "香港島灣仔區駱克道496-498號合亞廣場" + }, + { + "building": "永勝大廈", + "address": "香港島灣仔區駱克道513-515號永勝大廈" + }, + { + "building": "博匯大廈", + "address": "香港島灣仔區駱克道54-62號博匯大廈" + }, + { + "building": "世球大廈", + "address": "香港島灣仔區駱克道64-66號世球大廈" + }, + { + "building": "偉信商業大廈", + "address": "香港島灣仔區駱克道68-70號偉信商業大廈" + }, + { + "building": "熙華大廈", + "address": "香港島灣仔區駱克道72-86號熙華大廈" + }, + { + "building": "灣仔中?大廈", + "address": "香港島灣仔區駱克道89號灣仔中?大廈" + }, + { + "building": "利臨大廈", + "address": "香港島灣仔區駱克道93-107號利臨大廈" + }, + { + "building": "京都大樓", + "address": "香港島灣仔區駱克道94-100號京都大樓" + }, + { + "building": "萬通保險大廈", + "address": "香港島灣仔區駱克道萬通保險大廈" + }, + { + "building": "楹寓", + "address": "香港島灣仔區聯發街18號楹寓" + }, + { + "building": "同勝大廈", + "address": "香港島灣仔區聯發街2號同勝大廈" + }, + { + "building": "聯利大廈", + "address": "香港島灣仔區聯發街8號聯利大廈" + }, + { + "building": "壹鑾", + "address": "香港島灣仔區聯興街1號壹鑾" + }, + { + "building": "建利大廈", + "address": "香港島灣仔區謝斐道" + }, + { + "building": "美暉大廈", + "address": "香港島灣仔區謝斐道110-116號美暉大廈" + }, + { + "building": "樂居樓", + "address": "香港島灣仔區謝斐道118號樂居樓" + }, + { + "building": "銓利大廈", + "address": "香港島灣仔區謝斐道120-122號銓利大廈" + }, + { + "building": "金福大廈", + "address": "香港島灣仔區謝斐道148-156號金福大廈" + }, + { + "building": "金聲大廈", + "address": "香港島灣仔區謝斐道151-161號金聲大廈" + }, + { + "building": "東寶樓", + "address": "香港島灣仔區謝斐道207-209號東寶樓" + }, + { + "building": "利來大廈", + "address": "香港島灣仔區謝斐道208-214號利來大廈" + }, + { + "building": "仁英大廈", + "address": "香港島灣仔區謝斐道215-225A號仁英大廈" + }, + { + "building": "杜智臺", + "address": "香港島灣仔區謝斐道272號" + }, + { + "building": "快添大廈", + "address": "香港島灣仔區謝斐道307-311號快添大廈" + }, + { + "building": "金碧大廈", + "address": "香港島灣仔區謝斐道314-322號金碧大廈" + }, + { + "building": "保如大廈", + "address": "香港島灣仔區謝斐道340-348號保如大廈" + }, + { + "building": "文石大廈", + "address": "香港島灣仔區謝斐道404-406號文石大廈" + }, + { + "building": "華斐商業大廈", + "address": "香港島灣仔區謝斐道408-412號華斐商業大廈" + }, + { + "building": "港佳商業大廈", + "address": "香港島灣仔區謝斐道409-413號港佳商業大廈" + }, + { + "building": "中望商業中心", + "address": "香港島灣仔區謝斐道414-424號中望商業中心" + }, + { + "building": "積福大廈", + "address": "香港島灣仔區謝斐道415-421號積福大廈" + }, + { + "building": "駱克大廈B座", + "address": "香港島灣仔區謝斐道440號駱克大廈B座" + }, + { + "building": "拔萃商業大廈", + "address": "香港島灣仔區謝斐道456-458號拔萃商業大廈" + }, + { + "building": "楊耀熾商業大廈", + "address": "香港島灣仔區謝斐道460-462號楊耀熾商業大廈" + }, + { + "building": "德輝大廈", + "address": "香港島灣仔區謝斐道468A號德輝大廈" + }, + { + "building": "百達中心", + "address": "香港島灣仔區謝斐道468號百達中心" + }, + { + "building": "肇明大廈", + "address": "香港島灣仔區謝斐道477-481號肇明大廈" + }, + { + "building": "信諾環球保險中心", + "address": "香港島灣仔區謝斐道482號信諾環球保險中心" + }, + { + "building": "新城大廈", + "address": "香港島灣仔區謝斐道483-499號新城大廈" + }, + { + "building": "?創大廈", + "address": "香港島灣仔區謝斐道488號?創大廈" + }, + { + "building": "金利文廣場", + "address": "香港島灣仔區謝斐道496號金利文廣場" + }, + { + "building": "維安商業大廈", + "address": "香港島灣仔區謝斐道500-504號維安商業大廈" + }, + { + "building": "美漢大廈", + "address": "香港島灣仔區謝斐道501-515號美漢大廈" + }, + { + "building": "聯成商業中心", + "address": "香港島灣仔區謝斐道506-508號聯成商業中心" + }, + { + "building": "恒信大廈", + "address": "香港島灣仔區謝斐道68-82號恒信大廈" + }, + { + "building": "馬來西亞大廈", + "address": "香港島灣仔區謝斐道69-75號馬來西亞大廈" + }, + { + "building": "東亞銀行港灣中心", + "address": "香港島灣仔區謝斐道77號東亞銀行港灣中心" + }, + { + "building": "仁文大廈", + "address": "香港島灣仔區謝斐道98-108號仁文大廈" + }, + { + "building": "善樂施大廈", + "address": "香港島灣仔區禮頓道101號善樂施大廈" + }, + { + "building": "力寶禮頓大廈", + "address": "香港島灣仔區禮頓道103號力寶禮頓大廈" + }, + { + "building": "怡興大廈", + "address": "香港島灣仔區禮頓道13-19號怡興大廈" + }, + { + "building": "均?商業大廈", + "address": "香港島灣仔區禮頓道21-23號均?商業大廈" + }, + { + "building": "凱基商業大廈", + "address": "香港島灣仔區禮頓道26號凱基商業大廈" + }, + { + "building": "月華大廈", + "address": "香港島灣仔區禮頓道28-30號月華大廈" + }, + { + "building": "星華大廈", + "address": "香港島灣仔區禮頓道32-34A號星華大廈" + }, + { + "building": "嘉柏大廈", + "address": "香港島灣仔區禮頓道36號嘉柏大廈" + }, + { + "building": "崇蘭大廈", + "address": "香港島灣仔區禮頓道37號崇蘭大廈" + }, + { + "building": "禮怡大廈", + "address": "香港島灣仔區禮頓道44A-44D號禮怡大廈" + }, + { + "building": "雲翠大廈", + "address": "香港島灣仔區禮頓道91號雲翠大廈" + }, + { + "building": "星輝大廈", + "address": "香港島灣仔區禮頓道93-99號星輝大廈" + }, + { + "building": "永興閣", + "address": "香港島灣仔區禮賢里5號永興閣" + }, + { + "building": "逸東軒", + "address": "香港島灣仔區藍塘道100-104號逸東軒" + }, + { + "building": "安碧苑", + "address": "香港島灣仔區藍塘道110號安碧苑" + }, + { + "building": "友誼大廈", + "address": "香港島灣仔區藍塘道12-22號友誼大廈" + }, + { + "building": "箕璉閣", + "address": "香港島灣仔區藍塘道130-132號箕璉閣" + }, + { + "building": "仁安臺", + "address": "香港島灣仔區藍塘道135號仁安臺" + }, + { + "building": "翠園", + "address": "香港島灣仔區藍塘道155號翠園" + }, + { + "building": "愉苑", + "address": "香港島灣仔區藍塘道2-10號愉苑" + }, + { + "building": "苑廬", + "address": "香港島灣仔區藍塘道43-43B號苑廬" + }, + { + "building": "康蘭苑", + "address": "香港島灣仔區藍塘道54-56號康蘭苑" + }, + { + "building": "碧苑", + "address": "香港島灣仔區藍塘道57-59號碧苑" + }, + { + "building": "藍駿樓", + "address": "香港島灣仔區藍塘道62號藍駿樓" + }, + { + "building": "惠園", + "address": "香港島灣仔區藍塘道63號惠園" + }, + { + "building": "玫林別墅", + "address": "香港島灣仔區藍塘道65號玫林別墅" + }, + { + "building": "陽光別墅", + "address": "香港島灣仔區藍塘道69A-69B號陽光別墅" + }, + { + "building": "翠苑", + "address": "香港島灣仔區藍塘道71-71A,73-73A號翠苑" + }, + { + "building": "永安新?", + "address": "香港島灣仔區藍塘道72-80號永安新?" + }, + { + "building": "榮慧苑", + "address": "香港島灣仔區藍塘道75號" + }, + { + "building": "翠屏苑", + "address": "香港島灣仔區藍塘道77號翠屏苑" + }, + { + "building": "奕盧", + "address": "香港島灣仔區藍塘道83-85號奕盧" + }, + { + "building": "藍塘花園", + "address": "香港島灣仔區藍塘道86號藍塘花園" + }, + { + "building": "建雅花園", + "address": "香港島灣仔區藍塘道91-93號建雅花園" + }, + { + "building": "弼廬", + "address": "香港島灣仔區藍塘道92號弼廬" + }, + { + "building": "樂園", + "address": "香港島灣仔區藍塘道94號樂園" + }, + { + "building": "金輝園", + "address": "香港島灣仔區藍塘道95號金輝園" + }, + { + "building": "妙香草堂", + "address": "香港島灣仔區藍塘道98號妙香草堂" + }, + { + "building": "松苑", + "address": "香港島灣仔區蟠龍道11A-11D號松苑" + }, + { + "building": "蟠龍苑", + "address": "香港島灣仔區蟠龍道1號蟠龍苑" + }, + { + "building": "金朝陽中心", + "address": "香港島灣仔區羅素街38號金朝陽中心" + }, + { + "building": "麗園大廈", + "address": "香港島灣仔區羅素街59-61號麗園大廈" + }, + { + "building": "厚福樓", + "address": "香港島灣仔區譚臣道100-102號厚福樓" + }, + { + "building": "豪富商業大廈", + "address": "香港島灣仔區譚臣道105-111號豪富商業大廈" + }, + { + "building": "勝意大樓", + "address": "香港島灣仔區譚臣道112號勝意大樓" + }, + { + "building": "嘉易大廈", + "address": "香港島灣仔區譚臣道117-119號嘉易大廈" + }, + { + "building": "長康大廈", + "address": "香港島灣仔區譚臣道1-3號長康大廈" + }, + { + "building": "大業大廈", + "address": "香港島灣仔區譚臣道141號大業大廈" + }, + { + "building": "萬利中心", + "address": "香港島灣仔區譚臣道15號萬利中心" + }, + { + "building": "壬子商業大廈", + "address": "香港島灣仔區譚臣道17-23號壬子商業大廈" + }, + { + "building": "樹發大樓", + "address": "香港島灣仔區譚臣道25-29號樹發大樓" + }, + { + "building": "卓信商業大廈", + "address": "香港島灣仔區譚臣道76-78號卓信商業大廈" + }, + { + "building": "永傑樓", + "address": "香港島灣仔區譚臣道84-86號永傑樓" + }, + { + "building": "威利商業大廈", + "address": "香港島灣仔區譚臣道8號威利商業大廈" + }, + { + "building": "譚臣大廈", + "address": "香港島灣仔區譚臣道93-103號譚臣大廈" + }, + { + "building": "邊寧頓商業大廈", + "address": "香港島灣仔區邊寧頓街17號邊寧頓商業大廈" + }, + { + "building": "廣旅集團大廈", + "address": "香港島灣仔區邊寧頓街18號廣旅集團大廈" + }, + { + "building": "永德大廈", + "address": "香港島灣仔區寶靈頓道16B號永德大廈" + }, + { + "building": "寶榮大廈", + "address": "香港島灣仔區寶靈頓道26-28號寶榮大廈" + }, + { + "building": "榮安大樓", + "address": "香港島灣仔區寶靈頓道5-11號榮安大樓" + }, + { + "building": "華耀商業大廈", + "address": "香港島灣仔區耀華街21號華耀商業大廈" + }, + { + "building": "丹納中心", + "address": "香港島灣仔區耀華街25號丹納中心" + }, + { + "building": "百樂中心", + "address": "香港島灣仔區耀華街3-9號百樂中心" + }, + { + "building": "南慶坊", + "address": "香港島灣仔區耀華街39號南慶坊" + }, + { + "building": "德昌樓", + "address": "香港島灣仔區耀華街44號德昌樓" + }, + { + "building": "麗都大廈", + "address": "香港島灣仔區蘭杜街2號麗都大廈" + }, + { + "building": "賢華臺", + "address": "香港島灣仔區灣仔峽道1-2號賢華臺" + }, + { + "building": "逸東軒住寓", + "address": "香港島灣仔區灣仔峽道3-5號逸東軒住寓" + }, + { + "building": "富怡閣", + "address": "香港島灣仔區灣仔峽道6號富怡閣" + }, + { + "building": "壹嘉", + "address": "香港島灣仔區灣仔道109號壹嘉" + }, + { + "building": "得利商業大廈", + "address": "香港島灣仔區灣仔道113-117號得利商業大廈" + }, + { + "building": "國泰新宇", + "address": "香港島灣仔區灣仔道125號國泰新宇" + }, + { + "building": "卓凌中心", + "address": "香港島灣仔區灣仔道133號卓凌中心" + }, + { + "building": "明豐大廈", + "address": "香港島灣仔區灣仔道136號明豐大廈" + }, + { + "building": "名樂居", + "address": "香港島灣仔區灣仔道141-143號名樂居" + }, + { + "building": "文安樓", + "address": "香港島灣仔區灣仔道151-163號文安樓" + }, + { + "building": "南開大廈", + "address": "香港島灣仔區灣仔道152-158號南開大廈" + }, + { + "building": "康樂商業大廈", + "address": "香港島灣仔區灣仔道185號康樂商業大廈" + }, + { + "building": "景星大廈", + "address": "香港島灣仔區灣仔道187-191號景星大廈" + }, + { + "building": "廣生行大廈", + "address": "香港島灣仔區灣仔道188號廣生行大廈" + }, + { + "building": "壹環", + "address": "香港島灣仔區灣仔道1號壹環" + }, + { + "building": "偉希大廈", + "address": "香港島灣仔區灣仔道201-203號偉希大廈" + }, + { + "building": "福安大廈", + "address": "香港島灣仔區灣仔道205-207號福安大廈" + }, + { + "building": "怡康大廈", + "address": "香港島灣仔區灣仔道212-214號怡康大廈" + }, + { + "building": "佳誠大廈", + "address": "香港島灣仔區灣仔道230號佳誠大廈" + }, + { + "building": "德豐大樓", + "address": "香港島灣仔區灣仔道251-253號德豐大樓" + }, + { + "building": "富苑", + "address": "香港島灣仔區灣仔道39-49號富苑" + }, + { + "building": "灣仔大樓", + "address": "香港島灣仔區灣仔道40-54號灣仔大樓" + }, + { + "building": "江庫雅苑", + "address": "新界大埔區" + }, + { + "building": "南苑一號屋", + "address": "新界大埔區" + }, + { + "building": "康樂園", + "address": "新界大埔區" + }, + { + "building": "逸瓏灣", + "address": "新界大埔區" + }, + { + "building": "大埔大廈", + "address": "新界大埔區LOT1850廣福道26-50號大埔大廈" + }, + { + "building": "美德大廈", + "address": "新界大埔區LOT1851廣福道27-43號美德大廈" + }, + { + "building": "中嘉閣", + "address": "新界大埔區TPTL84廣福道51-59號中嘉閣" + }, + { + "building": "暉曜花園", + "address": "新界大埔區三門仔路101號暉曜花園" + }, + { + "building": "雍宜小築", + "address": "新界大埔區下黃宜坳93-107號雍宜小築" + }, + { + "building": "大運大廈", + "address": "新界大埔區大光里10-22號大運大廈" + }, + { + "building": "永昌樓", + "address": "新界大埔區大光里11-15號永昌樓" + }, + { + "building": "新都苑", + "address": "新界大埔區大光里26-40號新都苑" + }, + { + "building": "力士工廠大廈", + "address": "新界大埔區大宏街17號力士工廠大廈" + }, + { + "building": "儲金閣", + "address": "新界大埔區大明里12-20號儲金閣" + }, + { + "building": "寶華樓", + "address": "新界大埔區大明里1-27號寶華樓" + }, + { + "building": "寶豐樓", + "address": "新界大埔區大明里4-10號寶豐樓" + }, + { + "building": "滌濤山", + "address": "新界大埔區大埔公路" + }, + { + "building": "宏福苑", + "address": "新界大埔區大埔公路3821號宏福苑宏仁閣" + }, + { + "building": "御泓居", + "address": "新界大埔區大埔公路3985號" + }, + { + "building": "松濤閣", + "address": "新界大埔區大埔公路4111號松濤閣" + }, + { + "building": "峰林軒", + "address": "新界大埔區大埔公路4135號峰林軒" + }, + { + "building": "?翠豪庭", + "address": "新界大埔區大埔公路4188號?翠豪庭" + }, + { + "building": "松苑", + "address": "新界大埔區大埔公路4233號松苑" + }, + { + "building": "翡翠花園", + "address": "新界大埔區大埔公路4283號翡翠花園" + }, + { + "building": "鹿茵山莊", + "address": "新界大埔區大埔公路4699號鹿茵山莊" + }, + { + "building": "觀海崇庭", + "address": "新界大埔區大埔公路4883號觀海崇庭" + }, + { + "building": "逍遙嶲岸", + "address": "新界大埔區大埔公路大埔滘逸遙路18號逍遙嶲岸" + }, + { + "building": "太和中心", + "address": "新界大埔區大埔太和路15號太和中心" + }, + { + "building": "寶雅苑家和閣", + "address": "新界大埔區大埔太和路2號寶雅苑家和閣" + }, + { + "building": "寶雅苑逸和閣", + "address": "新界大埔區大埔太和路2號寶雅苑逸和閣" + }, + { + "building": "美援新村100號", + "address": "新界大埔區大埔滘" + }, + { + "building": "樂豪庭", + "address": "新界大埔區大埔頭" + }, + { + "building": "太湖山莊", + "address": "新界大埔區大埔頭" + }, + { + "building": "華樂豪庭", + "address": "新界大埔區大埔頭" + }, + { + "building": "太湖花園第一期第一座", + "address": "新界大埔區大埔頭路18號" + }, + { + "building": "味樂食品有限公司", + "address": "新界大埔區大盛街19號" + }, + { + "building": "永富容器(香港)有限公司", + "address": "新界大埔區大富街1號永富容器(香港)有限公司" + }, + { + "building": "必發精磨鋼板有限公司", + "address": "新界大埔區大富街20號必發精磨鋼板有限公司" + }, + { + "building": "大快活", + "address": "新界大埔區大富街8號大快活" + }, + { + "building": "稻香集團", + "address": "新界大埔區大發街18-20號稻香集團" + }, + { + "building": "永南食品有限公司", + "address": "新界大埔區大順街11-13號永南食品有限公司" + }, + { + "building": "天時(羅氏集團)有限公司美心", + "address": "新界大埔區大順街5號天時(羅氏集團)有限公司美心" + }, + { + "building": "聯豐大廈", + "address": "新界大埔區大榮里1-13號" + }, + { + "building": "歡樂樓", + "address": "新界大埔區大榮里12-24號歡樂樓" + }, + { + "building": "豐年樓", + "address": "新界大埔區大榮里28-32號豐年樓" + }, + { + "building": "美發大廈", + "address": "新界大埔區大榮里34-48號美發大廈" + }, + { + "building": "永樂樓", + "address": "新界大埔區大榮里6-10號永樂樓" + }, + { + "building": "山塘新村", + "address": "新界大埔區山塘路" + }, + { + "building": "龍成堡", + "address": "新界大埔區山塘路18號龍成堡" + }, + { + "building": "盈豐翠邸", + "address": "新界大埔區山塘路23號盈豐翠邸" + }, + { + "building": "大埔寶馬山", + "address": "新界大埔區山賢路8號" + }, + { + "building": "大埔馬山大埔寶馬山會所", + "address": "新界大埔區山賢路8號大埔馬山大埔寶馬山會所" + }, + { + "building": "悠然山莊", + "address": "新界大埔區山賢路9號悠然山莊" + }, + { + "building": "美馨大廈", + "address": "新界大埔區仁興街1-17號美馨大廈" + }, + { + "building": "仁興樓", + "address": "新界大埔區仁興街14-16號仁興樓" + }, + { + "building": "廣耀樓", + "address": "新界大埔區仁興街18-20號廣耀樓" + }, + { + "building": "富興樓", + "address": "新界大埔區仁興街19-21號富興樓" + }, + { + "building": "富邦樓", + "address": "新界大埔區仁興街22-26號富邦樓" + }, + { + "building": "觀南樓", + "address": "新界大埔區仁興街23-25號觀南樓" + }, + { + "building": "華興樓", + "address": "新界大埔區仁興街27-29號華興樓" + }, + { + "building": "新仁興樓", + "address": "新界大埔區仁興街28-30號新仁興樓" + }, + { + "building": "遠耀樓", + "address": "新界大埔區仁興街31-33號遠耀樓" + }, + { + "building": "昌興樓", + "address": "新界大埔區仁興街32-34號昌興樓" + }, + { + "building": "宏基大廈", + "address": "新界大埔區仁興街35-41號宏基大廈" + }, + { + "building": "思慶樓", + "address": "新界大埔區仁興街36-38號思慶樓" + }, + { + "building": "美昌大廈", + "address": "新界大埔區仁興街43-51號美昌大廈" + }, + { + "building": "利達大廈", + "address": "新界大埔區仁興街44-46號利達大廈" + }, + { + "building": "昌慶大廈", + "address": "新界大埔區仁興街53-61號昌慶大廈" + }, + { + "building": "錦魁樓", + "address": "新界大埔區仁興街54-56號錦魁樓" + }, + { + "building": "嘉賢閣", + "address": "新界大埔區仁興街8號嘉賢閣" + }, + { + "building": "元嶺名居", + "address": "新界大埔區元嶺名居" + }, + { + "building": "太平工業中心", + "address": "新界大埔區太平工業中心" + }, + { + "building": "熙泰樓", + "address": "新界大埔區北盛街15-19號熙泰樓" + }, + { + "building": "瑞安樓", + "address": "新界大埔區北盛街23-33號瑞安樓" + }, + { + "building": "翠河花園", + "address": "新界大埔區北盛街9號翠河花園" + }, + { + "building": "山頂花園", + "address": "新界大埔區半山洲村" + }, + { + "building": "雅麗山莊", + "address": "新界大埔區汀角" + }, + { + "building": "啟昌樓", + "address": "新界大埔區汀角路11-13號啟昌樓" + }, + { + "building": "映月灣", + "address": "新界大埔區汀角路111號映月灣" + }, + { + "building": "常安樓", + "address": "新界大埔區汀角路15號常安樓" + }, + { + "building": "汀角樓", + "address": "新界大埔區汀角路17號汀角樓" + }, + { + "building": "富善花園", + "address": "新界大埔區汀角路19號富善花園" + }, + { + "building": "省躬大廈", + "address": "新界大埔區汀角路21-27號省躬大廈" + }, + { + "building": "麗斯中心", + "address": "新界大埔區汀角路29-35號榮暉花園" + }, + { + "building": "太平工業園", + "address": "新界大埔區汀角路51號太平工業園" + }, + { + "building": "樂賢居", + "address": "新界大埔區汀角路61號樂賢居" + }, + { + "building": "汀雅苑雅文閣", + "address": "新界大埔區汀角路6號汀雅苑雅文閣" + }, + { + "building": "汀雅苑雅群閣", + "address": "新界大埔區汀角路6號汀雅苑雅群閣" + }, + { + "building": "汀雅苑雅賢閣", + "address": "新界大埔區汀角路6號汀雅苑雅賢閣" + }, + { + "building": "雅景花園", + "address": "新界大埔區汀角路72號" + }, + { + "building": "大南樓", + "address": "新界大埔區汀角路大南樓" + }, + { + "building": "野鴿居", + "address": "新界大埔區汀角路野鴿居" + }, + { + "building": "錦麗園", + "address": "新界大埔區汀麗路23號錦麗園" + }, + { + "building": "大埔超級城", + "address": "新界大埔區安邦路8-10號大埔超級城" + }, + { + "building": "大埔中心", + "address": "新界大埔區安邦路9號大埔中心" + }, + { + "building": "明雅苑明昌閣", + "address": "新界大埔區安埔里11號明雅苑明昌閣" + }, + { + "building": "新興花園", + "address": "新界大埔區安埔里2號新興花園" + }, + { + "building": "明雅苑明凱閣", + "address": "新界大埔區安埔里7號明雅苑明凱閣" + }, + { + "building": "明雅苑明欣閣", + "address": "新界大埔區安埔里9號明雅苑明欣閣" + }, + { + "building": "怡雅苑", + "address": "新界大埔區安埔路15號怡雅苑" + }, + { + "building": "大埔廣場", + "address": "新界大埔區安泰路1號大埔廣場" + }, + { + "building": "大埔廣場宜盛閣", + "address": "新界大埔區安泰路1號大埔廣場宜盛閣" + }, + { + "building": "大埔廣場宜富閣", + "address": "新界大埔區安泰路1號大埔廣場宜富閣" + }, + { + "building": "大埔廣場宜德閣", + "address": "新界大埔區安泰路1號大埔廣場宜德閣" + }, + { + "building": "大埔廣場宜輝閣", + "address": "新界大埔區安泰路1號大埔廣場宜輝閣" + }, + { + "building": "順安樓", + "address": "新界大埔區安富道10-12號順安樓" + }, + { + "building": "集鑣樓", + "address": "新界大埔區安富道11-19號集鑣樓" + }, + { + "building": "富景樓", + "address": "新界大埔區安富道14-16號富景樓" + }, + { + "building": "長江雅苑", + "address": "新界大埔區安富道18號長江雅苑" + }, + { + "building": "鴻運大樓", + "address": "新界大埔區安富道26-28號鴻運大樓" + }, + { + "building": "金富樓", + "address": "新界大埔區安富道2-8號金富樓" + }, + { + "building": "安富樓", + "address": "新界大埔區安富道30-32號安富樓" + }, + { + "building": "海寶花園", + "address": "新界大埔區安慈路1號海寶花園" + }, + { + "building": "八號花園第", + "address": "新界大埔區安慈路2號八號花園第" + }, + { + "building": "翠屏花園", + "address": "新界大埔區安慈路3號翠屏花園" + }, + { + "building": "昌運中心", + "address": "新界大埔區安慈路4號昌運中心" + }, + { + "building": "帝琴灣凱弦居", + "address": "新界大埔區西沙路530號帝琴灣凱弦居" + }, + { + "building": "帝琴灣凱琴居", + "address": "新界大埔區西沙路533號帝琴灣凱琴居" + }, + { + "building": "西沙豪園", + "address": "新界大埔區西澳" + }, + { + "building": "坪朗花園", + "address": "新界大埔區坪朗村" + }, + { + "building": "漢家華園", + "address": "新界大埔區忠信里50號漢家華園" + }, + { + "building": "怡翠山莊", + "address": "新界大埔區怡翠山莊" + }, + { + "building": "承峰", + "address": "新界大埔區承峰" + }, + { + "building": "東昌閣", + "address": "新界大埔區東昌街6-16號東昌閣" + }, + { + "building": "映堤居", + "address": "新界大埔區林村新村映堤居" + }, + { + "building": "南山花園", + "address": "新界大埔區南坑" + }, + { + "building": "南山別墅", + "address": "新界大埔區南坑南山別墅" + }, + { + "building": "鴻昌樓", + "address": "新界大埔區南盛街11-13號鴻昌樓" + }, + { + "building": "利宜樓", + "address": "新界大埔區南盛街12-14號利宜樓" + }, + { + "building": "南盛樓", + "address": "新界大埔區南盛街15-17號南盛樓" + }, + { + "building": "南盛大廈", + "address": "新界大埔區南盛街16號南盛大廈" + }, + { + "building": "南盛閣", + "address": "新界大埔區南盛街19-23號南盛閣" + }, + { + "building": "廣興樓", + "address": "新界大埔區南盛街2C號廣興樓" + }, + { + "building": "華新樓", + "address": "新界大埔區南盛街8-10號華新樓" + }, + { + "building": "富雅花園", + "address": "新界大埔區南運路1號富雅花園" + }, + { + "building": "新達廣場", + "address": "新界大埔區南運路9號新達廣場" + }, + { + "building": "天賦海灣第一座", + "address": "新界大埔區科進路5號天賦海灣第一座" + }, + { + "building": "天賦海灣", + "address": "新界大埔區科進路9號" + }, + { + "building": "安樂樓", + "address": "新界大埔區美新里1號安樂樓" + }, + { + "building": "華安樓", + "address": "新界大埔區美新里3號華安樓" + }, + { + "building": "美菱居", + "address": "新界大埔區美新里5-6號美菱居" + }, + { + "building": "泰亨豪園", + "address": "新界大埔區泰亨1號泰亨豪園" + }, + { + "building": "俊亨豪園", + "address": "新界大埔區泰亨中心圍" + }, + { + "building": "承峰第三座", + "address": "新界大埔區馬成徑1號承峰第三座" + }, + { + "building": "新峰花園", + "address": "新界大埔區馬窩路" + }, + { + "building": "御峰苑", + "address": "新界大埔區馬窩路11號御峰苑" + }, + { + "building": "御峰豪園", + "address": "新界大埔區馬窩路9號御峰豪園" + }, + { + "building": "崇德樓", + "address": "新界大埔區崇德街1-5號崇德樓" + }, + { + "building": "大埔商會新界鄉議局大廈", + "address": "新界大埔區崇德街4-8號大埔商會新界鄉議局大廈" + }, + { + "building": "高輝樓", + "address": "新界大埔區崇德街7號高輝樓" + }, + { + "building": "帝欣苑", + "address": "新界大埔區梅樹坑路" + }, + { + "building": "大埔花園", + "address": "新界大埔區梅樹坑路1號大埔" + }, + { + "building": "江庫花園", + "address": "新界大埔區船灣詹屋" + }, + { + "building": "江庫花園", + "address": "新界大埔區船灣詹屋301號" + }, + { + "building": "康樂花園", + "address": "新界大埔區圍頭村DD7號康樂花園" + }, + { + "building": "富榮樓", + "address": "新界大埔區富善街15-17號富榮樓" + }, + { + "building": "新發樓", + "address": "新界大埔區富善街16-22號新發樓" + }, + { + "building": "新祥樓", + "address": "新界大埔區富善街19-21號新祥樓" + }, + { + "building": "賡裕樓", + "address": "新界大埔區富善街24-26號賡裕樓" + }, + { + "building": "新康樓", + "address": "新界大埔區富善街25號新康樓" + }, + { + "building": "富裕樓", + "address": "新界大埔區富善街27-29號富裕樓" + }, + { + "building": "富昌樓", + "address": "新界大埔區富善街28號富昌樓" + }, + { + "building": "大埔嘉豪大樓", + "address": "新界大埔區富善街30-44號大埔嘉豪大樓" + }, + { + "building": "育才樓", + "address": "新界大埔區富善街31-33號育才樓" + }, + { + "building": "高美樓", + "address": "新界大埔區富善街35-37號高美樓" + }, + { + "building": "富善樓", + "address": "新界大埔區富善街39-41號富善樓" + }, + { + "building": "山景閣", + "address": "新界大埔區富善街3號山景閣" + }, + { + "building": "富蔭樓", + "address": "新界大埔區富善街43-45號富蔭樓" + }, + { + "building": "永富大廈", + "address": "新界大埔區富善街46-52號永富大廈" + }, + { + "building": "啟慶樓", + "address": "新界大埔區富善街47-49號啟慶樓" + }, + { + "building": "伯祥閣", + "address": "新界大埔區富善街54-56號伯祥閣" + }, + { + "building": "華基樓", + "address": "新界大埔區富善街55-57號華基樓" + }, + { + "building": "新興樓", + "address": "新界大埔區富善街59-61號新興樓" + }, + { + "building": "永祥大廈", + "address": "新界大埔區富善街6-14號永祥大廈" + }, + { + "building": "永盛樓", + "address": "新界大埔區富善街62號永盛樓" + }, + { + "building": "建亨樓", + "address": "新界大埔區富善街63-65號建亨樓" + }, + { + "building": "福妹樓", + "address": "新界大埔區富善街64號福妹樓" + }, + { + "building": "育賢樓", + "address": "新界大埔區富善街65A-67號育賢樓" + }, + { + "building": "永恆樓", + "address": "新界大埔區富善街66-68號永恆樓" + }, + { + "building": "昌發樓", + "address": "新界大埔區富善街69-71號昌發樓" + }, + { + "building": "富盛大廈", + "address": "新界大埔區富善街7-13號富盛大廈" + }, + { + "building": "逸雅苑", + "address": "新界大埔區逸雅里" + }, + { + "building": "皇御山", + "address": "新界大埔區逸遙路3號皇御山" + }, + { + "building": "玉華閣", + "address": "新界大埔區鄉事會坊35-37號玉華閣" + }, + { + "building": "麗珍樓", + "address": "新界大埔區鄉事會街17-19號麗珍樓" + }, + { + "building": "平安樓", + "address": "新界大埔區鄉事會街33-39號平安樓" + }, + { + "building": "萬興樓", + "address": "新界大埔區鄉事會街3號萬興樓" + }, + { + "building": "福安樓", + "address": "新界大埔區鄉事會街41-49號福安樓" + }, + { + "building": "寶蓮樓", + "address": "新界大埔區鄉事會街9-15號寶蓮樓" + }, + { + "building": "庭峰居", + "address": "新界大埔區新屋家村庭峰居" + }, + { + "building": "豪成半山花園", + "address": "新界大埔區新屋家村豪成半山花園" + }, + { + "building": "瑞祥樓", + "address": "新界大埔區瑞安街17-23號瑞祥樓" + }, + { + "building": "瑞安街1號", + "address": "新界大埔區瑞安街1號" + }, + { + "building": "美盛大廈", + "address": "新界大埔區瑞安街3-11號美盛大廈" + }, + { + "building": "美麗大廈", + "address": "新界大埔區運頭角里10號美麗大廈" + }, + { + "building": "美楓大廈", + "address": "新界大埔區運頭角里6號美楓大廈" + }, + { + "building": "順景大廈", + "address": "新界大埔區運頭角里8號順景大廈" + }, + { + "building": "廣安大廈", + "address": "新界大埔區運頭街20-26號廣安大廈" + }, + { + "building": "永和樓", + "address": "新界大埔區運頭街75-87號永和樓" + }, + { + "building": "龍騰閣", + "address": "新界大埔區運頭街89-93號龍騰閣" + }, + { + "building": "雍怡雅苑", + "address": "新界大埔區雍怡路1號雍怡雅苑" + }, + { + "building": "康裕樓", + "address": "新界大埔區靖遠街11-13號康裕樓" + }, + { + "building": "天后樓", + "address": "新界大埔區靖遠街15號天后樓" + }, + { + "building": "新安樓", + "address": "新界大埔區靖遠街21號新安樓" + }, + { + "building": "六和樓", + "address": "新界大埔區靖遠街25-27號六和樓" + }, + { + "building": "彩威閣", + "address": "新界大埔區靖遠街37-39號彩威閣" + }, + { + "building": "哲華樓", + "address": "新界大埔區靖遠街43號哲華樓" + }, + { + "building": "靖遠樓", + "address": "新界大埔區靖遠街45-47號靖遠樓" + }, + { + "building": "國雄樓", + "address": "新界大埔區靖遠街4-6號國雄樓" + }, + { + "building": "惠安樓", + "address": "新界大埔區靖遠街49-51號惠安樓" + }, + { + "building": "銀輝樓", + "address": "新界大埔區靖遠街53-55號銀輝樓" + }, + { + "building": "永隆閣", + "address": "新界大埔區靖遠街57-59號永隆閣" + }, + { + "building": "靖安樓", + "address": "新界大埔區靖遠街5-7號靖安樓" + }, + { + "building": "頌雅苑", + "address": "新界大埔區頌雅路8號頌雅苑" + }, + { + "building": "永發樓", + "address": "新界大埔區翠和里1號永發樓" + }, + { + "building": "裕安樓", + "address": "新界大埔區翠和里3號裕安樓" + }, + { + "building": "麗和閣", + "address": "新界大埔區翠和里5號麗和閣" + }, + { + "building": "翠怡花園", + "address": "新界大埔區翠怡街3號翠怡花園" + }, + { + "building": "美豐花園", + "address": "新界大埔區翠樂街11號美豐花園" + }, + { + "building": "菁泉雅居A座", + "address": "新界大埔區翠樂街6號菁泉雅居A座" + }, + { + "building": "富萊花園", + "address": "新界大埔區翠樂街8號富萊花園" + }, + { + "building": "翠林閣", + "address": "新界大埔區翠樂街9號翠林閣" + }, + { + "building": "鳳園村", + "address": "新界大埔區鳳園村" + }, + { + "building": "嵐山", + "address": "新界大埔區鳳園路9號" + }, + { + "building": "金褔樓", + "address": "新界大埔區廣福坊16, 24, 26號金褔樓" + }, + { + "building": "福昌樓", + "address": "新界大埔區廣福坊3-19號福昌樓" + }, + { + "building": "康樂樓", + "address": "新界大埔區廣福里1-11號康樂樓" + }, + { + "building": "東樂樓", + "address": "新界大埔區廣福里13-15號東樂樓" + }, + { + "building": "正發樓", + "address": "新界大埔區廣福里17-23號正發樓" + }, + { + "building": "美榮樓", + "address": "新界大埔區廣福里25-31號美榮樓" + }, + { + "building": "大埔廣福道廣褔大樓", + "address": "新界大埔區廣福道114-124號大埔廣福道廣褔大樓" + }, + { + "building": "文華樓", + "address": "新界大埔區廣福道135A-135B號文華樓" + }, + { + "building": "同福樓", + "address": "新界大埔區廣福道148-150號同福樓" + }, + { + "building": "永誠樓", + "address": "新界大埔區廣福道149-155號永誠樓" + }, + { + "building": "廣福大廈", + "address": "新界大埔區廣福道21-25號廣福大廈" + }, + { + "building": "福榮樓", + "address": "新界大埔區廣福道52號福榮樓" + }, + { + "building": "福平樓", + "address": "新界大埔區廣福道54-58號福平樓" + }, + { + "building": "景豐大廈", + "address": "新界大埔區廣福道60-62號景豐大廈" + }, + { + "building": "寶康大廈", + "address": "新界大埔區廣福道70-78號寶康大廈" + }, + { + "building": "德康樓", + "address": "新界大埔區廣福道80-82號德康樓" + }, + { + "building": "廣蔭樓", + "address": "新界大埔區廣福道84號廣蔭樓" + }, + { + "building": "金柏樓", + "address": "新界大埔區廣福道86-92號金柏樓" + }, + { + "building": "廣福華庭", + "address": "新界大埔區廣福道8號廣福華庭" + }, + { + "building": "鴻發大樓", + "address": "新界大埔區廣福道94-100號鴻發大樓" + }, + { + "building": "德雅苑", + "address": "新界大埔區曉運路2號德雅苑" + }, + { + "building": "景雅苑", + "address": "新界大埔區曉運路6-8號景雅苑" + }, + { + "building": "海景山莊", + "address": "新界大埔區燕子里18號海景山莊" + }, + { + "building": "農瑞村", + "address": "新界大埔區燕子里2號農瑞村" + }, + { + "building": "怡園別墅", + "address": "新界大埔區錦山100號怡園別墅" + }, + { + "building": "日榮花園", + "address": "新界大埔區錦山201號" + }, + { + "building": "錦繡台", + "address": "新界大埔區錦山村" + }, + { + "building": "翠樺園", + "address": "新界大埔區錦山村" + }, + { + "building": "大埔錦山台", + "address": "新界大埔區錦山村5-6號大埔錦" + }, + { + "building": "僑豐山莊", + "address": "新界大埔區龍尾" + }, + { + "building": "龍尾", + "address": "新界大埔區龍尾164號" + }, + { + "building": "龍景別墅", + "address": "新界大埔區龍尾村龍景別墅" + }, + { + "building": "新翠山莊", + "address": "新界大埔區優景里20號新翠山莊" + }, + { + "building": "七約大樓", + "address": "新界大埔區戲院街2號七約大樓" + }, + { + "building": "蔚海山莊", + "address": "新界大埔區瞭望里18號" + }, + { + "building": "富萊花園", + "address": "新界大埔區舊墟直街23號富萊花園" + }, + { + "building": "榮麗苑", + "address": "新界大埔區舊墟直街28號榮麗苑" + }, + { + "building": "美利大廈", + "address": "新界大埔區舊墟直街30號美利大廈" + }, + { + "building": "美新大廈", + "address": "新界大埔區舊墟直街4-20號美新大廈" + }, + { + "building": "榮明花園", + "address": "新界大埔區舊墟直街8號榮明花園" + }, + { + "building": "粵發大廈", + "address": "新界大埔區舊墟直街9號粵發大廈" + }, + { + "building": "高冠樓", + "address": "新界大埔區懷仁街14-16號高冠樓" + }, + { + "building": "安迪大廈", + "address": "新界大埔區懷仁街15-21號安迪大廈" + }, + { + "building": "伯昌樓", + "address": "新界大埔區懷仁街18號伯昌樓" + }, + { + "building": "光裕樓", + "address": "新界大埔區懷仁街20-22號光裕樓" + }, + { + "building": "開連樓", + "address": "新界大埔區懷仁街23-25號開連樓" + }, + { + "building": "開利樓", + "address": "新界大埔區懷仁街26-28號開利樓" + }, + { + "building": "開錦樓", + "address": "新界大埔區懷仁街27-33號開錦樓" + }, + { + "building": "英華樓", + "address": "新界大埔區懷仁街30-30B號英華樓" + }, + { + "building": "子莊樓", + "address": "新界大埔區懷仁街3-13號子莊樓" + }, + { + "building": "寶仁樓", + "address": "新界大埔區懷仁街32-38號寶仁樓" + }, + { + "building": "泰和樓", + "address": "新界大埔區懷仁街41-53號泰和樓" + }, + { + "building": "錦明樓", + "address": "新界大埔區懷義街10-12號錦明樓" + }, + { + "building": "錦棠樓", + "address": "新界大埔區懷義街22-24號錦棠樓" + }, + { + "building": "懷帶樓", + "address": "新界大埔區懷義街3號懷帶樓" + }, + { + "building": "寶湖花園", + "address": "新界大埔區寶湖道3號寶湖花園" + }, + { + "building": "寶康大廈", + "address": "新界大埔區寶鄉街35-39號寶康大廈" + }, + { + "building": "寶樂樓", + "address": "新界大埔區寶鄉街41-45號寶樂樓" + }, + { + "building": "美雲樓", + "address": "新界大埔區寶鄉街46-52號美雲樓" + }, + { + "building": "華樂樓", + "address": "新界大埔區寶鄉街47-53號華樂樓" + }, + { + "building": "行樂樓", + "address": "新界大埔區寶鄉街54-60號行樂樓" + }, + { + "building": "寶盛樓", + "address": "新界大埔區寶鄉街59-63號寶盛樓" + }, + { + "building": "欽發樓", + "address": "新界大埔區寶鄉街72-74號欽發樓" + }, + { + "building": "德信大樓", + "address": "新界大埔區寶鄉街76-86號德信大樓" + }, + { + "building": "88廣場", + "address": "新界大埔區寶鄉街88號88廣場" + }, + { + "building": "榮暉花園", + "address": "新界大埔區露屏路1號淺月灣二期22號屋" + }, + { + "building": "淺月灣", + "address": "新界大埔區露輝路28號" + }, + { + "building": "倚龍山莊", + "address": "新界大埔區露輝路31號倚龍山莊" + }, + { + "building": "嘉豐花園", + "address": "新界大埔區露輝路33號嘉豐花園" + }, + { + "building": "聚豪天下", + "address": "新界大埔區露輝路38號聚豪天下" + }, + { + "building": "加州花園", + "address": "新界元朗區" + }, + { + "building": "嘉湖山莊", + "address": "新界元朗區" + }, + { + "building": "錦?花園", + "address": "新界元朗區" + }, + { + "building": "石?村", + "address": "新界元朗區 屏山石?村" + }, + { + "building": "天麗苑", + "address": "新界元朗區LOT 21號天麗苑" + }, + { + "building": "聯昇樓", + "address": "新界元朗區LOT3776青山公路 - 元朗段162-168號聯昇樓" + }, + { + "building": "雅翠園B座", + "address": "新界元朗區M段第二街錦?花園33號" + }, + { + "building": "仁翠苑", + "address": "新界元朗區YLTL122元朗安寧路76-98號仁翠苑" + }, + { + "building": "艷虹樓", + "address": "新界元朗區YLTL126元朗安樂路89-93號艷虹樓" + }, + { + "building": "玉成大廈", + "address": "新界元朗區YLTL270裕景坊21號玉成大廈" + }, + { + "building": "合益中心", + "address": "新界元朗區YLTL347合益路31號合益中心" + }, + { + "building": "明珠樓", + "address": "新界元朗區YLTL95元朗安樂路1-11A號明珠樓" + }, + { + "building": "欣翠園", + "address": "新界元朗區八鄉上村" + }, + { + "building": "柏湖花園第二期", + "address": "新界元朗區八鄉上村293B,313A, 313B, 313C號柏湖花園第二期" + }, + { + "building": "錦榮花園", + "address": "新界元朗區八鄉上村491-497號錦榮花園" + }, + { + "building": "金爵花園一期", + "address": "新界元朗區八鄉上村600號金爵花園一期" + }, + { + "building": "富盛花園A座", + "address": "新界元朗區八鄉上輋村87號富盛花園A座" + }, + { + "building": "富盛花園D座", + "address": "新界元朗區八鄉上輋村87號富盛花園D座" + }, + { + "building": "富盛花園E座", + "address": "新界元朗區八鄉上輋村87號富盛花園E座" + }, + { + "building": "富盛花園F座", + "address": "新界元朗區八鄉上輋村87號富盛花園F座" + }, + { + "building": "富盛花園G座", + "address": "新界元朗區八鄉上輋村87號富盛花園G座" + }, + { + "building": "富盛花園H座", + "address": "新界元朗區八鄉上輋村87號富盛花園H座" + }, + { + "building": "富盛花園I座", + "address": "新界元朗區八鄉上輋村87號富盛花園I座" + }, + { + "building": "富盛花園J座", + "address": "新界元朗區八鄉上輋村87號富盛花園J座" + }, + { + "building": "富盛花園K座", + "address": "新界元朗區八鄉上輋村87號富盛花園K座" + }, + { + "building": "富興花園", + "address": "新界元朗區八鄉上輋村88號富興花園" + }, + { + "building": "曉華花園", + "address": "新界元朗區八鄉下輋村150號曉華花園" + }, + { + "building": "斌善花園", + "address": "新界元朗區八鄉元崗村" + }, + { + "building": "泓瀚花園", + "address": "新界元朗區八鄉元崗村160,182-189號泓瀚花園" + }, + { + "building": "龍崗花園", + "address": "新界元朗區八鄉元崗村170-177號龍崗花園" + }, + { + "building": "嘉柏苑", + "address": "新界元朗區八鄉元崗村216-222號嘉柏苑" + }, + { + "building": "斌悅花園", + "address": "新界元朗區八鄉元崗新村206號斌悅花園第" + }, + { + "building": "偉賢薈", + "address": "新界元朗區八鄉元崗新村60號" + }, + { + "building": "偉賢薈", + "address": "新界元朗區八鄉元崗新村60號 偉賢薈" + }, + { + "building": "瑞豪花園", + "address": "新界元朗區八鄉牛徑村11號瑞豪花園" + }, + { + "building": "富麗豪園", + "address": "新界元朗區八鄉牛徑村19號富麗豪園" + }, + { + "building": "富雅花園", + "address": "新界元朗區八鄉牛徑村20A號富雅花園" + }, + { + "building": "港威豪園", + "address": "新界元朗區八鄉田心村306-337號港威豪園" + }, + { + "building": "強昇花園", + "address": "新界元朗區八鄉田心村502號強昇花園" + }, + { + "building": "秀麗花園", + "address": "新界元朗區八鄉田心村511A-F號秀麗花園" + }, + { + "building": "美怡花園", + "address": "新界元朗區八鄉石湖塘村199號美怡花園" + }, + { + "building": "麗湖花園", + "address": "新界元朗區八鄉石湖塘村287號麗湖花園" + }, + { + "building": "海棠花園", + "address": "新界元朗區八鄉蓮花地234號海棠花園" + }, + { + "building": "廣輝苑", + "address": "新界元朗區八鄉蓮花地村184A-C號廣輝苑" + }, + { + "building": "蓮花苑", + "address": "新界元朗區八鄉蓮花地村5-7號蓮花苑" + }, + { + "building": "朗月軒", + "address": "新界元朗區八鄉橫台山羅屋村67-79號朗月軒" + }, + { + "building": "怡康花園", + "address": "新界元朗區八鄉錦上路元崗圍190-196號怡康花園" + }, + { + "building": "富銀花園", + "address": "新界元朗區八鄉錦上路元崗新村富銀花園" + }, + { + "building": "富豪花園", + "address": "新界元朗區八鄉錦上路水盞田村20號" + }, + { + "building": "錦福豪園", + "address": "新界元朗區八鄉錦上路蓮花地村" + }, + { + "building": "翠苑9座", + "address": "新界元朗區八鄉錦田路梁屋村100號翠苑9座" + }, + { + "building": "碧戶軒 ", + "address": "新界元朗區八鄉錦莆路 65-68號碧戶軒" + }, + { + "building": "振南苑", + "address": "新界元朗區十八鄉大棠路振南苑" + }, + { + "building": "鳳苑", + "address": "新界元朗區十八鄉山貝村272號鳳苑" + }, + { + "building": "振輝花園", + "address": "新界元朗區十八鄉木橋頭村132號振輝花園" + }, + { + "building": "元朗麗豪軒", + "address": "新界元朗區十八鄉凹頭DD 115 LOT 1507號" + }, + { + "building": "振聲花園", + "address": "新界元朗區十八鄉凹頭楊屋村91A號振聲花園" + }, + { + "building": "新美花園", + "address": "新界元朗區十八鄉馬田路新美花園" + }, + { + "building": "振華花園", + "address": "新界元朗區十八鄉馬棠路12號" + }, + { + "building": "尚悅", + "address": "新界元朗區十八鄉路11號" + }, + { + "building": "原築", + "address": "新界元朗區十八鄉路83號" + }, + { + "building": "翹翠峰", + "address": "新界元朗區十八鄉路NO. 138號翹翠峰" + }, + { + "building": "怡豐大廈", + "address": "新界元朗區又新街31-35A號怡豐大廈" + }, + { + "building": "富祐閣", + "address": "新界元朗區又新街37-51G號富祐閣" + }, + { + "building": "置富中心", + "address": "新界元朗區又新街56號置富中心" + }, + { + "building": "元新大廈", + "address": "新界元朗區又新街7-25號元新大廈" + }, + { + "building": "雅妍花苑", + "address": "新界元朗區上攸田村70號雅妍花苑" + }, + { + "building": "屏湖花園", + "address": "新界元朗區上璋圍屏湖花園" + }, + { + "building": "麗安花園", + "address": "新界元朗區大井福順街8號" + }, + { + "building": "大夫第花園", + "address": "新界元朗區大夫第花園" + }, + { + "building": "大江埔/長江村", + "address": "新界元朗區大江埔/長江村" + }, + { + "building": "福星樓", + "address": "新界元朗區大陂頭徑14-24號福星樓" + }, + { + "building": "華盛樓", + "address": "新界元朗區大陂頭徑2-12號華盛樓" + }, + { + "building": "豐年樓", + "address": "新界元朗區大陂頭徑26-36號豐年樓" + }, + { + "building": "曉峰花園", + "address": "新界元朗區大棠村397-402號曉峰花園" + }, + { + "building": "寶發大廈", + "address": "新界元朗區大棠路24-30號寶發大廈" + }, + { + "building": "大棠樓", + "address": "新界元朗區大棠路29-33號大棠樓" + }, + { + "building": "捷榮樓", + "address": "新界元朗區大棠路32-34號捷榮樓" + }, + { + "building": "紅棉洋樓", + "address": "新界元朗區大棠路35-39號紅棉洋樓" + }, + { + "building": "金朗大廈", + "address": "新界元朗區大棠路41-59號金朗大廈" + }, + { + "building": "安福大樓", + "address": "新界元朗區大棠路48-72號安福大樓" + }, + { + "building": "昌發大廈", + "address": "新界元朗區大棠路48A-48K號昌發大廈" + }, + { + "building": "好景樓", + "address": "新界元朗區大棠路61-67號好景樓." + }, + { + "building": "蝶翠峰", + "address": "新界元朗區大棠路99號蝶翠峰" + }, + { + "building": "丹桂軒", + "address": "新界元朗區丹桂村50號丹桂軒" + }, + { + "building": "利發大樓", + "address": "新界元朗區仁樂坊5號利發大樓" + }, + { + "building": "富銀花園", + "address": "新界元朗區元朗八鄉錦上路元崗新村50號富銀花園" + }, + { + "building": "名御", + "address": "新界元朗區元朗大棠路101號 名御" + }, + { + "building": "偉景園", + "address": "新界元朗區元朗丹桂村路63號偉景園" + }, + { + "building": "御景園", + "address": "新界元朗區元朗公園南路25號御景園" + }, + { + "building": "藝典居", + "address": "新界元朗區元朗公園南路9號藝典居" + }, + { + "building": "富怡花園", + "address": "新界元朗區元朗田廈路廈村市29號富怡花園" + }, + { + "building": "安利大樓", + "address": "新界元朗區元朗安寧路100-108號安利大樓" + }, + { + "building": "好景樓", + "address": "新界元朗區元朗安寧路110-136A號好景樓" + }, + { + "building": "福來樓", + "address": "新界元朗區元朗安寧路11-17號福來樓" + }, + { + "building": "紫荊樓第二期", + "address": "新界元朗區元朗安寧路138-160號紫荊樓第二期" + }, + { + "building": "安寧樓", + "address": "新界元朗區元朗安寧路170-190號安寧樓" + }, + { + "building": "鴻運樓", + "address": "新界元朗區元朗安寧路21-35號鴻運樓" + }, + { + "building": "冠煌樓", + "address": "新界元朗區元朗安寧路2-18號冠煌樓" + }, + { + "building": "民祐樓", + "address": "新界元朗區元朗安寧路37-39號民祐樓" + }, + { + "building": "吉祥樓", + "address": "新界元朗區元朗安寧路51-53號吉祥樓" + }, + { + "building": "富寧樓", + "address": "新界元朗區元朗安寧路55-57號富寧樓" + }, + { + "building": "寶豐大廈", + "address": "新界元朗區元朗安寧路59A號寶豐大廈" + }, + { + "building": "同昌樓", + "address": "新界元朗區元朗安寧路59B號同昌樓" + }, + { + "building": "新榮樓", + "address": "新界元朗區元朗安寧路61號新榮樓" + }, + { + "building": "大利樓", + "address": "新界元朗區元朗安寧路63號大利樓" + }, + { + "building": "福安樓", + "address": "新界元朗區元朗安寧路65-79號福安樓" + }, + { + "building": "保輝樓", + "address": "新界元朗區元朗安寧路70-74號保輝樓" + }, + { + "building": "文業樓", + "address": "新界元朗區元朗安寧路81-91號文業樓" + }, + { + "building": "安樂工業大廈", + "address": "新界元朗區元朗安樂路109-111號安樂工業大廈" + }, + { + "building": "基達中心", + "address": "新界元朗區元朗安樂路129號基達中心" + }, + { + "building": "遠東發展元朗大廈", + "address": "新界元朗區元朗安樂路13-33號遠東發展元朗大廈" + }, + { + "building": "利群樓", + "address": "新界元朗區元朗安樂路35-47號利群樓" + }, + { + "building": "榮發樓", + "address": "新界元朗區元朗安樂路49-57號榮發樓" + }, + { + "building": "永興大廈", + "address": "新界元朗區元朗安樂路59-61號永興大廈" + }, + { + "building": "建安樓", + "address": "新界元朗區元朗安樂路77-81C號建安樓" + }, + { + "building": "聯勝樓", + "address": "新界元朗區元朗安樂路83-87號聯勝樓" + }, + { + "building": "龍珠樓", + "address": "新界元朗區元朗安興街12-18號龍珠樓" + }, + { + "building": "元祥樓", + "address": "新界元朗區元朗安興街1-3號元祥樓" + }, + { + "building": "京城閣", + "address": "新界元朗區元朗安興街24-28號京城閣" + }, + { + "building": "安輝樓", + "address": "新界元朗區元朗安興街30-40B號安輝樓" + }, + { + "building": "安泰樓", + "address": "新界元朗區元朗安興街59-67號安泰樓" + }, + { + "building": "基業大樓", + "address": "新界元朗區元朗安興街5-9號基業大樓" + }, + { + "building": "裕發大樓", + "address": "新界元朗區元朗安興街60-80號裕發大樓" + }, + { + "building": "富達廣場", + "address": "新界元朗區元朗西菁街23號富達廣場" + }, + { + "building": "逸翠軒", + "address": "新界元朗區元朗沙井路38號逸翠軒" + }, + { + "building": "東昇樓", + "address": "新界元朗區元朗東堤街8A-8B號東昇樓" + }, + { + "building": "綠悅", + "address": "新界元朗區元朗青山公路屏山段131號 綠悅" + }, + { + "building": "朗逸豪園", + "address": "新界元朗區元朗青山道128號朗逸豪園" + }, + { + "building": "帝庭居", + "address": "新界元朗區元朗屏山屏竹里8號帝庭居" + }, + { + "building": "家安花園", + "address": "新界元朗區元朗屏山庸園路1號家安花園" + }, + { + "building": "金閣豪園", + "address": "新界元朗區元朗洪水橋大街23號金閣豪園" + }, + { + "building": "卓雅花園", + "address": "新界元朗區元朗洪水橋丹桂村7號" + }, + { + "building": "玉桂園", + "address": "新界元朗區元朗洪水橋丹桂村路" + }, + { + "building": "朗峰園", + "address": "新界元朗區元朗洪水橋洪順路9號朗峰園" + }, + { + "building": "德慶大廈", + "address": "新界元朗區元朗洪水橋德慶大廈" + }, + { + "building": "麗珊園", + "address": "新界元朗區元朗洪堤路3號麗珊園" + }, + { + "building": "富麗山莊", + "address": "新界元朗區元朗流浮山鰲磡村123號富麗山莊" + }, + { + "building": "珍寶樓", + "address": "新界元朗區元朗炮仗坊11-11B號珍寶樓" + }, + { + "building": "保定樓", + "address": "新界元朗區元朗炮仗坊13-25號保定樓" + }, + { + "building": "順興樓", + "address": "新界元朗區元朗炮仗坊1-9號順興樓" + }, + { + "building": "恒昌大廈", + "address": "新界元朗區元朗炮仗坊36-48號恒昌大廈" + }, + { + "building": "馬寶花園", + "address": "新界元朗區元朗唐人新村沙井路25號馬寶花園" + }, + { + "building": "金莎花園", + "address": "新界元朗區元朗唐人新村沙井路33號金莎花園" + }, + { + "building": "金碧花園", + "address": "新界元朗區元朗唐人新村沙井路金碧花園" + }, + { + "building": "采茵軒", + "address": "新界元朗區元朗唐人新村路118號采茵軒" + }, + { + "building": "南祥大廈", + "address": "新界元朗區元朗泰祥街17-21號南祥大廈" + }, + { + "building": "泰祥大廈", + "address": "新界元朗區元朗泰祥街23-29號泰祥大廈" + }, + { + "building": "勤儉樓", + "address": "新界元朗區元朗泰祥街7號勤儉樓" + }, + { + "building": "金輪樓", + "address": "新界元朗區元朗泰祥街9-15號金輪樓" + }, + { + "building": "大興大廈", + "address": "新界元朗區元朗泰衡街2-28號大興大廈" + }, + { + "building": "兆明樓", + "address": "新界元朗區元朗康樂路10-12號兆明樓" + }, + { + "building": "鈞德樓", + "address": "新界元朗區元朗康樂路13-25號鈞德樓" + }, + { + "building": "嘉好大廈", + "address": "新界元朗區元朗康樂路27-31號嘉好大廈" + }, + { + "building": "康樂廣場", + "address": "新界元朗區元朗康樂路8號康樂廣場" + }, + { + "building": "皇冠花園", + "address": "新界元朗區元朗廈村新圍新錫路皇冠花園" + }, + { + "building": "怡景樓", + "address": "新界元朗區元朗新街14-16號怡景樓" + }, + { + "building": "豐財樓", + "address": "新界元朗區元朗新街2-12號豐財樓" + }, + { + "building": "光明樓", + "address": "新界元朗區元朗新街34-36號光明樓" + }, + { + "building": "夏威夷豪園", + "address": "新界元朗區元朗新潭路83號夏威夷豪園" + }, + { + "building": "榮禧苑", + "address": "新界元朗區元朗楊屋村116號地段榮禧苑" + }, + { + "building": "泰來花園", + "address": "新界元朗區元朗蓬吉鄉301號泰來花園" + }, + { + "building": "定福花園", + "address": "新界元朗區元朗橫洲定福花園" + }, + { + "building": "豪景富居", + "address": "新界元朗區元朗錦田錦上路吉慶圍250號豪景富居" + }, + { + "building": "錦安花園", + "address": "新界元朗區元朗錦田錦上路祠堂村200號錦安花園" + }, + { + "building": "海錦花園", + "address": "新界元朗區元朗錦繡大道8號海錦花園" + }, + { + "building": "新時代中城", + "address": "新界元朗區元龍街9號" + }, + { + "building": "御豪山莊", + "address": "新界元朗區公園北路38號御豪山莊" + }, + { + "building": "翠韻華庭", + "address": "新界元朗區公園南路1號" + }, + { + "building": "柏麗豪園", + "address": "新界元朗區公園南路23號柏麗豪園" + }, + { + "building": "御景園", + "address": "新界元朗區公園南路25號御景園" + }, + { + "building": "嘉利園", + "address": "新界元朗區友全街11號嘉利園" + }, + { + "building": "天富苑", + "address": "新界元朗區天秀路15號" + }, + { + "building": "天祐苑", + "address": "新界元朗區天城路1號天祐苑" + }, + { + "building": "置富嘉湖", + "address": "新界元朗區天恩路12號置富嘉湖" + }, + { + "building": "?慧豪園第", + "address": "新界元朗區天恩路2號第一期?慧豪園" + }, + { + "building": "天祐苑", + "address": "新界元朗區天祐苑" + }, + { + "building": "新北江商場", + "address": "新界元朗區天湖路1號新北江商場" + }, + { + "building": "天愛苑愛潮閣", + "address": "新界元朗區天瑞路天愛苑愛潮閣" + }, + { + "building": "慧景軒", + "address": "新界元朗區天葵路33號" + }, + { + "building": "天盛苑", + "address": "新界元朗區天靖街3號天盛苑" + }, + { + "building": "天頌苑", + "address": "新界元朗區天榮路3號天頌苑" + }, + { + "building": "日新大廈", + "address": "新界元朗區日新街5號日新大廈" + }, + { + "building": "小珠樓", + "address": "新界元朗區水車館里11號小珠樓" + }, + { + "building": "連勝大廈", + "address": "新界元朗區水車館街1-13號連勝大廈" + }, + { + "building": "萬金中心", + "address": "新界元朗區水車館街28號萬金中心" + }, + { + "building": "東輝閣", + "address": "新界元朗區水車館街2號東輝閣" + }, + { + "building": "信發大廈", + "address": "新界元朗區水車館街38-60號信發大廈" + }, + { + "building": "錦榮大廈", + "address": "新界元朗區水車館街66號錦榮大廈" + }, + { + "building": "榮興閣", + "address": "新界元朗區水車館街90號榮興閣" + }, + { + "building": "翠巒", + "address": "新界元朗區牛潭尾新潭路93號翠巒" + }, + { + "building": "葡萄園", + "address": "新界元朗區牛潭尾道NO.23號" + }, + { + "building": "加州豪園", + "address": "新界元朗區卡米爾徑加州豪園10號" + }, + { + "building": "幸福樓二期", + "address": "新界元朗區民合徑8號幸福樓二期" + }, + { + "building": "富安花園", + "address": "新界元朗區田廈村鄉新生村100號富" + }, + { + "building": "富怡花園", + "address": "新界元朗區田廈路" + }, + { + "building": "斌勝花園", + "address": "新界元朗區田廈路, 廈村廈村市1A號斌勝花園" + }, + { + "building": "斌勝花園", + "address": "新界元朗區田廈路廈村鄉新生村" + }, + { + "building": "富茵雅苑", + "address": "新界元朗區石埔村178B號富茵雅苑" + }, + { + "building": "好景洋樓", + "address": "新界元朗區合益路10-28號好景洋樓" + }, + { + "building": "寶豐大廈", + "address": "新界元朗區合益路1-7號寶豐大廈" + }, + { + "building": "慶年大樓", + "address": "新界元朗區合益路30-36號慶年大樓" + }, + { + "building": "運興樓", + "address": "新界元朗區合益路38-40號運興樓" + }, + { + "building": "合益大廈", + "address": "新界元朗區合益路42-48號合益大廈" + }, + { + "building": "美滿樓", + "address": "新界元朗區合益路50-68號美滿樓" + }, + { + "building": "順興大樓", + "address": "新界元朗區合益路55-63B號順興大樓" + }, + { + "building": "金堂樓", + "address": "新界元朗區合益路65-71號金堂樓" + }, + { + "building": "毓秀樓", + "address": "新界元朗區合益路68號毓秀樓" + }, + { + "building": "新景樓", + "address": "新界元朗區合益路70-76號新景樓" + }, + { + "building": "興發樓", + "address": "新界元朗區合益路73-75號興發樓" + }, + { + "building": "年發樓", + "address": "新界元朗區合益路77-79號年發樓" + }, + { + "building": "富景樓", + "address": "新界元朗區合益路78-84號富景樓" + }, + { + "building": "建益樓", + "address": "新界元朗區合益路86-90號建益樓" + }, + { + "building": "紀業樓", + "address": "新界元朗區合益路9-15號紀業樓" + }, + { + "building": "凱旋樓", + "address": "新界元朗區合益路92-100號凱旋樓" + }, + { + "building": "文德樓", + "address": "新界元朗區合益路93-97號文德樓" + }, + { + "building": "鉅發大廈", + "address": "新界元朗區合財街11-23號鉅發大廈" + }, + { + "building": "鉅發大廈第", + "address": "新界元朗區合財街19號鉅發大廈第1座" + }, + { + "building": "合益商業中心", + "address": "新界元朗區合財街33號合益商業中心" + }, + { + "building": "順好樓", + "address": "新界元朗區合財街36-44號順好樓" + }, + { + "building": "金華樓", + "address": "新界元朗區同樂街10-16號金華樓" + }, + { + "building": "安定樓", + "address": "新界元朗區同樂街24-28號安定樓" + }, + { + "building": "鴻福樓", + "address": "新界元朗區同樂街25-29號鴻福樓" + }, + { + "building": "金寶樓", + "address": "新界元朗區同樂街2-8號金寶樓" + }, + { + "building": "安樂樓", + "address": "新界元朗區同樂街31-35號安樂樓" + }, + { + "building": "好悅洋樓", + "address": "新界元朗區安良里5號好悅洋樓" + }, + { + "building": "寶益樓", + "address": "新界元朗區安良里7號寶益樓 (A-D座)" + }, + { + "building": "安康樓", + "address": "新界元朗區安康路7-19號安康樓" + }, + { + "building": "世宙", + "address": "新界元朗區安寧路38號世宙" + }, + { + "building": "裕豐洋樓", + "address": "新界元朗區安寧路59號裕豐洋樓" + }, + { + "building": "福達及姚達之工業大廈", + "address": "新界元朗區安樂路13-33號福達及姚達之工業大廈" + }, + { + "building": "鄧維新堂大廈", + "address": "新界元朗區安興街20-22號鄧維新堂大廈" + }, + { + "building": "好彩洋樓", + "address": "新界元朗區安興街42-58號好彩洋樓" + }, + { + "building": "永泰樓", + "address": "新界元朗區安興街6-10號永泰樓" + }, + { + "building": "怡康大廈", + "address": "新界元朗區安駿里2號怡康大廈" + }, + { + "building": "碧豪苑", + "address": "新界元朗區米埔青山公路80號新田碧豪苑" + }, + { + "building": "恆暉大廈", + "address": "新界元朗區西堤街2號恆暉大廈" + }, + { + "building": "好順泰大廈", + "address": "新界元朗區西菁街10號好順泰大廈" + }, + { + "building": "益輝大廈", + "address": "新界元朗區西菁街20號益輝大廈" + }, + { + "building": "富達廣場", + "address": "新界元朗區西菁街23號富達廣場" + }, + { + "building": "興旺樓", + "address": "新界元朗區西菁街2號興旺樓" + }, + { + "building": "富盛大廈", + "address": "新界元朗區西菁街9號富盛大廈" + }, + { + "building": "民康大廈", + "address": "新界元朗區西裕街17號民康大廈" + }, + { + "building": "好發洋樓", + "address": "新界元朗區西裕街18號好發洋樓" + }, + { + "building": "金福閣", + "address": "新界元朗區西裕街5-11號金福閣" + }, + { + "building": "宏發大廈", + "address": "新界元朗區宏發徑8號宏發大廈" + }, + { + "building": "元朗科技中心", + "address": "新界元朗區宏業西街11號元朗科技中心" + }, + { + "building": "元朗貿易中心", + "address": "新界元朗區宏業西街33號元朗貿易中心" + }, + { + "building": "宏業工貿中心", + "address": "新界元朗區宏業東街18號宏業工貿中心" + }, + { + "building": "嘉?中心II", + "address": "新界元朗區宏業東街21-35號嘉?中心II" + }, + { + "building": "麗新元朗中心", + "address": "新界元朗區宏業東街21-35號麗新元朗中心" + }, + { + "building": "安勁工業大廈", + "address": "新界元朗區宏業東街22號安勁工業大廈" + }, + { + "building": "錦城工業大廈", + "address": "新界元朗區宏業東街2號錦城工業大廈" + }, + { + "building": "晉美工業大廈", + "address": "新界元朗區宏業東街8號晉美工業大廈" + }, + { + "building": "裕豐工業大廈", + "address": "新界元朗區宏業南街22號裕豐工業大廈" + }, + { + "building": "健康工房(集團)中心", + "address": "新界元朗區宏業南街8-12號健康工房(集團)中心" + }, + { + "building": "振興新村", + "address": "新界元朗區宏達路LOT NO 3875 IN DD120號" + }, + { + "building": "啟欣軒二期", + "address": "新界元朗區沙井路19號 啟欣軒二期" + }, + { + "building": "康德閣", + "address": "新界元朗區牡丹街23號康德閣" + }, + { + "building": "傑文樓", + "address": "新界元朗區谷亭街1號" + }, + { + "building": "元通樓", + "address": "新界元朗區昌盛徑18號元通樓" + }, + { + "building": "好勝大廈", + "address": "新界元朗區河北第十二街錦?花園11號" + }, + { + "building": "明雲閣", + "address": "新界元朗區金祥坊2號明雲閣" + }, + { + "building": "金輝大廈", + "address": "新界元朗區金輝徑1-31號金輝大廈" + }, + { + "building": "好盛洋樓", + "address": "新界元朗區金輝徑28號好盛洋樓" + }, + { + "building": "金安閣", + "address": "新界元朗區金輝徑2號金安閣" + }, + { + "building": "金禧樓", + "address": "新界元朗區金輝徑33-41號金禧樓" + }, + { + "building": "宏豐大廈", + "address": "新界元朗區阜財街2-20A號宏豐大廈" + }, + { + "building": "光華中心", + "address": "新界元朗區阜財街34-46號光華中心" + }, + { + "building": "富財樓", + "address": "新界元朗區阜財街45-49號富財樓" + }, + { + "building": "怡安樓", + "address": "新界元朗區阜財街51-53號怡安樓" + }, + { + "building": "開心廣場", + "address": "新界元朗區青山公路 - 元朗段115-127號開心廣場" + }, + { + "building": "元朗?豐大廈", + "address": "新界元朗區青山公路 - 元朗段150-160號元朗?豐大廈" + }, + { + "building": "年旺樓", + "address": "新界元朗區青山公路 - 元朗段161號年旺樓" + }, + { + "building": "元美大廈", + "address": "新界元朗區青山公路 - 元朗段17A-21A號元美大廈" + }, + { + "building": "同福大樓", + "address": "新界元朗區青山公路 - 元朗段186-194號同福大樓" + }, + { + "building": "華昌樓", + "address": "新界元朗區青山公路 - 元朗段206-216號華昌樓" + }, + { + "building": "富興大廈", + "address": "新界元朗區青山公路 - 元朗段224號富興大廈" + }, + { + "building": "勤業樓", + "address": "新界元朗區青山公路 - 元朗段225-237號勤業樓" + }, + { + "building": "福德樓", + "address": "新界元朗區青山公路 - 元朗段238-242號福德樓" + }, + { + "building": "萬昌樓", + "address": "新界元朗區青山公路 - 元朗段239-247號萬昌樓" + }, + { + "building": "鴻業樓", + "address": "新界元朗區青山公路 - 元朗段253-263號鴻業樓" + }, + { + "building": "保安樓", + "address": "新界元朗區青山公路 - 元朗段2-6號保安樓" + }, + { + "building": "金豐大廈", + "address": "新界元朗區青山公路 - 元朗段39號金豐大廈" + }, + { + "building": "誠信商業大廈", + "address": "新界元朗區青山公路 - 元朗段41-47號誠信商業大廈" + }, + { + "building": "金豪大廈", + "address": "新界元朗區青山公路 - 元朗段49-63號金豪大廈" + }, + { + "building": "恒生元朗大廈", + "address": "新界元朗區青山公路 - 元朗段91-93號恒生元朗大廈" + }, + { + "building": "海外信託銀行元朗大廈", + "address": "新界元朗區青山公路 - 元朗段95-97號海外信託銀行元朗大廈" + }, + { + "building": "元朗恒隆銀行大廈", + "address": "新界元朗區青山公路 - 元朗段96號元朗恒隆銀行大廈" + }, + { + "building": "中銀元朗商業中心", + "address": "新界元朗區青山公路元朗段102-108號中銀元朗商業中心" + }, + { + "building": "昌裕大廈", + "address": "新界元朗區青山公路元朗段143-151號昌裕大廈" + }, + { + "building": "澤榮閣", + "address": "新界元朗區青山公路元朗段171-175號澤榮閣" + }, + { + "building": "建成樓", + "address": "新界元朗區青山公路元朗段195-209號建成樓" + }, + { + "building": "元朗大廈", + "address": "新界元朗區青山公路元朗段196-202號元朗大廈" + }, + { + "building": "珍珠樓", + "address": "新界元朗區青山公路元朗段1號珍珠樓" + }, + { + "building": "金源大廈", + "address": "新界元朗區青山公路元朗段22-26號金源大廈" + }, + { + "building": "福興樓", + "address": "新界元朗區青山公路元朗段232B-236號福興樓" + }, + { + "building": "元朗合益有限公司大樓", + "address": "新界元朗區青山公路元朗段25號元朗合益有限公司大樓" + }, + { + "building": "元朗商會", + "address": "新界元朗區青山公路元朗段28號元朗商會" + }, + { + "building": "任安樓", + "address": "新界元朗區青山公路元朗段32-34號任安樓" + }, + { + "building": "豐裕軒", + "address": "新界元朗區青山公路元朗段50號豐裕軒" + }, + { + "building": "新基大廈", + "address": "新界元朗區青山公路元朗段56-60號新基大廈" + }, + { + "building": "榮光大廈", + "address": "新界元朗區青山公路元朗段68-76號榮光大廈" + }, + { + "building": "朗庭園", + "address": "新界元朗區青山公路屏山段139號朗庭園" + }, + { + "building": "德慶樓", + "address": "新界元朗區青山道, 洪水橋德慶樓" + }, + { + "building": "權益大樓", + "address": "新界元朗區俊賢坊18號權益大樓" + }, + { + "building": "恆運樓", + "address": "新界元朗區俊賢坊2號恆運樓" + }, + { + "building": "兆日樓", + "address": "新界元朗區俊賢坊8號兆日樓" + }, + { + "building": "屏山花園10號", + "address": "新界元朗區屏山" + }, + { + "building": "富祐居", + "address": "新界元朗區屏山403號石?村富祐居" + }, + { + "building": "康屏花園", + "address": "新界元朗區屏山青山公路133號康屏花園" + }, + { + "building": "殷榮閣", + "address": "新界元朗區屏山青山公路殷榮閣" + }, + { + "building": "基達花園(第一期)", + "address": "新界元朗區屏山屏唐西街11號基達花園(第一期)" + }, + { + "building": "樂居樓", + "address": "新界元朗區屏山屏廈路2號樂居樓" + }, + { + "building": "翠峰1號屋", + "address": "新界元朗區屏山唐人新村孖峰嶺路23號 翠峰1號屋" + }, + { + "building": "瑋珊園", + "address": "新界元朗區屏山唐人新村孖峰嶺路39號瑋珊園" + }, + { + "building": "樂家居", + "address": "新界元朗區屏山唐人新村屏康里10號樂家居" + }, + { + "building": "德英花園", + "address": "新界元朗區屏山塘坊村126號德英花園" + }, + { + "building": "基達花園(二期)", + "address": "新界元朗區屏山新起村19號基達花園(二期)" + }, + { + "building": "天和豪庭", + "address": "新界元朗區屏山輞井圍241A號" + }, + { + "building": "屏山輞井圍241A號", + "address": "新界元朗區屏山輞井圍241A號 天和豪庭" + }, + { + "building": "良材大樓二期", + "address": "新界元朗區屏昌徑17號二期良材大樓二期" + }, + { + "building": "良材大樓", + "address": "新界元朗區屏昌徑5-17號良材大樓A座" + }, + { + "building": "欣湖花園", + "address": "新界元朗區屏廈路, 廈村鄉141號欣湖花園" + }, + { + "building": "屏會中心", + "address": "新界元朗區屏會街13-17號屏會中心" + }, + { + "building": "幸福樓一期", + "address": "新界元朗區屏會街19號幸福樓一期" + }, + { + "building": "聯發洋樓", + "address": "新界元朗區建業街56-86號聯發洋樓" + }, + { + "building": "仁義大廈", + "address": "新界元朗區建業街88-94號仁義大廈" + }, + { + "building": "建德樓", + "address": "新界元朗區建德街10-16號建德樓" + }, + { + "building": "富安大廈", + "address": "新界元朗區建德街18號富安大廈" + }, + { + "building": "時景花園", + "address": "新界元朗區建德街45號時景花園" + }, + { + "building": "大福大廈", + "address": "新界元朗區建德街57-71號大福大廈" + }, + { + "building": "大福中心", + "address": "新界元朗區建德街9-33號大福中心" + }, + { + "building": "翠珊園", + "address": "新界元朗區洪水橋LOT 4122號翠珊園" + }, + { + "building": "德祥樓", + "address": "新界元朗區洪水橋大街1號德祥樓" + }, + { + "building": "田心居", + "address": "新界元朗區洪水橋大街21號田心居" + }, + { + "building": "金閣豪園", + "address": "新界元朗區洪水橋大街金閣豪園" + }, + { + "building": "雅樂花園", + "address": "新界元朗區洪水橋丹桂村6號雅樂花園" + }, + { + "building": "麗虹花園", + "address": "新界元朗區洪水橋丹桂村路1號麗虹花園" + }, + { + "building": "丹桂苑", + "address": "新界元朗區洪水橋丹桂村路5-7號" + }, + { + "building": "菁雅居", + "address": "新界元朗區洪水橋丹桂村路60號菁雅居" + }, + { + "building": "銀禧花園", + "address": "新界元朗區洪水橋丹桂村路8號銀禧花園" + }, + { + "building": "百福樓", + "address": "新界元朗區洪水橋丹桂村路百福樓" + }, + { + "building": "柏雨花園", + "address": "新界元朗區洪水橋柏雨花園" + }, + { + "building": "雅珊園", + "address": "新界元朗區洪水橋洪堤路DD124 LOT 4269號雅珊園" + }, + { + "building": "瑞豐華庭", + "address": "新界元朗區洪水橋洪堤路瑞豐華庭" + }, + { + "building": "朗峰園", + "address": "新界元朗區洪水橋洪順路9號朗峰園" + }, + { + "building": "多福樓", + "address": "新界元朗區盈福街7號多福樓" + }, + { + "building": "厚德樓", + "address": "新界元朗區紅棉圍3號厚德樓" + }, + { + "building": "順通樓", + "address": "新界元朗區紅棉圍7-13號順通樓" + }, + { + "building": "溱柏", + "address": "新界元朗區香港新界元朗公庵路68號 溱柏" + }, + { + "building": "馬寶花園", + "address": "新界元朗區唐人新村沙井路25號馬寶花園" + }, + { + "building": "康苑", + "address": "新界元朗區唐人新村沙井路28號康苑" + }, + { + "building": "屏康居", + "address": "新界元朗區唐人新村屏康里8號屏康居" + }, + { + "building": "紫珊園", + "address": "新界元朗區唐人新村屏康里DD121 LOT 2023號紫珊園" + }, + { + "building": "溱林", + "address": "新界元朗區唐人新村洪順路18號溱林" + }, + { + "building": "富麗花園", + "address": "新界元朗區唐人新村道路112號富麗花園" + }, + { + "building": "新元朗中心", + "address": "新界元朗區朗日路8號新元朗中心" + }, + { + "building": "榮華工業大廈", + "address": "新界元朗區泰利街18號榮華工業大廈" + }, + { + "building": "成發工業大廈", + "address": "新界元朗區泰利街2號成發工業大廈" + }, + { + "building": "盛發大廈", + "address": "新界元朗區泰祥街14號盛發大廈" + }, + { + "building": "大鴻輝(元朗)商廈", + "address": "新界元朗區泰祥街2-8號大鴻輝(元朗)商廈" + }, + { + "building": "泰豐樓", + "address": "新界元朗區泰豐街13-15號泰豐樓" + }, + { + "building": "遠東樓", + "address": "新界元朗區泰豐街1-5號遠東樓" + }, + { + "building": "益群樓", + "address": "新界元朗區泰豐街16-18號益群樓" + }, + { + "building": "錦華樓", + "address": "新界元朗區泰豐街17-25號錦華樓" + }, + { + "building": "普利樓", + "address": "新界元朗區泰豐街20-24號普利樓" + }, + { + "building": "文裕大廈", + "address": "新界元朗區泰豐街2-14號文裕大廈" + }, + { + "building": "翠華樓", + "address": "新界元朗區泰豐街7-11號翠華樓" + }, + { + "building": "青裕臺", + "address": "新界元朗區馬田村" + }, + { + "building": "麗昌花園", + "address": "新界元朗區馬田村272A-G, 280-309號麗昌花園" + }, + { + "building": "銀田花園", + "address": "新界元朗區馬田村400號銀田花園" + }, + { + "building": "京華閣", + "address": "新界元朗區馬田路14-18號京華閣" + }, + { + "building": "安寧大廈", + "address": "新界元朗區馬田路20-30B號安寧大廈" + }, + { + "building": "怡豐花園", + "address": "新界元朗區馬田路38號" + }, + { + "building": "怡豐花園", + "address": "新界元朗區馬田路38號怡豐花園" + }, + { + "building": "怡豐花園商鋪", + "address": "新界元朗區馬田路38號怡豐花園商鋪" + }, + { + "building": "朗景臺", + "address": "新界元朗區馬田路50號" + }, + { + "building": "朗景臺", + "address": "新界元朗區馬田路50號朗景臺" + }, + { + "building": "御庭居", + "address": "新界元朗區馬田路80號第1座" + }, + { + "building": "華翠豪園", + "address": "新界元朗區馬田路88號華翠豪園" + }, + { + "building": "康寧樓", + "address": "新界元朗區康景街1號康寧樓" + }, + { + "building": "華恩樓", + "address": "新界元朗區康景街23號華恩樓" + }, + { + "building": "利景樓", + "address": "新界元朗區康景街3-19號利景樓" + }, + { + "building": "萬輝工業中心", + "address": "新界元朗區康業街19號萬輝工業中心" + }, + { + "building": "大昌貿易行汽車服務中心有限公司", + "address": "新界元朗區康業街1號大昌貿易行汽車服務中心有限公司" + }, + { + "building": "正興貨倉(元朗)有限公司", + "address": "新界元朗區康業街9號正興貨倉(元朗)有限公司" + }, + { + "building": "永興樓", + "address": "新界元朗區教育路104-126號永興樓" + }, + { + "building": "安樂樓", + "address": "新界元朗區教育路128-130號安樂樓" + }, + { + "building": "文丞樓", + "address": "新界元朗區教育路132-138號文丞樓" + }, + { + "building": "嘉城商場", + "address": "新界元朗區教育路15-19號嘉城商場" + }, + { + "building": "元朗商業中心", + "address": "新界元朗區教育路18-24號元朗商業中心" + }, + { + "building": "英暢大廈", + "address": "新界元朗區教育路21-23號英暢大廈" + }, + { + "building": "新基樓", + "address": "新界元朗區教育路25-29號新基樓" + }, + { + "building": "百宜樓", + "address": "新界元朗區教育路26-34號百宜樓" + }, + { + "building": "南天大廈", + "address": "新界元朗區教育路31-41號南天大廈" + }, + { + "building": "豐興樓", + "address": "新界元朗區教育路36-42號豐興樓" + }, + { + "building": "富好大樓", + "address": "新界元朗區教育路3-7號富好大樓" + }, + { + "building": "快活樓", + "address": "新界元朗區教育路43-49號快活樓" + }, + { + "building": "紫荊樓第一期", + "address": "新界元朗區教育路51-61號紫荊樓第一期" + }, + { + "building": "德榮樓", + "address": "新界元朗區教育路52號德榮樓" + }, + { + "building": "順發大樓", + "address": "新界元朗區教育路54-60號順發大樓" + }, + { + "building": "福照樓", + "address": "新界元朗區教育路63-69號福照樓" + }, + { + "building": "兆豐樓", + "address": "新界元朗區教育路68號兆豐樓" + }, + { + "building": "京都閣", + "address": "新界元朗區教育路71-79號京都閣" + }, + { + "building": "樂成大廈", + "address": "新界元朗區教育路8-16號樂成大廈" + }, + { + "building": "元達樓", + "address": "新界元朗區教育路81-85C號元達樓" + }, + { + "building": "鴻發大樓", + "address": "新界元朗區教育路87-99號鴻發大樓" + }, + { + "building": "康城大樓", + "address": "新界元朗區教育路88-102 號康城大樓" + }, + { + "building": "寶城洋樓", + "address": "新界元朗區教育路88號寶城洋樓" + }, + { + "building": "興發大樓", + "address": "新界元朗區教育路9-13號興發大樓" + }, + { + "building": "流浮山深灣畔", + "address": "新界元朗區深灣路233號流浮山深灣畔" + }, + { + "building": "駿佳廣場", + "address": "新界元朗區喜業街16號駿佳廣場" + }, + { + "building": "富華工業大廈", + "address": "新界元朗區喜業街17號富華工業大廈" + }, + { + "building": "喜業工廠大廈", + "address": "新界元朗區喜業街2號喜業工廠大廈" + }, + { + "building": "長榮工業大廈", + "address": "新界元朗區紫荊西路錦?花園36號" + }, + { + "building": "永發大樓", + "address": "新界元朗區媽廟路12-42號永發大樓" + }, + { + "building": "良材大樓二期", + "address": "新界元朗區媽橫路15-19號良材大樓二期" + }, + { + "building": "福昌樓", + "address": "新界元朗區媽橫路21-43號福昌樓" + }, + { + "building": "福順樓", + "address": "新界元朗區媽橫路45-67號福順樓" + }, + { + "building": "幸福樓四期A 座", + "address": "新界元朗區媽橫路69-75號幸福樓四期A 座" + }, + { + "building": "富來花園B座", + "address": "新界元朗區媽橫路7號富來花園B座" + }, + { + "building": "玉明閣", + "address": "新界元朗區廈村鄉新圍" + }, + { + "building": "泰苑小築", + "address": "新界元朗區新田竹園DD104號泰苑小築" + }, + { + "building": "幸福花園", + "address": "新界元朗區新田幸福花園" + }, + { + "building": "元朗華安苑", + "address": "新界元朗區新田新圍村138號元朗華安苑" + }, + { + "building": "翠逸豪園", + "address": "新界元朗區新田翠逸豪園" + }, + { + "building": "怡安苑", + "address": "新界元朗區新圍村NO. 86號怡安苑" + }, + { + "building": "興發樓", + "address": "新界元朗區裕景坊11-13號興發樓" + }, + { + "building": "金倫大廈", + "address": "新界元朗區裕景坊27-37號金倫大廈" + }, + { + "building": "好旺洋樓", + "address": "新界元朗區裕榮徑11號好旺洋樓" + }, + { + "building": "足彬大廈", + "address": "新界元朗區達輝徑1號足彬大廈" + }, + { + "building": "興隆中心", + "address": "新界元朗區壽富街29號興隆中心" + }, + { + "building": "好利洋樓", + "address": "新界元朗區壽富街33號好利洋樓" + }, + { + "building": "元朗中心", + "address": "新界元朗區壽富街51-59號元朗中心" + }, + { + "building": "好順福大廈", + "address": "新界元朗區壽富街60號好順福大廈" + }, + { + "building": "時益大廈", + "address": "新界元朗區壽富街61-69號時益大廈" + }, + { + "building": "樂富大廈", + "address": "新界元朗區福田徑2-16號樂富大廈" + }, + { + "building": "新裕樓", + "address": "新界元朗區福德街44-54號新裕樓" + }, + { + "building": "精英大廈", + "address": "新界元朗區福德街56號精英大廈" + }, + { + "building": "郝德傑山第二座", + "address": "新界元朗區翠松路加州花園18號" + }, + { + "building": "益發大廈", + "address": "新界元朗區鳳攸北街11-15號益發大廈" + }, + { + "building": "順豐大廈", + "address": "新界元朗區鳳攸北街5-9號順豐大廈" + }, + { + "building": "好順意大廈", + "address": "新界元朗區鳳攸東街9號第1座好順意大廈" + }, + { + "building": "好順景大廈", + "address": "新界元朗區鳳攸南街3號" + }, + { + "building": "好順利大廈", + "address": "新界元朗區鳳攸南街9號好順利大廈" + }, + { + "building": "永富閣", + "address": "新界元朗區鳳攸街北2-6號永富閣" + }, + { + "building": "偉發大廈", + "address": "新界元朗區鳳攸街北5號及?翔5號偉發大廈" + }, + { + "building": "昌威大廈", + "address": "新界元朗區鳳攸街北9A號昌威大廈" + }, + { + "building": "鴻運中心", + "address": "新界元朗區鳳琴街15-21號鴻運中心" + }, + { + "building": "玉龍樓", + "address": "新界元朗區鳳琴街18號玉龍樓" + }, + { + "building": "雍翠豪園", + "address": "新界元朗區鳳琴街1號雍翠豪園" + }, + { + "building": "金龍樓", + "address": "新界元朗區鳳琴街22號金龍樓" + }, + { + "building": "朗晴居", + "address": "新界元朗區鳳翔路100號朗晴居" + }, + { + "building": "交通廣場", + "address": "新界元朗區鳳翔路2-6號交通廣場" + }, + { + "building": "鳳翔大廈", + "address": "新界元朗區鳳翔路33-43號鳳翔大廈" + }, + { + "building": "建輝大廈", + "address": "新界元朗區鳳翔路69號建輝大廈" + }, + { + "building": "冠豐大廈", + "address": "新界元朗區鳳翔路70號冠豐大廈" + }, + { + "building": "譽88", + "address": "新界元朗區鳳翔路88號譽88" + }, + { + "building": "鳳庭苑茵庭閣", + "address": "新界元朗區鳳翔路8號鳳庭苑茵庭閣" + }, + { + "building": "鳳庭苑華庭閣", + "address": "新界元朗區鳳翔路8號鳳庭苑華庭閣" + }, + { + "building": "朗怡居", + "address": "新界元朗區鳳翔路99號朗怡居" + }, + { + "building": "萬豐大廈", + "address": "新界元朗區鳳群街11-15號萬豐大廈" + }, + { + "building": "映御", + "address": "新界元朗區德業街11號" + }, + { + "building": "寶威大廈", + "address": "新界元朗區德業街6-14號寶威大廈" + }, + { + "building": "同盛樓", + "address": "新界元朗區橋樂坊6號同盛樓" + }, + { + "building": "橋頭圍工廠", + "address": "新界元朗區橋頭圍, 屏山橋頭圍工廠" + }, + { + "building": "定福花園A10單位", + "address": "新界元朗區橫洲" + }, + { + "building": "景安園", + "address": "新界元朗區橫洲大井圍131號景安園" + }, + { + "building": "旭日花苑", + "address": "新界元朗區橫洲楊屋村138A號" + }, + { + "building": "楊屋新村", + "address": "新界元朗區橫洲楊屋村楊屋新村" + }, + { + "building": "四季豪園", + "address": "新界元朗區錦上路157號四季豪園" + }, + { + "building": "芊逸居", + "address": "新界元朗區錦上路9號芊逸居" + }, + { + "building": "錦慶花園", + "address": "新界元朗區錦田" + }, + { + "building": "四季雅苑", + "address": "新界元朗區錦田公路233號" + }, + { + "building": "富華閣", + "address": "新界元朗區錦田永隆圍181號富華閣" + }, + { + "building": "翠怡花園", + "address": "新界元朗區錦田吉慶圍" + }, + { + "building": "斌善軒", + "address": "新界元朗區錦田吉慶圍206號斌善軒" + }, + { + "building": "怡翠花園", + "address": "新界元朗區錦田吉慶圍350號" + }, + { + "building": "入建花園第一期", + "address": "新界元朗區錦田長春新村8A-F號入建花園第一期" + }, + { + "building": "泰康花園", + "address": "新界元朗區錦田泰康圍227A號泰康花園" + }, + { + "building": "美景居", + "address": "新界元朗區錦田祠堂村255號美景居" + }, + { + "building": "錦豐臺", + "address": "新界元朗區錦田高埔村111號錦豐臺" + }, + { + "building": "旭日花苑第二期", + "address": "新界元朗區錦田高埔村50號旭日花苑第二期" + }, + { + "building": "嘉碧花園", + "address": "新界元朗區錦田高埔村71-75號嘉碧花園" + }, + { + "building": "吉慶花園N座", + "address": "新界元朗區錦田錦上路" + }, + { + "building": "豪景富居", + "address": "新界元朗區錦田錦上路吉慶圍250號豪景富居" + }, + { + "building": "威王花園", + "address": "新界元朗區錦田錦上路吉慶圍263號威王花園" + }, + { + "building": "元朗錦安花園", + "address": "新界元朗區錦田錦上路祠堂村" + }, + { + "building": "海錦豪園", + "address": "新界元朗區錦繡大道9號9號海錦豪園" + }, + { + "building": "遠景花園", + "address": "新界元朗區錫降圍路111號遠景花園" + }, + { + "building": "崇德樓", + "address": "新界元朗區擊壤路14-18號崇德樓" + }, + { + "building": "順發樓", + "address": "新界元朗區擊壤路17號順發樓" + }, + { + "building": "鴻福樓", + "address": "新界元朗區擊壤路7號鴻福樓" + }, + { + "building": "金寶大廈", + "address": "新界元朗區擊壤路9號金寶大廈" + }, + { + "building": "尚豪庭", + "address": "新界元朗區寶業街18號" + }, + { + "building": "采葉庭10座", + "address": "新界元朗區寶業街采葉庭" + }, + { + "building": "大興花園", + "address": "新界屯門區" + }, + { + "building": "典?豪庭", + "address": "新界屯門區155號桃園圍典?豪庭" + }, + { + "building": "友德工業大廈", + "address": "新界屯門區CPTL53新安街21號友德工業大廈" + }, + { + "building": "屯門中心大廈", + "address": "新界屯門區CPTL57仁政街7-35號屯門中心大廈" + }, + { + "building": "豫豐花園", + "address": "新界屯門區LOT2860福亨村路8號豫豐花園" + }, + { + "building": "鴻文工業大廈", + "address": "新界屯門區TMTL109建發街9號鴻文工業大廈" + }, + { + "building": "仁愛大廈", + "address": "新界屯門區TMTL147井財街11號仁愛大廈" + }, + { + "building": "得利工業中心A座", + "address": "新界屯門區TMTL163青楊街8號得利工業中心A座" + }, + { + "building": "富華大廈", + "address": "新界屯門區TMTL167仁政街26A號富華大廈" + }, + { + "building": "鹿苑", + "address": "新界屯門區TMTL172青柏徑6號鹿苑" + }, + { + "building": "南光樓", + "address": "新界屯門區TMTL173井財街11A號南光樓" + }, + { + "building": "協邦大廈", + "address": "新界屯門區TMTL176井財街21號協邦大廈" + }, + { + "building": "嘉熙大廈", + "address": "新界屯門區TMTL178井財街19號嘉熙大廈" + }, + { + "building": "金銘大廈", + "address": "新界屯門區TMTL180井財街15號金銘大廈" + }, + { + "building": "雅麗花園", + "address": "新界屯門區TMTL183青翠徑11號雅麗花園" + }, + { + "building": "來得利工業大廈", + "address": "新界屯門區TMTL190建發街15號來得利工業大廈" + }, + { + "building": "富麗大廈", + "address": "新界屯門區TMTL199青菱徑6號富麗大廈" + }, + { + "building": "安麗大廈", + "address": "新界屯門區TMTL200青桃徑3號安麗大廈" + }, + { + "building": "好收成工業大廈", + "address": "新界屯門區TMTL232震寰路9號好收成工業大廈" + }, + { + "building": "環宇物流廣場", + "address": "新界屯門區TMTL237新安街3號環宇物流廣場" + }, + { + "building": "冠華鏡廠第六工業大廈", + "address": "新界屯門區TMTL240河田街7-9號冠華鏡廠第六工業大廈" + }, + { + "building": "時代廣場", + "address": "新界屯門區TMTL282屯隆街2號" + }, + { + "building": "玫瑰花園商場", + "address": "新界屯門區TMTL368青山公路133號玫瑰花園商場" + }, + { + "building": "屯門中央廣場", + "address": "新界屯門區TMTL391海榮路22號屯門中央廣場" + }, + { + "building": "海典軒2座", + "address": "新界屯門區TMTL432海珠路2號海典軒2座" + }, + { + "building": "倚嶺南庭", + "address": "新界屯門區TMTL443屯貴路3號倚嶺南庭" + }, + { + "building": "怡成工業大廈", + "address": "新界屯門區TMTL85建發街7號怡成工業大廈" + }, + { + "building": "竹苑", + "address": "新界屯門區TMTL92青山公路87號竹苑" + }, + { + "building": "遠東發展屯門大廈", + "address": "新界屯門區TMTL94青山公路 - 新墟段21-43號遠東發展屯門大廈" + }, + { + "building": "力生大廈", + "address": "新界屯門區力生大廈" + }, + { + "building": "冠峰臺", + "address": "新界屯門區小欖" + }, + { + "building": "浪琴軒", + "address": "新界屯門區小欖村路2號浪琴軒" + }, + { + "building": "錦發大廈", + "address": "新界屯門區井財街9號錦發大廈" + }, + { + "building": "慎成大廈", + "address": "新界屯門區仁政街16號慎成大廈" + }, + { + "building": "麗日閣", + "address": "新界屯門區仁愛堂街1-43號麗日閣" + }, + { + "building": "蘭苑", + "address": "新界屯門區仁愛堂街32號蘭苑" + }, + { + "building": "興泰大廈", + "address": "新界屯門區仁愛堂街45號興泰大廈" + }, + { + "building": "金滿閣", + "address": "新界屯門區仁愛堂街50號金滿閣" + }, + { + "building": "南豐工業城", + "address": "新界屯門區天后路18號南豐工業城" + }, + { + "building": "彩星工業大廈", + "address": "新界屯門區天后路1號" + }, + { + "building": "美滿工業大廈 (冠田工業大廈)", + "address": "新界屯門區天后路3號美滿工業大廈 (冠田工業大廈)" + }, + { + "building": "明利花園", + "address": "新界屯門區屯子圍200號明利花園" + }, + { + "building": "瑞豐花園", + "address": "新界屯門區屯子圍405-410號瑞豐花園" + }, + { + "building": "詠柏苑", + "address": "新界屯門區屯子圍500號詠柏苑" + }, + { + "building": "?茵庭", + "address": "新界屯門區屯安里1號?茵庭" + }, + { + "building": "華都花園", + "address": "新界屯門區屯利街1號華都花園第一座" + }, + { + "building": "利源樓", + "address": "新界屯門區屯門鄉事會路113-115號利源樓" + }, + { + "building": "雅都花園", + "address": "新界屯門區屯門鄉事會路120號雅都花園" + }, + { + "building": "康麗花園", + "address": "新界屯門區屯門鄉事會路129號康麗花園" + }, + { + "building": "冠興樓", + "address": "新界屯門區屯門鄉事會路28-38號冠興樓" + }, + { + "building": "順利樓", + "address": "新界屯門區屯門鄉事會路40-50號順利樓" + }, + { + "building": "明偉大樓", + "address": "新界屯門區屯門鄉事會路4-26號明偉大樓" + }, + { + "building": "萬祥樓", + "address": "新界屯門區屯門鄉事會路52-62號萬祥樓" + }, + { + "building": "泰興大樓", + "address": "新界屯門區屯門鄉事會路64-66號泰興大樓" + }, + { + "building": "瓏門", + "address": "新界屯門區屯門鄉事會路83號" + }, + { + "building": "天生樓", + "address": "新界屯門區屯門鄉事會路88號天生樓" + }, + { + "building": "康利中心", + "address": "新界屯門區屯門鄉事會路94-110號康利中心" + }, + { + "building": "植園", + "address": "新界屯門區屯門新村180號" + }, + { + "building": "屯門市廣場", + "address": "新界屯門區屯盛街" + }, + { + "building": "屯門?麗廣場", + "address": "新界屯門區屯喜路2號屯門?麗廣場" + }, + { + "building": "名賢居", + "address": "新界屯門區屯富路18號名賢居" + }, + { + "building": "聚康山莊", + "address": "新界屯門區屯貴路18號聚康山莊第3座" + }, + { + "building": "錦華花園", + "address": "新界屯門區屯隆街1號錦華花園" + }, + { + "building": "時代廣場", + "address": "新界屯門區屯隆街2號屯門時代廣場" + }, + { + "building": "兆安苑", + "address": "新界屯門區屯興路2號" + }, + { + "building": "怡峰園第2座", + "address": "新界屯門區屯興路9號怡峰園" + }, + { + "building": "新圍苑", + "address": "新界屯門區田景路23號新圍苑" + }, + { + "building": "兆畦苑", + "address": "新界屯門區田景路2號" + }, + { + "building": "兆隆苑", + "address": "新界屯門區田景路33號兆隆苑" + }, + { + "building": "兆邦苑", + "address": "新界屯門區田景路38號兆邦苑" + }, + { + "building": "卓爾居", + "address": "新界屯門區石排頭徑1號卓爾居" + }, + { + "building": "康德花園", + "address": "新界屯門區石排頭路11號康德花園" + }, + { + "building": "翠林花園", + "address": "新界屯門區石排頭路15號翠林花園" + }, + { + "building": "德雅工業中心", + "address": "新界屯門區石排頭路7號德雅工業中心" + }, + { + "building": "兆康苑", + "address": "新界屯門區兆康路2-22號" + }, + { + "building": "兆麟苑", + "address": "新界屯門區兆興里3號" + }, + { + "building": "億利樓B座-I座", + "address": "新界屯門區利發徑2號億利樓B座-I座" + }, + { + "building": "慧景閣", + "address": "新界屯門區育康街8號慧景閣" + }, + { + "building": "兆軒苑逸生閣", + "address": "新界屯門區良運街1號兆軒苑逸生閣" + }, + { + "building": "兆軒苑順生閣", + "address": "新界屯門區良運街1號兆軒苑順生閣" + }, + { + "building": "寶怡花園", + "address": "新界屯門區良德街11號寶怡花園" + }, + { + "building": "海麗花園", + "address": "新界屯門區良德街12號海麗花園" + }, + { + "building": "盈豐園", + "address": "新界屯門區良德街9號盈豐園" + }, + { + "building": "新景樓", + "address": "新界屯門區明藝街16號新景樓" + }, + { + "building": "好景樓", + "address": "新界屯門區明藝街18-24號好景樓" + }, + { + "building": "必興樓", + "address": "新界屯門區明藝街2-4號必興樓" + }, + { + "building": "安全樓", + "address": "新界屯門區明藝街6-14號安全樓" + }, + { + "building": "東亞紗廠工業大廈", + "address": "新界屯門區河田街2號東亞紗廠工業大廈" + }, + { + "building": "維他奶營銷中心", + "address": "新界屯門區河田街6號維他奶營銷中心" + }, + { + "building": "美基樓", + "address": "新界屯門區河傍街124-148號美基樓" + }, + { + "building": "富?豪園", + "address": "新界屯門區泥圍210號富?豪園" + }, + { + "building": "?悅豪庭", + "address": "新界屯門區泥圍500號?悅豪庭" + }, + { + "building": "松苑", + "address": "新界屯門區青山公路 - 青山灣段118A號松苑" + }, + { + "building": "好運洋樓", + "address": "新界屯門區青山公路 - 新墟段97-119號好運洋樓" + }, + { + "building": "碧翠花園", + "address": "新界屯門區青山公路107號碧翠花園" + }, + { + "building": "翠峰小築1座", + "address": "新界屯門區青山公路128號翠峰小築1座" + }, + { + "building": "怡廬第", + "address": "新界屯門區青山公路12號怡廬" + }, + { + "building": "翠濤居", + "address": "新界屯門區青山公路168號翠濤居" + }, + { + "building": "錦興大廈", + "address": "新界屯門區青山公路169-181號錦興大廈" + }, + { + "building": "紫翠花園", + "address": "新界屯門區青山公路180號紫翠花園" + }, + { + "building": "香港黃金海岸二期", + "address": "新界屯門區青山公路1號香港黃金海岸" + }, + { + "building": "彩暉花園", + "address": "新界屯門區青山公路250號彩暉花園" + }, + { + "building": "蒙地卡羅別墅", + "address": "新界屯門區青山公路25號蒙地卡羅別墅" + }, + { + "building": "棕月灣第2座", + "address": "新界屯門區青山公路28號棕月灣第2座" + }, + { + "building": "恒福花園", + "address": "新界屯門區青山公路333號恒福花園" + }, + { + "building": "春和海景花園", + "address": "新界屯門區青山公路33號春和海景花園" + }, + { + "building": "龍成花園", + "address": "新界屯門區青山公路345號龍成花園" + }, + { + "building": "冠峰園", + "address": "新界屯門區青山公路350號冠峰園" + }, + { + "building": "彩華花園", + "address": "新界屯門區青山公路351號彩華花園" + }, + { + "building": "恒順園", + "address": "新界屯門區青山公路362-388號恒順園" + }, + { + "building": "金安大廈", + "address": "新界屯門區青山公路387號金安大廈" + }, + { + "building": "聽濤小築", + "address": "新界屯門區青山公路45號" + }, + { + "building": "海盈花園", + "address": "新界屯門區青山公路91號海盈花園" + }, + { + "building": "幸福樓三期", + "address": "新界屯門區青山公路新墟段45-47,51-55,59-63,67-73號幸福樓三期" + }, + { + "building": "華樂大廈", + "address": "新界屯門區青山坊2號華樂大廈" + }, + { + "building": "屯景別墅", + "address": "新界屯門區青山村" + }, + { + "building": "良樂園", + "address": "新界屯門區青山村139A號良樂園" + }, + { + "building": "曉巒", + "address": "新界屯門區青山村165號曉巒" + }, + { + "building": "青翠苑", + "address": "新界屯門區青山村環山路157號青翠苑" + }, + { + "building": "富盈軒", + "address": "新界屯門區青山村環山路8號富盈軒" + }, + { + "building": "澤豐花園", + "address": "新界屯門區青松觀路33號澤豐花園" + }, + { + "building": "利寶大廈", + "address": "新界屯門區青河坊3號利寶大廈" + }, + { + "building": "文翔大廈", + "address": "新界屯門區青桃徑5號文翔大廈" + }, + { + "building": "榮華花園", + "address": "新界屯門區青泰路18號榮華花園" + }, + { + "building": "翠景花園", + "address": "新界屯門區青泰路20號翠景花園" + }, + { + "building": "國興?", + "address": "新界屯門區青泰路22號國興?" + }, + { + "building": "南海小築", + "address": "新界屯門區青泰路26號南海小築" + }, + { + "building": "富安居", + "address": "新界屯門區青泰路28號富安居" + }, + { + "building": "置樂花園", + "address": "新界屯門區青海圍18號置樂花園" + }, + { + "building": "萬寶大廈", + "address": "新界屯門區青海圍2號萬寶大廈" + }, + { + "building": "屯門花園", + "address": "新界屯門區青海圍6號屯門花園" + }, + { + "building": "屯景大廈", + "address": "新界屯門區青海圍8號屯景大廈" + }, + { + "building": "海慧花園", + "address": "新界屯門區青茵街8號海慧花園" + }, + { + "building": "康景花園", + "address": "新界屯門區青善街48號康景花園" + }, + { + "building": "大興紡織工業大廈", + "address": "新界屯門區青揚街3號大興紡織工業大廈" + }, + { + "building": "金寶大廈", + "address": "新界屯門區青棉徑5號金寶大廈" + }, + { + "building": "好發大廈", + "address": "新界屯門區青棉徑6號好發大廈" + }, + { + "building": "浪濤灣", + "address": "新界屯門區青發街28號浪濤灣" + }, + { + "building": "海澄軒", + "address": "新界屯門區青發街8號海澄軒" + }, + { + "building": "愛琴灣", + "address": "新界屯門區青發街愛琴灣" + }, + { + "building": "東威閣", + "address": "新界屯門區青菱徑3號東威閣" + }, + { + "building": "華利大廈", + "address": "新界屯門區青菱徑9號華利大廈" + }, + { + "building": "鴻昌工業中心(第一期)", + "address": "新界屯門區青楊街12號鴻昌工業中心(第一期)" + }, + { + "building": "世紀城市工業大廈", + "address": "新界屯門區青楊街1號世紀城市工業大廈" + }, + { + "building": "宏昌工業大廈", + "address": "新界屯門區青楊街6號宏昌工業大廈" + }, + { + "building": "海景花園", + "address": "新界屯門區青榕街1號海景花園" + }, + { + "building": "屯門閣", + "address": "新界屯門區青榕街2號屯門閣" + }, + { + "building": "海譽", + "address": "新界屯門區青榕街3號海譽" + }, + { + "building": "雅翠苑", + "address": "新界屯門區青榕街4號雅翠苑" + }, + { + "building": "雅德苑", + "address": "新界屯門區青榕街6號雅德苑" + }, + { + "building": "青榕臺", + "address": "新界屯門區青榕街8號青榕臺" + }, + { + "building": "金邦大廈", + "address": "新界屯門區青翠徑7號金邦大廈" + }, + { + "building": "多寶大廈", + "address": "新界屯門區青翠徑9號多寶大廈" + }, + { + "building": "鴻運花園", + "address": "新界屯門區青磚圍188號鴻運花園" + }, + { + "building": "富澤花園", + "address": "新界屯門區青磚圍300號富澤花園" + }, + { + "building": "龍珠花園B座", + "address": "新界屯門區青龍路" + }, + { + "building": "龍珠島花園", + "address": "新界屯門區青龍路11號龍珠島花園" + }, + { + "building": "龍珠島別墅", + "address": "新界屯門區青龍路9號龍珠島別墅" + }, + { + "building": "青山灣花園", + "address": "新界屯門區青霞里2號青山灣花園" + }, + { + "building": "龍騰花園", + "address": "新界屯門區青霞里7號龍騰花園" + }, + { + "building": "容龍居", + "address": "新界屯門區青霞里9號容龍居" + }, + { + "building": "九巴總修中心", + "address": "新界屯門區建安街1號九巴總修中心" + }, + { + "building": "維他奶總部大樓", + "address": "新界屯門區建旺街1號維他奶總部大樓" + }, + { + "building": "利通工業大廈", + "address": "新界屯門區建旺街4號利通工業大廈" + }, + { + "building": "精棉發展工業大廈", + "address": "新界屯門區建泰街3號精棉發展工業大廈" + }, + { + "building": "恒威工業中心", + "address": "新界屯門區建泰街6號恒威工業中心" + }, + { + "building": "華運工業大廈", + "address": "新界屯門區建發里2號華運工業大廈" + }, + { + "building": "好景工業大廈", + "address": "新界屯門區建發街11號好景工業大廈" + }, + { + "building": "建發工業中心", + "address": "新界屯門區建發街13號建發工業中心" + }, + { + "building": "同德工業大廈", + "address": "新界屯門區建發街17號同德工業大廈" + }, + { + "building": "鳴發工業中心", + "address": "新界屯門區建發街1號鳴發工業中心" + }, + { + "building": "新興工業大廈", + "address": "新界屯門區建發街22號新興工業大廈" + }, + { + "building": "廣建貿易中心", + "address": "新界屯門區建發街5號廣建貿易中心" + }, + { + "building": "開泰工廠大廈", + "address": "新界屯門區建發街開泰工廠大廈" + }, + { + "building": "永發工業大廈", + "address": "新界屯門區建群街3號永發工業大廈" + }, + { + "building": "建榮商業大廈", + "address": "新界屯門區建榮街24-30號建榮商業大廈" + }, + { + "building": "百利中心", + "address": "新界屯門區建榮街25號百利中心" + }, + { + "building": "建榮工業大廈", + "address": "新界屯門區建榮街33號建榮工業大廈" + }, + { + "building": "有成工業大廈", + "address": "新界屯門區建豐街4號有成工業大廈" + }, + { + "building": "嘉柏中心一期", + "address": "新界屯門區建豐街6號嘉柏中心一期" + }, + { + "building": "南浪海灣", + "address": "新界屯門區恒富街23號南浪海灣" + }, + { + "building": "嘉悅半島", + "address": "新界屯門區恒貴街1號嘉悅半島" + }, + { + "building": "屯門物流中心", + "address": "新界屯門區洪祥路3A號屯門物流中心" + }, + { + "building": "田氏中心", + "address": "新界屯門區洪祥路3號田氏中心" + }, + { + "building": "民生物流中心", + "address": "新界屯門區洪祥路NO3,B74號民生物流中心" + }, + { + "building": "盈溢居", + "address": "新界屯門區桃園圍" + }, + { + "building": "康庭居", + "address": "新界屯門區桃園圍康庭居" + }, + { + "building": "豐景園", + "address": "新界屯門區海珠路7號豐景園第一座" + }, + { + "building": "海琴軒", + "address": "新界屯門區海琴軒" + }, + { + "building": "萬能閣", + "address": "新界屯門區海榮路9號萬能閣" + }, + { + "building": "美恒大樓美恆大樓", + "address": "新界屯門區啟民徑15-43號美恒大樓美恆大樓" + }, + { + "building": "興發大廈", + "address": "新界屯門區啟民徑49號興發大廈" + }, + { + "building": "萬成大廈", + "address": "新界屯門區啟發徑1-13號萬成大廈" + }, + { + "building": "愛琴海岸", + "address": "新界屯門區掃管笏管青路2號愛琴海岸" + }, + { + "building": "金蘭閣", + "address": "新界屯門區鹿苑街3號金蘭閣" + }, + { + "building": "18逸品", + "address": "新界屯門區富盛街18號18逸品" + }, + { + "building": "景峰豪庭", + "address": "新界屯門區景峰徑10號景峰豪庭" + }, + { + "building": "景峰花園", + "address": "新界屯門區景峰徑2號景峰花園" + }, + { + "building": "偉景花園", + "address": "新界屯門區景峰徑3號偉景花園" + }, + { + "building": "怡樂花園", + "address": "新界屯門區景峰徑4-8號怡樂花園" + }, + { + "building": "景新臺", + "address": "新界屯門區景新徑2號景新臺" + }, + { + "building": "新華凍房", + "address": "新界屯門區湖山路215-239號新華凍房" + }, + { + "building": "兆山苑", + "address": "新界屯門區湖山路2-26號" + }, + { + "building": "悅湖山莊", + "address": "新界屯門區湖秀街2號悅湖山莊" + }, + { + "building": "啟豐園", + "address": "新界屯門區湖翠路138號啟豐園" + }, + { + "building": "海翠花園", + "address": "新界屯門區湖翠路168-236號海翠花園第一座" + }, + { + "building": "兆禧苑", + "address": "新界屯門區湖翠路201號" + }, + { + "building": "邁亞美海灣", + "address": "新界屯門區湖翠路268號邁亞美海灣" + }, + { + "building": "慧豐園", + "address": "新界屯門區湖翠路280號慧豐園" + }, + { + "building": "美樂花園", + "address": "新界屯門區湖翠路2號美樂花園" + }, + { + "building": "錦暉花園", + "address": "新界屯門區華發街6號錦暉花園" + }, + { + "building": "寶華花園", + "address": "新界屯門區塘亨路" + }, + { + "building": "明煌花園10座", + "address": "新界屯門區塘亨路36號明煌花園" + }, + { + "building": "兆安花園", + "address": "新界屯門區塘亨路41號兆安花園" + }, + { + "building": "吉田大廈", + "address": "新界屯門區新力街2號吉田大廈" + }, + { + "building": "鈞善工廠大廈", + "address": "新界屯門區新合里1號鈞善工廠大廈" + }, + { + "building": "永善工業大廈", + "address": "新界屯門區新合里2號永善工業大廈" + }, + { + "building": "華泰工業大廈", + "address": "新界屯門區新安街11號華泰工業大廈" + }, + { + "building": "天匯工業大廈", + "address": "新界屯門區新安街12號天匯工業大廈" + }, + { + "building": "寶泰工業大廈", + "address": "新界屯門區新安街13號寶泰工業大廈" + }, + { + "building": "成安工業大廈", + "address": "新界屯門區新安街14號成安工業大廈" + }, + { + "building": "山齡工業大廈", + "address": "新界屯門區新安街15號山齡工業大廈" + }, + { + "building": "百勝工業大廈", + "address": "新界屯門區新安街16號百勝工業大廈" + }, + { + "building": "匯恆工業大廈", + "address": "新界屯門區新安街17號匯恆工業大廈" + }, + { + "building": "怡華工業大廈", + "address": "新界屯門區新安街18號怡華工業大廈" + }, + { + "building": "鉅冠工業中心", + "address": "新界屯門區新安街19號鉅冠工業中心" + }, + { + "building": "憶兆工業大廈", + "address": "新界屯門區新安街1號憶兆工業大廈" + }, + { + "building": "富益商業大廈", + "address": "新界屯門區新安街2號富益商業大廈" + }, + { + "building": "維記大廈", + "address": "新界屯門區新安街7號維記大廈" + }, + { + "building": "堅基工業大廈", + "address": "新界屯門區新安街9號堅基工業大廈" + }, + { + "building": "萬寶樓", + "address": "新界屯門區新青街11號萬寶樓" + }, + { + "building": "務本樓", + "address": "新界屯門區新青街1號務本樓" + }, + { + "building": "泰康樓", + "address": "新界屯門區新青街3號泰康樓" + }, + { + "building": "通明工業大廈", + "address": "新界屯門區新益里3號通明工業大廈" + }, + { + "building": "愉翠園", + "address": "新界屯門區新慶村200號愉翠園" + }, + { + "building": "聯昌中心第一期", + "address": "新界屯門區業旺路6-8號聯昌中心第一期" + }, + { + "building": "蟠龍半島", + "address": "新界屯門區瑜翠街2號" + }, + { + "building": "瑜翠園", + "address": "新界屯門區瑜翠街9號瑜翠園" + }, + { + "building": "遠東發展屯門中心大廈", + "address": "新界屯門區達仁坊11號遠東發展屯門中心大廈" + }, + { + "building": "嘉華大廈", + "address": "新界屯門區嘉華大廈" + }, + { + "building": "凱德花園", + "address": "新界屯門區榮發里13-17號凱德花園" + }, + { + "building": "恒豐園恆豐園", + "address": "新界屯門區榮發里1號恒豐園恆豐園" + }, + { + "building": "漣山", + "address": "新界屯門區漣山" + }, + { + "building": "綠怡居", + "address": "新界屯門區福亨村路138號綠怡居" + }, + { + "building": "翠薈", + "address": "新界屯門區福亨村路148號翠薈" + }, + { + "building": "海盛大廈", + "address": "新界屯門區德政圍18號海盛大廈" + }, + { + "building": "年旺樓", + "address": "新界屯門區德政圍2-14號年旺樓" + }, + { + "building": "柏苑", + "address": "新界屯門區德政圍31-43號柏苑" + }, + { + "building": "松苑", + "address": "新界屯門區德政圍3-29號松苑" + }, + { + "building": "桃苑", + "address": "新界屯門區德政圍66號桃苑" + }, + { + "building": "輝固發展中心", + "address": "新界屯門區樂怡街5號輝固發展中心" + }, + { + "building": "芳苑", + "address": "新界屯門區樂翠街21號芳苑" + }, + { + "building": "?濤居", + "address": "新界屯門區樂翠街3號?濤居" + }, + { + "building": "海詩別墅", + "address": "新界屯門區樂翠街5號海詩別墅" + }, + { + "building": "青麗灣別墅", + "address": "新界屯門區樂翠街6-18號青麗灣別墅" + }, + { + "building": "陸氏工業大廈", + "address": "新界屯門區震寰路6號陸氏工業大廈" + }, + { + "building": "龍門居", + "address": "新界屯門區龍門路43號龍門居" + }, + { + "building": "富健花園", + "address": "新界屯門區龍門路45號富健花園" + }, + { + "building": "新屯門中心", + "address": "新界屯門區龍門路55-65號新屯門中心" + }, + { + "building": "龍濤灣畔", + "address": "新界屯門區龍鼓灘D.D.137 LOT 149號龍濤灣畔" + }, + { + "building": "成發山莊", + "address": "新界屯門區龍鼓灘沙埔崗" + }, + { + "building": "海逸雅苑", + "address": "新界屯門區龍鼓灘沙埔崗DRAGON OASIS號海逸雅苑" + }, + { + "building": "麒麟豪苑", + "address": "新界屯門區麒麟圍" + }, + { + "building": "寶塘花園", + "address": "新界屯門區寶塘下80號" + }, + { + "building": "水富有門花園", + "address": "新界北區(上水坑頭路 154號)DD94 LOT 400 S.G號上水富有門花園" + }, + { + "building": "數碼都域", + "address": "新界北區360塘坑360號數碼都域" + }, + { + "building": "碧湖花園", + "address": "新界北區一鳴路15號碧湖花園" + }, + { + "building": "牽晴間", + "address": "新界北區一鳴路23號牽晴間" + }, + { + "building": "景盛苑欣景閣", + "address": "新界北區一鳴路8號景盛苑欣景閣" + }, + { + "building": "奕翠園", + "address": "新界北區天平路33號奕翠園" + }, + { + "building": "安盛苑", + "address": "新界北區天平路50號安盛苑" + }, + { + "building": "秀境臺A 座", + "address": "新界北區孔嶺村103號秀境臺A 座" + }, + { + "building": "百勝山莊", + "address": "新界北區孔嶺村89號百勝山莊207座" + }, + { + "building": "桃苑", + "address": "新界北區古洞路39號桃苑" + }, + { + "building": "歐意花園", + "address": "新界北區古洞路48號歐意花園" + }, + { + "building": "民生閣", + "address": "新界北區民生街 石湖墟1-2號民生閣" + }, + { + "building": "遠東發展沙頭角大廈", + "address": "新界北區石涌凹沙頭角公路200號遠東發展沙頭角大廈" + }, + { + "building": "維也納花園第一座", + "address": "新界北區吉祥街1號維也納花園" + }, + { + "building": "欣翠花園", + "address": "新界北區吉祥街8號欣翠花園" + }, + { + "building": "蔚翠花園", + "address": "新界北區吉祥街9號蔚翠花園" + }, + { + "building": "堅達中心", + "address": "新界北區安全街10-12號堅達中心" + }, + { + "building": "丹沙物流(香港)有限公司", + "address": "新界北區安全街11號丹沙物流(香港)有限公司" + }, + { + "building": "電威工業大廈", + "address": "新界北區安全街13號電威工業大廈" + }, + { + "building": "廣泰中心", + "address": "新界北區安全街13號廣泰中心" + }, + { + "building": "川田集團工貿廣場", + "address": "新界北區安全街15號川田集團工貿廣場" + }, + { + "building": "安樂村環球集團中心", + "address": "新界北區安全街24號安樂村環球集團中心" + }, + { + "building": "福和集圉大廈", + "address": "新界北區安全街26號福和集圉大廈" + }, + { + "building": "美時貨倉", + "address": "新界北區安全街28號美時貨倉" + }, + { + "building": "賀利氏科技中心", + "address": "新界北區安全街30號賀利氏科技中心" + }, + { + "building": "豐盈工貿中心", + "address": "新界北區安全街33號豐盈工貿中心" + }, + { + "building": "安泰工貿中心", + "address": "新界北區安全街4號安泰工貿中心" + }, + { + "building": "基利士工業大廈", + "address": "新界北區安全街6號基利士工業大廈" + }, + { + "building": "振裕", + "address": "新界北區安全街7A號振裕" + }, + { + "building": "樂頤工業大廈", + "address": "新界北區安居街15號樂頤工業大廈" + }, + { + "building": "安興工貿中心", + "address": "新界北區安居街18號安興工貿中心" + }, + { + "building": "成法園", + "address": "新界北區安居街1號成法園" + }, + { + "building": "粉嶺工貿大廈", + "address": "新界北區安居街21號粉嶺工貿大廈" + }, + { + "building": "互通發展中心", + "address": "新界北區安居街31號互通發展中心" + }, + { + "building": "得利中心", + "address": "新界北區安居街33號得利中心" + }, + { + "building": "鵬程絲花製造廠", + "address": "新界北區安居街6號鵬程絲花製造廠" + }, + { + "building": "安樂村廣新行貨倉", + "address": "新界北區安福街17-19號安樂村廣新行貨倉" + }, + { + "building": "其士貨倉大廈", + "address": "新界北區安福街3號其士貨倉大廈" + }, + { + "building": "偉易達(粉嶺)工業中心", + "address": "新界北區安福街5號偉易達(粉嶺)工業中心" + }, + { + "building": "燕京大廈", + "address": "新界北區安樂門街11號燕京大廈" + }, + { + "building": "羅門哈斯電子材料亞洲科技中心", + "address": "新界北區安樂門街15號羅門哈斯電子材料亞洲科技中心" + }, + { + "building": "基力工業大廈", + "address": "新界北區安樂門街17號基力工業大廈" + }, + { + "building": "朱鈞記工貿大廈", + "address": "新界北區安樂門街1號朱鈞記工貿大廈" + }, + { + "building": "安樂村豐貿廣場", + "address": "新界北區安樂門街21號安樂村豐貿廣場" + }, + { + "building": "福成商業大廈", + "address": "新界北區安樂門街28號福成商業大廈" + }, + { + "building": "安達工貿中心", + "address": "新界北區安樂門街31-33號安達工貿中心" + }, + { + "building": "勉勵龍中心", + "address": "新界北區安樂門街35-37號勉勵龍中心" + }, + { + "building": "嘉利貨倉 (粉嶺I)", + "address": "新界北區安樂門街39號嘉利貨倉 (粉嶺I)" + }, + { + "building": "縱橫二千貨倉大廈", + "address": "新界北區安樂門街5號縱橫二千貨倉大廈" + }, + { + "building": "捷和", + "address": "新界北區安樂門街6號捷和" + }, + { + "building": "嘉盛苑", + "address": "新界北區百和路33號嘉盛苑" + }, + { + "building": "禎祥園", + "address": "新界北區百和路55號禎祥園" + }, + { + "building": "花都廣場", + "address": "新界北區百和路88號花都廣場" + }, + { + "building": "花都廣場花都購物商場", + "address": "新界北區百和路88號花都廣場花都購物商場" + }, + { + "building": "尼斯花園", + "address": "新界北區坑頭" + }, + { + "building": "全麗花園", + "address": "新界北區坑頭6A號全麗花園第一座" + }, + { + "building": "嘉芙花園", + "address": "新界北區坑頭村號嘉芙花園" + }, + { + "building": "新然樓", + "address": "新界北區沙頭角公路190號新然樓" + }, + { + "building": "泰昌樓", + "address": "新界北區和泰街55-69號泰昌樓" + }, + { + "building": "寶康樓", + "address": "新界北區和隆街10-16號寶康樓" + }, + { + "building": "寶華樓", + "address": "新界北區和隆街18-24號寶華樓" + }, + { + "building": "寶榮樓", + "address": "新界北區和隆街26-32號寶榮樓" + }, + { + "building": "寶寧樓", + "address": "新界北區和隆街2-8號寶寧樓" + }, + { + "building": "寶昌樓", + "address": "新界北區和隆街34-40C號寶昌樓" + }, + { + "building": "海聯廣場", + "address": "新界北區和睦路9號海聯廣場第一座" + }, + { + "building": "帝庭軒", + "address": "新界北區和滿街8號帝庭軒" + }, + { + "building": "御庭軒", + "address": "新界北區和滿街9號御庭軒" + }, + { + "building": "明謙居", + "address": "新界北區和興路36號明謙居" + }, + { + "building": "匯豐銀行大廈", + "address": "新界北區和豐街14-16號匯豐銀行大廈" + }, + { + "building": "南慶堂", + "address": "新界北區和豐街15號南慶堂" + }, + { + "building": "中銀聯和墟大樓", + "address": "新界北區和豐街17-19號中銀聯和墟大樓" + }, + { + "building": "廣安樓", + "address": "新界北區和豐街1號廣安樓" + }, + { + "building": "龍景樓", + "address": "新界北區和豐街21-25B號龍景樓" + }, + { + "building": "新景樓(和豐街)", + "address": "新界北區和豐街37-43,43A號新景樓(和豐街)" + }, + { + "building": "聯和中心", + "address": "新界北區和豐街46-48號聯和中心" + }, + { + "building": "樂豐樓", + "address": "新界北區和豐街49-51號樂豐樓" + }, + { + "building": "合豐樓", + "address": "新界北區和豐街50-52號合豐樓" + }, + { + "building": "建豐樓", + "address": "新界北區和豐街54-60號建豐樓" + }, + { + "building": "粉嶺和豐唐樓", + "address": "新界北區和豐街57-59號粉嶺和豐唐樓" + }, + { + "building": "和豐閣", + "address": "新界北區和豐街8號和豐閣" + }, + { + "building": "福和集團大廈", + "address": "新界北區居適街3號福和集團大廈" + }, + { + "building": "振興臺", + "address": "新界北區近青山公路 - 古洞D.D.92 LOT 743號振興臺" + }, + { + "building": "安國新?", + "address": "新界北區近馬會道" + }, + { + "building": "嘉麗山莊", + "address": "新界北區金嘉街8號" + }, + { + "building": "駿山莊", + "address": "新界北區金錢村100號" + }, + { + "building": "御林皇府", + "address": "新界北區金錢南路8號" + }, + { + "building": "翡翠園", + "address": "新界北區金錢徑1號" + }, + { + "building": "高爾夫景園", + "address": "新界北區青山公路 - 古洞段83號高爾夫景園" + }, + { + "building": "上水威尼斯花園", + "address": "新界北區保榮路1號上水威尼斯花園" + }, + { + "building": "肇軒臺", + "address": "新界北區軍地村210號肇軒臺" + }, + { + "building": "邁爾豪園", + "address": "新界北區粉錦公路328號邁爾豪園" + }, + { + "building": "樂苑大廈", + "address": "新界北區粉錦公路338號歌賦嶺 冬青徑" + }, + { + "building": "粉嶺名都", + "address": "新界北區粉嶺車站路18號" + }, + { + "building": "粉嶺花園", + "address": "新界北區粉嶺樓路11號粉嶺花園" + }, + { + "building": "石湖樓", + "address": "新界北區馬會道26-34號石湖樓" + }, + { + "building": "星光新?", + "address": "新界北區馬會道280號星光新?" + }, + { + "building": "寶禧樓", + "address": "新界北區馬會道36-40號寶禧樓" + }, + { + "building": "發誠樓", + "address": "新界北區馬會道42-50號發誠樓" + }, + { + "building": "馬會道70號", + "address": "新界北區馬會道70號" + }, + { + "building": "同樂樓", + "address": "新界北區馬會道76-86號同樂樓" + }, + { + "building": "皇府山", + "address": "新界北區馬適路38號皇府山" + }, + { + "building": "綠悠軒1座", + "address": "新界北區馬適路3號綠悠軒" + }, + { + "building": "晉科中心", + "address": "新界北區彩發街2號晉科中心" + }, + { + "building": "旭埔苑", + "address": "新界北區彩園路10號" + }, + { + "building": "彩蒲苑", + "address": "新界北區彩園路2號" + }, + { + "building": "深港中心", + "address": "新界北區彩園路9號深港中心" + }, + { + "building": "顯?", + "address": "新界北區清曉路16號顯?" + }, + { + "building": "御皇庭2 座", + "address": "新界北區清曉路18號御皇庭2 座" + }, + { + "building": "御景峰", + "address": "新界北區清曉路8號御景峰" + }, + { + "building": "富興樓", + "address": "新界北區符興街31-39號富興樓" + }, + { + "building": "上水中心第二座", + "address": "新界北區智昌路3號上水中心" + }, + { + "building": "上水中心購物中心商場", + "address": "新界北區智昌路3號上水中心購物中心商場" + }, + { + "building": "順欣花園", + "address": "新界北區智昌路8號順欣花園" + }, + { + "building": "上水名都", + "address": "新界北區智昌路9號" + }, + { + "building": "欣盛苑", + "address": "新界北區華明路15號欣盛苑" + }, + { + "building": "昌盛苑", + "address": "新界北區華明路20號昌盛苑" + }, + { + "building": "錦棠樓", + "address": "新界北區順平街6號錦棠樓" + }, + { + "building": "錦興樓", + "address": "新界北區順隆街11-15號錦興樓" + }, + { + "building": "信安樓", + "address": "新界北區順隆街17號信安樓" + }, + { + "building": "順隆花園", + "address": "新界北區順隆街33號順隆花園" + }, + { + "building": "順隆街3號", + "address": "新界北區順隆街3號" + }, + { + "building": "錦和樓", + "address": "新界北區順隆街5-9號錦和樓" + }, + { + "building": "頌榮居", + "address": "新界北區塘坑村" + }, + { + "building": "金湖居", + "address": "新界北區新成路21號金湖居" + }, + { + "building": "海禧華庭1 座", + "address": "新界北區新成路88號海禧華庭1 座" + }, + { + "building": "新財樓", + "address": "新界北區新財街23-33號新財樓" + }, + { + "building": "大江樓", + "address": "新界北區新財街7-9號大江樓" + }, + { + "building": "大昌貿易行汽車服務中心有限公司鴨?洲服務中心", + "address": "新界北區新康街9-11號" + }, + { + "building": "松苑", + "address": "新界北區新圍村143號松苑" + }, + { + "building": "松苑", + "address": "新界北區新圍村158-159號" + }, + { + "building": "新勤樓", + "address": "新界北區新勤街24-34號新勤樓" + }, + { + "building": "新寶大廈", + "address": "新界北區新勤街27-35號新寶大廈" + }, + { + "building": "慎忠樓", + "address": "新界北區新勤街2號慎忠樓" + }, + { + "building": "劍橋廣場", + "address": "新界北區新運路188號劍橋廣場" + }, + { + "building": "粉嶺中心A座", + "address": "新界北區新運路33號粉嶺中心A座" + }, + { + "building": "好望樓", + "address": "新界北區新樂街42-46號好望樓" + }, + { + "building": "明珠華軒", + "address": "新界北區新樂街9號明珠華軒" + }, + { + "building": "金誠樓", + "address": "新界北區新豐路106-110號金誠樓" + }, + { + "building": "新豐樓", + "address": "新界北區新豐路113-119號新豐樓" + }, + { + "building": "龍霞樓", + "address": "新界北區新豐路122-132號龍霞樓" + }, + { + "building": "滿華大廈", + "address": "新界北區新豐路134-140號滿華大廈" + }, + { + "building": "成發樓", + "address": "新界北區新豐路2號成發樓" + }, + { + "building": "新豐大廈", + "address": "新界北區新豐路33號新豐大廈" + }, + { + "building": "德豐樓", + "address": "新界北區新豐路36-38號德豐樓" + }, + { + "building": "慶雲樓", + "address": "新界北區新豐路40-44號慶雲樓" + }, + { + "building": "順利樓", + "address": "新界北區新豐路4-10號順利樓" + }, + { + "building": "慶豐樓", + "address": "新界北區新豐路44A-48號慶豐樓" + }, + { + "building": "紹計樓", + "address": "新界北區新豐路55-59號紹計樓" + }, + { + "building": "中銀上水商業中心", + "address": "新界北區新豐路61-63號中銀上水商業中心" + }, + { + "building": "祐龍樓", + "address": "新界北區新豐路74-76號祐龍樓" + }, + { + "building": "全和大廈", + "address": "新界北區新豐路82-84號全和大廈" + }, + { + "building": "品聯樓", + "address": "新界北區新豐路94號品聯樓" + }, + { + "building": "張知行大廈", + "address": "新界北區新豐路98-104號張知行大廈" + }, + { + "building": "雍盛苑雍華閣", + "address": "新界北區暉明路8號雍盛苑雍華閣" + }, + { + "building": "大信國際集團大廈", + "address": "新界北區業和街10號大信國際集團大廈" + }, + { + "building": "和豐工業大廈", + "address": "新界北區業和街2號和豐工業大廈" + }, + { + "building": "豐隆廣場", + "address": "新界北區業和街9號豐隆廣場" + }, + { + "building": "中大印刷集團大廈", + "address": "新界北區業暢街11號中大印刷集團大廈" + }, + { + "building": "葉氏化工大廈", + "address": "新界北區業暢街13號葉氏化工大廈" + }, + { + "building": "安恒工貿中心", + "address": "新界北區業暢街18號安恒工貿中心" + }, + { + "building": "安樂村新中國洗衣集團大廈", + "address": "新界北區業暢街6號安樂村新中國洗衣集團大廈" + }, + { + "building": "有成行大廈", + "address": "新界北區業暢街7號有成行大廈" + }, + { + "building": "恒興工業大廈", + "address": "新界北區業暢街8號恒興工業大廈" + }, + { + "building": "安樂村多利工業大廈", + "address": "新界北區業豐街13號安樂村多利工業大廈" + }, + { + "building": "寶利中心", + "address": "新界北區業豐街15號寶利中心" + }, + { + "building": "利亨中心", + "address": "新界北區業豐街20號利亨中心" + }, + { + "building": "豪峰嶺", + "address": "新界北區置榮徑2號豪峰嶺" + }, + { + "building": "廣福苑", + "address": "新界北區置福圍16號廣福苑" + }, + { + "building": "富康園", + "address": "新界北區置福圍17號富康園" + }, + { + "building": "山翠苑", + "address": "新界北區置福圍18號山翠苑" + }, + { + "building": "百福花園", + "address": "新界北區置福圍6號百福花園" + }, + { + "building": "翠彤苑", + "address": "新界北區裕泰路3號翠彤苑" + }, + { + "building": "萬豪居", + "address": "新界北區裕泰路9號萬豪居" + }, + { + "building": "瑞柏園", + "address": "新界北區嘉兆里3號瑞柏園" + }, + { + "building": "嘉兆軒第二座", + "address": "新界北區嘉兆里8號嘉兆軒第二座" + }, + { + "building": "上水貿易廣場", + "address": "新界北區嘉富坊3號上水貿易廣場" + }, + { + "building": "旭日國際中心", + "address": "新界北區嘉富坊9號旭日國際中心" + }, + { + "building": "華慧園", + "address": "新界北區維翰路2號華慧園" + }, + { + "building": "海裕苑", + "address": "新界北區維翰路6號海裕苑" + }, + { + "building": "翠麗花園", + "address": "新界北區鳳南路9號翠麗花園" + }, + { + "building": "鳳崗花園", + "address": "新界北區鳳崗DD 95 LOT 2137號鳳崗花園AB座" + }, + { + "building": "豐隆廣埸", + "address": "新界北區樂業路" + }, + { + "building": "開達工業中心", + "address": "新界北區樂業路17-19號開達工業中心" + }, + { + "building": "龍昌大廈", + "address": "新界北區樂業路1號龍昌大廈" + }, + { + "building": "電訊盈科", + "address": "新界北區樂業路21號電訊盈科" + }, + { + "building": "安?中心", + "address": "新界北區樂業路25號安?中心" + }, + { + "building": "豐樂工貿中心", + "address": "新界北區樂業路8號豐樂工貿中心" + }, + { + "building": "中?貿易中心", + "address": "新界北區樂業路9號中匯貿易中心" + }, + { + "building": "龍豐花園", + "address": "新界北區龍琛路33號龍豐花園" + }, + { + "building": "上水廣場 (商場)", + "address": "新界北區龍琛路39號上水廣場 (商場)" + }, + { + "building": "上水廣場 (辦公大樓)", + "address": "新界北區龍琛路39號上水廣場 (辦公大樓)" + }, + { + "building": "新都廣場", + "address": "新界北區龍運路8號新都廣場" + }, + { + "building": "寶安樓", + "address": "新界北區聯安街17號寶安樓" + }, + { + "building": "美輪大樓", + "address": "新界北區聯安街29-43號美輪大樓" + }, + { + "building": "富貴樓", + "address": "新界北區聯和道1-11號富貴樓" + }, + { + "building": "嘉宏中心", + "address": "新界北區聯和道15-23號嘉宏中心" + }, + { + "building": "濱苑", + "address": "新界北區聯和道75號濱苑" + }, + { + "building": "豐景樓", + "address": "新界北區聯昌街1-7號豐景樓" + }, + { + "building": "聯昌大樓", + "address": "新界北區聯昌街20-44B號聯昌大樓" + }, + { + "building": "錦福大廈", + "address": "新界北區聯昌街2A號錦福大廈" + }, + { + "building": "思健園", + "address": "新界北區聯昌街2號思健園" + }, + { + "building": "好景樓", + "address": "新界北區聯昌街6-12號好景樓" + }, + { + "building": "昌華樓", + "address": "新界北區聯昌街9-15號昌華樓" + }, + { + "building": "榮福中心", + "address": "新界北區聯捷街1號榮福中心" + }, + { + "building": "榮輝中心", + "address": "新界北區聯捷街2-10號榮輝中心" + }, + { + "building": "新華銀行大廈", + "address": "新界北區聯盛街10-16號新華銀行大廈" + }, + { + "building": "友興樓", + "address": "新界北區聯盛街2-4號友興樓" + }, + { + "building": "金來樓", + "address": "新界北區聯盛街6-8號金來樓" + }, + { + "building": "聯旺樓", + "address": "新界北區聯發街18-38B號聯旺樓" + }, + { + "building": "粉嶺海外大廈", + "address": "新界北區聯興街11-15號粉嶺海外大廈" + }, + { + "building": "第一電業大廈", + "address": "新界北區寶運路21號第一電業大廈" + }, + { + "building": "美景新?第", + "address": "新界北區靈山村靈山路55號美景新?第" + }, + { + "building": "天晉", + "address": "新界西貢區" + }, + { + "building": "定邦花園", + "address": "新界西貢區" + }, + { + "building": "金碧小築", + "address": "新界西貢區" + }, + { + "building": "裕明苑", + "address": "新界西貢區" + }, + { + "building": "嘉園", + "address": "新界西貢區" + }, + { + "building": "灣景", + "address": "新界西貢區D230 LOT 209坑口永隆路灣景" + }, + { + "building": "嘉穎別墅", + "address": "新界西貢區DD 223 LOT 224打鼓嶺新村嘉穎別墅" + }, + { + "building": "白沙灣花園", + "address": "新界西貢區DD212 LOT 364輋徑篤路17-18號白沙灣花園A1座" + }, + { + "building": "吉祥樓", + "address": "新界西貢區DD215 LOT 642西貢大街41-42號吉祥樓" + }, + { + "building": "錦華樓", + "address": "新界西貢區DD215 LOT 938親民街18-32號錦華樓" + }, + { + "building": "金寶閣", + "address": "新界西貢區DD215 LOT 939海傍廣場2號金寶閣" + }, + { + "building": "兆日大樓", + "address": "新界西貢區DD215 LOT 941西貢海傍廣場1號" + }, + { + "building": "經華樓", + "address": "新界西貢區DD215 LOT 942普通道11號經華樓" + }, + { + "building": "紫蘭花園", + "address": "新界西貢區DD216 LOT 796竹洋路90號紫蘭花園" + }, + { + "building": "大環村", + "address": "新界西貢區DD216 LOT 825大環村15A座" + }, + { + "building": "寶石小築", + "address": "新界西貢區DD217 LOT 1128西貢公路寶石小築" + }, + { + "building": "德惠苑", + "address": "新界西貢區DD221 LOT1742甲邊朗德惠苑" + }, + { + "building": "TAOLOO VILLAS", + "address": "新界西貢區DD224 LOT 329 清水灣道848號" + }, + { + "building": "清雅苑", + "address": "新界西貢區DD224 LOT 343清水灣道831號1座清雅苑" + }, + { + "building": "灣景台", + "address": "新界西貢區DD224 LOT 363銀星徑灣景台" + }, + { + "building": "瓊園1座", + "address": "新界西貢區DD224 LOT 369清水灣道850號" + }, + { + "building": "華富花園", + "address": "新界西貢區DD224 LOT 376銀巒路7號華富花園" + }, + { + "building": "俐富苑A座", + "address": "新界西貢區DD229 LOT 204清水灣道681號俐富苑A座" + }, + { + "building": "玉蓮別墅", + "address": "新界西貢區DD229 LOT 206清水灣道玉蓮別墅" + }, + { + "building": "RIFFEL BERG", + "address": "新界西貢區DD229 LOT 207清水灣道RIFFEL BERG" + }, + { + "building": "石崖", + "address": "新界西貢區DD229 LOT 208清水灣道720號石崖" + }, + { + "building": "灣景小築", + "address": "新界西貢區DD229 LOT 231亞公灣道" + }, + { + "building": "海景別墅", + "address": "新界西貢區DD238 LOT 524坑口永隆路28號海景別墅" + }, + { + "building": "銀林閣", + "address": "新界西貢區DD238 LOT 585坑口永隆路銀林閣1座" + }, + { + "building": "金苑", + "address": "新界西貢區DD253 LOT 1200清水灣道389號金苑" + }, + { + "building": "萬宜山莊", + "address": "新界西貢區大網仔路14 A號萬宜山莊" + }, + { + "building": "好景山莊", + "address": "新界西貢區山寮" + }, + { + "building": "樂濤居", + "address": "新界西貢區山寮竹洋路100號樂濤居" + }, + { + "building": "環翠居", + "address": "新界西貢區仁義路1號環翠居1座" + }, + { + "building": "領峰", + "address": "新界西貢區日出康城康城路1號領峰第七座" + }, + { + "building": "悅濤軒", + "address": "新界西貢區牛寮51號悅濤軒" + }, + { + "building": "清水灣山莊10座", + "address": "新界西貢區白石窩新村路8號清水灣山莊10座" + }, + { + "building": "匡湖居", + "address": "新界西貢區白沙灣西貢公路380號" + }, + { + "building": "敦成大廈", + "address": "新界西貢區白沙灣西貢公路380號匡湖居第28座" + }, + { + "building": "嘉翠苑", + "address": "新界西貢區早禾路11號嘉翠苑" + }, + { + "building": "早禾居", + "address": "新界西貢區早禾路18號早禾居" + }, + { + "building": "翠蕙園", + "address": "新界西貢區竹角路10號翠蕙園" + }, + { + "building": "康曦花園", + "address": "新界西貢區竹角路9號第一座康曦花園" + }, + { + "building": "?寧頓花園?寧頓花園", + "address": "新界西貢區竹洋路6A號?寧頓花園" + }, + { + "building": "西沙小築 (七六零地段)第35座", + "address": "新界西貢區竹洋路西沙小築" + }, + { + "building": "Savannah", + "address": "新界西貢區至善街 3號Savannah" + }, + { + "building": "嘉悅", + "address": "新界西貢區至善街 9號嘉悅" + }, + { + "building": "立德臺", + "address": "新界西貢區西貢公路" + }, + { + "building": "嘉林別墅", + "address": "新界西貢區西貢公路1號第一座嘉林別墅" + }, + { + "building": "?麗灣別墅", + "address": "新界西貢區西貢公路?麗灣別墅" + }, + { + "building": "溱喬", + "address": "新界西貢區西貢公路溱喬" + }, + { + "building": "碧浪小築", + "address": "新界西貢區坑口永隆路" + }, + { + "building": "碧浪別墅", + "address": "新界西貢區坑口永隆路22號碧浪別墅" + }, + { + "building": "慧灡別墅 (慧蘭花園)", + "address": "新界西貢區坑口永隆路23號慧灡別墅 (慧蘭花園)" + }, + { + "building": "詠濤", + "address": "新界西貢區坑口永隆路32號" + }, + { + "building": "海濤別墅", + "address": "新界西貢區坑口永隆路36號A 座海濤別墅" + }, + { + "building": "浪濤苑(浪濤別墅)浪濤苑A屋", + "address": "新界西貢區坑口永隆路浪濤苑(浪濤別墅)" + }, + { + "building": "海嵐居", + "address": "新界西貢區坑口永隆路海嵐居" + }, + { + "building": "雅景別墅", + "address": "新界西貢區坑口道雅景別墅" + }, + { + "building": "浩明苑", + "address": "新界西貢區佳景路9號浩明苑" + }, + { + "building": "曲溪小築", + "address": "新界西貢區阿公灣亞公灣道曲溪小築" + }, + { + "building": "文儀新?", + "address": "新界西貢區阿公灣清水灣道687號" + }, + { + "building": "景湖居", + "address": "新界西貢區南圍470號景湖居" + }, + { + "building": "御采河堤第1座", + "address": "新界西貢區南圍500號御采河堤第1座" + }, + { + "building": "南苑別墅", + "address": "新界西貢區南圍南苑別墅" + }, + { + "building": "南圍古堡C座", + "address": "新界西貢區南圍南圍古堡C座" + }, + { + "building": "慧園", + "address": "新界西貢區南圍路1號慧園" + }, + { + "building": "御花園第1座", + "address": "新界西貢區南邊圍路7號御花園第1座" + }, + { + "building": "顯明苑", + "address": "新界西貢區昭信路6號顯明苑" + }, + { + "building": "柏濤灣", + "address": "新界西貢區柏濤徑88 -188號柏濤灣" + }, + { + "building": "金豪花園", + "address": "新界西貢區界咸村金豪花園" + }, + { + "building": "穎翠小築", + "address": "新界西貢區相思灣" + }, + { + "building": "海濱別墅", + "address": "新界西貢區相思灣路250號海濱別墅" + }, + { + "building": "HILLSIDE GARDENS HOUSE", + "address": "新界西貢區相思灣路69號" + }, + { + "building": "碧雲苑", + "address": "新界西貢區相思灣碧雲苑2號" + }, + { + "building": "樂苑", + "address": "新界西貢區茅莆" + }, + { + "building": "東港城", + "address": "新界西貢區重華路8號東港城" + }, + { + "building": "翠麗園", + "address": "新界西貢區飛雲道3號翠麗園" + }, + { + "building": "飛鵝花園", + "address": "新界西貢區飛雲道6號飛鵝花園" + }, + { + "building": "飛鵝山莊", + "address": "新界西貢區飛鵝山道18號飛鵝山莊" + }, + { + "building": "溫莎堡", + "address": "新界西貢區飛鵝山道7號溫莎堡" + }, + { + "building": "青雲閣", + "address": "新界西貢區飛鵝山道青雲閣" + }, + { + "building": "海巒苑", + "address": "新界西貢區飛鵝山道海巒苑" + }, + { + "building": "唐明苑", + "address": "新界西貢區唐明街15號" + }, + { + "building": "富康花園", + "address": "新界西貢區唐明街1號富康花園" + }, + { + "building": "寶明苑寶松閣", + "address": "新界西貢區唐明街8號寶明苑寶松閣" + }, + { + "building": "寶盈花園第一座", + "address": "新界西貢區唐俊街11號" + }, + { + "building": "The Parkside", + "address": "新界西貢區唐俊街18號The Parkside" + }, + { + "building": "海翩匯", + "address": "新界西貢區唐俊街21號海翩匯" + }, + { + "building": "海天晉", + "address": "新界西貢區唐俊街28號海天晉" + }, + { + "building": "君傲灣", + "address": "新界西貢區唐俊街9號第一座君傲灣" + }, + { + "building": "將軍澳廣場", + "address": "新界西貢區唐德街1號將軍澳廣場" + }, + { + "building": "將軍澳中心", + "address": "新界西貢區唐德街9號第6座將軍澳中心" + }, + { + "building": "帝景灣", + "address": "新界西貢區唐賢街23號帝景灣" + }, + { + "building": "藍塘傲", + "address": "新界西貢區唐賢街29號藍塘傲" + }, + { + "building": "Capri", + "address": "新界西貢區唐賢街33號Capri" + }, + { + "building": "摘星臺", + "address": "新界西貢區馬游塘村摘星臺" + }, + { + "building": "蔚藍灣畔", + "address": "新界西貢區培成路15號第1座蔚藍灣畔" + }, + { + "building": "海悅豪園", + "address": "新界西貢區培成路18號第一座海悅豪園" + }, + { + "building": "南豐廣場商場", + "address": "新界西貢區培成路8號南豐廣場商場" + }, + { + "building": "南豐廣場", + "address": "新界西貢區培成路8號第一座南豐廣場" + }, + { + "building": "慧安園第1座", + "address": "新界西貢區將軍澳毓雅里9號" + }, + { + "building": "安寧花園", + "address": "新界西貢區常寧路10號" + }, + { + "building": "首都 (日出康城第一期)", + "address": "新界西貢區康城路1號首都 (日出康城第一期)" + }, + { + "building": "緻藍天", + "address": "新界西貢區康城路緻藍天" + }, + { + "building": "西貢濤苑", + "address": "新界西貢區康健路288號西貢濤苑" + }, + { + "building": "泰湖閣", + "address": "新界西貢區康健路泰湖閣" + }, + { + "building": "彩明苑", + "address": "新界西貢區彩明街" + }, + { + "building": "秀麗苑第10座", + "address": "新界西貢區清水灣道" + }, + { + "building": "勝景別墅", + "address": "新界西貢區清水灣道" + }, + { + "building": "歡泰花園第一座", + "address": "新界西貢區清水灣道" + }, + { + "building": "雲臺A座", + "address": "新界西貢區清水灣道385號雲臺" + }, + { + "building": "玫瑰小築", + "address": "新界西貢區清水灣道684號玫瑰小築" + }, + { + "building": "銀灣花園", + "address": "新界西貢區清水灣道685號第E座銀灣花園" + }, + { + "building": "惟馨小築", + "address": "新界西貢區清水灣道688號惟罄小築" + }, + { + "building": "翠巒小築第", + "address": "新界西貢區清水灣道7咪半翠巒小築" + }, + { + "building": "松園 (松舍)", + "address": "新界西貢區清水灣道9咪半" + }, + { + "building": "松濤苑", + "address": "新界西貢區清水灣道松濤苑" + }, + { + "building": "偉景別墅第1座", + "address": "新界西貢區清水灣道偉景別墅第1座" + }, + { + "building": "其安花園", + "address": "新界西貢區莫遮輋村其安花園" + }, + { + "building": "西貢翠景臺", + "address": "新界西貢區鹿尾村118A號西貢翠景臺" + }, + { + "building": "翠景臺", + "address": "新界西貢區鹿尾村118A號第1座" + }, + { + "building": "陶樂苑", + "address": "新界西貢區嵐霞路陶樂苑" + }, + { + "building": "雅閣苑C座", + "address": "新界西貢區普通道1A號雅閣苑C座" + }, + { + "building": "城中?", + "address": "新界西貢區景嶺路8號城中?" + }, + { + "building": "都會?", + "address": "新界西貢區景嶺路8號都會?" + }, + { + "building": "太平村", + "address": "新界西貢區菠蘿輋路太平村" + }, + { + "building": "茵怡花園", + "address": "新界西貢區貿泰路8號茵怡花園" + }, + { + "building": "都會豪庭(新都城第3期)都會豪庭", + "address": "新界西貢區貿業路8號都會豪庭(新都城第3期)都會豪庭" + }, + { + "building": "柳濤軒", + "address": "新界西貢區黃竹山新村柳濤軒" + }, + { + "building": "高勝樓", + "address": "新界西貢區敬民街9號高勝樓" + }, + { + "building": "旭輝臺", + "address": "新界西貢區毓雅里1號第一座旭輝臺" + }, + { + "building": "富麗花園第1座", + "address": "新界西貢區毓雅里7號富麗花園第1座" + }, + { + "building": "輋頂村", + "address": "新界西貢區輋頂村" + }, + { + "building": "新都城", + "address": "新界西貢區運亨路1號新都城" + }, + { + "building": "疊翠軒?翠軒", + "address": "新界西貢區運亨路8號疊翠軒?翠軒第1座" + }, + { + "building": "清水灣大廈", + "address": "新界西貢區嘉澍路8號" + }, + { + "building": "曉嵐閣 (西貢)", + "address": "新界西貢區嘉樹路11號曉嵐閣 (西貢)" + }, + { + "building": "甘樹小築A座", + "address": "新界西貢區嘉樹路6號" + }, + { + "building": "滿湖花園", + "address": "新界西貢區碧沙路10號滿湖花園" + }, + { + "building": "百高別墅", + "address": "新界西貢區碧沙路11號百高別墅" + }, + { + "building": "翠浪小築", + "address": "新界西貢區碧沙路18號翠浪小築" + }, + { + "building": "海逸居", + "address": "新界西貢區碧沙路19號海逸居" + }, + { + "building": "碧沙別墅", + "address": "新界西貢區碧沙路1號碧沙別墅" + }, + { + "building": "君爵堡", + "address": "新界西貢區碧沙路23號君爵堡" + }, + { + "building": "泰湖別墅", + "address": "新界西貢區碧沙路3號泰湖別墅" + }, + { + "building": "怡景花園", + "address": "新界西貢區碧沙路7號怡景花園" + }, + { + "building": "碧沙花園", + "address": "新界西貢區碧沙路9號碧沙花園" + }, + { + "building": "翠海花園", + "address": "新界西貢區碧翠路" + }, + { + "building": "金璧花園", + "address": "新界西貢區碧翠路1號金璧花園" + }, + { + "building": "碧翠苑", + "address": "新界西貢區碧翠路29號碧翠苑" + }, + { + "building": "寶珊苑10座", + "address": "新界西貢區碧翠路30號10座" + }, + { + "building": "綠怡花園", + "address": "新界西貢區碧翠路31號綠怡花園" + }, + { + "building": "麗沙灣別墅", + "address": "新界西貢區碧翠路38號" + }, + { + "building": "西貢苑", + "address": "新界西貢區福民路22-40號" + }, + { + "building": "西貢大廈", + "address": "新界西貢區福民路42-56號" + }, + { + "building": "高富樓", + "address": "新界西貢區福民路58-72號高富樓" + }, + { + "building": "西貢御庭園", + "address": "新界西貢區窩美150號窩美西貢御庭園" + }, + { + "building": "景明苑", + "address": "新界西貢區翠林路2號" + }, + { + "building": "翠塘花園", + "address": "新界西貢區翠塘路1號" + }, + { + "building": "富嘉堡", + "address": "新界西貢區銀岬路11號富嘉堡" + }, + { + "building": "海濱別墅", + "address": "新界西貢區銀岬路15號海濱別墅" + }, + { + "building": "夏威夷花園", + "address": "新界西貢區銀岬路18號夏威夷花園" + }, + { + "building": "海灣別墅", + "address": "新界西貢區銀岬路25號第一座海灣別墅" + }, + { + "building": "金碧苑", + "address": "新界西貢區銀岬路26-28號金碧苑" + }, + { + "building": "金湖別墅", + "address": "新界西貢區銀岬路29號金湖別墅" + }, + { + "building": "愛琴居", + "address": "新界西貢區銀岬路5號愛琴居" + }, + { + "building": "銀輝別墅", + "address": "新界西貢區銀岬路6號銀輝別墅" + }, + { + "building": "銀線閣", + "address": "新界西貢區銀星徑" + }, + { + "building": "湖景別墅", + "address": "新界西貢區銀星徑2號湖景別墅" + }, + { + "building": "銀星苑A座", + "address": "新界西貢區銀星徑4號A座銀星苑A座" + }, + { + "building": "碧沙苑", + "address": "新界西貢區銀星徑5號碧沙苑" + }, + { + "building": "銀泉臺A座", + "address": "新界西貢區銀泉徑2號銀泉臺A座" + }, + { + "building": "SILVER CREST", + "address": "新界西貢區銀泉徑7號SILVER CREST" + }, + { + "building": "海天灣", + "address": "新界西貢區銀泉徑8號海天灣" + }, + { + "building": "銀線灣別墅", + "address": "新界西貢區銀線灣道11號" + }, + { + "building": "銀海山莊", + "address": "新界西貢區銀線灣道5號銀海山莊" + }, + { + "building": "聲濤別墅", + "address": "新界西貢區銀線灣道9號聲濤別墅" + }, + { + "building": "碧湖別墅", + "address": "新界西貢區銀線灣碧沙路8號碧湖別墅" + }, + { + "building": "翠湖別墅", + "address": "新界西貢區銀線灣銀岬路9號翠湖別墅" + }, + { + "building": "新寶城第", + "address": "新界西貢區銀澳路1號新寶城第" + }, + { + "building": "煜明苑", + "address": "新界西貢區銀澳路2號" + }, + { + "building": "和明苑", + "address": "新界西貢區銀澳路8號" + }, + { + "building": "BOUGAINVILEA GARDENS", + "address": "新界西貢區銀巒路12號" + }, + { + "building": "龍湖別墅第", + "address": "新界西貢區銀巒路18號龍湖別墅" + }, + { + "building": "銀巒別墅", + "address": "新界西貢區銀巒路9號第1座銀巒別墅" + }, + { + "building": "彩濤別墅", + "address": "新界西貢區銀巒路彩濤別墅" + }, + { + "building": "山翠園", + "address": "新界西貢區慶徑石山翠園11B號" + }, + { + "building": "品蘭園", + "address": "新界西貢區慶徑石品蘭園" + }, + { + "building": "清水灣半島", + "address": "新界西貢區蓬萊路8號清水灣半島" + }, + { + "building": "維景灣畔", + "address": "新界西貢區澳景路88號第十二座維景灣畔" + }, + { + "building": "西貢花園", + "address": "新界西貢區親民街16號西貢花園" + }, + { + "building": "松濤軒", + "address": "新界西貢區龍尾村路松濤軒" + }, + { + "building": "美亞集團中心", + "address": "新界西貢區駿才街 28號美亞集團中心" + }, + { + "building": "仁興工業大廈", + "address": "新界西貢區駿才街33號仁興工業大廈" + }, + { + "building": "金門科技園", + "address": "新界西貢區駿宏街21號金門科技園" + }, + { + "building": "星島新聞集團大廈", + "address": "新界西貢區駿昌街7號星島新聞集團大廈" + }, + { + "building": "日立電梯將軍澳中心", + "address": "新界西貢區駿盈街3 號日立電梯將軍澳中心" + }, + { + "building": "艾利丹尼森", + "address": "新界西貢區駿盈街7號艾利丹尼森" + }, + { + "building": "壹蘋果", + "address": "新界西貢區駿盈街8號壹蘋果" + }, + { + "building": "棕林苑 (棕林別墅)", + "address": "新界西貢區檳榔灣坑口永隆路" + }, + { + "building": "永隆苑", + "address": "新界西貢區檳榔灣坑口永隆路12號" + }, + { + "building": "VILLA PANOVA", + "address": "新界西貢區檳榔灣坑口永隆路30號VILLA PANOVA" + }, + { + "building": "銀灣別墅", + "address": "新界西貢區寶石徑1號A座銀灣別墅" + }, + { + "building": "廣明苑廣昌閣", + "address": "新界西貢區寶康路108號廣明苑廣昌閣" + }, + { + "building": "廣明苑廣盈閣", + "address": "新界西貢區寶康路108號廣明苑廣盈閣" + }, + { + "building": "廣明苑廣隆閣", + "address": "新界西貢區寶康路108號廣明苑廣隆閣" + }, + { + "building": "廣明苑廣新閣", + "address": "新界西貢區寶康路108號廣明苑廣新閣" + }, + { + "building": "廣明苑廣瑞閣", + "address": "新界西貢區寶康路108號廣明苑廣瑞閣" + }, + { + "building": "廣明苑廣寧閣", + "address": "新界西貢區寶康路108號廣明苑廣寧閣" + }, + { + "building": "廣明苑廣賢閣", + "address": "新界西貢區寶康路108號廣明苑廣賢閣" + }, + { + "building": "怡心園", + "address": "新界西貢區寶康路88號第一座怡心園" + }, + { + "building": "欣明苑欣竹閣", + "address": "新界西貢區寶琳北路100號欣明苑欣竹閣" + }, + { + "building": "康盛花園", + "address": "新界西貢區寶琳北路1號" + }, + { + "building": "英明苑", + "address": "新界西貢區寶琳北路20號英明苑" + }, + { + "building": "頌明苑", + "address": "新界西貢區寶順路1號頌明苑" + }, + { + "building": "富寧花園", + "address": "新界西貢區寶寧路25號富寧花園" + }, + { + "building": "江庫花園", + "address": "新界西貢區蠔涌" + }, + { + "building": "鹿峰花園", + "address": "新界西貢區蠔涌鹿尾村路100號鹿峰花園" + }, + { + "building": "帝湖居", + "address": "新界西貢區蠔涌新村帝湖居" + }, + { + "building": "柏濤軒", + "address": "新界西貢區蠔涌路柏濤軒" + }, + { + "building": "龍景別墅", + "address": "新界西貢區躉場上路龍景別墅" + }, + { + "building": "沙田第一城", + "address": "新界沙田區" + }, + { + "building": "花園城", + "address": "新界沙田區" + }, + { + "building": "富嘉花園", + "address": "新界沙田區" + }, + { + "building": "寶?苑", + "address": "新界沙田區" + }, + { + "building": "寶翠小築", + "address": "新界沙田區" + }, + { + "building": "九肚山峰", + "address": "新界沙田區 麗坪路" + }, + { + "building": "玖瓏山", + "address": "新界沙田區 麗坪路33號" + }, + { + "building": "皇御居", + "address": "新界沙田區STTL499崗背街5號皇御居" + }, + { + "building": "伯樂居", + "address": "新界沙田區九肚山路1-7號伯樂居" + }, + { + "building": "蔚林居", + "address": "新界沙田區九肚山路1E號蔚林居" + }, + { + "building": "美景花園", + "address": "新界沙田區下徑口" + }, + { + "building": "桂園", + "address": "新界沙田區大埔公路, 沙田嶺段8006號桂園" + }, + { + "building": "沙田花園", + "address": "新界沙田區大埔道8003號沙田花園" + }, + { + "building": "愉城苑", + "address": "新界沙田區大涌橋路12號愉城苑" + }, + { + "building": "河畔花園", + "address": "新界沙田區大涌橋路20-30號河畔花園" + }, + { + "building": "富豪花園", + "address": "新界沙田區大涌橋路52號" + }, + { + "building": "金山樓", + "address": "新界沙田區大圍道" + }, + { + "building": "大圍天寶樓", + "address": "新界沙田區大圍道100號大圍天寶樓" + }, + { + "building": "恩安樓", + "address": "新界沙田區大圍道20-22號恩安樓" + }, + { + "building": "富昌樓", + "address": "新界沙田區大圍道24-26號富昌樓" + }, + { + "building": "CHUNG PAK LAU", + "address": "新界沙田區大圍道28-30號CHUNG PAK LAU" + }, + { + "building": "松柏樓", + "address": "新界沙田區大圍道28-30號松柏樓" + }, + { + "building": "聯發樓", + "address": "新界沙田區大圍道32-40號聯發樓" + }, + { + "building": "耀寶大廈", + "address": "新界沙田區大圍道37-47號耀寶大廈" + }, + { + "building": "嘉寶樓", + "address": "新界沙田區大圍道42-44號嘉寶樓" + }, + { + "building": "頤萱樓", + "address": "新界沙田區大圍道50-52號頤萱樓" + }, + { + "building": "麗明樓", + "address": "新界沙田區大圍道54-58號麗明樓" + }, + { + "building": "華美樓", + "address": "新界沙田區大圍道66-72號華美樓" + }, + { + "building": "樹德樓", + "address": "新界沙田區大圍道74-76號樹德樓" + }, + { + "building": "廣林苑茂林閣", + "address": "新界沙田區小瀝源路62號廣林苑茂林閣" + }, + { + "building": "廣林苑興林閣", + "address": "新界沙田區小瀝源路64號廣林苑興林閣" + }, + { + "building": "廣林苑馥林閣", + "address": "新界沙田區小瀝源路66號廣林苑馥林閣" + }, + { + "building": "帝堡城", + "address": "新界沙田區小瀝源路69號帝堡城" + }, + { + "building": "康林苑", + "address": "新界沙田區小瀝源路74號康林苑" + }, + { + "building": "?山工業大廈", + "address": "新界沙田區山尾街15-17號?山工業大廈" + }, + { + "building": "沙田商業中心", + "address": "新界沙田區山尾街18-24號沙田商業中心" + }, + { + "building": "宇宙工業中心", + "address": "新界沙田區山尾街19-25號宇宙工業中心" + }, + { + "building": "華樂工業中心", + "address": "新界沙田區山尾街31-41號華樂工業中心" + }, + { + "building": "環球工業中心", + "address": "新界沙田區山尾街43-47號環球工業中心" + }, + { + "building": "穗輝工業大廈", + "address": "新界沙田區山尾街5-13號穗輝工業大廈" + }, + { + "building": "文禮閣", + "address": "新界沙田區文禮路" + }, + { + "building": "愉翠苑", + "address": "新界沙田區牛皮沙街6號愉翠苑" + }, + { + "building": "雲疊花園", + "address": "新界沙田區田心街20-30號雲疊花園" + }, + { + "building": "華威工業大廈", + "address": "新界沙田區禾香街1-7號華威工業大廈" + }, + { + "building": "力堅工業大廈", + "address": "新界沙田區禾香街9-15號力堅工業大廈" + }, + { + "building": "海輝工業中心", + "address": "新界沙田區禾盛街10-16號海輝工業中心" + }, + { + "building": "沙田聯邦中心", + "address": "新界沙田區禾寮坑路18-28號沙田聯邦中心" + }, + { + "building": "沙田工業大廈", + "address": "新界沙田區禾穗街22-28號沙田工業大廈" + }, + { + "building": "華順廣場", + "address": "新界沙田區安心街11號華順廣場" + }, + { + "building": "?貿中心", + "address": "新界沙田區安心街19號?貿中心" + }, + { + "building": "永得利大廈(NO.3)", + "address": "新界沙田區安心街22號永得利大廈(NO.3)" + }, + { + "building": "新貿中心B 座", + "address": "新界沙田區安平街6號新貿中心B 座" + }, + { + "building": "偉達中心", + "address": "新界沙田區安平街8號偉達中心" + }, + { + "building": "碧濤花園", + "address": "新界沙田區安景街" + }, + { + "building": "翠湖花園", + "address": "新界沙田區安景街" + }, + { + "building": "濱景花園", + "address": "新界沙田區安景街1-3號濱景花園" + }, + { + "building": "永得利中心", + "address": "新界沙田區安睦街28號永得利中心" + }, + { + "building": "企業中心", + "address": "新界沙田區安麗街11號企業中心" + }, + { + "building": "新都廣場", + "address": "新界沙田區安耀街2號新都廣場" + }, + { + "building": "匯達大廈", + "address": "新界沙田區安耀街3號匯達大廈" + }, + { + "building": "順景工業大廈", + "address": "新界沙田區成全路1-7號順景工業大廈" + }, + { + "building": "樓上集團中心", + "address": "新界沙田區成運路13-15號樓上集團中心" + }, + { + "building": "安豪工業大廈", + "address": "新界沙田區成運路17-19號安豪工業大廈" + }, + { + "building": "交通城大廈", + "address": "新界沙田區成運路1-7號交通城大廈" + }, + { + "building": "群力工業大廈", + "address": "新界沙田區成運路21-23號群力工業大廈" + }, + { + "building": "成全工業大廈", + "address": "新界沙田區成運路25-27號成全工業大廈" + }, + { + "building": "橙色空間", + "address": "新界沙田區成運路2-8號橙色空間" + }, + { + "building": "生力工業大廈", + "address": "新界沙田區成運路9-11號生力工業大廈" + }, + { + "building": "曉翠山莊", + "address": "新界沙田區百樂徑18號曉翠山莊" + }, + { + "building": "銀湖‧天鋒", + "address": "新界沙田區西沙路599號銀湖‧天鋒" + }, + { + "building": "雅典居", + "address": "新界沙田區西沙路600號雅典居" + }, + { + "building": "海?花園", + "address": "新界沙田區西沙路608號海?花園" + }, + { + "building": "海濤居", + "address": "新界沙田區西沙路628號海濤居" + }, + { + "building": "錦豐苑", + "address": "新界沙田區西沙路638號" + }, + { + "building": "沙田村南道泰安樓", + "address": "新界沙田區村南道49號沙田村南道泰安樓" + }, + { + "building": "金昌樓", + "address": "新界沙田區村南道57-59號金昌樓" + }, + { + "building": "大圍永富樓", + "address": "新界沙田區村南道65-69號大圍永富樓" + }, + { + "building": "沙田滿華樓", + "address": "新界沙田區村南道71-75號沙田滿華樓" + }, + { + "building": "村南道麗星樓", + "address": "新界沙田區村南道77-81號村南道麗星樓" + }, + { + "building": "嵐岸", + "address": "新界沙田區沃泰街1號嵐岸" + }, + { + "building": "曉?灣畔", + "address": "新界沙田區沃泰街8號曉?灣畔" + }, + { + "building": "偉華中心", + "address": "新界沙田區沙田正街11-17號偉華中心" + }, + { + "building": "蔚景園", + "address": "新界沙田區沙田正街1號蔚景園" + }, + { + "building": "沙田廣場", + "address": "新界沙田區沙田正街21-27號" + }, + { + "building": "希爾頓中心A", + "address": "新界沙田區沙田正街3-9號希爾頓中心" + }, + { + "building": "希爾頓中心(商場)", + "address": "新界沙田區沙田正街3-9號希爾頓中心(商場)" + }, + { + "building": "連城廣場", + "address": "新界沙田區沙田車站圍1號連城廣場" + }, + { + "building": "勵城花園", + "address": "新界沙田區沙田圍路1-7號勵城花園" + }, + { + "building": "田園閣", + "address": "新界沙田區沙田圍路9-11號" + }, + { + "building": "樂景樓", + "address": "新界沙田區沙田嶺路" + }, + { + "building": "御林峰2座", + "address": "新界沙田區沙田嶺路11號御林峰2座" + }, + { + "building": "及時居", + "address": "新界沙田區沙田嶺路29-31號及時居" + }, + { + "building": "金泰別墅", + "address": "新界沙田區沙田嶺路33號金泰別墅" + }, + { + "building": "福來別墅", + "address": "新界沙田區沙田嶺路39-41號福來別墅" + }, + { + "building": "沙田百樂別墅", + "address": "新界沙田區沙田嶺路3A號沙田百樂別墅" + }, + { + "building": "樂山別墅", + "address": "新界沙田區沙田嶺路5-9號樂山別墅" + }, + { + "building": "戈林", + "address": "新界沙田區沙田嶺路8號" + }, + { + "building": "翠嶺山莊", + "address": "新界沙田區沙田嶺道1-3號翠嶺山莊" + }, + { + "building": "翠擁華庭第七座", + "address": "新界沙田區沙安街9號" + }, + { + "building": "翠華花園", + "address": "新界沙田區沙角街7-11號翠華花園" + }, + { + "building": "溱岸8號", + "address": "新界沙田區車公廟路8號溱岸8號" + }, + { + "building": "金豪工業大廈第二座", + "address": "新界沙田區坳背灣街14-24號金豪工業大廈第二座" + }, + { + "building": "威力工業中心", + "address": "新界沙田區坳背灣街2-12號威力工業中心" + }, + { + "building": "富騰工業中心", + "address": "新界沙田區坳背灣街26-28號富騰工業中心" + }, + { + "building": "協興工業中心", + "address": "新界沙田區坳背灣街27-31號協興工業中心" + }, + { + "building": "華耀工業中心", + "address": "新界沙田區坳背灣街30-32號華耀工業中心" + }, + { + "building": "世紀工業中心", + "address": "新界沙田區坳背灣街33-35號世紀工業中心" + }, + { + "building": "豐盛工業中心A座", + "address": "新界沙田區坳背灣街34-36號豐盛工業中心A座" + }, + { + "building": "?達工業大廈", + "address": "新界沙田區坳背灣街37-39號?達工業大廈" + }, + { + "building": "華衛工貿中心", + "address": "新界沙田區坳背灣街38-40號華衛工貿中心" + }, + { + "building": "安華工業大廈", + "address": "新界沙田區坳背灣街41-43號安華工業大廈" + }, + { + "building": "喜利佳工業大廈", + "address": "新界沙田區坳背灣街45-47號喜利佳工業大廈" + }, + { + "building": "協力工業大廈", + "address": "新界沙田區坳背灣街49-51號協力工業大廈" + }, + { + "building": "美高工業大廈", + "address": "新界沙田區坳背灣街53-55號美高工業大廈" + }, + { + "building": "利達工業中心", + "address": "新界沙田區坳背灣街57-59號利達工業中心" + }, + { + "building": "盈力工業中心", + "address": "新界沙田區坳背灣街61-63號盈力工業中心" + }, + { + "building": "天宇海H10", + "address": "新界沙田區保泰街18號" + }, + { + "building": "海典灣", + "address": "新界沙田區保泰街1號海典灣" + }, + { + "building": "星濤灣", + "address": "新界沙田區保泰街8號" + }, + { + "building": "城河樓", + "address": "新界沙田區城河道12-25號城河樓" + }, + { + "building": "萍苑", + "address": "新界沙田區城河道29號萍苑" + }, + { + "building": "薈晴", + "address": "新界沙田區恆光街15號薈晴" + }, + { + "building": "聽濤雅苑", + "address": "新界沙田區恆明街2號聽濤雅苑" + }, + { + "building": "觀瀾雅軒", + "address": "新界沙田區恆明街8號" + }, + { + "building": "恆明街8號", + "address": "新界沙田區恆明街8號觀瀾雅軒" + }, + { + "building": "富安花園", + "address": "新界沙田區恆信街2號富安花園" + }, + { + "building": "錦禧苑", + "address": "新界沙田區恆康街6號" + }, + { + "building": "雅苑", + "address": "新界沙田區恆樂里7號雅苑" + }, + { + "building": "錦鞍苑", + "address": "新界沙田區恆錦街20號錦鞍苑" + }, + { + "building": "良莊", + "address": "新界沙田區恒樂里12號良莊" + }, + { + "building": "安樂苑", + "address": "新界沙田區恒樂里9號安樂苑" + }, + { + "building": "名城", + "address": "新界沙田區美田路1號名城" + }, + { + "building": "珀玥", + "address": "新界沙田區美田路28號珀玥" + }, + { + "building": "美松苑康松樓", + "address": "新界沙田區美田路33號美松苑康松樓" + }, + { + "building": "美城苑逸城閣", + "address": "新界沙田區美田路34號美城苑逸城閣" + }, + { + "building": "美城苑暉城閣", + "address": "新界沙田區美田路36號美城苑暉城閣" + }, + { + "building": "壹號雲頂", + "address": "新界沙田區美田路63號壹號雲頂" + }, + { + "building": "頂峰別墅洋房", + "address": "新界沙田區美田路68號頂峰別墅洋房" + }, + { + "building": "田禾苑", + "address": "新界沙田區美禾圍2-18號田禾苑" + }, + { + "building": "伯爵堡", + "address": "新界沙田區美禾圍29-39號伯爵堡" + }, + { + "building": "桃花源", + "address": "新界沙田區徑口路" + }, + { + "building": "華莊", + "address": "新界沙田區徑口路19號華莊" + }, + { + "building": "華麗工業中心", + "address": "新界沙田區桂地街10-14號華麗工業中心" + }, + { + "building": "國際工業中心", + "address": "新界沙田區桂地街2-8號國際工業中心" + }, + { + "building": "迎海星灣", + "address": "新界沙田區烏溪沙路 8號" + }, + { + "building": "迎海", + "address": "新界沙田區烏溪沙路8號" + }, + { + "building": "近迎海", + "address": "新界沙田區烏溪沙路近迎海第21座." + }, + { + "building": "蔚麗山莊", + "address": "新界沙田區馬鈴徑81號蔚麗山莊" + }, + { + "building": "綠怡小築", + "address": "新界沙田區馬鞅徑8-12號綠怡小築" + }, + { + "building": "匡怡居", + "address": "新界沙田區馬樂徑10號匡怡居" + }, + { + "building": "松柏花園", + "address": "新界沙田區馬樂徑12-50號松柏花園" + }, + { + "building": "南莊苑南莊苑", + "address": "新界沙田區馬樂徑2號南莊苑南莊苑" + }, + { + "building": "皓朗山莊", + "address": "新界沙田區馬樂徑52號皓朗山莊" + }, + { + "building": "雅景臺", + "address": "新界沙田區馬鞍山路188號雅景臺" + }, + { + "building": "金鞍花園", + "address": "新界沙田區馬鞍徑12-20號金鞍花園" + }, + { + "building": "全輝中心", + "address": "新界沙田區崗背街9-11號全輝中心" + }, + { + "building": "晴碧花園", + "address": "新界沙田區得怡街6號晴碧花園" + }, + { + "building": "湖景花園", + "address": "新界沙田區悠安街21號湖景花園A" + }, + { + "building": "瑞峰花園", + "address": "新界沙田區富健街8-12號瑞峰花園" + }, + { + "building": "裕昌中心", + "address": "新界沙田區黃竹洋街1-3號裕昌中心" + }, + { + "building": "華生工業大廈", + "address": "新界沙田區黃竹洋街14-18號華生工業大廈" + }, + { + "building": "華聯工業中心", + "address": "新界沙田區黃竹洋街15-21號華聯工業中心" + }, + { + "building": "嘉民沙田物流中心", + "address": "新界沙田區黃竹洋街6號嘉民沙田物流中心" + }, + { + "building": "仁興中心", + "address": "新界沙田區黃竹洋街9-13號仁興中心" + }, + { + "building": "春暉花園", + "address": "新界沙田區圓洲角路11號春暉花園" + }, + { + "building": "翠麗花園", + "address": "新界沙田區圓洲角路15-17號" + }, + { + "building": "資訊工業中心", + "address": "新界沙田區源順圍10-12號康健科技中心" + }, + { + "building": "永得利大廈", + "address": "新界沙田區源順圍21-23號永得利大廈" + }, + { + "building": "沙田工業中心A-B座", + "address": "新界沙田區源順圍5-7號沙田工業中心A-B座" + }, + { + "building": "麗柏苑", + "address": "新界沙田區道風山路 20號" + }, + { + "building": "金獅花園", + "address": "新界沙田區隔田街" + }, + { + "building": "松柏園", + "address": "新界沙田區雍坪徑15號松柏園" + }, + { + "building": "錦泰苑", + "address": "新界沙田區寧泰路33號" + }, + { + "building": "恆峰花園", + "address": "新界沙田區碧田街" + }, + { + "building": "翠景花園", + "address": "新界沙田區碧田街18號翠景花園" + }, + { + "building": "美柏苑", + "address": "新界沙田區碧田街2號美柏苑" + }, + { + "building": "綠怡居", + "address": "新界沙田區綠怡徑6號綠怡居" + }, + { + "building": "景田苑", + "address": "新界沙田區翠田街12號" + }, + { + "building": "愉景花園", + "address": "新界沙田區翠田街1-3號愉景花園" + }, + { + "building": "欣廷軒", + "address": "新界沙田區翠欣街8號欣廷軒" + }, + { + "building": "愉田苑", + "address": "新界沙田區銀城街" + }, + { + "building": "雲頂峰洋房", + "address": "新界沙田區銅鑼灣山18號" + }, + { + "building": "嘉御山", + "address": "新界沙田區銅鑼灣山道8號嘉御山" + }, + { + "building": "樂怡小築", + "address": "新界沙田區樂林路1-19號樂怡小築" + }, + { + "building": "雅仕閣", + "address": "新界沙田區樂林路21號雅仕閣" + }, + { + "building": "榕翠園", + "address": "新界沙田區樂景街11號榕翠園" + }, + { + "building": "銀禧花園", + "address": "新界沙田區樂景街2-18號銀禧花園" + }, + { + "building": "銀禧花園銀禧閣", + "address": "新界沙田區樂景街2-18號銀禧花園銀禧閣" + }, + { + "building": "銀禧花園銀禧薈", + "address": "新界沙田區樂景街2-18號銀禧花園銀禧薈" + }, + { + "building": "御龍山", + "address": "新界沙田區樂景街28號御龍山" + }, + { + "building": "樂恆花園", + "address": "新界沙田區樂園徑1-3號樂恆花園" + }, + { + "building": "翠谷", + "address": "新界沙田區樂園徑15號翠谷" + }, + { + "building": "松翠小築", + "address": "新界沙田區樂園徑4-14號松翠小築" + }, + { + "building": "樂林園", + "address": "新界沙田區樂園徑5-9號樂林園" + }, + { + "building": "曉廬", + "address": "新界沙田區樂楓徑1號曉廬" + }, + { + "building": "沙田山莊", + "address": "新界沙田區樂楓徑2-4號沙田山莊" + }, + { + "building": "嘉美花園", + "address": "新界沙田區樂楓徑3號嘉美花園" + }, + { + "building": "景峰閣", + "address": "新界沙田區樂楓徑7號景峰閣" + }, + { + "building": "怡翠花園", + "address": "新界沙田區樂楓徑9-11號怡翠花園" + }, + { + "building": "晉名峰", + "address": "新界沙田區樂葵徑2號晉名峰" + }, + { + "building": "新港城四期中心", + "address": "新界沙田區鞍祿街18號新港城四期中心" + }, + { + "building": "新港城", + "address": "新界沙田區鞍誠街18號新港城" + }, + { + "building": "富輝花園", + "address": "新界沙田區鞍誠街28號富輝花園" + }, + { + "building": "富輝花園商場", + "address": "新界沙田區鞍誠街28號富輝花園商場" + }, + { + "building": "雅濤居", + "address": "新界沙田區鞍駿街15號雅濤居" + }, + { + "building": "馬鞍山中心", + "address": "新界沙田區鞍駿街1號馬鞍山中心" + }, + { + "building": "馬鞍山中心商場", + "address": "新界沙田區鞍駿街1號馬鞍山中心商場" + }, + { + "building": "迎濤灣1座", + "address": "新界沙田區鞍駿街23號迎濤灣1座" + }, + { + "building": "迎濤灣2座", + "address": "新界沙田區鞍駿街23號迎濤灣2座" + }, + { + "building": "海典居", + "address": "新界沙田區鞍駿街8號海典居" + }, + { + "building": "好運中心", + "address": "新界沙田區橫壆街1-15號" + }, + { + "building": "沙田中心", + "address": "新界沙田區橫壆街2-16號" + }, + { + "building": "兆苑", + "address": "新界沙田區積存街12-20號兆苑" + }, + { + "building": "?源樓", + "address": "新界沙田區積存街22號?源樓" + }, + { + "building": "年景樓", + "address": "新界沙田區積存街26-30號年景樓" + }, + { + "building": "安富閣", + "address": "新界沙田區積存街34-36號安富閣" + }, + { + "building": "嘉全樓", + "address": "新界沙田區積存街38-44號嘉全樓" + }, + { + "building": "龍景樓", + "address": "新界沙田區積存街6-10號龍景樓" + }, + { + "building": "大圍慶雲樓/景星樓", + "address": "新界沙田區積存街70-72號大圍慶雲樓/景星樓" + }, + { + "building": "景星樓", + "address": "新界沙田區積存街70-72號景星樓" + }, + { + "building": "綱業樓", + "address": "新界沙田區積存街78-80號綱業樓" + }, + { + "building": "年豐樓", + "address": "新界沙田區積存街82-86號年豐樓" + }, + { + "building": "滿堂樓", + "address": "新界沙田區積信街17-21號滿堂樓" + }, + { + "building": "喜悅樓", + "address": "新界沙田區積信街18-24號喜悅樓" + }, + { + "building": "吉慶樓", + "address": "新界沙田區積信街23-29號吉慶樓" + }, + { + "building": "積信樓", + "address": "新界沙田區積信街59-67號積信樓" + }, + { + "building": "積德樓", + "address": "新界沙田區積信街66-68號積德樓" + }, + { + "building": "立和樓", + "address": "新界沙田區積信街69-75號立和樓" + }, + { + "building": "積善樓", + "address": "新界沙田區積信街77-81號積善樓" + }, + { + "building": "容煥樓", + "address": "新界沙田區積財里6號容煥樓" + }, + { + "building": "龍鳳樓", + "address": "新界沙田區積富街15-17號龍鳳樓" + }, + { + "building": "益富閣", + "address": "新界沙田區積富街31號益富閣" + }, + { + "building": "積康樓", + "address": "新界沙田區積富街33號積康樓" + }, + { + "building": "積健樓", + "address": "新界沙田區積富街35-47號積健樓" + }, + { + "building": "安定樓", + "address": "新界沙田區積富街49-55號安定樓" + }, + { + "building": "積富樓", + "address": "新界沙田區積富街57-69號積富樓" + }, + { + "building": "富軒", + "address": "新界沙田區積富街71號富軒" + }, + { + "building": "海福花園", + "address": "新界沙田區積運街2-8號海福花園" + }, + { + "building": "大圍金輝樓", + "address": "新界沙田區積福街68 -74號大圍金輝樓" + }, + { + "building": "康樂樓", + "address": "新界沙田區積福街80號康樂樓" + }, + { + "building": "積達樓", + "address": "新界沙田區積德里10-22號積達樓" + }, + { + "building": "啟德大樓", + "address": "新界沙田區積德里11-13號啟德大樓" + }, + { + "building": "安康樓/安泰樓", + "address": "新界沙田區積輝街13號安康樓/安泰樓" + }, + { + "building": "金禧花園", + "address": "新界沙田區積輝街2-12號金禧花園" + }, + { + "building": "興盛洋樓", + "address": "新界沙田區積輝街7-9號興盛洋樓" + }, + { + "building": "錦龍苑", + "address": "新界沙田區錦英路1號" + }, + { + "building": "富寶花園", + "address": "新界沙田區錦英路6號富寶花園" + }, + { + "building": "錦英苑", + "address": "新界沙田區錦英路9號錦" + }, + { + "building": "世界花園", + "address": "新界沙田區龍柏街11號" + }, + { + "building": "穗禾苑詠昌閣", + "address": "新界沙田區穗禾路" + }, + { + "building": "碧霞花園", + "address": "新界沙田區穗禾路16號碧霞花園" + }, + { + "building": "豐利工業中心", + "address": "新界沙田區穗禾路1號豐利工業中心" + }, + { + "building": "豐景花園", + "address": "新界沙田區穗禾路21-29號豐景花園" + }, + { + "building": "華翠園", + "address": "新界沙田區穗禾路26-28號華翠園" + }, + { + "building": "駿景園", + "address": "新界沙田區駿景路1號駿景園" + }, + { + "building": "豐盛苑", + "address": "新界沙田區豐石街" + }, + { + "building": "麗峰花園", + "address": "新界沙田區麗禾里2-4號" + }, + { + "building": "嘉田苑嘉怡閣", + "address": "新界沙田區顯田街" + }, + { + "building": "嘉順苑", + "address": "新界沙田區顯田街11號" + }, + { + "building": "嘉徑苑", + "address": "新界沙田區顯徑街16號嘉徑苑" + }, + { + "building": "名家匯", + "address": "新界沙田區顯泰街18號名家匯1座" + }, + { + "building": "聚龍居", + "address": "新界沙田區顯泰街8號聚龍居" + }, + { + "building": "御天峰", + "address": "新界荃灣區" + }, + { + "building": "富麗花園昌富閣", + "address": "新界荃灣區" + }, + { + "building": "美達中心", + "address": "新界荃灣區KCTL364青山公路 - 葵涌段552-566號美達中心" + }, + { + "building": "皇廷廣場", + "address": "新界荃灣區KTIL697皇廷廣場" + }, + { + "building": "和富大廈", + "address": "新界荃灣區LOT288德士古道204-210號和富大廈" + }, + { + "building": "牛津工業大廈", + "address": "新界荃灣區LOT293牛津工業大廈" + }, + { + "building": "隆盛工廠大廈", + "address": "新界荃灣區LOT472德士古道142-148號隆盛工廠大廈" + }, + { + "building": "宏龍工業大廈", + "address": "新界荃灣區TWTL125橫龍街48-56號宏龍工業大廈" + }, + { + "building": "德豐工業中心第二座", + "address": "新界荃灣區TWTL28德士古道168號德豐工業中心第二座" + }, + { + "building": "富利達中心", + "address": "新界荃灣區TWTL400德海街18號富利達中心" + }, + { + "building": "立坊", + "address": "新界荃灣區TWTL407楊屋道118號立坊" + }, + { + "building": "二陂坊大樓", + "address": "新界荃灣區二陂坊2-8A號二陂坊大樓" + }, + { + "building": "安安樓", + "address": "新界荃灣區三陂坊18號安安樓" + }, + { + "building": "三陂坊20-26號", + "address": "新界荃灣區三陂坊20-26號" + }, + { + "building": "仁信大廈", + "address": "新界荃灣區三陂坊2-12號仁信大廈" + }, + { + "building": "三陂坊28-30號", + "address": "新界荃灣區三陂坊28-30號" + }, + { + "building": "慶興大樓", + "address": "新界荃灣區大河道1-17號慶興大樓" + }, + { + "building": "地皇廣場", + "address": "新界荃灣區大河道18號地皇廣場" + }, + { + "building": "榮安大廈", + "address": "新界荃灣區大河道22-28號榮安大廈" + }, + { + "building": "昌泰大廈", + "address": "新界荃灣區大河道30-38號昌泰大廈" + }, + { + "building": "樹勳樓", + "address": "新界荃灣區大河道47號樹勳樓" + }, + { + "building": "乾浩樓", + "address": "新界荃灣區大河道49-51號乾浩樓" + }, + { + "building": "卓明大廈", + "address": "新界荃灣區大河道57-75號卓明大廈" + }, + { + "building": "灣景廣場", + "address": "新界荃灣區大河道88號灣景廣場" + }, + { + "building": "全‧城匯", + "address": "新界荃灣區大河道全‧城匯" + }, + { + "building": "德寶大廈", + "address": "新界荃灣區大陂坊2-24號德寶大廈" + }, + { + "building": "泰華大廈", + "address": "新界荃灣區大陂坊9-31號泰華大廈" + }, + { + "building": "TCL工業中心", + "address": "新界荃灣區大涌道2-16號TCL工業中心" + }, + { + "building": "合福工業大廈", + "address": "新界荃灣區大涌道22-28號合福工業大廈" + }, + { + "building": "荃灣廣場第2座", + "address": "新界荃灣區大壩街4-30號荃灣廣場第2座" + }, + { + "building": "庚發樓", + "address": "新界荃灣區大壩街49-51號庚發樓" + }, + { + "building": "大苑樓", + "address": "新界荃灣區大壩街77-83號大苑樓" + }, + { + "building": "荃灣豪華廣場", + "address": "新界荃灣區川龍街118號荃灣豪華廣場" + }, + { + "building": "富貴樓", + "address": "新界荃灣區川龍街12號富貴樓" + }, + { + "building": "連平樓", + "address": "新界荃灣區川龍街14-16號連平樓" + }, + { + "building": "華祥樓", + "address": "新界荃灣區川龍街28-30號華祥樓" + }, + { + "building": "安樂樓", + "address": "新界荃灣區川龍街31-33號安樂樓" + }, + { + "building": "川龍樓", + "address": "新界荃灣區川龍街35-39號川龍樓" + }, + { + "building": "天華樓", + "address": "新界荃灣區川龍街36-44號天華樓" + }, + { + "building": "德昌樓", + "address": "新界荃灣區川龍街41-47號德昌樓" + }, + { + "building": "順興樓", + "address": "新界荃灣區川龍街55-61號順興樓" + }, + { + "building": "華景樓", + "address": "新界荃灣區川龍街64-68號華景樓" + }, + { + "building": "昌盛樓", + "address": "新界荃灣區川龍街65-67號昌盛樓" + }, + { + "building": "貴生樓", + "address": "新界荃灣區川龍街70-76號貴生樓" + }, + { + "building": "協和廣場", + "address": "新界荃灣區川龍街88號協和廣場" + }, + { + "building": "海天豪苑", + "address": "新界荃灣區川龍街88號海天豪苑" + }, + { + "building": "富華工業大廈", + "address": "新界荃灣區半山街10-16號富華工業大廈" + }, + { + "building": "通利琴行", + "address": "新界荃灣區半山街22-32號通利琴行" + }, + { + "building": "雅緻樓", + "address": "新界荃灣區四陂坊9-14號雅緻樓" + }, + { + "building": "海灣花園", + "address": "新界荃灣區永順街38號海灣花園" + }, + { + "building": "環宇海灣", + "address": "新界荃灣區永順街48號環宇海灣" + }, + { + "building": "嘉御龍庭", + "address": "新界荃灣區汀九段青山公路321號嘉御龍庭" + }, + { + "building": "長豐工業大廈", + "address": "新界荃灣區白田壩街23-39號長豐工業大廈" + }, + { + "building": "信義工業大廈", + "address": "新界荃灣區白田壩街36-44號信義工業大廈" + }, + { + "building": "祺福大?", + "address": "新界荃灣區白田壩街46-48號祺福大?" + }, + { + "building": "華偉工業大廈", + "address": "新界荃灣區白田壩街51-63號華偉工業大廈" + }, + { + "building": "金豐閣", + "address": "新界荃灣區禾笛街19號金豐閣" + }, + { + "building": "永安樓", + "address": "新界荃灣區兆和街" + }, + { + "building": "兆和樓", + "address": "新界荃灣區兆和街" + }, + { + "building": "和盛樓", + "address": "新界荃灣區兆和街" + }, + { + "building": "海晴軒", + "address": "新界荃灣區兆和街23號海晴軒" + }, + { + "building": "運興樓", + "address": "新界荃灣區兆和街24-28號運興樓" + }, + { + "building": "周氏大廈", + "address": "新界荃灣區兆和街2-4A號周氏大廈" + }, + { + "building": "翠豐臺", + "address": "新界荃灣區安育路" + }, + { + "building": "富榮大廈", + "address": "新界荃灣區安榮街2-6號富榮大廈" + }, + { + "building": "派龍中心", + "address": "新界荃灣區灰?角街12-16號派龍中心" + }, + { + "building": "富源工業大廈", + "address": "新界荃灣區灰?角街18-22號富源工業大廈" + }, + { + "building": "美德大廈", + "address": "新界荃灣區灰?角街24-32號美德大廈" + }, + { + "building": "毓光工業大廈", + "address": "新界荃灣區灰?角街34號毓光工業大廈" + }, + { + "building": "荃興工業大廈", + "address": "新界荃灣區灰?角街36-40號荃興工業大廈" + }, + { + "building": "敬誠工業大廈", + "address": "新界荃灣區灰?角街46號敬誠工業大廈" + }, + { + "building": "昌泰工業大廈", + "address": "新界荃灣區灰?角街50-56號昌泰工業大廈" + }, + { + "building": "永華臺", + "address": "新界荃灣區老圍永華臺" + }, + { + "building": "昌樂大廈", + "address": "新界荃灣區西樓角路100號昌樂大廈" + }, + { + "building": "新領域廣場", + "address": "新界荃灣區西樓角路1-17號新領域廣場" + }, + { + "building": "荃豐中心", + "address": "新界荃灣區西樓角路138-168號荃豐中心" + }, + { + "building": "華都中心", + "address": "新界荃灣區西樓角路170-184號華都中心" + }, + { + "building": "豪輝花園", + "address": "新界荃灣區西樓角路218-220號豪輝花園" + }, + { + "building": "友聯樓", + "address": "新界荃灣區沙咀道" + }, + { + "building": "坤德樓", + "address": "新界荃灣區沙咀道" + }, + { + "building": "荃運工業中心", + "address": "新界荃灣區沙咀道" + }, + { + "building": "達貿中心", + "address": "新界荃灣區沙咀道11號達貿中心" + }, + { + "building": "光明大廈", + "address": "新界荃灣區沙咀道120-130號光明大廈" + }, + { + "building": "運昌樓", + "address": "新界荃灣區沙咀道131-137號運昌樓" + }, + { + "building": "楊明樓", + "address": "新界荃灣區沙咀道132-142號楊明樓" + }, + { + "building": "聯芳樓", + "address": "新界荃灣區沙咀道144號聯芳樓" + }, + { + "building": "華成樓A座", + "address": "新界荃灣區沙咀道207號華成樓A座" + }, + { + "building": "昌興盛中心", + "address": "新界荃灣區沙咀道23號昌興盛中心" + }, + { + "building": "思源樓", + "address": "新界荃灣區沙咀道247-255號思源樓" + }, + { + "building": "廣發大廈", + "address": "新界荃灣區沙咀道260-276號廣發大廈" + }, + { + "building": "周氏商業中心", + "address": "新界荃灣區沙咀道282-284號周氏商業中心" + }, + { + "building": "恒生荃灣大廈", + "address": "新界荃灣區沙咀道289號恒生荃灣大廈" + }, + { + "building": "科技中心", + "address": "新界荃灣區沙咀道29-35號科技中心" + }, + { + "building": "眾安大廈A座", + "address": "新界荃灣區沙咀道301-309號眾安大廈A座" + }, + { + "building": "廣益大廈", + "address": "新界荃灣區沙咀道319號廣益大廈" + }, + { + "building": "華興樓", + "address": "新界荃灣區沙咀道341-345號華興樓" + }, + { + "building": "全發工業大廈", + "address": "新界荃灣區沙咀道362號全發工業大廈" + }, + { + "building": "名逸居", + "address": "新界荃灣區沙咀道363號名逸居" + }, + { + "building": "萬象工業大廈", + "address": "新界荃灣區沙咀道364-366號萬象工業大廈" + }, + { + "building": "王子工業大廈", + "address": "新界荃灣區沙咀道368-370號王子工業大廈" + }, + { + "building": "榮亞工業大廈", + "address": "新界荃灣區沙咀道381-389號榮亞工業大廈" + }, + { + "building": "寶業大廈", + "address": "新界荃灣區沙咀道391-407號寶業大廈" + }, + { + "building": "榮豐工業大廈", + "address": "新界荃灣區沙咀道40-50號榮豐工業大廈" + }, + { + "building": "環球實業大廈", + "address": "新界荃灣區沙咀道62號環球實業大廈" + }, + { + "building": "豪力中心", + "address": "新界荃灣區沙咀道64-66號豪力中心" + }, + { + "building": "香港中央紡織有限公司一廠", + "address": "新界荃灣區沙咀道8-14號香港中央紡織有限公司一廠" + }, + { + "building": "好運唐樓", + "address": "新界荃灣區沙嘴道105-129號好運唐樓" + }, + { + "building": "匯力工業中心", + "address": "新界荃灣區沙嘴道26-38號匯力工業中心" + }, + { + "building": "翡翠廣場", + "address": "新界荃灣區沙嘴道298號翡翠廣場" + }, + { + "building": "寶石大廈", + "address": "新界荃灣區沙嘴道328號寶石大廈" + }, + { + "building": "大成大廈", + "address": "新界荃灣區沙嘴道68-76號大成大廈" + }, + { + "building": "嘉華樓", + "address": "新界荃灣區享成街11-17號嘉華樓" + }, + { + "building": "錦發樓", + "address": "新界荃灣區享成街1-3號錦發樓" + }, + { + "building": "仁蕙苑", + "address": "新界荃灣區享成街16-32號仁蕙苑" + }, + { + "building": "美華樓", + "address": "新界荃灣區享成街2-4號美華樓" + }, + { + "building": "富明樓", + "address": "新界荃灣區享成街5-9號富明樓" + }, + { + "building": "香城大廈", + "address": "新界荃灣區享成街6-14號香城大廈" + }, + { + "building": "好景樓", + "address": "新界荃灣區享和街" + }, + { + "building": "黃金樓", + "address": "新界荃灣區享和街1-3號黃金樓" + }, + { + "building": "金城大樓", + "address": "新界荃灣區享和街25-41號金城大樓" + }, + { + "building": "都城大樓", + "address": "新界荃灣區享和街43-59號都城大樓" + }, + { + "building": "香和大廈", + "address": "新界荃灣區享和街66-78號香和大廈" + }, + { + "building": "安豐大廈", + "address": "新界荃灣區享和街80-98號安豐大廈" + }, + { + "building": "京華工業貨倉大廈第二期", + "address": "新界荃灣區京華工業貨倉大廈第二期" + }, + { + "building": "海濱花園", + "address": "新界荃灣區怡樂街1-5號海濱花園" + }, + { + "building": "石碧新村", + "address": "新界荃灣區河背街" + }, + { + "building": "昇柏山", + "address": "新界荃灣區油麻磡路63號昇柏山" + }, + { + "building": "芙蓉樓", + "address": "新界荃灣區芙蓉街13-17號芙蓉樓" + }, + { + "building": "芙蓉大廈", + "address": "新界荃灣區芙蓉街1-5號芙蓉大廈" + }, + { + "building": "運盛樓", + "address": "新界荃灣區芙蓉街9-12號運盛樓" + }, + { + "building": "青龍頭怡龍別墅", + "address": "新界荃灣區青山公路" + }, + { + "building": "龍騰閣", + "address": "新界荃灣區青山公路" + }, + { + "building": "觀海別墅 ", + "address": "新界荃灣區青山公路" + }, + { + "building": "汀蘭居", + "address": "新界荃灣區青山公路 - 汀九段123號汀蘭居" + }, + { + "building": "麗海別墅", + "address": "新界荃灣區青山公路 - 汀九段369號麗海別墅" + }, + { + "building": "荃昌中心昌安大廈", + "address": "新界荃灣區青山公路 - 荃灣段114-128號荃昌中心昌安大廈" + }, + { + "building": "蘊崇大廈", + "address": "新界荃灣區青山公路 - 荃灣段117-121號蘊崇大廈" + }, + { + "building": "紅棉大廈", + "address": "新界荃灣區青山公路 - 荃灣段123-133號紅棉大廈" + }, + { + "building": "遠東銀行大廈", + "address": "新界荃灣區青山公路 - 荃灣段135-143號遠東銀行大廈" + }, + { + "building": "荃灣花園吉祥閣", + "address": "新界荃灣區青山公路 - 荃灣段15-23號荃灣花園吉祥閣" + }, + { + "building": "昌耀大廈", + "address": "新界荃灣區青山公路 - 荃灣段167-173號昌耀大廈" + }, + { + "building": "荃勝大廈", + "address": "新界荃灣區青山公路 - 荃灣段185-187號荃勝大廈" + }, + { + "building": "百萬行", + "address": "新界荃灣區青山公路 - 荃灣段189號百萬行" + }, + { + "building": "新青大廈", + "address": "新界荃灣區青山公路 - 荃灣段201-207號新青大廈" + }, + { + "building": "富華中心", + "address": "新界荃灣區青山公路 - 荃灣段210號富華中心" + }, + { + "building": "南豐中心", + "address": "新界荃灣區青山公路 - 荃灣段264-298號南豐中心" + }, + { + "building": "運通洋樓", + "address": "新界荃灣區青山公路 - 荃灣段277-287號運通洋樓" + }, + { + "building": "昌華大廈", + "address": "新界荃灣區青山公路 - 荃灣段289-301號昌華大廈" + }, + { + "building": "環宇汽車大廈", + "address": "新界荃灣區青山公路 - 荃灣段374-380號環宇汽車大廈" + }, + { + "building": "中國染廠大廈", + "address": "新界荃灣區青山公路 - 荃灣段382-392號中國染廠大廈" + }, + { + "building": "上海商業銀行大廈", + "address": "新界荃灣區青山公路 - 荃灣段405號上海商業銀行大廈" + }, + { + "building": "金荃大廈", + "address": "新界荃灣區青山公路 - 荃灣段407-411號金荃大廈" + }, + { + "building": "華懋荃灣廣場", + "address": "新界荃灣區青山公路 - 荃灣段455-457號華懋荃灣廣場" + }, + { + "building": "華力工業中心", + "address": "新界荃灣區青山公路 - 荃灣段459-469號華力工業中心" + }, + { + "building": "嘉力工業中心", + "address": "新界荃灣區青山公路 - 荃灣段491-501號嘉力工業中心" + }, + { + "building": "永南貨倉大廈", + "address": "新界荃灣區青山公路 - 荃灣段503-515號永南貨倉大廈" + }, + { + "building": "江南工業大廈", + "address": "新界荃灣區青山公路 - 荃灣段603-609號江南工業大廈" + }, + { + "building": "東南工業大廈", + "address": "新界荃灣區青山公路 - 荃灣段611-619號東南工業大廈" + }, + { + "building": "荃昌中心昌寧大廈", + "address": "新界荃灣區青山公路 - 荃灣段98-112號荃昌中心昌寧大廈" + }, + { + "building": "海韻臺", + "address": "新界荃灣區青山公路 - 深井段28號海韻臺" + }, + { + "building": "豪景花園", + "address": "新界荃灣區青山公路100號豪景花園依麗小築" + }, + { + "building": "海濤花園海濤閣", + "address": "新界荃灣區青山公路103號海濤花園海濤閣" + }, + { + "building": "御海峰", + "address": "新界荃灣區青山公路132號御海峰" + }, + { + "building": "浪翠園", + "address": "新界荃灣區青山公路18號浪翠園" + }, + { + "building": "金麗苑B座", + "address": "新界荃灣區青山公路200號金麗苑B座" + }, + { + "building": "新麗苑", + "address": "新界荃灣區青山公路218-240號" + }, + { + "building": "碧堤半島", + "address": "新界荃灣區青山公路33號碧堤半島" + }, + { + "building": "荃錦中心", + "address": "新界荃灣區青山公路342號荃錦中心" + }, + { + "building": "海韻花園", + "address": "新界荃灣區青山公路38號海韻花園" + }, + { + "building": "愉景新城", + "address": "新界荃灣區青山公路398號愉景新城" + }, + { + "building": "怡龍別墅", + "address": "新界荃灣區青山公路39號" + }, + { + "building": "麗都花園第", + "address": "新界荃灣區青山公路41-63號麗都花園" + }, + { + "building": "蔚景花園", + "address": "新界荃灣區青山公路520號蔚景花園" + }, + { + "building": "麗城花園", + "address": "新界荃灣區青山公路530-590號" + }, + { + "building": "韻濤居", + "address": "新界荃灣區青山公路623號韻濤居" + }, + { + "building": "灣景花園", + "address": "新界荃灣區青山公路633號灣景花園" + }, + { + "building": "黃金花園", + "address": "新界荃灣區青山公路6號黃金花園" + }, + { + "building": "翠景臺", + "address": "新界荃灣區青山公路6號翠景臺" + }, + { + "building": "富裕樓", + "address": "新界荃灣區青山公路荃灣段269號富裕樓" + }, + { + "building": "力生廣場", + "address": "新界荃灣區青山道263-275號力生廣場" + }, + { + "building": "翠濤閣", + "address": "新界荃灣區青山道644-654號翠濤閣" + }, + { + "building": "豪景花園", + "address": "新界荃灣區青龍頭青山公路100號" + }, + { + "building": "珀麗灣", + "address": "新界荃灣區珀麗路8號" + }, + { + "building": "時貿中心", + "address": "新界荃灣區美環街1號時貿中心" + }, + { + "building": "綸華工業大廈", + "address": "新界荃灣區柴灣角街11-15號綸華工業大廈" + }, + { + "building": "京華工廠貨倉大廈", + "address": "新界荃灣區柴灣角街30-32號京華工廠貨倉大廈" + }, + { + "building": "萬達來工業中心", + "address": "新界荃灣區柴灣角街34-36號萬達來工業中心" + }, + { + "building": "裕豐工業大廈", + "address": "新界荃灣區柴灣角街35-45號裕豐工業大廈" + }, + { + "building": "銓通工業大廈", + "address": "新界荃灣區柴灣角街38-40號銓通工業大廈" + }, + { + "building": "振通物流中心", + "address": "新界荃灣區柴灣角街47-57號振通物流中心" + }, + { + "building": "樂信工廠大廈", + "address": "新界荃灣區柴灣角街6-28號樂信工廠大廈" + }, + { + "building": "宏昌企業中心", + "address": "新界荃灣區柴灣角街65-69號宏昌企業中心" + }, + { + "building": "金熊工業中心", + "address": "新界荃灣區柴灣角街66-82號金熊工業中心" + }, + { + "building": "致利工業大廈", + "address": "新界荃灣區柴灣角街77-81號致利工業大廈" + }, + { + "building": "榮興工業大廈", + "address": "新界荃灣區柴灣角街83-93號榮興工業大廈" + }, + { + "building": "順豐工業中心", + "address": "新界荃灣區柴灣角街84-92號順豐工業中心" + }, + { + "building": "華俊工業中心", + "address": "新界荃灣區柴灣角街95號華俊工業中心" + }, + { + "building": "祈德尊新?C座", + "address": "新界荃灣區海盛路30號祈德尊新?C座" + }, + { + "building": "有線電視大樓", + "address": "新界荃灣區海盛路9號有線電視大樓" + }, + { + "building": "卓明大廈", + "address": "新界荃灣區海壩街102號卓明大廈" + }, + { + "building": "卓英樓", + "address": "新界荃灣區海壩街103號卓英樓" + }, + { + "building": "昌禧大廈", + "address": "新界荃灣區海壩街105-111號昌禧大廈" + }, + { + "building": "連輝樓", + "address": "新界荃灣區海壩街116-118號連輝樓" + }, + { + "building": "榮發樓", + "address": "新界荃灣區海壩街122-132A號榮發樓" + }, + { + "building": "海安樓", + "address": "新界荃灣區海壩街134-138號海安樓" + }, + { + "building": "聯和樓", + "address": "新界荃灣區海壩街140-146號聯和樓" + }, + { + "building": "大仁樓", + "address": "新界荃灣區海壩街16-20號大仁樓" + }, + { + "building": "海壩樓", + "address": "新界荃灣區海壩街2-14號海壩樓" + }, + { + "building": "華達樓", + "address": "新界荃灣區海壩街32號華達樓" + }, + { + "building": "荃好景大廈", + "address": "新界荃灣區海壩街83-93號荃好景大廈" + }, + { + "building": "荃灣中心", + "address": "新界荃灣區荃景圍" + }, + { + "building": "荃威花園A座", + "address": "新界荃灣區荃景圍195號荃威花園A座" + }, + { + "building": "家興大廈A座", + "address": "新界荃灣區荃景圍202號家興大廈A座" + }, + { + "building": "荃德花園", + "address": "新界荃灣區荃景圍208號荃德花園" + }, + { + "building": "?利工業中心", + "address": "新界荃灣區荃景圍30-38號?利工業中心" + }, + { + "building": "荃景花園", + "address": "新界荃灣區荃景圍80號荃景花園" + }, + { + "building": "荃灣中心", + "address": "新界荃灣區荃景圍93號" + }, + { + "building": "荃灣中心", + "address": "新界荃灣區荃景圍荃灣中心" + }, + { + "building": "荃樂大廈", + "address": "新界荃灣區荃樂街1-17號荃樂大廈" + }, + { + "building": "荃發大廈", + "address": "新界荃灣區荃興徑13-23號荃發大廈" + }, + { + "building": "連興樓", + "address": "新界荃灣區荃興徑7-11號連興樓" + }, + { + "building": "朗逸?", + "address": "新界荃灣區荃錦公路108號朗逸?" + }, + { + "building": "寶雲?", + "address": "新界荃灣區荃錦公路98號" + }, + { + "building": "寶雲匯", + "address": "新界荃灣區荃錦公路98號寶雲匯" + }, + { + "building": "?蘆", + "address": "新界荃灣區荃錦公路99號?蘆" + }, + { + "building": "卓明樓", + "address": "新界荃灣區荃灣街市街10-22號卓明樓" + }, + { + "building": "安裕大廈", + "address": "新界荃灣區荃灣街市街120-140號安裕大廈" + }, + { + "building": "坤成樓", + "address": "新界荃灣區荃灣街市街156號坤成樓" + }, + { + "building": "荃豐大廈", + "address": "新界荃灣區荃灣街市街39-43A號荃豐大廈" + }, + { + "building": "華仁樓", + "address": "新界荃灣區荃灣街市街49-51號華仁樓" + }, + { + "building": "荃灣城市廣場", + "address": "新界荃灣區荃灣街市街67-95號荃灣城市廣場" + }, + { + "building": "成安樓", + "address": "新界荃灣區荃灣街市街6-8號成安樓" + }, + { + "building": "?獅電子大廈", + "address": "新界荃灣區馬角街14-18號?獅電子大廈" + }, + { + "building": "新豐工業大廈", + "address": "新界荃灣區馬角街8-12號新豐工業大廈" + }, + { + "building": "城市工業中心", + "address": "新界荃灣區國瑞路116-122號城市工業中心" + }, + { + "building": "安全貨倉", + "address": "新界荃灣區國瑞路132-140號安全貨倉" + }, + { + "building": "縉庭山", + "address": "新界荃灣區國瑞路168號" + }, + { + "building": "新豐中心", + "address": "新界荃灣區國瑞路88號新豐中心" + }, + { + "building": "電話機房", + "address": "新界荃灣區國瑞道145-159號電話機房" + }, + { + "building": "恒麗園", + "address": "新界荃灣區悠麗路" + }, + { + "building": "錦柏豪苑", + "address": "新界荃灣區悠麗路" + }, + { + "building": "皇璧", + "address": "新界荃灣區悠麗路2A號皇璧" + }, + { + "building": "傳德樓", + "address": "新界荃灣區曹公坊14-36號傳德樓" + }, + { + "building": "文成樓", + "address": "新界荃灣區曹公坊17-35號文成樓" + }, + { + "building": "快樂樓", + "address": "新界荃灣區曹公坊2-4號快樂樓" + }, + { + "building": "同仁樓", + "address": "新界荃灣區曹公坊37號同仁樓" + }, + { + "building": "德安樓", + "address": "新界荃灣區曹公坊6-10號德安樓" + }, + { + "building": "大樓", + "address": "新界荃灣區曹公坊9號大樓" + }, + { + "building": "榮安樓", + "address": "新界荃灣區曹公街28-30號榮安樓" + }, + { + "building": "縉皇居", + "address": "新界荃灣區深慈街8號縉皇居" + }, + { + "building": "世傳樓", + "address": "新界荃灣區眾安街10-12號世傳樓" + }, + { + "building": "三和樓", + "address": "新界荃灣區眾安街14-24號三和樓" + }, + { + "building": "瑞生樓", + "address": "新界荃灣區眾安街19號瑞生樓" + }, + { + "building": "傳耀樓", + "address": "新界荃灣區眾安街21-23號傳耀樓" + }, + { + "building": "秋雲大廈", + "address": "新界荃灣區眾安街25-33號秋雲大廈" + }, + { + "building": "合眾大廈", + "address": "新界荃灣區眾安街26-40號合眾大廈" + }, + { + "building": "周合成大廈", + "address": "新界荃灣區眾安街2-8號周合成大廈" + }, + { + "building": "荃運樓", + "address": "新界荃灣區眾安街37-41號荃運樓" + }, + { + "building": "大鴻輝(荃灣)中心", + "address": "新界荃灣區眾安街55號大鴻輝(荃灣)中心" + }, + { + "building": "荃灣城市中心I", + "address": "新界荃灣區眾安街68號荃灣城市中心I" + }, + { + "building": "南山大廈", + "address": "新界荃灣區眾安街74-78號南山大廈" + }, + { + "building": "東北大廈", + "address": "新界荃灣區傅屋路1-11號東北大廈" + }, + { + "building": "正興工業大廈", + "address": "新界荃灣區傅屋路19-25號正興工業大廈" + }, + { + "building": "東北廠", + "address": "新界荃灣區傅屋道1-11號東北廠" + }, + { + "building": "登發大廈", + "address": "新界荃灣區登發街8-12號登發大廈" + }, + { + "building": "傳耀臺", + "address": "新界荃灣區傳耀臺" + }, + { + "building": "友聯樓", + "address": "新界荃灣區圓墩圍71-73號友聯樓" + }, + { + "building": "平愛大廈", + "address": "新界荃灣區新村街33-39號平愛大廈" + }, + { + "building": "爵悅庭", + "address": "新界荃灣區楊屋道100號" + }, + { + "building": "馮瑞璋工業大廈", + "address": "新界荃灣區楊屋道127-135號馮瑞璋工業大廈" + }, + { + "building": "國際訊通中心", + "address": "新界荃灣區楊屋道168號國際訊通中心" + }, + { + "building": "東昌工業大廈", + "address": "新界荃灣區楊屋道177-181號東昌工業大廈" + }, + { + "building": "達力貨櫃中心", + "address": "新界荃灣區楊屋道188號達力貨櫃中心" + }, + { + "building": "御凱", + "address": "新界荃灣區楊屋道18號御凱" + }, + { + "building": "荃安樓", + "address": "新界荃灣區路德圍20-24號荃安樓" + }, + { + "building": "安富大廈", + "address": "新界荃灣區路德圍26-42號安富大廈" + }, + { + "building": "荃運樓(二期)", + "address": "新界荃灣區路德圍2-6號荃運樓(二期)" + }, + { + "building": "嘉新大樓", + "address": "新界荃灣區路德圍46-58號嘉新大樓" + }, + { + "building": "啟志樓", + "address": "新界荃灣區路德圍8-12號啟志樓" + }, + { + "building": "達力貨櫃中心", + "address": "新界荃灣區德士古道110-118號達力貨櫃中心" + }, + { + "building": "安泰國際中心", + "address": "新界荃灣區德士古道120號安泰國際中心" + }, + { + "building": "德高中心", + "address": "新界荃灣區德士古道126-140號德高中心" + }, + { + "building": "聯合貨運中心", + "address": "新界荃灣區德士古道150-164號聯合貨運中心" + }, + { + "building": "山德士中心", + "address": "新界荃灣區德士古道178-182號山德士中心" + }, + { + "building": "連豐中心", + "address": "新界荃灣區德士古道184-186號連豐中心" + }, + { + "building": "立泰工業中心", + "address": "新界荃灣區德士古道188-202號立泰工業中心" + }, + { + "building": "荃灣工業中心", + "address": "新界荃灣區德士古道220-248號荃灣工業中心" + }, + { + "building": "德士古道工業中心", + "address": "新界荃灣區德士古道256-264號德士古道工業中心" + }, + { + "building": "利登製衣有限公司", + "address": "新界荃灣區德士古道266-270號利登製衣有限公司" + }, + { + "building": "東亞花園荃薈", + "address": "新界荃灣區德士古道36-60號東亞花園荃薈" + }, + { + "building": "興業中心", + "address": "新界荃灣區德士古道72-76號興業中心" + }, + { + "building": "鴻福堂集團(物流中心)", + "address": "新界荃灣區德士古道78-86號鴻福堂集團(物流中心)" + }, + { + "building": "信豐工業大廈", + "address": "新界荃灣區德士古道88-96號信豐工業大廈" + }, + { + "building": "五方集團中心", + "address": "新界荃灣區德士古道98號五方集團中心" + }, + { + "building": "高惠樓", + "address": "新界荃灣區德華街" + }, + { + "building": "德範樓", + "address": "新界荃灣區德華街2-20號德範樓" + }, + { + "building": "添華大樓", + "address": "新界荃灣區德華街26-28號添華大樓" + }, + { + "building": "添華大樓", + "address": "新界荃灣區德華街30-32號添華大樓" + }, + { + "building": "德華樓", + "address": "新界荃灣區德華街62-70號德華樓" + }, + { + "building": "永如工業大廈", + "address": "新界荃灣區橫窩仔街10-14號永如工業大廈" + }, + { + "building": "安泰工業中心", + "address": "新界荃灣區橫窩仔街13-23號安泰工業中心" + }, + { + "building": "永桂第三工業大廈", + "address": "新界荃灣區橫窩仔街2-8號永桂第三工業大廈" + }, + { + "building": "利興強中心", + "address": "新界荃灣區橫窩仔街28號利興強中心" + }, + { + "building": "海林大廈A座", + "address": "新界荃灣區橫窩仔街36-50號海林大廈A座" + }, + { + "building": "永得利中心", + "address": "新界荃灣區橫窩仔街43-57號永得利中心" + }, + { + "building": "明華工業大廈", + "address": "新界荃灣區橫龍街17-33號明華工業大廈" + }, + { + "building": "興盛工業大廈", + "address": "新界荃灣區橫龍街32-40號興盛工業大廈" + }, + { + "building": "百老?中心", + "address": "新界荃灣區橫龍街35-41號百老?中心" + }, + { + "building": "龍力工業大廈", + "address": "新界荃灣區橫龍街43-47號龍力工業大廈" + }, + { + "building": "華隆工業大廈", + "address": "新界荃灣區橫龍街49-53號華隆工業大廈" + }, + { + "building": "利時工業大廈", + "address": "新界荃灣區橫龍街55-57號利時工業大廈" + }, + { + "building": "荃灣工業大廈", + "address": "新界荃灣區橫龍街59-71號荃灣工業大廈" + }, + { + "building": "龍華國際貨運中心", + "address": "新界荃灣區橫龍街72-76號龍華國際貨運中心" + }, + { + "building": "富利工業大廈", + "address": "新界荃灣區橫龍街77-87號富利工業大廈" + }, + { + "building": "正好工業大廈", + "address": "新界荃灣區橫龍街78-84號正好工業大廈" + }, + { + "building": "綠楊新?", + "address": "新界荃灣區蕙荃路22-66號" + }, + { + "building": "怡景園", + "address": "新界荃灣區蕙荃路53-61號怡景園" + }, + { + "building": "帝華軒", + "address": "新界荃灣區龍騰路8號帝華軒" + }, + { + "building": "康睦庭園第2座", + "address": "新界荃灣區聯仁街28號康睦庭園第2座" + }, + { + "building": "康睦庭園第1座", + "address": "新界荃灣區鹹田街89號康睦庭園第1座" + }, + { + "building": "逸廬", + "address": "新界荃灣區顯達路1-8號逸廬" + }, + { + "building": "流芳園", + "address": "新界荃灣區顯達路9號流芳園" + }, + { + "building": "寶成樓", + "address": "新界荃灣區鱟地坊24-72號寶成樓" + }, + { + "building": "富華樓", + "address": "新界荃灣區鱟地坊32-36號富華樓" + }, + { + "building": "祐強樓", + "address": "新界荃灣區鱟地坊40-46號祐強樓" + }, + { + "building": "祐建樓", + "address": "新界荃灣區鱟地坊48-68號祐建樓" + }, + { + "building": "天保大樓", + "address": "新界荃灣區鱟地坊74號天保大樓" + }, + { + "building": "新葵芳花園", + "address": "新界葵青區" + }, + { + "building": "新華銀行大廈", + "address": "新界葵青區KCTL171和宜合道122號新華銀行大廈" + }, + { + "building": "九龍貿易中心第一座", + "address": "新界葵青區KCTL215葵昌路51號九龍貿易中心第一座" + }, + { + "building": "永康工業大廈", + "address": "新界葵青區KCTL352葵豐街18-26號永康工業大廈" + }, + { + "building": "南星工業大廈", + "address": "新界葵青區KCTL46國瑞路57-59號南星工業大廈" + }, + { + "building": "葵匯工業大廈", + "address": "新界葵青區LOT282打磚坪街89號葵匯工業大廈" + }, + { + "building": "萬安中心", + "address": "新界葵青區LOT287藍田街25-27號萬安中心" + }, + { + "building": "安盛大廈", + "address": "新界葵青區大白田街25號安盛大廈" + }, + { + "building": "貴盛工業大廈", + "address": "新界葵青區大連排道" + }, + { + "building": "TLP 132", + "address": "新界葵青區大連排道132-134號TLP 132" + }, + { + "building": "建華工業大廈", + "address": "新界葵青區大連排道136-138號建華工業大廈" + }, + { + "building": "金豐工業大廈", + "address": "新界葵青區大連排道144-150號金豐工業大廈" + }, + { + "building": "金龍工業中心第1座", + "address": "新界葵青區大連排道152-160號金龍工業中心第1座" + }, + { + "building": "偉倫中心第一期", + "address": "新界葵青區大連排道202-210號偉倫中心第一期" + }, + { + "building": "宏達工業中心", + "address": "新界葵青區大連排道21-33號宏達工業中心" + }, + { + "building": "金星工業大廈", + "address": "新界葵青區大連排道45-51號金星工業大廈" + }, + { + "building": "樂聲工業中心", + "address": "新界葵青區大連排道58-66號樂聲工業中心" + }, + { + "building": "瑞榮工業大廈", + "address": "新界葵青區大圓街12-22號瑞榮工業大廈" + }, + { + "building": "美羅工業大廈", + "address": "新界葵青區大圓街2-10號美羅工業大廈" + }, + { + "building": "宏華大廈", + "address": "新界葵青區大廈街1號宏華大廈" + }, + { + "building": "永和樓", + "address": "新界葵青區大廈街29號永和樓" + }, + { + "building": "有章樓", + "address": "新界葵青區大廈街31號有章樓" + }, + { + "building": "葵賢苑葵義閣", + "address": "新界葵青區大廈街43號葵賢苑葵義閣" + }, + { + "building": "仁雅大廈", + "address": "新界葵青區大廈街5-17號仁雅大廈" + }, + { + "building": "葵康苑葵明閣", + "address": "新界葵青區大窩口道150號葵康苑葵明閣" + }, + { + "building": "昌榮樓", + "address": "新界葵青區大隴街103-109號昌榮樓" + }, + { + "building": "昌盛樓", + "address": "新界葵青區大隴街113-127號昌盛樓" + }, + { + "building": "葵華大廈", + "address": "新界葵青區大隴街11號葵華大廈" + }, + { + "building": "葵都大廈", + "address": "新界葵青區大隴街139號葵都大廈" + }, + { + "building": "葵涌志昌樓", + "address": "新界葵青區大隴街14-22號葵涌志昌樓" + }, + { + "building": "怡勝花園", + "address": "新界葵青區大隴街153號怡勝花園" + }, + { + "building": "銀行大廈", + "address": "新界葵青區大隴街23-51號銀行大廈" + }, + { + "building": "葵龍大廈", + "address": "新界葵青區大隴街53-73號葵龍大廈" + }, + { + "building": "友明大廈", + "address": "新界葵青區大隴街89-101號友明大廈" + }, + { + "building": "華發工業大廈", + "address": "新界葵青區工業街10-14號華發工業大廈" + }, + { + "building": "屈臣氏中心", + "address": "新界葵青區工業街16-22號屈臣氏中心" + }, + { + "building": "美安工業大廈", + "address": "新界葵青區工業街17-21號美安工業大廈" + }, + { + "building": "美聯工業大廈", + "address": "新界葵青區工業街23-31號美聯工業大廈" + }, + { + "building": "威信物流中心", + "address": "新界葵青區工業街24-28號威信物流中心" + }, + { + "building": "力豐工業大廈", + "address": "新界葵青區工業街2-8號力豐工業大廈" + }, + { + "building": "捷聯工業大廈", + "address": "新界葵青區工業街30-32號捷聯工業大廈" + }, + { + "building": "粵南工業大廈", + "address": "新界葵青區工業街7-9號粵南工業大廈" + }, + { + "building": "美豐大廈", + "address": "新界葵青區仁芳街2-14號美豐大廈" + }, + { + "building": "青宏苑", + "address": "新界葵青區牙鷹洲街1號青宏苑" + }, + { + "building": "青雅苑", + "address": "新界葵青區牙鷹洲街3號青雅苑" + }, + { + "building": "灝景灣", + "address": "新界葵青區牙鷹洲街8號" + }, + { + "building": "寶星中心A座", + "address": "新界葵青區打磚坪街1-25號" + }, + { + "building": "有利工業貨倉大廈", + "address": "新界葵青區打磚坪街16-24號有利工業貨倉大廈" + }, + { + "building": "建明樓", + "address": "新界葵青區打磚坪街29-33號建明樓" + }, + { + "building": "松林工業大廈", + "address": "新界葵青區打磚坪街40-42號松林工業大廈" + }, + { + "building": "達明工業大廈", + "address": "新界葵青區打磚坪街44-52號達明工業大廈" + }, + { + "building": "華基工業大廈", + "address": "新界葵青區打磚坪街49-53號華基工業大廈" + }, + { + "building": "中央工業大廈", + "address": "新界葵青區打磚坪街57-61號中央工業大廈" + }, + { + "building": "冠和工業大廈", + "address": "新界葵青區打磚坪街63-75號冠和工業大廈" + }, + { + "building": "和豐工業中心", + "address": "新界葵青區打磚坪街68號和豐工業中心" + }, + { + "building": "生興工業大廈", + "address": "新界葵青區打磚坪街81-83號生興工業大廈" + }, + { + "building": "維京科技商業中心", + "address": "新界葵青區打磚坪街93號維京科技商業中心" + }, + { + "building": "金富工業大廈", + "address": "新界葵青區打磚坪街97-103號金富工業大廈" + }, + { + "building": "榮來工業大廈", + "address": "新界葵青區永立街8-14號榮來工業大廈" + }, + { + "building": "佳寶食品中心", + "address": "新界葵青區永建路19-21號佳寶食品中心" + }, + { + "building": "合豐貨倉", + "address": "新界葵青區永建路7-11號合豐貨倉" + }, + { + "building": "瑞興皮廠", + "address": "新界葵青區永建路8-12號瑞興皮廠" + }, + { + "building": "宏貿中心", + "address": "新界葵青區永健路15號宏貿中心" + }, + { + "building": "厚豐工業大廈", + "address": "新界葵青區永健路1-5號厚豐工業大廈" + }, + { + "building": "高威工業中心", + "address": "新界葵青區永健路16-20號高威工業中心" + }, + { + "building": "葵灣工業大廈", + "address": "新界葵青區永健路2號葵灣工業大廈" + }, + { + "building": "永健工業大廈", + "address": "新界葵青區永健路4-6號永健工業大廈" + }, + { + "building": "華利工業中心", + "address": "新界葵青區永基路13-15號華利工業中心" + }, + { + "building": "優之良品中心", + "address": "新界葵青區永基路18號優之良品中心" + }, + { + "building": "椰林閣集團大廈", + "address": "新界葵青區永基路22-24號椰林閣集團大廈" + }, + { + "building": "美基工業大廈", + "address": "新界葵青區永基路23-29號美基工業大廈" + }, + { + "building": "永昇工業大廈", + "address": "新界葵青區永基路26-30號永昇工業大廈" + }, + { + "building": "永豐工業大廈", + "address": "新界葵青區永業街22-26號永豐工業大廈" + }, + { + "building": "祟利中心", + "address": "新界葵青區永賢街9號祟利中心" + }, + { + "building": "葵英大廈", + "address": "新界葵青區石文徑1-5號葵英大廈" + }, + { + "building": "盈豐商業大廈", + "address": "新界葵青區石文徑20號盈豐商業大廈" + }, + { + "building": "金珮樓", + "address": "新界葵青區石文徑8-18號金珮樓" + }, + { + "building": "葵涌大廈", + "address": "新界葵青區石貝街10-30號葵涌大廈" + }, + { + "building": "建興工業大廈", + "address": "新界葵青區石建街17-23號建興工業大廈" + }, + { + "building": "國寶樓", + "address": "新界葵青區石蔭路101-111號國寶樓" + }, + { + "building": "葵發大廈", + "address": "新界葵青區石蔭路108號葵發大廈" + }, + { + "building": "錦華大廈", + "address": "新界葵青區石蔭路21號錦華大廈" + }, + { + "building": "葵麗大廈", + "address": "新界葵青區石蔭路29-45號葵麗大廈" + }, + { + "building": "金石樓南座", + "address": "新界葵青區石蔭路48-62號金石樓南座" + }, + { + "building": "金石樓商場", + "address": "新界葵青區石蔭路48-62號金石樓商場" + }, + { + "building": "天安樓", + "address": "新界葵青區石蔭路76-96號天安樓" + }, + { + "building": "光輝樓", + "address": "新界葵青區石蔭路85-99號光輝樓" + }, + { + "building": "萬成大廈", + "address": "新界葵青區禾塘咀街109-115號萬成大廈" + }, + { + "building": "珠寶大廈", + "address": "新界葵青區禾塘咀街117-125號珠寶大廈" + }, + { + "building": "錦華樓", + "address": "新界葵青區禾塘咀街127-133號錦華樓" + }, + { + "building": "香港毛紡工業大廈", + "address": "新界葵青區禾塘咀街31-39號香港毛紡工業大廈" + }, + { + "building": "世和中心", + "address": "新界葵青區禾塘咀街55號世和中心" + }, + { + "building": "葵和大廈", + "address": "新界葵青區禾塘咀街85號葵和大廈" + }, + { + "building": "美葵大廈及美涌大廈商場", + "address": "新界葵青區禾塘咀街87-89號美葵大廈及美涌大廈商場" + }, + { + "building": "美葵大廈", + "address": "新界葵青區禾塘咀街87號美葵大廈" + }, + { + "building": "美涌大廈", + "address": "新界葵青區禾塘咀街89號美涌大廈" + }, + { + "building": "昌利大廈", + "address": "新界葵青區光輝圍11-15號昌利大廈" + }, + { + "building": "昌發大廈", + "address": "新界葵青區光輝圍21號昌發大廈" + }, + { + "building": "葵景大廈", + "address": "新界葵青區光輝圍27-39號葵景大廈" + }, + { + "building": "昌偉大廈", + "address": "新界葵青區光輝圍39A號昌偉大廈" + }, + { + "building": "萬成樓", + "address": "新界葵青區光輝圍41-45號萬成樓" + }, + { + "building": "光輝大廈", + "address": "新界葵青區光輝圍7-9號光輝大廈" + }, + { + "building": "葵興工業大廈", + "address": "新界葵青區圳邊街10-18號葵興工業大廈" + }, + { + "building": "萬通大廈", + "address": "新界葵青區圳邊街15-19號萬通大廈" + }, + { + "building": "瑞景大樓", + "address": "新界葵青區和宜合" + }, + { + "building": "成城大廈", + "address": "新界葵青區和宜合道102號成城大廈" + }, + { + "building": "橙色空間-葵涌", + "address": "新界葵青區和宜合道119號橙色空間-葵涌" + }, + { + "building": "聯發工業第三大廈", + "address": "新界葵青區和宜合道123-129號聯發工業第三大廈" + }, + { + "building": "利和大廈", + "address": "新界葵青區和宜合道130號利和大廈" + }, + { + "building": "勝利工業大廈", + "address": "新界葵青區和宜合道151-157號勝利工業大廈" + }, + { + "building": "華寶工業大廈", + "address": "新界葵青區和宜合道159-165號華寶工業大廈" + }, + { + "building": "金威工業大廈", + "address": "新界葵青區和宜合道167-175號金威工業大廈" + }, + { + "building": "誼發大廈", + "address": "新界葵青區和宜合道192-212號誼發大廈" + }, + { + "building": "葵涌花園", + "address": "新界葵青區和宜合道50-56號葵涌花園" + }, + { + "building": "裕華貨倉大廈", + "address": "新界葵青區和宜合道57-61號裕華貨倉大廈" + }, + { + "building": "恭誠樓", + "address": "新界葵青區和宜合道58-64號恭誠樓" + }, + { + "building": "麗晶中心", + "address": "新界葵青區和宜合道63號麗晶中心" + }, + { + "building": "金恆樓", + "address": "新界葵青區和宜合道66-72號金恆樓" + }, + { + "building": "宜和樓", + "address": "新界葵青區和宜合道74-88號宜和樓" + }, + { + "building": "恭誠工廠大廈", + "address": "新界葵青區和宜合道75-87號恭誠工廠大廈" + }, + { + "building": "百新大廈", + "address": "新界葵青區和宜合道97-107號百新大廈" + }, + { + "building": "同珍工業大廈", + "address": "新界葵青區昌榮路9-11號同珍工業大廈" + }, + { + "building": "時力工業大廈", + "address": "新界葵青區長好街8號時力工業大廈" + }, + { + "building": "青衣工業中心", + "address": "新界葵青區長達路1-33號青衣工業中心" + }, + { + "building": "偉力工業大廈", + "address": "新界葵青區長達路14-20號偉力工業大廈" + }, + { + "building": "金源中心", + "address": "新界葵青區長達路2-12號金源中心" + }, + { + "building": "方氏立信工業大廈", + "address": "新界葵青區長達路22-28號方氏立信工業大廈" + }, + { + "building": "海欣花園", + "address": "新界葵青區長環街11號海欣花園" + }, + { + "building": "嘉翠園", + "address": "新界葵青區青山公路 - 葵涌段382號嘉翠園" + }, + { + "building": "葵星中心", + "address": "新界葵青區青山公路 - 葵涌段412-416號葵星中心" + }, + { + "building": "偉賢樓", + "address": "新界葵青區青山公路 - 葵涌段430-436號偉賢樓" + }, + { + "building": "東寶樓", + "address": "新界葵青區青山公路 - 葵涌段464-468號東寶樓" + }, + { + "building": "和記新?", + "address": "新界葵青區青山公路 - 葵涌段482號" + }, + { + "building": "萬勝工業大廈", + "address": "新界葵青區青山公路-葵涌段307-311號萬勝工業大廈" + }, + { + "building": "興時工業大廈", + "address": "新界葵青區青山公路-葵涌段433-441號興時工業大廈" + }, + { + "building": "紅A中心", + "address": "新界葵青區青山公路–葵涌段443-451號紅A中心" + }, + { + "building": "葵豐樓", + "address": "新界葵青區青山公路–葵涌段456-458號葵豐樓" + }, + { + "building": "鴻運樓", + "address": "新界葵青區青山公路–葵涌段472-478號鴻運樓" + }, + { + "building": "嘉寶大廈", + "address": "新界葵青區青山公路–葵涌段499號嘉寶大廈" + }, + { + "building": "友成樓", + "address": "新界葵青區青山道501號友成樓" + }, + { + "building": "昌宏大廈", + "address": "新界葵青區青山道539號昌宏大廈" + }, + { + "building": "瑞康工業大廈", + "address": "新界葵青區青山道547-549號瑞康工業大廈" + }, + { + "building": "藍澄灣", + "address": "新界葵青區青衣路1號" + }, + { + "building": "青華苑", + "address": "新界葵青區青芊街22號青華苑" + }, + { + "building": "青盛苑", + "address": "新界葵青區青康路10號青盛苑" + }, + { + "building": "青俊苑", + "address": "新界葵青區青康路2B號青俊苑" + }, + { + "building": "青逸軒", + "address": "新界葵青區青敬路2號青逸軒" + }, + { + "building": "盈翠半島", + "address": "新界葵青區青敬路33號盈翠半島" + }, + { + "building": "宏福花園1座", + "address": "新界葵青區青敬路75號" + }, + { + "building": "海悅花園", + "address": "新界葵青區青敬路77號海悅花園" + }, + { + "building": "綠悠雅苑", + "address": "新界葵青區青綠街18號綠悠雅苑" + }, + { + "building": "偉景花園", + "address": "新界葵青區青綠街1號偉景花園" + }, + { + "building": "青怡花園", + "address": "新界葵青區青綠街7-19號青怡花園" + }, + { + "building": "月波樓", + "address": "新界葵青區信芳街10-20號月波樓" + }, + { + "building": "濠勝閣", + "address": "新界葵青區信芳街30-42號濠勝閣" + }, + { + "building": "葵褔大廈", + "address": "新界葵青區信芳街35-37號葵褔大廈" + }, + { + "building": "名堂大樓", + "address": "新界葵青區屏富徑" + }, + { + "building": "名德大樓", + "address": "新界葵青區屏富徑4-16號名德大樓" + }, + { + "building": "名賢大樓", + "address": "新界葵青區屏麗徑4-16號名賢大樓" + }, + { + "building": "昌鴻大廈", + "address": "新界葵青區美芳街2-14號昌鴻大廈" + }, + { + "building": "翠瑤苑", + "address": "新界葵青區荔枝嶺路1號翠瑤苑" + }, + { + "building": "浩景臺", + "address": "新界葵青區荔崗街11號浩景臺" + }, + { + "building": "賢麗苑賢光閣", + "address": "新界葵青區荔景山路180號賢麗苑賢光閣" + }, + { + "building": "賢麗苑賢德閣", + "address": "新界葵青區荔景山路180號賢麗苑賢德閣" + }, + { + "building": "荔灣花園", + "address": "新界葵青區荔景山路272號荔灣花園" + }, + { + "building": "華豐園", + "address": "新界葵青區荔景山路274號華豐園" + }, + { + "building": "荔欣苑荔影閣", + "address": "新界葵青區荔景山路278號荔欣苑荔影閣" + }, + { + "building": "樂園A座", + "address": "新界葵青區荔景山路280號樂園A座" + }, + { + "building": "高芳樓", + "address": "新界葵青區高芳街27-29號高芳樓" + }, + { + "building": "龍騰大廈", + "address": "新界葵青區高芳街31-41號龍騰大廈" + }, + { + "building": "萬利工業大廈", + "address": "新界葵青區健康街13號萬利工業大廈" + }, + { + "building": "泉基工業大廈", + "address": "新界葵青區健康街15-23號泉基工業大廈" + }, + { + "building": "致華工業大廈", + "address": "新界葵青區健康街1-7號致華工業大廈" + }, + { + "building": "恒亞中心", + "address": "新界葵青區健康街18號恒亞中心" + }, + { + "building": "飛亞工業中心", + "address": "新界葵青區健康街2-6號飛亞工業中心" + }, + { + "building": "同珍醬油工埸", + "address": "新界葵青區國瑞路1-9號同珍醬油工埸" + }, + { + "building": "TOPPY TOWER", + "address": "新界葵青區國瑞路45-51號TOPPY TOWER" + }, + { + "building": "金運工業大廈第二座", + "address": "新界葵青區梨木道32-50號金運工業大廈第二座" + }, + { + "building": "億萬工業中心", + "address": "新界葵青區梨木道4-30號億萬工業中心" + }, + { + "building": "根德工業大廈", + "address": "新界葵青區梨木道57-61號根德工業大廈" + }, + { + "building": "萬美達工業大廈", + "address": "新界葵青區梨木道58-64號萬美達工業大廈" + }, + { + "building": "中僑貨倉大廈", + "address": "新界葵青區梨木道63-71號中僑貨倉大廈" + }, + { + "building": "海暉中心", + "address": "新界葵青區梨木道73號海暉中心" + }, + { + "building": "亞洲貿易中心", + "address": "新界葵青區梨木道79號亞洲貿易中心" + }, + { + "building": "達利中心", + "address": "新界葵青區梨木道88號達利中心" + }, + { + "building": "寧峰苑", + "address": "新界葵青區梨木道99號寧峰苑" + }, + { + "building": "京寶大廈", + "address": "新界葵青區盛芳街17-19號京寶大廈" + }, + { + "building": "寬德大廈", + "address": "新界葵青區盛芳街38-44號寬德大廈" + }, + { + "building": "葵芳商業中心", + "address": "新界葵青區盛芳街7號葵芳商業中心" + }, + { + "building": "美景花園", + "address": "新界葵青區細山路2-16號美景花園" + }, + { + "building": "葵順工業中心", + "address": "新界葵青區貨櫃碼頭路51-63號葵順工業中心" + }, + { + "building": "鐘意恒勝中心", + "address": "新界葵青區貨櫃碼頭路71-75號鐘意恒勝中心" + }, + { + "building": "永得利廣場第2座", + "address": "新界葵青區貨櫃碼頭路88號永得利廣場第2座" + }, + { + "building": "信興中心", + "address": "新界葵青區勝耀街4-8號信興中心" + }, + { + "building": "協德大廈", + "address": "新界葵青區智芳街1-3號協德大廈" + }, + { + "building": "福蔭大廈", + "address": "新界葵青區童子街2-4號福蔭大廈" + }, + { + "building": "南華冷房大廈", + "address": "新界葵青區華星街13-17號南華冷房大廈" + }, + { + "building": "保盈工業大廈", + "address": "新界葵青區華星街16-18號保盈工業大廈" + }, + { + "building": "安達工業大廈", + "address": "新界葵青區華星街2-6號安達工業大廈" + }, + { + "building": "華達工業中心", + "address": "新界葵青區華星街8號華達工業中心" + }, + { + "building": "海峰花園", + "address": "新界葵青區華景山路3號海峰花園" + }, + { + "building": "華景山莊", + "address": "新界葵青區華景山路9號華景山莊" + }, + { + "building": "翠怡花園", + "address": "新界葵青區楓樹窩路1號翠怡花園" + }, + { + "building": "萬事達貨倉", + "address": "新界葵青區業成街14-15號萬事達貨倉" + }, + { + "building": "東聯工業大廈", + "address": "新界葵青區業成街1-4號東聯工業大廈" + }, + { + "building": "星星中心", + "address": "新界葵青區業成街16-18號星星中心" + }, + { + "building": "業成工業中心", + "address": "新界葵青區業成街19-21號業成工業中心" + }, + { + "building": "網豐物流中心", + "address": "新界葵青區業成街9-12號網豐物流中心" + }, + { + "building": "中信國際中心", + "address": "新界葵青區葵安道8號中信國際中心" + }, + { + "building": "蘇濤工商中心", + "address": "新界葵青區葵秀路11-15號蘇濤工商中心" + }, + { + "building": "兩業工業大廈", + "address": "新界葵青區葵秀路17-21號兩業工業大廈" + }, + { + "building": "瑞森工業大廈", + "address": "新界葵青區葵秀路8-10號瑞森工業大廈" + }, + { + "building": "羅氏美光發展大廈", + "address": "新界葵青區葵定路10-16號羅氏美光發展大廈" + }, + { + "building": "美適工業大廈", + "address": "新界葵青區葵定路1-11號美適工業大廈" + }, + { + "building": "生記工業大廈", + "address": "新界葵青區葵定路18-30號生記工業大廈" + }, + { + "building": "裕林工業大廈", + "address": "新界葵青區葵定路32-40號裕林工業大廈" + }, + { + "building": "東方工業大廈", + "address": "新界葵青區葵定路42-50號東方工業大廈" + }, + { + "building": "KC100", + "address": "新界葵青區葵昌路100-110號KC100" + }, + { + "building": "美順工業大廈", + "address": "新界葵青區葵昌路18-24號美順工業大廈" + }, + { + "building": "豪華工業大廈", + "address": "新界葵青區葵昌路26-38號豪華工業大廈" + }, + { + "building": "東海工業大廈", + "address": "新界葵青區葵昌路29-39號東海工業大廈" + }, + { + "building": "葵昌中心", + "address": "新界葵青區葵昌路50號葵昌中心" + }, + { + "building": "貿易之都", + "address": "新界葵青區葵昌路52-56號貿易之都" + }, + { + "building": "永祥工業大廈", + "address": "新界葵青區葵昌路58-70號永祥工業大廈" + }, + { + "building": "富都工業大廈", + "address": "新界葵青區葵昌路78-84號富都工業大廈" + }, + { + "building": "萬泰中心", + "address": "新界葵青區葵昌路8號萬泰中心" + }, + { + "building": "美和工業大廈", + "address": "新界葵青區葵昌路90-98號美和工業大廈" + }, + { + "building": "貴豐工業大廈", + "address": "新界葵青區葵昌路9-15號貴豐工業大廈" + }, + { + "building": "德昌大廈", + "address": "新界葵青區葵涌道1001號德昌大廈" + }, + { + "building": "珍寶大樓", + "address": "新界葵青區葵涌道1009-1011號珍寶大樓" + }, + { + "building": "達利國際中心", + "address": "新界葵青區葵喜街1-11號達利國際中心" + }, + { + "building": "永恆工業大廈", + "address": "新界葵青區葵喜街13-29號永恆工業大廈" + }, + { + "building": "華褔工業大廈", + "address": "新界葵青區葵喜街14-16號華褔工業大廈" + }, + { + "building": "樂基工業大廈", + "address": "新界葵青區葵喜街18-24號樂基工業大廈" + }, + { + "building": "金發工業大廈", + "address": "新界葵青區葵喜街26-32號金發工業大廈" + }, + { + "building": "葵涌廣場", + "address": "新界葵青區葵富路7-11號葵涌廣場" + }, + { + "building": "大德工業大廈", + "address": "新界葵青區葵發路2-12號大德工業大廈" + }, + { + "building": "葵芳閣", + "address": "新界葵青區葵義路15號葵芳閣" + }, + { + "building": "合豐樓", + "address": "新界葵青區葵義路15號葵芳閣3座" + }, + { + "building": "好爵中心", + "address": "新界葵青區葵義路2-10號好爵中心" + }, + { + "building": "金城工業大廈", + "address": "新界葵青區葵榮路1-11號金城工業大廈" + }, + { + "building": "安發工業大廈", + "address": "新界葵青區葵榮路12-18號安發工業大廈" + }, + { + "building": "錦濱工業大廈", + "address": "新界葵青區葵榮路13-19號錦濱工業大廈" + }, + { + "building": "Edge", + "address": "新界葵青區葵榮路30-34號Edge" + }, + { + "building": "中信電訊大廈", + "address": "新界葵青區葵福路93號中信電訊大廈" + }, + { + "building": "葵德工業中心第一座", + "address": "新界葵青區葵德街15-33號葵德工業中心第一座" + }, + { + "building": "金德工業大廈", + "address": "新界葵青區葵德街16-26號金德工業大廈" + }, + { + "building": "裕林工業中心", + "address": "新界葵青區葵樂街2-28號裕林工業中心" + }, + { + "building": "葵俊苑", + "address": "新界葵青區葵興路" + }, + { + "building": "葵涌中心", + "address": "新界葵青區葵興路100-102號葵涌中心" + }, + { + "building": "月海灣第一座", + "address": "新界葵青區葵聯路100號月海灣" + }, + { + "building": "華業工業大廈", + "address": "新界葵青區葵豐街" + }, + { + "building": "盈業工業大廈", + "address": "新界葵青區葵豐街1-15號盈業工業大廈" + }, + { + "building": "華豐工業中心第二期", + "address": "新界葵青區葵豐街33-39號華豐工業中心第二期" + }, + { + "building": "安褔工業大廈", + "address": "新界葵青區葵豐街41-45號安褔工業大廈" + }, + { + "building": "大鴻輝(葵涌)中心", + "address": "新界葵青區葵豐街44-52號大鴻輝(葵涌)中心" + }, + { + "building": "褔業大廈", + "address": "新界葵青區葵豐街53-57號褔業大廈" + }, + { + "building": "東方物流中心", + "address": "新界葵青區嘉定路1-11號東方物流中心" + }, + { + "building": "裕林第二工業大廈", + "address": "新界葵青區嘉定路8-14號裕林第二工業大廈" + }, + { + "building": "生昌工業大廈", + "address": "新界葵青區嘉慶路11-13號生昌工業大廈" + }, + { + "building": "港美中心", + "address": "新界葵青區嘉慶路12號港美中心" + }, + { + "building": "冠華鏡廠第三工業大廈", + "address": "新界葵青區嘉慶路5-9號冠華鏡廠第三工業大廈" + }, + { + "building": "僑光工業大廈", + "address": "新界葵青區嘉慶路6-10號僑光工業大廈" + }, + { + "building": "守運樓", + "address": "新界葵青區榮芳路1-5號守運樓" + }, + { + "building": "葵樂大廈", + "address": "新界葵青區榮芳路73-85號葵樂大廈" + }, + { + "building": "葵祥大廈", + "address": "新界葵青區榮芳路97-111號葵祥大廈" + }, + { + "building": "曉峰園", + "address": "新界葵青區寮肚路3號曉峰園" + }, + { + "building": "德泰大廈", + "address": "新界葵青區德士古道35-43號德泰大廈" + }, + { + "building": "德大閣", + "address": "新界葵青區德大徑3號德大閣" + }, + { + "building": "運芳洋樓", + "address": "新界葵青區興芳路180號運芳洋樓" + }, + { + "building": "葵豐大廈", + "address": "新界葵青區興芳路192-202號葵豐大廈" + }, + { + "building": "新都會廣場", + "address": "新界葵青區興芳路223號新都會廣場" + }, + { + "building": "芊紅居", + "address": "新界葵青區興盛路91號芊紅居" + }, + { + "building": "曉?居,第1期曉?居", + "address": "新界葵青區鍾山臺2-3號,曉?居(第一期)" + }, + { + "building": "曉峰豪園", + "address": "新界葵青區鍾山臺28號曉峰豪園" + }, + { + "building": "嘉富閣", + "address": "新界葵青區鍾山臺3B號嘉富閣" + }, + { + "building": "鐘山小築鍾山小築(第一座)", + "address": "新界葵青區鍾山臺4-5號鍾山小築(第一座)" + }, + { + "building": "聯發工業第一大廈", + "address": "新界葵青區藍田街2-16號聯發工業第一大廈" + }, + { + "building": "馮敬工業大廈", + "address": "新界葵青區藍田街24-28號馮敬工業大廈" + }, + { + "building": "永樂中心", + "address": "新界葵青區藍田街29號永樂中心" + }, + { + "building": "金涌工業大廈", + "address": "新界葵青區藍田街30-38號金涌工業大廈" + }, + { + "building": "金葵工業大廈", + "address": "新界葵青區藍田街30-38號金葵工業大廈" + }, + { + "building": "大成工業大廈", + "address": "新界葵青區藍田街31-35號大成工業大廈" + }, + { + "building": "緯興工業大廈", + "address": "新界葵青區藍田街37-41號緯興工業大廈" + }, + { + "building": "榮達工業大廈", + "address": "新界葵青區藍田街7-13號榮達工業大廈" + }, + { + "building": "源輝閣", + "address": "新界葵青區麗祖路53號悅麗苑麗華閣" + }, + { + "building": "悅麗苑", + "address": "新界葵青區麗祖路55號" + }, + { + "building": "怡峰苑", + "address": "新界葵青區寶梨街8號" + }, + { + "building": "玫瑰園第2A座", + "address": "新界離島區" + }, + { + "building": "愉景灣", + "address": "新界離島區" + }, + { + "building": "碧濤", + "address": "新界離島區" + }, + { + "building": "璧如臺", + "address": "新界離島區" + }, + { + "building": "東堤小築", + "address": "新界離島區LOT 1491號東堤小築" + }, + { + "building": "Ngan Wai Court銀蔚苑", + "address": "新界離島區Ngan Wai Court銀蔚苑" + }, + { + "building": "映灣園映濤軒", + "address": "新界離島區TCTL5健東路1號映灣園映濤軒" + }, + { + "building": "澄碧?", + "address": "新界離島區大" + }, + { + "building": "長洲金銀灣", + "address": "新界離島區大石口路1號長洲金銀灣" + }, + { + "building": "龍軒苑", + "address": "新界離島區大澳道80號龍軒苑" + }, + { + "building": "圓桌村", + "address": "新界離島區大嶼山梅窩 1- 30號" + }, + { + "building": "東灣豪園", + "address": "新界離島區山頂村26A號東灣豪園" + }, + { + "building": "碧浪苑", + "address": "新界離島區山頂道22A號碧浪苑" + }, + { + "building": "天福花園", + "address": "新界離島區山頂道48號天福花園" + }, + { + "building": "安榮中心", + "address": "新界離島區北社後街" + }, + { + "building": "金湖花園", + "address": "新界離島區西灣路3-3B號金湖花園" + }, + { + "building": "長苑", + "address": "新界離島區和順里7號" + }, + { + "building": "翠濤花園", + "address": "新界離島區坪利路2號翠濤花園" + }, + { + "building": "藍天海岸", + "address": "新界離島區東涌海濱路12號藍天海岸" + }, + { + "building": "海堤灣畔", + "address": "新界離島區東涌海濱路8號海堤灣畔" + }, + { + "building": "海景花園", + "address": "新界離島區花屏路108號海景花園" + }, + { + "building": "花屏山莊第一座", + "address": "新界離島區花屏路13號花屏山莊" + }, + { + "building": "東環", + "address": "新界離島區迎康街 6號" + }, + { + "building": "怡園", + "address": "新界離島區長洲山頂道" + }, + { + "building": "長洲山頂道 59號", + "address": "新界離島區長洲山頂道 59號連富苑" + }, + { + "building": "蝶崗", + "address": "新界離島區長富街" + }, + { + "building": "海桐苑", + "address": "新界離島區長富街33號海桐苑" + }, + { + "building": "長沙別墅", + "address": "新界離島區長富街6-8號長沙別墅" + }, + { + "building": "桂濤花園第一A座", + "address": "新界離島區長貴路9號桂濤花園第一A座" + }, + { + "building": "坪洲山頂花園", + "address": "新界離島區南山路10 -12號坪洲" + }, + { + "building": "坪貴別墅", + "address": "新界離島區南山路14號坪貴別墅" + }, + { + "building": "海堤居", + "address": "新界離島區海堤徑1號海堤居" + }, + { + "building": "海堤居海濤閣", + "address": "新界離島區海堤徑26號海堤居海濤閣" + }, + { + "building": "海寧居(第1-11座)", + "address": "新界離島區海寧徑1-11號海寧居(第1-11座)" + }, + { + "building": "海寧居海愉閣", + "address": "新界離島區海寧徑12號海寧居海愉閣" + }, + { + "building": "海藍居海藍閣", + "address": "新界離島區海藍徑12號海藍居海藍閣" + }, + { + "building": "海藍徑1號", + "address": "新界離島區海藍徑1號海藍居" + }, + { + "building": "愉景灣", + "address": "新界離島區畔山徑11號愉景灣,畔峰" + }, + { + "building": "悅堤", + "address": "新界離島區畔堤徑 18號悅堤" + }, + { + "building": "悅濤軒", + "address": "新界離島區健東路1號悅濤軒" + }, + { + "building": "聽濤軒", + "address": "新界離島區健東路1號聽濤軒" + }, + { + "building": "映灣園 海珀名邸", + "address": "新界離島區健東路2號映灣園 海珀名邸" + }, + { + "building": "賞濤軒", + "address": "新界離島區健東路2號賞濤軒" + }, + { + "building": "銀中心大廈", + "address": "新界離島區梅窩碼頭路10號銀中心大廈" + }, + { + "building": "銀輝大廈", + "address": "新界離島區梅窩碼頭路11號銀輝大廈" + }, + { + "building": "海灣樓", + "address": "新界離島區梅窩碼頭路13號海灣樓" + }, + { + "building": "福安閣", + "address": "新界離島區梅窩碼頭路16號福安閣" + }, + { + "building": "卓濤軒", + "address": "新界離島區梅窩碼頭路18A號卓濤軒" + }, + { + "building": "海愉花園", + "address": "新界離島區梅窩碼頭路19號海愉花園" + }, + { + "building": "梅窩大廈", + "address": "新界離島區梅窩碼頭路號梅窩大廈" + }, + { + "building": "遠東發展坪洲大廈A座", + "address": "新界離島區圍仔街15號遠東發展坪洲大廈A座" + }, + { + "building": "時峰", + "address": "新界離島區愉景灣道" + }, + { + "building": "頤峰", + "address": "新界離島區愉景灣道13號" + }, + { + "building": "康慧台", + "address": "新界離島區愉景灣道3號康慧台" + }, + { + "building": "聖家台", + "address": "新界離島區聖家路9 -16號聖家台" + }, + { + "building": "富瑤小築", + "address": "新界離島區號富瑤小築" + }, + { + "building": "銀河苑銀旭閣", + "address": "新界離島區銀河苑銀旭閣" + }, + { + "building": "銀河苑銀朗閣", + "address": "新界離島區銀河苑銀朗閣" + }, + { + "building": "海景大廈", + "address": "新界離島區銀運路1號海景大廈" + }, + { + "building": "家樂閣", + "address": "新界離島區銀運路2號家樂閣" + }, + { + "building": "銀景中心", + "address": "新界離島區銀礦灣路8號銀景中心" + }, + { + "building": "愉景廣場", + "address": "新界離島區廣場徑8-12號愉景廣場" + }, + { + "building": "東堤灣畔", + "address": "新界離島區慶東街1號東堤灣畔" + }, + { + "building": "坪麗苑", + "address": "新界離島區樂坪街2號坪麗苑" + }, + { + "building": "天利苑", + "address": "新界離島區龍田街8號天利苑." + }, + { + "building": "嘉暉花園", + "address": "新界離島區寶坪街12號嘉暉花園" + }, + { + "building": "寶峰徑1號", + "address": "新界離島區寶峰徑1號愉景灣,寶峰" + }, + { + "building": "蘅峰", + "address": "新界離島區蘅暉徑" + }, + { + "building": "長洲駿興臺", + "address": "新界離島區觀音灣路3號長洲駿興臺" + }, + { + "building": "駿興臺", + "address": "新界離島區觀音灣路3號駿興臺" + }, + { + "building": "快活閣", + "address": "錦?花園30號" + }, + { + "building": "全‧城?", + "address": "荃灣大河道98號" + }, + { + "building": "君豪峰", + "address": "?魚涌英皇道英皇道856號" + }, + { + "building": "晉海", + "address": " 將軍澳康城路1號日出康城" + }, + { + "building": "藝里坊‧1號", + "address": "西環忠正街8號" + }, + { + "building": "海傲灣", + "address": " 油塘鯉魚門徑1號" + }, + { + "building": "維港頌", + "address": "油塘鯉魚門徑1號" + }, + { + "building": "雲海別墅", + "address": "沙田馬鞍山耀沙路9號" + }, + { + "building": "翰畋", + "address": "土瓜灣美善同道80號" + }, + { + "building": "AVA 55", + "address": "九龍城?德道55號" + }, + { + "building": "飛鵝山道三號", + "address": "新界西貢井欄樹" + }, + { + "building": "PARK YOHO", + "address": "青山公路潭尾段18號" + }, + { + "building": "菁雋", + "address": "屯門青棉徑2號" + }, + { + "building": "尚悅‧方", + "address": "元朗十八鄉路33號" + }, + { + "building": "Central Peak", + "address": "新地東半山司徒拔道18號" + }, + { + "building": "高爾夫‧御苑", + "address": "青山公路古洞段88號" + }, + { + "building": "海之戀", + "address": "新界荃灣區荃灣大河道100號" + }, + { + "building": "薈蕎", + "address": "大圍大埔公路大圍段7838號" + }, + { + "building": "珀爵", + "address": " 洪水橋丹桂村里" + }, + { + "building": "傲凱", + "address": "深水?海壇街229號" + }, + { + "building": "晟林", + "address": "九龍何文田喇沙利道" + }, + { + "building": "南昌一號", + "address": "深水?南昌街1號" + }, + { + "building": "加多利軒", + "address": "何文田勝利道7 號" + }, + { + "building": "緹山", + "address": "龍駒道9號" + }, + { + "building": "電氣道218號", + "address": "香港炮台山電氣道218號" + }, + { + "building": "富豪‧山?", + "address": "九肚山麗坪路23號" + }, + { + "building": "喜遇", + "address": "福榮街538號" + }, + { + "building": "淺水灣108", + "address": "淺水灣道108號" + }, + { + "building": "上源", + "address": "掃管笏掃管笏路99號" + }, + { + "building": "玥盧", + "address": "清水灣碧沙路18號" + }, + { + "building": "薈朗", + "address": " 馬鞍山馬錦街" + }, + { + "building": "利奧坊‧凱岸", + "address": "大角咀嘉善街18號" + }, + { + "building": "尚璽", + "address": "大角咀大角咀道247號" + }, + { + "building": "K83", + "address": "葵涌大連排道83號" + }, + { + "building": "柏逸", + "address": "屏山唐人新村路108號" + }, + { + "building": "秀樺閣", + "address": "灣仔肇輝臺12號" + }, + { + "building": "63 Pokfulam", + "address": "薄扶林道63號" + }, + { + "building": "my Central", + "address": "西營盤及上環嘉咸街23號" + }, + { + "building": "翰林峰", + "address": "西環皇后大道西460號" + }, + { + "building": "KADOORIA", + "address": "加多利山嘉道理道111-133號" + }, + { + "building": "城.點", + "address": "屯門?發徑8號" + }, + { + "building": "豐寓", + "address": "葵涌興芳路178號" + }, + { + "building": "星悅海灣", + "address": "汀九青山公路汀九段368號" + }, + { + "building": "御悅", + "address": "九龍長沙灣元州街310號" + }, + { + "building": "悅雅", + "address": "元州街310號" + }, + { + "building": "珀御", + "address": "屯門良德街8號" + }, + { + "building": "尚澄", + "address": "沙頭角順隆街33-35號順隆花園" + }, + { + "building": "Monterey", + "address": "香港新界將軍澳南唐俊街23號" + }, + { + "building": "星漣海", + "address": "馬鞍山彩沙街1號" + }, + { + "building": "柏傲灣", + "address": "荃灣永順街51號" + }, + { + "building": "尚珩", + "address": "九肚山麗坪路37號" + }, + { + "building": "逸璟?龍灣", + "address": "九肚山麗坪路37號" + }, + { + "building": "維?‧浚匯", + "address": "北角木星街23號" + }, + { + "building": "朗城?", + "address": " 元朗媽橫路1號" + }, + { + "building": "弦海", + "address": "業旺路101號" + }, + { + "building": "海日灣", + "address": "科進路18號" + }, + { + "building": "LP6", + "address": "康城路1號" + } +] \ No newline at end of file diff --git a/src/services/convertLocalIdentifierToAssetLibrary.js b/src/services/convertLocalIdentifierToAssetLibrary.js new file mode 100755 index 0000000..d9ea354 --- /dev/null +++ b/src/services/convertLocalIdentifierToAssetLibrary.js @@ -0,0 +1,10 @@ +/** + * I write a litte util method to convert localIdentifier to assetURL in JavaScript + * @param localIdentifier looks like 91B1C271-C617-49CE-A074-E391BA7F843F/L0/001 + * @param ext the extension: JPG, PNG, MOV + * @returns {string} + */ +export const convertLocalIdentifierToAssetLibrary = (localIdentifier, ext) => { + const hash = localIdentifier.split('/')[0]; + return `assets-library://asset/asset.${ext}?id=${hash}&ext=${ext}`; +}; \ No newline at end of file diff --git a/src/services/language.js b/src/services/language.js new file mode 100755 index 0000000..1d343cb --- /dev/null +++ b/src/services/language.js @@ -0,0 +1,608 @@ +export default { + en: { + representativeId: "Representative's ID", + representativeName: "Representative's Name", + representativeSign: "Representative's signature", + region: 'Region', + district: 'District', + homeservice: 'Home Services', + downloadrentdoc: 'Download rental documents', + talkToHelper: 'Talk To Helper', + puts: 'Please upload the signature', + pleaseInput: 'Please input', + chatWithOwner: 'Chat With Owner', + chatWithTenant: 'Chat With Tenant', + pendingPayment: 'Pending Payment', + remindFail: 'Only can remind once for each day', + addPhone: 'Add Mobile', + clickHereToEnterYourMobile: 'Click here to enter your Mobile', + papnf: 'Please add phone number first', + austlo: 'Are you sure to logout ? ', + sure: 'sure', + plbctc: 'Please Logout before change the character', + cancel: 'cancel', + addcreditCardFirst: 'Please add Credit Card first', + pay: 'pay', + signandpay: 'Sign and pay', + low: 'Low', + middle: 'Middle', + high: 'High', + oneClickRental: 'One-Click Rental', + unit: 'Unit', + floor: 'Floor', + seats: 'Seats', + rentTools: 'Rent Tools', + service: 'Service', + pleaseSelect: 'Please Select', + deposit: 'Deposit', + months: 'Month(s)', + edit: 'Edit', + lease: 'Lease', + message: 'Message', + Doc: 'Doc', + log: 'Log', + complete: 'Complete', + report: 'Report', + status: 'Status', + process: 'Processing', + closeFile: 'Close File', + problems: 'Problems', + date: 'Date', + id: 'ID', + info: 'Info', + propertyinfo: 'Property Info', + problemRecord: 'Rental Record', + add: 'ADD', + delete: 'Delete', + save: 'Save', + saveAsImage: 'Save as image', + saveAsPdf: 'Save as PDF', + signatureText: 'Signature', + change: 'Change', + upload: 'Upload', + corporateSeal: 'Corporate Seal', + verificarionAlart: + 'Please press Send button we will send you an Verification code via SMS for Mobile number verifications', + send: 'Send', + search: 'Search', + verificationCode: 'Verification Code', + home: 'Home', + news: 'Info', + sharecode: 'Share Code', + history: 'History', + profile: 'Profile', + pleaseLogin: 'Please login', + signupfail: 'Sign up failed. Phone number or email was already in use.', + new: 'News', + maintenance: 'Maintenance info', + rentalInfo: 'Rental Information', + housing: 'Housing', + business: 'Business', + freeSecondhandFurniture: 'Free Secondhand Furniture', + newPassword: 'New Password', + confirmNewPassword: 'Confirm New Password', + Please_input_Verification_Code: 'Please input Verification Code', + Please_input_phone_number: 'Please input phone number', + Your_new_password_must_be_at_least_8_characters: + 'Your new password must be at least 8 characters', + Your_new_confirm_password_must_be_at_least_8_characters: + 'Your new confirm password must be at least 8 characters', + New_Password_and_new_confirm_password_is_not_match: + 'New Password and new confirm password is not match', + //signin signup + signin: 'Login', + CountryList: [ + {label: 'Hong Kong', callingCode: '+852', value: 'hk'}, + {label: 'China', callingCode: '+86', value: 'ch'}, + {label: 'Taiwan', callingCode: '+886', value: 'tw'}, + ], + phonenumber: 'Phone number', + password: 'Password', + forgotPassword: 'Forgot Password?', + login: 'LOGIN', + googleLogin: 'GOOGLE LOGIN', + facebookLogin: 'FACEBOOK LOGIN', + wechatLogin: 'WECHAT LOGIN', + appleLogin: 'APPLE LOGIN', + donthaveac: "Don't Have an Account?", + personalinfo: 'Personal Info (Optional)', + notice: 'notify', + before: 'days before', + endBefore: 'months before', + nonotice: 'Without notice', + WasPaymentSuccess: 'Was the payment successful?', + succeeded: 'Succeeded', + notYet: 'Not Yet', + signup: 'SIGN UP', + fullname: 'Full name', + age: 'Age', + email: 'Email', + gender: 'Gender', + phonenumberoremail: 'Phone number or Email', + confirmPassword: 'Confirm Password', + refferralCode: 'Refferral Code(Optional)', + countryCode: 'Country Code', + smoke: 'Smoke', + pet: 'Pet', + occupation: 'Occupation', + Rentalexperience: 'Rental exp', + //select page + youare: 'You are', + owner: 'Owner', + tenant: 'Tenant', + //profile + property: 'property', + tokens: 'Tokens', + coupons: 'Coupons', + information: 'Information', + setting: 'Setting', + signature: 'Signature & Corporate Seal', + language: 'Language', + creditCard: 'Credit Card', + notification: 'Notification', + changechar: 'Change Characters', + tutorial: 'Tutorial', + privacy: 'Privacy Policy', + terms: 'Terms', + logout: 'Logout', + //payment + addToken: 'ADD', + + paymentGateway: 'Payment Gateway', + ok: 'OK', + //apartment details + apartment: 'Name', + address: 'Address', + dateOfContract: 'Date Of Contract', + contractExpiryDate: 'Contract Expiry Date', + rent: 'Rents', + country: 'Country', + notificationOfCollectRents: 'Notification Of Collect Rents', + notificationOfcontractExpiry: 'Notification Of Contract EXP', + remark: 'Remark', + next: 'Next', + camera: 'Camera', + gallery: 'Gallery', + docoument: 'Contract', + photos: 'Photos', + others: 'Others', + addTenant: 'Add Tenant', + tenantPhone: 'Tenant Phone Number', + share: 'Share', + payrentDay: 'Pay Rents Day', + rentDay: 'Collect Rents Day', + contractExpiry: 'Contract Expirty', + maintainService: 'Maintain Service', + //add + addApartment: 'Apartment', + addContract: 'Contract', + ownerName: 'Owner Name', + tenantName: 'Tenant Name', + ownerId: 'Owner ID Card Number', + tenantId: 'Tenant ID Card Number', + ownerPhone: 'Owner Phone Number', + ownerContactAddress: 'Owner Contact Address', + tenantContactAddress: 'Tenant Contact Address', + rates: 'Rates', + managementFee: 'Management Fee', + + //helper + mediatorIntervention: 'Mediator intervention', + repairAssistance: 'Repair assistance', + rentOut: 'Rent out', + appsProblem: 'Apps Problem', + //home + receipt: 'Receipt', + photoAndDoc: 'Document', + leaseContract: 'Lease Contract', + addTenantService: 'Add tenant service', + free: 'Free now', + createContract: 'Create Contract', + processing: 'Waiting Tenant to sign', + pleaseSign: 'Please Sign', + }, + hk: { + representativeId: '代表的ID', + representativeName: '代表的姓名', + representativeSign: '代表的簽名', + region: '大區', + district: '分區', + homeservice: '家居服務', + downloadrentdoc: '下載租務文件', + talkToHelper: '聯絡客服', + puts: '請上傳簽名', + pleaseInput: '請輸入', + chatWithOwner: '與業主對話', + chatWithTenant: '與租客對話', + pendingPayment: '等待付款', + remindFail: '每天只可提醒一次', + addPhone: '加入電話', + clickHereToEnterYourMobile: '按此處輸入手機號碼', + papnf: '請先加入電話號碼', + austlo: '您確定要登出嗎 ? ', + sure: '確定', + plbctc: '更改角色前請先登出', + cancel: '取消', + addcreditCardFirst: '請先添加信用卡', + pay: '付款', + signandpay: '簽名和付款', + low: '低', + middle: '中', + high: '高', + oneClickRental: '一鍵放盤', + unit: '單位', + floor: '層', + seats: '座數', + rentTools: 'Rent工具', + service: '服務', + pleaseSelect: '請選擇', + deposit: '按金', + months: '個月', + edit: '編輯', + lease: '租期', + message: '訊息', + Doc: '文件', + log: '備注', + complete: '完成', + report: '報告', + status: '狀態', + process: '處理中', + closeFile: '完結問題', + problems: '問題', + date: '日期', + id: '編號', + propertyinfo: '物業資料', + info: '資料', + problemRecord: '租務記錄', + add: '新增', + delete: '刪除', + save: '儲存', + saveAsImage: '儲存為圖像', + saveAsPdf: '儲存為PDF', + signatureText: '簽署', + change: '更改', + upload: '上傳', + WasPaymentSuccess: '付款成功?', + succeeded: '成功', + notYet: '還未有', + corporateSeal: '公司印章', + verificarionAlart: + '請按“傳送”按鈕,我們將通過短信向您發送驗證碼以驗證手機號碼', + send: '傳送', + search: '搜索', + verificationCode: '驗證碼', + sharecode: '分享碼', + newPassword: '新密碼', + confirmNewPassword: '重覆輸入新密碼', + signupfail: '註冊失敗,電話號碼或電子郵件已被使用', + Please_input_Verification_Code: '請輸入驗證碼', + Please_input_phone_number: '請輸入電話號碼', + Your_new_password_must_be_at_least_8_characters: + '您的新密碼必須至少包含8個字符', + Your_new_confirm_password_must_be_at_least_8_characters: + '您的新確認密碼必須至少為8個字符', + New_Password_and_new_confirm_password_is_not_match: + '新密碼和新確認密碼不匹配', + home: '主頁', + news: '最新資料', + history: '記錄', + profile: '個人/設定', + new: '新聞', + maintenance: '維修公司', + rentalInfo: '租務成交', + housing: '住宅', + business: '工商', + freeSecondhandFurniture: '免費二手傢俬', + personalinfo: '個人資料 (選填)', + notice: '提前', + before: '天通知', + endBefore: '月通知', + nonotice: '不通知', + pleaseLogin: '請先登入', + //signin signup + signin: '登入', + CountryList: [ + {label: '香港', callingCode: '+852', value: 'hk'}, + {label: '中國', callingCode: '+86', value: 'ch'}, + {label: '台灣', callingCode: '+886', value: 'tw'}, + ], + phonenumber: '電話號碼', + password: '密碼', + forgotPassword: '忘記密碼?', + login: '登錄', + googleLogin: 'GOOGLE 登錄', + facebookLogin: 'FACEBOOK 登錄', + wechatLogin: '微信 登錄', + appleLogin: 'Apple 登錄', + donthaveac: '沒有賬戶?', + signup: '註冊', + fullname: '全名', + age: '年齡', + email: '電子郵件', + gender: '性別', + phonenumberoremail: '電話號碼或電子郵件', + confirmPassword: '確認密碼', + refferralCode: '推薦代碼(沒有可以不填)', + countryCode: '國家代碼', + youare: '你是', + owner: '業主', + tenant: '租戶', + //profile + property: '物業', + tokens: '金幣', + coupons: '優惠券', + information: '信息', + setting: '設置', + language: '語言', + creditCard: '信用卡', + notification: '通知', + changechar: '轉換角色', + tutorial: '教程', + privacy: '隱私政策', + signature: '簽署和公司印章', + terms: '條款', + logout: '登出', + smoke: '抽煙', + pet: '寵物', + occupation: '職業', + Rentalexperience: '租房經驗', + //payment + addToken: '增值數量', + + paymentGateway: '付款方法', + ok: '確定', + //apartment details + apartment: '物業名稱', + address: '地址', + dateOfContract: '簽約日期', + contractExpiryDate: '約滿日期', + rent: '租金', + country: '租盤所在國家', + notificationOfCollectRents: '收租通知', + notificationOfcontractExpiry: '租約完結前通知', + remark: '備註', + next: '下一步', + camera: '相機', + gallery: '相薄', + docoument: '合約', + photos: '物業照片', + others: '其它', + addTenant: '加入租戶', + tenantPhone: '租戶電話號碼', + share: '分享', + payrentDay: '交租日', + rentDay: '收租日', + contractExpiry: '合同到期', + maintainService: '維護服務', + //add + addApartment: '新增物業', + addContract: '租約', + ownerName: '業主姓名', + tenantName: '租客姓名', + ownerId: '業主身份證號碼', + tenantId: '租客身份證號碼', + ownerPhone: '業主電話號碼', + + ownerContactAddress: '業主地址', + tenantContactAddress: '租客地址', + rates: '差餉', + managementFee: '管理費', + + //helper + mediatorIntervention: '調解員介入', + repairAssistance: '維修幫助', + rentOut: '一鍵放租|全區各大代理', + appsProblem: 'APPS問題', + //home + receipt: '收據', + photoAndDoc: '照片和文件', + leaseContract: '租務合約', + addTenantService: '加入租客服務', + free: '現時免費', + createContract: '開合約', + processing: '等待租客簽名', + pleaseSign: '請簽名', + }, + ch: { + representativeId: '代表的ID', + representativeName: '代表的姓名', + representativeSign: '代表的签名', + region: '大區', + district: '分區', + homeservice: '家居服务', + downloadrentdoc: '下载租务文件', + talkToHelper: '联络客服', + puts: '請上傳簽名', + pleaseInput: '请输入', + chatWithOwner: '与业主对话', + chatWithTenant: '与租客对话', + pendingPayment: '等待付款', + remindFail: '每天只可提醒一次', + addPhone: '加入电话', + clickHereToEnterYourMobile: '按此处输入手机号码', + papnf: '请先加入电话号码', + austlo: '您确定要登出吗? ', + sure: '确定', + plbctc: '更改角色前请先登出', + cancel: '取消', + addcreditCardFirst: '请先添加信用卡', + pay: '付款', + signandpay: '签名和付款', + low: '低', + middle: '中', + high: '高', + oneClickRental: '一鍵放盤', + unit: '單位', + floor: '層', + seats: '座数', + rentTools: 'Rent工具', + service: '服務', + pleaseSelect: '请选择', + deposit: '按金', + months: '个月', + edit: '編輯', + lease: '租期', + message: '訊息', + Doc: '文件', + log: '备注 ', + complete: '完成', + report: '报告', + status: '状态', + process: '处理中', + closeFile: '完结问题', + problems: '问题', + date: '日期', + id: '编号', + propertyinfo: '物业资料', + info: '资料', + problemRecord: '租务记录', + add: '新增', + delete: '刪除', + save: '储存', + saveAsImage: '储存为图像', + saveAsPdf: '储存为PDF', + signatureText: '签署', + change: '更改', + upload: '上传', + corporateSeal: '公司印章', + verificarionAlart: + '请按“传送”按钮,我们将通过短信向您发送验证码以验证手机号码', + send: '传送', + newPassword: '新密码', + search: '搜索', + confirmNewPassword: '重覆输入新密码', + signupfail: '注册失败,电话号码或电子邮件已被使用', + Please_input_Verification_Code: '请输入验证码', + Please_input_phone_number: '请输入电话号码', + Your_new_password_must_be_at_least_8_characters: + '您的新密码必须至少包含8个字符', + Your_new_confirm_password_must_be_at_least_8_characters: + '您的新确认密码必须至少为8个字符', + New_Password_and_new_confirm_password_is_not_match: + '新密码和新确认密码不匹配', + verificationCode: '验证码', + sharecode: '分享码', + home: '主頁', + news: '最新资料', + history: '记录', + profile: '个人/设定', + new: '新闻', + WasPaymentSuccess: '付款成功?', + succeeded: '成功', + notYet: '還未有', + maintenance: '维修公司', + rentalInfo: '租务成交', + housing: '住宅', + business: '工商', + freeSecondhandFurniture: '免费二手傢俬', + notice: '提前', + before: '天通知', + endBefore: '月通知', + nonotice: '不通知', + pleaseLogin: '请先登录', + //signin signup + signin: '登入', + CountryList: [ + {label: '香港', callingCode: '+852', value: 'hk'}, + {label: '中国', callingCode: '+86', value: 'ch'}, + {label: '台湾', callingCode: '+886', value: 'tw'}, + ], + phonenumber: '电话号码', + password: '密码', + forgotPassword: '忘记密码?', + login: '登录', + googleLogin: 'GOOGLE 登录', + facebookLogin: 'FACEBOOK 登录', + wechatLogin: '微信 登录', + appleLogin: 'Apple 登录', + donthaveac: '没有账户?', + signup: '注册', + fullname: '全名', + age: '年龄', + email: '电子邮件', + personalinfo: '个人资料 (选填)', + phonenumberoremail: '电话号码或电子邮件', + confirmPassword: '确认密码', + refferralCode: '推荐代码(没有可以不填)', + countryCode: '国家代码', + youare: '你是', + owner: '业主', + tenant: '租户', + smoke: '抽烟', + gender: '性別', + pet: '宠物', + occupation: '职业', + Rentalexperience: '租房经验', + //profile + + property: '物业', + tokens: '金币', + coupons: '优惠券', + information: '信息', + setting: '设置', + language: '语言', + creditCard: '信用卡', + notification: '通知', + changechar: '转换角色', + tutorial: '教程', + signature: '签署和公司印章', + privacy: '隐私政策', + terms: '条款', + logout: '登出', + //payment + addToken: '增值数量', + + paymentGateway: '付款方法', + ok: '确定', + //apartment details + apartment: '物业名称', + address: '地址', + dateOfContract: '签约日期', + contractExpiryDate: '约满日期', + rent: '租金', + country: '租盘所在国家', + notificationOfCollectRents: '收租通知', + notificationOfcontractExpiry: '租约完结前通知', + remark: '备注', + next: '下一步', + camera: '相机', + gallery: '相簿', + docoument: '合約', + photos: '物业照片', + others: '其它', + addTenant: '加入租户', + tenantPhone: '租户电话号码', + share: '分享', + payrentDay: 'Pay Rents Day', + rentDay: '收租日', + contractExpiry: '合同到期', + maintainService: '维护服务', + //add + addApartment: '新增物业', + addContract: '租約', + ownerName: '业主姓名', + tenantName: '租客姓名', + ownerId: '业主身份证号码', + tenantId: '租客身份证号码', + ownerPhone: '业主电话号码', + + ownerContactAddress: '业主地址', + tenantContactAddress: '租客地址', + rates: '差饷', + managementFee: '管理费', + + //helper + mediatorIntervention: '调解员介入', + repairAssistance: '维修帮助', + rentOut: '一键放租|全区各大代理', + appsProblem: 'APPS问题', + receipt: '收据', + photoAndDoc: '照片和文件', + leaseContract: '租務合約', + addTenantService: '加入租客服務', + free: '現時免費', + createContract: '开合约', + processing: '等待租客签名', + pleaseSign: '请签名', + }, +}; diff --git a/src/services/realm/Mirgrations.js b/src/services/realm/Mirgrations.js new file mode 100644 index 0000000..431c75f --- /dev/null +++ b/src/services/realm/Mirgrations.js @@ -0,0 +1,10 @@ +import { UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea } from "./schemeas"; + +export default [ + { + schema: [UserSchemea, ApartmentSchemea, DocSchemea,NotificationSchemea], + path: "rental.realm", + schemaVersion: 1, + migration: (oldRealm, newRealm) => {} + } +]; diff --git a/src/services/realm/realmManger.js b/src/services/realm/realmManger.js new file mode 100644 index 0000000..b258889 --- /dev/null +++ b/src/services/realm/realmManger.js @@ -0,0 +1,73 @@ +const Realm = require('realm'); +import Migrations from './Mirgrations'; +import uuid from 'react-native-uuid'; +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); + +const queryUser = () => { + return realm.objects('User'); +}; + +const modifyApartment = data => {}; + +const saveEdit = index => { + var data = this.store.apartmentData; + let user = realm.objects('User'); + try { + realm.write(() => { + let newApartment = { + id: data.id, + createDate: data.createDate, + modifyDate: new Date(), + name: data.name, + address: data.address, + avatar: this.store.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: parseInt(data.rent), + deposit: parseInt(data.deposit), + leaseMonth: parseInt(data.leaseMonth), + country: data.country, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + remark: this.store.apartmentDataRemark, + doc: this.store.apartmentDataDoc, + }; + user[0].apartment[index] = newApartment; + // user.gender = "M" + }); + } catch (e) { + console.log('Error on creation ' + e); + } +}; + +const createUser = memberType => { + try { + realm.write(() => { + realm.create('User', { + memberType: memberType, + id: 1, + name: 'new', + signup: false, + login: false, + username: 'null', + password: 'null', + email: 'null', + gender: 'null', + apartment: [], + }); + }); + } catch (error) { + console.log(error); + } +}; + +export {queryUser, createUser}; diff --git a/src/services/realm/schemeas.js b/src/services/realm/schemeas.js new file mode 100644 index 0000000..9317e6f --- /dev/null +++ b/src/services/realm/schemeas.js @@ -0,0 +1,71 @@ +const UserSchemea = { + name: 'User', + // primaryKey: 'id', + properties: { + id: 'int', + memberType: 'int', + signup: 'bool', + login: 'bool', + username: 'string', + password: 'string', + email: 'string', + gender: 'string', + apartment: 'Apartment[]', + notification: 'Notification[]', + }, +}; + +const ApartmentSchemea = { + name: 'Apartment', + properties: { + id: 'string', + avatar: 'string', + floor: 'string', + unit: 'string', + seats: 'string', + createDate: 'date', + modifyDate: 'date?', + name: 'string', + address: 'string', + signContractDate: 'date?', + endContractDate: 'date?', + rent: 'double?', + leaseMonth: 'int?', + deposit: 'double?', + country: 'string', + callingCode: 'string', + rentNotification: 'int', + endContractNotification: 'int', + remark: 'string[]', + rentNotificationId: 'Notification[]', + doc: 'Doc[]', + //tenantPhone:'', + }, +}; + +const NotificationSchemea = { + name: 'Notification', + + properties: { + id: 'string', + date: 'string', + type: 'int', + }, +}; + +const DocSchemea = { + name: 'Doc', + + properties: { + id: 'string', + height: 'int', + width: 'int', + type: 'int', + mime: 'string', + name: 'string', + uri: 'string', + createDate: 'date', + }, +}; + +export {UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea}; diff --git a/src/store/index.js b/src/store/index.js new file mode 100755 index 0000000..48fc3d0 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,5 @@ +import appStore from './stores/app-store'; + +export default { + appStore, +}; diff --git a/src/store/stores/ConversationListItem.js b/src/store/stores/ConversationListItem.js new file mode 100644 index 0000000..4dc88b4 --- /dev/null +++ b/src/store/stores/ConversationListItem.js @@ -0,0 +1,28 @@ +import JMessage from 'jmessage-react-plugin'; +import {observable, action, computed, autorun} from 'mobx'; + +export default class ConversationListItem { + key; + + @observable + displayName; + + @observable + avatarThumbPath; + + appKey; + + groupId; + + username; + + roomId; + + @observable + latestMessageString; + + @observable + conversation; + + type; +} diff --git a/src/store/stores/app-store.js b/src/store/stores/app-store.js new file mode 100644 index 0000000..4feb314 --- /dev/null +++ b/src/store/stores/app-store.js @@ -0,0 +1,3997 @@ +import {observable, action, transaction} from 'mobx'; +import {Alert, Platform, Animated, Easing, Linking} from 'react-native'; +import ConversationListItem from './ConversationListItem'; +import JMessage from 'jmessage-react-plugin'; +import axios from 'axios'; +var _ = require('lodash'); +import EventEmitter from 'react-native-md5'; +import NavigationService from '../../services/NavigationService'; +//import {NavigationActions} from 'react-navigation'; +import language from '../../services/language'; +import AsyncStorageHelper from '../../common/asyncStorageHelper'; +import uuid from 'react-native-uuid'; +import moment from 'moment'; +import CameraRoll from '@react-native-community/cameraroll'; +import PushNotification from 'react-native-push-notification'; +//import {NimSession, NimFriend} from 'react-native-netease-im'; +import Realm from 'realm'; +import history from '../../common/history'; +import api from '../../services/api'; +import JPush from 'jpush-react-native'; +import RNFetchBlob from 'rn-fetch-blob'; +import Md5 from '../../util/md5'; +var _ = require('lodash'); +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../../services/realm/schemeas'; +import Global from '../../services/Global'; +import Signature from '../../pages/signature/signature'; +const asyncStorageHelper = new AsyncStorageHelper(); +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +class Stores { + @observable + convList = []; + key; + + @observable + displayName; + + @observable + avatarThumbPath; + + appKey; + + groupId; + + username; + + roomId; + + @observable + latestMessageString; + @observable + hometutVisable = false; + + @observable + addtutVisable = false; + + @observable + conversation; + + @observable + wechatQRCode = ''; + + type; + @observable + friendArr = []; + @observable + splash = false; + @observable + tutorial = false; + @observable + selectChar = false; + @observable + home = false; + @observable + gosignin = false; + @observable + testingChat = null; + @observable + text = language.en; + @observable + languageSelection = 'english'; + + @observable + helperUnRead = 0; + + @observable + friendList = []; + @observable + animateStatus = { + progress: new Animated.Value(0), + show: false, + }; + + @observable + oneClickApartment = []; + + @observable + oldAvatarId = ''; + + @observable + contractState = []; + + @observable + banner = []; + + @observable + apartmentDataWhichNeedToSync = []; + + @observable + signUri = ''; + @observable + stampUri = ''; + + @observable + repairData = null; + + @observable + rentApartmentData = null; + + @observable + noTenantApartmentValue = 1; + + @observable + loginUserData = { + data: { + member: {}, + token: '', + }, + }; + + @observable + logined = false; + + @observable + receiptData = []; + + @observable + addFunctionVisable = false; + + @observable + loading = false; + + @observable + list = []; + + @observable + addedCard = false; + + @observable + creditCardinfo = {}; + + @observable + refData = null; + + apartment = null; + + @observable + apartmentsData = []; + + @observable + case = []; + + @observable + getNowDate = ''; + + @observable + countdown = 10; + + @observable + registerID = ''; + + @observable + serviceContent = []; + + @observable + apartmentData = { + id: null, + floor: 'G', + unit: '', + seats: '', + createDate: null, + modifyDate: null, + avatar: null, + name: null, + address: null, + signContractDate: null, + endContractDate: null, + rent: null, + country: 'hk', + callingCode: '+852', + rentNotification: 1, + leaseMonth: 12, + deposit: null, + endContractNotification: 1, + rentNotificationId: [], + endContractNotificationId: null, + remark: [], + doc: [], + }; + @observable + apartmentDataRemark = []; + @observable + apartmentDataDoc = []; + @observable + avatar = null; + @observable + user = null; + + @observable + image = null; + + @observable + timer = 60; + + @action + convertLocalIdentifierToAssetLibrary(localIdentifier, ext) { + const hash = localIdentifier.split('/')[0]; + return `assets-library://asset/asset.${ext}?id=${hash}&ext=${ext}`; + //return 'photos://asset/' + localIdentifier; + } + + @action + getCountryLabel(value) { + return this.text.CountryList[ + this.text.CountryList.findIndex(x => x.value == value) + ].label; + } + + @action + setList(data) { + this.list = data; + } + + @action + resetTimer() { + this.timer = 0; + } + + @action + tick() { + this.timer += 1; + } + @action + idGenerator() { + return uuid.v4(); + } + + @action + async deleteDemo() { + var index = await this.user.apartment.findIndex( + element => element.id === 'demo', + ); + if (index >= 0) { + this.deleteApartment(index); + await this.getUser(); + } + } + + @action + async goToChat(data, self) { + if (!this.logined) { + history.push(self, '/signin', {icon: true}); + } else { + // const user = await this.friendList.find( + // element => element.name === email, + // ); + // console.log(user); + // const userdata = await this._check(user.contactId); + // const session = { + // ...userdata, + // sessionType: '0', + // }; + // console.log(session); + // history.push(self, '/chat', { + // title: session.alias || session.name, + // session, + // }); + console.log(data); + self.props.navigation.navigate('chat', {conversation: data}); + // JMessage.getGroupInfo( + // {id: this.loginUserData.data.member.gid}, + // group => { + // console.log(group); + // var item = {}; + + // item = {key: group.id}; + // item.conversationType = 'group'; + + // self.props.navigation.navigate('chat', {conversation: group}); + // }, + // error => { + // Alert.alert('error', JSON.stringify(error)); + // }, + // ); + } + } + + @action + checkUnRead(data) { + data.recents.map((items, index) => { + var unread = parseInt(items.unreadCount); + if (unread > 0) { + if (items.name == 'Helper') { + this.helperUnRead = unread; + console.log(unread); + } + } else { + if (items.name == 'Helper') { + this.helperUnRead = unread; + console.log(unread); + } + } + }); + } + + @action + async avatarfilter() { + console.log(this.apartmentDataDoc[0].type); + var ans = await this.apartmentDataDoc.find(function(item) { + return item.type == 3; + }); + console.log(ans.uri); + this.apartmentData.avatar = ans.uri; + } + + @action + resetApartmentData() { + this.apartmentData = { + id: null, + floor: 'G', + unit: '', + seats: '', + createDate: null, + modifyDate: null, + avatar: '', + name: null, + address: null, + signContractDate: null, + endContractDate: null, + rent: null, + leaseMonth: 12, + deposit: null, + country: 'hk', + callingCode: '+852', + rentNotification: 1, + endContractNotification: 1, + rentNotificationId: [], + endContractNotificationId: null, + remark: [], + doc: [], + }; + this.apartmentDataRemark = []; + this.apartmentDataDoc = []; + this.avatar = null; + } + + @action + ramdomNotificationId() { + // return Math.round(Math.random() * 36 ** 4).toString(36); + var min = 0; + var max = 9999; + var random = Math.floor(Math.random() * (+max - +min)) + +min; + var ans = random.toString(); + return ans; + } + + @action + reloadFriendList() { + JMessage.getFriends( + result => { + var friendArr = result.map((friend, index) => { + var element = {}; + element.key = index; + element.userInfo = friend; + return element; + }); + // this.setState( {data: friendArr} ) + console.log(friendArr); + this.friendArr = friendArr; + }, + error => { + // Alert.alert('error', JSON.stringify(error)); + }, + ); + } + + @action + newRentlocalNotificationHandler(items) { + if (items.rentNotification !== 0) { + transaction(() => { + var notificationDay = moment(items.signContractDate).subtract( + items.rentNotification, + 'days', + ); + var endday = moment(items.endContractDate); + for (var i = 0; i <= 1; i++) { + if (notificationDay.unix() > moment().unix()) { + var id = this.ramdomNotificationId(); + var notificationData = { + id: id, + type: 0, + date: '' + notificationDay.unix(), + }; + var normalDay = moment(notificationDay); + normalDay.add(items.rentNotification, 'days'); + var title = '收租提示'; + var conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + if (this.user.memberType == 0) { + title = '收租提示'; + conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + } else { + title = '交租提示'; + conent = + items.name + '應在' + normalDay.format('DD-MM-YYYY') + '交租'; + } + + this.pushNotification(title, conent, id, notificationDay.toDate()); + // this.pushNotification(title, conent, id, notificationDay.toDate()); + notificationDay = notificationDay.add(1, 'months'); + console.log(notificationDay.toDate()); + } + } + }); + } + } + + @action + rentlocalNotificationHandler() { + // if (this.apartmentData.rentNotification !== 0) { + // transaction(() => { + // this.apartmentData.rentNotificationId = []; + // var notificationDay = moment( + // this.apartmentData.signContractDate, + // ).subtract(this.apartmentData.rentNotification, 'days'); + // console.log('notification day: ' + notificationDay.toDate()); + // var endday = moment(this.apartmentData.endContractDate); + // console.log(notificationDay.toDate()); + // console.log(endday.toDate()); + // while (notificationDay <= endday) { + // var id = this.ramdomNotificationId(); + // var notificationData = { + // id: id, + // type: 0, + // date: '' + notificationDay.unix(), + // }; + // this.apartmentData.rentNotificationId.push(notificationData); + // var normalDay = moment(notificationDay); + // normalDay.add(this.apartmentData.rentNotification, 'days'); + // var title = '收租提示'; + // var conent = + // this.apartmentData.name + + // '的租客應在' + + // normalDay.format('DD-MM-YYYY') + + // '交租'; + // if (this.user.memberType == 0) { + // title = '收租提示'; + // conent = + // this.apartmentData.name + + // '的租客應在' + + // normalDay.format('DD-MM-YYYY') + + // '交租'; + // } else { + // title = '交租提示'; + // conent = + // this.apartmentData.name + + // '應在' + + // normalDay.format('DD-MM-YYYY') + + // '交租'; + // } + + // this.pushNotification(title, conent, id, notificationDay.toDate()); + // // this.pushNotification(title, conent, id, notificationDay.toDate()); + // notificationDay = notificationDay.add(1, 'months'); + // console.log(notificationDay.toDate()); + // } + // }); + // } + this.deleteAllNotification(); + + this.apartmentsData.map((items, index) => { + console.log(items); + if (items.rentNotification !== 0) { + try { + var notificationDate = moment(items.signContractDate).subtract( + items.rentNotification, + 'days', + ); + var now = moment(); + var id = this.ramdomNotificationId(); + var normalDay = moment(); + var title = '收租提示'; + + if ( + now >= moment(items.signContractDate) && + now < moment(items.endContractDate) + ) { + if (now.month() + 1 == moment(items.signContractDate).month() + 1) { + if (now.date() >= notificationDate.date()) { + now = now.add(1, 'M'); + now = now.set('date', notificationDate.date()); + normalDay = normalDay.set('month', now.month()); + normalDay = normalDay.set( + 'date', + moment(items.signContractDate).date(), + ); + } else if (now.date() < notificationDate.date()) { + normalDay = normalDay.set( + 'date', + moment(items.signContractDate).date(), + ); + now = now.set('date', notificationDate.date()); + } + if (now <= moment(items.endContractDate)) { + var conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + if (this.user.memberType == 0) { + title = '收租提示'; + conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + } else { + title = '交租提示'; + conent = + items.name + + '應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + } + console.log(now); + console.log(conent); + console.log(normalDay); + this.pushNotification(title, conent, id, now.toDate()); + } + } else if (now.month() + 1 > moment(items.signContractDate) + 1) { + if (now.date() >= notificationDate.date()) { + now = now.add(1, 'M'); + now = now.set('date', notificationDate.date()); + normalDay = normalDay.set('month', now.month()); + normalDay = normalDay.set( + 'date', + moment(items.signContractDate).date(), + ); + } else if (now.date() < notificationDate.date()) { + console.log(notificationDate); + console.log(conent); + normalDay = normalDay.set( + 'date', + moment(items.signContractDate).date(), + ); + now = now.set('date', notificationDate.date()); + } + if (now <= moment(items.endContractDate)) { + var conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + if (this.user.memberType == 0) { + title = '收租提示'; + conent = + items.name + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + } else { + title = '交租提示'; + conent = + items.name + + '應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + } + console.log(notificationDate); + console.log(conent); + this.pushNotification(title, conent, id, now.toDate()); + } + } + } + } catch (e) { + console.log(e); + } + } + }); + } + + @action + newendContractlocalNotificationHandler(items) { + if (items.endContractNotification !== 0) { + items.endContractNotificationId = null; + var endday = moment(items.endContractDate).subtract( + items.endContractNotification, + 'months', + ); + + var id = this.ramdomNotificationId(); + var notificationData = {id: id, type: 1, date: '' + endday.unix()}; + items.rentNotificationId.push(notificationData); + var title = '合約到期提示'; + var normalDay = endday.add(items.endContractNotification, 'months'); + var conent = + items.name + '的租約會在' + normalDay.format('DD-MM-YYYY') + '到期'; + this.pushNotification(title, conent, id, endday.toDate()); + } + } + + @action + endContractlocalNotificationHandler() { + if (this.apartmentData.endContractNotification !== 0) { + this.apartmentData.endContractNotificationId = null; + var endday = moment(this.apartmentData.endContractDate).subtract( + this.apartmentData.endContractNotification, + 'months', + ); + + var id = this.ramdomNotificationId(); + var notificationData = {id: id, type: 1, date: '' + endday.unix()}; + this.apartmentData.rentNotificationId.push(notificationData); + var title = '合約到期提示'; + var normalDay = endday.add( + this.apartmentData.endContractNotification, + 'months', + ); + var conent = + this.apartmentData.name + + '的租約會在' + + normalDay.format('DD-MM-YYYY') + + '到期'; + this.pushNotification(title, conent, id, endday.toDate()); + } + } + + @action + deleteAllNotification() { + PushNotification.cancelAllLocalNotifications(); + } + + @action + deleteNotification(index) { + let user = realm.objects('User'); + this.user.apartment[index].rentNotificationId.map((items, index) => { + PushNotification.cancelLocalNotifications({id: items.id}); + try { + realm.write(() => { + if ( + user[0].notification.findIndex(element => element.id == items.id) != + -1 + ) { + user[0].notification.splice( + user[0].notification.findIndex(element => element.id == items.id), + 1, + ); + } + }); + } catch (e) { + console.log('Error on creation ' + e); + } + }); + } + + pushNotification(title, content, id, date) { + console.log('pushnotificationDay: ' + date); + this.lastId++; + PushNotification.localNotificationSchedule({ + date: date, // in 30 secs + id: id, + userInfo: { + id: id, //IMPORTANT!! adding the userInfo, so that the cancel will work! + }, + + number: 0, + /* iOS only properties */ + alertAction: 'view', // (optional) default: view + + /* iOS and Android properties */ + title: title, // (optional) + message: content, // (required) + playSound: true, // (optional) default: true + soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played) + }); + } + + @action + cloneApartmentDataForUpDate(data) { + var apartmentData = { + id: data.id, + createDate: data.createDate, + modifyDate: data.modifyDate, + floor: data.floor, + unit: data.unit, + seats: data.seats, + name: data.name, + address: data.address, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: data.rent, + country: data.country, + deposit: data.deposit, + leaseMonth: data.leaseMonth, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + notifications: data.rentNotificationId, + endContractNotificationId: data.endContractNotificationId, + remark: [], + doc: [], + }; + data.remark.map((item, index) => { + apartmentData.remark.push(item); + }); + + data.doc.map((item, index) => { + var newItems = { + id: item.id, + name: item.name, + type: item.type, + createDate: item.createDate, + uri: item.uri, + mime: item.mime, + height: item.height, + width: item.width, + }; + apartmentData.doc.push(newItems); + }); + console.log(apartmentData); + return apartmentData; + } + + @action + async deleteAvatar() { + var index = await this.apartmentDataDoc.findIndex( + element => element.type == 3, + ); + console.log(index); + if (index != -1) { + this.apartmentDataDoc.splice(index, 1); + } + } + + @action + cloneApartmentData(index) { + console.log('run clone'); + const data = this.apartmentsData[index]; + console.log(data.avatar); + this.apartmentData = { + id: data.id, + createDate: moment(data.createDate).toDate(), + modifyDate: data.modifyDate, + name: data.name, + floor: data.floor, + unit: data.unit, + seats: data.seats, + address: data.address, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + deposit: data.deposit, + leaseMonth: data.leaseMonth, + rent: data.rent, + country: data.country, + callingCode: '+852', + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: data.rentNotificationId, + avatar: data.avatar, + endContractNotificationId: data.endContractNotificationId, + }; + this.avatar = _.cloneDeep(data.avatar); + this.apartmentDataRemark = data.remark; + var remark = []; + data.remark.map((item, index) => { + remark.push(item); + }); + this.apartmentDataRemark = remark; + } + + @action + async cloneApartmentDocData(index) { + const data = this.apartmentsData[index].doc; + var doc = []; + await data.map((item, index) => { + var newItems = item; + doc.push(newItems); + }); + this.apartmentDataDoc = doc; + } + + @action + async localAvatarHander(data) { + console.log('localAvatarHander'); + var docArray = []; + var index = await this.user.apartment.findIndex( + element => element.id == data.id, + ); + console.log(index); + if (index != -1) { + await this.user.apartment[index].doc.map((items, index) => { + if (items.type != 3) { + docArray.push(items); + } + }); + + await docArray.push( + await this.apartmentDataDoc.find(element => element.type == 3), + ); + console.log(docArray); + return docArray; + } + return docArray; + } + @action + async saveEdit(index) { + var data = this.apartmentData; + let user = realm.objects('User'); + + console.log(user[0].apartment.length); + console.log(data.id); + var localDataIndex = await user[0].apartment.findIndex( + element => element.id === data.id, + ); + console.log(localDataIndex); + if (user[0].apartment.length > 0) { + if (user[0].apartment[localDataIndex].id == data.id) { + //await this.deleteNotification(index); + //await this.rentlocalNotificationHandler(); + await this.endContractlocalNotificationHandler(); + + if (this.logined == true) { + await this.editApartmentPost(data); + } + console.log('now testing'); + var localDocData = await this.localAvatarHander(data); + console.log(localDocData); + + try { + realm.write(() => { + let newApartment = { + id: data.id, + createDate: data.createDate, + floor: data.floor, + seats: data.seats, + unit: data.unit, + modifyDate: new Date(), + name: data.name, + address: data.address, + avatar: this.apartmentData.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + leaseMonth: parseInt(data.leaseMonth), + deposit: parseInt(data.deposit), + rent: parseInt(data.rent), + country: data.country, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: [], + remark: this.apartmentDataRemark, + }; + user[0].apartment[index] = newApartment; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } else { + console.log('online edit'); + await this.editApartmentPost(data); + } + } else { + if (this.logined == true) { + console.log('online edit'); + await this.editApartmentPost(data); + } + } + } + + @action + uploadsign(path, self, beforepageToast) { + this.loading = true; + var postUri = + api.uploadSign + this.loginUserData.data.member.id + '/upload-sign'; + console.log(path); + const fileData = new FormData(); + fileData.append('file', { + uri: path, // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: 'Signature.png', // example: upload.jpg + type: 'image/png', + }); + + var data = [ + { + // uri: path, // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: 'Signature.png', // example: upload.jpg + data: RNFetchBlob.wrap(path), + type: 'image/*', + }, + ]; + + fetch(postUri, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: this.loginUserData.data.token, + }, + body: fileData, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + if (response.hasOwnProperty('sign')) { + this.signUri = response.sign; + this.loginUserData.data.member.sign = response.sign; + self.props.navigation.goBack(); + } else { + } + // alert("Upload success!"); + console.log(response); + }) + .catch(error => { + this.loading = false; + console.log('upload error', error); + // alert("Upload failed!"); + }); + + // RNFetchBlob.fetch( + // 'POST', + // postUri, + // { + // Authorization: this.loginUserData.data.token, + // 'Content-Type': 'multipart/form-data', + // }, + // data, + // ) + // .then(resp => { + // this.loading = false; + // console.log(resp); + // }) + // .catch(err => { + // this.loading = false; + // console.log(err); + // }); + } + + @action + uploadStamp(path, self, beforepageToast) { + this.loading = true; + var postUri = + api.uploadSign + this.loginUserData.data.member.id + '/upload-stamp'; + const fileData = new FormData(); + fileData.append('file', { + uri: path, // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: 'stampImage.png', // example: upload.jpg + }); + + fetch(postUri, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: this.loginUserData.data.token, + }, + body: fileData, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + if (response.hasOwnProperty('stamp')) { + this.stampUri = response.stamp; + this.loginUserData.data.member.stamp = response.stamp; + // self.props.navigation.goBack(); + } else { + } + // alert("Upload success!"); + console.log(response); + }) + .catch(error => { + this.loading = false; + console.log('upload error', error); + // alert("Upload failed!"); + }); + } + + @action + async changeChar(self, type) { + //this.user.memberType = type + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = type; + }); + if (type == 1 && this.logined == false) { + history.push(self, 'signin', {icon: false}); + } else { + self.props.navigation.navigate('home'); + } + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + getMatch(a, b) { + var matches = []; + for (var i = 0; i < a.length; i++) { + for (var e = 0; e < b.length; e++) { + if (a[i].id === b[e].id) matches.push(a[i]); + } + } + return matches; + } + + async deff(a, b) { + var matches = []; + await a.map(async (item, index) => { + if (b.findIndex(element => element.id == item.id) == -1) { + await matches.push(a[index]); + } + }); + return matches; + } + + @action + async saveDocEdit(index) { + var data = this.apartmentDataDoc; + let user = realm.objects('User'); + + if (this.logined) { + var sameImages = []; + var deleteImages = []; + var addImages = []; + sameImages = await this.getMatch( + this.apartmentsData[index].doc, + this.apartmentDataDoc, + ); + addImages = await this.deff(this.apartmentDataDoc, sameImages); + deleteImages = await this.deff( + this.apartmentsData[index].doc, + sameImages, + ); + console.log(this.apartmentsData[index].doc); + console.log(this.apartmentDataDoc); + console.log('sameImages:'); + console.log(sameImages); + console.log('deleteImages:'); + console.log(deleteImages); + console.log('addImages:'); + console.log(addImages); + + await deleteImages.map(async (items, index) => { + this.deleteDoc(items.id); + }); + await this.uploadDocFetch(this.apartmentData.id, addImages); + + var localIndex = await this.user.apartment.findIndex( + element => element.id == this.apartmentData.id, + ); + if (localIndex != -1) { + var docarray = []; + console.log(localIndex); + await this.user.apartment[localIndex].doc.map(async (items, index) => { + if ( + (await deleteImages.findIndex(element => element.id == items.id)) == + -1 + ) { + var data = { + id: items.id, + height: items.height, + width: items.width, + type: items.type, + name: items.name, + uri: items.uri, + mime: items.mime, + createDate: items.createDate, + }; + await docarray.push(data); + } + }); + await addImages.map(async (items, index) => { + await docarray.push(items); + }); + console.log(docarray); + try { + realm.write(() => { + user[0].apartment[index].doc = docarray; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + } else { + try { + realm.write(() => { + user[0].apartment[index].doc = this.apartmentDataDoc; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + } + + @action + getUser() { + let user = realm.objects('User'); + for (let p of user) { + this.user = p; + if (!this.logined) { + console.log(this.user); + this.apartmentsData = this.user.apartment; + } + } + } + + isEmpty(obj) { + for (var x in obj) { + if (obj.hasOwnProperty(x)) return false; + } + return true; + } + + async _check(id) { + var data = null; + await NimFriend.fetchUserInfo(id).then(res => { + console.log(res); + data = res; + }); + return data; + } + + @action + async loadLocalData() { + if (!this.logined) { + this.noTenantApartmentValue = 0; + } + let user = await realm.objects('User'); + for (let p of user) { + this.user = p; + console.log(this.user); + this.user.apartment.map((item, index) => { + if (!item.hasOwnProperty('tenant') && !this.logined) { + this.noTenantApartmentValue += 1; + console.log(this.noTenantApartmentValue); + } + console.log(item.name); + item.doc.map((items, index) => { + console.log(items); + }); + }); + console.log('length: ' + this.user.notification.length); + this.user.notification.map((items, index) => { + console.log('id: ' + items.id); + console.log('type: ' + items.type); + console.log('date: ' + moment(items.date * 1000).format('DD-MM-YYYY')); + }); + // console.log(this.user.apartment[0].doc[0].uri) + if (!this.logined) { + console.log(this.user.apartment); + this.apartmentsData = this.user.apartment; + this.rentlocalNotificationHandler(); + } + } + } + + @action + deleteApartment(index) { + var data = this.apartmentData; + let user = realm.objects('User'); + try { + realm.write(() => { + user[0].apartment.splice(index, 1); + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + + @action + changeLanguage(lang) { + console.log(lang); + if (lang == 'english') { + console.log('select english'); + Global.lang = 'en'; + this.text = language.en; + this.languageSelection = 'english'; + } else if (lang == 'hk') { + console.log('select hk'); + Global.lang = 'hk'; + this.text = language.hk; + this.languageSelection = 'hk'; + } else { + console.log('select chinese'); + this.text = language.ch; + Global.lang = 'ch'; + this.languageSelection = 'ch'; + } + + asyncStorageHelper.saveData('language', lang); + this.changetabBarLabel(); + } + + //api + + @action + changetabBarLabel() { + Global.info = this.text.rentTools; + Global.repair = this.text.maintenance; + Global.property = this.text.rentalInfo; + } + + @action + async signupWithWeChat(data, self) { + var requestURL = api.signupWithWechat; + this.loading = true; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + Global.login = true; + this.loading = false; + transaction(() => { + this.logined = true; + + this.loginUserData = response; + }); + + await this.deleteDemo(); + await this.regUserNotificationToken(true, false); + await this.getApartmentData(); + await this.getCreditCard(); + + if (response.data.member.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + var userdata = { + id: response.data.member.id, + token: response.data.token, + }; + + await this.loginIn( + response.data.member.id, + response.data.member.cpw, + userdata, + self, + false, + false, + ); + self.props.navigation.navigate('Profile'); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + } catch (e) { + self.refs.toast.show('Login Fail'); + this.loading = false; + //connectFail.fail(); + console.log(e.response); + } + } + + @action + async signinWithWeChat(data, self, navAction) { + // this.loading = true; + var requestURL = api.signinWithWechat; + data.nonce = this.genNonce(); + console.log(data); + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + if (response.data.hasOwnProperty('nonmember')) { + var memberSignupData = { + avatar: response.data.nonmember.avatar, + fullname: response.data.nonmember.fullname, + tpid: response.data.nonmember.tpid, + tppf: response.data.nonmember.tppf, + email: '', + nonce: data.nonce, + chara: '', + }; + + if (this.user.memberType == 0) { + memberSignupData.chara = 'owner'; + } else { + memberSignupData.chara = 'tenant'; + } + console.log(memberSignupData); + history.push(self, '/wechatSignup', { + signupData: memberSignupData, + }); + } else { + Global.login = true; + transaction(() => { + this.logined = true; + + this.loginUserData = response; + }); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + console.log(this.user); + await this.deleteDemo(); + await this.regUserNotificationToken(true, false); + await this.getApartmentData(); + await this.getCreditCard(); + + if (response.data.member.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + var userdata = { + id: response.data.member.id, + token: response.data.token, + }; + + await this.loginIn( + response.data.member.id, + response.data.member.cpw, + userdata, + self, + navAction, + false, + ); + } + + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + } catch (e) { + self.refs.toast.show('Login Fail'); + this.loading = false; + //connectFail.fail(); + console.log(e.response); + } + } + + @action + async bindPhone(data, self) { + console.log('right'); + this.loading = true; + var requestURL = api.bindphone; + + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + }); + this.loading = false; + console.log(response); + this.loginUserData.data.countryCode = response.data.countryCode; + this.loginUserData.data.phone = response.data.phone; + self.props.navigation.goBack(); + } catch (e) { + this.loading = false; + self.refs.toast.show('add mobile fail: '); + console.log(e); + } + } + + @action + async signupPost(self, data) { + console.log(data); + + var jsonData = { + fullname: data.fullname, + email: data.email, + gender: data.gender, + countryCode: data.countryCode, + chara: data.chara, + age: data.age, + pwd: data.pwd, + phone: data.phone, + refcode: data.refcode.toString(), + vercode: data.vercode, + // ownerPhone: "" + }; + console.log('vercode: ' + jsonData.vercode); + this.loading = true; + var requestURL = api.signup; + try { + const response = await axios.post(requestURL, jsonData, { + headers: { + 'Content-Type': 'application/json', + }, + }); + this.loading = false; + await this.deleteDemo(); + transaction(() => { + this.loading = false; + // this.isSignUp = false; + // this.isSignUpVerify = false; + this.logined = true; + this.loginUserData = response; + }); + + // self.navigatieAction("menu"); + var data = {id: response.data.member.id, token: response.data.token}; + Global.login = true; + JMessage.login( + { + username: response.data.member.id, + password: response.data.member.cpw, + }, + () => { + this.reloaGroupList(); + console.log('success'); + JMessage.getMyInfo(UserInf => { + if (UserInf.username === undefined) { + // 未登录 + } else { + console.log(UserInf); + } + }); + }, + error => { + Alert.alert('login fail', JSON.stringify(error)); + }, + ); + //this.loginPost(data, self, true); + if (jsonData.chara == 'owner') { + await this.uploadApartmentWhenFirstTimeLogin(); + } + await asyncStorageHelper.saveData('userInfo', data); + + await history.popToUp(self); + await self.props.navigation.navigate('home'); + } catch (e) { + console.log(e.response); + self.refs.toast.show('SignUp Fail: ' + e.response.data); + this.getApartmentData(); + this.loading = false; + } + } + + async uploadApartmentWhenLoginFindApartmentWhichNotSync(self) { + await this.apartmentDataWhichNeedToSync.map(async (items, index) => { + await this.createApartmentPost( + this.cloneApartmentDataForUpDate(items), + false, + ); + }); + self.props.navigation.navigate('home'); + } + + async uploadApartmentWhenFirstTimeLogin() { + await this.user.apartment.map((items, index) => { + this.createApartmentPost(this.cloneApartmentDataForUpDate(items), false); + }); + } + + reloaGroupList() { + JMessage.getGroupIds( + result => { + var groupIdArr = result.map(groupId => { + var element = {}; + element.key = groupId; + return element; + }); + console.log(groupIdArr); + }, + error => { + Alert.alert('error', JSON.stringify(error)); + }, + ); + } + + async loginIn(imusername, impassword, data, self, navAction, isGetProfile) { + this.loading = true; + console.log(imusername + impassword); + //self.props.navigation.navigate('mainPage'); + await JMessage.login( + { + username: imusername, + password: impassword, + }, + async () => { + await this.reloaGroupList(); + console.log('success'); + await this.reloadFriendList(); + await JMessage.getMyInfo(UserInf => { + if (UserInf.username === undefined) { + // 未登录 + } else { + console.log(UserInf); + } + }); + if (navAction) { + // asyncStorageHelper.saveData("userInfo", data); + this.loading = false; + console.log('go home'); + // history.push(self,'mainPage'); + if (isGetProfile) { + self.props.navigation.navigate('mainPage'); + } else { + asyncStorageHelper.saveData('userInfo', data); + history.goBack(self); + } + } else { + await asyncStorageHelper.saveData('userInfo', data); + this.loading = false; + // history.goBack(self); + // await self.props.navigation.state.params.backToHome({back: true}); + this.CheckWhichLocalApartmentNotSync(); + } + }, + error => { + this.loading = false; + Alert.alert('login fail', JSON.stringify(error)); + }, + ); + } + + genNonce() { + var nonce = + Math.floor(Math.random() * (+9999999999999 - +1000000000000)) + + +1000000000000; + + nonce += 'b'; + + var randomNumber = + Math.floor(Math.random() * (+99999999999 - +10000000000)) + +10000000000; + + nonce += randomNumber; + console.log(nonce); + let hex_md5v = EventEmitter.hex_md5(nonce); + console.log(nonce + hex_md5v); + const ans = nonce + hex_md5v; + console.log(ans.length); + return nonce + hex_md5v; + } + + async getUserProfile(userInfo, self) { + this.loading = true; + var userdata = JSON.parse(userInfo); + console.log(userdata.token); + var requestURL = api.getUserProfile + userdata.id; + try { + const response = await axios.get(requestURL, { + headers: { + Authorization: userdata.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + Global.login = true; + transaction(() => { + this.logined = true; + this.loginUserData.data.member = response.data; + this.loginUserData.data.token = userdata.token; + }); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + console.log(response.data); + console.log(this.loginUserData); + + await this.getApartmentData(); + await this.getCreditCard(); + this.regUserNotificationToken(true, false); + + if (response.data.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + await this.loginIn( + response.data.id, + response.data.cpw, + userdata, + self, + true, + true, + ); + } catch (e) { + // self.refs.toast.show('Login Fail'); + this.loading = false; + if (this.user.memberType == 0) { + self.props.navigation.navigate('mainPage'); + } else { + self.props.navigation.navigate('signin', {icon: false}); + } + //connectFail.fail(); + console.log(e); + } + } + + async loginPost(data, self, navAction) { + this.loading = true; + var requestURL = api.login; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + Global.login = true; + transaction(() => { + this.logined = true; + this.loading = false; + this.loginUserData = response; + }); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + console.log(response); + console.log(this.user); + + await this.getApartmentData(); + await this.getCreditCard(); + await this.regUserNotificationToken(true, false); + + if (response.data.member.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + var userdata = { + id: response.data.member.id, + token: response.data.token, + }; + + await this.loginIn( + response.data.member.id, + response.data.member.cpw, + userdata, + self, + navAction, + false, + ); + } catch (e) { + self.refs.toast.show('Login Fail'); + this.loading = false; + //connectFail.fail(); + console.log(JSON.stringify(e)); + } + } + + @action + async logoutPost(self, reset, data) { + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.logout; + this.regUserNotificationToken(true, true); + try { + const response = await axios.post(requestURL, token); + Global.login = false; + JMessage.logout(); + + //this.regUserNotificationToken(""); + asyncStorageHelper.removeItemValue('userInfo'); + if (reset) { + this.loginPost(data, self, true); + } else { + console.log('logout'); + this.logined = false; + await this.loadLocalData(); + + if (this.user.memberType == 1) { + history.push(self, '/signin', {icon: false}); + } else { + await self.props.navigation.navigate( + 'main', + {}, + // NavigationActions.navigate({routeName: 'home'}), + ); + } + + await transaction(() => { + this.logined = false; + this.loginUserData = null; + this.addedCard = false; + this.creditCardinfo = {}; + this.loading = false; + }); + } + } catch (e) { + this.loading = false; + console.log(e); + } + } + currencyFormat(num) { + return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); + } + + async getRentReceipt(apartmentIndex) { + // const formatter = new Intl.NumberFormat('en-US', { + // style: 'currency', + // currency: 'HKD', + // minimumFractionDigits: 0, + // }); + try { + var apartmentID = this.apartmentsData[apartmentIndex].id; + var uri = api.addApartment + apartmentID + '/rent/'; + const response = await axios.get(uri, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + + if (this.loginUserData.data.member.chara === 'owner') { + this.receiptData = []; + response.data.content.map(async (items, index) => { + console.log( + parseInt(moment(parseInt(this.getNowDate * 1000)).format('YYYYMM')), + ); + console.log(parseInt(items.month)); + if ( + parseInt( + moment(parseInt(this.getNowDate * 1000)).format('YYYYMM'), + ) >= parseInt(items.month) + ) { + console.log('testingtesting'); + console.log(this.apartmentsData[apartmentIndex].tenant); + var data = { + date: + moment(items.month + '01', 'YYYYMMDD').format('DD/MM/YYYY') + + ' - ' + + moment(items.month + '01', 'YYYYMMDD') + .add(1, 'M') + .format('DD/MM/YYYY'), + signDate: moment(items.date, 'YYYY-MM-DD').format('DD/MM/YYYY'), + rent: this.currencyFormat(parseInt(items.rent)), + id: '' + items.id, + owner: this.apartmentsData[apartmentIndex].owner.fullname, + ownerPhone: + this.apartmentsData[apartmentIndex].owner.countryCode + + ' ' + + this.apartmentsData[apartmentIndex].owner.phone, + tenant: this.apartmentsData[apartmentIndex].tenant.fullname, + tenantPhone: + this.apartmentsData[apartmentIndex].tenant.countryCode + + ' ' + + this.apartmentsData[apartmentIndex].tenant.phone, + address: this.apartmentsData[apartmentIndex].address, + status: items.status, + }; + await this.receiptData.push(data); + console.log(this.receiptData); + } + }); + } else { + this.receiptData = []; + response.data.content.map(async (items, index) => { + console.log( + parseInt(moment(parseInt(this.getNowDate * 1000)).format('YYYYMM')), + ); + console.log(parseInt(items.month)); + if ( + parseInt( + moment(parseInt(this.getNowDate * 1000)).format('YYYYMM'), + ) >= parseInt(items.month) && + items.status != 'Pending Payment' + ) { + var data = { + date: + moment(items.month + '01', 'YYYYMMDD').format('DD/MM/YYYY') + + ' - ' + + moment(items.month + '01', 'YYYYMMDD') + .add(1, 'M') + .format('DD/MM/YYYY'), + signDate: moment(items.date, 'YYYY-MM-DD').format('DD/MM/YYYY'), + rent: this.currencyFormat(parseInt(items.rent)), + id: '' + items.id, + owner: this.apartmentsData[apartmentIndex].owner.fullname, + ownerPhone: + this.apartmentsData[apartmentIndex].owner.countryCode + + ' ' + + this.apartmentsData[apartmentIndex].owner.phone, + tenant: this.apartmentsData[apartmentIndex].tenant.fullname, + tenantPhone: + this.apartmentsData[apartmentIndex].tenant.countryCode + + ' ' + + this.apartmentsData[apartmentIndex].tenant.phone, + address: this.apartmentsData[apartmentIndex].address, + status: items.status, + }; + await this.receiptData.push(data); + console.log(this.receiptData); + } + }); + } + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + async getApartmentData() { + try { + const response = await axios.get(api.addApartment, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.reloadFriendList(); + console.log(response); + await response.data.content.map(async (items, index) => { + console.log(ans.uri); + response.data.content[index].avatar = ans.uri; + this.contractState = []; + // await this.contractStatesReturn(items) + // console.log(this.contractState) + }); + + transaction(() => { + this.apartmentsData = response.data.content; + this.noTenantApartmentValue = 0; + this.apartmentsData = this.apartmentsData.sort((a, b) => + a.createDate > b.createDate ? -1 : 1, + ); + this.getNowDate = response.data.unix_timestamp; + this.apartmentsData.map(async (items, index) => { + if (!items.hasOwnProperty('tenant')) { + this.noTenantApartmentValue += 1; + console.log(this.noTenantApartmentValue); + } + this.apartmentsData[index].state = ''; + console.log(items.hasOwnProperty('tenant')); + if (items.hasOwnProperty('contracts')) { + if (items.contracts.length > 0) { + console.log( + '' + items.tenant.id + ' ' + items.contracts[0].tenant.id, + ); + if (this.loginUserData.data.member.chara == 'owner') { + console.log('testing'); + if ( + (await items.contracts.findIndex( + element => element.tenant.id == items.tenant.id, + )) != -1 + ) { + var contractindex = await items.contracts.findIndex( + element => element.tenant.id == items.tenant.id, + ); + console.log(contractindex); + if (items.contracts[contractindex].signed) { + this.apartmentsData[index].state = + items.contracts[contractindex].endContractDate; + this.apartmentsData[index].contractClickState = 'e'; + } else { + this.apartmentsData[index].state = this.text.processing; + this.apartmentsData[index].contractClickState = 'p'; + } + } else { + this.apartmentsData[index].state = this.text.createContract; + this.apartmentsData[index].contractClickState = 'c'; + } + } else { + // this.apartmentsData[index].state = "Please Sign"; + if (items.contracts[0].signed) { + this.apartmentsData[index].state = + items.contracts[0].endContractDate; + this.apartmentsData[index].contractClickState = 'e'; + } else { + this.apartmentsData[index].state = this.text.pleaseSign; + this.apartmentsData[index].contractClickState = 's'; + } + } + } else { + this.apartmentsData[index].state = this.text.createContract; + this.apartmentsData[index].contractClickState = 'c'; + } + } + }); + this.rentlocalNotificationHandler(); + console.log(this.apartmentData); + }); + } catch (error) { + console.log(error.response); + } + } + + contractStatesReturn(items) { + if (items.contracts.length > 0) { + if (this.store.loginUserData.data.member.chara == 'owner') { + if ( + items.contracts.findIndex( + element => element.tenant.id == items.tenant, + ) != -1 + ) { + var index = items.contracts.findIndex( + element => element.tenant.id == items.tenant, + ); + if (items.contracts[index].signed) { + return items.contracts[index].endContractDate; + } else { + this.contractState.push('Processing'); + } + } else { + console.log('wrong'); + this.contractState.push('Create'); + } + } else { + this.contractState.push('Please Sign'); + } + } else { + this.contractState.push('Create'); + } + } + + @action + async uploadAvatar(id) { + this.loading = true; + const fileData = new FormData(); + var avatarImage = await this.apartmentDataDoc[ + this.apartmentDataDoc.findIndex(element => element.type == 3) + ]; + console.log(id); + console.log(avatarImage); + await fileData.append('apartment_id', id); + + console.log(avatarImage.uri); + console.log(avatarImage.name); + await fileData.append('file[]', { + uri: avatarImage.uri, // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: avatarImage.name, // example: upload.jpg + }); + await fileData.append('id[]', avatarImage.id); + await fileData.append('height[]', avatarImage.height); + await fileData.append('width[]', avatarImage.width); + await fileData.append('type[]', avatarImage.type.toString()); + + console.log(fileData); + + fetch(api.uploadFile, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: this.loginUserData.data.token, + }, + body: fileData, + }) + .then(response => response.json()) + .then(async response => { + this.loading = false; + // alert("Upload success!"); + if (response[0] != null && response[0].hasOwnProperty('uri')) { + var index = await this.apartmentsData.findIndex( + element => element.id == response[0].apartment.id, + ); + if (index != -1) { + console.log(response[0].uri); + this.apartmentsData[index].avatar = response[0].uri; + } + } + console.log(response); + }) + .catch(error => { + this.loading = false; + console.log('upload error', error); + // alert("Upload failed!"); + }); + } + + @action + async deleteApartmentPost(index, self) { + var uri = api.addApartment + this.apartmentData.id; + this.loading = true; + + fetch(uri, { + method: 'delete', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify({}), + }) + .then(response => response.json()) + .then(async response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + await this.deleteApartment(index); + await this.getApartmentData(); + await this.resetApartmentData(); + await this.getUser(); + history.goBack(self); + }) + .catch(error => { + this.loading = false; + console.log(error); + // alert("Upload failed!"); + }); + } + + @action + async editApartmentPost(data) { + var uri = api.addApartment + data.id; + this.loading = true; + let newApartment = {}; + if (data.hasOwnProperty('avatar')) { + newApartment = { + avatar: data.avatar, + id: data.id, + floor: data.floor, + seats: data.seats, + unit: data.unit, + createDate: data.createDate, + modifyDate: data.modifyDate, + name: data.name, + address: data.address, + leaseMonth: parseInt(data.leaseMonth), + deposit: parseInt(data.deposit), + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: data.rent, + country: data.country, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + notifications: data.notificationId, + endContractNotification: data.endContractNotification, + remark: data.remark, + }; + } else { + newApartment = { + id: data.id, + createDate: data.createDate, + modifyDate: data.modifyDate, + floor: data.floor, + seats: data.seats, + unit: data.unit, + name: data.name, + address: data.address, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: data.rent, + country: data.country, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + remark: data.remark, + }; + } + + try { + const response = await axios.put(uri, newApartment, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + console.log(response); + // var index = await this.apartmentsData.findIndex( + // element => element.id == data.id, + // ); + // var newAvatarIndex = await this.apartmentDataDoc.findIndex( + // element => element.type == 3, + // ); + // console.log(newAvatarIndex); + // console.log( + // await this.apartmentsData[index].doc.findIndex( + // element => element.id == this.apartmentDataDoc[newAvatarIndex].id, + // ), + // ); + // if ( + // (await this.apartmentsData[index].doc.findIndex( + // element => element.id == this.apartmentDataDoc[newAvatarIndex].id, + // )) == -1 + // ) { + // var oldAvatarIndex = await this.apartmentsData[index].doc.findIndex( + // element => element.type == 3, + // ); + // console.log(oldAvatarIndex); + // await this.deleteDoc(this.apartmentsData[index].doc[oldAvatarIndex].id); + // await this.uploadAvatar(data.id); + // } + + await this.getApartmentData(); + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + // console.log(error.response); + } + } + + @action + async deleteDoc(id) { + // this.loading = true; + // var token = this.loginUserData.data.token; + // var requestURL = api.uploadFile+id; + + // try { + // const response = await axios.put(requestURL,{}, { + // headers: { + // Authorization: token, + // "Content-Type": "application/json" + // } + // }); + + // transaction(() => { + // self.shareVisable = true + // this.loading = false; + // this.refData = response.data + + // }); + // console.log(response); + + // } catch (e) { + // this.loading = false; + // console.log(e.response); + + // } + + this.loading = true; + var requestURL = api.uploadFile + id; + fetch(requestURL, { + method: 'delete', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify({}), + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + }) + .catch(error => { + this.loading = false; + console.log(error.response); + // alert("Upload failed!"); + }); + } + + @action + async createApartmentPost(data, type) { + if (type) { + this.loading = true; + } + + let newApartment = { + id: data.id, + createDate: data.createDate, + modifyDate: data.modifyDate, + name: data.name, + floor: data.floor, + unit: data.unit, + seats: data.seats, + address: data.address, + leaseMonth: data.leaseMonth, + deposit: data.deposit, + // avatar: this.store.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: data.rent, + country: data.country, + callingCode: data.callingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + notifications: data.rentNotificationId, + // endContractNotificationId: data.endContractNotificationId, + remark: data.remark, + // doc: this.store.apartmentDataDoc + }; + try { + const response = await axios.post(api.addApartment, newApartment, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + console.log(response); + if (this.logined) { + this.uploadDocFetch(response.data.id, data.doc, type); + } + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async updateApartment() {} + + @action + async uploadDoc(id) { + const fileData = new FormData(); + console.log(id); + fileData.append('apartment_id', id); + await this.apartmentDataDoc.map((items, index) => { + console.log(items.uri); + console.log(items.name); + fileData.append('file[]', { + uri: items.uri.replace('file://', ''), // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: items.name, // example: upload.jpg + }); + fileData.append('id[]', items.id); + fileData.append('height[]', items.height); + fileData.append('width[]', items.width); + fileData.append('type[]', items.type.toString()); + fileData.append('id[]', items.id); + }); + + try { + const response = await axios.post(api.uploadFile, fileData, { + headers: { + Accept: 'application/json', + Authorization: this.loginUserData.data.token, + 'Content-Type': 'multipart/form-data', + }, + timeout: 5000, + }); + console.log(response); + + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async uploadDocFetch(id, data, type) { + if (type) { + this.loading = true; + } + const fileData = new FormData(); + console.log(id); + fileData.append('apartment_id', id); + await data.map((items, index) => { + console.log(items.uri); + console.log(items.name); + fileData.append('file[]', { + uri: items.uri, // this is the path to your file. see Expo ImagePicker or React Native ImagePicker + name: items.name, // example: upload.jpg + }); + fileData.append('id[]', items.id); + fileData.append('height[]', items.height); + fileData.append('width[]', items.width); + fileData.append('type[]', items.type.toString()); + }); + + console.log(fileData); + + fetch(api.uploadFile, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: this.loginUserData.data.token, + }, + body: fileData, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + this.getApartmentData(); + // alert("Upload success!"); + }) + .catch(error => { + this.loading = false; + console.log(error); + // alert("Upload failed!"); + }); + } + + @action + async getRepairInfo() { + let data = { + charset: 'big5', + 'contain-title': '1', + }; + this.loading = true; + try { + const response = await axios.get(api.getRepairInfo, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + this.repairData = response.data.content; + this.loading = false; + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async getRentInfo() { + this.loading = true; + this.rentApartmentData = []; + try { + const response = await axios.get(api.getRentInfo, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + var newArray = []; + response.data.content.map((items, index) => { + var newdata = _.cloneDeep(items); + var newPrice = newdata.rent.slice(newdata.rent.indexOf('$')); + newPrice = newPrice.replace(/\s/g, ''); + newPrice = Number(newPrice.replace(/[^0-9\.]+/g, '')); + if (items.rent.indexOf('萬') != -1) { + newPrice *= 10000; + } + var newDate = moment(items.date, 'M/D/YY').unix(); + newdata.newprice = newPrice; + newdata.newDate = newDate; + newArray.push(newdata); + }); + + this.rentApartmentData = newArray; + + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async chatUploadFile(type, path, filename, self, duration) { + var formdata = new FormData(); + var fileType = ''; + switch (type) { + case 1: + fileType = 'image/jpg'; + break; + case 2: + fileType = 'audio/m4a'; + break; + case 3: + fileType = 'video/mp4'; + break; + } + formdata.append('file', { + uri: path, + name: filename, + type: fileType, + }); + formdata.append('type', type); + + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.chatBlob; + + try { + const response = await axios.post(requestURL, formdata, { + headers: { + Accept: 'application/json', + Authorization: token, + 'Content-Type': 'multipart/form-data', + }, + }); + this.loading = false; + transaction(() => { + this.creditCardinfo = response.data; + this.loading = false; + this.addedCard = true; + }); + console.log(response); + + self.onSendCustomMessage( + response.data.uri, + response.data.name, + type, + duration, + ); + + // self.navigatieAction("menu"); + } catch (e) { + this.loading = false; + + console.log(e); + } + } + + @action + async chatBackup(data) { + var token = this.loginUserData.data.token; + var requestURL = api.chatBackup; + + try { + const response = await axios.post(requestURL, data, { + headers: { + Authorization: token, + 'Content-Type': 'application/json', + }, + }); + + console.log(response); + } catch (e) { + console.log(e); + } + } + + @action + async getbanner() { + this.banner = []; + try { + const response = await axios.get(api.getBanner, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + this.banner = response.data.content; + + transaction(() => {}); + } catch (error) { + console.log(error); + } + } + + @action + async getBuildingInfo() { + this.loading = true; + this.rentApartmentData = []; + try { + const response = await axios.get(api.getIndustrialBuilding, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + var newArray = []; + response.data.content.map((items, index) => { + var newdata = _.cloneDeep(items); + var newPrice = newdata.price.slice(newdata.price.indexOf('$')); + newPrice = newPrice.replace(/\s/g, ''); + newPrice = Number(newPrice.replace(/[^0-9\.]+/g, '')); + if (items.price.indexOf('萬') != -1) { + newPrice *= 10000; + } + var newDate = moment(items.date, 'M/D/YY').unix(); + newdata.newprice = newPrice; + newdata.newDate = newDate; + newArray.push(newdata); + }); + //this.rentApartmentData = response.data.content; + this.rentApartmentData = newArray; + transaction(() => { + this.loading = false; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async getCreditCard() { + this.loading = true; + var data = {}; + var requestURL = api.creditCard; + var token = this.loginUserData.data.token; + try { + const response = await axios.get(requestURL, { + headers: { + Authorization: token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + console.log(response.data); + if (response.data.content.length > 0) { + this.addedCard = true; + this.creditCardinfo = response.data.content[0]; + } + //self.navigatieAction("menu"); + } catch (e) { + this.loading = false; + console.log(e); + } + } + + @action + async deleCreditCard(self) { + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.creditCard + '/' + this.creditCardinfo.id.toString(); + try { + const response = await axios.delete(requestURL, { + headers: { + Authorization: token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.creditCardinfo = {}; + this.loading = false; + this.addedCard = false; + console.log(response); + } catch (e) { + this.loading = false; + console.log(e); + } + } + + @action + async postCreditCard(self, data) { + console.log(data); + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.creditCard; + var testString = + 'cvc: ' + data.cvc + ' expiry: ' + data.expiry + ' num: ' + data.num; + // self.testing(token,testString) + + try { + const response = await axios.post(requestURL, data, { + headers: { + Authorization: token, + 'Content-Type': 'application/json', + }, + }); + this.loading = false; + transaction(() => { + this.creditCardinfo = response.data; + this.loading = false; + this.addedCard = true; + }); + console.log(response); + self.addCard = false; + self.cardData = null; + //navigation.goBack(); + // self.navigatieAction("menu"); + } catch (e) { + this.loading = false; + console.log(e); + self.refs.toast.show(e.message); + } + } + + @action + async createApartmentRefCode(apartmentId, self) { + if (this.logined) { + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.addApartment + apartmentId + '/reset-refcode'; + + try { + const response = await axios.put( + requestURL, + {}, + { + headers: { + Authorization: token, + 'Content-Type': 'application/json', + }, + }, + ); + + transaction(() => { + self.shareVisable = true; + this.loading = false; + this.refData = response.data; + }); + console.log(response); + } catch (e) { + this.loading = false; + console.log(e.response); + } + } else { + self.refs.toast.show(this.text.pleaseLogin); + } + } + + @action + async tenantCheckApartment(data, self) { + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.tenantCheckApartment; + console.log(data); + console.log(this.loginUserData.data.token); + + fetch(requestURL, { + method: 'put', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify(data), + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + if (response.name == undefined || response.name == null) { + Alert.alert( + '', + 'This refcode is wrong', + [ + { + text: 'OK', + onPress: () => {}, + }, + ], + {cancelable: false}, + ); + } else { + this.tenantAddApartment(data, self); + } + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + } + + @action + async getCase() { + this.loading = true; + try { + const response = await axios.get(api.getCase, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + console.log(response); + + transaction(() => { + this.loading = false; + this.case = response.data.content; + }); + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async tenantAddApartment(data, self) { + this.loading = true; + var token = this.loginUserData.data.token; + var requestURL = api.tenantAddApartment; + console.log(data); + console.log(this.loginUserData.data.token); + var arraydata = []; + await fetch(requestURL, { + method: 'put', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify(data), + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + if (response.name == undefined || response.name == null) { + Alert.alert( + '', + 'This refcode is wrong', + [ + { + text: 'OK', + onPress: () => {}, + }, + ], + {cancelable: false}, + ); + } else { + this.reloadFriendList(); + arraydata.push(response); + } + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + this.apartmentsData = arraydata; + } + + @action + async payAgain(data, self, pay, paymethod) { + if (paymethod == 0) { + await this.PayByCredit(data.apartment, self); + } else { + await this.alipayment(data.apartment, self); + } + } + @action + async alipayment(id, self) { + this.loading = true; + var requestURL = api.contract + id + '/create-source'; + // fetch(requestURL, { + // method: 'put', + // headers: { + // 'Content-Type': 'application/json', + // Authorization: this.loginUserData.data.token, + // }, + // }) + // .then(response => response.json()) + // .then(response => { + // this.loading = false; + // // alert("Upload success!"); + // console.log(response); + // if (response.hasOwnProperty('redirect')) { + // history.push(self, '/alipayWebView', {uri: response.redirect.url}); + // } + // }) + // .catch(error => { + // this.loading = false; + // console.log('get error', error); + // // alert("Upload failed!"); + // }); + console.log(requestURL); + // var data = {type: 'alipay'}; + //var data = {type: 'stripe_wechat'}; + var data = {type: 'wechat'}; + try { + const response = await axios.put(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + + timeout: 5000, + }); + + this.loading = false; + + console.log(response); + + this.wechatQRCode = response.data.type_data.qr_code_url; + + // Linking.canOpenURL(response.data.type_data.qr_code_url).then( + // supported => { + // if (supported) { + // Linking.openURL(response.data.type_data.qr_code_url); + // } else { + // console.log( + // "Don't know how to open URI: " + + // response.data.type_data.qr_code_url, + // ); + // } + // }, + // ); + // if (response.data.hasOwnProperty('redirect')) { + // history.push(self, '/alipayWebView', { + // uri: response.data.redirect.url, + // alipayPayAsk: self.alipayPayAsk, + // }); + // } + } catch (e) { + console.log(e.response); + this.loading = false; + // self.refs.toast.show(e.response); + } + } + + @action + async PayByCredit(id, self) { + var uri = api.contract + id + '/pay-by-credit-card'; + console.log(uri); + var raw = JSON.stringify({creditCardId: this.creditCardinfo.id}); + + var myHeaders = new Headers(); + myHeaders.append('Authorization', this.loginUserData.data.token); + myHeaders.append('Content-Type', 'application/json'); + + fetch(uri, { + method: 'put', + headers: myHeaders, + body: raw, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + var storeSelf = this; + this.startAnimate(); + setTimeout(function() { + storeSelf.getApartmentData(); + self.props.navigation.popToTop(); + }, 1000); + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + } + + @action + async casePayByCredit(id, self) { + var uri = api.getCase + id + '/pay-by-credit-card'; + console.log(uri); + var raw = JSON.stringify({creditCardId: this.creditCardinfo.id}); + + var myHeaders = new Headers(); + myHeaders.append('Authorization', this.loginUserData.data.token); + myHeaders.append('Content-Type', 'application/json'); + + fetch(uri, { + method: 'put', + headers: myHeaders, + body: raw, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + if (response[0] != 'invalid_case_status') { + var storeSelf = this; + this.startAnimate(); + setTimeout(function() { + storeSelf.getApartmentData(); + self.props.navigation.goBack(); + }, 1000); + } else { + self.refs.toast.show('Payment Fail'); + } + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + } + + @action + async ownerCreateContract(data, self, pay, paymethod) { + this.loading = true; + var requestURL = api.contract; + console.log(data); + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + timeout: 5000, + }); + + transaction(() => { + this.loading = false; + }); + console.log(response); + if (pay) { + self.paid = false; + self.data.apartment = response.data.id; + if (paymethod == 0) { + await this.PayByCredit(response.data.id, self); + } else { + await this.alipayment(response.data.id, self); + } + } else { + this.getApartmentData(); + self.props.navigation.popToTop(); + } + } catch (e) { + self.refs.toast.show('Pay Fail'); + this.loading = false; + //connectFail.fail(); + console.log(e.response); + } + } + + @action + async tenantSign(id, self) { + this.loading = true; + var requestURL = api.contract + id + '/tenant-sign'; + console.log(requestURL); + fetch(requestURL, { + method: 'put', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + this.getApartmentData(); + self.props.navigation.popToTop(); + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + } + + @action + async ownerSign(id, self) { + // this.loading = true; + // var requestURL = api.contract+id+"/owner-sign"; + // var data = {} + // try { + // const response = await axios.put(requestURL,{ + // headers: { + // 'Authorization': this.loginUserData.data.token, + // }, + // timeout: 5000 + // }); + + // transaction(() => { + // this.loading = false; + // }); + // console.log(response); + // self.props.navigation.popToTop(); + + // } catch (e) { + + // this.loading = false; + // //connectFail.fail(); + // console.log(e.response); + // } + + this.loading = true; + var requestURL = api.contract + id + '/owner-sign'; + fetch(requestURL, { + method: 'put', + headers: { + Authorization: this.loginUserData.data.token, + }, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + self.props.navigation.popToTop(); + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + } + + @action + async checkContract(id) { + this.loading = true; + var uri = api.addApartment + id; + try { + const response = await axios.get(uri, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + console.log(response); + if (response.data.contracts.length == 0) { + console.log('contract = null'); + } else { + console.log('contract 1'); + } + return response.data; + } catch (error) { + this.loading = false; + console.log(error.response); + } + } + + @action + async markpaid(self, item) { + this.loading = true; + var data = {remark: ' '}; + var requestURL = api.rent + item.id + '/mark-paid/'; + fetch(requestURL, { + method: 'put', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify(data), + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + + this.receiptData[ + this.receiptData.findIndex(element => element.id == item.id) + ].status = 'A'; + item.signDate = moment(response.date, 'YYYY-MM-DD').format( + 'DD/MM/YYYY', + ); + history.push(self, '/receiptDetails', {receiptData: item}); + }) + .catch(error => { + this.loading = false; + console.log('get error', error); + // alert("Upload failed!"); + }); + + // var data = {"remark":" "} + // this.loading = true + // var uri = api.rent+item.id+"/mark-paid/"; + // try { + // const response = await axios.get(uri ,data,{ + // headers: { + // Authorization: this.loginUserData.data.token, + // "Content-Type": "application/json" + // }, + // timeout: 5000 + // }); + // this.loading = false + // console.log(response); + // history.push(self,'/receiptDetails',{receiptData:item}) + + // } catch (error) { + // this.loading = false; + // console.log(error.response); + // } + } + + convertToConvList = list => { + list.map((conversation, index) => { + this.convList.push(this.getListItem(conversation, index)); + }); + return this.convList.slice(); + }; + + getListItem(conversation, index) { + let item = new ConversationListItem(); + item.type = conversation.conversationType; + item.conversation = conversation; + item.key = index; + if (item.type === 'single') { + item.appKey = conversation.target.appKey; + item.username = conversation.target.username; + item.displayName = conversation.target.displayName; + if (item.displayName === '') { + item.displayName = conversation.target.username; + } + item.avatarThumbPath = conversation.target.avatarThumbPath; + if (item.avatarThumbPath === '') { + JMessage.getUserInfo( + {username: item.username, appKey: item.appKey}, + userInfo => { + console.log('Get user info succeed' + JSON.stringify(userInfo)); + // TODO update conversation item + }, + error => { + console.log('Get user info failed, ' + JSON.stringify(error)); + }, + ); + } + } else if (item.type === 'group') { + if (conversation.target.ownerAppKey != undefined) { + item.appKey = conversation.target.ownerAppKey; + } + item.groupId = conversation.target.id; + item.displayName = conversation.target.name; + item.avatarThumbPath = conversation.target.avatarThumbPath; + if (item.avatarThumbPath === '') { + JMessage.getGroupInfo( + {id: item.groupId}, + groupInfo => { + console.log('Get group info succeed ' + JSON.stringify(groupInfo)); + // TODO update conversation item + }, + error => { + console.log('Get group info failed, ' + JSON.stringify(error)); + }, + ); + } + } else { + item.appKey = conversation.target.appKey; + item.roomId = conversation.target.roomId; + item.avatarThumbPath = '../../../resource/chat-icon.png'; + item.displayName = conversation.target.roomName; + item.memberCount = conversation.target.memberCount; + item.maxMemberCount = conversation.target.maxMemberCount; + } + + if (conversation.latestMessage === undefined) { + return item; + } + + if (conversation.latestMessage.type === 'text') { + item.latestMessageString = conversation.latestMessage.text; + } + + if (conversation.latestMessage.type === 'image') { + item.latestMessageString = '[图片]'; + } + + if (conversation.latestMessage.type === 'voice') { + item.latestMessageString = '[语音]'; + } + + if (conversation.latestMessage.type === 'file') { + item.latestMessageString = '[文件]'; + } + + return item; + } + + @action + gotohelperChat(self, content) { + var data = { + id: this.loginUserData.data.member.gid, + type: 'group', + nickname: 'helper', + msgContent: content, + }; + + this.goToChat(data, self); + } + + @action deleteConversation = key => { + var item = this.convList[key]; + JMessage.deleteConversation( + item, + code => { + this.convList.splice(key, 1); + console.log('Delete succeed'); + }, + error => { + console.log('Delete failed, error: ' + JSON.stringify(error)); + }, + ); + }; + + @action + async sendsmsVerify(data, self) { + this.loading = true; + var requestURL = api.smsVerify; + + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + timeout: 5000, + }); + + this.loading = false; + console.log(response); + } catch (e) { + console.log(e); + this.loading = false; + self.refs.toast.show(e.response); + } + } + @action + async veerify_check(data, self, signupdata) { + this.loading = true; + var requestURL = api.veerify_check; + + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + timeout: 5000, + }); + + this.loading = false; + console.log(response); + console.log(signupdata.vercode); + this.signupPost(self, signupdata); + } catch (e) { + console.log(e); + this.loading = false; + self.refs.toast.show('Varification code wrong'); + } + } + + @action + async checkMember(data, self) { + this.loading = true; + var requestURL = api.check; + var checkData = { + email: data.email, + mobileWithCountryCode: data.countryCode + data.phone, + }; + try { + const response = await axios.post(requestURL, checkData, { + headers: { + 'Content-Type': 'application/json', + }, + }); + this.loading = false; + console.log(response); + console.log(response.data[Object.keys(response.data)[0]]); + if (response.data[Object.keys(response.data)[0]]) { + data.thirdParty = false; + history.push(self, '/signUpVerify', {signupData: data}); + } else { + self.refs.toast.show(this.text.signupfail); + this.loading = false; + } + } catch (e) { + self.refs.toast.show('SignUp Fail'); + this.loading = false; + console.log(e); + } + } + + @action + async forgotPassword(data, self) { + this.loading = true; + var requestURL = api.forgotPassword; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + }); + this.loading = false; + + history.goBack(self); + console.log(response); + } catch (e) { + console.log(e.response.data); + self.refs.toast.show('Reset Password Fail: ' + e.response.data); + this.loading = false; + } + } + + @action + startAddTut() { + asyncStorageHelper.getData('addtut', addtut => { + var tutData = JSON.parse(addtut); + console.log(tutData); + if (tutData != null) { + console.log(tutData); + console.log(tutData.tenant); + console.log(tutData.owner); + //this.loginAction(userInfo); + if (tutData.owner && tutData.tenant) { + this.addtutVisable = false; + } else if (!tutData.owner && tutData.tenant) { + if (this.user.memberType === 0) { + this.addtutVisable = true; + var data = { + owner: true, + tenant: true, + }; + asyncStorageHelper.saveData('addtut', data); + } + } else if (tutData.owner && !tutData.tenant) { + if (this.user.memberType === 0) { + this.addtutVisable = false; + } else { + this.addtutVisable = true; + var data = { + owner: true, + tenant: true, + }; + asyncStorageHelper.saveData('addtut', data); + } + } + } else { + console.log('add tut null'); + var data = {}; + if (this.user.memberType === 0) { + data = { + owner: true, + tenant: false, + }; + } else { + data = { + owner: false, + tenant: true, + }; + } + this.addtutVisable = true; + asyncStorageHelper.saveData('addtut', data); + } + }); + } + + @action + startTut() { + asyncStorageHelper.getData('hometut', hometut => { + var tutData = JSON.parse(hometut); + console.log(tutData); + if (tutData != null) { + console.log(tutData); + console.log(tutData.tenant); + console.log(tutData.owner); + //this.loginAction(userInfo); + if (tutData.owner && tutData.tenant) { + this.hometutVisable = false; + } else if (!tutData.owner && tutData.tenant) { + if (this.user.memberType === 0) { + this.hometutVisable = true; + var data = { + owner: true, + tenant: true, + }; + asyncStorageHelper.saveData('hometut', data); + } + } else if (tutData.owner && !tutData.tenant) { + if (this.user.memberType === 0) { + this.hometutVisable = false; + } else { + this.hometutVisable = true; + var data = { + owner: true, + tenant: true, + }; + asyncStorageHelper.saveData('hometut', data); + } + } + } else { + console.log('home tut null'); + var data = {}; + if (this.user.memberType === 0) { + data = { + owner: true, + tenant: false, + }; + } else { + data = { + owner: false, + tenant: true, + }; + } + this.hometutVisable = true; + asyncStorageHelper.saveData('hometut', data); + } + }); + } + + @action async signinWithApple(data, self, navAction) { + this.loading = true; + var requestURL = api.signinWithApple; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + console.log(response); + + Global.login = true; + transaction(() => { + this.logined = true; + + this.loginUserData = response; + }); + console.log(this.user); + await this.deleteDemo(); + await this.regUserNotificationToken(true, false); + await this.getApartmentData(); + await this.getCreditCard(); + + if (response.data.member.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + var userdata = { + id: response.data.member.id, + token: response.data.token, + }; + + await this.loginIn( + response.data.member.id, + response.data.member.cpw, + userdata, + self, + navAction, + false, + ); + } catch (e) { + self.refs.toast.show('Login Fail'); + + //connectFail.fail(); + console.log(e.response); + } + } + @action + async thirdPartyLogin(data, self, navAction) { + // this.loading = true; + var requestURL = api.thirdPartyLogin; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + this.loading = false; + console.log(response); + // if (response.data.hasOwnProperty('nonmember')) { + // var min = 0; + // var max = 99999999; + // var random = Math.floor(Math.random() * (+max - +min)) + +min; + // var ans = random.toString(); + // console.log(ans); + // var memberSignupData = { + // thirdParty: true, + // vercode: '', + // fullname: response.data.nonmember.fullname, + // email: response.data.nonmember.email, + // gender: 'na', + // countryCode: '852', + // chara: 'owner', + // age: 'na', + // pwd: ans, + // phone: '', + // refcode: '', + // ownerPhone: '', // 如果char係租客就會有,OWNER就NULL + // }; + // this.loading = false; + // if (this.user.memberType == 0) { + // memberSignupData.chara = 'owner'; + // } else { + // memberSignupData.chara = 'tenant'; + // } + // history.push(self, '/signUpVerify', {signupData: memberSignupData}); + // } else { + + Global.login = true; + transaction(() => { + this.logined = true; + + this.loginUserData = response; + }); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + console.log(this.user); + await this.deleteDemo(); + await this.regUserNotificationToken(true, false); + await this.getApartmentData(); + await this.getCreditCard(); + + if (response.data.member.chara == 'owner') { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 0; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } else { + let user = realm.objects('User'); + try { + await realm.write(() => { + user[0].memberType = 1; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + this.getUser(); + } + + var userdata = { + id: response.data.member.id, + token: response.data.token, + }; + + await this.loginIn( + response.data.member.id, + response.data.member.cpw, + userdata, + self, + navAction, + false, + ); + // } + + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + } catch (e) { + self.refs.toast.show('Login Fail'); + this.loading = false; + //connectFail.fail(); + console.log(e.response); + } + } + + @action + getregisterID() { + JPush.getRegistrationID(result => { + this.registerID = result.registerID; + console.log(result); + }); + } + @action + async regUserNotificationToken(logined, logout) { + this.loading = true; + var requestURL = api.regPushToken; + + var data = { + mid: '', + token: '', + }; + if (logined && !logout) { + console.log('logined'); + JPush.getRegistrationID(async result => { + this.registerID = result.registerID; + data.mid = this.loginUserData.data.member.id; + data.token = this.registerID; + console.log(result); + try { + const response = await axios.put(requestURL, data, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + }); + console.log(response); + this.loading = false; + // Alert.alert('', response); + } catch (e) { + this.loading = false; + console.log(e); + } + }); + } else if (!logined && !logout) { + data.token = this.registerID; + JPush.getRegistrationID(async result => { + data.token = this.registerID; + + try { + const response = await axios.put(requestURL, data, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + }); + console.log(response); + } catch (e) { + // this.loading = false; + console.log(e); + } + }); + } else { + data.mid = this.loginUserData.data.member.id; + JPush.getRegistrationID(async result => { + data.mid = this.loginUserData.data.member.id; + + try { + const response = await axios.put(requestURL, data, { + headers: { + Authorization: this.loginUserData.data.token, + 'Content-Type': 'application/json', + }, + }); + console.log(response); + } catch (e) { + // this.loading = false; + console.log(e); + } + }); + } + } + + @action + async remindTenantPayTheRent(self, items) { + //contract + this.loading = true; + var requestURL = api.addApartment + items.id + '/reminder/'; + try { + const response = await axios.post( + requestURL, + {remark: ''}, + { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + timeout: 5000, + }, + ); + + this.loading = false; + console.log(response); + self.refs.toast.show('remind success'); + } catch (e) { + self.refs.toast.show(this.text.remindFail); + this.loading = false; + //connectFail.fail(); + console.log(e.response); + } + } + + @action insertConversation = conv => { + this.convList.push(getListItem(conv, this.convList.length)); + }; + saveImage(index) { + console.log(this.apartmentDataDoc[0].uri); + console.log(index.imageIndex); + if (Platform.OS === 'android') { + // RNFetchBlob.config({ + // fileCache: true, + // appendExt: 'jpg', + // }) + // .fetch('GET', image.urls.small) + // .then(res => { + // CameraRoll.saveToCameraRoll(res.path()) + // .then(Alert.alert('Success', 'Photo added to camera roll!')) + // .catch(err => console.log('err:', err)); + // }); + } else { + CameraRoll.saveToCameraRoll( + this.apartmentDataDoc[index.imageIndex].uri, + ).then(Alert.alert('Success', 'Photo added to camera roll!')); + } + // var promise = CameraRoll.saveToCameraRoll(uri); + // promise + // .then(function(result) { + // console.log(result); + // // const source = { uri:convertLocalIdentifierToAssetLibrary(result,'jpg') }; + // // this.store.image = source + // this.removeIMageTag(uri); + // }) + // .catch(function(error) { + // console.log(error); + // }); + } + @action + async postCase(data, self) { + var casedata = { + apartment: data.id, + description: data.content, + status: data.status, + log: data.log, + }; + if (casedata.log.length == 1) { + if (casedata.log[0].content == '') { + casedata.log = []; + } + } + + this.loading = true; + var requestURL = api.getCase; + try { + const response = await axios.post(requestURL, casedata, { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + timeout: 5000, + }); + + transaction(() => { + this.loading = false; + }); + console.log(response); + + this.getCase(); + self.props.navigation.popToTop(); + } catch (e) { + self.refs.toast.show('Failed'); + this.loading = false; + + console.log(e.response); + } + } + + @action + async updateCaseLog(log, caseId, nav, self) { + var requestURL = api.getCase + caseId + '/log'; + var logData = _.cloneDeep(log); + try { + const response = await axios.post(requestURL, logData, { + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + timeout: 5000, + }); + + transaction(() => {}); + console.log(response); + if (nav) { + self.props.navigation.popToTop(); + } + this.getCase(); + } catch (e) { + console.log(e.response); + } + } + + @action + async updateCase(data, self, index, caseId, clientId) { + console.log(clientId); + console.log(this.loginUserData.data.token); + + var casedata = { + id: caseId, + client: clientId, + date: moment().format('X') * 1000, + apartment: data.id, + description: data.content, + status: data.status, + }; + console.log(casedata.status); + this.loading = true; + var requestURL = api.getCase + caseId; + + await fetch(requestURL, { + method: 'put', + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + body: JSON.stringify(casedata), + }) + .then(response => response.json()) + .then(response => { + console.log(response); + if (data.log.length > index) { + console.log('bigger'); + console.log(data.log[index]); + this.updateCaseLog(data.log[index], caseId); + } else { + console.log('same'); + } + this.loading = false; + // alert("Upload success!"); + console.log(response); + this.getCase(); + self.props.navigation.popToTop(); + }) + .catch(error => { + this.loading = false; + self.refs.toast.show('Failed'); + console.log(error.response); + }); + } + + @action + async finishCase(nav, self, caseId) { + this.loading = true; + var requestURL = api.getCase + caseId + '/complete'; + await fetch(requestURL, { + method: 'put', + body: JSON.stringify({}), + headers: { + 'Content-Type': 'application/json', + Authorization: this.loginUserData.data.token, + }, + }) + .then(response => response.json()) + .then(response => { + this.loading = false; + // alert("Upload success!"); + console.log(response); + this.getCase(); + if (nav) { + self.props.navigation.popToTop(); + } + }) + .catch(error => { + this.loading = false; + self.refs.toast.show('Failed'); + console.log(error.response); + }); + } + + @action + async startAnimate() { + this.animateStatus.show = true; + await Animated.timing(this.animateStatus.progress, { + toValue: 1, + duration: 1000, + easing: Easing.linear, + }).start(); + //this.animateStatus.show = false; + var self = this; + setTimeout(function() { + self.animateStatus.show = false; + self.animateStatus.progress = new Animated.Value(0); + }, 1000); + } + + @action + async CheckWhichLocalApartmentNotSync() { + this.apartmentDataWhichNeedToSync = []; + console.log(this.apartmentsData); + // console.log(this.loginUserData); + if (this.loginUserData.data.member.chara == 'owner') { + this.user.apartment.map((items, index) => { + console.log('in'); + if ( + this.apartmentsData.findIndex(element => element.id === items.id) === + -1 && + items.id != 'demo' + ) { + var syncData = items; + syncData.selected = true; + console.log(syncData); + this.apartmentDataWhichNeedToSync.push(syncData); + } + }); + console.log(this.apartmentDataWhichNeedToSync); + if (this.apartmentDataWhichNeedToSync.length > 0) { + // self.props.navigation.navigate('syncApartment'); + NavigationService.navigate('syncApartment'); + } else { + NavigationService.navigate('home'); + } + } else { + NavigationService.navigate('home'); + } + } + + @action + async getOneClickRental() { + var url = api.getOneClickApartment; + this.loading = true; + try { + const response = await axios.get(url, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + console.log(response); + this.oneClickApartment = response.data.content; + this.loading = false; + } catch (error) { + console.log(error); + this.loading = false; + } + } + + @action + async getService(self, items) { + var url = api.service; + this.loading = true; + try { + const response = await axios.get(url, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + console.log(response); + this.loading = false; + this.serviceContent = response.data.content; + this.serviceContent.map((data, index) => { + data.select = false; + }); + history.push(self, '/newContractData', {apartmentData: items}); + } catch (error) { + console.log(error); + this.loading = false; + self.refs.toast.show('Network failed'); + } + } +} + +export default new Stores(); diff --git a/src/stores/app-store.js b/src/stores/app-store.js new file mode 100644 index 0000000..b4a2f79 --- /dev/null +++ b/src/stores/app-store.js @@ -0,0 +1,479 @@ +import {observable, action, transaction} from 'mobx'; +import axios from 'axios'; +import {NavigationActions} from 'react-navigation'; +import language from '../services/language'; +import AsyncStorageHelper from '../common/asyncStorageHelper'; +import uuid from 'react-native-uuid'; +import moment from 'moment'; +import PushNotification from 'react-native-push-notification'; +import Realm from 'realm'; +import history from '../common/history'; +import api from '../services/api'; +var _ = require('lodash'); +import { + UserSchemea, + ApartmentSchemea, + DocSchemea, + NotificationSchemea, +} from '../services/realm/schemeas'; +import Global from '../services/Global'; +const asyncStorageHelper = new AsyncStorageHelper(); +let realm = new Realm({ + schema: [UserSchemea, ApartmentSchemea, DocSchemea, NotificationSchemea], +}); +class AppStore { + @observable + text = language.en; + @observable + languageSelection = 'english'; + + @observable + logined = false; + + @observable + addFunctionVisable = false; + + @observable + loading = false; + + @observable + list = []; + + apartment = null; + + @observable + apartmentData = { + id: null, + createDate: null, + modifyDate: null, + avatar: null, + apartmentName: null, + address: null, + signContractDate: null, + endContractDate: null, + rent: null, + country: 'hk', + CallingCode: '+852', + rentNotification: 1, + endContractNotification: 1, + rentNotificationId: [], + endContractNotificationId: null, + remark: [], + doc: [], + }; + @observable + apartmentDataRemark = []; + @observable + apartmentDataDoc = []; + @observable + avatar = null; + @observable + user = null; + + @observable + image = null; + + @observable + timer = 0; + + @action + convertLocalIdentifierToAssetLibrary(localIdentifier, ext) { + const hash = localIdentifier.split('/')[0]; + return `assets-library://asset/asset.${ext}?id=${hash}&ext=${ext}`; + } + + @action + getCountryLabel(value) { + return this.text.CountryList[ + this.text.CountryList.findIndex(x => x.value === value) + ].label; + } + + @action + setList(data) { + this.list = data; + } + + @action + resetTimer() { + this.timer = 0; + } + + @action + tick() { + this.timer += 1; + } + @action + idGenerator() { + return uuid.v4(); + } + + @action + resetApartmentData() { + this.apartmentData = { + id: null, + createDate: null, + modifyDate: null, + avatar: null, + apartmentName: null, + address: null, + signContractDate: null, + endContractDate: null, + rent: null, + country: 'hk', + CallingCode: '+852', + rentNotification: 1, + endContractNotification: 1, + rentNotificationId: [], + endContractNotificationId: null, + remark: [], + doc: [], + }; + this.apartmentDataRemark = []; + this.apartmentDataDoc = []; + this.avatar = null; + } + + @action + rentlocalNotificationHandler() { + if (this.apartmentData.rentNotification !== 0) { + transaction(() => { + this.apartmentData.rentNotificationId = []; + var notificationDay = moment( + this.apartmentData.signContractDate, + ).subtract(this.apartmentData.rentNotification, 'days'); + var endday = moment(this.apartmentData.endContractDate); + console.log(notificationDay.toDate()); + console.log(endday.toDate()); + while (notificationDay <= endday) { + var id = this.idGenerator(); + this.apartmentData.rentNotificationId.push(id); + var title = '收租提示'; + var normalDay = notificationDay.add( + this.apartmentData.rentNotification, + 'days', + ); + var conent = + this.apartmentData.apartmentName + + '的租客應在' + + normalDay.format('DD-MM-YYYY') + + '交租'; + this.pushNotification(title, conent, id, notificationDay.toDate()); + notificationDay = notificationDay.add(1, 'months'); + console.log(notificationDay.toDate()); + } + }); + } + } + + @action + endContractlocalNotificationHandler() { + if (this.apartmentData.endContractNotification !== 0) { + this.apartmentData.endContractNotificationId = null; + var endday = moment(this.apartmentData.endContractDate).subtract( + this.apartmentData.endContractNotification, + 'days', + ); + + var id = this.idGenerator(); + this.apartmentData.endContractNotificationId = id; + var title = '合約到期提示'; + var normalDay = endday.add( + this.apartmentData.endContractNotification, + 'days', + ); + var conent = + this.apartmentData.apartmentName + + '的租約會在' + + normalDay.format('DD-MM-YYYY') + + '到期'; + this.pushNotification(title, conent, id, endday.toDate()); + } + } + + @action + deleteNotification(index) { + this.user.apartment[index].rentNotificationId.map((items, index) => { + PushNotification.cancelLocalNotifications({id: items}); + }); + PushNotification.cancelLocalNotifications({ + id: this.user.apartment[index].endContractNotificationId, + }); + } + + pushNotification(title, content, id, date) { + this.lastId++; + PushNotification.localNotificationSchedule({ + date: date, // in 30 secs + id: id, + userInfo: { + id: id, //IMPORTANT!! adding the userInfo, so that the cancel will work! + }, + + number: 0, + /* iOS only properties */ + alertAction: 'view', // (optional) default: view + + /* iOS and Android properties */ + title: title, // (optional) + message: content, // (required) + playSound: true, // (optional) default: true + soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played) + }); + } + + @action + cloneApartmentData(index) { + console.log('run clone'); + const data = this.user.apartment[index]; + this.apartmentData = { + id: data.id, + createDate: data.createDate, + modifyDate: data.modifyDate, + apartmentName: data.apartmentName, + address: data.address, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: data.rent, + country: data.country, + CallingCode: data.CallingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: data.rentNotificationId, + endContractNotificationId: data.endContractNotificationId, + }; + this.avatar = _.cloneDeep(data.avatar); + this.apartmentDataRemark = data.remark; + var remark = []; + data.remark.map((item, index) => { + remark.push(item); + }); + this.apartmentDataRemark = remark; + } + + @action + async cloneApartmentDocData(index) { + const data = this.user.apartment[index].doc; + var doc = []; + await data.map((item, index) => { + var newItems = item; + doc.push(newItems); + }); + this.apartmentDataDoc = doc; + } + + @action + async saveEdit(index) { + var data = this.apartmentData; + let user = realm.objects('User'); + await this.deleteNotification(index); + await this.rentlocalNotificationHandler(); + await this.endContractlocalNotificationHandler(); + + try { + realm.write(() => { + let newApartment = { + id: data.id, + createDate: data.createDate, + modifyDate: new Date(), + apartmentName: data.apartmentName, + address: data.address, + avatar: this.avatar, + signContractDate: data.signContractDate, + endContractDate: data.endContractDate, + rent: parseInt(data.rent), + country: data.country, + CallingCode: data.CallingCode, + rentNotification: data.rentNotification, + endContractNotification: data.endContractNotification, + rentNotificationId: data.rentNotificationId, + endContractNotificationId: data.endContractNotificationId, + remark: this.apartmentDataRemark, + doc: this.user.apartment[index].doc, + }; + user[0].apartment[index] = newApartment; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + + @action + saveDocEdit(index) { + var data = this.apartmentDataDoc; + let user = realm.objects('User'); + try { + realm.write(() => { + user[0].apartment[index].doc = this.apartmentDataDoc; + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + + @action + getUser() { + let user = realm.objects('User'); + for (let p of user) { + this.user = p; + } + } + + @action + async loadLocalData() { + let user = await realm.objects('User'); + for (let p of user) { + this.user = p; + } + } + + @action + deleteApartment(index) { + var data = this.apartmentData; + let user = realm.objects('User'); + try { + realm.write(() => { + user[0].apartment.splice(index, 1); + }); + } catch (e) { + console.log('Error on creation ' + e); + } + } + + @action + changeLanguage(lang) { + console.log(lang); + if (lang == 'english') { + console.log('select english'); + this.text = language.en; + this.languageSelection = 'english'; + } else if (lang == 'hk') { + console.log('select hk'); + this.text = language.hk; + this.languageSelection = 'hk'; + } else { + console.log('select chinese'); + this.text = language.ch; + this.languageSelection = 'ch'; + } + } + + //api + + @action + async signupPost(self, data) { + console.log(data); + console.log(api.signup); + var jsonData = { + fullname: data.fullname, + email: data.email, + gender: data.gender, + countryCode: data.countryCode, + chara: data.chara, + age: data.age, + pwd: data.pwd, + phone: data.phone, + // refcode: "", + // ownerPhone: "" + }; + this.loading = true; + var requestURL = api.signup; + try { + const response = await axios.post(requestURL, jsonData, { + headers: { + 'Content-Type': 'application/json', + }, + }); + + transaction(() => { + this.loading = false; + // this.isSignUp = false; + // this.isSignUpVerify = false; + this.logined = true; + this.userData = response; + }); + console.log(response); + // self.navigatieAction("menu"); + var data = {id: data.email, pwd: data.pwd}; + Global.login = true; + //this.loginPost(data, self, true); + asyncStorageHelper.saveData('userInfo', data); + history.popToUp(self); + } catch (e) { + console.log(e); + self.refs.toast.show('SignUp Fail: ' + e.response.data); + this.loading = false; + } + } + + async loginPost(data, self, navAction) { + this.loading = true; + var requestURL = api.login; + try { + const response = await axios.post(requestURL, data, { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 5000, + }); + + Global.login = true; + transaction(() => { + this.userData = response; + this.logined = true; + this.loading = false; + }); + // this.getCreditCard(); + // this.notificationInit(response.data.member.id); + console.log(response); + if (navAction) { + // asyncStorageHelper.saveData("userInfo", data); + // history.push(self,'mainPage') + self.props.navigation.navigate('mainPage'); + } else { + asyncStorageHelper.saveData('userInfo', data); + history.goBack(self); + } + } catch (e) { + self.refs.toast.show('Login Fail'); + this.loading = false; + //connectFail.fail(); + console.log(e); + } + } + + @action + async logoutPost(self, reset, data) { + this.loading = true; + var token = this.userData.data.token; + var requestURL = api.logout; + try { + const response = await axios.post(requestURL, token); + Global.login = false; + //this.regUserNotificationToken(""); + asyncStorageHelper.removeItemValue('userInfo'); + if (reset) { + this.loginPost(data, self, true); + } else { + transaction(() => { + this.userData = {}; + this.logined = false; + //this.creditCardinfo = {}; + //this.addedCard = false; + this.loading = false; + }); + self.props.navigation.navigate( + 'main', + {}, + NavigationActions.navigate({routeName: 'home'}), + ); + } + } catch (e) { + this.loading = false; + console.log(e); + } + } +} + +const appStore = new AppStore(); +export {appStore}; diff --git a/src/stores/index.js b/src/stores/index.js new file mode 100755 index 0000000..d300d29 --- /dev/null +++ b/src/stores/index.js @@ -0,0 +1,3 @@ +import {appStore} from './app-store' + +export {appStore} \ No newline at end of file diff --git a/src/themes/index.js b/src/themes/index.js new file mode 100755 index 0000000..f8dede3 --- /dev/null +++ b/src/themes/index.js @@ -0,0 +1,289 @@ +import { RVW, RFT, RPX } from '../common/func'; +import { colors } from "../assets/styles/colors-theme"; +export const baseBlueColor = '#0091e4'; +export const lightBlueColor = '#a5d8ff'; +export const baseRedColor = '#f04d64'; + +export const globalStyle = { + container: { + flex: 1, + paddingVertical: 0, + }, + center: { + justifyContent: 'center', + alignItems: 'center', + alignContent: 'center', + }, + avatarWrapper: { + width: (9 * RVW) + 1, + height: (9 * RVW) + 1, + borderRadius: (9 * RVW) / 2, + borderWidth: 1, + borderColor: '#ccc', + }, + avatar: { + width: 9 * RVW, + height: 9 * RVW, + borderRadius: (9 * RVW) / 2, + }, + listItemRight: { + width: 60 * RVW, + textAlign: 'right', + }, +}; + +export const headerStyle = { + tabBar: { + height: 12 * RVW, + backgroundColor: '#fff', + }, + tabLabel: { + lineHeight: 9 * RVW, + fontSize: 3.6 * RFT, + }, + wrapper: { + paddingVertical: 0, + minHeight: Math.round(14 * RVW), + backgroundColor: colors.mainColor, + borderBottomWidth: 0, + }, + center: { + color: '#fff', + fontSize: 5 * RFT, + }, + icon: { + fontSize: 8 * RFT, + width: 10 * RFT, + height: 10 * RFT, + lineHeight: 10 * RFT, + textAlign: 'center', + }, + iconSlim: { + fontSize: 6 * RFT, + }, + buttonGroup: { + top: 2 * RVW, + width: 30 * RVW, + height: 8 * RVW, + borderRadius: 6, + }, +}; + +export const contactStyle = { + item: { + height: 60, + textAlignVertical: 'center', + backgroundColor: '#ffffff', + color: '#5C5C5C', + fontSize: 15, + }, + section: { + height: 20, + paddingLeft: 10, + textAlign: 'left', + textAlignVertical: 'center', + backgroundColor: '#bcbec1', + color: 'white', + fontSize: 14, + }, + separatorLine: { + height: 1, + backgroundColor: '#bcbec1', + }, + menuBox: { + position: 'absolute', + right: 0, + top: 14 * RVW, + width: 40 * RVW, + backgroundColor: '#fff', + borderLeftWidth: 2 * RPX, + borderLeftColor: '#999', + }, + menuLine: { + fontSize: 3.6 * RFT, + textAlign: 'center', + borderBottomWidth: 2 * RPX, + borderBottomColor: '#999', + lineHeight: 10 * RFT, + }, +}; + +export const actionBarStyle = { + titleText: { + color: '#111111', + fontSize: 16, + textAlign: 'center', + }, +}; + +export const chatStyle = { + chatBoxWrapper: { + margin: 0, + padding: 0, + backgroundColor: '#fff', + borderTopWidth: 1, + borderTopColor: '#ccc', + }, + chatBox: { + flexDirection: 'row', + margin: 0, + padding: 10, + }, + chatText: { + padding: 0, + paddingHorizontal: 6, + borderWidth: 1, + borderColor: '#ccc', + borderRadius: 4, + fontSize: 4.5 * RFT, + width: 64 * RVW, + height: 9 * RFT, + }, + chatBtn: { + padding: 0, + width: 84 * RVW, + height: 9 * RFT, + shadowOpacity: 0, + backgroundColor: '#fff', + borderWidth: 1, + borderColor: '#ccc', + borderRadius: 4, + }, + chatBtnText: { + textAlign: 'center', + lineHeight: 9 * RFT, + fontSize: 3 * RFT, + }, + chatItemWraper: { + backgroundColor: '#f0f0f0', + borderTopWidth: 1, + borderTopColor: '#999', + paddingVertical: 20, + }, + chatItemRow: { + flexDirection: 'row', + justifyContent: 'space-around', + }, + chatItem: { + justifyContent: 'center', + alignItems: 'center', + alignContent: 'center', + width: 12 * RVW, + height: 12 * RVW, + borderWidth: 1, + backgroundColor: '#fff', + borderColor: '#ccc', + borderRadius: 2 * RVW, + }, + iconSmall: { + width: 10 * RFT, + height: 10 * RFT, + }, + wrapper: { + flexDirection: 'row', + alignItems: 'flex-start', + marginTop: 10, + padding: 10, + }, + left: { + justifyContent: 'flex-start', + }, + right: { + justifyContent: 'flex-end', + }, + center: { + justifyContent: 'space-between', + alignItems: 'center', + }, + icon: { + marginTop: 2 * RVW, + marginRight: 10, + width: 5 * RFT, + height: 5 * RFT, + }, + content: { + padding: 10, + borderRadius: 6, + flexWrap: 'wrap', + maxWidth: 60 * RVW, + }, + contentLeft: { + marginLeft: 10, + backgroundColor: lightBlueColor, + }, + contentRight: { + marginRight: 10, + backgroundColor: '#fff', + }, + text: { + fontSize: 3.2 * RFT, + }, + emoji: { + width: 16 * RFT, + height: 16 * RFT, + }, + play: { + width: 10 * RFT, + height: 10 * RFT, + }, + timetag: { + padding: 4, + // backgroundColor: '#f9f9ff', + color: '#679', + textAlign: 'center', + maxWidth: 80 * RVW, + marginLeft: 10 * RVW, + marginVertical: 10, + borderRadius: 4, + }, + tip: { + padding: 4, + backgroundColor: '#f9f9ff', + textAlign: 'center', + maxWidth: 40 * RVW, + marginLeft: 30 * RVW, + marginVertical: 10, + borderRadius: 4, + }, +}; + +export const emojiStyle = { + album: { + justifyContent: 'center', + alignItems: 'center', + alignContent: 'center', + width: 10 * RVW, + height: 10 * RVW, + borderWidth: 2 * RPX, + borderColor: '#ccc', + borderLeftWidth: 0, + }, + emojiWrapper: { + height: 50 * RVW, + flexDirection: 'column', + flexWrap: 'wrap', + justifyContent: 'flex-start', + }, + emoji: { + justifyContent: 'center', + alignItems: 'center', + alignContent: 'center', + width: 10 * RVW, + height: 10 * RVW, + borderWidth: 1 * RPX, + borderColor: '#ccc', + borderLeftWidth: 0, + }, + pinup: { + justifyContent: 'center', + alignItems: 'center', + alignContent: 'center', + width: 12.5 * RVW, + height: 12.5 * RVW, + borderWidth: 1 * RPX, + borderColor: '#ccc', + borderLeftWidth: 0, + }, + +}; + diff --git a/src/util/emoji.js b/src/util/emoji.js new file mode 100755 index 0000000..24c4029 --- /dev/null +++ b/src/util/emoji.js @@ -0,0 +1,51 @@ +/* 表情原图配置文件 */ + +const emojiBaseUrl = 'https://yx-web.nos-hz.163yun.com/webdoc/h5/emoji'; + +const emojiList = { + emoji: { + '[大笑]': { file: 'emoji_00.png' }, '[可爱]': { file: 'emoji_01.png' }, '[色]': { file: 'emoji_02.png' }, '[嘘]': { file: 'emoji_03.png' }, '[亲]': { file: 'emoji_04.png' }, '[呆]': { file: 'emoji_05.png' }, '[口水]': { file: 'emoji_06.png' }, '[汗]': { file: 'emoji_145.png' }, '[呲牙]': { file: 'emoji_07.png' }, '[鬼脸]': { file: 'emoji_08.png' }, '[害羞]': { file: 'emoji_09.png' }, '[偷笑]': { file: 'emoji_10.png' }, '[调皮]': { file: 'emoji_11.png' }, '[可怜]': { file: 'emoji_12.png' }, '[敲]': { file: 'emoji_13.png' }, '[惊讶]': { file: 'emoji_14.png' }, '[流感]': { file: 'emoji_15.png' }, '[委屈]': { file: 'emoji_16.png' }, '[流泪]': { file: 'emoji_17.png' }, '[嚎哭]': { file: 'emoji_18.png' }, '[惊恐]': { file: 'emoji_19.png' }, '[怒]': { file: 'emoji_20.png' }, '[酷]': { file: 'emoji_21.png' }, '[不说]': { file: 'emoji_22.png' }, '[鄙视]': { file: 'emoji_23.png' }, '[阿弥陀佛]': { file: 'emoji_24.png' }, '[奸笑]': { file: 'emoji_25.png' }, '[睡着]': { file: 'emoji_26.png' }, '[口罩]': { file: 'emoji_27.png' }, '[努力]': { file: 'emoji_28.png' }, '[抠鼻孔]': { file: 'emoji_29.png' }, '[疑问]': { file: 'emoji_30.png' }, '[怒骂]': { file: 'emoji_31.png' }, '[晕]': { file: 'emoji_32.png' }, '[呕吐]': { file: 'emoji_33.png' }, '[拜一拜]': { file: 'emoji_160.png' }, '[惊喜]': { file: 'emoji_161.png' }, '[流汗]': { file: 'emoji_162.png' }, '[卖萌]': { file: 'emoji_163.png' }, '[默契眨眼]': { file: 'emoji_164.png' }, '[烧香拜佛]': { file: 'emoji_165.png' }, '[晚安]': { file: 'emoji_166.png' }, '[强]': { file: 'emoji_34.png' }, '[弱]': { file: 'emoji_35.png' }, '[OK]': { file: 'emoji_36.png' }, '[拳头]': { file: 'emoji_37.png' }, '[胜利]': { file: 'emoji_38.png' }, '[鼓掌]': { file: 'emoji_39.png' }, '[握手]': { file: 'emoji_200.png' }, '[发怒]': { file: 'emoji_40.png' }, '[骷髅]': { file: 'emoji_41.png' }, '[便便]': { file: 'emoji_42.png' }, '[火]': { file: 'emoji_43.png' }, '[溜]': { file: 'emoji_44.png' }, '[爱心]': { file: 'emoji_45.png' }, '[心碎]': { file: 'emoji_46.png' }, '[钟情]': { file: 'emoji_47.png' }, '[唇]': { file: 'emoji_48.png' }, '[戒指]': { file: 'emoji_49.png' }, '[钻石]': { file: 'emoji_50.png' }, '[太阳]': { file: 'emoji_51.png' }, '[有时晴]': { file: 'emoji_52.png' }, '[多云]': { file: 'emoji_53.png' }, '[雷]': { file: 'emoji_54.png' }, '[雨]': { file: 'emoji_55.png' }, '[雪花]': { file: 'emoji_56.png' }, '[爱人]': { file: 'emoji_57.png' }, '[帽子]': { file: 'emoji_58.png' }, '[皇冠]': { file: 'emoji_59.png' }, '[篮球]': { file: 'emoji_60.png' }, '[足球]': { file: 'emoji_61.png' }, '[垒球]': { file: 'emoji_62.png' }, '[网球]': { file: 'emoji_63.png' }, '[台球]': { file: 'emoji_64.png' }, '[咖啡]': { file: 'emoji_65.png' }, '[啤酒]': { file: 'emoji_66.png' }, '[干杯]': { file: 'emoji_67.png' }, '[柠檬汁]': { file: 'emoji_68.png' }, '[餐具]': { file: 'emoji_69.png' }, '[汉堡]': { file: 'emoji_70.png' }, '[鸡腿]': { file: 'emoji_71.png' }, '[面条]': { file: 'emoji_72.png' }, '[冰淇淋]': { file: 'emoji_73.png' }, '[沙冰]': { file: 'emoji_74.png' }, '[生日蛋糕]': { file: 'emoji_75.png' }, '[蛋糕]': { file: 'emoji_76.png' }, '[糖果]': { file: 'emoji_77.png' }, '[葡萄]': { file: 'emoji_78.png' }, '[西瓜]': { file: 'emoji_79.png' }, '[光碟]': { file: 'emoji_80.png' }, '[手机]': { file: 'emoji_81.png' }, '[电话]': { file: 'emoji_82.png' }, '[电视]': { file: 'emoji_83.png' }, '[声音开启]': { file: 'emoji_84.png' }, '[声音关闭]': { file: 'emoji_85.png' }, '[铃铛]': { file: 'emoji_86.png' }, '[锁头]': { file: 'emoji_87.png' }, '[放大镜]': { file: 'emoji_88.png' }, '[灯泡]': { file: 'emoji_89.png' }, '[锤头]': { file: 'emoji_90.png' }, '[烟]': { file: 'emoji_91.png' }, '[炸弹]': { file: 'emoji_92.png' }, '[枪]': { file: 'emoji_93.png' }, '[刀]': { file: 'emoji_94.png' }, '[药]': { file: 'emoji_95.png' }, '[打针]': { file: 'emoji_96.png' }, '[钱袋]': { file: 'emoji_97.png' }, '[钞票]': { file: 'emoji_98.png' }, '[银行卡]': { file: 'emoji_99.png' }, '[手柄]': { file: 'emoji_100.png' }, '[麻将]': { file: 'emoji_101.png' }, '[调色板]': { file: 'emoji_102.png' }, '[电影]': { file: 'emoji_103.png' }, '[麦克风]': { file: 'emoji_104.png' }, '[耳机]': { file: 'emoji_105.png' }, '[音乐]': { file: 'emoji_106.png' }, '[吉他]': { file: 'emoji_107.png' }, '[火箭]': { file: 'emoji_108.png' }, '[飞机]': { file: 'emoji_109.png' }, '[火车]': { file: 'emoji_110.png' }, '[公交]': { file: 'emoji_111.png' }, '[轿车]': { file: 'emoji_112.png' }, '[出租车]': { file: 'emoji_113.png' }, '[警车]': { file: 'emoji_114.png' }, '[自行车]': { file: 'emoji_115.png' }, + }, +}; + +for (const emoji in emojiList) { + const emojiItem = emojiList[emoji]; + for (const key in emojiItem) { + const item = emojiItem[key]; + item.img = `${emojiBaseUrl}/${emoji}/${item.file}`; + // item.img = require(`../res/${emoji}/${item.file}`); + } +} + +const pinupList = { + ajmd: {}, + xxy: {}, + lt: {}, +}; + +for (let i = 1; i <= 48; i++) { + const key = `ajmd0${i >= 10 ? i : `0${i}`}`; + pinupList.ajmd[key] = { file: `${key}.png` }; +} +for (let i = 1; i <= 40; i++) { + const key = `xxy0${i >= 10 ? i : `0${i}`}`; + pinupList.xxy[key] = { file: `${key}.png` }; +} +for (let i = 1; i <= 20; i++) { + const key = `lt0${i >= 10 ? i : `0${i}`}`; + pinupList.lt[key] = { file: `${key}.png` }; +} + +for (const emoji in pinupList) { + const emojiItem = pinupList[emoji]; + for (const key in emojiItem) { + const item = emojiItem[key]; + item.img = `${emojiBaseUrl}/${emoji}/${item.file}`; + // item.img = require(`../res/${emoji}/${item.file}`); + } +} + +export default { + emojiList, + pinupList, +}; diff --git a/src/util/index.js b/src/util/index.js new file mode 100755 index 0000000..115d01b --- /dev/null +++ b/src/util/index.js @@ -0,0 +1,414 @@ +const util = {}; + +/* eslint-disable */ +util.encode = function (_map, _content) { + _content = `${_content}`; + if (!_map || !_content) { + return _content || ''; + } + return _content.replace(_map.r, ($1) => { + const _result = _map[!_map.i ? $1.toLowerCase() : $1]; + return _result != null ? _result : $1; + }); +}; + +util.simpleClone = (obj) => { + var cache = [] + var strObj = JSON.stringify(obj, function (key, value) { + if (typeof value === 'object' && value !== null) { + if (cache.indexOf(value) !== -1) { + // Circular reference found, discard key + return + } + // Store value in our collection + cache.push(value) + } + return value + }) + return JSON.parse(strObj) +} + +util.object2query = function (obj) { + const keys = Object.keys(obj); + const queryArray = keys.map(item => `${item}=${encodeURIComponent(obj[item])}`); + return queryArray.join('&'); +}; + +// 消息类型列表 +util.mapMsgType = function (msg) { + const map = { + text: '文本消息', + image: '图片消息', + file: '文件消息', + audio: '语音消息', + video: '视频消息', + geo: '地理位置消息', + tip: '提醒消息', + custom: '自定义消息', + notification: '系统通知', + robot: '机器人消息', + }; + const type = msg.type; + return map[type] || '未知消息类型'; +}; + +util.stringifyDate = function (datetime, simple = false) { + // let weekMap = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; + datetime = new Date(datetime); + const year = datetime.getFullYear(); + const simpleYear = datetime.getYear() - 100; + let month = datetime.getMonth() + 1; + month = month > 9 ? month : `0${month}`; + let day = datetime.getDate(); + day = day > 9 ? day : `0${day}`; + let hour = datetime.getHours(); + hour = hour > 9 ? hour : `0${hour}`; + let min = datetime.getMinutes(); + min = min > 9 ? min : `0${min}`; + let week = datetime.getDay(); + week = weekMap[week]; + const thatDay = (new Date(year, month - 1, day, 0, 0, 0)).getTime(); + + if (simple) { + return { + withYear: `${day}/${month}/${simpleYear}`, + withMonth: `${month}-${day}`, + withDay: `${week}`, + withLastDay: '昨天', + withHour: `${hour}:${min}`, + thatDay, + }; + } + return { + withYear: `${year}-${month}-${day} ${hour}:${min}`, + withMonth: `${month}-${day} ${hour}:${min}`, + withDay: `${week} ${hour}:${min}`, + withLastDay: `昨天 ${hour}:${min}`, + withHour: `${hour}:${min}`, + thatDay, + }; +}; + +/* 格式化日期 */ +util.formatDate = function (datetime, simple = false) { + const tempDate = (new Date()).getTime(); + // 今天 00:00 + const todayDate = this.stringifyDate(tempDate, true).thatDay + const result = this.stringifyDate(datetime, simple); + const thatDay = result.thatDay; + const deltaTime = (datetime - todayDate) / 1000; + + if (deltaTime > 0) { + return result.withHour; + } else if (deltaTime > - 3600 * 24) { + return result.withLastDay; + } else if (deltaTime > - 3600 * 24 * 7) { + return result.withDay; + } else if (deltaTime > - 3600 * 24 * 30) { + return result.withMonth; + } + return result.withYear; +}; + +util.parseSession = function (sessionId) { + if (/^p2p-/.test(sessionId)) { + return { + scene: 'p2p', + to: sessionId.replace(/^p2p-/, ''), + }; + } else if (/^team-/.test(sessionId)) { + return { + scene: 'team', + to: sessionId.replace(/^team-/, ''), + }; + } +}; + +util.parseCustomMsg = function (msg) { + if (msg.type === 'custom') { + try { + const cnt = JSON.parse(msg.content); + switch (cnt.type) { + case 1: + return '[猜拳消息]'; + case 2: + return '[阅后即焚]'; + case 3: + return '[贴图表情]'; + case 4: + return '[白板消息]'; + } + } catch (e) {} + return '[自定义消息]'; + } + return ''; +}; + +util.parseDisconnectMsg = function (error) { + error = error || {} + const map = { + PC: '电脑版', + Web: '网页版', + Android: '手机版', + iOS: '手机版', + WindowsPhone: '手机版', + }; + let errorMsg = ''; + switch (error.code) { + // 账号或者密码错误, 请跳转到登录页面并提示错误 + case 302: + errorMsg = '帐号或密码错误'; + break; + // 被踢, 请提示错误后跳转到登录页面 + case 'kicked': + errorMsg = `你的帐号于${util.formatDate(new Date())}被${(map[error.from] || '其他端')}踢出下线,请确定帐号信息安全!`; + break; + case 'logout': + errorMsg = '主动退出' + break; + default: + errorMsg = error.message || error.code || JSON.stringify(errorMsg); + break; + } + return errorMsg +} + +/* 获得有效的备注名 */ +util.getFriendAlias = function (userInfo) { + userInfo.alias = userInfo.alias ? userInfo.alias.trim() : ''; + return userInfo.alias || userInfo.nick || userInfo.account; +}; + +util.generateChatroomSysMsg = function (data) { + let text; + switch (data.attach.type) { + case 'memberEnter': + text = `欢迎${data.attach.fromNick}进入直播间`; + break; + case 'memberExit': + text = `${data.attach.fromNick}离开了直播间`; + break; + case 'blackMember': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员拉入黑名单`; + break; + case 'unblackMember': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员解除拉黑`; + break; + case 'gagMember': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员禁言`; + break; + case 'ungagMember': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员解除禁言`; + break; + case 'addManager': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被任命管理员身份`; + break; + case 'removeManager': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被解除管理员身份`; + break; + case 'addTempMute': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员临时禁言`; + break; + case 'removeTempMute': + text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员解除临时禁言`; + break; + case 'addCommon': + text = '管理员添加普通成员'; + break; + case 'removeCommon': + text = '管理员删除普通成员'; + break; + case 'kickMember': + text = `${data.attach.toNick[0]}被管理员踢出房间`; + break; + // case 'xxx': + // 直播公告已更新 + // break; + default: + text = '通知消息'; + break; + } + return text; +}; + +util.generateTeamSysmMsg = function (data) { + data.attach = data.attach || {} + let text = '' + let nicks = this.getNickNames(data.attach.users); + switch (data.attach.type) { + case 'updateTeam': + text = this.getTeamUpdateInfo(data); + break; + case 'addTeamMembers': { + const op = nicks.pop(); + text = `${op}邀请${nicks.join()}加入群`; + break; + } + case 'removeTeamMembers': { + const op = nicks.pop(); + text = `${nicks.join()}被${op}移出群`; + break; + } + case 'acceptTeamInvite': { + const op = nicks.pop(); + text = `${nicks.join()}接受了${op}入群邀请`; + break; + } + case 'passTeamApply': { + const op = nicks.shift(); + if (nicks.length === 1 && op === nicks[0]) { + // 此情况为高级群设置不需要验证,用户申请入群后,收到的群消息提示 + text = `${op}加入群`; + } else { + text = `${op}通过了${nicks}入群邀请`; + } + break; + } + case 'addTeamManagers': { + // todo test + const op = nicks.pop(); + text = `${op}新增了${nicks}为管理员`; + break; + } + case 'removeTeamManagers': { + // todo test + const op = nicks.pop(); + text = `${op}移除了${nicks}的管理员权限`; + break; + } + case 'leaveTeam': { + text = `${nicks.join()}退出了群`; + break; + } + case 'dismissTeam': { + text = `${nicks.join()}解散了群`; + break; + } + case 'transferTeam': { + // todo test + const nicks = this.getNickNames(data.attach.users); + const op = nicks.shift(); + text = `${op}转让群主给${nicks}`; + break; + } + case 'updateTeamMute': { + const nicks = this.getNickNames(data.attach.users); + const op = nicks.shift(); + text = `${nicks}被管理员${data.attach.mute ? '禁言' : '解除禁言'}`; + break; + } + default: + break; + } + return text; +}; + +// todo 写成私有成员方法 +util.getNickNames = function (users) { + return users.map(user => (user.account === store.state.userID ? '你' : user.nick)); +}; + +// todo 写成私有成员方法 +util.getTeamUpdateInfo = function (msg) { + let text, + team = msg.attach.team, + op = this.getNickNames(msg.attach.users).pop(); + if (team.name) { + text = `${op}修改群名为${team.name}`; + } else if (team.intro) { + text = `${op}修改群介绍为${team.intro}`; + } + // 由于群公告的交互与 Android iOS 不一致,现版本不适配群公告 + // else if (team['announcement']) { + // text = `${op}修改群公告为${team['announcement']}` + // } + else if (team.joinMode) { + text = `群身份验证模式更新为${team.joinMode === 'noVerify' ? '不需要验证' : team.joinMode === 'needVerify' ? '需要验证' : '禁止任何人加入'}`; + } else if (team.inviteMode) { + text = `邀请他人权限为${team.inviteMode === 'all' ? '所有人' : '管理员'}`; + } else if (team.updateTeamMode) { + text = `群资料修改权限为${team.updateTeamMode === 'all' ? '所有人' : '管理员'}`; + } else if (team.beInviteMode) { + text = `被邀请人身份${team.beInviteMode === 'noVerify' ? '不需要验证' : '需要验证'}`; + } else { + text = '更新群信息'; + } + return text; +}; + +util.teamConfigMap = { + joinMode: { + noVerify: '不需要验证', + needVerify: '需要验证', + rejectAll: '禁止任何人加入', + }, + beInviteMode: { + needVerify: '需要验证', + noVerify: '不需要验证', + }, + inviteMode: { + manager: '管理员邀请', + all: '所有人邀请', + }, + updateTeamMode: { + manager: '管理员修改', + all: '所有人修改', + }, + memberType: { + manager: '管理员', + normal: '普通成员', + }, +}; + +/** + * 缩略图 + * genAvatar + * @param {String} url + * @returns {String} + */ +util.genAvatar = function genAvatar(url = '') { + if (url.indexOf('nim.nosdn.127.net') !== -1) { + return `${url}?imageView&thumbnail=80x80&quality=85`; + } + return url; +}; + +util.debounce = function(idle, action){ + var last + return function(){ + clearTimeout(last) + last = setTimeout(function(){ + action() + }, idle) + }() +} + +util.countWordLength = function(word) { + let count = 0 + for (let i = 0; i < word.length; i++) { + if (word.charCodeAt(i) < 128) { + count += 1 + } else { + count += 2 + } + } + return count +} + +util.shortenWord = function(word, maxLen = 20) { + let count = 0 + for (let i = 0; i < word.length; i++) { + if (word.charCodeAt(i) < 128) { + count += 1 + } else { + count += 2 + } + if (count > maxLen) { + return word.substr(0, i - 1) + '...' + } + } + return word +} + +export default util; diff --git a/src/util/md5.js b/src/util/md5.js new file mode 100755 index 0000000..4c7cf62 --- /dev/null +++ b/src/util/md5.js @@ -0,0 +1,224 @@ +/** +* +* MD5 (Message-Digest Algorithm) +* http://www.webtoolkit.info/ +* +* */ + +function MD5(string) { + function RotateLeft(lValue, iShiftBits) { + return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); + } + + function AddUnsigned(lX, lY) { + const lX8 = (lX & 0x80000000); + const lY8 = (lY & 0x80000000); + const lX4 = (lX & 0x40000000); + const lY4 = (lY & 0x40000000); + const lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); + if (lX4 & lY4) { + return (lResult ^ 0x80000000 ^ lX8 ^ lY8); + } + if (lX4 | lY4) { + if (lResult & 0x40000000) { + return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); + } + return (lResult ^ 0x40000000 ^ lX8 ^ lY8); + } + return (lResult ^ lX8 ^ lY8); + } + + function F(x, y, z) { return (x & y) | ((~x) & z); } + function G(x, y, z) { return (x & z) | (y & (~z)); } + function H(x, y, z) { return (x ^ y ^ z); } + function I(x, y, z) { return (y ^ (x | (~z))); } + + function FF(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); + return AddUnsigned(RotateLeft(a, s), b); + } + + function GG(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); + return AddUnsigned(RotateLeft(a, s), b); + } + + function HH(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); + return AddUnsigned(RotateLeft(a, s), b); + } + + function II(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); + return AddUnsigned(RotateLeft(a, s), b); + } + + function ConvertToWordArray(string) { + let lWordCount; + const lMessageLength = string.length; + const lNumberOfWords_temp1 = lMessageLength + 8; + const lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; + const lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; + const lWordArray = Array(lNumberOfWords - 1); + let lBytePosition = 0; + let lByteCount = 0; + while (lByteCount < lMessageLength) { + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); + lByteCount++; + } + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); + lWordArray[lNumberOfWords - 2] = lMessageLength << 3; + lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; + return lWordArray; + } + + function WordToHex(lValue) { + let WordToHexValue = '', + WordToHexValue_temp = '', + lByte, + lCount; + for (lCount = 0; lCount <= 3; lCount++) { + lByte = (lValue >>> (lCount * 8)) & 255; + WordToHexValue_temp = `0${lByte.toString(16)}`; + WordToHexValue += WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2); + } + return WordToHexValue; + } + + function Utf8Encode(string) { + string = string.replace(/\r\n/g, '\n'); + let utftext = ''; + + for (let n = 0; n < string.length; n++) { + const c = string.charCodeAt(n); + + if (c < 128) { + utftext += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + + return utftext; + } + + let x = Array(); + let k, + AA, + BB, + CC, + DD, + a, + b, + c, + d; + let S11 = 7, + S12 = 12, + S13 = 17, + S14 = 22; + let S21 = 5, + S22 = 9, + S23 = 14, + S24 = 20; + let S31 = 4, + S32 = 11, + S33 = 16, + S34 = 23; + let S41 = 6, + S42 = 10, + S43 = 15, + S44 = 21; + + string = Utf8Encode(string); + + x = ConvertToWordArray(string); + + a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; + + for (k = 0; k < x.length; k += 16) { + AA = a; BB = b; CC = c; DD = d; + a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); + d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); + c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB); + b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); + a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); + d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); + c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613); + b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501); + a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8); + d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); + c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); + b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); + a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122); + d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193); + c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E); + b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821); + a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); + d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340); + c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); + b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); + a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); + d = GG(d, a, b, c, x[k + 10], S22, 0x2441453); + c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); + b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); + a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); + d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); + c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); + b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); + a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); + d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); + c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); + b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); + a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); + d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681); + c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); + b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); + a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); + d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); + c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); + b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); + a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); + d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); + c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); + b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05); + a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); + d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); + c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); + b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); + a = II(a, b, c, d, x[k + 0], S41, 0xF4292244); + d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97); + c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); + b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039); + a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3); + d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); + c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); + b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1); + a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); + d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); + c = II(c, d, a, b, x[k + 6], S43, 0xA3014314); + b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); + a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82); + d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); + c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); + b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391); + a = AddUnsigned(a, AA); + b = AddUnsigned(b, BB); + c = AddUnsigned(c, CC); + d = AddUnsigned(d, DD); + } + + const temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d); + + return temp.toLowerCase(); +} + +export default MD5; diff --git a/src/util/pinyin.js b/src/util/pinyin.js new file mode 100755 index 0000000..cd13047 --- /dev/null +++ b/src/util/pinyin.js @@ -0,0 +1,39 @@ +/** + * 收录常用汉字6763个,不支持声调,支持多音字,并按照汉字使用频率由低到高排序 + */ +const pinyinNoToneDict = { + a: '阿啊呵腌嗄吖锕', e: '额阿俄恶鹅遏鄂厄饿峨扼娥鳄哦蛾噩愕讹锷垩婀鹗萼谔莪腭锇颚呃阏屙苊轭', ai: '爱埃艾碍癌哀挨矮隘蔼唉皑哎霭捱暧嫒嗳瑷嗌锿砹', ei: '诶', xi: '系西席息希习吸喜细析戏洗悉锡溪惜稀袭夕洒晰昔牺腊烯熙媳栖膝隙犀蹊硒兮熄曦禧嬉玺奚汐徙羲铣淅嘻歙熹矽蟋郗唏皙隰樨浠忾蜥檄郄翕阋鳃舾屣葸螅咭粞觋欷僖醯鼷裼穸饩舄禊诶菥蓰', yi: '一以已意议义益亿易医艺食依移衣异伊仪宜射遗疑毅谊亦疫役忆抑尾乙译翼蛇溢椅沂泄逸蚁夷邑怡绎彝裔姨熠贻矣屹颐倚诣胰奕翌疙弈轶蛾驿壹猗臆弋铱旖漪迤佚翊诒怿痍懿饴峄揖眙镒仡黟肄咿翳挹缢呓刈咦嶷羿钇殪荑薏蜴镱噫癔苡悒嗌瘗衤佾埸圯舣酏劓', an: '安案按岸暗鞍氨俺胺铵谙庵黯鹌桉埯犴揞厂广', han: '厂汉韩含旱寒汗涵函喊憾罕焊翰邯撼瀚憨捍酣悍鼾邗颔蚶晗菡旰顸犴焓撖', ang: '昂仰盎肮', ao: '奥澳傲熬凹鳌敖遨鏖袄坳翱嗷拗懊岙螯骜獒鏊艹媪廒聱', wa: '瓦挖娃洼袜蛙凹哇佤娲呙腽', yu: '于与育余预域予遇奥语誉玉鱼雨渔裕愈娱欲吁舆宇羽逾豫郁寓吾狱喻御浴愉禹俞邪榆愚渝尉淤虞屿峪粥驭瑜禺毓钰隅芋熨瘀迂煜昱汩於臾盂聿竽萸妪腴圄谕觎揄龉谀俣馀庾妤瘐鬻欤鹬阈嵛雩鹆圉蜮伛纡窬窳饫蓣狳肀舁蝓燠', niu: '牛纽扭钮拗妞忸狃', o: '哦噢喔', ba: '把八巴拔伯吧坝爸霸罢芭跋扒叭靶疤笆耙鲅粑岜灞钯捌菝魃茇', pa: '怕帕爬扒趴琶啪葩耙杷钯筢', pi: '被批副否皮坏辟啤匹披疲罢僻毗坯脾譬劈媲屁琵邳裨痞癖陂丕枇噼霹吡纰砒铍淠郫埤濞睥芘蚍圮鼙罴蜱疋貔仳庀擗甓陴', bi: '比必币笔毕秘避闭佛辟壁弊彼逼碧鼻臂蔽拂泌璧庇痹毙弼匕鄙陛裨贲敝蓖吡篦纰俾铋毖筚荸薜婢哔跸濞秕荜愎睥妣芘箅髀畀滗狴萆嬖襞舭', bai: '百白败摆伯拜柏佰掰呗擘捭稗', bo: '波博播勃拨薄佛伯玻搏柏泊舶剥渤卜驳簿脖膊簸菠礴箔铂亳钵帛擘饽跛钹趵檗啵鹁擗踣', bei: '北被备倍背杯勃贝辈悲碑臂卑悖惫蓓陂钡狈呗焙碚褙庳鞴孛鹎邶鐾', ban: '办版半班般板颁伴搬斑扮拌扳瓣坂阪绊钣瘢舨癍', pan: '判盘番潘攀盼拚畔胖叛拌蹒磐爿蟠泮袢襻丬', bin: '份宾频滨斌彬濒殡缤鬓槟摈膑玢镔豳髌傧', bang: '帮邦彭旁榜棒膀镑绑傍磅蚌谤梆浜蒡', pang: '旁庞乓磅螃彷滂逄耪', beng: '泵崩蚌蹦迸绷甭嘣甏堋', bao: '报保包宝暴胞薄爆炮饱抱堡剥鲍曝葆瀑豹刨褒雹孢苞煲褓趵鸨龅勹', bu: '不部步布补捕堡埔卜埠簿哺怖钚卟瓿逋晡醭钸', pu: '普暴铺浦朴堡葡谱埔扑仆蒲曝瀑溥莆圃璞濮菩蹼匍噗氆攵镨攴镤', mian: '面棉免绵缅勉眠冕娩腼渑湎沔黾宀眄', po: '破繁坡迫颇朴泊婆泼魄粕鄱珀陂叵笸泺皤钋钷', fan: '反范犯繁饭泛翻凡返番贩烦拚帆樊藩矾梵蕃钒幡畈蘩蹯燔', fu: '府服副负富复福夫妇幅付扶父符附腐赴佛浮覆辅傅伏抚赋辐腹弗肤阜袱缚甫氟斧孚敷俯拂俘咐腑孵芙涪釜脯茯馥宓绂讣呋罘麸蝠匐芾蜉跗凫滏蝮驸绋蚨砩桴赙菔呒趺苻拊阝鲋怫稃郛莩幞祓艴黻黼鳆', ben: '本体奔苯笨夯贲锛畚坌', feng: '风丰封峰奉凤锋冯逢缝蜂枫疯讽烽俸沣酆砜葑唪', bian: '变便边编遍辩鞭辨贬匾扁卞汴辫砭苄蝙鳊弁窆笾煸褊碥忭缏', pian: '便片篇偏骗翩扁骈胼蹁谝犏缏', zhen: '镇真针圳振震珍阵诊填侦臻贞枕桢赈祯帧甄斟缜箴疹砧榛鸩轸稹溱蓁胗椹朕畛浈', biao: '表标彪镖裱飚膘飙镳婊骠飑杓髟鳔灬瘭', piao: '票朴漂飘嫖瓢剽缥殍瞟骠嘌莩螵', huo: '和活或货获火伙惑霍祸豁嚯藿锪蠖钬耠镬夥灬劐攉', bie: '别鳖憋瘪蹩', min: '民敏闽闵皿泯岷悯珉抿黾缗玟愍苠鳘', fen: '分份纷奋粉氛芬愤粪坟汾焚酚吩忿棼玢鼢瀵偾鲼', bing: '并病兵冰屏饼炳秉丙摒柄槟禀枋邴冫', geng: '更耕颈庚耿梗埂羹哽赓绠鲠', fang: '方放房防访纺芳仿坊妨肪邡舫彷枋鲂匚钫', xian: '现先县见线限显险献鲜洗宪纤陷闲贤仙衔掀咸嫌掺羡弦腺痫娴舷馅酰铣冼涎暹籼锨苋蚬跹岘藓燹鹇氙莶霰跣猃彡祆筅', fou: '不否缶', ca: '拆擦嚓礤', cha: '查察差茶插叉刹茬楂岔诧碴嚓喳姹杈汊衩搽槎镲苴檫馇锸猹', cai: '才采财材菜彩裁蔡猜踩睬', can: '参残餐灿惨蚕掺璨惭粲孱骖黪', shen: '信深参身神什审申甚沈伸慎渗肾绅莘呻婶娠砷蜃哂椹葚吲糁渖诜谂矧胂', cen: '参岑涔', san: '三参散伞叁糁馓毵', cang: '藏仓苍沧舱臧伧', zang: '藏脏葬赃臧奘驵', chen: '称陈沈沉晨琛臣尘辰衬趁忱郴宸谌碜嗔抻榇伧谶龀肜', cao: '草操曹槽糙嘈漕螬艚屮', ce: '策测册侧厕栅恻', ze: '责则泽择侧咋啧仄箦赜笮舴昃迮帻', zhai: '债择齐宅寨侧摘窄斋祭翟砦瘵哜', dao: '到道导岛倒刀盗稻蹈悼捣叨祷焘氘纛刂帱忉', ceng: '层曾蹭噌', zha: '查扎炸诈闸渣咋乍榨楂札栅眨咤柞喳喋铡蚱吒怍砟揸痄哳齄', chai: '差拆柴钗豺侪虿瘥', ci: '次此差词辞刺瓷磁兹慈茨赐祠伺雌疵鹚糍呲粢', zi: '资自子字齐咨滋仔姿紫兹孜淄籽梓鲻渍姊吱秭恣甾孳訾滓锱辎趑龇赀眦缁呲笫谘嵫髭茈粢觜耔', cuo: '措错磋挫搓撮蹉锉厝嵯痤矬瘥脞鹾', chan: '产单阐崭缠掺禅颤铲蝉搀潺蟾馋忏婵孱觇廛谄谗澶骣羼躔蒇冁', shan: '山单善陕闪衫擅汕扇掺珊禅删膳缮赡鄯栅煽姗跚鳝嬗潸讪舢苫疝掸膻钐剡蟮芟埏彡骟', zhan: '展战占站崭粘湛沾瞻颤詹斩盏辗绽毡栈蘸旃谵搌', xin: '新心信辛欣薪馨鑫芯锌忻莘昕衅歆囟忄镡', lian: '联连练廉炼脸莲恋链帘怜涟敛琏镰濂楝鲢殓潋裢裣臁奁莶蠊蔹', chang: '场长厂常偿昌唱畅倡尝肠敞倘猖娼淌裳徜昶怅嫦菖鲳阊伥苌氅惝鬯', zhang: '长张章障涨掌帐胀彰丈仗漳樟账杖璋嶂仉瘴蟑獐幛鄣嫜', chao: '超朝潮炒钞抄巢吵剿绰嘲晁焯耖怊', zhao: '着照招找召朝赵兆昭肇罩钊沼嘲爪诏濯啁棹笊', zhou: '调州周洲舟骤轴昼宙粥皱肘咒帚胄绉纣妯啁诌繇碡籀酎荮', che: '车彻撤尺扯澈掣坼砗屮', ju: '车局据具举且居剧巨聚渠距句拒俱柜菊拘炬桔惧矩鞠驹锯踞咀瞿枸掬沮莒橘飓疽钜趄踽遽琚龃椐苣裾榘狙倨榉苴讵雎锔窭鞫犋屦醵', cheng: '成程城承称盛抢乘诚呈净惩撑澄秤橙骋逞瞠丞晟铛埕塍蛏柽铖酲裎枨', rong: '容荣融绒溶蓉熔戎榕茸冗嵘肜狨蝾', sheng: '生声升胜盛乘圣剩牲甸省绳笙甥嵊晟渑眚', deng: '等登邓灯澄凳瞪蹬噔磴嶝镫簦戥', zhi: '制之治质职只志至指织支值知识直致执置止植纸拓智殖秩旨址滞氏枝芝脂帜汁肢挚稚酯掷峙炙栉侄芷窒咫吱趾痔蜘郅桎雉祉郦陟痣蛭帙枳踯徵胝栀贽祗豸鸷摭轵卮轾彘觯絷跖埴夂黹忮骘膣踬', zheng: '政正证争整征郑丁症挣蒸睁铮筝拯峥怔诤狰徵钲', tang: '堂唐糖汤塘躺趟倘棠烫淌膛搪镗傥螳溏帑羰樘醣螗耥铴瑭', chi: '持吃池迟赤驰尺斥齿翅匙痴耻炽侈弛叱啻坻眙嗤墀哧茌豉敕笞饬踟蚩柢媸魑篪褫彳鸱螭瘛眵傺', shi: '是时实事市十使世施式势视识师史示石食始士失适试什泽室似诗饰殖释驶氏硕逝湿蚀狮誓拾尸匙仕柿矢峙侍噬嗜栅拭嘘屎恃轼虱耆舐莳铈谥炻豕鲥饣螫酾筮埘弑礻蓍鲺贳', qi: '企其起期气七器汽奇齐启旗棋妻弃揭枝歧欺骑契迄亟漆戚岂稽岐琦栖缉琪泣乞砌祁崎绮祺祈凄淇杞脐麒圻憩芪伎俟畦耆葺沏萋骐鳍綦讫蕲屺颀亓碛柒啐汔綮萁嘁蛴槭欹芑桤丌蜞', chuai: '揣踹啜搋膪', tuo: '托脱拓拖妥驼陀沱鸵驮唾椭坨佗砣跎庹柁橐乇铊沲酡鼍箨柝', duo: '多度夺朵躲铎隋咄堕舵垛惰哆踱跺掇剁柁缍沲裰哚隳', xue: '学血雪削薛穴靴谑噱鳕踅泶彐', chong: '重种充冲涌崇虫宠忡憧舂茺铳艟', chou: '筹抽绸酬愁丑臭仇畴稠瞅踌惆俦瘳雠帱', qiu: '求球秋丘邱仇酋裘龟囚遒鳅虬蚯泅楸湫犰逑巯艽俅蝤赇鼽糗', xiu: '修秀休宿袖绣臭朽锈羞嗅岫溴庥馐咻髹鸺貅', chu: '出处础初助除储畜触楚厨雏矗橱锄滁躇怵绌搐刍蜍黜杵蹰亍樗憷楮', tuan: '团揣湍疃抟彖', zhui: '追坠缀揣椎锥赘惴隹骓缒', chuan: '传川船穿串喘椽舛钏遄氚巛舡', zhuan: '专转传赚砖撰篆馔啭颛', yuan: '元员院原源远愿园援圆缘袁怨渊苑宛冤媛猿垣沅塬垸鸳辕鸢瑗圜爰芫鼋橼螈眢箢掾', cuan: '窜攒篡蹿撺爨汆镩', chuang: '创床窗闯幢疮怆', zhuang: '装状庄壮撞妆幢桩奘僮戆', chui: '吹垂锤炊椎陲槌捶棰', chun: '春纯醇淳唇椿蠢鹑朐莼肫蝽', zhun: '准屯淳谆肫窀', cu: '促趋趣粗簇醋卒蹴猝蹙蔟殂徂', dun: '吨顿盾敦蹲墩囤沌钝炖盹遁趸砘礅', qu: '区去取曲趋渠趣驱屈躯衢娶祛瞿岖龋觑朐蛐癯蛆苣阒诎劬蕖蘧氍黢蠼璩麴鸲磲', xu: '需许续须序徐休蓄畜虚吁绪叙旭邪恤墟栩絮圩婿戌胥嘘浒煦酗诩朐盱蓿溆洫顼勖糈砉醑', chuo: '辍绰戳淖啜龊踔辶', zu: '组族足祖租阻卒俎诅镞菹', ji: '济机其技基记计系期际及集级几给积极己纪即继击既激绩急奇吉季齐疾迹鸡剂辑籍寄挤圾冀亟寂暨脊跻肌稽忌饥祭缉棘矶汲畸姬藉瘠骥羁妓讥稷蓟悸嫉岌叽伎鲫诘楫荠戟箕霁嵇觊麂畿玑笈犄芨唧屐髻戢佶偈笄跽蒺乩咭赍嵴虮掎齑殛鲚剞洎丌墼蕺彐芰哜', cong: '从丛匆聪葱囱琮淙枞骢苁璁', zong: '总从综宗纵踪棕粽鬃偬枞腙', cou: '凑辏腠楱', cui: '衰催崔脆翠萃粹摧璀瘁悴淬啐隹毳榱', wei: '为位委未维卫围违威伟危味微唯谓伪慰尾魏韦胃畏帷喂巍萎蔚纬潍尉渭惟薇苇炜圩娓诿玮崴桅偎逶倭猥囗葳隗痿猬涠嵬韪煨艉隹帏闱洧沩隈鲔軎', cun: '村存寸忖皴', zuo: '作做座左坐昨佐琢撮祚柞唑嘬酢怍笮阼胙', zuan: '钻纂攥缵躜', da: '大达打答搭沓瘩惮嗒哒耷鞑靼褡笪怛妲', dai: '代带待贷毒戴袋歹呆隶逮岱傣棣怠殆黛甙埭诒绐玳呔迨', tai: '台太态泰抬胎汰钛苔薹肽跆邰鲐酞骀炱', ta: '他它她拓塔踏塌榻沓漯獭嗒挞蹋趿遢铊鳎溻闼', dan: '但单石担丹胆旦弹蛋淡诞氮郸耽殚惮儋眈疸澹掸膻啖箪聃萏瘅赕', lu: '路六陆录绿露鲁卢炉鹿禄赂芦庐碌麓颅泸卤潞鹭辘虏璐漉噜戮鲈掳橹轳逯渌蓼撸鸬栌氇胪镥簏舻辂垆', tan: '谈探坦摊弹炭坛滩贪叹谭潭碳毯瘫檀痰袒坍覃忐昙郯澹钽锬', ren: '人任认仁忍韧刃纫饪妊荏稔壬仞轫亻衽', jie: '家结解价界接节她届介阶街借杰洁截姐揭捷劫戒皆竭桔诫楷秸睫藉拮芥诘碣嗟颉蚧孑婕疖桀讦疥偈羯袷哜喈卩鲒骱', yan: '研严验演言眼烟沿延盐炎燕岩宴艳颜殷彦掩淹阎衍铅雁咽厌焰堰砚唁焉晏檐蜒奄俨腌妍谚兖筵焱偃闫嫣鄢湮赝胭琰滟阉魇酽郾恹崦芫剡鼹菸餍埏谳讠厣罨', dang: '当党档荡挡宕砀铛裆凼菪谠', tao: '套讨跳陶涛逃桃萄淘掏滔韬叨洮啕绦饕鼗', tiao: '条调挑跳迢眺苕窕笤佻啁粜髫铫祧龆蜩鲦', te: '特忑忒铽慝', de: '的地得德底锝', dei: '得', di: '的地第提低底抵弟迪递帝敌堤蒂缔滴涤翟娣笛棣荻谛狄邸嘀砥坻诋嫡镝碲骶氐柢籴羝睇觌', ti: '体提题弟替梯踢惕剔蹄棣啼屉剃涕锑倜悌逖嚏荑醍绨鹈缇裼', tui: '推退弟腿褪颓蜕忒煺', you: '有由又优游油友右邮尤忧幼犹诱悠幽佑釉柚铀鱿囿酉攸黝莠猷蝣疣呦蚴莸莜铕宥繇卣牖鼬尢蚰侑', dian: '电点店典奠甸碘淀殿垫颠滇癫巅惦掂癜玷佃踮靛钿簟坫阽', tian: '天田添填甜甸恬腆佃舔钿阗忝殄畋栝掭', zhu: '主术住注助属逐宁著筑驻朱珠祝猪诸柱竹铸株瞩嘱贮煮烛苎褚蛛拄铢洙竺蛀渚伫杼侏澍诛茱箸炷躅翥潴邾槠舳橥丶瘃麈疰', nian: '年念酿辗碾廿捻撵拈蔫鲶埝鲇辇黏', diao: '调掉雕吊钓刁貂凋碉鲷叼铫铞', yao: '要么约药邀摇耀腰遥姚窑瑶咬尧钥谣肴夭侥吆疟妖幺杳舀窕窈曜鹞爻繇徭轺铫鳐崾珧', die: '跌叠蝶迭碟爹谍牒耋佚喋堞瓞鲽垤揲蹀', she: '设社摄涉射折舍蛇拾舌奢慑赦赊佘麝歙畲厍猞揲滠', ye: '业也夜叶射野液冶喝页爷耶邪咽椰烨掖拽曳晔谒腋噎揶靥邺铘揲', xie: '些解协写血叶谢械鞋胁斜携懈契卸谐泄蟹邪歇泻屑挟燮榭蝎撷偕亵楔颉缬邂鲑瀣勰榍薤绁渫廨獬躞', zhe: '这者着著浙折哲蔗遮辙辄柘锗褶蜇蛰鹧谪赭摺乇磔螫', ding: '定订顶丁鼎盯钉锭叮仃铤町酊啶碇腚疔玎耵', diu: '丢铥', ting: '听庭停厅廷挺亭艇婷汀铤烃霆町蜓葶梃莛', dong: '动东董冬洞懂冻栋侗咚峒氡恫胴硐垌鸫岽胨', tong: '同通统童痛铜桶桐筒彤侗佟潼捅酮砼瞳恸峒仝嗵僮垌茼', zhong: '中重种众终钟忠仲衷肿踵冢盅蚣忪锺舯螽夂', dou: '都斗读豆抖兜陡逗窦渎蚪痘蔸钭篼', du: '度都独督读毒渡杜堵赌睹肚镀渎笃竺嘟犊妒牍蠹椟黩芏髑', duan: '断段短端锻缎煅椴簖', dui: '对队追敦兑堆碓镦怼憝', rui: '瑞兑锐睿芮蕊蕤蚋枘', yue: '月说约越乐跃兑阅岳粤悦曰钥栎钺樾瀹龠哕刖', tun: '吞屯囤褪豚臀饨暾氽', hui: '会回挥汇惠辉恢徽绘毁慧灰贿卉悔秽溃荟晖彗讳诲珲堕诙蕙晦睢麾烩茴喙桧蛔洄浍虺恚蟪咴隳缋哕', wu: '务物无五武午吴舞伍污乌误亡恶屋晤悟吾雾芜梧勿巫侮坞毋诬呜钨邬捂鹜兀婺妩於戊鹉浯蜈唔骛仵焐芴鋈庑鼯牾怃圬忤痦迕杌寤阢', ya: '亚压雅牙押鸭呀轧涯崖邪芽哑讶鸦娅衙丫蚜碣垭伢氩桠琊揠吖睚痖疋迓岈砑', he: '和合河何核盖贺喝赫荷盒鹤吓呵苛禾菏壑褐涸阂阖劾诃颌嗬貉曷翮纥盍', wo: '我握窝沃卧挝涡斡渥幄蜗喔倭莴龌肟硪', en: '恩摁蒽', n: '嗯唔', er: '而二尔儿耳迩饵洱贰铒珥佴鸸鲕', fa: '发法罚乏伐阀筏砝垡珐', quan: '全权券泉圈拳劝犬铨痊诠荃醛蜷颧绻犭筌鬈悛辁畎', fei: '费非飞肥废菲肺啡沸匪斐蜚妃诽扉翡霏吠绯腓痱芾淝悱狒榧砩鲱篚镄', pei: '配培坏赔佩陪沛裴胚妃霈淠旆帔呸醅辔锫', ping: '平评凭瓶冯屏萍苹乒坪枰娉俜鲆', fo: '佛', hu: '和护许户核湖互乎呼胡戏忽虎沪糊壶葫狐蝴弧瑚浒鹄琥扈唬滹惚祜囫斛笏芴醐猢怙唿戽槲觳煳鹕冱瓠虍岵鹱烀轷', ga: '夹咖嘎尬噶旮伽尕钆尜', ge: '个合各革格歌哥盖隔割阁戈葛鸽搁胳舸疙铬骼蛤咯圪镉颌仡硌嗝鬲膈纥袼搿塥哿虼', ha: '哈蛤铪', xia: '下夏峡厦辖霞夹虾狭吓侠暇遐瞎匣瑕唬呷黠硖罅狎瘕柙', gai: '改该盖概溉钙丐芥赅垓陔戤', hai: '海还害孩亥咳骸骇氦嗨胲醢', gan: '干感赶敢甘肝杆赣乾柑尴竿秆橄矸淦苷擀酐绀泔坩旰疳澉', gang: '港钢刚岗纲冈杠缸扛肛罡戆筻', jiang: '将强江港奖讲降疆蒋姜浆匠酱僵桨绛缰犟豇礓洚茳糨耩', hang: '行航杭巷夯吭桁沆绗颃', gong: '工公共供功红贡攻宫巩龚恭拱躬弓汞蚣珙觥肱廾', hong: '红宏洪轰虹鸿弘哄烘泓訇蕻闳讧荭黉薨', guang: '广光逛潢犷胱咣桄', qiong: '穷琼穹邛茕筇跫蛩銎', gao: '高告搞稿膏糕镐皋羔锆杲郜睾诰藁篙缟槁槔', hao: '好号毫豪耗浩郝皓昊皋蒿壕灏嚎濠蚝貉颢嗥薅嚆', li: '理力利立里李历例离励礼丽黎璃厉厘粒莉梨隶栗荔沥犁漓哩狸藜罹篱鲤砺吏澧俐骊溧砾莅锂笠蠡蛎痢雳俪傈醴栎郦俚枥喱逦娌鹂戾砬唳坜疠蜊黧猁鬲粝蓠呖跞疬缡鲡鳢嫠詈悝苈篥轹', jia: '家加价假佳架甲嘉贾驾嫁夹稼钾挟拮迦伽颊浃枷戛荚痂颉镓笳珈岬胛袈郏葭袷瘕铗跏蛱恝哿', luo: '落罗络洛逻螺锣骆萝裸漯烙摞骡咯箩珞捋荦硌雒椤镙跞瘰泺脶猡倮蠃', ke: '可科克客刻课颗渴壳柯棵呵坷恪苛咳磕珂稞瞌溘轲窠嗑疴蝌岢铪颏髁蚵缂氪骒钶锞', qia: '卡恰洽掐髂袷咭葜', gei: '给', gen: '根跟亘艮哏茛', hen: '很狠恨痕哏', gou: '构购够句沟狗钩拘勾苟垢枸篝佝媾诟岣彀缑笱鞲觏遘', kou: '口扣寇叩抠佝蔻芤眍筘', gu: '股古顾故固鼓骨估谷贾姑孤雇辜菇沽咕呱锢钴箍汩梏痼崮轱鸪牯蛊诂毂鹘菰罟嘏臌觚瞽蛄酤牿鲴', pai: '牌排派拍迫徘湃俳哌蒎', gua: '括挂瓜刮寡卦呱褂剐胍诖鸹栝呙', tou: '投头透偷愉骰亠', guai: '怪拐乖', kuai: '会快块筷脍蒯侩浍郐蒉狯哙', guan: '关管观馆官贯冠惯灌罐莞纶棺斡矜倌鹳鳏盥掼涫', wan: '万完晚湾玩碗顽挽弯蔓丸莞皖宛婉腕蜿惋烷琬畹豌剜纨绾脘菀芄箢', ne: '呢哪呐讷疒', gui: '规贵归轨桂柜圭鬼硅瑰跪龟匮闺诡癸鳜桧皈鲑刽晷傀眭妫炅庋簋刿宄匦', jun: '军均俊君峻菌竣钧骏龟浚隽郡筠皲麇捃', jiong: '窘炯迥炅冂扃', jue: '决绝角觉掘崛诀獗抉爵嚼倔厥蕨攫珏矍蹶谲镢鳜噱桷噘撅橛孓觖劂爝', gun: '滚棍辊衮磙鲧绲丨', hun: '婚混魂浑昏棍珲荤馄诨溷阍', guo: '国过果郭锅裹帼涡椁囗蝈虢聒埚掴猓崞蜾呙馘', hei: '黑嘿嗨', kan: '看刊勘堪坎砍侃嵌槛瞰阚龛戡凵莰', heng: '衡横恒亨哼珩桁蘅', mo: '万没么模末冒莫摩墨默磨摸漠脉膜魔沫陌抹寞蘑摹蓦馍茉嘿谟秣蟆貉嫫镆殁耱嬷麽瘼貊貘', peng: '鹏朋彭膨蓬碰苹棚捧亨烹篷澎抨硼怦砰嘭蟛堋', hou: '后候厚侯猴喉吼逅篌糇骺後鲎瘊堠', hua: '化华划话花画滑哗豁骅桦猾铧砉', huai: '怀坏淮徊槐踝', huan: '还环换欢患缓唤焕幻痪桓寰涣宦垸洹浣豢奂郇圜獾鲩鬟萑逭漶锾缳擐', xun: '讯训迅孙寻询循旬巡汛勋逊熏徇浚殉驯鲟薰荀浔洵峋埙巽郇醺恂荨窨蕈曛獯', huang: '黄荒煌皇凰慌晃潢谎惶簧璜恍幌湟蝗磺隍徨遑肓篁鳇蟥癀', nai: '能乃奶耐奈鼐萘氖柰佴艿', luan: '乱卵滦峦鸾栾銮挛孪脔娈', qie: '切且契窃茄砌锲怯伽惬妾趄挈郄箧慊', jian: '建间件见坚检健监减简艰践兼鉴键渐柬剑尖肩舰荐箭浅剪俭碱茧奸歼拣捡煎贱溅槛涧堑笺谏饯锏缄睑謇蹇腱菅翦戬毽笕犍硷鞯牮枧湔鲣囝裥踺搛缣鹣蒹谫僭戋趼楗', nan: '南难男楠喃囡赧腩囝蝻', qian: '前千钱签潜迁欠纤牵浅遣谦乾铅歉黔谴嵌倩钳茜虔堑钎骞阡掮钤扦芊犍荨仟芡悭缱佥愆褰凵肷岍搴箝慊椠', qiang: '强抢疆墙枪腔锵呛羌蔷襁羟跄樯戕嫱戗炝镪锖蜣', xiang: '向项相想乡象响香降像享箱羊祥湘详橡巷翔襄厢镶飨饷缃骧芗庠鲞葙蟓', jiao: '教交较校角觉叫脚缴胶轿郊焦骄浇椒礁佼蕉娇矫搅绞酵剿嚼饺窖跤蛟侥狡姣皎茭峤铰醮鲛湫徼鹪僬噍艽挢敫', zhuo: '着著缴桌卓捉琢灼浊酌拙茁涿镯淖啄濯焯倬擢斫棹诼浞禚', qiao: '桥乔侨巧悄敲俏壳雀瞧翘窍峭锹撬荞跷樵憔鞘橇峤诮谯愀鞒硗劁缲', xiao: '小效销消校晓笑肖削孝萧俏潇硝宵啸嚣霄淆哮筱逍姣箫骁枭哓绡蛸崤枵魈', si: '司四思斯食私死似丝饲寺肆撕泗伺嗣祀厮驷嘶锶俟巳蛳咝耜笥纟糸鸶缌澌姒汜厶兕', kai: '开凯慨岂楷恺揩锴铠忾垲剀锎蒈', jin: '进金今近仅紧尽津斤禁锦劲晋谨筋巾浸襟靳瑾烬缙钅矜觐堇馑荩噤廑妗槿赆衿卺', qin: '亲勤侵秦钦琴禽芹沁寝擒覃噙矜嗪揿溱芩衾廑锓吣檎螓', jing: '经京精境竞景警竟井惊径静劲敬净镜睛晶颈荆兢靖泾憬鲸茎腈菁胫阱旌粳靓痉箐儆迳婧肼刭弪獍', ying: '应营影英景迎映硬盈赢颖婴鹰荧莹樱瑛蝇萦莺颍膺缨瀛楹罂荥萤鹦滢蓥郢茔嘤璎嬴瘿媵撄潆', jiu: '就究九酒久救旧纠舅灸疚揪咎韭玖臼柩赳鸠鹫厩啾阄桕僦鬏', zui: '最罪嘴醉咀蕞觜', juan: '卷捐圈眷娟倦绢隽镌涓鹃鄄蠲狷锩桊', suan: '算酸蒜狻', yun: '员运云允孕蕴韵酝耘晕匀芸陨纭郧筠恽韫郓氲殒愠昀菀狁', qun: '群裙逡麇', ka: '卡喀咖咔咯佧胩', kang: '康抗扛慷炕亢糠伉钪闶', keng: '坑铿吭', kao: '考靠烤拷铐栲尻犒', ken: '肯垦恳啃龈裉', yin: '因引银印音饮阴隐姻殷淫尹荫吟瘾寅茵圻垠鄞湮蚓氤胤龈窨喑铟洇狺夤廴吲霪茚堙', kong: '空控孔恐倥崆箜', ku: '苦库哭酷裤枯窟挎骷堀绔刳喾', kua: '跨夸垮挎胯侉', kui: '亏奎愧魁馈溃匮葵窥盔逵睽馗聩喟夔篑岿喹揆隗傀暌跬蒉愦悝蝰', kuan: '款宽髋', kuang: '况矿框狂旷眶匡筐邝圹哐贶夼诳诓纩', que: '确却缺雀鹊阙瘸榷炔阕悫', kun: '困昆坤捆琨锟鲲醌髡悃阃', kuo: '扩括阔廓蛞', la: '拉落垃腊啦辣蜡喇剌旯砬邋瘌', lai: '来莱赖睐徕籁涞赉濑癞崃疠铼', lan: '兰览蓝篮栏岚烂滥缆揽澜拦懒榄斓婪阑褴罱啉谰镧漤', lin: '林临邻赁琳磷淋麟霖鳞凛拎遴蔺吝粼嶙躏廪檩啉辚膦瞵懔', lang: '浪朗郎廊狼琅榔螂阆锒莨啷蒗稂', liang: '量两粮良辆亮梁凉谅粱晾靓踉莨椋魉墚', lao: '老劳落络牢捞涝烙姥佬崂唠酪潦痨醪铑铹栳耢', mu: '目模木亩幕母牧莫穆姆墓慕牟牡募睦缪沐暮拇姥钼苜仫毪坶', le: '了乐勒肋叻鳓嘞仂泐', lei: '类累雷勒泪蕾垒磊擂镭肋羸耒儡嫘缧酹嘞诔檑', sui: '随岁虽碎尿隧遂髓穗绥隋邃睢祟濉燧谇眭荽', lie: '列烈劣裂猎冽咧趔洌鬣埒捩躐', leng: '冷愣棱楞塄', ling: '领令另零灵龄陵岭凌玲铃菱棱伶羚苓聆翎泠瓴囹绫呤棂蛉酃鲮柃', lia: '俩', liao: '了料疗辽廖聊寥缪僚燎缭撂撩嘹潦镣寮蓼獠钌尥鹩', liu: '流刘六留柳瘤硫溜碌浏榴琉馏遛鎏骝绺镏旒熘鹨锍', lun: '论轮伦仑纶沦抡囵', lv: '率律旅绿虑履吕铝屡氯缕滤侣驴榈闾偻褛捋膂稆', lou: '楼露漏陋娄搂篓喽镂偻瘘髅耧蝼嵝蒌', mao: '贸毛矛冒貌茂茅帽猫髦锚懋袤牦卯铆耄峁瑁蟊茆蝥旄泖昴瞀', long: '龙隆弄垄笼拢聋陇胧珑窿茏咙砻垅泷栊癃', nong: '农浓弄脓侬哝', shuang: '双爽霜孀泷', shu: '术书数属树输束述署朱熟殊蔬舒疏鼠淑叔暑枢墅俞曙抒竖蜀薯梳戍恕孰沭赎庶漱塾倏澍纾姝菽黍腧秫毹殳疋摅', shuai: '率衰帅摔甩蟀', lve: '略掠锊', ma: '么马吗摩麻码妈玛嘛骂抹蚂唛蟆犸杩', me: '么麽', mai: '买卖麦迈脉埋霾荬劢', man: '满慢曼漫埋蔓瞒蛮鳗馒幔谩螨熳缦镘颟墁鞔', mi: '米密秘迷弥蜜谜觅靡泌眯麋猕谧咪糜宓汨醚嘧弭脒冖幂祢縻蘼芈糸敉', men: '们门闷瞒汶扪焖懑鞔钔', mang: '忙盲茫芒氓莽蟒邙硭漭', meng: '蒙盟梦猛孟萌氓朦锰檬勐懵蟒蜢虻黾蠓艨甍艋瞢礞', miao: '苗秒妙描庙瞄缪渺淼藐缈邈鹋杪眇喵', mou: '某谋牟缪眸哞鍪蛑侔厶', miu: '缪谬', mei: '美没每煤梅媒枚妹眉魅霉昧媚玫酶镁湄寐莓袂楣糜嵋镅浼猸鹛', wen: '文问闻稳温纹吻蚊雯紊瘟汶韫刎璺玟阌', mie: '灭蔑篾乜咩蠛', ming: '明名命鸣铭冥茗溟酩瞑螟暝', na: '内南那纳拿哪娜钠呐捺衲镎肭', nei: '内那哪馁', nuo: '难诺挪娜糯懦傩喏搦锘', ruo: '若弱偌箬', nang: '囊馕囔曩攮', nao: '脑闹恼挠瑙淖孬垴铙桡呶硇猱蛲', ni: '你尼呢泥疑拟逆倪妮腻匿霓溺旎昵坭铌鲵伲怩睨猊', nen: '嫩恁', neng: '能', nin: '您恁', niao: '鸟尿溺袅脲茑嬲', nie: '摄聂捏涅镍孽捻蘖啮蹑嗫臬镊颞乜陧', niang: '娘酿', ning: '宁凝拧泞柠咛狞佞聍甯', nu: '努怒奴弩驽帑孥胬', nv: '女钕衄恧', ru: '入如女乳儒辱汝茹褥孺濡蠕嚅缛溽铷洳薷襦颥蓐', nuan: '暖', nve: '虐疟', re: '热若惹喏', ou: '区欧偶殴呕禺藕讴鸥瓯沤耦怄', pao: '跑炮泡抛刨袍咆疱庖狍匏脬', pou: '剖掊裒', pen: '喷盆湓', pie: '瞥撇苤氕丿', pin: '品贫聘频拼拚颦姘嫔榀牝', se: '色塞瑟涩啬穑铯槭', qing: '情青清请亲轻庆倾顷卿晴氢擎氰罄磬蜻箐鲭綮苘黥圊檠謦', zan: '赞暂攒堑昝簪糌瓒錾趱拶', shao: '少绍召烧稍邵哨韶捎勺梢鞘芍苕劭艄筲杓潲', sao: '扫骚嫂梢缫搔瘙臊埽缲鳋', sha: '沙厦杀纱砂啥莎刹杉傻煞鲨霎嗄痧裟挲铩唼歃', xuan: '县选宣券旋悬轩喧玄绚渲璇炫萱癣漩眩暄煊铉楦泫谖痃碹揎镟儇', ran: '然染燃冉苒髯蚺', rang: '让壤攘嚷瓤穰禳', rao: '绕扰饶娆桡荛', reng: '仍扔', ri: '日', rou: '肉柔揉糅鞣蹂', ruan: '软阮朊', run: '润闰', sa: '萨洒撒飒卅仨脎', suo: '所些索缩锁莎梭琐嗦唆唢娑蓑羧挲桫嗍睃', sai: '思赛塞腮噻鳃', shui: '说水税谁睡氵', sang: '桑丧嗓搡颡磉', sen: '森', seng: '僧', shai: '筛晒', shang: '上商尚伤赏汤裳墒晌垧觞殇熵绱', xing: '行省星腥猩惺兴刑型形邢饧醒幸杏性姓陉荇荥擤悻硎', shou: '收手受首售授守寿瘦兽狩绶艏扌', shuo: '说数硕烁朔铄妁槊蒴搠', su: '速素苏诉缩塑肃俗宿粟溯酥夙愫簌稣僳谡涑蔌嗉觫', shua: '刷耍唰', shuan: '栓拴涮闩', shun: '顺瞬舜吮', song: '送松宋讼颂耸诵嵩淞怂悚崧凇忪竦菘', sou: '艘搜擞嗽嗖叟馊薮飕嗾溲锼螋瞍', sun: '损孙笋荪榫隼狲飧', teng: '腾疼藤滕誊', tie: '铁贴帖餮萜', tu: '土突图途徒涂吐屠兔秃凸荼钍菟堍酴', wai: '外歪崴', wang: '王望往网忘亡旺汪枉妄惘罔辋魍', weng: '翁嗡瓮蓊蕹', zhua: '抓挝爪', yang: '样养央阳洋扬杨羊详氧仰秧痒漾疡泱殃恙鸯徉佯怏炀烊鞅蛘', xiong: '雄兄熊胸凶匈汹芎', yo: '哟唷', yong: '用永拥勇涌泳庸俑踊佣咏雍甬镛臃邕蛹恿慵壅痈鳙墉饔喁', za: '杂扎咱砸咋匝咂拶', zai: '在再灾载栽仔宰哉崽甾', zao: '造早遭枣噪灶燥糟凿躁藻皂澡蚤唣', zei: '贼', zen: '怎谮', zeng: '增曾综赠憎锃甑罾缯', zhei: '这', zou: '走邹奏揍诹驺陬楱鄹鲰', zhuai: '转拽', zun: '尊遵鳟樽撙', dia: '嗲', nou: '耨', +}; + +const dict = {}; +/* eslint-disable */ +function parseDict() { + dict.notone = {}; + for (const i in pinyinNoToneDict) { + const temp = pinyinNoToneDict[i]; + for (let j = 0, len = temp.length; j < len; j++) { + dict.notone[temp[j]] = i; // 不考虑多音字 + } + } +} +/* eslint-enable */ +/** + * 根据汉字获取拼音,如果不是汉字直接返回原字符 + * @param chinese 要转换的汉字 + * @param splitter 分隔字符,默认用空格分隔 + */ +function getPinyin(chinese, splitter) { + parseDict(); + if (!chinese || /^ +$/g.test(chinese)) return ''; + splitter = splitter === undefined ? ' ' : splitter; + const result = []; + + for (let i = 0, len = chinese.length; i < len; i += 1) { + const temp = chinese.charAt(i); + result.push(dict.notone[temp] || temp); + } + + return result.join(splitter); +} + +export default getPinyin; diff --git a/src/util/uuid.js b/src/util/uuid.js new file mode 100755 index 0000000..90a9287 --- /dev/null +++ b/src/util/uuid.js @@ -0,0 +1,16 @@ +function uuid() { + const s = []; + const hexDigits = '0123456789abcdef'; + for (let i = 0; i < 36; i++) { + s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); + } + s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010 + s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 + s[8] = s[13] = s[18] = s[23] = '-'; + + const uuid = s.join(''); + return uuid; +} + +module.exports = uuid; + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..98de835 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4406 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/core@^7.0.0": + version "7.12.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5", "@babel/generator@^7.5.0": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== + dependencies: + "@babel/types" "^7.12.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.12.1": + version "7.12.4" + resolved "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.12.1": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== + +"@babel/plugin-external-helpers@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.12.1.tgz#df474775860b3b8bdfeaedd45596cd2c7f36a2be" + integrity sha512-5VBqan0daXhDSRjrq2miABuELRwWJWFdM42Jvs/CDuhp+Es+fW+ISA5l+co8d+9oN3WLz/N3VvzyeseL3AvjxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a" + integrity sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.12.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz#a9eb31881f4f9a1115a3d2c6d64ac3f6016b5a9d" + integrity sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.2.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-object-assign@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz#9102b06625f60a5443cc292d32b565373665e1e4" + integrity sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz#39ede0e30159770561b6963be143e40af3bde00c" + integrity sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.5.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/register@^7.0.0": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.12.1.tgz#cdb087bdfc4f7241c03231f22e15d211acf21438" + integrity sha512-XWcmseMIncOjoydKZnWvWi0/5CUCD+ZYKhRwgYlWOrA8fGZ/FjuLRpqtIhLOVD/fvR1b9DQHtZPn68VvhpYf+Q== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.19" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" + integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.5" + "@babel/types" "^7.12.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5": + version "7.12.6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.3": + version "15.1.1" + resolved "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@react-native-community/cli-debugger-ui@^4.9.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71" + integrity sha512-fBFGamHm4VUrDqkBGnsrwQL8OC6Om7K6EBQb4xj0nWekpXt1HSa3ScylYHTTWwYcpRf9htGMRGiv4dQDY/odAw== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-hermes@^4.13.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz#6243ed9c709dad5e523f1ccd7d21066b32f2899d" + integrity sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ== + dependencies: + "@react-native-community/cli-platform-android" "^4.13.0" + "@react-native-community/cli-tools" "^4.13.0" + chalk "^3.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + +"@react-native-community/cli-platform-android@^4.10.0", "@react-native-community/cli-platform-android@^4.13.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz#922681ec82ee1aadd993598b814df1152118be02" + integrity sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA== + dependencies: + "@react-native-community/cli-tools" "^4.13.0" + chalk "^3.0.0" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + jetifier "^1.6.2" + lodash "^4.17.15" + logkitty "^0.7.1" + slash "^3.0.0" + xmldoc "^1.1.2" + +"@react-native-community/cli-platform-ios@^4.10.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz#a738915c68cac86df54e578b59a1311ea62b1aef" + integrity sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA== + dependencies: + "@react-native-community/cli-tools" "^4.13.0" + chalk "^3.0.0" + glob "^7.1.3" + js-yaml "^3.13.1" + lodash "^4.17.15" + plist "^3.0.1" + xcode "^2.0.0" + +"@react-native-community/cli-server-api@^4.13.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-4.13.0.tgz#ef0e53fe0edc7356d62bca725ca47cb368f748a5" + integrity sha512-ER138ChLc1YYX7j9yE6fDm4DdNdsHThr+pla/B6iZoKje1r7TwymDdKaUvOsYalG7sWG9glW3bofcCq+Yh0Dvw== + dependencies: + "@react-native-community/cli-debugger-ui" "^4.9.0" + "@react-native-community/cli-tools" "^4.13.0" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.0" + pretty-format "^25.1.0" + serve-static "^1.13.1" + ws "^1.1.0" + +"@react-native-community/cli-tools@^4.13.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz#b406463d33af16cedc4305a9a9257ed32845cf1b" + integrity sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg== + dependencies: + chalk "^3.0.0" + lodash "^4.17.15" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + shell-quote "1.6.1" + +"@react-native-community/cli-types@^4.10.1": + version "4.10.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz#d68a2dcd1649d3b3774823c64e5e9ce55bfbe1c9" + integrity sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ== + +"@react-native-community/cli@^4.10.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.13.0.tgz#04d5032f9b2b423c61ceef6be83b1bcc8a37db75" + integrity sha512-R+1VehIQ6VTLf+e7YOwzJk0F9tstfeSC4xy7oT6GSgB3FnXbTJGHFUp4siyO68Ae/gzGqt8SiUO145teWkP+ZA== + dependencies: + "@hapi/joi" "^15.0.3" + "@react-native-community/cli-debugger-ui" "^4.9.0" + "@react-native-community/cli-hermes" "^4.13.0" + "@react-native-community/cli-server-api" "^4.13.0" + "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-types" "^4.10.1" + chalk "^3.0.0" + command-exists "^1.2.8" + commander "^2.19.0" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + envinfo "^7.7.2" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + glob "^7.1.3" + graceful-fs "^4.1.3" + inquirer "^3.0.6" + leven "^3.1.0" + lodash "^4.17.15" + metro "^0.58.0" + metro-config "^0.58.0" + metro-core "^0.58.0" + metro-react-native-babel-transformer "^0.58.0" + metro-resolver "^0.58.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-stream-zip "^1.9.1" + ora "^3.4.0" + pretty-format "^25.2.0" + semver "^6.3.0" + serve-static "^1.13.1" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.11" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" + integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.9" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19" + integrity sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g== + dependencies: + "@types/yargs-parser" "*" + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= + +accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async@^2.4.0: + version "2.6.3" + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + 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#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" + integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== + dependencies: + "@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" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.1.2, base64-js@^1.2.3: + version "1.3.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + 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" + +big-integer@^1.6.44: + version "1.6.48" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bplist-creator@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" + integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA== + dependencies: + stream-buffers "~2.2.0" + +bplist-parser@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + 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" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + 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" + +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^2.0.0: + version "2.5.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" + integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^1.0.7: + version "1.2.1" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + 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@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.2.2, core-js@^2.4.1: + version "2.6.11" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +dayjs@^1.8.15: + version "1.9.6" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +envinfo@^7.7.2: + version "7.7.3" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +errorhandler@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + 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" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + 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" + +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + 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" + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs-scripts@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz#069a0c0634242d10031c6460ef1fccefcdae8b27" + integrity sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ== + dependencies: + "@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" + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + 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" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + 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-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + 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" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.4" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hermes-engine@~0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz#601115e4b1e0a17d9aa91243b96277de4e926e09" + integrity sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg== + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +iconv-lite@^0.4.17: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + 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" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.7.1: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + 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" + optionalDependencies: + fsevents "^1.2.7" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@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@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-serializer@^24.4.0, jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@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" + +jest-validate@^24.7.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@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" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jetifier@^1.6.2: + version "1.6.6" + resolved "https://registry.npmjs.org/jetifier/-/jetifier-1.6.6.tgz#fec8bff76121444c12dc38d2dad6767c421dab68" + integrity sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^245459.0.0: + version "245459.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9" + integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.3.0: + version "4.17.20" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-register@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.58.0.tgz#5c44786d49a044048df56cf476a2263491d4f53a" + integrity sha512-P5+G3ufhSYL6cA3a7xkbSJzzFBvtivj/PhWvGXFXnuFssDlMAX1CTktff+0gpka5Cd6B6QLt0UAMWulUAAE4Eg== + dependencies: + "@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-register@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.59.0.tgz#2bcff65641b36794cf083ba732fbc46cf870fb43" + integrity sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg== + dependencies: + "@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-optional-chaining" "^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" + escape-string-regexp "^1.0.5" + +metro-babel-transformer@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.58.0.tgz#317c83b863cceb0573943815f1711fbcbe69b106" + integrity sha512-yBX3BkRhw2TCNPhe+pmLSgsAEA3huMvnX08UwjFqSXXI1aiqzRQobn92uKd1U5MM1Vx8EtXVomlJb95ZHNAv6A== + dependencies: + "@babel/core" "^7.0.0" + metro-source-map "0.58.0" + +metro-babel-transformer@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz#dda99c75d831b00142c42c020c51c103b29f199d" + integrity sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w== + dependencies: + "@babel/core" "^7.0.0" + metro-source-map "0.59.0" + +metro-cache@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.58.0.tgz#630ea0a4626dfb9591c71fdb85dce14b5e9a04ec" + integrity sha512-jjW9zCTKxhgKcVkyQ6LHyna9Zdf4TK/45vvT1fPyyTk1RY82ZYjU1qs+84ycKEd08Ka4YcK9xcUew9SIDJYI8Q== + dependencies: + jest-serializer "^24.4.0" + metro-core "0.58.0" + mkdirp "^0.5.1" + rimraf "^2.5.4" + +metro-config@0.58.0, metro-config@^0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.58.0.tgz#1e24b43a5a00971d75662b1a0d3c04a13d4a1746" + integrity sha512-4vgBliXwL56vjUlYplvGMVSNrJJpkHuLcD+O20trV3FvPxKg4ZsvuOcNSxqDSMU26FCtIEJ15ojcuCbRL7KY0w== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^24.7.0" + metro "0.58.0" + metro-cache "0.58.0" + metro-core "0.58.0" + pretty-format "^24.7.0" + +metro-core@0.58.0, metro-core@^0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.58.0.tgz#ad9f6645a2b439a3fbce7ce4e19b01b00375768a" + integrity sha512-RzXUjGFmCLOyzUqcKDvr91AldGtIOxnzNZrWUIiG8uC3kerVLo0mQp4YH3+XVm6fMNiLMg6iER7HLqD+MbpUjQ== + dependencies: + jest-haste-map "^24.7.1" + lodash.throttle "^4.1.1" + metro-resolver "0.58.0" + wordwrap "^1.0.0" + +metro-inspector-proxy@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.58.0.tgz#6fefb0cdf25655919d56c82ebe09cd26eb00e636" + integrity sha512-oFqTyNTJdCdvcw1Ha6SKE7ITbSaoTbO4xpYownIoJR+WZ0ZfxbWpp225JkHuBJm9UcBAnG9c0CME924m3uBbaw== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + rxjs "^5.4.3" + ws "^1.1.5" + yargs "^14.2.0" + +metro-minify-uglify@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.58.0.tgz#7e1066954bfd4f767ba6aca7feef676ca44c68b8" + integrity sha512-vRHsA7bCi7eCn3LXLm20EfY2NoWDyYOnmWaq/N8LB0OxL2L5DXRqMYAQK+prWGJ5S1yvVnDuuNVP+peQ9851TA== + dependencies: + uglify-es "^3.1.9" + +metro-react-native-babel-preset@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz#18f48d33fe124280ffabc000ab8b42c488d762a2" + integrity sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA== + dependencies: + "@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.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + +metro-react-native-babel-preset@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz#20e020bc6ac9849e1477de1333d303ed42aba225" + integrity sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg== + dependencies: + "@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-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.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-self" "^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.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz#9b3dfd6ad35c6ef37fc4ce4d20a2eb67fabbb4be" + integrity sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ== + dependencies: + "@babel/core" "^7.0.0" + babel-preset-fbjs "^3.3.0" + metro-babel-transformer "0.59.0" + metro-react-native-babel-preset "0.59.0" + metro-source-map "0.59.0" + +metro-react-native-babel-transformer@^0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.58.0.tgz#5da0e5a1b83c01d11626905fa59f34fda53a21a5" + integrity sha512-3A73+cRq1eUPQ8g+hPNGgMUMCGmtQjwqHfoG1DwinAoJ/kr4WOXWWbGZo0xHJNBe/zdHGl0uHcDCp2knPglTdQ== + dependencies: + "@babel/core" "^7.0.0" + babel-preset-fbjs "^3.3.0" + metro-babel-transformer "0.58.0" + metro-react-native-babel-preset "0.58.0" + metro-source-map "0.58.0" + +metro-resolver@0.58.0, metro-resolver@^0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.58.0.tgz#4d03edc52e2e25d45f16688adf3b3f268ea60df9" + integrity sha512-XFbAKvCHN2iWqKeiRARzEXn69eTDdJVJC7lu16S4dPQJ+Dy82dZBr5Es12iN+NmbJuFgrAuIHbpWrdnA9tOf6Q== + dependencies: + absolute-path "^0.0.0" + +metro-source-map@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.58.0.tgz#e951b99f4c653239ce9323bb08339c6f1978a112" + integrity sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw== + dependencies: + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "0.58.0" + ob1 "0.58.0" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-source-map@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.59.0.tgz#e9beb9fc51bfb4e060f95820cf1508fc122d23f7" + integrity sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ== + dependencies: + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "0.59.0" + ob1 "0.59.0" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.58.0.tgz#ba9fd52549c41fc1b656adaad7c8875726dd5abe" + integrity sha512-uIVxUQC1E26qOMj13dKROhwAa2FmZk5eR0NcBqej/aXmQhpr8LjJg2sondkoLKUp827Tf/Fm9+pS4icb5XiqCw== + dependencies: + invariant "^2.2.4" + metro-source-map "0.58.0" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-symbolicate@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz#fc7f93957a42b02c2bfc57ed1e8f393f5f636a54" + integrity sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw== + dependencies: + invariant "^2.2.4" + metro-source-map "0.59.0" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro@0.58.0, metro@^0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/metro/-/metro-0.58.0.tgz#c037318c112f80dc96199780c8b401ab72cfd142" + integrity sha512-yi/REXX+/s4r7RjzXht+E+qE6nzvFIrEXO5Q61h+70Q7RODMU8EnlpXx04JYk7DevHuMhFaX+NWhCtRINzR4zA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.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.3.0" + buffer-crc32 "^0.2.13" + chalk "^2.4.1" + ci-info "^2.0.0" + 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.58.0" + metro-babel-transformer "0.58.0" + metro-cache "0.58.0" + metro-config "0.58.0" + metro-core "0.58.0" + metro-inspector-proxy "0.58.0" + metro-minify-uglify "0.58.0" + metro-react-native-babel-preset "0.58.0" + metro-resolver "0.58.0" + metro-source-map "0.58.0" + metro-symbolicate "0.58.0" + mime-types "2.1.11" + mkdirp "^0.5.1" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + resolve "^1.5.0" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^4.0.0" + 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 "^14.2.0" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + 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" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-db@~1.23.0: + version "1.23.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" + integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= + +mime-types@2.1.11: + version "2.1.11" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" + integrity sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw= + dependencies: + mime-db "~1.23.0" + +mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1: + version "2.4.6" + resolved "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + 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" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-stream-zip@^1.9.1: + version "1.11.7" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.11.7.tgz#0618f590ad2ee3df7daa10a2e4fe8c6222821d34" + integrity sha512-tpJYTP3wgNcgCH4dsXC9x+K7No2qNzDRwoTaW9LPm39sA5elxWdSKHcv6j5TIPmjyOcxx9LoEvSdR16mi1Rfdg== + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.58.0: + version "0.58.0" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.58.0.tgz#484a1e9a63a8b79d9ea6f3a83b2a42110faac973" + integrity sha512-uZP44cbowAfHafP1k4skpWItk5iHCoRevMfrnUvYCfyNNPPJd3rfDCyj0exklWi2gDXvjlj2ObsfiqP/bs/J7Q== + +ob1@0.59.0: + version "0.59.0" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.59.0.tgz#ee103619ef5cb697f2866e3577da6f0ecd565a36" + integrity sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.npmjs.org/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + 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" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +plist@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" + integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== + dependencies: + base64-js "^1.2.3" + xmlbuilder "^9.0.7" + xmldom "0.1.x" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= + dependencies: + 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" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +pretty-format@^24.7.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.1.0, pretty-format@^25.2.0: + version "25.5.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-devtools-core@^4.6.0: + version "4.9.0" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.9.0.tgz#39cc4589b4c6fbcb6a18e529ce745a1af3e63ae5" + integrity sha512-3NyHXW1ClqxEXdHunawAytDxiIxs620oP3wB8DHsbx1fkGgqjMkwlyHVf0zmES/b4ffqzJySowRwSYds/uAHzw== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-native@0.63.3: + version "0.63.3" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.63.3.tgz#4a7f6540e049ff41810887bbd1125abc4672f3bf" + integrity sha512-71wq13uNo5W8QVQnFlnzZ3AD+XgUBYGhpsxysQFW/hJ8GAt/J5o+Bvhy81FXichp6IBDJDh/JgfHH2gNji8dFA== + dependencies: + "@babel/runtime" "^7.0.0" + "@react-native-community/cli" "^4.10.0" + "@react-native-community/cli-platform-android" "^4.10.0" + "@react-native-community/cli-platform-ios" "^4.10.0" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + fbjs "^1.0.0" + fbjs-scripts "^1.1.0" + hermes-engine "~0.5.0" + invariant "^2.2.4" + jsc-android "^245459.0.0" + metro-babel-register "0.59.0" + metro-react-native-babel-transformer "0.59.0" + metro-source-map "0.59.0" + nullthrows "^1.1.1" + pretty-format "^24.9.0" + promise "^8.0.3" + prop-types "^15.7.2" + react-devtools-core "^4.6.0" + react-refresh "^0.4.0" + regenerator-runtime "^0.13.2" + scheduler "0.19.1" + stacktrace-parser "^0.1.3" + use-subscription "^1.0.0" + whatwg-fetch "^3.0.0" + +react-refresh@^0.4.0: + version "0.4.3" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" + integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== + +readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + 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" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.5.4: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^5.4.3: + version "5.5.12" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@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" + +sax@^1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + 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" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + +serve-static@^1.13.1: + version "1.14.1" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-plist@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz#54367ca28bc5996a982c325c1c4a4c1a05f4047c" + integrity sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg== + dependencies: + bplist-creator "0.0.8" + bplist-parser "0.2.0" + plist "^3.0.1" + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + 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" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16: + version "0.5.19" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stacktrace-parser@^0.1.3: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-buffers@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= + +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +throat@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18: + version "0.7.22" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3" + integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use-subscription@^1.0.0: + version "1.5.0" + resolved "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.0.tgz#0df66fdf97b9a340147ad72f76fac1db6f56d240" + integrity sha512-/FVRiB2I7NDjzWoNBYPt6YkkvleMm/lFtxj1hH6nX2TVrJ/5UTbovw9OE1efv2Zl0HoAYuTjM7zHd9OsABn5sg== + dependencies: + object-assign "^4.1.1" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: + version "3.5.0" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" + integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +ws@^1.1.0, ws@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^7: + version "7.4.0" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" + integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== + +xcode@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" + integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ== + dependencies: + simple-plist "^1.0.0" + uuid "^3.3.2" + +xmlbuilder@^9.0.7: + version "9.0.7" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmldoc@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" + integrity sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ== + dependencies: + sax "^1.2.1" + +xmldom@0.1.x: + version "0.1.31" + resolved "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== + +xpipe@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" + integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^14.2.0: + version "14.2.3" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + 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.1" + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.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 "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2"